Skip to content

chore(state): archive STATE.a2ml and rewire the gates that required it - #78

Merged
hyperpolymath merged 2 commits into
mainfrom
claude/rename-everytype-anytime-repos-w4t306
Nov 10, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
claude/rename-everytype-anytime-repos-w4t306

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Completes STATE option B (ruled 2026-11-10). The thin journal and the repo deed now carry what STATE v1 carried, so STATE.a2ml is renamed to .machine_readable/archive/state-v1.a2ml with a tombstone. git records it as a rename. All 8 sections are kept verbatim, so no milestone row or blocker is lost.

Changes

Gates that failed without the file now require its successor, one for one

  • openssf-compliance.yml requires docs/status/JOURNAL.adoc, and its placeholder-token scan covers it.
  • The Must invariant six-directory-present, scripts/validate-template.sh, and the e2e template test.

Readers of STATE content moved to the new homes

  • Arrival-pack: lifecycle and maturity come from the deed's (status) and (maturity). The derivable completion figure is dropped. Provenance now hashes the deed. CLAUDE.md is regenerated with the real generator.
  • Coaptation extractor: status and maturity from the deed, phase from the journal. completion-percentage, open-warnings, open-failures and last-result have no source any more. They are emitted empty, so they register as absent and never as a recorded zero.
  • Justfile and contractiles/Justfile (info, state-touch, state-phase), the k9 methodology guard, AI-tool rules, 0.1-AI-MANIFEST, the 6a2 README, the PR template, AI-CONVENTIONS, the deed header, and the ROADMAP/PROOF-STATUS pointers.
  • 6a2/0-AI-MANIFEST.a2ml said "the 7 core A2ML files MUST exist". That is now false, so it says 6 and points at the archive.

How it was checked

I installed nickel 1.18 and just 1.59, then ran each rewired gate against unmodified main and against this branch.

Check Result
Arrival-pack drift gate (verify.sh, real nickel) passes on main; passes here
validate-template.sh output byte-identical to main (its failure, a missing ts-blocker.yml, is pre-existing)
e2e template test stops at the same pre-existing step; its embedded Phase 2 (machine-readable metadata) passes; the METADATA_FILES loop I edited passes when run directly
A2ML validator same counts (126 files), passes, including the archive
Negative test: delete the journal validate-template.sh, the Must invariant, the openssf logic and the coaptation extractor each fail loudly; the same Must command passes with the journal present
just info / state-phase / state-touch work; state-touch edits exactly the :updated: line and the updated:: value
deed_lint.js, check-root-shape, check-no-md-in-docs pass
grep for live code still naming STATE.a2ml none

Decisions for you

  1. CLAUDE.md now diverges from the draft estate block. Its read order and file table name the journal instead of STATE, and the State line shows lifecycle and maturity only. The same change belongs in the estate template upstream (standards / rsr-template-repo), or other repos will regenerate the old text.
  2. The coaptation receipt gate (just validate-coapt) is red on main and stays red. Its committed receipt is stale (repo = "rsr-template-repo"). I did not regenerate it, because standards says never to regenerate an A2ML file. Regenerate it, or retire the gate?
  3. Dangling pointers I left on purpose. The canon-derived hook comments in 6a2/AGENTIC.a2ml and PLAYBOOK.a2ml still say "Read … STATE.a2ml". Editing them would make them diverge from template canon. They need fixing in the template.

Left alone on purpose

The "never create STATE.a2ml" rules, the self-validating template example scripts, the historical ADR (docs/decisions/0001), and the generic RSR/CRG guidance in docs/ (READINESS, CRG-AUDIT-TEMPLATE, RSR_OUTLINE, and others). They name STATE as a family, not as a path anything reads. The sections some of them cite ([dogfooding-status] and so on) never existed in this repo's STATE.

RSR Quality Checklist

Required

  • Tests pass: the gates above, run against main and this branch.
  • Code is formatted — N/A.
  • Linter is clean: deed_lint.js OK.
  • No banned language patterns; no unsafe; no banned functions.
  • SPDX headers unchanged or present.
  • No secrets, credentials, or .env files included.

As Applicable

  • docs/status/JOURNAL.adoc updated: the resolved state-archive-rewire blocker is removed.
  • Documentation updated.

Generated by Claude Code

