docs(contracts): contract roadmap, signal contract sheet + baseline-gated audit, rule-contract-audit skill - #2811
Merged
Merged
Conversation
…ated audit, rule-contract-audit skill Phase 1 of docs/contract_roadmap.md (approved 2026-09-06). No engine behaviour change: nothing at scan time imports the new module. - docs/contract_roadmap.md: the assessment (267 gated red cells by cause: 102 echo, ~45 inherency, ~50 extraction, 38 correlation, ~32 scoring), the three-layer diagnosis (stream / count / score), decisions D1-D4, phases 0-5, issue disposition, and the corrections to the first assessment (#2535 closed as not-a-bug: no string shielding exists; the x3 flux lives in spatial_correlation.py, pinned by #2631). - gitgalaxy/standards/signal_contracts.py: one SignalContract per registry rule key (68 entries over 80 keys; 12 helper keys described separately) with kind, unit, contract sentence, status, doc, issue, planted. The stream contract and the count contract as module constants. api and args are `stated` (#2730/#2743, #2773/#2786); the other 66 are `draft` -- the schema comment transcribed verbatim. - tests/signal_contract_audit.py (+ baseline, + workflow beside dead-key-audit): missing-contract / orphan-contract / schema-drift / missing-schema / draft findings, baseline-gated like dead_key_audit.py. --render writes docs/signal_contracts.md. - how_to_add_a_language.md: CRITICAL ENGINE RULE 18 (the stream contract) and a pointer above the OUTPUT SCHEMA making the comment lines the prompt form of the sheet. - .claude/skills/rule-contract-audit: the #2730/#2743 method as a repeatable workflow (read the ledger first; sentence + corollaries; 46-language audit via screen_plant.py + crucible incidence on the Prism code stream; engine PR one layer; corpus plant PR; sheet row -> stated). - docs/ecosystem.md: skills table and the rosetta workflow row (cause family, not language). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Owner
Author
|
Pre-existing local failure, not this PR's: |
Open
6 tasks
Contributor
27 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 1 of
docs/contract_roadmap.md(the strategy approved 2026-09-06, companion artifact linked from the doc). No engine behaviour change — nothing at scan time imports the new module, so no golden-master delta.What it adds:
docs/contract_roadmap.md— the assessment: of the 267 gated red cells in the keyword-rosetta report, 102 are echoes, ~45 language inherency, ~50 extraction defects, 38 proximity-correlation effects, ~32 scoring choices; the consistency badge could not tell these apart. The three-layer diagnosis (stream / count / score), decisions D1–D4, phases 0–5, issue disposition. Corrects two earlier claims (prism/detector: string-literal shielding is selective by signal family (if/try/open count inside a literal, eval does not) #2535 closed as not-a-bug: there is no string shielding to make uniform; the ×3 flux lives inspatial_correlation.py, pinned by docs(core): document + pin the ×3 cascading-flux weighting (closes #2546) #2631).gitgalaxy/standards/signal_contracts.py— the contract sheet (D3): oneSignalContractper registry rule key — 68 entries over the 80 keys the 59 language definitions declare, the 12_-prefixed helpers described separately — each withkind(declaration / site / annotation / tally),unit, the sentence,status,doc,issue,planted. The stream contract and the count contract as module constants.apiandargsarestated; the other 66 aredraft(the schema comment, verbatim).tests/signal_contract_audit.py+ baseline +.github/workflows/signal-contract-audit.yml— baseline-gated likedead_key_audit.py:missing-contract,orphan-contract,schema-drift(thehow_to_add_a_language.mdcomment must contain the sentence),missing-schema,draft.--renderwritesdocs/signal_contracts.md.how_to_add_a_language.md— CRITICAL ENGINE RULE 18 (what text a rule sees) and a pointer above the OUTPUT SCHEMA..claude/skills/rule-contract-audit/SKILL.md— the The api rule has no stated contract: 7 languages' own visibility idiom is invisible to it, and 5 others count anypublictoken #2730/fix(core-engine): give the api rule a stated contract and audit all 46 languages against it (#2730) #2743 method as a repeatable workflow for taking one signal from draft to stated.docs/ecosystem.md— skills table; the rosetta workflow row is now a cause-family workflow.Proof
ruff formatclean;ruff_audit.py --ci/mypy_audit.py --ci: the only new hits are in untracked scratch files already sitting in the working tree (gitgalaxy/tests.py,gen_tests.py,parse_regex.py— not in this PR);dead_key_audit.py --ciclean;pytest tests/core_engine: 372 passed, 1 pre-existing failure unrelated to this diff (test_committed_fidelity_table_is_fresh_against_the_corpus— corpus-state dependent, see comment below).Cross-repo
tools/cell-categories(Phase 0: the cause roll-up inbias_report.py,GATING.mdcategory semantics,rosetta-language-sweepre-scoped). Independent of this PR — neither side's CI reads the other's change; merge order does not matter. Corpus PR: tools(bias_report): say what each red cell is — cause categories, open-defect share, decayed-entry check keyword-rosetta#77._registry.pyfor Phase 4.🤖 Generated with Claude Code