Repository navigation
feat(deed): (maturity …) repo-deed vocabulary - #1139
Conversation
Owner decision 2026-10-02: maturity is a clause of its own rather than a :maturity field on the status clause. Declares the clause (:level from the closed set experimental|alpha|beta|production|lts, optional :since), adds a valid fixture, and records the ruling on the maturity row of state-v1-decision. The rest of that decision stays open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AJZGNqQsEHjjhzfcNm4pt3
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (3)
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. Comment |
|
Autopilot could not be updated. Open Coding to check access and billing. |
|
## What Retires every `.a2ml` file in this repo. The facts they held now live in the DEED and k9 forms that `hyperpolymath/standards` defines as ABNF grammars: - **`ZeroInflatedCounts.jl_chora.deed`** is the single machine-readable record. It holds the identity, clade (`dx`), forges, lineage, status (`:phase incubating`), maturity (`:level experimental`), meta, ecosystem (IS / IS-NOT, chain, relations) and agentic clauses. - **`.machine_readable/descriptiles/provisioning_praxis.deed`** covers toolchain provisioning. - **`.machine_readable/self-validating/*.k9.ncl`** are the k9 contracts. - **`docs/status/ROADMAP.adoc`** holds milestones and next actions. - **`CLAUDE.md`** is hand-maintained and points at the above. Removed with no replacement, recoverable from `f53a0df`: - `.machine_readable/contractiles/`, `arrival-pack/`, `coaptation/`, `integrations/`; - the Justfile recipes that drove them; - `build/just/repo-init.just` and `build/just/groove.just`. Minting is one-shot and this repo is already minted. Everything that read the old files now reads the deed: `just validate-state`, `validate-rsr`, `info`, `state-phase`, `verify-template`, `assess`; `scripts/validate-template.sh`; the OSSF workflow check; and the pre-commit deed hook. Every edited gate has a negative control. About 25 live docs (onboarding, governance, the `.machine_readable` READMEs, the AI install guide, setup and quickstart) now point at the deed and ROADMAP. Steps that ran `just repo-init` are gone. `docs/architecture/REPOSITORY-MAP.adoc` was regenerated with `just repo-map`. In `julia-docs.yml` the error message no longer names a file that never existed here. ## Owner decisions applied (2026-10-02) - **Maturity** has its own `(maturity :level experimental :since …)` clause instead of sitting on the `status` clause (state-v1-decision option B was declined). The clause is declared in hyperpolymath/standards#1139 (`1-formats/deed/vocabulary/maturity.adoc`). Until that merges, it is a clause head the standards vocabulary does not yet define. `just state-phase` reads both clauses. - **Clade** `dx` (Developer Ecosystem), as for the other Julia libraries in `gv-clade-index`. MetaManifold-WebUI has no clade registered, so "the same as MetaManifold-WebUI" could not be copied. ## Evidence | Check | Result | |---|---| | Both deeds vs `deed.abnf` v1.0.0 (scratch recogniser, Bun) | accepted. 5 planted mutants rejected (duplicate `:schema-version`, TAB, no SPDX header, `\r` escape, filename dispatch) | | `.github/hooks/validate-deed.sh .` | 2 files, 0 errors | | `nickel export` on all 7 `.k9.ncl` (after stripping the `K9!` line) | all ok. Negative control: a malformed file gives rc=1 | | `just validate-state` / `validate-rsr` | pass. Controls: no deed, no `:phase`, a missing axis string → fail | | OSSF deed-count step | 1 deed rc=0, 0 deeds rc=1, 2 deeds rc=1 | | `scripts/validate-template.sh` | rc=0 | | `tests/invisible-characters-test.sh` | pass. Its fixture moved to a `.deed`; dropping `*.deed` from the scanner's glob makes the test fail | | `tests/e2e.sh`, `check-no-placeholders.sh`, `check-no-vlang.sh`, `check_no_vlang_test.sh` | pass | | `just test` | Julia `Pkg.test()` passes and Idris2 typecheck passes. The Zig leg fails at `src/interface/ffi/src/main.zig:55` (`zeroinflatedcounts.jl_init` is not a valid identifier): this also fails on `f53a0df`, and this PR does not touch `src/interface/` | | `just quality` (`fmt-check lint test`) | `fmt-check` and `lint` have only a Zig leg and fail at the same line; `test` is as above. All of these also fail on main | **Horizon:** CI does not run a DEED parser over the deed. The recogniser above is a scratch transcription of the ABNF, not the canonical validator. So the deed's validity is *tested locally* here, not *gated in CI*. ## Not changed here (owner or source-level) - Estate-synced workflows and hooks still name `.a2ml`: dogfood-gate, deed-validate, the compliance canary, estate-rules, dogfood-summary, `validate-deed.sh`. Every such read is dual-accept or guarded with `-f` / `curl -f`, so nothing fails. They should be retired at source and re-synced. - `.machine_readable/compliance/reuse/dep5` keeps two stanzas that now match nothing. It is a licence file, so editing it is an owner-only change. - The template's `repo-init` still writes a2ml into new mints; that fix belongs to rsr-template-repo#209. - `tests/e2e/template_instantiation_test.sh` still calls `just repo-init`. It exits early here because `archetypes/` is absent, so it never reaches that call. It is template code, and its fix belongs with #209. - `docs/AI_INSTALLATION_GUIDE.adoc` has only clone, init and verify steps left. Whether to keep it is an owner decision. - Pre-existing and unrelated: `just verify-template` fails on main, `just validate-ai-install` (README has no ai-install section) and `tests/e2e/julia_mint_test.sh` fail standalone. ## Deferred red checks (also red on main f53a0df) - `actions.lock is in sync with the workflow YAML`: deferred to #3 - `governance / Actions lockfile verify`: deferred to #3 - `governance / Allowlist Preflight`: deferred to #3 - `governance / Workflow security linter`: deferred to #3 - `lint-workflows`: deferred to #3 All of the above are logged in `dev-notes/inbox/findings.md`. Refs: hyperpolymath/MetaManifold-WebUI#18 (D222). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01AJZGNqQsEHjjhzfcNm4pt3 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
## What Declares a `(nostos …)` clause for repo deeds (draft v0.1). _Nostos_ is Greek for the journey home. For each artefact a repo depends on (tool, runtime, SDK, library, game, dataset, model), the clause records every way back to where it came from: | Clause | Records | |---|---| | `(fetch …)` | how to get it again; each fetch names its own `:manager` (mise, asdf, guix, apt, opam, alire, cargo, …), so mise is one manager among several | | `(digest …)` | how to check a fetch (`sha256`/`sha512`); signatures reserved | | `(part …)` | pieces fetchable on their own (binary, source, sdk, docs, symbols, man, completions, sbom, license) | | `(docs …)` | documentation that refreshes independently (the `Update-Help` / `HelpInfoURI` pattern) | | `(kin …)` | the maker's other work | | `(feed …)` | typed change feeds: security, release, deprecation, eol, addon, funding, news | | `(contact …)` | typed channels to the maker, each with `:found-at` so a reader can re-check before sending | Reader obligations include: - refresh-before-send for contacts; - never reporting an artefact without a digest as verified; - reporting, never resolving, disagreement with `.tool-versions`, `mise.toml` or `build/guix.scm`. - `1-formats/deed/vocabulary/nostos.adoc` - `1-formats/deed/tools/fixtures/valid/nostos-clause_chora.deed` exercises every term. Same pattern as `vocabulary/updates.adoc` (#1110) and `vocabulary/maturity.adoc` (#1139). Grammar unchanged: this is a `clause` under `deed.abnf` v1.1.0. The terms move into `estate_chora.deed`'s `(vocabulary …)` clause once that file exists. ## Evidence | Check | Result | |---|---| | `bun deed_lint.js fixtures/valid/nostos-clause_chora.deed` (the linter CI runs) | OK | | `bun deed_lint.js --fixtures fixtures/` | FIXTURES OK (whole corpus) | Correction: the first commit's message says `uuid8-clade_chora.deed` fails on main. That came from running the retired `deed_lint.py`, which predates `#u8`. With the Bun linter the whole corpus passes. A follow-up commit also updates the page to grammar v1.1.0 and to `#u8` (ADR-008 profile C) for any future identifier field. | pre-commit (SHA pins, permissions, CodeQL config, bot directives, canonical names) | passed | | GraalVM security contact | confirmed against https://github.com/oracle/graal/security/policy before recording `:checked` | ## Horizon (declared, not decided here) - a machine-level record (needs a new doc-head, so a grammar change); - per-person feed interest (a separate document); - signatures in `(digest …)`; - an identifier field (`#u8`, ADR-008 profile C) if one proves necessary; - no reader enforces the obligations yet. ## Consumer Planned: odds-and-sods-package-manager imports `.tool-versions` / `mise.toml` into `(nostos …)` and reads `(feed …)` for change detection. Later, kcX can project `(fetch …)` back out to `.tool-versions`, `mise.toml` and `build/guix.scm`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>



