diff --git a/.localsetup-release.json b/.localsetup-release.json
index f651105a9..f9c4790c0 100644
--- a/.localsetup-release.json
+++ b/.localsetup-release.json
@@ -1,10 +1,38 @@
{
- "schema_version": 1,
+ "schema_version": 2,
+ "policy": "sequential-logical-slices",
"anchor": {
"commit": "51fbdf7c94f1f6087ecc69a99cf4d037a0c76117",
"version": "5.6.2",
"tag": "v5.6.2"
},
"overrides": [],
- "policy": "sequential-logical-slices"
+ "major_line": 4,
+ "reconciliation": {
+ "original_anchor": {
+ "commit": "6c2d34ec897ccfad1c5038457b02cdbb7f0f7701",
+ "version": "4.22.9",
+ "tag": "v4.22.9"
+ },
+ "published_anchor": {
+ "commit": "51fbdf7c94f1f6087ecc69a99cf4d037a0c76117",
+ "version": "5.6.2",
+ "tag": "v5.6.2"
+ },
+ "cutoff": {
+ "commit": "8ed6e80d488010fad9e6b79f3f2bf69628f61c6e",
+ "source_version": "5.7.1",
+ "corrected_version": "4.44.1"
+ },
+ "reclassified_slices": [
+ {
+ "slice": "issue-100-verified-consumer-migration",
+ "classification": "minor",
+ "commits": [
+ "442f308690b62d1548daa5e197ec1d036e52cc3b",
+ "fdca87241f91b597152297042c8c6fb366272545"
+ ]
+ }
+ ]
+ }
}
diff --git a/AGENTS.md b/AGENTS.md
index 2a1615414..58c1f0756 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -42,11 +42,25 @@ Starting at the last verified published version, apply logical accepted slices
in integration ancestry order: each independently accepted user-visible feature
increments MINOR once and resets PATCH to zero; each small fix, documentation
consolidation, or maintenance slice increments PATCH once. Breaking changes need
-an explicit compatibility decision and appropriate MAJOR treatment. Count a
+an explicit compatibility decision and appropriate MAJOR treatment unless an
+active major-line lock blocks that release; while locked, restore compatibility
+or stop release work until the lock is explicitly amended. Count a
slice's final accepted outcome once, not its fixups, merges, generated receipts,
release syncs, or work already published. Record the deterministic mapping from
logical slice to source commit, classification, and resulting version.
+The corrected 4.x release line is explicitly major-locked: accepted releases may
+increment MINOR or PATCH only, with no automatic or implicit MAJOR increment.
+Reject any prospective MAJOR classification while this lock is active; do not
+silently downgrade it. The one-time numbering reconciliation preserves published
+v5.6.2 and its tag/assets as immutable while mapping its content to corrected
+arithmetic 4.43.2 after the exact historical issue-100 MAJOR-to-MINOR
+reconciliation. Branding maps to 4.44.0, and canonical repository-name policy
+maps to 4.44.1. As of this reconciliation, 4.44.1 is not published or current.
+The SDK paging and Agent Q v2/envelope compatibility breaks remain; corrected
+numbering does not restore source or protocol compatibility, and 4.44.1 release
+guidance must disclose both breaks clearly.
+
Use canonical version/release tooling and preserve source/receipt semantics.
If tooling cannot represent this sequence, implement and validate the missing
policy before publication; never hand-edit generated versions or weaken gates.
diff --git a/README.md b/README.md
index 1082f73c9..45eb5c93e 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
-**Version:** 5.7.1
+**Version:** 4.44.1
**LocalSetup gives coding agents a repo-local operating layer.**
@@ -25,16 +25,15 @@ LocalSetup provides capability skills, executable workflow packages, explicit ad
Start with the [quickstart](ls/docs/QUICKSTART.md) or browse the [documentation](ls/docs/README.md). The [latest published release](https://github.com/CruxExperts/localsetup/releases/latest) provides release notes and downloads.
-## What's new in 5.7.1
+## What's new in 4.44.1
-LocalSetup 5.7.1 gives its GitHub documentation a consistent light and dark visual identity and clarifies the canonical repository name as CruxExperts/LocalSetup. The README hero and current architecture and installation diagrams use approved LocalSetup branding, with reproducible rendering and accessible descriptions.
+LocalSetup 4.44.1 corrects the active release sequence to the authorized 4.x line and combines the approved GitHub visual identity, canonical repository spelling, and a safe installer fallback for mixed-major release tags. The published v5.6.2 tag and assets remain unchanged.
-- **Theme-aware graphics:** The README hero, architecture diagram, and installation flow each have light and dark images selected by GitHub's color scheme. Existing light image paths remain valid.
-- **Reproducible brand assets:** The graphics renderer uses approved tokens and pinned JetBrains Mono v2.304 Regular and SemiBold files. The original font license and hashes are recorded with the source.
-- **Asset inventory and brand contract:** Documentation checks recognize images in picture sources, and the brand guide records the visual rules and future AstroSite handoff. Nerd Font glyphs remain an optional site profile.
-- **Canonical repository spelling:** The maintainer policy identifies `CruxExperts/LocalSetup` as the GitHub repository name and preserves existing repository URL paths and compatibility identifiers.
+- **Corrected 4.x release line:** The verified history maps v5.6.2 content to corrected arithmetic 4.43.2, the branding feature to 4.44.0, and canonical repository-name policy to 4.44.1. The policy blocks MAJOR increments while the 4.x lock is active.
+- **Theme-aware LocalSetup graphics:** The README hero, architecture diagram, and install-flow diagram use matching light and dark artwork with the approved mark, palette, and typography. The pinned renderer, JetBrains Mono files, source tokens, and font license make the exports reproducible.
+- **Canonical name and release discovery:** Public repository policy uses `LocalSetup` spelling while retaining established commands and URLs. If release API lookup fails and stable tags span multiple major versions, the installer asks for `LOCALSETUP_BOOTSTRAP_REF` instead of guessing from numeric order.
-See the [5.7.1 release guide](ls/docs/releases/5.7.1.md) for compatibility, updating, and verification.
+See the [4.44.1 release guide](ls/docs/releases/4.44.1.md) for compatibility, updating, and verification.
The [4.4.0 guide](ls/docs/releases/4.4.0.md) remains available as release history.
@@ -85,7 +84,7 @@ Start with the [workflow packages guide](ls/docs/WORKFLOW_PACKAGES.md) for usage
| Fact | Value |
|---|---|
-| Current version | `5.7.1` |
+| Current version | `4.44.1` |
| Supported platforms | `codex, claude-code, cursor, kilo, opencode, openclaw, github-copilot-cli, github-copilot-vscode, cline-cli, cline-vscode, amp-cli, goose-cli, pi-cli, hermes-agent, qwen-code-cli, kimi-cli, factory-droid, antigravity-app, gemini-cli, omp-cli` |
| Shipped skills | `105` |
| Workflow packages | `18` |
@@ -112,7 +111,7 @@ The legacy public form still opens the same wizard when a terminal is available:
curl -sSL https://raw.githubusercontent.com/CruxExperts/localsetup/main/install | bash -s -- --yes --tools codex
```
-The public command is release-backed even though the small wrapper is downloaded from `main`: managed bootstrap installs resolve the latest non-draft, non-prerelease GitHub release tag before cloning or refreshing `~/.local/share/localsetup/source`, with a stable-tag fallback when release lookup is unavailable. Set `LOCALSETUP_BOOTSTRAP_REF` only when you intentionally want an explicit branch, tag, or commit. Explicit `--directory` checkouts are source-authoritative and are never auto-fetched or replaced.
+The public command is release-backed even though the small wrapper is downloaded from `main`: managed bootstrap installs resolve the latest non-draft, non-prerelease GitHub release tag before cloning or refreshing `~/.local/share/localsetup/source`. If release lookup is unavailable, the installer uses a tag fallback only when all discoverable stable tags share one major version; it stops and asks for `LOCALSETUP_BOOTSTRAP_REF` when tags span multiple major lines. Set that variable only when you intentionally want an explicit branch, tag, or commit. Explicit `--directory` checkouts are source-authoritative and are never auto-fetched or replaced.
When raw managed bootstrap finds a clean legacy managed source checkout identified by `_localsetup/tools/localsetup.py`, it recognizes and refreshes that checkout to the release-backed modern layout with `ls/tools/localsetup.py`. Before fetching and replacing the checkout, LocalSetup stores a Git rollback bundle and JSON manifest outside the source checkout under `/state/source-migrations` when that location is external, or `~/.local/share/localsetup/state/source-migrations` otherwise. Dirty or untracked source checkouts remain rejected before refresh.
diff --git a/VERSION b/VERSION
index 64ff7ded7..0f2309ae4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5.7.1
+4.44.1
diff --git a/install b/install
index 730db3715..9ea58abf9 100755
--- a/install
+++ b/install
@@ -524,12 +524,25 @@ PY
latest_release_from_git_tags() {
command -v git >/dev/null 2>&1 || return 1
- git ls-remote --tags --refs "$BOOTSTRAP_REPO" 'v*' 2>/dev/null \
+ local tags tag version major first_major=""
+ tags="$(git ls-remote --tags --refs "$BOOTSTRAP_REPO" 'v*' 2>/dev/null \
| awk '{print $2}' \
| sed 's#refs/tags/##' \
| grep -E '^v[0-9]+([.][0-9]+)*$' \
- | sort -V \
- | tail -n 1
+ || true)"
+ [[ -n "$tags" ]] || return 1
+ # When API discovery is unavailable, a mixed-major tag set has no safe
+ # chronological interpretation. Do not silently select an older release
+ # line just because its major number sorts higher.
+ for tag in $tags; do
+ version="${tag#v}"
+ major="${version%%.*}"
+ if [[ -n "$first_major" && "$major" != "$first_major" ]]; then
+ return 1
+ fi
+ first_major="$major"
+ done
+ printf '%s\n' "$tags" | sort -V | tail -n 1
}
resolve_bootstrap_ref() {
diff --git a/ls/README.md b/ls/README.md
index 338f80540..2601ee828 100644
--- a/ls/README.md
+++ b/ls/README.md
@@ -1,6 +1,6 @@
# LocalSetup Framework Engine
-**Version:** 5.7.1
+**Version:** 4.44.1
`ls/` is the engine that makes the public LocalSetup promise real. It stores the framework code, shipped skills, workflow packages, platform templates, docs, tests, and install manifests that turn a repository into a portable agent workspace.
@@ -26,7 +26,7 @@ For the public product overview, start with the [root README](../README.md). Thi
LocalSetup-managed entries in consuming repositories are install output. Adapter directories may also contain project-owned skills, files, and symlinks; preserve that content in place. See [adapter ownership](docs/ADAPTER_OWNERSHIP.md).
-Read the [current release guide](docs/releases/5.7.1.md) for LocalSetup 5.7.1, including compatibility, updating, and verification. Find downloads in the [latest published release](https://github.com/CruxExperts/localsetup/releases/latest).
+Read the [current release guide](docs/releases/4.44.1.md) for LocalSetup 4.44.1, including compatibility, updating, and verification. Find downloads in the [latest published release](https://github.com/CruxExperts/localsetup/releases/latest).
## Install flow
diff --git a/ls/config/release-policy.schema.json b/ls/config/release-policy.schema.json
index 7aab2150e..45018c3a9 100644
--- a/ls/config/release-policy.schema.json
+++ b/ls/config/release-policy.schema.json
@@ -5,29 +5,79 @@
"additionalProperties": false,
"required": ["schema_version", "policy", "anchor", "overrides"],
"properties": {
- "schema_version": {"const": 1},
+ "schema_version": {"enum": [1, 2]},
"policy": {"const": "sequential-logical-slices"},
- "anchor": {
+ "anchor": {"$ref": "#/$defs/taggedAnchor"},
+ "overrides": {
+ "type": "array", "maxItems": 256,
+ "items": {"$ref": "#/$defs/override"}
+ },
+ "major_line": {"const": 4},
+ "reconciliation": {
+ "type": "object", "additionalProperties": false,
+ "required": ["original_anchor", "published_anchor", "cutoff", "reclassified_slices"],
+ "properties": {
+ "original_anchor": {"$ref": "#/$defs/taggedAnchor"},
+ "published_anchor": {"$ref": "#/$defs/taggedAnchor"},
+ "cutoff": {
+ "type": "object", "additionalProperties": false,
+ "required": ["commit", "source_version", "corrected_version"],
+ "properties": {
+ "commit": {"$ref": "#/$defs/sha"},
+ "source_version": {"$ref": "#/$defs/version"},
+ "corrected_version": {"$ref": "#/$defs/version"}
+ }
+ },
+ "reclassified_slices": {
+ "type": "array", "minItems": 1, "maxItems": 1,
+ "items": {
+ "type": "object", "additionalProperties": false,
+ "required": ["slice", "classification", "commits"],
+ "properties": {
+ "slice": {"type": "string", "pattern": "^[a-z0-9][a-z0-9._-]{0,127}$"},
+ "classification": {"const": "minor"},
+ "commits": {
+ "type": "array", "minItems": 2, "maxItems": 32,
+ "uniqueItems": true,
+ "items": {"$ref": "#/$defs/sha"}
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "allOf": [
+ {
+ "if": {"properties": {"schema_version": {"const": 2}}, "required": ["schema_version"]},
+ "then": {"required": ["major_line", "reconciliation"]}
+ },
+ {
+ "if": {"properties": {"schema_version": {"const": 1}}, "required": ["schema_version"]},
+ "then": {"not": {"anyOf": [{"required": ["major_line"]}, {"required": ["reconciliation"]}]}}
+ }
+ ],
+ "$defs": {
+ "sha": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
+ "version": {"type": "string", "maxLength": 64, "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"},
+ "taggedAnchor": {
"type": "object", "additionalProperties": false,
"required": ["commit", "version", "tag"],
"properties": {
- "commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
- "version": {"type": "string", "maxLength": 64, "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"},
+ "commit": {"$ref": "#/$defs/sha"},
+ "version": {"$ref": "#/$defs/version"},
"tag": {"type": "string", "pattern": "^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"}
}
},
- "overrides": {
- "type": "array", "maxItems": 256,
- "items": {
- "type": "object", "additionalProperties": false,
- "required": ["commit", "slice", "classification"],
- "properties": {
- "commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
- "slice": {"type": "string", "pattern": "^[a-z0-9][a-z0-9._-]{0,127}$"},
- "classification": {"enum": ["none", "patch", "minor", "major"]}
- }
+ "override": {
+ "type": "object", "additionalProperties": false,
+ "required": ["commit", "slice", "classification"],
+ "properties": {
+ "commit": {"$ref": "#/$defs/sha"},
+ "slice": {"type": "string", "pattern": "^[a-z0-9][a-z0-9._-]{0,127}$"},
+ "classification": {"enum": ["none", "patch", "minor", "major"]}
}
}
},
- "$comment": "The runtime also rejects duplicate JSON keys/commit overrides, checks tag equals v plus version, validates regular committed blobs, and binds anchor/overrides to Git ancestry."
+ "$comment": "Runtime validation additionally binds tags, commits, versions and history prefixes, and rejects duplicate JSON keys or override SHAs. Schema 2 is the repository-local 4.x major-line lock and one-time historical numbering reconciliation."
}
diff --git a/ls/core/release_docs/planning.py b/ls/core/release_docs/planning.py
index f2af8a24a..2368f6b04 100644
--- a/ls/core/release_docs/planning.py
+++ b/ls/core/release_docs/planning.py
@@ -112,8 +112,14 @@ def plan(root: Path, base: str | None = None, head: str = "HEAD", repair: bool =
baseline_tag = (previous[1] if previous else _tag_for_commit(repo_root, source_base)) or f"v{current_version}"
target_version = current_version
else:
- source_base = explicit_base or str(version_plan["base"])
- baseline_tag = _tag_for_commit(repo_root, source_base) or str(version_plan.get("anchor", {}).get("tag") or f"v{version_plan['base_version']}")
+ published_anchor = version_plan.get("published_anchor")
+ if (isinstance(published_anchor, dict)
+ and isinstance(version_plan.get("line_reconciliation"), dict)):
+ source_base = str(published_anchor["commit"])
+ baseline_tag = str(published_anchor["tag"])
+ else:
+ source_base = explicit_base or str(version_plan["base"])
+ baseline_tag = _tag_for_commit(repo_root, source_base) or str(version_plan.get("anchor", {}).get("tag") or f"v{version_plan['base_version']}")
target_version = version_plan["target_version"]
documents = tracked_documents(repo_root)
all_changed = _changed_paths(repo_root, source_base, source_head)
@@ -148,6 +154,8 @@ def plan(root: Path, base: str | None = None, head: str = "HEAD", repair: bool =
"ok": bool(documents) and not any(item["code"] == "invalid_version_plan" for item in findings),
"target_version": target_version,
"source_commit": source_head,
+ "source_base": source_base,
+ "baseline_version": baseline_version,
"baseline_tag": baseline_tag,
"changed_paths": changed_paths,
"generated_paths": generated_paths,
diff --git a/ls/core/versioning.py b/ls/core/versioning.py
index 80a11bb72..a5c44c68b 100644
--- a/ls/core/versioning.py
+++ b/ls/core/versioning.py
@@ -568,7 +568,7 @@ def publish_preflight(repo_root: Path, *, base: str | None = None, head: str | N
result["reason"] = "dirty_worktree"
result["dirty_worktree"] = dirty
return result
- if plan["bump"] != "none" and not plan["ok"]:
+ if not plan["ok"]:
sync_version_files(repo_root, target)
commit = commit_version_sync(repo_root, target)
if commit:
diff --git a/ls/core/versioning_policy.py b/ls/core/versioning_policy.py
index 58aec45f0..8ece08aa5 100644
--- a/ls/core/versioning_policy.py
+++ b/ls/core/versioning_policy.py
@@ -34,8 +34,13 @@ def _constant(value):
def validate(value: object) -> dict:
- if (not isinstance(value, dict) or set(value) != {'schema_version', 'policy', 'anchor', 'overrides'}
- or type(value['schema_version']) is not int or value['schema_version'] != 1
+ if not isinstance(value, dict) or type(value.get('schema_version')) is not int:
+ raise ValueError('Invalid release policy envelope')
+ schema_version = value['schema_version']
+ required = {'schema_version', 'policy', 'anchor', 'overrides'}
+ if schema_version == 2:
+ required |= {'major_line', 'reconciliation'}
+ if (schema_version not in {1, 2} or set(value) != required
or value['policy'] != POLICY):
raise ValueError('Invalid release policy envelope')
anchor = value['anchor']
@@ -62,6 +67,51 @@ def validate(value: object) -> dict:
if not isinstance(row['classification'], str) or row['classification'] not in sequence.RANK:
raise ValueError('Release override requires a release classification')
seen.add(row['commit'])
+ if schema_version == 2:
+ if type(value['major_line']) is not int or value['major_line'] != 4:
+ raise ValueError('The active release-line lock must select major version 4')
+ reconciliation = value['reconciliation']
+ expected = {'original_anchor', 'published_anchor', 'cutoff', 'reclassified_slices'}
+ if not isinstance(reconciliation, dict) or set(reconciliation) != expected:
+ raise ValueError('Invalid release-line reconciliation fields')
+ for key in ('original_anchor', 'published_anchor'):
+ row = reconciliation[key]
+ if not isinstance(row, dict) or set(row) != {'commit', 'version', 'tag'}:
+ raise ValueError(f'Invalid release-line {key.replace("_", " ")}')
+ if not isinstance(row['commit'], str) or not DIGEST.fullmatch(row['commit']):
+ raise ValueError(f'Release-line {key.replace("_", " ")} requires a full commit SHA')
+ if not isinstance(row['version'], str) or str(SemVer.parse(row['version'])) != row['version']:
+ raise ValueError(f'Release-line {key.replace("_", " ")} requires a canonical version')
+ if row['tag'] != 'v' + row['version']:
+ raise ValueError(f'Release-line {key.replace("_", " ")} tag must match its version')
+ cutoff = reconciliation['cutoff']
+ if not isinstance(cutoff, dict) or set(cutoff) != {'commit', 'source_version', 'corrected_version'}:
+ raise ValueError('Invalid release-line cutoff')
+ if not isinstance(cutoff['commit'], str) or not DIGEST.fullmatch(cutoff['commit']):
+ raise ValueError('Release-line cutoff requires a full commit SHA')
+ for key in ('source_version', 'corrected_version'):
+ if not isinstance(cutoff[key], str) or str(SemVer.parse(cutoff[key])) != cutoff[key]:
+ raise ValueError(f'Release-line cutoff {key.replace("_", " ")} must be canonical')
+ if SemVer.parse(cutoff['corrected_version']).major != value['major_line']:
+ raise ValueError('Corrected release-line version must match the locked major version')
+ reconciled = reconciliation['reclassified_slices']
+ if not isinstance(reconciled, list) or len(reconciled) != 1:
+ raise ValueError('The release-line correction requires exactly one historical slice reconciliation')
+ seen_slices: set[str] = set()
+ seen_commits: set[str] = set()
+ for row in reconciled:
+ if not isinstance(row, dict) or set(row) != {'slice', 'classification', 'commits'}:
+ raise ValueError('Invalid historical slice reconciliation fields')
+ if not isinstance(row['slice'], str) or not sequence.SLICE.fullmatch(row['slice']) or row['slice'] in seen_slices:
+ raise ValueError('Historical slice reconciliation requires a distinct lowercase slice identity')
+ if row['classification'] != 'minor':
+ raise ValueError('The one-time release-line reconciliation can map a historical major only to minor')
+ commits = row['commits']
+ if (not isinstance(commits, list) or not 2 <= len(commits) <= 32
+ or any(not isinstance(sha, str) or not DIGEST.fullmatch(sha) or sha in seen_commits for sha in commits)):
+ raise ValueError('Historical slice reconciliation requires distinct full commit SHAs')
+ seen_slices.add(row['slice'])
+ seen_commits.update(commits)
return value
@@ -97,6 +147,108 @@ def validate_anchor(root: Path, configuration: dict, head: str) -> None:
raise ValueError('Release anchor committed VERSION differs from policy')
+def _tag_commit(root: Path, tag: str, label: str) -> str:
+ result = _git(root, ['rev-parse', '--verify', f'refs/tags/{tag}^{{commit}}'], check=False)
+ if result.returncode or result.stdout.strip() == '':
+ raise ValueError(f'Release-line {label} tag is unavailable')
+ return result.stdout.strip()
+
+
+def _is_ancestor(root: Path, ancestor: str, descendant: str, message: str) -> None:
+ if _git(root, ['merge-base', '--is-ancestor', ancestor, descendant], check=False).returncode:
+ raise ValueError(message)
+
+
+def validate_reconciliation(root: Path, configuration: dict, head: str) -> dict:
+ """Verify the one-time 4.x arithmetic bridge against immutable Git history."""
+ from . import versioning as api
+
+ if configuration['schema_version'] != 2:
+ return {}
+ reconciliation = configuration['reconciliation']
+ original = reconciliation['original_anchor']
+ published = reconciliation['published_anchor']
+ cutoff = reconciliation['cutoff']
+ anchor = configuration['anchor']
+
+ for row, label in ((original, 'original'), (published, 'pre-correction published')):
+ if _tag_commit(root, row['tag'], label) != row['commit']:
+ raise ValueError(f'Release-line {label} tag does not resolve to its recorded commit')
+ if str(sequence.committed_version(root, row['commit'])) != row['version']:
+ raise ValueError(f'Release-line {label} commit VERSION differs from its record')
+ if _tag_commit(root, anchor['tag'], 'current published anchor') != anchor['commit']:
+ raise ValueError('Current published release anchor tag does not resolve to its recorded commit')
+ _is_ancestor(root, original['commit'], published['commit'], 'Original 4.x anchor must precede the published history anchor')
+ _is_ancestor(root, published['commit'], cutoff['commit'], 'Published history anchor must precede the release-line cutoff')
+ _is_ancestor(root, cutoff['commit'], head, 'Release-line cutoff must be an ancestor of the planned head')
+ if str(sequence.committed_version(root, cutoff['commit'])) != cutoff['source_version']:
+ raise ValueError('Release-line cutoff committed VERSION differs from its recorded source version')
+
+ # Before the corrected release is published, the v5 anchor remains current.
+ # Afterwards, the ordinary anchor advances to a published 4.x commit.
+ if anchor['commit'] == published['commit']:
+ arithmetic_start = cutoff['commit']
+ arithmetic_version = SemVer.parse(cutoff['corrected_version'])
+ else:
+ if SemVer.parse(anchor['version']).major != configuration['major_line']:
+ raise ValueError('Published anchor is neither the preserved pre-correction release nor a release on the locked 4.x line')
+ _is_ancestor(root, cutoff['commit'], anchor['commit'], 'Corrected 4.x release anchor must follow the release-line cutoff')
+ anchor_version = SemVer.parse(anchor['version'])
+ corrected_version = SemVer.parse(cutoff['corrected_version'])
+ if (anchor_version.major, anchor_version.minor, anchor_version.patch) < (
+ corrected_version.major, corrected_version.minor, corrected_version.patch):
+ raise ValueError('Corrected 4.x release anchor cannot precede the reconciled release version')
+ arithmetic_start = anchor['commit']
+ arithmetic_version = SemVer.parse(anchor['version'])
+
+ legacy = plan_sequential(root, base=original['commit'], head=cutoff['commit'])
+ if not legacy['ok'] or legacy['target_version'] != cutoff['source_version']:
+ raise ValueError('Historical release syncs do not validate to the recorded pre-correction cutoff version')
+
+ commits = api.list_integrated_commits(root, original['commit'], cutoff['commit'])
+ exclusions = {commit.sha: sequence.exclusion(root, commit) for commit in commits}
+ excluded = {sha for sha, reason in exclusions.items() if reason}
+ net_commits, _ = sequence.cancel_reverts(commits, excluded, repo_root=root)
+ classifications = {
+ commit.sha: 'none' if commit.sha in excluded else api._source_classification(commit)
+ for commit in commits
+ }
+ by_sha = {commit.sha: commit for commit in commits}
+ for row in reconciliation['reclassified_slices']:
+ all_major_members = set()
+ for commit in commits:
+ _, slice_id = sequence.metadata(commit.body)
+ if slice_id == row['slice'] and commit.sha not in excluded and classifications[commit.sha] == 'major':
+ all_major_members.add(commit.sha)
+ expected_members = set(row['commits'])
+ if all_major_members != expected_members:
+ raise ValueError('Historical slice reconciliation must name every and only major member of that exact slice')
+ for sha in expected_members:
+ commit = by_sha.get(sha)
+ if (commit is None or sha in excluded
+ or not (BREAKING_SUBJECT_RE.match(commit.subject) or BREAKING_CHANGE_RE.search(commit.body))
+ or api.release_type_override(commit.body) != 'major'):
+ raise ValueError(f'Historical reconciliation member {sha} is not an explicit breaking major source')
+ _, slice_id = sequence.metadata(commit.body)
+ if slice_id != row['slice']:
+ raise ValueError(f'Historical reconciliation member {sha} does not belong to its recorded slice')
+ classifications[sha] = row['classification']
+ corrected, corrected_slices = sequence.fold(
+ net_commits, classifications, SemVer.parse(original['version'])
+ )
+ if str(corrected) != cutoff['corrected_version']:
+ raise ValueError('Historical slices do not reconcile to the recorded corrected 4.x version')
+
+ return {
+ 'original_target_version': legacy['target_version'],
+ 'historical_sync_checks': legacy['version_sync_checks'],
+ 'corrected_target_version': str(corrected),
+ 'corrected_logical_slices': corrected_slices,
+ 'arithmetic_start': arithmetic_start,
+ 'arithmetic_version': str(arithmetic_version),
+ }
+
+
def validated_overrides(configuration, commits, exclusions):
overrides = {} if configuration is None else {row['commit']: row for row in configuration['overrides']}
known = {commit.sha: commit for commit in commits}
@@ -120,9 +272,13 @@ def plan(root: Path, *, base=None, head=None, ref=None, policy=None) -> dict:
return api._plan_version_legacy(root, base=base, head=selected_head, ref=ref)
if selected_policy != POLICY:
raise ValueError(f'Unknown release policy: {selected_policy}')
+ line_state = None
if configuration is not None:
validate_anchor(root, configuration, selected_head)
- return plan_sequential(root, base=base, head=selected_head, ref=ref, configuration=configuration)
+ if configuration['schema_version'] == 2:
+ line_state = validate_reconciliation(root, configuration, selected_head)
+ return plan_sequential(root, base=base, head=selected_head, ref=ref,
+ configuration=configuration, line_state=line_state)
def guard_target(root: Path, target: str) -> None:
@@ -138,12 +294,20 @@ def guard_target(root: Path, target: str) -> None:
raise ValueError('Requested version differs from the committed release policy target')
-def plan_sequential(repo_root: Path, *, base: str | None = None, head: str | None = None, ref: str | None = None, configuration: dict | None = None) -> dict:
+def plan_sequential(repo_root: Path, *, base: str | None = None, head: str | None = None,
+ ref: str | None = None, configuration: dict | None = None,
+ line_state: dict | None = None) -> dict:
from . import versioning as api
resolved_head = api.resolve_head(repo_root, head)
base_payload = api.resolve_base_with_metadata(repo_root, base, resolved_head)
comparison_base = str(base_payload["base"])
- resolved_base = configuration['anchor']['commit'] if configuration is not None else comparison_base
+ reconciliation = (configuration or {}).get('reconciliation')
+ if reconciliation:
+ if line_state is None:
+ line_state = validate_reconciliation(repo_root, configuration, resolved_head)
+ resolved_base = line_state['arithmetic_start']
+ else:
+ resolved_base = configuration['anchor']['commit'] if configuration is not None else comparison_base
base_resolution = base_payload['base_resolution']
if api._run_git(repo_root, ["merge-base", "--is-ancestor", resolved_base, resolved_head], check=False).returncode:
raise ValueError("Release base must be an ancestor of the selected head")
@@ -163,7 +327,8 @@ def plan_sequential(repo_root: Path, *, base: str | None = None, head: str | Non
classifications = {commit.sha: "none" if commit.sha in exclusions else api._source_classification(commit) for commit in commits}
classifications.update({sha: row['classification'] for sha, row in overrides.items()})
bump = api.max_bump(classifications[commit.sha] for commit in net_commits)
- base_version = sequence.committed_version(repo_root, resolved_base)
+ base_version = (SemVer.parse(line_state['arithmetic_version']) if reconciliation
+ else sequence.committed_version(repo_root, resolved_base))
target, logical_slices = sequence.fold(net_commits, classifications, base_version, overrides=overrides)
current = sequence.committed_version(repo_root, resolved_head)
worktree = api.read_version(repo_root)
@@ -185,20 +350,35 @@ def plan_sequential(repo_root: Path, *, base: str | None = None, head: str | Non
version_sync_matches_target = all(check["ok"] for check in sync_checks)
latest_sync_matches_target = not sync_commits or api.version_from_sync_commit(sync_commits[-1].subject) == target
head_version_matches_target = current == target
- head_version_required = version_sync_present or bump != "none"
+ # A schema-2 reconciliation changes the canonical arithmetic baseline even
+ # when the cutoff contains no new source bump. Require the committed
+ # VERSION to catch up before treating that reconciled history as ready.
+ head_version_required = bool(reconciliation) or version_sync_present or bump != "none"
+ major_line = None if configuration is None else configuration.get('major_line')
+ major_line_violations = [
+ {"sha": commit.sha, "subject": commit.subject,
+ "classification": classifications[commit.sha],
+ "message": f"Major version increases are disabled while the {major_line}.x release-line lock is active."}
+ for commit in net_commits
+ if major_line is not None and classifications[commit.sha] == 'major'
+ ]
ok = (
(not head_version_required or head_version_matches_target)
and version_sync_matches_target
and latest_sync_matches_target
and not release_type_required
+ and not major_line_violations
)
return {
"ok": ok,
"policy": POLICY,
- "repairable": version_sync_matches_target and not release_type_required,
+ "repairable": version_sync_matches_target and not release_type_required and not major_line_violations,
"comparison_base": comparison_base,
"comparison_base_resolution": base_resolution,
"anchor": None if configuration is None else configuration['anchor'],
+ "published_anchor": (configuration['anchor'] if line_state is not None else None),
+ "major_line": major_line,
+ "line_reconciliation": line_state,
"release_overrides": list(overrides.values()),
"logical_slices": logical_slices,
"excluded_commits": [{"sha": sha, "reason": reason} for sha, reason in exclusions.items()],
@@ -208,7 +388,10 @@ def plan_sequential(repo_root: Path, *, base: str | None = None, head: str | Non
"base": resolved_base,
"head": resolved_head,
"base_resolution": (base_resolution if configuration is None else api._base_result(
- status="resolved", strategy="committed_release_anchor", ref=configuration["anchor"]["tag"],
+ status="resolved",
+ strategy="committed_line_cutoff" if reconciliation and resolved_base != configuration['anchor']['commit'] else "committed_release_anchor",
+ ref=(reconciliation['cutoff']['commit'] if reconciliation and resolved_base != configuration['anchor']['commit']
+ else configuration["anchor"]["tag"]),
sha=resolved_base, attempts=[])),
"base_version": str(base_version),
"current_version": str(current),
@@ -218,6 +401,7 @@ def plan_sequential(repo_root: Path, *, base: str | None = None, head: str | Non
"bump": bump,
"release_type_required": bool(release_type_required),
"release_type_required_commits": release_type_required,
+ "major_line_violations": major_line_violations,
"version_sync_present": version_sync_present,
"version_sync_matches_target": version_sync_matches_target,
"commit_count": len(commits),
@@ -235,4 +419,3 @@ def plan_sequential(repo_root: Path, *, base: str | None = None, head: str | Non
for commit in net_commits
],
}
-
diff --git a/ls/docs/ADAPTER_OWNERSHIP.md b/ls/docs/ADAPTER_OWNERSHIP.md
index 27ace412b..da1d25c5c 100644
--- a/ls/docs/ADAPTER_OWNERSHIP.md
+++ b/ls/docs/ADAPTER_OWNERSHIP.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/AGENTIC_AGENT_Q_BIDIRECTIONAL_BUILD_SPEC.md b/ls/docs/AGENTIC_AGENT_Q_BIDIRECTIONAL_BUILD_SPEC.md
index 639159955..3f614d1f9 100644
--- a/ls/docs/AGENTIC_AGENT_Q_BIDIRECTIONAL_BUILD_SPEC.md
+++ b/ls/docs/AGENTIC_AGENT_Q_BIDIRECTIONAL_BUILD_SPEC.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-agentq-transport
implemented: "shared signed encrypted binary Agent Q envelope; private registry v2 with persistent authority; opaque file-drop and bounded one-attachment mail carrier; exact receipt before queue promotion; versioned lifecycle, reader and workflow contracts"
deferred: "ls/tools/agentq_transport_client/docs/DEFERRED.md"
diff --git a/ls/docs/AGENTIC_AGENT_Q_PATTERN.md b/ls/docs/AGENTIC_AGENT_Q_PATTERN.md
index 50acfabad..7f41438b8 100644
--- a/ls/docs/AGENTIC_AGENT_Q_PATTERN.md
+++ b/ls/docs/AGENTIC_AGENT_Q_PATTERN.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-agentq-transport
---
diff --git a/ls/docs/AGENTIC_AGENT_Q_SCENARIOS.md b/ls/docs/AGENTIC_AGENT_Q_SCENARIOS.md
index 37ec0f2e7..6bfc904f2 100644
--- a/ls/docs/AGENTIC_AGENT_Q_SCENARIOS.md
+++ b/ls/docs/AGENTIC_AGENT_Q_SCENARIOS.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-agentq-transport
audience: humans, agents
---
diff --git a/ls/docs/AGENTIC_AGENT_TO_AGENT_PROTOCOL.md b/ls/docs/AGENTIC_AGENT_TO_AGENT_PROTOCOL.md
index 71b1aac22..40e54f368 100644
--- a/ls/docs/AGENTIC_AGENT_TO_AGENT_PROTOCOL.md
+++ b/ls/docs/AGENTIC_AGENT_TO_AGENT_PROTOCOL.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-agentq-transport
---
diff --git a/ls/docs/AGENTIC_DESIGN_INDEX.md b/ls/docs/AGENTIC_DESIGN_INDEX.md
index d597bd16d..bba7f77d1 100644
--- a/ls/docs/AGENTIC_DESIGN_INDEX.md
+++ b/ls/docs/AGENTIC_DESIGN_INDEX.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-docs-organization
---
diff --git a/ls/docs/AGENTIC_UMBRELLA_WORKFLOWS.md b/ls/docs/AGENTIC_UMBRELLA_WORKFLOWS.md
index 9daa0fc51..cec3b9800 100644
--- a/ls/docs/AGENTIC_UMBRELLA_WORKFLOWS.md
+++ b/ls/docs/AGENTIC_UMBRELLA_WORKFLOWS.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: ls-workflow-umbrella-run
---
diff --git a/ls/docs/AGENT_CONTEXT_AND_MCP_CONTRACT.md b/ls/docs/AGENT_CONTEXT_AND_MCP_CONTRACT.md
index 7bdc0884d..700a6839f 100644
--- a/ls/docs/AGENT_CONTEXT_AND_MCP_CONTRACT.md
+++ b/ls/docs/AGENT_CONTEXT_AND_MCP_CONTRACT.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-context-index
---
diff --git a/ls/docs/AGENT_SKILLS_COMPLIANCE.md b/ls/docs/AGENT_SKILLS_COMPLIANCE.md
index 4145ca09a..e3dfc05c0 100644
--- a/ls/docs/AGENT_SKILLS_COMPLIANCE.md
+++ b/ls/docs/AGENT_SKILLS_COMPLIANCE.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-skill-creator
---
diff --git a/ls/docs/BRANDING.md b/ls/docs/BRANDING.md
index 968caade9..40f38a211 100644
--- a/ls/docs/BRANDING.md
+++ b/ls/docs/BRANDING.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-script-and-docs-quality
---
diff --git a/ls/docs/CLIENT_INTEGRATION_METADATA.md b/ls/docs/CLIENT_INTEGRATION_METADATA.md
index f283cab03..3b17add1d 100644
--- a/ls/docs/CLIENT_INTEGRATION_METADATA.md
+++ b/ls/docs/CLIENT_INTEGRATION_METADATA.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/CLIENT_STATE.md b/ls/docs/CLIENT_STATE.md
index bce998ec2..a3f01e426 100644
--- a/ls/docs/CLIENT_STATE.md
+++ b/ls/docs/CLIENT_STATE.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/CLI_SKILLS_ENV.md b/ls/docs/CLI_SKILLS_ENV.md
index 1c9b57e07..4debd6dec 100644
--- a/ls/docs/CLI_SKILLS_ENV.md
+++ b/ls/docs/CLI_SKILLS_ENV.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/CODEX_GITHUB_ISSUE_GOAL_LOOP.md b/ls/docs/CODEX_GITHUB_ISSUE_GOAL_LOOP.md
index 4422295f6..36912338a 100644
--- a/ls/docs/CODEX_GITHUB_ISSUE_GOAL_LOOP.md
+++ b/ls/docs/CODEX_GITHUB_ISSUE_GOAL_LOOP.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: ls-workflow-codex-github-issue-goal-loop
---
diff --git a/ls/docs/COMMAND_REFERENCE.md b/ls/docs/COMMAND_REFERENCE.md
index e1b3807f7..4589ea750 100644
--- a/ls/docs/COMMAND_REFERENCE.md
+++ b/ls/docs/COMMAND_REFERENCE.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/DECISION_TREE_WORKFLOW.md b/ls/docs/DECISION_TREE_WORKFLOW.md
index 0bb22e5dc..073b231d1 100644
--- a/ls/docs/DECISION_TREE_WORKFLOW.md
+++ b/ls/docs/DECISION_TREE_WORKFLOW.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: ls-workflow-spec-clarify-reverse
---
diff --git a/ls/docs/DOCUMENT_LIFECYCLE_MANAGEMENT.md b/ls/docs/DOCUMENT_LIFECYCLE_MANAGEMENT.md
index 70a26780f..b65722eb7 100644
--- a/ls/docs/DOCUMENT_LIFECYCLE_MANAGEMENT.md
+++ b/ls/docs/DOCUMENT_LIFECYCLE_MANAGEMENT.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-documentation-alignment
---
diff --git a/ls/docs/ENVMAN_INTEGRATION_CONTRACT.md b/ls/docs/ENVMAN_INTEGRATION_CONTRACT.md
index ca7c2cf24..6075af5ad 100644
--- a/ls/docs/ENVMAN_INTEGRATION_CONTRACT.md
+++ b/ls/docs/ENVMAN_INTEGRATION_CONTRACT.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-architecture
---
diff --git a/ls/docs/FEATURES.md b/ls/docs/FEATURES.md
index ba616cd49..49702938f 100644
--- a/ls/docs/FEATURES.md
+++ b/ls/docs/FEATURES.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-docs-organization
---
@@ -11,7 +11,7 @@ This is the full public capability catalog for LocalSetup. The [root README](../
## Generated Facts
-- Current version: `5.7.1`
+- Current version: `4.44.1`
- Supported platforms: `codex, claude-code, cursor, kilo, opencode, openclaw, github-copilot-cli, github-copilot-vscode, cline-cli, cline-vscode, amp-cli, goose-cli, pi-cli, hermes-agent, qwen-code-cli, kimi-cli, factory-droid, antigravity-app, gemini-cli, omp-cli`
- Shipped skills: `105`
- Workflow packages: `18`
diff --git a/ls/docs/FRAMEWORK_LIBRARY_ARCHITECTURE.md b/ls/docs/FRAMEWORK_LIBRARY_ARCHITECTURE.md
index 63c38039f..bca6a0679 100644
--- a/ls/docs/FRAMEWORK_LIBRARY_ARCHITECTURE.md
+++ b/ls/docs/FRAMEWORK_LIBRARY_ARCHITECTURE.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-architecture
---
diff --git a/ls/docs/FRONTEND_WEB_APP_SKILL_ROUTING.md b/ls/docs/FRONTEND_WEB_APP_SKILL_ROUTING.md
index 384c7f458..19501f853 100644
--- a/ls/docs/FRONTEND_WEB_APP_SKILL_ROUTING.md
+++ b/ls/docs/FRONTEND_WEB_APP_SKILL_ROUTING.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-task-skill-matcher
---
diff --git a/ls/docs/GIT_TRACEABILITY.md b/ls/docs/GIT_TRACEABILITY.md
index 68c75bc82..ee1cf0c61 100644
--- a/ls/docs/GIT_TRACEABILITY.md
+++ b/ls/docs/GIT_TRACEABILITY.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-git-workflows
---
diff --git a/ls/docs/GLOBAL_HANDOFF_LEDGER.md b/ls/docs/GLOBAL_HANDOFF_LEDGER.md
index f11364857..9b01e60ff 100644
--- a/ls/docs/GLOBAL_HANDOFF_LEDGER.md
+++ b/ls/docs/GLOBAL_HANDOFF_LEDGER.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/HARNESS_AUTOMATION.md b/ls/docs/HARNESS_AUTOMATION.md
index ab61240c1..05092893a 100644
--- a/ls/docs/HARNESS_AUTOMATION.md
+++ b/ls/docs/HARNESS_AUTOMATION.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-codex-heartbeat
---
diff --git a/ls/docs/INPUT_HARDENING_STANDARD.md b/ls/docs/INPUT_HARDENING_STANDARD.md
index a501b6142..9cd569d7a 100644
--- a/ls/docs/INPUT_HARDENING_STANDARD.md
+++ b/ls/docs/INPUT_HARDENING_STANDARD.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-script-and-docs-quality
---
diff --git a/ls/docs/LSCLI.md b/ls/docs/LSCLI.md
index dbb432c0a..5ce382521 100644
--- a/ls/docs/LSCLI.md
+++ b/ls/docs/LSCLI.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-architecture
---
diff --git a/ls/docs/LSCLI_QUALIFICATION.md b/ls/docs/LSCLI_QUALIFICATION.md
index 3e5c5719e..070505182 100644
--- a/ls/docs/LSCLI_QUALIFICATION.md
+++ b/ls/docs/LSCLI_QUALIFICATION.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-architecture
---
diff --git a/ls/docs/LSCLI_RUNTIME.md b/ls/docs/LSCLI_RUNTIME.md
index 4f04633aa..04c79b954 100644
--- a/ls/docs/LSCLI_RUNTIME.md
+++ b/ls/docs/LSCLI_RUNTIME.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-architecture
---
diff --git a/ls/docs/MULTI_PLATFORM_INSTALL.md b/ls/docs/MULTI_PLATFORM_INSTALL.md
index 27ad2aad0..74b1343ad 100644
--- a/ls/docs/MULTI_PLATFORM_INSTALL.md
+++ b/ls/docs/MULTI_PLATFORM_INSTALL.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
@@ -52,7 +52,7 @@ Automation global-only install:
curl -sSL https://raw.githubusercontent.com/CruxExperts/localsetup/main/install | bash -s -- --non-interactive --yes
```
-Automation mode creates or refreshes a managed LocalSetup source checkout at `~/.local/share/localsetup/source` from the latest non-draft, non-prerelease GitHub release, with a stable-tag fallback when release lookup is unavailable. It installs the managed LocalSetup package library, registers `~/.local/bin/localsetup`, creates no repo adapter paths unless selected, and preserves machine-readable output. If release lookup fails and a clean managed source already exists, the wrapper warns and continues from that existing source; if no managed source exists, it fails with an actionable message. If no terminal is available and `--non-interactive --yes` is not provided, the installer exits with an actionable message.
+Automation mode creates or refreshes a managed LocalSetup source checkout at `~/.local/share/localsetup/source` from the latest non-draft, non-prerelease GitHub release. If release lookup is unavailable, a stable-tag fallback is used only when all discoverable stable tags share one major version; mixed-major tags require an explicit `LOCALSETUP_BOOTSTRAP_REF` instead of a numeric guess. It installs the managed LocalSetup package library, registers `~/.local/bin/localsetup`, creates no repo adapter paths unless selected, and preserves machine-readable output. If release lookup fails and a clean managed source already exists, the wrapper warns and continues from that existing source; if no managed source exists, it fails with an actionable message. If no terminal is available and `--non-interactive --yes` is not provided, the installer exits with an actionable message.
When raw managed bootstrap finds a clean legacy managed source checkout identified by `_localsetup/tools/localsetup.py`, it recognizes and refreshes that checkout to the release-backed modern layout with `ls/tools/localsetup.py`. Before fetching and replacing the checkout, LocalSetup stores a Git rollback bundle and JSON manifest outside the source checkout under `/state/source-migrations` when that location is external, or `~/.local/share/localsetup/state/source-migrations` otherwise. Dirty or untracked source checkouts remain rejected before refresh.
diff --git a/ls/docs/NODE_DASHBOARD_CONTROL_BOUNDARY.md b/ls/docs/NODE_DASHBOARD_CONTROL_BOUNDARY.md
index 0f09e16c9..b035197b1 100644
--- a/ls/docs/NODE_DASHBOARD_CONTROL_BOUNDARY.md
+++ b/ls/docs/NODE_DASHBOARD_CONTROL_BOUNDARY.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-system-design
---
diff --git a/ls/docs/OPENPGP_RUNTIME.md b/ls/docs/OPENPGP_RUNTIME.md
index 4aac36917..513abe754 100644
--- a/ls/docs/OPENPGP_RUNTIME.md
+++ b/ls/docs/OPENPGP_RUNTIME.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-agentq-transport
---
diff --git a/ls/docs/OUTPUT_AND_DOC_GENERATION.md b/ls/docs/OUTPUT_AND_DOC_GENERATION.md
index db89fb6fb..2e39537ad 100644
--- a/ls/docs/OUTPUT_AND_DOC_GENERATION.md
+++ b/ls/docs/OUTPUT_AND_DOC_GENERATION.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-script-and-docs-quality
last_updated: "2026-02-20"
---
diff --git a/ls/docs/PLATFORM_REGISTRY.md b/ls/docs/PLATFORM_REGISTRY.md
index 4fcdb6871..b2086b66a 100644
--- a/ls/docs/PLATFORM_REGISTRY.md
+++ b/ls/docs/PLATFORM_REGISTRY.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/PLUGIN_PACKS.md b/ls/docs/PLUGIN_PACKS.md
index a96be835f..0b5b8ebb3 100644
--- a/ls/docs/PLUGIN_PACKS.md
+++ b/ls/docs/PLUGIN_PACKS.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-docs-organization
---
diff --git a/ls/docs/PRD_SCHEMA_EXTERNAL_AGENT_GUIDE.md b/ls/docs/PRD_SCHEMA_EXTERNAL_AGENT_GUIDE.md
index a4557baf8..4afee17d5 100644
--- a/ls/docs/PRD_SCHEMA_EXTERNAL_AGENT_GUIDE.md
+++ b/ls/docs/PRD_SCHEMA_EXTERNAL_AGENT_GUIDE.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-agentq-transport
---
diff --git a/ls/docs/PYTHON_ARCHITECTURE_STANDARD.md b/ls/docs/PYTHON_ARCHITECTURE_STANDARD.md
index a774f57b0..cd50d38ef 100644
--- a/ls/docs/PYTHON_ARCHITECTURE_STANDARD.md
+++ b/ls/docs/PYTHON_ARCHITECTURE_STANDARD.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-script-and-docs-quality
---
diff --git a/ls/docs/QUICKSTART.md b/ls/docs/QUICKSTART.md
index 72a419963..e628cf81d 100644
--- a/ls/docs/QUICKSTART.md
+++ b/ls/docs/QUICKSTART.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
@@ -38,7 +38,7 @@ The old public command form still opens the wizard when a terminal is available:
curl -sSL https://raw.githubusercontent.com/CruxExperts/localsetup/main/install | bash -s -- --yes --tools codex
```
-The public command is release-backed even though the small wrapper is downloaded from `main`: managed bootstrap installs resolve the latest non-draft, non-prerelease GitHub release tag before cloning or refreshing `~/.local/share/localsetup/source`, with a stable-tag fallback when release lookup is unavailable. Set `LOCALSETUP_BOOTSTRAP_REF` only when you intentionally want an explicit branch, tag, or commit. Explicit `--directory` checkouts are source-authoritative and are never auto-fetched or replaced.
+The public command is release-backed even though the small wrapper is downloaded from `main`: managed bootstrap installs resolve the latest non-draft, non-prerelease GitHub release tag before cloning or refreshing `~/.local/share/localsetup/source`. If release lookup is unavailable, the installer uses a tag fallback only when all discoverable stable tags share one major version; it stops and asks for `LOCALSETUP_BOOTSTRAP_REF` when tags span multiple major lines. Set that variable only when you intentionally want an explicit branch, tag, or commit. Explicit `--directory` checkouts are source-authoritative and are never auto-fetched or replaced.
For release verification, use the GitHub release tarball and its `.sha256` sidecar, then run:
diff --git a/ls/docs/README.md b/ls/docs/README.md
index 61be9f074..af2c95983 100644
--- a/ls/docs/README.md
+++ b/ls/docs/README.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-docs-organization
---
@@ -19,7 +19,7 @@ This is the public documentation map for LocalSetup. Start here when you want th
## Generated Facts
-- Current version: `5.7.1`
+- Current version: `4.44.1`
- Supported platforms: `codex, claude-code, cursor, kilo, opencode, openclaw, github-copilot-cli, github-copilot-vscode, cline-cli, cline-vscode, amp-cli, goose-cli, pi-cli, hermes-agent, qwen-code-cli, kimi-cli, factory-droid, antigravity-app, gemini-cli, omp-cli`
- Shipped skills: `105`
- Workflow packages: `18`
@@ -51,7 +51,7 @@ This is the public documentation map for LocalSetup. Start here when you want th
| [Harness automation](HARNESS_AUTOMATION.md) | Opt-in heartbeat activation, typed LSCli profiles, reserved actions/controller accounting, runtime artifacts, cron gating and command-policy boundaries. |
-Read the [current release guide](releases/5.7.1.md) for LocalSetup 5.7.1, including compatibility, updating, and verification. Find downloads in the [latest published release](https://github.com/CruxExperts/localsetup/releases/latest).
+Read the [current release guide](releases/4.44.1.md) for LocalSetup 4.44.1, including compatibility, updating, and verification. Find downloads in the [latest published release](https://github.com/CruxExperts/localsetup/releases/latest).
The [4.4.0 guide](releases/4.4.0.md) covers the earlier context and package consolidation.
diff --git a/ls/docs/REPO_AND_DATA_SEPARATION.md b/ls/docs/REPO_AND_DATA_SEPARATION.md
index afc53827f..f4e836be9 100644
--- a/ls/docs/REPO_AND_DATA_SEPARATION.md
+++ b/ls/docs/REPO_AND_DATA_SEPARATION.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/REPO_CONVERSION.md b/ls/docs/REPO_CONVERSION.md
index e080cb6cf..1a9751415 100644
--- a/ls/docs/REPO_CONVERSION.md
+++ b/ls/docs/REPO_CONVERSION.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: ls-workflow-pipeline-repo-convert
---
diff --git a/ls/docs/REPO_MAINTENANCE.md b/ls/docs/REPO_MAINTENANCE.md
index 648f5923a..95ef7f9a3 100644
--- a/ls/docs/REPO_MAINTENANCE.md
+++ b/ls/docs/REPO_MAINTENANCE.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/SDK_FORK.md b/ls/docs/SDK_FORK.md
index 1326870ab..c15357f0c 100644
--- a/ls/docs/SDK_FORK.md
+++ b/ls/docs/SDK_FORK.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-architecture
---
diff --git a/ls/docs/SKILLS.md b/ls/docs/SKILLS.md
index b4d0ccb83..3d573099e 100644
--- a/ls/docs/SKILLS.md
+++ b/ls/docs/SKILLS.md
@@ -1,14 +1,14 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: generate-docs
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: generate-docs
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
-artifact_sha256: ac1a33dd747cd03e571ea74b209341dc34c3cc90fce60b47c9f2b1f3c7d82a4e
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
+artifact_sha256: 73c1afab3e2ac3b53857cd025f86bd7ca57a0668c3093542ff2c9b4faf16ed88
---
# Shipped skills catalog
diff --git a/ls/docs/SKILLS_AND_RULES.md b/ls/docs/SKILLS_AND_RULES.md
index 8488dc242..a28c4906e 100644
--- a/ls/docs/SKILLS_AND_RULES.md
+++ b/ls/docs/SKILLS_AND_RULES.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-task-skill-matcher
---
diff --git a/ls/docs/SKILL_DISCOVERY.md b/ls/docs/SKILL_DISCOVERY.md
index bc30129df..db24cc457 100644
--- a/ls/docs/SKILL_DISCOVERY.md
+++ b/ls/docs/SKILL_DISCOVERY.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-skill-discovery
---
diff --git a/ls/docs/SKILL_IMPORTING.md b/ls/docs/SKILL_IMPORTING.md
index a543e90c4..bfd5ac1f6 100644
--- a/ls/docs/SKILL_IMPORTING.md
+++ b/ls/docs/SKILL_IMPORTING.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-skill-importer
---
diff --git a/ls/docs/SKILL_INTEROPERABILITY.md b/ls/docs/SKILL_INTEROPERABILITY.md
index c09e2b047..3b68011f2 100644
--- a/ls/docs/SKILL_INTEROPERABILITY.md
+++ b/ls/docs/SKILL_INTEROPERABILITY.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-skill-creator
---
diff --git a/ls/docs/SKILL_NORMALIZATION.md b/ls/docs/SKILL_NORMALIZATION.md
index 9a2fd33a5..8dc97d8df 100644
--- a/ls/docs/SKILL_NORMALIZATION.md
+++ b/ls/docs/SKILL_NORMALIZATION.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-skill-normalizer
---
diff --git a/ls/docs/SKILL_VALIDATION_PATTERNS.md b/ls/docs/SKILL_VALIDATION_PATTERNS.md
index 6c3d45e8d..540da2f1e 100644
--- a/ls/docs/SKILL_VALIDATION_PATTERNS.md
+++ b/ls/docs/SKILL_VALIDATION_PATTERNS.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-skill-vetter
---
diff --git a/ls/docs/STORAGE_SKILLS.md b/ls/docs/STORAGE_SKILLS.md
index 7569b1dfc..c679906eb 100644
--- a/ls/docs/STORAGE_SKILLS.md
+++ b/ls/docs/STORAGE_SKILLS.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-backblaze
---
diff --git a/ls/docs/TASK_SKILL_MATCHING.md b/ls/docs/TASK_SKILL_MATCHING.md
index 436d8a5fa..3eb809079 100644
--- a/ls/docs/TASK_SKILL_MATCHING.md
+++ b/ls/docs/TASK_SKILL_MATCHING.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-task-skill-matcher
---
diff --git a/ls/docs/TMUX_TERMINAL_MODE.md b/ls/docs/TMUX_TERMINAL_MODE.md
index 34fc98e51..2eed8beb7 100644
--- a/ls/docs/TMUX_TERMINAL_MODE.md
+++ b/ls/docs/TMUX_TERMINAL_MODE.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: ls-workflow-tmux-terminal-mode
---
diff --git a/ls/docs/TOOLING_POLICY.md b/ls/docs/TOOLING_POLICY.md
index e2b1b8c79..c62dae87e 100644
--- a/ls/docs/TOOLING_POLICY.md
+++ b/ls/docs/TOOLING_POLICY.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-script-and-docs-quality
---
diff --git a/ls/docs/TRUSTED_WORK_QUEUE.md b/ls/docs/TRUSTED_WORK_QUEUE.md
index b2e1a828a..86e5edc29 100644
--- a/ls/docs/TRUSTED_WORK_QUEUE.md
+++ b/ls/docs/TRUSTED_WORK_QUEUE.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-architecture
---
diff --git a/ls/docs/VERSIONING.md b/ls/docs/VERSIONING.md
index bf9788f7d..f34947be7 100644
--- a/ls/docs/VERSIONING.md
+++ b/ls/docs/VERSIONING.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-automatic-versioning
---
@@ -11,9 +11,29 @@ LocalSetup uses the root `VERSION` file as the source of truth for the framework
## Current Version
- Source of truth: [`../../VERSION`](../../VERSION)
-- Current value: `5.7.1`
+- Current value: `4.44.1`
- Generated facts: [`_generated/facts.json`](_generated/facts.json)
+## 4.x major-line lock and one-time numbering reconciliation
+
+The corrected 4.x release line is explicitly major-locked. While the lock is in
+force, accepted releases may increment MINOR or PATCH only; no automatic or
+implicit MAJOR increment is permitted. Reject any prospective MAJOR
+classification, including an explicit `Release-Type: major`, while locked. Do
+not silently downgrade a major classification to minor or patch.
+
+This is a one-time arithmetic correction. The already-published v5.6.2 tag and
+assets remain immutable; that release's content maps to corrected arithmetic
+4.43.2 after the exact historical issue-100 MAJOR-to-MINOR numbering
+reconciliation. Branding maps to 4.44.0, followed by canonical
+repository-name policy at 4.44.1. At the time of this reconciliation, 4.44.1
+has not been published and is not current.
+
+The SDK paging compatibility break and the Agent Q v2/envelope compatibility
+break remain. Renumbering does not restore source or protocol compatibility.
+The 4.44.1 release guidance must disclose both breaks clearly and must not imply
+that the numbering correction restored compatibility.
+
## Policy
- Keep `VERSION`, the root README version line, and generated facts in sync.
@@ -41,13 +61,26 @@ a conflicting committed policy. A loose, deleted or edited worktree policy does
not replace the selected commit's contract. Selection does not authorize publication.
The [release policy schema](../config/release-policy.schema.json) defines the
-strict configuration: `schema_version: 1`, `policy: "sequential-logical-slices"`,
-an `anchor` with full lowercase commit SHA, canonical `version` and matching
-`vMAJOR.MINOR.PATCH` tag, and an `overrides` array. The file must be a regular Git
-blob of at most 64 KiB. Duplicate keys, unknown fields, invalid types and duplicate
-override SHAs fail planning. The planner verifies the anchor's committed VERSION
-and ancestry locally; maintainers must independently verify that the named tag
-and commit were actually published. Planning never fetches release information.
+strict configuration. Schema 1 has `schema_version: 1`,
+`policy: "sequential-logical-slices"`, an `anchor` with full lowercase commit
+SHA, canonical `version` and matching `vMAJOR.MINOR.PATCH` tag, and an
+`overrides` array. Schema 2 adds `major_line: 4` and a one-time
+`reconciliation` object containing the original 4.x anchor, the immutable
+pre-correction published anchor, the source/corrected cutoff versions, and exact
+breaking-slice commit SHAs reclassified from MAJOR to MINOR. It preserves checks
+of the original release sync history and uses the corrected cutoff for arithmetic
+until a corrected 4.x tag is published; after that, arithmetic starts from the
+new verified 4.x anchor. The historical v5.6.2 published anchor remains available
+for release-document coverage. Runtime validation binds each tag to its commit,
+checks ancestry and replayed syncs, and requires the cutoff VERSION and corrected
+arithmetic to match. In schema 2, HEAD must also carry the corrected version
+before the plan is ready, even when no new source slice adds a bump.
+
+The file must be a regular Git blob of at most 64 KiB. Duplicate keys, unknown
+fields, invalid types and duplicate override SHAs fail planning. The planner
+checks committed versions and ancestry using local Git objects and refs;
+maintainers must independently verify the tags were actually published. Planning
+never fetches release information.
Each optional override has exactly `commit`, `slice` and `classification` fields.
It names one full unpublished source SHA, a lowercase slice ID of at most 128
@@ -80,7 +113,9 @@ facts blocks. A receipt-like subject alone grants no exclusion. Sync exclusions
compare canonical version/generated content rather than exempting arbitrary docs.
Breaking markers require an explicit `Release-Type: major` compatibility decision.
-Minor, patch and none cannot conceal them. Duplicate/invalid metadata, ambiguous
+Minor, patch and none cannot conceal them. An active 4.x major-line lock rejects
+major classifications; restore compatibility or stop release work until the lock
+is explicitly amended. Duplicate/invalid metadata, ambiguous
reverts and partial logical-slice reverts fail for reviewed reconciliation. Exact
native Git revert SHAs cancel fully reverted unpublished slices only after a
single-parent raw path/blob/mode comparison proves the complete inverse. Mixed
@@ -102,8 +137,10 @@ anchor, source_shas, classification, before_version, after_version),
`repairable`, `anchor`, `release_overrides`, `comparison_base` and
`comparison_base_resolution`. `base` and `base_resolution` identify the arithmetic
anchor; comparison metadata records the caller's independently selected ref.
-`bump` is the highest applied category for compatibility; target_version is the
-ordered fold, not one application of that aggregate category.
+Schema 2 also returns the verified `published_anchor`, `major_line`,
+`line_reconciliation`, and any `major_line_violations`. `bump` is the highest
+applied category for compatibility; `target_version` is the ordered fold, not
+one application of that aggregate category.
## Local workflow
diff --git a/ls/docs/WORKFLOW_PACKAGES.md b/ls/docs/WORKFLOW_PACKAGES.md
index 6bfcfe4e7..c96c403f1 100644
--- a/ls/docs/WORKFLOW_PACKAGES.md
+++ b/ls/docs/WORKFLOW_PACKAGES.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-docs-organization
---
diff --git a/ls/docs/WORKFLOW_QUICK_REF.md b/ls/docs/WORKFLOW_QUICK_REF.md
index 7c831b7df..07672f350 100644
--- a/ls/docs/WORKFLOW_QUICK_REF.md
+++ b/ls/docs/WORKFLOW_QUICK_REF.md
@@ -1,14 +1,14 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: generate-docs
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: generate-docs
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
-artifact_sha256: 15a064235264e3c4445ce91fefe76a74ac13ddbaaf6337504a01a4eb35249b49
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
+artifact_sha256: 393552d58b8412c44afc9fbbd0aff0975a19010d587d5779e0346ef5ff2e05a7
---
# Workflow quick reference
diff --git a/ls/docs/WORKFLOW_REGISTRY.md b/ls/docs/WORKFLOW_REGISTRY.md
index 083233c86..a863f8537 100644
--- a/ls/docs/WORKFLOW_REGISTRY.md
+++ b/ls/docs/WORKFLOW_REGISTRY.md
@@ -1,14 +1,14 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: generate-docs
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: generate-docs
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
-artifact_sha256: 9773a6c75d91df0b5b9e9feb96a7747a1b0ef91c3e8348f575789e8803cbfed1
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
+artifact_sha256: 0407568324660bae06808812eb701709399b3cff93d4d8903dddf688487a6745
---
# Workflow and module registry (LocalSetup)
diff --git a/ls/docs/WORKFLOW_SKILLS_REVIEW_BUILD_SPEC.md b/ls/docs/WORKFLOW_SKILLS_REVIEW_BUILD_SPEC.md
index 65e325b01..3bcb20f84 100644
--- a/ls/docs/WORKFLOW_SKILLS_REVIEW_BUILD_SPEC.md
+++ b/ls/docs/WORKFLOW_SKILLS_REVIEW_BUILD_SPEC.md
@@ -1,6 +1,6 @@
---
status: DEPRECATED
-version: 5.7
+version: 4.44
---
# Workflow Skills Review Build Spec
diff --git a/ls/docs/WORKFLOW_STANDARD.md b/ls/docs/WORKFLOW_STANDARD.md
index e160610bc..bc8c2da5f 100644
--- a/ls/docs/WORKFLOW_STANDARD.md
+++ b/ls/docs/WORKFLOW_STANDARD.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/_generated/artifact-registry.json b/ls/docs/_generated/artifact-registry.json
index fac50df73..817be67cd 100644
--- a/ls/docs/_generated/artifact-registry.json
+++ b/ls/docs/_generated/artifact-registry.json
@@ -3,10 +3,10 @@
{
"artifact_sha256": "ab8055bd373816efa87ddeacddbe40a803e028a21df6c96221cd8a97d46b9dfc",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "assets/README.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -23,12 +23,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "9976b41e83b312e661faf97492c3c9608dc79a835b0ef7e714d59031859c662a",
+ "artifact_sha256": "ea928a6167c9c89b379d56028626620cecb3cc70fd118c877aa98cfdbe6b9ae8",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/SKILLS.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -45,12 +45,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "f3e9715a747bb1063a0bda647256174f66df354a1fbc8336f4a6f0179ac3096f",
+ "artifact_sha256": "9b8b246f08db78f3b9a0f22aa7155328ab03eb03313944dedde043c8dc8ccd1e",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/WORKFLOW_QUICK_REF.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -67,12 +67,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "a9f86e1e5d1a8609b685ad49a38397291086a6cf8f91c769b10202f38af79314",
+ "artifact_sha256": "75a7bcb5c91f05750cf5ad64c5118499d2ea28c3c5ab374386c342056d7faa83",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/WORKFLOW_REGISTRY.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -89,12 +89,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "ef7f0d27ee1a1b93480cdb7e1df6747b062fceed0c636546d1fe6aef5ae0a678",
+ "artifact_sha256": "e53b3b63d641e3391f69679ecdb542042bc845405cd83851d68f8fd3cffdd165",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/docs-alignment-summary.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -111,12 +111,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "b5e73661d8b77482672fde72cb4d1a437ed63ea5484af7db05ea101a5a35bc5b",
+ "artifact_sha256": "d9b554f3afacf93248a7971b9e6edba8e5e5ad9c5b5869d77ce00d1325c0728f",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/docs-asset-manifest.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -133,12 +133,12 @@
"type": "json"
},
{
- "artifact_sha256": "85b9e52df3aa33da8b69b979378c3b7ba59cb2b60c4de493d3e24e5235035179",
+ "artifact_sha256": "2912f5e38c98948b7b0380178eca419084f0717ad4f2e9f9dd2024ff006b886f",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/docs-audit-result.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -155,12 +155,12 @@
"type": "json"
},
{
- "artifact_sha256": "cc168993252ee3d123a7cd06b98d74fa655f0599cf2b704ad0e26d73de856fbc",
+ "artifact_sha256": "d2635c378fd7a1cf7a51500406e466e1dda5ab326bd1d06e7ac9a5627c1cf6fd",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/docs-inventory.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -177,12 +177,12 @@
"type": "json"
},
{
- "artifact_sha256": "8baaaea1887929a5548031a70ff79e21dd630cbc36edd4cbe85ff170a9e96003",
+ "artifact_sha256": "417472468bdf4e3cfbfa4859e0bf2ba632355e825491c33ab5217b292eab5736",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/docs-truth-map.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -199,12 +199,12 @@
"type": "json"
},
{
- "artifact_sha256": "a82006ae275aeffb07fe2568066fd1b3da5ba6baad11c5a8d00952e8d6397cc5",
+ "artifact_sha256": "cb4f56925ecffe641b3c59a658f3f656c729b890d00aa2a452bff5cb8f771b5b",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/facts.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -221,12 +221,12 @@
"type": "json"
},
{
- "artifact_sha256": "2651ddd03e588b6e9798a3a38035d0557ee3d348c47b7f52318d393498daff38",
+ "artifact_sha256": "b852411ba7f2fe5052635db6713851aa69ee978dc422a476788a21d943737274",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/implementation-file-map.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -243,12 +243,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "d308cb9b43b6e6401fd2ba824e236c7f672eca1dbf2321015f9cd0459563d3de",
+ "artifact_sha256": "9aba8a2871b26134e1a47d0bd97c28c17fad678a690706008f886c7bc7824fab",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/platform-adapters.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -265,12 +265,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "3c57fae9620660ac3f60fd24d9335e48db57d4294a06c6c7315edb8f620bc291",
+ "artifact_sha256": "00667a5b1c50fd442e818d7e70b6850bb044d974a31f85acd73e3ff87b39b1b4",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/plugin-packs.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -287,12 +287,12 @@
"type": "json"
},
{
- "artifact_sha256": "d27b9818f2ae96f032d9916e2a368c4d3134ebf4e7a2561e0b0b21a0edbaf3c0",
+ "artifact_sha256": "c3bd43ddb9d02aa843740bd4f4dda990aacc9dd9fc868c735a4a87de3102ade2",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/plugin-packs.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -309,12 +309,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "079b3d4feb92e1ed7ccbe814f93383891a819afc34929c5967fa861982a3fe66",
+ "artifact_sha256": "4f08f08e708d0e2ee25f51bd20440c64510c501bf5df7362f87677d6d9874cb1",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/skill-packs.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -331,12 +331,12 @@
"type": "markdown"
},
{
- "artifact_sha256": "b54993ff661d2a00b652e2a50827f591e6d12a868587ab44f02cead4960f5798",
+ "artifact_sha256": "4a09f813c48f696cba7562423f9c3c1a2a0646f60a6c9f25093529384e00147c",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/skill-taxonomy.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -353,12 +353,12 @@
"type": "json"
},
{
- "artifact_sha256": "15c4220b125d36942074f43b86b33d292244f61c36986d44f855e7ac1aaf30b5",
+ "artifact_sha256": "1baff1145a7f200c7528507db01dbf87b9b7989b6043d708e4f3a6e3486ccbe3",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/skill_aliases.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -375,12 +375,12 @@
"type": "json"
},
{
- "artifact_sha256": "501ac3bb77b2a1184fb73f0ccbbe48b9bd7d18e4a4f2f43bb14cb387251ffafb",
+ "artifact_sha256": "988235ae35d000167532aed7b438120afe6818589fc7bd5f8dfa9f790b73c39f",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/_generated/workflow-catalog.json",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -397,12 +397,12 @@
"type": "json"
},
{
- "artifact_sha256": "74105335e6195cdbd6fee9e4a29218df9cf9fbfb3a6ea141f054f931238bb9fc",
+ "artifact_sha256": "0e3aba0eec75c6fdb1d8b439b67c8afa3f7ace0a259ffd81f176f71f7406686e",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"path": "ls/docs/migration/skill-alias-map.md",
- "provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
+ "provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
"source_inputs": [
"VERSION",
"ls/skills",
@@ -421,16 +421,16 @@
],
"provenance": {
"artifact_path": "ls/docs/_generated/artifact-registry.json",
- "artifact_sha256": "21a9d93756caceb7364a0aeebfa4f1226c2e8e1d50e2e058a122e2993059c83e",
+ "artifact_sha256": "f0479f48ab27da8ce85aa5185959aaf2f9abcd21eed9f199de9516c35145d446",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"schema_version": 1
}
diff --git a/ls/docs/_generated/docs-alignment-summary.md b/ls/docs/_generated/docs-alignment-summary.md
index 7deff2530..218eb6a1e 100644
--- a/ls/docs/_generated/docs-alignment-summary.md
+++ b/ls/docs/_generated/docs-alignment-summary.md
@@ -1,14 +1,14 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: docs-align
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: docs-align
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
-artifact_sha256: 58dc6ed83e03e048d0994c70ef0cb8ea7cf504b97c2e4a2f2b1201a1ee1832db
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
+artifact_sha256: 7b5cb94273c47d28aff07231bbfb09fcbe983a20c3bbc5854cba234faff6b861
---
# Documentation Alignment Summary
@@ -16,8 +16,8 @@ This page is generated from repository inventory, source-truth manifests, asset
| Signal | Value |
|---|---:|
-| Version | `5.7.1` |
-| Documentation files inventoried | 513 |
+| Version | `4.44.1` |
+| Documentation files inventoried | 512 |
| Immutable upstream documents | 64 |
| Shipped skills | 105 |
| Workflow packages | 18 |
diff --git a/ls/docs/_generated/docs-asset-manifest.json b/ls/docs/_generated/docs-asset-manifest.json
index 574666a51..e335e706a 100644
--- a/ls/docs/_generated/docs-asset-manifest.json
+++ b/ls/docs/_generated/docs-asset-manifest.json
@@ -112,14 +112,14 @@
"artifact_path": "ls/docs/_generated/docs-asset-manifest.json",
"artifact_sha256": "f2228883dbd18ae5996b2e66baff63b8819d7dfe101463396cc354fb8e46083f",
"emitter": "docs-align",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"schema_version": "1.0"
}
diff --git a/ls/docs/_generated/docs-audit-result.json b/ls/docs/_generated/docs-audit-result.json
index a67a3e022..10a468667 100644
--- a/ls/docs/_generated/docs-audit-result.json
+++ b/ls/docs/_generated/docs-audit-result.json
@@ -9,14 +9,14 @@
"artifact_path": "ls/docs/_generated/docs-audit-result.json",
"artifact_sha256": "e82619e42f31266261fa11fa954df7778b2d19b7f12d224a71a85ec1a8cf31a8",
"emitter": "docs-align",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"schema_version": "1.0"
}
diff --git a/ls/docs/_generated/docs-inventory.json b/ls/docs/_generated/docs-inventory.json
index 58860ff4e..39ff83f6b 100644
--- a/ls/docs/_generated/docs-inventory.json
+++ b/ls/docs/_generated/docs-inventory.json
@@ -175,8 +175,8 @@
"workflow"
],
"counts": {
- "docs": 513,
- "framework_docs": 87,
+ "docs": 512,
+ "framework_docs": 86,
"generated_docs": 5,
"platforms": 20,
"public_docs": 6,
@@ -379,7 +379,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/ADAPTER_OWNERSHIP.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -389,7 +389,7 @@
"owner_skill": "ls-agentq-transport",
"path": "ls/docs/AGENTIC_AGENT_Q_BIDIRECTIONAL_BUILD_SPEC.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -399,7 +399,7 @@
"owner_skill": "ls-agentq-transport",
"path": "ls/docs/AGENTIC_AGENT_Q_PATTERN.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -409,7 +409,7 @@
"owner_skill": "ls-agentq-transport",
"path": "ls/docs/AGENTIC_AGENT_Q_SCENARIOS.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -419,7 +419,7 @@
"owner_skill": "ls-agentq-transport",
"path": "ls/docs/AGENTIC_AGENT_TO_AGENT_PROTOCOL.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -429,7 +429,7 @@
"owner_skill": "ls-docs-organization",
"path": "ls/docs/AGENTIC_DESIGN_INDEX.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -439,7 +439,7 @@
"owner_skill": "",
"path": "ls/docs/AGENTIC_UMBRELLA_WORKFLOWS.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -449,7 +449,7 @@
"owner_skill": "ls-context-index",
"path": "ls/docs/AGENT_CONTEXT_AND_MCP_CONTRACT.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -459,7 +459,7 @@
"owner_skill": "ls-skill-creator",
"path": "ls/docs/AGENT_SKILLS_COMPLIANCE.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -469,7 +469,7 @@
"owner_skill": "ls-script-and-docs-quality",
"path": "ls/docs/BRANDING.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -479,7 +479,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/CLIENT_INTEGRATION_METADATA.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -489,7 +489,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/CLIENT_STATE.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -499,7 +499,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/CLI_SKILLS_ENV.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -509,7 +509,7 @@
"owner_skill": "",
"path": "ls/docs/CODEX_GITHUB_ISSUE_GOAL_LOOP.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -519,7 +519,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/COMMAND_REFERENCE.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -529,7 +529,7 @@
"owner_skill": "",
"path": "ls/docs/DECISION_TREE_WORKFLOW.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -539,7 +539,7 @@
"owner_skill": "ls-documentation-alignment",
"path": "ls/docs/DOCUMENT_LIFECYCLE_MANAGEMENT.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -549,7 +549,7 @@
"owner_skill": "ls-architecture",
"path": "ls/docs/ENVMAN_INTEGRATION_CONTRACT.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -561,7 +561,7 @@
"owner_skill": "ls-docs-organization",
"path": "ls/docs/FEATURES.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -571,7 +571,7 @@
"owner_skill": "ls-architecture",
"path": "ls/docs/FRAMEWORK_LIBRARY_ARCHITECTURE.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -581,7 +581,7 @@
"owner_skill": "ls-task-skill-matcher",
"path": "ls/docs/FRONTEND_WEB_APP_SKILL_ROUTING.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -591,7 +591,7 @@
"owner_skill": "ls-git-workflows",
"path": "ls/docs/GIT_TRACEABILITY.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -601,7 +601,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/GLOBAL_HANDOFF_LEDGER.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -611,7 +611,7 @@
"owner_skill": "ls-codex-heartbeat",
"path": "ls/docs/HARNESS_AUTOMATION.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -621,7 +621,7 @@
"owner_skill": "ls-script-and-docs-quality",
"path": "ls/docs/INPUT_HARDENING_STANDARD.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -631,7 +631,7 @@
"owner_skill": "ls-architecture",
"path": "ls/docs/LSCLI.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -641,7 +641,7 @@
"owner_skill": "ls-architecture",
"path": "ls/docs/LSCLI_QUALIFICATION.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -651,7 +651,7 @@
"owner_skill": "ls-architecture",
"path": "ls/docs/LSCLI_RUNTIME.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -661,7 +661,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/MULTI_PLATFORM_INSTALL.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -671,7 +671,7 @@
"owner_skill": "ls-system-design",
"path": "ls/docs/NODE_DASHBOARD_CONTROL_BOUNDARY.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -681,7 +681,7 @@
"owner_skill": "ls-agentq-transport",
"path": "ls/docs/OPENPGP_RUNTIME.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -691,7 +691,7 @@
"owner_skill": "ls-script-and-docs-quality",
"path": "ls/docs/OUTPUT_AND_DOC_GENERATION.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -701,7 +701,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/PLATFORM_REGISTRY.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -711,7 +711,7 @@
"owner_skill": "ls-docs-organization",
"path": "ls/docs/PLUGIN_PACKS.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -721,7 +721,7 @@
"owner_skill": "ls-agentq-transport",
"path": "ls/docs/PRD_SCHEMA_EXTERNAL_AGENT_GUIDE.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -731,7 +731,7 @@
"owner_skill": "ls-script-and-docs-quality",
"path": "ls/docs/PYTHON_ARCHITECTURE_STANDARD.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -741,7 +741,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/QUICKSTART.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -754,7 +754,7 @@
"owner_skill": "ls-docs-organization",
"path": "ls/docs/README.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -764,7 +764,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/REPO_AND_DATA_SEPARATION.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -774,7 +774,7 @@
"owner_skill": "",
"path": "ls/docs/REPO_CONVERSION.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -784,7 +784,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/REPO_MAINTENANCE.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -794,7 +794,7 @@
"owner_skill": "ls-architecture",
"path": "ls/docs/SDK_FORK.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -804,7 +804,7 @@
"owner_skill": "",
"path": "ls/docs/SKILLS.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -814,7 +814,7 @@
"owner_skill": "ls-task-skill-matcher",
"path": "ls/docs/SKILLS_AND_RULES.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -824,7 +824,7 @@
"owner_skill": "ls-skill-discovery",
"path": "ls/docs/SKILL_DISCOVERY.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -834,7 +834,7 @@
"owner_skill": "ls-skill-importer",
"path": "ls/docs/SKILL_IMPORTING.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -844,7 +844,7 @@
"owner_skill": "ls-skill-creator",
"path": "ls/docs/SKILL_INTEROPERABILITY.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -854,7 +854,7 @@
"owner_skill": "ls-skill-normalizer",
"path": "ls/docs/SKILL_NORMALIZATION.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -864,7 +864,7 @@
"owner_skill": "ls-skill-vetter",
"path": "ls/docs/SKILL_VALIDATION_PATTERNS.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -874,7 +874,7 @@
"owner_skill": "ls-backblaze",
"path": "ls/docs/STORAGE_SKILLS.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -884,7 +884,7 @@
"owner_skill": "ls-task-skill-matcher",
"path": "ls/docs/TASK_SKILL_MATCHING.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -894,7 +894,7 @@
"owner_skill": "",
"path": "ls/docs/TMUX_TERMINAL_MODE.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -904,7 +904,7 @@
"owner_skill": "ls-script-and-docs-quality",
"path": "ls/docs/TOOLING_POLICY.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -914,7 +914,7 @@
"owner_skill": "ls-architecture",
"path": "ls/docs/TRUSTED_WORK_QUEUE.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -924,7 +924,7 @@
"owner_skill": "ls-automatic-versioning",
"path": "ls/docs/VERSIONING.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -934,7 +934,7 @@
"owner_skill": "ls-docs-organization",
"path": "ls/docs/WORKFLOW_PACKAGES.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -944,7 +944,7 @@
"owner_skill": "",
"path": "ls/docs/WORKFLOW_QUICK_REF.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -954,7 +954,7 @@
"owner_skill": "",
"path": "ls/docs/WORKFLOW_REGISTRY.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -964,7 +964,7 @@
"owner_skill": "",
"path": "ls/docs/WORKFLOW_SKILLS_REVIEW_BUILD_SPEC.md",
"status": "DEPRECATED",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -974,7 +974,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/WORKFLOW_STANDARD.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "generated",
@@ -984,7 +984,7 @@
"owner_skill": "",
"path": "ls/docs/_generated/docs-alignment-summary.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "generated",
@@ -1114,7 +1114,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/bootstrap-packs/INDEX.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1124,7 +1124,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/bootstrap-packs/codex-agent-team/AUDIT_PROMPT.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1134,7 +1134,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/bootstrap-packs/codex-agent-team/README.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1144,7 +1144,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/bootstrap-packs/opencode-agent-team/AUDIT_PROMPT.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1154,7 +1154,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/bootstrap-packs/opencode-agent-team/MODEL_MAP.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1164,7 +1164,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/bootstrap-packs/opencode-agent-team/README.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1184,7 +1184,7 @@
"owner_skill": "ls-framework-compliance",
"path": "ls/docs/migration/overview.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1194,7 +1194,7 @@
"owner_skill": "",
"path": "ls/docs/migration/skill-alias-map.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1204,7 +1204,7 @@
"owner_skill": "",
"path": "ls/docs/ops/tmux-ops-managed.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1214,7 +1214,7 @@
"owner_skill": "",
"path": "ls/docs/ops/tmux-ops-remote.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1262,19 +1262,9 @@
"managed_blocks": [],
"owner_package": "",
"owner_skill": "ls-github-publishing-workflow",
- "path": "ls/docs/releases/5.6.2.md",
- "status": "ACTIVE",
- "version": "5.6"
- },
- {
- "class": "framework",
- "has_frontmatter": true,
- "managed_blocks": [],
- "owner_package": "",
- "owner_skill": "ls-github-publishing-workflow",
- "path": "ls/docs/releases/5.7.0.md",
+ "path": "ls/docs/releases/4.44.1.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "framework",
@@ -1282,9 +1272,9 @@
"managed_blocks": [],
"owner_package": "",
"owner_skill": "ls-github-publishing-workflow",
- "path": "ls/docs/releases/5.7.1.md",
+ "path": "ls/docs/releases/5.6.2.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "5.6"
},
{
"class": "framework",
@@ -1294,7 +1284,7 @@
"owner_skill": "ls-scrapling",
"path": "ls/docs/scrapling-cheat-sheet.md",
"status": "ACTIVE",
- "version": "5.7"
+ "version": "4.44"
},
{
"class": "skill",
@@ -5771,16 +5761,16 @@
],
"provenance": {
"artifact_path": "ls/docs/_generated/docs-inventory.json",
- "artifact_sha256": "d5b5f6956f1caeb872c4ab477a8169abf3bd7587a50a25d5efe3d0866f583e16",
+ "artifact_sha256": "cad3c51d0114e98b5d7ffe96be361581ba25defe384826e3d23004e25bc3b07c",
"emitter": "docs-align",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"repo": ".",
"schema_version": "1.0",
diff --git a/ls/docs/_generated/docs-truth-map.json b/ls/docs/_generated/docs-truth-map.json
index efde4bb02..7f0697e83 100644
--- a/ls/docs/_generated/docs-truth-map.json
+++ b/ls/docs/_generated/docs-truth-map.json
@@ -1,6 +1,6 @@
{
"generated_facts": {
- "major_minor": "5.7",
+ "major_minor": "4.44",
"platform_count": 20,
"platforms": [
{
@@ -126,16 +126,16 @@
],
"provenance": {
"artifact_path": "ls/docs/_generated/facts.json",
- "artifact_sha256": "7db4cf574ce471b0885f78a52e2d259c48cc4a6977c7385026029ba55fe6eb23",
+ "artifact_sha256": "b74ae5d07fb267da460321e18519adee2624316f012860007f9d4db66c941321",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"skill_count": 105,
"skills": [
@@ -1879,7 +1879,7 @@
"version": "1.0"
}
],
- "version": "5.7.1",
+ "version": "4.44.1",
"workflow_count": 18,
"workflows": [
{
@@ -2007,14 +2007,14 @@
"artifact_path": "ls/docs/_generated/skill-taxonomy.json",
"artifact_sha256": "6dbaf28f6a3169d873c87830a966e298aba185cb24fa376de49f7c60d04288a9",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"schema_version": 1,
"skills": [
@@ -3551,16 +3551,16 @@
},
"provenance": {
"artifact_path": "ls/docs/_generated/docs-truth-map.json",
- "artifact_sha256": "2e2ddccfdb9f5dc0e1b68f2734c1ffbdc7feef36729257df0c871ab075d94a7b",
+ "artifact_sha256": "3211b230a8ec0ce0f3af2f0a18cd68097afcf8a7fc21d2de2ef240c618041746",
"emitter": "docs-align",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"schema_version": "1.0",
"truths": {
@@ -3977,17 +3977,12 @@
{
"owner_package": "",
"owner_skill": "ls-github-publishing-workflow",
- "path": "ls/docs/releases/5.6.2.md"
- },
- {
- "owner_package": "",
- "owner_skill": "ls-github-publishing-workflow",
- "path": "ls/docs/releases/5.7.0.md"
+ "path": "ls/docs/releases/4.44.1.md"
},
{
"owner_package": "",
"owner_skill": "ls-github-publishing-workflow",
- "path": "ls/docs/releases/5.7.1.md"
+ "path": "ls/docs/releases/5.6.2.md"
},
{
"owner_package": "",
@@ -4000,7 +3995,7 @@
"sources": [
"VERSION"
],
- "value": "5.7"
+ "value": "4.44"
},
"platform_count": {
"sources": [
@@ -5566,14 +5561,14 @@
}
},
"version": {
- "facts_version": "5.7.1",
- "pyproject_version": "5.7.1",
+ "facts_version": "4.44.1",
+ "pyproject_version": "4.44.1",
"sources": [
"VERSION",
"pyproject.toml",
"ls/docs/_generated/facts.json"
],
- "value": "5.7.1"
+ "value": "4.44.1"
},
"workflow_catalog": {
"sources": [
diff --git a/ls/docs/_generated/facts.json b/ls/docs/_generated/facts.json
index 83c1420f7..70353d967 100644
--- a/ls/docs/_generated/facts.json
+++ b/ls/docs/_generated/facts.json
@@ -1,5 +1,5 @@
{
- "major_minor": "5.7",
+ "major_minor": "4.44",
"platform_count": 20,
"platforms": [
{
@@ -125,16 +125,16 @@
],
"provenance": {
"artifact_path": "ls/docs/_generated/facts.json",
- "artifact_sha256": "7db4cf574ce471b0885f78a52e2d259c48cc4a6977c7385026029ba55fe6eb23",
+ "artifact_sha256": "b74ae5d07fb267da460321e18519adee2624316f012860007f9d4db66c941321",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"skill_count": 105,
"skills": [
@@ -1878,7 +1878,7 @@
"version": "1.0"
}
],
- "version": "5.7.1",
+ "version": "4.44.1",
"workflow_count": 18,
"workflows": [
{
diff --git a/ls/docs/_generated/implementation-file-map.md b/ls/docs/_generated/implementation-file-map.md
index 48e7129ae..c459e1420 100644
--- a/ls/docs/_generated/implementation-file-map.md
+++ b/ls/docs/_generated/implementation-file-map.md
@@ -1,11 +1,11 @@
---
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: generate-docs
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
-artifact_sha256: f5e57580eeccac6efab97eddc72f2a5009642247e0ffd06d48951b7fc8d5c7c0
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
+artifact_sha256: f235c33615073240073cdd7aae9cd7e16f174a8e1d1b8b264343fe2b247c39d5
---
# Implementation File Map
@@ -589,12 +589,10 @@ artifact_sha256: f5e57580eeccac6efab97eddc72f2a5009642247e0ffd06d48951b7fc8d5c7c
| `keep` | `ls/docs/releases/4.25.0.json` |
| `keep` | `ls/docs/releases/4.25.0.md` |
| `keep` | `ls/docs/releases/4.4.0.md` |
+| `keep` | `ls/docs/releases/4.44.1.json` |
+| `keep` | `ls/docs/releases/4.44.1.md` |
| `keep` | `ls/docs/releases/5.6.2.json` |
| `keep` | `ls/docs/releases/5.6.2.md` |
-| `keep` | `ls/docs/releases/5.7.0.json` |
-| `keep` | `ls/docs/releases/5.7.0.md` |
-| `keep` | `ls/docs/releases/5.7.1.json` |
-| `keep` | `ls/docs/releases/5.7.1.md` |
| `keep` | `ls/docs/scrapling-cheat-sheet.md` |
| `keep` | `ls/lib/data_paths.sh` |
| `keep` | `ls/lib/deps.py` |
diff --git a/ls/docs/_generated/platform-adapters.md b/ls/docs/_generated/platform-adapters.md
index 6947c027a..937dedcb9 100644
--- a/ls/docs/_generated/platform-adapters.md
+++ b/ls/docs/_generated/platform-adapters.md
@@ -1,10 +1,10 @@
---
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: generate-docs
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
artifact_sha256: 5ce4949227d75f75f72c4ce822e3c0e7958e57a16acf1fdc16a050a35da5d212
---
# Platform Adapters
diff --git a/ls/docs/_generated/plugin-packs.json b/ls/docs/_generated/plugin-packs.json
index 7d9326736..64fd559eb 100644
--- a/ls/docs/_generated/plugin-packs.json
+++ b/ls/docs/_generated/plugin-packs.json
@@ -384,14 +384,14 @@
"artifact_path": "ls/docs/_generated/plugin-packs.json",
"artifact_sha256": "10694f65c9b3a5ec0b56c979b22c85c6ef175b19cb7ae8e109c32047db071763",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"schema_version": 1
}
diff --git a/ls/docs/_generated/plugin-packs.md b/ls/docs/_generated/plugin-packs.md
index 3ad86f2b0..47560dab7 100644
--- a/ls/docs/_generated/plugin-packs.md
+++ b/ls/docs/_generated/plugin-packs.md
@@ -1,10 +1,10 @@
---
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: generate-docs
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
artifact_sha256: e02a483284c21311b7766cc75341dc0cb10a976eae377fd1ee429ba8c33b7800
---
# Plugin Packs
diff --git a/ls/docs/_generated/skill-packs.md b/ls/docs/_generated/skill-packs.md
index e3a358aa0..b5a8a7a8b 100644
--- a/ls/docs/_generated/skill-packs.md
+++ b/ls/docs/_generated/skill-packs.md
@@ -1,10 +1,10 @@
---
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: generate-docs
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
artifact_sha256: 7d82d4aff296de701c4b807383efd1a29c91da98d571fc81f31c8f544d3d7e04
---
# Skill And Workflow Packs
diff --git a/ls/docs/_generated/skill-taxonomy.json b/ls/docs/_generated/skill-taxonomy.json
index 99b9a5ec5..d097e15d2 100644
--- a/ls/docs/_generated/skill-taxonomy.json
+++ b/ls/docs/_generated/skill-taxonomy.json
@@ -13,14 +13,14 @@
"artifact_path": "ls/docs/_generated/skill-taxonomy.json",
"artifact_sha256": "6dbaf28f6a3169d873c87830a966e298aba185cb24fa376de49f7c60d04288a9",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"schema_version": 1,
"skills": [
diff --git a/ls/docs/_generated/skill_aliases.json b/ls/docs/_generated/skill_aliases.json
index 9446b0e63..f2b8e93e4 100644
--- a/ls/docs/_generated/skill_aliases.json
+++ b/ls/docs/_generated/skill_aliases.json
@@ -108,13 +108,13 @@
"artifact_path": "ls/docs/_generated/skill_aliases.json",
"artifact_sha256": "1722c982e3a57fba80937413be0cc2d4de4590e41b2b8d6a7f55d99bf0b9eaab",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
}
}
diff --git a/ls/docs/_generated/workflow-catalog.json b/ls/docs/_generated/workflow-catalog.json
index dfc7bcdd3..02c646e10 100644
--- a/ls/docs/_generated/workflow-catalog.json
+++ b/ls/docs/_generated/workflow-catalog.json
@@ -4,14 +4,14 @@
"artifact_path": "ls/docs/_generated/workflow-catalog.json",
"artifact_sha256": "975b246dd410e6393fcd601f10bbad641470355afac42c64e00252a1c7bb7425",
"emitter": "generate-docs",
- "framework_version": "5.7.1",
+ "framework_version": "4.44.1",
"schema_version": 1,
- "source_commit": "8e8859a8480f841717806d162a7ad1a20185776d",
- "source_dirty": false,
- "source_provenance_hash": "2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef",
- "source_root_id": "3eaa8dc61a8db78027e7123ace2094e58fea390bf40fd069fee59084a9d03e40",
+ "source_commit": "cfb0f683ca9fea0b0c2c7b965089cbb39d43caea",
+ "source_dirty": true,
+ "source_provenance_hash": "2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8",
+ "source_root_id": "adb281028dcf9f0f222028796ee6295798b6d653b4d21398894db0bcfbb6e9df",
"source_tag": null,
- "source_tree_sha": "0e218b314712e9c230cbfa183c02997441fc3745"
+ "source_tree_sha": "ba8581ca514929546b7f03d8cd2b7f2a5a17fc9a"
},
"workflows": [
{
diff --git a/ls/docs/bootstrap-packs/INDEX.md b/ls/docs/bootstrap-packs/INDEX.md
index d2237cfb9..016b36aca 100644
--- a/ls/docs/bootstrap-packs/INDEX.md
+++ b/ls/docs/bootstrap-packs/INDEX.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/bootstrap-packs/codex-agent-team/AUDIT_PROMPT.md b/ls/docs/bootstrap-packs/codex-agent-team/AUDIT_PROMPT.md
index c77bb907e..a8c577a54 100644
--- a/ls/docs/bootstrap-packs/codex-agent-team/AUDIT_PROMPT.md
+++ b/ls/docs/bootstrap-packs/codex-agent-team/AUDIT_PROMPT.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/bootstrap-packs/codex-agent-team/README.md b/ls/docs/bootstrap-packs/codex-agent-team/README.md
index b887ba847..c2091ad05 100644
--- a/ls/docs/bootstrap-packs/codex-agent-team/README.md
+++ b/ls/docs/bootstrap-packs/codex-agent-team/README.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/bootstrap-packs/opencode-agent-team/AUDIT_PROMPT.md b/ls/docs/bootstrap-packs/opencode-agent-team/AUDIT_PROMPT.md
index 0b741ad0c..11e6e33a0 100644
--- a/ls/docs/bootstrap-packs/opencode-agent-team/AUDIT_PROMPT.md
+++ b/ls/docs/bootstrap-packs/opencode-agent-team/AUDIT_PROMPT.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/bootstrap-packs/opencode-agent-team/MODEL_MAP.md b/ls/docs/bootstrap-packs/opencode-agent-team/MODEL_MAP.md
index 89da0a3bf..76b3b9ffe 100644
--- a/ls/docs/bootstrap-packs/opencode-agent-team/MODEL_MAP.md
+++ b/ls/docs/bootstrap-packs/opencode-agent-team/MODEL_MAP.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/bootstrap-packs/opencode-agent-team/README.md b/ls/docs/bootstrap-packs/opencode-agent-team/README.md
index aab48be37..2923a959b 100644
--- a/ls/docs/bootstrap-packs/opencode-agent-team/README.md
+++ b/ls/docs/bootstrap-packs/opencode-agent-team/README.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/migration/overview.md b/ls/docs/migration/overview.md
index c7515f115..c94b225f0 100644
--- a/ls/docs/migration/overview.md
+++ b/ls/docs/migration/overview.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-framework-compliance
---
diff --git a/ls/docs/migration/skill-alias-map.md b/ls/docs/migration/skill-alias-map.md
index 73efdfae5..2aa6c642c 100644
--- a/ls/docs/migration/skill-alias-map.md
+++ b/ls/docs/migration/skill-alias-map.md
@@ -1,14 +1,14 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: generate-docs
localsetup_provenance:
schema_version: 1
- source_provenance_hash: 2fa4f67a78e7c263494075386d3865c0d60c86a839727a7ec48a13aa5b10c3ef
+ source_provenance_hash: 2d1c85b74c29b27750a66ecac8106cff3bfe355a0459c12b81bf3e8deec4fbb8
emitter: generate-docs
-framework_version: 5.7.1
-source_commit: 8e8859a8480f841717806d162a7ad1a20185776d
-artifact_sha256: 7555ea774417ccfacfb2b6c66f3cf7488787788131ca57e75680795b46669590
+framework_version: 4.44.1
+source_commit: cfb0f683ca9fea0b0c2c7b965089cbb39d43caea
+artifact_sha256: feec8f322054829e48dfa4b1c0d2c3d532cabbdd153a4a50b45babe566e30595
---
# Skill Alias Map
diff --git a/ls/docs/ops/tmux-ops-managed.md b/ls/docs/ops/tmux-ops-managed.md
index 570f942e5..f3d8a0969 100644
--- a/ls/docs/ops/tmux-ops-managed.md
+++ b/ls/docs/ops/tmux-ops-managed.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: ls-workflow-ops-tmux-session
---
diff --git a/ls/docs/ops/tmux-ops-remote.md b/ls/docs/ops/tmux-ops-remote.md
index 4c723308f..32e89404b 100644
--- a/ls/docs/ops/tmux-ops-remote.md
+++ b/ls/docs/ops/tmux-ops-remote.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_package: ls-workflow-ops-tmux-session
---
diff --git a/ls/docs/releases/4.44.1.json b/ls/docs/releases/4.44.1.json
new file mode 100644
index 000000000..1d51de360
--- /dev/null
+++ b/ls/docs/releases/4.44.1.json
@@ -0,0 +1,37 @@
+{
+ "schema_version": 1,
+ "version": "4.44.1",
+ "source_commit": "858fcfa37c4ca3a76fab88b982147154efd3b52a",
+ "baseline_tag": "v5.6.2",
+ "summary": "LocalSetup 4.44.1 corrects the active release sequence to the authorized 4.x line and combines the approved GitHub visual identity, canonical repository spelling, and a safe installer fallback for mixed-major release tags. The published v5.6.2 tag and assets remain unchanged.",
+ "highlights": [
+ {
+ "text": "**Corrected 4.x release line:** The verified history maps v5.6.2 content to corrected arithmetic 4.43.2, the branding feature to 4.44.0, and canonical repository-name policy to 4.44.1. The policy blocks MAJOR increments while the 4.x lock is active.",
+ "evidence": [".localsetup-release.json", "ls/docs/VERSIONING.md", "AGENTS.md"]
+ },
+ {
+ "text": "**Theme-aware LocalSetup graphics:** The README hero, architecture diagram, and install-flow diagram use matching light and dark artwork with the approved mark, palette, and typography. The pinned renderer, JetBrains Mono files, source tokens, and font license make the exports reproducible.",
+ "evidence": ["README.md", "ls/docs/MULTI_PLATFORM_INSTALL.md", "assets/localsetup-readme-hero-dark.png", "ls/tools/render_brand_graphics.py", "assets/brand/font-lock.json", "assets/brand/fonts/OFL.txt"]
+ },
+ {
+ "text": "**Canonical name and release discovery:** Public repository policy uses `LocalSetup` spelling while retaining established commands and URLs. If release API lookup fails and stable tags span multiple major versions, the installer asks for `LOCALSETUP_BOOTSTRAP_REF` instead of guessing from numeric order.",
+ "evidence": ["AGENTS.md", "install", "ls/docs/QUICKSTART.md", "ls/docs/MULTI_PLATFORM_INSTALL.md"]
+ }
+ ],
+ "compatibility": [
+ "The v5.6.2 and v4.22.9 published tags and release assets are preserved. No v5.7.0 or v5.7.1 release tag or download was published; those draft records are superseded by this corrected release line.",
+ "The SDK `read_file` paging contract and Agent Q registry-v2/signed-envelope changes introduced in v5.6.2 remain in effect. Correcting the version number does not restore compatibility; integrations must follow the v5.6.2 migration guidance.",
+ "The framework command and Python distribution remain `localsetup`; the integrated CLI remains `lscli`. Existing repository URL paths, adapter identifiers, and installation paths remain compatible.",
+ "When GitHub release API lookup is unavailable, same-major stable-tag fallback remains available. Mixed-major tag sets require an explicit `LOCALSETUP_BOOTSTRAP_REF`; a clean existing managed source can still be reused under the documented installer behavior."
+ ],
+ "update": [
+ "Update a registered installation using the [quickstart instructions](https://github.com/CruxExperts/localsetup/blob/v4.44.1/ls/docs/QUICKSTART.md#update).",
+ "For managed bootstrap, set `LOCALSETUP_BOOTSTRAP_REF` only when you intentionally want a specific branch, tag, or commit. See the [multi-platform installation guide](https://github.com/CruxExperts/localsetup/blob/v4.44.1/ls/docs/MULTI_PLATFORM_INSTALL.md).",
+ "Use the [branding guide](https://github.com/CruxExperts/localsetup/blob/v4.44.1/ls/docs/BRANDING.md) and pinned renderer to maintain the README graphics. AstroSite remains a separate project that should follow the documented visual contract."
+ ],
+ "verification": [
+ "Download `localsetup-v4.44.1.tar.gz`, its `.sha256` checksum, and `.cdx.json` SBOM sidecar together. Follow the [release guide verification steps](https://github.com/CruxExperts/localsetup/blob/v4.44.1/ls/docs/releases/4.44.1.md#verify-the-download) and run `verify-release` against the archive; confirm that the signed `v4.44.1` tag points to the published release commit.",
+ "Before release, verify all six documentation graphics against the pinned renderer, font hashes and license; inspect both GitHub color themes; validate release notes and generated-doc receipts; and run the focused branding, installer, versioning, and documentation tests plus the full Python suite.",
+ "The 4.x release lock permits MINOR and PATCH increments only. Version-plan must show v4.44.1 for this release and reject any prospective MAJOR classification while the lock remains active."
+ ]
+}
diff --git a/ls/docs/releases/4.44.1.md b/ls/docs/releases/4.44.1.md
new file mode 100644
index 000000000..4884b669b
--- /dev/null
+++ b/ls/docs/releases/4.44.1.md
@@ -0,0 +1,51 @@
+---
+status: ACTIVE
+version: 4.44
+owner_skill: ls-github-publishing-workflow
+---
+
+# LocalSetup 4.44.1
+
+LocalSetup 4.44.1 corrects the active release sequence to the authorized 4.x line and combines the approved GitHub visual identity, canonical repository spelling, and a safe installer fallback for mixed-major release tags. The published v5.6.2 tag and assets remain unchanged.
+
+## Highlights
+
+- **Corrected 4.x release line:** The verified history maps v5.6.2 content to corrected arithmetic 4.43.2, the branding feature to 4.44.0, and canonical repository-name policy to 4.44.1. The policy blocks MAJOR increments while the 4.x lock is active.
+- **Theme-aware LocalSetup graphics:** The README hero, architecture diagram, and install-flow diagram use matching light and dark artwork with the approved mark, palette, and typography. The pinned renderer, JetBrains Mono files, source tokens, and font license make the exports reproducible.
+- **Canonical name and release discovery:** Public repository policy uses `LocalSetup` spelling while retaining established commands and URLs. If release API lookup fails and stable tags span multiple major versions, the installer asks for `LOCALSETUP_BOOTSTRAP_REF` instead of guessing from numeric order.
+
+After publication, see the [release and downloads](https://github.com/CruxExperts/localsetup/releases/tag/v4.44.1) for release assets.
+
+## Compatibility
+
+The v5.6.2 and v4.22.9 published tags and release assets are preserved. No v5.7.0 or v5.7.1 release tag or download was published; those draft records are superseded by this corrected release line.
+
+The SDK `read_file` paging contract and Agent Q registry-v2/signed-envelope changes introduced in v5.6.2 remain in effect. Correcting the version number does not restore compatibility; integrations must follow the v5.6.2 migration guidance.
+
+The framework command and Python distribution remain `localsetup`; the integrated CLI remains `lscli`. Existing repository URL paths, adapter identifiers, and installation paths remain compatible.
+
+When GitHub release API lookup is unavailable, same-major stable-tag fallback remains available. Mixed-major tag sets require an explicit `LOCALSETUP_BOOTSTRAP_REF`; a clean existing managed source can still be reused under the documented installer behavior.
+
+## Update
+
+Update a registered installation using the [quickstart instructions](https://github.com/CruxExperts/localsetup/blob/v4.44.1/ls/docs/QUICKSTART.md#update).
+
+For managed bootstrap, set `LOCALSETUP_BOOTSTRAP_REF` only when you intentionally want a specific branch, tag, or commit. See the [multi-platform installation guide](https://github.com/CruxExperts/localsetup/blob/v4.44.1/ls/docs/MULTI_PLATFORM_INSTALL.md).
+
+Use the [branding guide](https://github.com/CruxExperts/localsetup/blob/v4.44.1/ls/docs/BRANDING.md) and pinned renderer to maintain the README graphics. AstroSite remains a separate project that should follow the documented visual contract.
+
+For installation and source refresh, read the [quickstart update instructions](../QUICKSTART.md#update). Adapter changes follow the [adapter ownership guide](../ADAPTER_OWNERSHIP.md).
+
+## Verify the download
+
+Download `localsetup-v4.44.1.tar.gz`, its `.sha256` checksum, and `.cdx.json` SBOM sidecar together. Follow the [release guide verification steps](https://github.com/CruxExperts/localsetup/blob/v4.44.1/ls/docs/releases/4.44.1.md#verify-the-download) and run `verify-release` against the archive; confirm that the signed `v4.44.1` tag points to the published release commit.
+
+Before release, verify all six documentation graphics against the pinned renderer, font hashes and license; inspect both GitHub color themes; validate release notes and generated-doc receipts; and run the focused branding, installer, versioning, and documentation tests plus the full Python suite.
+
+The 4.x release lock permits MINOR and PATCH increments only. Version-plan must show v4.44.1 for this release and reject any prospective MAJOR classification while the lock remains active.
+
+Download the framework archive with both its `.sha256` checksum and `.cdx.json` SBOM sidecars. Keep all three files in the same directory before running `verify-release`.
+
+```bash
+uv run --locked python ls/tools/localsetup.py --source-root . verify-release /path/to/localsetup-v4.44.1.tar.gz
+```
diff --git a/ls/docs/releases/5.7.0.json b/ls/docs/releases/5.7.0.json
deleted file mode 100644
index 8079c5e0e..000000000
--- a/ls/docs/releases/5.7.0.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "schema_version": 1,
- "version": "5.7.0",
- "source_commit": "9a582770215b4322ac4e2b176ea5a2d4bb9012e4",
- "baseline_tag": "v5.6.2",
- "summary": "LocalSetup 5.7.0 gives its GitHub documentation a consistent light and dark visual identity. The README hero and current architecture and installation diagrams use the approved LocalSetup palette, mark, and typography while retaining their technical content and accessible descriptions.",
- "highlights": [
- {
- "text": "**Theme-aware graphics:** The README hero, architecture diagram, and installation flow each have light and dark images selected by GitHub's color scheme. Existing light image paths remain valid.",
- "evidence": ["README.md", "ls/docs/MULTI_PLATFORM_INSTALL.md", "assets/localsetup-readme-hero-dark.png"]
- },
- {
- "text": "**Reproducible brand assets:** The graphics renderer uses approved tokens and pinned JetBrains Mono v2.304 Regular and SemiBold files. The original font license and hashes are recorded with the source.",
- "evidence": ["ls/tools/render_brand_graphics.py", "assets/brand/tokens.json", "assets/brand/font-lock.json", "assets/brand/fonts/OFL.txt"]
- },
- {
- "text": "**Asset inventory and brand contract:** Documentation checks recognize images in picture sources, and the brand guide records the visual rules and future AstroSite handoff. Nerd Font glyphs remain an optional site profile.",
- "evidence": ["ls/core/docs_alignment/assets.py", "ls/core/docs_alignment/io.py", "ls/docs/BRANDING.md"]
- }
- ],
- "compatibility": [
- "The framework command and Python distribution remain `localsetup`; the integrated CLI remains `lscli`. No installation or runtime command changes are required for this visual update.",
- "Existing light image filenames remain available for links and renderers that do not support theme selection. Historical release artwork is unchanged."
- ],
- "update": [
- "Update a registered installation using the [quickstart instructions](https://github.com/CruxExperts/localsetup/blob/v5.7.0/ls/docs/QUICKSTART.md#update). The branding changes are visible in the repository documentation and do not require a configuration migration.",
- "For graphics maintenance, use the [branding guide](https://github.com/CruxExperts/localsetup/blob/v5.7.0/ls/docs/BRANDING.md) and the pinned renderer. Keep the separate AstroSite implementation aligned with the documented visual contract."
- ],
- "verification": [
- "Download `localsetup-v5.7.0.tar.gz`, `localsetup-v5.7.0.tar.gz.sha256`, and `localsetup-v5.7.0.tar.gz.cdx.json` together. Follow the [release guide verification steps](https://github.com/CruxExperts/localsetup/blob/v5.7.0/ls/docs/releases/5.7.0.md#verify-the-download) to run `verify-release` and confirm the signed `v5.7.0` tag points to the release commit.",
- "Maintainers check the six graphics against the pinned renderer, validate archive and font hashes and licensing, inspect both GitHub color themes, and run the documentation and Python checks before publishing.",
- "The GitHub repository description and social preview are presentation settings; the social image source remains in private maintenance state and is not part of the release archive."
- ]
-}
diff --git a/ls/docs/releases/5.7.0.md b/ls/docs/releases/5.7.0.md
deleted file mode 100644
index 4a22db924..000000000
--- a/ls/docs/releases/5.7.0.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-status: ACTIVE
-version: 5.7
-owner_skill: ls-github-publishing-workflow
----
-
-# LocalSetup 5.7.0
-
-LocalSetup 5.7.0 gives its GitHub documentation a consistent light and dark visual identity. The README hero and current architecture and installation diagrams use the approved LocalSetup palette, mark, and typography while retaining their technical content and accessible descriptions.
-
-## Highlights
-
-- **Theme-aware graphics:** The README hero, architecture diagram, and installation flow each have light and dark images selected by GitHub's color scheme. Existing light image paths remain valid.
-- **Reproducible brand assets:** The graphics renderer uses approved tokens and pinned JetBrains Mono v2.304 Regular and SemiBold files. The original font license and hashes are recorded with the source.
-- **Asset inventory and brand contract:** Documentation checks recognize images in picture sources, and the brand guide records the visual rules and future AstroSite handoff. Nerd Font glyphs remain an optional site profile.
-
-After publication, see the [release and downloads](https://github.com/CruxExperts/localsetup/releases/tag/v5.7.0) for release assets.
-
-## Compatibility
-
-The framework command and Python distribution remain `localsetup`; the integrated CLI remains `lscli`. No installation or runtime command changes are required for this visual update.
-
-Existing light image filenames remain available for links and renderers that do not support theme selection. Historical release artwork is unchanged.
-
-## Update
-
-Update a registered installation using the [quickstart instructions](https://github.com/CruxExperts/localsetup/blob/v5.7.0/ls/docs/QUICKSTART.md#update). The branding changes are visible in the repository documentation and do not require a configuration migration.
-
-For graphics maintenance, use the [branding guide](https://github.com/CruxExperts/localsetup/blob/v5.7.0/ls/docs/BRANDING.md) and the pinned renderer. Keep the separate AstroSite implementation aligned with the documented visual contract.
-
-For installation and source refresh, read the [quickstart update instructions](../QUICKSTART.md#update). Adapter changes follow the [adapter ownership guide](../ADAPTER_OWNERSHIP.md).
-
-## Verify the download
-
-Download `localsetup-v5.7.0.tar.gz`, `localsetup-v5.7.0.tar.gz.sha256`, and `localsetup-v5.7.0.tar.gz.cdx.json` together. Follow the [release guide verification steps](https://github.com/CruxExperts/localsetup/blob/v5.7.0/ls/docs/releases/5.7.0.md#verify-the-download) to run `verify-release` and confirm the signed `v5.7.0` tag points to the release commit.
-
-Maintainers check the six graphics against the pinned renderer, validate archive and font hashes and licensing, inspect both GitHub color themes, and run the documentation and Python checks before publishing.
-
-The GitHub repository description and social preview are presentation settings; the social image source remains in private maintenance state and is not part of the release archive.
-
-Download the framework archive with both its `.sha256` checksum and `.cdx.json` SBOM sidecars. Keep all three files in the same directory before running `verify-release`.
-
-```bash
-uv run --locked python ls/tools/localsetup.py --source-root . verify-release /path/to/localsetup-v5.7.0.tar.gz
-```
diff --git a/ls/docs/releases/5.7.1.json b/ls/docs/releases/5.7.1.json
deleted file mode 100644
index 68b9c0428..000000000
--- a/ls/docs/releases/5.7.1.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "schema_version": 1,
- "version": "5.7.1",
- "source_commit": "a7422c4cce1d8ce8671b86e00529ee0a288927e5",
- "baseline_tag": "v5.6.2",
- "summary": "LocalSetup 5.7.1 gives its GitHub documentation a consistent light and dark visual identity and clarifies the canonical repository name as CruxExperts/LocalSetup. The README hero and current architecture and installation diagrams use approved LocalSetup branding, with reproducible rendering and accessible descriptions.",
- "highlights": [
- {
- "text": "**Theme-aware graphics:** The README hero, architecture diagram, and installation flow each have light and dark images selected by GitHub's color scheme. Existing light image paths remain valid.",
- "evidence": ["README.md", "ls/docs/MULTI_PLATFORM_INSTALL.md", "assets/localsetup-readme-hero-dark.png"]
- },
- {
- "text": "**Reproducible brand assets:** The graphics renderer uses approved tokens and pinned JetBrains Mono v2.304 Regular and SemiBold files. The original font license and hashes are recorded with the source.",
- "evidence": ["ls/tools/render_brand_graphics.py", "assets/brand/tokens.json", "assets/brand/font-lock.json", "assets/brand/fonts/OFL.txt"]
- },
- {
- "text": "**Asset inventory and brand contract:** Documentation checks recognize images in picture sources, and the brand guide records the visual rules and future AstroSite handoff. Nerd Font glyphs remain an optional site profile.",
- "evidence": ["ls/core/docs_alignment/assets.py", "ls/core/docs_alignment/io.py", "ls/docs/BRANDING.md"]
- },
- {
- "text": "**Canonical repository spelling:** The maintainer policy identifies `CruxExperts/LocalSetup` as the GitHub repository name and preserves existing repository URL paths and compatibility identifiers.",
- "evidence": ["AGENTS.md"]
- }
- ],
- "compatibility": [
- "Existing repository URL paths, the framework command, and the Python distribution keep their established spelling.",
- "This documentation clarification requires no installation or configuration migration."
- ],
- "update": [
- "Update a registered installation using the [quickstart instructions](https://github.com/CruxExperts/localsetup/blob/v5.7.1/ls/docs/QUICKSTART.md#update)."
- ],
- "verification": [
- "Download `localsetup-v5.7.1.tar.gz`, its `.sha256` checksum, and `.cdx.json` SBOM sidecar together. Follow the [release guide verification steps](https://github.com/CruxExperts/localsetup/blob/v5.7.1/ls/docs/releases/5.7.1.md#verify-the-download) to run `verify-release` and confirm the signed `v5.7.1` tag points to the release commit.",
- "Before publishing, inspect both theme variants of the current graphics, check the pinned renderer and font hashes and license, and run the documentation and Python checks.",
- "No runtime or installer behavior changes in this documentation update."
- ]
-}
diff --git a/ls/docs/releases/5.7.1.md b/ls/docs/releases/5.7.1.md
deleted file mode 100644
index 5c6288c15..000000000
--- a/ls/docs/releases/5.7.1.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-status: ACTIVE
-version: 5.7
-owner_skill: ls-github-publishing-workflow
----
-
-# LocalSetup 5.7.1
-
-LocalSetup 5.7.1 gives its GitHub documentation a consistent light and dark visual identity and clarifies the canonical repository name as CruxExperts/LocalSetup. The README hero and current architecture and installation diagrams use approved LocalSetup branding, with reproducible rendering and accessible descriptions.
-
-## Highlights
-
-- **Theme-aware graphics:** The README hero, architecture diagram, and installation flow each have light and dark images selected by GitHub's color scheme. Existing light image paths remain valid.
-- **Reproducible brand assets:** The graphics renderer uses approved tokens and pinned JetBrains Mono v2.304 Regular and SemiBold files. The original font license and hashes are recorded with the source.
-- **Asset inventory and brand contract:** Documentation checks recognize images in picture sources, and the brand guide records the visual rules and future AstroSite handoff. Nerd Font glyphs remain an optional site profile.
-- **Canonical repository spelling:** The maintainer policy identifies `CruxExperts/LocalSetup` as the GitHub repository name and preserves existing repository URL paths and compatibility identifiers.
-
-After publication, see the [release and downloads](https://github.com/CruxExperts/localsetup/releases/tag/v5.7.1) for release assets.
-
-## Compatibility
-
-Existing repository URL paths, the framework command, and the Python distribution keep their established spelling.
-
-This documentation clarification requires no installation or configuration migration.
-
-## Update
-
-Update a registered installation using the [quickstart instructions](https://github.com/CruxExperts/localsetup/blob/v5.7.1/ls/docs/QUICKSTART.md#update).
-
-For installation and source refresh, read the [quickstart update instructions](../QUICKSTART.md#update). Adapter changes follow the [adapter ownership guide](../ADAPTER_OWNERSHIP.md).
-
-## Verify the download
-
-Download `localsetup-v5.7.1.tar.gz`, its `.sha256` checksum, and `.cdx.json` SBOM sidecar together. Follow the [release guide verification steps](https://github.com/CruxExperts/localsetup/blob/v5.7.1/ls/docs/releases/5.7.1.md#verify-the-download) to run `verify-release` and confirm the signed `v5.7.1` tag points to the release commit.
-
-Before publishing, inspect both theme variants of the current graphics, check the pinned renderer and font hashes and license, and run the documentation and Python checks.
-
-No runtime or installer behavior changes in this documentation update.
-
-Download the framework archive with both its `.sha256` checksum and `.cdx.json` SBOM sidecars. Keep all three files in the same directory before running `verify-release`.
-
-```bash
-uv run --locked python ls/tools/localsetup.py --source-root . verify-release /path/to/localsetup-v5.7.1.tar.gz
-```
diff --git a/ls/docs/scrapling-cheat-sheet.md b/ls/docs/scrapling-cheat-sheet.md
index adcf706a4..af73e0093 100644
--- a/ls/docs/scrapling-cheat-sheet.md
+++ b/ls/docs/scrapling-cheat-sheet.md
@@ -1,6 +1,6 @@
---
status: ACTIVE
-version: 5.7
+version: 4.44
owner_skill: ls-scrapling
---
diff --git a/ls/skills/ls-automatic-versioning/SKILL.md b/ls/skills/ls-automatic-versioning/SKILL.md
index 3a0887d44..3db048ffc 100644
--- a/ls/skills/ls-automatic-versioning/SKILL.md
+++ b/ls/skills/ls-automatic-versioning/SKILL.md
@@ -31,9 +31,20 @@ Python callers can explicitly select sequential mode when unconfigured; they
cannot override a conflicting committed contract. Loose worktree policy changes
do not activate, replace or disable the selected commit's policy.
-Use the [release policy schema](../../config/release-policy.schema.json):
-`schema_version: 1`, `policy: "sequential-logical-slices"`, an `anchor` containing
-full commit SHA, canonical version and matching version tag, and `overrides`.
+Use the [release policy schema](../../config/release-policy.schema.json).
+Schema 1 contains `schema_version: 1`, `policy: "sequential-logical-slices"`,
+an `anchor` containing full commit SHA, canonical version and matching version
+tag, and `overrides`. Schema 2 is the repository's one-time 4.x correction: it
+adds `major_line: 4` and exact `reconciliation` evidence for the original anchor,
+the immutable pre-correction release anchor, the source and corrected cutoff
+versions, and the breaking source SHAs reclassified from MAJOR to MINOR. Runtime
+validation binds tags to commits, replays historical sync checks and arithmetic,
+requires the committed cutoff and corrected version to match, and requires HEAD
+to be version-synced even when no new slice adds a bump. Until the corrected 4.x
+tag is published, arithmetic starts at the corrected cutoff; afterwards, it
+starts at the newly verified 4.x release anchor while retaining the historical
+reconciliation record and published baseline for release-document coverage.
+
The loader requires a regular committed blob of at most 64 KiB, exact fields and
types, and no duplicate keys or override SHAs. Each override has `commit`, `slice`
and `classification`; it identifies one unpublished source SHA and reviewed
@@ -50,7 +61,7 @@ repo-only file is export-excluded and must not be copied into converted projects
- Each accepted logical source slice increments once: `feat:` defaults to MINOR and resets PATCH; other source commits default to PATCH. `Release-Type:` declares explicit impact.
- `Release-Slice: lowercase-id` groups unpublished members. Otherwise each source SHA is distinct. The first integrated source member anchors the slice; its highest final member classification determines the single increment. An interleaved later feature member upgrades that original slice without moving it or counting it twice.
- Integration traverses first-parent history, then newly introduced side ancestry in recorded parent order, never author/committer dates.
-- Breaking markers require an explicit `Release-Type: major` compatibility decision. Lower/none overrides, duplicate or malformed metadata fail planning.
+- Breaking markers require an explicit `Release-Type: major` compatibility decision. Lower/none overrides, duplicate or malformed metadata fail planning. An active 4.x major-line lock also rejects major classifications; restore compatibility or stop release work until the lock is explicitly amended.
- Actual merges and generated-only receipts are excluded using changed-path/owned-facts evidence, not subject resemblance. Sync commits must change only canonical version/generated content.
- Each sync's recorded and committed version must match its own ancestry-prefix target; the latest sync and HEAD must match the final target. Incorrect historical syncs require explicit reviewed reconciliation, not automatic exemptions.
- Exact native Git reverts cancel fully reverted unpublished slices only when single-parent raw path/blob/mode changes prove the complete inverse. Mixed changes, conflict-adjusted reverts or later changes to the same affected file require explicit reconciliation; later unrelated files remain untouched. Partial grouped reverts, ambiguous targets and revert-of-revert histories require explicit reconciliation. Reverting published work is a new maintenance outcome.
@@ -59,6 +70,19 @@ repo-only file is export-excluded and must not be copied into converted projects
## In this repo (public framework)
+The corrected 4.x release line is explicitly major-locked. Only MINOR and PATCH
+increments are allowed while the lock is active; do not produce an automatic or
+implicit MAJOR increment. Reject prospective MAJOR classifications, including
+`Release-Type: major`, rather than silently downgrading them.
+
+This one-time numbering reconciliation leaves the published v5.6.2 tag and
+assets immutable and maps that content to corrected arithmetic 4.43.2 after the
+exact historical issue-100 MAJOR-to-MINOR reconciliation. Branding maps to
+4.44.0, and canonical repository-name policy maps to 4.44.1. The 4.44.1
+corrected release is not published or current yet. Its release guidance must
+clearly disclose the existing SDK paging and Agent Q v2/envelope compatibility
+breaks. Renumbering did not restore source or protocol compatibility.
+
Version bump and doc sync are performed by deterministic repo tooling. Use `uv run --locked python ls/tools/localsetup.py --source-root . release-push` for normal release pushes. Raw `git push` is guarded: if a sync commit is needed, `.githooks/pre-push` creates it and stops the stale push so the next push sends the correct commit.
For read-only release preflight, run `uv run --locked python ls/tools/localsetup.py --source-root . version-plan` and `uv run --locked python ls/tools/localsetup.py --source-root . version-sync --check --target "$(cat VERSION)"`.
diff --git a/ls/tests/test_install_flow_root_installer_bootstrap_a.py b/ls/tests/test_install_flow_root_installer_bootstrap_a.py
index d013c04a8..2bad3fef5 100644
--- a/ls/tests/test_install_flow_root_installer_bootstrap_a.py
+++ b/ls/tests/test_install_flow_root_installer_bootstrap_a.py
@@ -407,6 +407,35 @@ def test_root_installer_discovers_latest_stable_release_tag_for_managed_source(t
assert (home / ".local/share/localsetup/packages/ls-context").is_dir()
+def test_root_installer_refuses_numeric_tag_fallback_across_major_lines(tmp_path: Path) -> None:
+ install_path = Path(__file__).resolve().parents[2] / "install"
+ bootstrap_repo, _old_commit, current_commit = make_bootstrap_git_repo_with_release_tags(tmp_path / "bootstrap")
+ subprocess.run(["git", "tag", "v5.6.2", current_commit], cwd=bootstrap_repo, text=True, capture_output=True, check=True)
+ outside = tmp_path / "outside"
+ home = tmp_path / "home"
+ managed_source = tmp_path / "managed-source"
+ outside.mkdir()
+ env = {
+ **os.environ,
+ "LOCALSETUP_BOOTSTRAP_REPO": str(bootstrap_repo),
+ "LOCALSETUP_BOOTSTRAP_SOURCE_DIR": str(managed_source),
+ }
+
+ completed = subprocess.run(
+ [str(install_path), "--non-interactive", "--yes", "--home", str(home), "--no-register-shell"],
+ cwd=outside,
+ env=env,
+ text=True,
+ capture_output=True,
+ check=False,
+ )
+
+ assert completed.returncode != 0
+ assert "failed to discover the latest LocalSetup release" in completed.stderr
+ assert "set LOCALSETUP_BOOTSTRAP_REF" in completed.stderr
+ assert not managed_source.exists()
+
+
def test_root_installer_filters_github_release_api_payload_before_tag_fallback(tmp_path: Path) -> None:
install_path = Path(__file__).resolve().parents[2] / "install"
bootstrap_repo, _old_commit, current_commit = make_bootstrap_git_repo_with_release_tags(tmp_path / "bootstrap")
diff --git a/ls/tests/test_release_docs_integration.py b/ls/tests/test_release_docs_integration.py
index e349f255b..16ad96a60 100644
--- a/ls/tests/test_release_docs_integration.py
+++ b/ls/tests/test_release_docs_integration.py
@@ -46,6 +46,28 @@ def planned(root, **kwargs):
assert calls == ["b" * 40]
+def test_release_document_scan_uses_published_anchor_not_corrected_arithmetic_cutoff(tmp_path, monkeypatch):
+ cutoff, published, head = "c" * 40, "b" * 40, "a" * 40
+ refs = {"HEAD": head, "comparison": cutoff}
+ monkeypatch.setattr(planning, "plan_version", lambda *args, **kwargs: {
+ "base": cutoff, "base_version": "4.44.1", "target_version": "4.44.1",
+ "published_anchor": {"commit": published, "tag": "v5.6.2"},
+ "line_reconciliation": {"corrected_target_version": "4.44.1"},
+ })
+ monkeypatch.setattr(planning, "resolve_head", lambda root, ref: refs.get(ref, ref))
+ monkeypatch.setattr(planning, "read_version", lambda root, ref: "5.6.2" if ref == published else "4.44.1")
+ monkeypatch.setattr(planning, "tracked_documents", lambda root: [])
+ monkeypatch.setattr(planning, "_changed_paths", lambda root, base, selected: [])
+ monkeypatch.setattr(planning, "_source_material", lambda *args: [])
+ monkeypatch.setattr(planning, "_reference_material", lambda *args: [])
+
+ result = planning.plan(tmp_path, base="comparison")
+
+ assert result["source_base"] == published
+ assert result["baseline_version"] == "5.6.2"
+ assert result["baseline_tag"] == "v5.6.2"
+
+
def test_validation_failure_stops_before_push(tmp_path, monkeypatch):
evidence = tmp_path / "candidate.json"
evidence.write_text(json.dumps({"plan": {"source_commit": "a" * 40}, "candidate": {}}))
diff --git a/ls/tests/test_versioning_policy.py b/ls/tests/test_versioning_policy.py
index 6fb15fdb8..93fbaff9f 100644
--- a/ls/tests/test_versioning_policy.py
+++ b/ls/tests/test_versioning_policy.py
@@ -6,6 +6,7 @@
import pytest
+import ls.core.versioning as versioning_module
from ls.core.versioning import plan_version, publish_preflight, sync_version_files
from ls.core.versioning_policy import POLICY_PATH, guard_target, validate
from ls.tests.test_versioning_sequence import repo, git, commit, sync
@@ -144,6 +145,148 @@ def test_explicit_target_cannot_bypass_canonical_arithmetic(repo):
guard_target(repo, '4.5.0')
+def line_locked_history(repo):
+ original = git(repo, 'rev-parse', 'base')
+ git(repo, 'tag', 'v4.4.0', original)
+ first = commit(repo, 'feat!: page contract',
+ 'Release-Type: major\nRelease-Slice: issue-100-compat\n\nBREAKING CHANGE: readers now return pages.')
+ second = commit(repo, 'feat!: signed envelope',
+ 'Release-Type: major\nRelease-Slice: issue-100-compat\n\nBREAKING CHANGE: agents require signed envelopes.')
+ sync(repo, '5.0.0')
+ published = git(repo, 'rev-parse', 'HEAD')
+ git(repo, 'tag', 'v5.0.0', published)
+ commit(repo, 'feat: follow-up feature')
+ sync(repo, '5.1.0')
+ cutoff = git(repo, 'rev-parse', 'HEAD')
+ value = {
+ 'schema_version': 2,
+ 'policy': 'sequential-logical-slices',
+ 'anchor': {'commit': published, 'version': '5.0.0', 'tag': 'v5.0.0'},
+ 'overrides': [],
+ 'major_line': 4,
+ 'reconciliation': {
+ 'original_anchor': {'commit': original, 'version': '4.4.0', 'tag': 'v4.4.0'},
+ 'published_anchor': {'commit': published, 'version': '5.0.0', 'tag': 'v5.0.0'},
+ 'cutoff': {'commit': cutoff, 'source_version': '5.1.0', 'corrected_version': '4.6.0'},
+ 'reclassified_slices': [{
+ 'slice': 'issue-100-compat', 'classification': 'minor', 'commits': [first, second],
+ }],
+ },
+ }
+ activate(repo, value)
+ return value, first, second, cutoff
+
+
+def test_line_reconciliation_validates_old_syncs_and_starts_four_x_arithmetic(repo):
+ _value, _first, _second, cutoff = line_locked_history(repo)
+ result = plan_version(repo)
+ assert not result['ok']
+ assert result['repairable']
+ assert result['current_version'] == '5.1.0'
+ assert result['target_version'] == '4.6.0'
+ assert result['base_version'] == '4.6.0'
+ assert result['base'] == cutoff
+ assert result['published_anchor']['version'] == '5.0.0'
+ assert result['line_reconciliation']['original_target_version'] == '5.1.0'
+ assert result['line_reconciliation']['corrected_target_version'] == '4.6.0'
+ assert all(item['ok'] for item in result['line_reconciliation']['historical_sync_checks'])
+ assert result['version_sync_checks'] == []
+
+
+def test_reconciled_preflight_syncs_corrected_version_before_receipt(repo, monkeypatch):
+ line_locked_history(repo)
+
+ def prepare_candidate(root, target):
+ (root / 'VERSION').write_text(f'{target}\n')
+ return {'version': target, 'changed_candidates': ['VERSION']}
+
+ monkeypatch.setattr(versioning_module, 'prepare_version_sync_candidate', prepare_candidate)
+ prepared = publish_preflight(repo, fix=False)
+ assert prepared['reason'] == 'prepared_not_ready'
+ assert prepared['plan']['bump'] == 'none'
+ assert prepared['prepared_paths'] == ['VERSION']
+ assert git(repo, 'diff', '--cached', '--name-only') == ''
+ assert git(repo, 'diff', '--name-only') == 'VERSION'
+ git(repo, 'checkout', '--', 'VERSION')
+
+ def sync_version(root, target):
+ (root / 'VERSION').write_text(f'{target}\n')
+ return {'version': target, 'changed_candidates': ['VERSION']}
+
+ monkeypatch.setattr(versioning_module, 'sync_version_files', sync_version)
+ monkeypatch.setattr(versioning_module, 'stage_version_files', lambda root: git(root, 'add', 'VERSION'))
+ monkeypatch.setattr(versioning_module, 'check_version_files', lambda root, target: {'ok': True})
+ fixed = publish_preflight(repo, fix=True)
+ assert fixed['ok'] and fixed['plan']['ok']
+ assert fixed['plan']['bump'] == 'none'
+ assert [row['type'] for row in fixed['commits']] == ['version_sync']
+ sync_commit = fixed['commits'][0]['sha']
+ assert git(repo, 'show', '-s', '--format=%s', sync_commit) == 'chore: sync release version 4.6.0'
+ assert git(repo, 'diff-tree', '--no-commit-id', '--name-only', '-r', sync_commit) == 'VERSION'
+ assert git(repo, 'status', '--porcelain') == ''
+
+
+def test_line_lock_allows_patch_and_minor_but_rejects_future_major(repo):
+ line_locked_history(repo)
+ sync(repo, '4.6.0')
+ commit(repo, 'fix: correction')
+ pending = plan_version(repo)
+ assert pending['target_version'] == '4.6.1'
+ assert pending['repairable'] and pending['bump'] == 'patch'
+ sync(repo, '4.6.1')
+ assert plan_version(repo)['ok']
+ commit(repo, 'feat!: incompatible change',
+ 'Release-Type: major\nRelease-Slice: future-break\n\nBREAKING CHANGE: contract changes.')
+ blocked = plan_version(repo)
+ assert not blocked['ok'] and not blocked['repairable']
+ assert blocked['major_line'] == 4
+ assert blocked['major_line_violations'][0]['classification'] == 'major'
+ before = git(repo, 'rev-parse', 'HEAD'), git(repo, 'status', '--porcelain'), (repo / 'VERSION').read_bytes()
+ with pytest.raises(ValueError, match='reconciliation'):
+ sync_version_files(repo, '5.0.0')
+ assert (git(repo, 'rev-parse', 'HEAD'), git(repo, 'status', '--porcelain'), (repo / 'VERSION').read_bytes()) == before
+
+
+def test_reconciled_policy_advances_to_published_four_x_anchor(repo):
+ value, _first, _second, _cutoff = line_locked_history(repo)
+ sync(repo, '4.6.0')
+ release_commit = git(repo, 'rev-parse', 'HEAD')
+ git(repo, 'tag', 'v4.6.0', release_commit)
+ value['anchor'] = {'commit': release_commit, 'version': '4.6.0', 'tag': 'v4.6.0'}
+ activate(repo, value)
+ result = plan_version(repo)
+ assert result['ok'] and result['base'] == release_commit
+ assert result['base_version'] == '4.6.0'
+ assert result['published_anchor']['tag'] == 'v4.6.0'
+
+
+def test_schema_two_requires_four_x_reconciliation_and_preserves_schema_one(repo):
+ legacy = configuration(repo)
+ assert validate(legacy)['schema_version'] == 1
+ value = {
+ 'schema_version': 2,
+ 'policy': 'sequential-logical-slices',
+ 'anchor': legacy['anchor'],
+ 'overrides': [],
+ 'major_line': 4,
+ 'reconciliation': {
+ 'original_anchor': legacy['anchor'], 'published_anchor': legacy['anchor'],
+ 'cutoff': {'commit': 'a' * 40, 'source_version': '5.1.0', 'corrected_version': '4.6.0'},
+ 'reclassified_slices': [{'slice': 'issue-100-compat', 'classification': 'minor',
+ 'commits': ['b' * 40, 'c' * 40]}],
+ },
+ }
+ assert validate(value)['major_line'] == 4
+ for mutation in ('wrong_line', 'wrong_corrected_major', 'missing_member', 'major_mapping'):
+ changed = json.loads(json.dumps(value))
+ if mutation == 'wrong_line': changed['major_line'] = 5
+ elif mutation == 'wrong_corrected_major': changed['reconciliation']['cutoff']['corrected_version'] = '5.6.0'
+ elif mutation == 'missing_member': changed['reconciliation']['reclassified_slices'][0]['commits'] = ['b' * 40]
+ else: changed['reconciliation']['reclassified_slices'][0]['classification'] = 'major'
+ with pytest.raises(ValueError):
+ validate(changed)
+
+
def test_public_cli_uses_committed_anchor_and_refuses_explicit_target(repo):
commit(repo, 'feat: capability')
activate(repo)
diff --git a/pyproject.toml b/pyproject.toml
index ce23047c3..5816df562 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "localsetup"
-version = "5.7.1"
+version = "4.44.1"
description = "Global-first LocalSetup skill pack manager"
requires-python = ">=3.12"
dependencies = [
diff --git a/uv.lock b/uv.lock
index d256c5617..68efc219f 100644
--- a/uv.lock
+++ b/uv.lock
@@ -547,7 +547,7 @@ wheels = [
[[package]]
name = "localsetup"
-version = "5.7.1"
+version = "4.44.1"
source = { editable = "." }
dependencies = [
{ name = "anyio" },