Completes state-v1-decision option B (ruled 2026-11-10). The thin journal
(docs/status/JOURNAL.adoc) and the repo deed now carry what STATE v1 carried, so
STATE.a2ml is renamed to .machine_readable/archive/state-v1.a2ml with a tombstone.
All 8 sections are kept verbatim, so no milestone row or blocker is lost.

Gates that failed without the file now require its successor, one for one:
  - openssf-compliance.yml: requires docs/status/JOURNAL.adoc, and the
    placeholder-token scan covers it
  - the Must invariant six-directory-present, validate-template.sh, and the e2e
    template test
Each was checked both ways: it passes with the journal and fails loudly without it.

Readers of STATE content moved to the new homes:
  - arrival-pack: lifecycle and maturity come from the deed (status, maturity);
    the derivable completion figure is dropped; provenance hashes the deed.
    CLAUDE.md is regenerated with the real generator (nickel 1.18) and
    verify.sh passes. The estate-common STATE row and read order now name the
    journal, a deliberate divergence from the draft estate block.
  - coaptation extractor: status and maturity from the deed, phase from the
    journal. completion-percentage, open-warnings, open-failures and last-result
    have no source any more and are emitted EMPTY, so they register as ABSENT and
    never as a recorded zero.
  - Justfile and contractiles/Justfile: info, state-touch, state-phase.
  - the k9 methodology guard, AI-tool rules, 0.1-AI-MANIFEST, the descriptiles
    README and 0-AI-MANIFEST invariant (it said 7 core files MUST exist), the PR
    template, AI-CONVENTIONS, both deed headers, and the ROADMAP headers.

Baseline comparison on unmodified main, same commands both sides:
  - validate-template.sh output is byte-identical; the e2e test stops at the same
    pre-existing step; the A2ML validator reports the same file counts.
  - systemet's CLAUDE.md drift gate was already red on main (STATE changed after
    CLAUDE.md was generated, and it claimed "phase design; 15% complete"); the
    regeneration clears that.
  - the coaptation receipt gate is red on main in both repos (the committed
    receipt is stale: repo = "rsr-template-repo"). It is NOT regenerated here:
    standards says never to regenerate an A2ML file.

Left alone on purpose: the canon-derived hook comments in AGENTIC/PLAYBOOK, the
"never create STATE.a2ml" rules, the template example scripts, the historical ADR,
and the generic RSR/CRG guidance in docs/. They name STATE as a family, not as a
path anything reads.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J1XmMC49T8sZ3uUuvrgB7y
@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

…eader

SonarCloud flagged 6 MAJOR code smells on the lines this PR added, in
extract.sh and extract-facts.sh: a single-bracket test where [[ is safer
(S7688), and positional parameters used directly in deed_sym (S7679).

Use [[ -f ... ]] in the two new existence checks, and name the clause and
keyword parameters in deed_sym. Pre-existing lines in the same files are left
as they were; the scanner only reports new code, and rewriting them would widen
the PR.

No behaviour change: the extractors emit the same lifecycle, maturity and fact
presence, verify.sh still passes, and a missing deed still aborts with exit 2.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J1XmMC49T8sZ3uUuvrgB7y

Copy link
Copy Markdown
Owner Author

Validate K9 contracts is red here, but not because of this PR.

This PR edits three .k9.ncl files, so I checked that. The job reports the same 18 files scanned, 20 errors and 4 warnings as main and as the earlier PRs. Every error is in the template and scaffold K9 files (self-validating/template-*.k9.ncl, container/stapeln/deploy.k9.ncl, coordination.k9, session/custom-checks.k9): missing K9! magic line and missing pedigree block. None is in a file this PR changed. I also ran nickel typecheck on the three files I edited, on main and on this branch, and the results are identical.

No fix exists yet. That content debt, and the K9 spec question about the K9! line against the Nickel body, are estate-level and belong upstream in standards.

SonarCloud: the quality gate passes, but it reported 6 new MAJOR code smells, all in shell I added ([ vs [[, positional parameters). Those were mine and are fixed in the follow-up commit.

SonarQube (the separate job) is the known missing SONAR_TOKEN secret from #76.


Generated by Claude Code

@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review November 10, 2026 19:55
@hyperpolymath
hyperpolymath merged commit 6a1e231 into main Nov 10, 2026
24 of 26 checks passed
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

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.

3 participants