What
Declares a
(maturity …)clause for repo deeds, as the owner decided on 2026-10-02: maturity is a clause of its own, not a:maturityfield on thestatusclause.1-formats/deed/vocabulary/maturity.adoc.:levelis a symbol from the closed setexperimental | alpha | beta | production | lts, the set the v1[position] maturitycomment already named.:since "YYYY-MM-DD"is optional. The page also states reader obligations: unknown field, out-of-set level, string level and duplicate clause are all errors; with no clause, maturity is unstated, never a default.1-formats/deed/tools/fixtures/valid/maturity-clause_chora.deedis a valid fixture.mappings/state-v1-decision.adoc: the maturity row in §3 is marked as ruled. The A/B/C choice stays open, and the document's status is unchanged.Same pattern as
vocabulary/updates.adoc(#1110). The grammar is unchanged: this is aclauseunderdeed.abnfv1.0.0. The terms move intoestate_chora.deed's(vocabulary …)clause once that file exists.Evidence
deed.abnf(scratch Bun recogniser, not the canonical validator)updates-clausefixture is also accepted as a controlscripts/build-registry.sh --check1-formats/deedis not a registry spec homeHorizon: no reader enforces the obligations yet. They are declared here, not implemented.
Consumer
hyperpolymath/ZeroInflatedCounts.jl#2already carries(maturity :level experimental :since "2026-10-02").🤖 Generated with Claude Code
https://claude.ai/code/session_01AJZGNqQsEHjjhzfcNm4pt3