Skip to content

feat: release 0.24.0 with every skill written as direction plus named invariants - #237

Merged
wheakerd merged 3 commits into
mainfrom
feature/release-0.24.0
Oct 30, 2026
Merged

wheakerd merged 3 commits into
mainfrom
feature/release-0.24.0

Conversation

@wheakerd

Copy link
Copy Markdown
Owner

Scope

Refs #226, #233, #234. The three Issues ship as one installed-runtime change set, version 0.24.0, in three GitHub-signed commits on this branch: the skill rewrite, the gate behavior with the recall cases and routing contract v8, and the checked-in fresh-session observation records that the release gate requires.

  • Invariants ([Runtime][Skills] Rewrite the fourteen skills for a model reader with named invariants #226): every bundled SKILL.md opens with a short direction paragraph and an ## Invariants section of three to six named rules that bind in every phase, including the references that phase loads; everything else in a skill is a default the model may adapt, saying so. The "Defaults you may adapt ... Every other rule ... binds" paragraphs are gone from the twelve skills that carried them, and agents-architect folds its Decision Latitude and Always-On Rules into six invariants. Each invariant restates a rule that already bound; no authority widens.
  • Terms and sentences ([Runtime][Skills] Rewrite the fourteen skills for a model reader with named invariants #226): the gate defines route, host-native, selection surface, explicit invocation, invariant and default, handoff contract, envelope, and write set once; a skill defines the terms it introduces under ## Terms where they first appear. No sentence in bundled skill text exceeds 300 characters, measured per paragraph, list item, heading, or frontmatter field with code blocks and tables excluded; twenty-one over-long sentences were split without changing their rules.
  • Invocation ([Runtime][Skills] Rewrite the fourteen skills for a model reader with named invariants #226): the gate states explicit invocation as $skill-name in Codex, /axiom:skill-name in Claude Code, or the skill named in plain words; the offline route model and a new fixture accept both host forms.
  • Host facts ([Runtime][Skills] Rewrite the fourteen skills for a model reader with named invariants #226): using-axiom/references/codex-host.md and claude-code-host.md consolidate the host mechanics that were spread over agents-architect, continuous-progress, delegate-simple-task, and the permission reference, each verified against the installed host on 2026-10-30 with documentation-derived facts marked. continuous-progress keeps three references instead of five; its host-neutral supervisor and acceptance rules move into supervision-and-recovery.md and execution-and-handoff.md.
  • Reconcile modes ([Runtime][Skills] Rewrite the fourteen skills for a model reader with named invariants #226): agents-architect/references/maintenance/implementation-reconciliation.md replaces the mandatory coordinator-plus-three-subagents contract with an independent review contract that one session can run as sequential passes, keeping the three independent read-only reviews, the direct recheck of decisive evidence, and the single writer.
  • Readability validator ([Runtime][Skills] Rewrite the fourteen skills for a model reader with named invariants #226): axiom_validation/skill_text.py enforces the Invariants list, the sentence maximum, and the absence of a blanket binding clause in the publication aggregate, with unit tests and a documented check in the validation guide.
  • Before acting ([Runtime][Gate] Restate the intended outcome, open ambiguity, and the first irreversible step before acting #233): the gate's ## Before Acting section asks the model, before an action that changes state, to say in one sentence what outcome it intends, name any material ambiguity the user left open, and mark the first irreversible or externally visible step. It adds no question, stop, or authority and stays silent for read-only requests and conversation. Two corpus cases show that the behavior selects no route and that a read-only request gets no restatement.
  • Recall ([Runtime][Routing] Raise recall for verify-completion and clarify-intent and cover post-compaction route reselection #234): the verify-completion description names a completion claim carried by a compaction summary even without the word verify, and the clarify-intent description names alternatives offered across sentences or without the word either. The offline route model resolves both forms and their near-miss controls; a post-compaction route reselection case records the gate's reselection rule.
  • Routing contract v8: every v7 case keeps its ID and expectation; nine cases are added, and codex-core-v8 and claude-code-core-v8 select the 40 v7 cases plus the nine new ones (49) with the v7 host profiles unchanged. The v7 corpus, benchmarks, and bindings stay frozen; candidate records of either contract validate.
  • Release artifacts: manifests 0.24.0, repository policy revision 122 with the new runtime digest, routing-context record v0.24.0 (gate 7,217 bytes, reviewed growth with justification; description set 5,204 bytes), version note, Changelog entry, release status, and rendered surfaces.
  • Host evidence: evals/results/v0.24.0/claude-code/linux.json and evals/results/v0.24.0/codex/linux.json record one complete passing fresh-session run per host against commit 0f3c906, 49 of 49 cases each in a single attempt: Claude Code 2.1.308 with claude-opus-5-5 at maximum effort, and Codex CLI 0.166.0 with gpt-6-astra at maximum effort. The version note's Host Evidence section also reports the two private checks: a paraphrase check in which one fresh Claude Code session per skill reproduced 78 of 78 invariants without drift, and a same-batch sample of the before-acting behavior on both hosts against the released 0.23.0 plugin as the baseline.

Affected files and surfaces

  • Shared files: every plugin/skills/*/SKILL.md (fourteen); plugin/skills/using-axiom/references/codex-host.md and claude-code-host.md (new), host-permission.md; plugin/skills/agents-architect/references/inventory-audit.md, project-initialization.md, runtime-and-updates.md, maintenance/implementation-reconciliation.md; plugin/skills/continuous-progress/references/execution-and-handoff.md, supervision-and-recovery.md (changed), codex-operations.md, claude-code-operations.md (removed); plugin/skills/delegate-simple-task/references/host-evidence.md; plugin/skills/traceable-git-submit/references/baseline-and-preflight.md, checkpoint.md, consolidation.md, prepared-release-submit.md, remote-targets.md
  • Codex-specific files: plugin/.codex-plugin/plugin.json (version)
  • Claude Code-specific files: plugin/.claude-plugin/plugin.json (version)
  • Documentation or validation files: README.md, CHANGELOG.md, docs/architecture.md, docs/examples.md, docs/trust-model.md, docs/runtime-identity.md, docs/repository-policy-revisions.md, docs/reference/skills.md, docs/maintainers/runtime-changes.md, docs/maintainers/validation.md, docs/releases/v0.24.0.md (new), docs/releases/v0.16.0.md (two links to the removed references become code spans); evals/README.md, evals/schema-v8.json, evals/routing-v8/current.jsonl, evals/benchmarks/codex-core-v8.json, evals/benchmarks/claude-code-core-v8.json, evals/context-budget/results/v0.24.0.json, evals/results/v0.24.0/claude-code/linux.json, evals/results/v0.24.0/codex/linux.json (new); evidence/runtime-identity.json, evidence/release-status.json, evidence/repository-policy-revisions-v1.json; axiom_validation/skill_text.py (new), axiom_validation/aggregate.py, axiom_validation/routing_contracts.py, axiom_validation/cases/routing.py, axiom_validation/routing_evals/__init__.py, candidates.py, constants.py, current.py, external.py, observations.py, schemas.py; tests/test_skill_text.py (new), tests/test_current_routing.py, tests/test_release_facts.py, tests/test_routing_contracts.py, tests/test_routing_evals.py, tests/test_validator_isolation.py

Routing and authorization impact

  • Route-selection impact: explicit invocation is stated in each host's own syntax and both forms resolve offline; verify-completion and clarify-intent widen to the forms their descriptions now name (a summary-carried completion claim without a verification verb; alternatives across sentences or without "either"); the before-acting behavior selects no route. Every description except these two is unchanged apart from one split sentence in agents-architect. Because the gate and every skill body change, the fresh-session records cover all thirteen routes.
  • Action-authorization impact: None widened. Every invariant restates a rule that already bound, and every default was already adaptable; the before-acting behavior adds no question, stop, or authority.
  • New or changed stop conditions: the agents-architect reconcile modes no longer stop for a missing subagent facility; they run as sequential independent passes with one writer. No other stop condition changes.

Documentation

docs/releases/v0.24.0.md carries the reasoning, changed passages, routing contract v8, host evidence, and evidence boundary; CHANGELOG.md carries the 0.24.0 entry with its behavioral impact and required action (none). docs/architecture.md, docs/trust-model.md, docs/examples.md, docs/maintainers/runtime-changes.md, docs/maintainers/validation.md, evals/README.md, docs/reference/skills.md, docs/runtime-identity.md, and docs/repository-policy-revisions.md follow the invariants, the invocation syntax, the before-acting behavior, contract v8, and revision 122. Installation and hook commands are unchanged.

Validation

Command Result
python3 -B scripts/check-publication.py Passed on this exact tree: 155 required files, 167 Markdown files, 97 offline route contract fixtures, 188 black-box routing cases, 79 fixed host benchmark cases, 14 skill readability contracts, 89 canonical installed-runtime inputs, version 0.24.0
python3 -B -m unittest discover -s tests -p 'test_*.py' OK in a disposable clone of this tree: 320 tests
git diff --check Passed
Additional targeted checks python3 -B scripts/measure-routing-context.py --check, python3 -B scripts/render-release-facts.py --check, and python3 -B scripts/check-runtime-identity.py --check: passed. claude plugin validate --strict for plugin and .claude-plugin/marketplace.json: passed on Claude Code 2.1.308. Release observation gate rehearsal in a disposable clone (require_route_observations from main to this tree): 13 changed routes, both host records accepted at the unchanged runtime digest. ASCII scan of the changed Markdown, JSON, and YAML files: passed; the multilingual corpus cases are non-ASCII by design.

Cross-platform parity

  • Shared skill changes were reviewed against Codex and Claude Code, or this change does not affect shared skills.
  • Manifest, marketplace, and hook differences remain intentional and documented.
  • Optional host-native validation results include the host/tool version, or are marked unavailable.

The fresh-session records install the 0.24.0 subject on Codex CLI 0.166.0 (local marketplace install into an isolated configuration, documented hook-trust handshake) and load it on Claude Code 2.1.308 (plugin directory with the installed copy disabled per invocation); both hosts delivered the startup gate in every case. The host references label each host's mechanics in its own words and map neither onto the other. Hook commands are unchanged.

Unrelated work

  • I reviewed the final diff and did not reset, hide, stage, or rewrite unrelated work.
  • I did not add generated caches, disposable validation copies, local maintenance notes, or tool output.
  • I called out every affected file and any routing, authorization, documentation, or parity impact above.

… invariants

Remote baseline: origin/main @ 144127b

Scope:
Issue #226 ships as version 0.24.0. Every bundled SKILL.md opens with a short direction paragraph and an Invariants section of three to six named rules that bind in every phase, including the references that phase loads; everything else in a skill is a default the model may adapt, saying so. The blanket "every other rule binds" clauses are gone from the twelve skills that carried them, agents-architect folds its Decision Latitude and Always-On Rules into six invariants, and no sentence in bundled skill text exceeds 300 characters (twenty-one over-long sentences in entry files and references were split without changing their rules). The startup gate defines the shared terms once (route, host-native, selection surface, explicit invocation, invariant and default, handoff contract, envelope, write set), lists six invariants in place of its binding bullet, and states explicit invocation in each host's own syntax: $skill-name in Codex and /axiom:skill-name in Claude Code; the offline route model and a new fixture accept both forms. Two dated references owned by the gate, codex-host.md and claude-code-host.md, consolidate the host mechanics that were spread over agents-architect, continuous-progress, delegate-simple-task, and the permission reference, each verified against the installed host on 2026-10-30 with documentation-derived facts marked; continuous-progress drops its two operations references and keeps their host-neutral rules. The agents-architect reconcile modes run in one session as sequential independent reviews with one writer, with separate subagents optional. axiom_validation/skill_text.py enforces the readability contract in the publication aggregate with unit tests and a documented check. Release artifacts: manifests 0.24.0, repository policy revision 122 with the new runtime digest, routing-context record v0.24.0 (gate 6,976 bytes, reviewed growth with justification; description set 5,077 bytes), version note, Changelog entry, release status, and rendered surfaces. Fresh-session observation records for both hosts follow in a separate commit before the pull request opens.

Validation:
python3 -B scripts/check-publication.py: passed on the exact tree (155 required files, 167 Markdown files, 97 offline route contract fixtures, 14 skill readability contracts, 89 canonical installed-runtime inputs)
python3 -B scripts/measure-routing-context.py --check, scripts/render-release-facts.py --check, and scripts/check-runtime-identity.py --check: passed
python3 -B -m unittest discover -s tests -p 'test_*.py': 320 tests OK in a disposable clone of the tree
claude plugin validate --strict plugin and .claude-plugin/marketplace.json: passed on Claude Code 2.1.308
git diff --check: clean; ASCII scan of the changed Markdown, JSON, and YAML files: passed; every instruction file below 8,192 bytes
… completion claims and indirect choices

Remote baseline: feature/release-0.24.0 @ 6e82f9c (origin/main @ 144127b)

Scope:
Issues #233 and #234 join the 0.24.0 release. The startup gate gains a Before Acting section: before an action that changes state, say in one sentence what outcome you intend, name any material ambiguity the user left open, and mark the first irreversible or externally visible step; it adds no question, stop, or authority and stays silent for read-only requests and conversation. The verify-completion description names a completion claim carried by a compaction summary even without the word verify, and the clarify-intent description names alternatives offered across sentences or without the word either; the offline route model resolves both forms and their near-miss controls. Routing contract v8 replaces v7 for new observations: every v7 case keeps its ID and expectation, nine cases are added (two no-route cases for the before-acting behavior, a summary-carried completion claim with its post-compaction status control, two indirect choices with their routine controls, and one post-compaction route reselection case), and codex-core-v8 and claude-code-core-v8 select the 40 v7 cases plus the nine new ones with the v7 host profiles unchanged. The v7 corpus, benchmarks, and bindings stay frozen, and candidate records of either contract validate. Repository policy revision 122 now binds the final runtime digest; the routing-context record v0.24.0 records the gate at 7,217 bytes (reviewed growth with justification) and the description set at 5,204 bytes; the version note, Changelog, architecture, trust model, examples, and evals README follow. Fresh-session observation records for both hosts follow in a separate commit before the pull request opens.

Validation:
python3 -B scripts/check-publication.py: passed on the exact tree (155 required files, 167 Markdown files, 97 offline route contract fixtures, 188 black-box routing cases, 79 fixed host benchmark cases, 14 skill readability contracts, 89 canonical installed-runtime inputs)
python3 -B scripts/measure-routing-context.py --check, scripts/render-release-facts.py --check, and scripts/check-runtime-identity.py --check: passed
python3 -B -m unittest discover -s tests -p 'test_*.py': 320 tests OK in a disposable clone of the tree
claude plugin validate --strict plugin and .claude-plugin/marketplace.json: passed on Claude Code 2.1.308
git diff --check: clean; ASCII scan of the changed Markdown, JSON, and YAML files: passed (the multilingual corpus cases are non-ASCII by design)
…h hosts

Remote baseline: feature/release-0.24.0 @ 0f3c906 (origin/main @ 144127b)

Scope:
evals/results/v0.24.0/claude-code/linux.json and evals/results/v0.24.0/codex/linux.json record one complete passing fresh-session run of the current benchmark per host against commit 0f3c906 (tree 0127d80, runtime digest sha256:85fbd5f1554b2f99a7e7764c4efcea409401364a529d1d45ff0ee5f89f2fcd14): Claude Code 2.1.308 with claude-opus-5-5 at maximum effort passes 49 of 49 claude-code-core-v8 cases, and Codex CLI 0.166.0 with gpt-6-astra at maximum effort passes 49 of 49 codex-core-v8 cases, each in a single attempt. The version note's Host Evidence section names both records and reports the two private checks: the paraphrase check, in which one fresh Claude Code session per skill reproduced 78 of 78 invariants without drift, and the same-batch before-acting sample on both hosts with the released 0.23.0 plugin as the baseline. No installed runtime input changes; the runtime digest is unchanged.

Validation:
python3 -B scripts/check-publication.py: passed on the exact tree (155 required files, 167 Markdown files, 188 black-box routing cases, 79 fixed host benchmark cases, 4 candidate observation records, 89 canonical installed-runtime inputs)
python3 -B scripts/measure-routing-context.py --check and scripts/render-release-facts.py --check: passed
python3 -B -m unittest discover -s tests -p 'test_*.py': 320 tests OK in a disposable clone of the tree
Release observation gate rehearsal (require_route_observations from origin/main to this tree in a disposable clone): 13 changed routes, both host records accepted at the unchanged digest
git diff --check: clean; ASCII scan of the changed files: passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant