Skip to content

spec(rfc-0003): ratify Tranche A3 — status only - #23

Merged
s0fractal merged 3 commits into
mainfrom
spec/rfc-0003-a3-ratification
Aug 26, 2026
Merged

s0fractal merged 3 commits into
mainfrom
spec/rfc-0003-a3-ratification

Conversation

@s0fractal

Copy link
Copy Markdown
Owner

Ratifies Tranche A3 of RFC-0003 and CNP-0-JCS on the steward's direct statement.

Candidate SHA: 6079f2e9c0273bf71c7dedada01e92eb305140a3
Base: main@852788f6d4219c5cb8294a5d92272fd74e2a47dc
New manifest root: c577b5fa5c06359cb01b9ad16e659fb891d47dffdd7114f1d4ab62041292e1f0

The statement

Ратифікую Tranche A3 RFC-0003 і CNP-0-JCS як steward. Це не є adoption-evidenced або interop-confirmed.

Three states, independent

state value
A3 RATIFIED
adoption-evidenced false
interop-confirmed false

A3 licenses no claim about use, second implementations, interoperability, or federation evidence. Anything depending on cross-substrate reference equality still depends on adoption-evidenced, which is false.

Surfaces updated

Part 00 (intro, §17.1.1, tranche list), Part 01 §5.1.3, CANONICAL_ENCODING.v0.1 (header, §7), the conformance kit README, probes/cnp-0-seed-v0/README.md, probes/cnp-0-qwen-cleanroom-v0/README.md. Part 07 §17 is new.

Nothing historical rewritten

§15 and §16 are untouched — they correctly said there was no ratification at the time. So are the receipts in src/ and the Qwen VERDICT.md. §17 names which entries to read beside it and repeats that §15's restatement rests on a conflation argument, not on the Qwen probe.

Derived artifacts

The kit's §5.1.3 region was anchored on the prose **Design selected; conformance pending.** — the exact sentence a ratification rewrites. Re-anchored heading to heading (#### 5.1.3 → #### 5.1.4). SPEC-EXTRACT.md, CONTRACT.md, MANIFEST.sha256 rebuilt.

Corpus unchanged, checked not asserted:

git diff --quiet 852788f -- conformance/cnp-0-jcs-v0/corpus/   → clean
required   dde58a183fa746900cc82de3f1935a09177483297ab16a650c2cba25c07e9e19
extended   17aaf7ed6d92040b0d1c4b88f4157912c95029368b6d28e56f2144c103082e5a

Acceptance

  • ./t check — 573 passed, 366 signed chords valid
  • python3 conformance/cnp-0-jcs-v0/selftest.py — 26 passed, 0 failed
  • reference adapter through the kit — 126/126
  • python3 conformance/cnp-0-jcs-v0/tools/build_kit.py --check — green

No new cryptography, encoding rules, test cases or hardening. Status only plus the derived rebuild.

One judgement call for the reviewer

Two of your constraints touch the same line. probes/cnp-0-qwen-cleanroom-v0/VERDICT.md:164 still contains steward ratification pending, inside its ## Subsequent steward disposition section, in a sentence explicitly scoped as "Its status after that commit is:".

You said not to rewrite the Qwen verdict, and also that the phrase should appear only in §15–§16 and old receipts. I left it: it is a dated historical record correctly bounded to its moment, not a current-status surface, and editing it would be the ledger-revision failure §17 warns about. Rule either way and I will act on it.

No receipt in this PR — it pins the accepted SHA and the merge SHA after review.

…f three states

`s0fractal`, as steward, ratified Tranche A3 and CNP-0-JCS. Verbatim:

> Ратифікую Tranche A3 RFC-0003 і CNP-0-JCS як steward. Це не є
> adoption-evidenced або interop-confirmed.

The steward drew the boundary in the same breath as the ratification, and that
half is as normative as the first. Three states, independent:

    A3                  RATIFIED
    adoption-evidenced  false
    interop-confirmed   false

A3 being closed licenses no claim that the encoding is in use, that a second
implementation exists, that interoperability has been demonstrated, or that any
federation evidence has been produced. Anything depending on cross-substrate
reference EQUALITY still depends on adoption-evidenced, which is false: no
substrate computes references under hsp-jcs@v0 today. Ratification removed the
specification-side blocker and nothing else.

All six artifacts §5.1.3 required exist at this revision: the contract, the
corpus across all eight categories, the reference encoder, the verifier-only
path that imports nothing from it, the standalone kit, and the ratification.

Surfaces updated: Part 00 (intro, §17.1.1, tranche list), Part 01 §5.1.3,
CANONICAL_ENCODING.v0.1 (header and §7), the kit README, and both probe READMEs.
Part 07 §17 is new.

**Nothing historical is rewritten.** §15 and §16 said there was no ratification;
that was true when they were written. The receipts in src/, the Qwen VERDICT, and
every earlier statement about the prior state stand as correct about their moment
and superseded — a ledger that revises earlier entries to agree with later news
is the failure this history exists to prevent. §17 says which entries to read
beside it, and repeats that §15's restatement rests on a conflation argument and
NOT on the Qwen probe: ratification does not retroactively make that probe
evidence of anything.

**Provenance is stated rather than assumed.** The ratification reached the ledger
relayed — the steward said it, the voices that received it carried it here. No
s0fractal-signed chord exists for it yet and none was manufactured. The signed
steward receipt pinning the accepted SHA, the merge SHA, the manifest root and
this statement is the separate act that follows acceptance.

**One derived-artifact fix, required by the ratification itself.** The kit's
§5.1.3 region was anchored on the prose "**Design selected; conformance
pending.**" — precisely the sentence a ratification rewrites. A boundary that
changes when the content changes is not a boundary. It now runs heading to
heading, `#### 5.1.3` to `#### 5.1.4`. SPEC-EXTRACT.md, CONTRACT.md and
MANIFEST.sha256 rebuilt.

The normative corpus is untouched, and that is checked rather than asserted:
`git diff --quiet 852788f -- conformance/cnp-0-jcs-v0/corpus/` is clean, and the
digests are unchanged —

    required   dde58a183fa746900cc82de3f1935a09177483297ab16a650c2cba25c07e9e19
    extended   17aaf7ed6d92040b0d1c4b88f4157912c95029368b6d28e56f2144c103082e5a

No new cryptography, no new encoding rules, no new test cases, no hardening.
Status only, plus the derived artifacts that had to be rebuilt.

Base: main@852788f6d4219c5cb8294a5d92272fd74e2a47dc
New manifest root: c577b5fa5c06359cb01b9ad16e659fb891d47dffdd7114f1d4ab62041292e1f0

./t check 573 passed; kit selftest 26/26; reference adapter 126/126;
build_kit.py --check green.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DRHMVB9rUYNggn4wLmc1An
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Ratify RFC-0003 Tranche A3 without adoption or interop claims

📝 Documentation 🐞 Bug fix 🕐 20-40 Minutes

Grey Divider

AI Description

• Ratifies RFC-0003 Tranche A3 and CNP-0-JCS from the steward statement.
• Keeps adoption-evidenced and interop-confirmed explicitly false and independent.
• Rebuilds conformance-kit extracts and manifest using stable heading anchors.
Diagram

graph TD
  S["Steward statement"] -->|records| H["Revision history"] -->|ratifies| R["RFC status"] -->|updates| C["Encoding contract"] -->|projects| B["Kit builder"] -->|rebuilds| K["Derived kit"]
  R -->|scopes| P["Probe status"]
Loading
High-Level Assessment

The chosen approach is appropriate: record ratification as a new immutable history entry, update only current-status surfaces, preserve the independent evidence states, and regenerate derived kit artifacts. Rewriting historical receipts or manually maintaining extracts would weaken ledger provenance or reproducibility.

Files changed (11) +238 / -110

Bug fix (1) +11 / -3
build_kit.pyAnchor §5.1.3 extraction on structural headings +11/-3

Anchor §5.1.3 extraction on structural headings

• Replaces the mutable status-sentence anchor with heading-to-heading boundaries and documents why extraction anchors should remain structurally stable across content changes.

conformance/cnp-0-jcs-v0/tools/build_kit.py

Documentation (9) +223 / -103
CONTRACT.mdRegenerate the embedded ratified encoding contract +20/-24

Regenerate the embedded ratified encoding contract

• Updates the vendored contract hash and changes A3 artifacts from candidate or absent to ratified and present. It explicitly retains false adoption-evidenced and interop-confirmed states.

conformance/cnp-0-jcs-v0/CONTRACT.md

README.mdMark the conformance kit ratified +9/-2

Mark the conformance kit ratified

• Changes the kit status from candidate to ratified and explains that ratification does not establish substrate adoption or independent interoperability.

conformance/cnp-0-jcs-v0/README.md

SPEC-EXTRACT.mdRegenerate the complete §5.1.3 normative extract +44/-7

Regenerate the complete §5.1.3 normative extract

• Updates source hashes and expands §5.1.3 extraction to stable heading boundaries. The extract now includes the ratified A3 status and explicit false evidence states.

conformance/cnp-0-jcs-v0/SPEC-EXTRACT.md

CANONICAL_ENCODING.v0.1.mdRatify the canonical encoding contract +19/-23

Ratify the canonical encoding contract

• Marks CNP-0-JCS and all required A3 artifacts as ratified or present. It clearly excludes claims of adoption and independent interoperability.

contracts/CANONICAL_ENCODING.v0.1.md

00-architecture-and-ratification-map.mdUpdate the RFC architecture map for A3 ratification +45/-31

Update the RFC architecture map for A3 ratification

• Removes Part 01 as the specification-side blocker and records A3 as ratified. It separates that status from the still-false adoption-evidenced and interop-confirmed states.

docs/rfc/0003-heterogeneous-state-protocol/00-architecture-and-ratification-map.md

01-canonical-identity-and-encoding.mdRecord ratified canonical encoding status +10/-8

Record ratified canonical encoding status

• Updates §5.1.3 to state that the cross-substrate protocol specification is ratified while adoption and interoperability evidence remain absent.

docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md

07-revision-history.mdAdd the immutable A3 ratification record +64/-0

Add the immutable A3 ratification record

• Adds §17 with the steward's verbatim statement, the three independent states, ratified artifacts, relay provenance, and historical-record preservation rules.

docs/rfc/0003-heterogeneous-state-protocol/07-revision-history.md

README.mdClarify the failed probe's post-ratification relevance +6/-4

Clarify the failed probe's post-ratification relevance

• Records that A3 was ratified without a second encoder and reiterates that the terminated Qwen probe contributes no A3, adoption, or interoperability evidence.

probes/cnp-0-qwen-cleanroom-v0/README.md

README.mdRetarget seed verification toward adoption evidence +6/-4

Retarget seed verification toward adoption evidence

• Marks all six A3 requirements complete and shifts the next verification goal to real substrate adoption. It preserves the prohibition on citing the same-author probe as independent interoperability evidence.

probes/cnp-0-seed-v0/README.md

Other (1) +4 / -4
MANIFEST.sha256Refresh conformance-kit integrity hashes +4/-4

Refresh conformance-kit integrity hashes

• Recomputes checksums for the regenerated contract, README, specification extract, and build tool while leaving corpus hashes unchanged.

conformance/cnp-0-jcs-v0/MANIFEST.sha256

@qodo-code-review

qodo-code-review Bot commented Aug 26, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Seed still reports missing kit 🐞 Bug ≡ Correctness
Description
The seed README’s new text says all six A3 requirements exist and A3 is ratified, but the
immediately following current-status paragraph still says the conformance kit is the missing item.
This leaves the active probe’s guidance internally contradictory about what remains to be built.
Code

probes/cnp-0-seed-v0/README.md[R28-29]

+reproducible conformance kit, and steward ratification — **all six exist, and the
+steward ratified A3 on 2026-08-26** (Part 07 §17). Two independently
Relevance

●●● Strong

The README explicitly contradicts itself about whether the conformance kit is still missing.

PR-#22

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The added lines declare every A3 requirement present, while the next paragraph still identifies the
kit as missing; the README frontmatter now independently directs future work toward adoption
instead.

probes/cnp-0-seed-v0/README.md[1-4]
probes/cnp-0-seed-v0/README.md[21-33]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The active seed README says the conformance kit both exists and is still missing.

## Issue Context
After ratification, remaining work is adoption-evidenced and interop-confirmed, not packaging the already-ratified kit.

## Fix Focus Areas
- probes/cnp-0-seed-v0/README.md[21-33]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Contract remains metadata-draft ✓ Resolved 🐞 Bug ≡ Correctness
Description
The contract body now says RATIFIED while its machine-readable frontmatter remains status: "draft"
and its visible title remains “candidate.” The live contract catalog reads this field directly, so
status-filtered tooling continues to classify the ratified contract as a draft.
Code

contracts/CANONICAL_ENCODING.v0.1.md[R10-12]

+> **Status: RATIFIED 2026-08-26.** This document restates the encoding RFC-0003
+> Part 01 §5.1 selects, in the form an implementer needs. Tranche A3 is ratified
+> and the specification-side federation blocker is lifted.
Relevance

●●● Strong

Ratification changes require synchronized machine-readable metadata and visible status; stale draft
fields misclassify the contract.

PR-#21
PR-#22

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The source contract’s metadata contradicts its new status block; the catalog projects fm.status
and supports filtering by that exact value, while existing ratified ContractDescriptors use `status:
"ratified"`. The generated kit copy reproduces the stale metadata/title.

contracts/CANONICAL_ENCODING.v0.1.md[1-17]
src/x4F00_contracts.ts[19-22]
src/x4F00_contracts.ts[360-360]
src/x4F00_contracts.ts[708-714]
contracts/GAP_CLOSURE.v0.draft.md[1-7]
conformance/cnp-0-jcs-v0/CONTRACT.md[10-24]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The ratified contract still exposes draft/candidate metadata.

## Issue Context
Repository tooling uses frontmatter status for the live contract catalog; existing ratified contracts use ratified metadata.

## Fix Focus Areas
- contracts/CANONICAL_ENCODING.v0.1.md[1-10]
- conformance/cnp-0-jcs-v0/CONTRACT.md[1-17]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Corpus still says unratified 🐞 Bug ≡ Correctness
Description
The PR ratifies the CNP-0 corpus as an A3 artifact but leaves its executable manifest hard-coded as
candidate / unratified / partial implementation. Regenerating the corpus preserves that false
status, so consumers of the manifest continue to see the ratified artifact as unratified.
Code

contracts/CANONICAL_ENCODING.v0.1.md[R10-12]

+> **Status: RATIFIED 2026-08-26.** This document restates the encoding RFC-0003
+> Part 01 §5.1 selects, in the form an implementer needs. Tranche A3 is ratified
+> and the specification-side federation blocker is lifted.
Relevance

●●● Strong

Ratified artifact status must propagate into generated manifests; hard-coded unratified values
contradict the PR intent.

PR-#17
PR-#22

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new contract and Part 07 state that the CNP-0 corpus is among the ratified A3 artifacts, whereas
the current manifest and its generator explicitly label it unratified; TypeScript test and runner
paths read that manifest.

docs/rfc/0003-heterogeneous-state-protocol/07-revision-history.md[1131-1137]
probes/cnp-0-seed-v0/corpus/manifest.json[1-10]
probes/cnp-0-seed-v0/tools/build_manifest.py[564-578]
probes/cnp-0-seed-v0/ts/cnp0_test.ts[30-33]
probes/cnp-0-seed-v0/ts/runner.ts[68-74]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The ratified corpus manifest still reports candidate/unratified status.

## Issue Context
The status is hard-coded by the manifest generator, so update both source generation logic and generated output while preserving the separate partial-implementation caveat where appropriate.

## Fix Focus Areas
- probes/cnp-0-seed-v0/tools/build_manifest.py[564-578]
- probes/cnp-0-seed-v0/corpus/manifest.json[1-4]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View high (1)
4. Normative section denies ratification ✓ Resolved 🐞 Bug ≡ Correctness
Description
Part 01 now declares A3 ratified at the end of §5.1.3, but the same live normative subsection still
says “conformance pending,” “does not ratify Tranche A3,” and calls the kit a candidate. Readers and
the generated conformance extract therefore receive mutually exclusive current requirements/status
in one section.
Code

docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md[R495-499]

+§5.1 is now specified **and** ratified as a conforming cross-substrate protocol.
+That is a statement about the specification, not about the world it is meant to
+run in. The honest status is:
+
+> **A3: RATIFIED. adoption-evidenced: false. interop-confirmed: false.**
Relevance

●●● Strong

Normative text contains directly contradictory current statuses, and the generated extract preserves
both claims.

PR-#21
PR-#22

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The unchanged opening status in §5.1.3 directly denies the newly added ratification, and build_kit
copies the whole subsection into the kit, preserving both claims.

docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md[453-477]
docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md[495-504]
conformance/cnp-0-jcs-v0/SPEC-EXTRACT.md[252-303]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Part 01 §5.1.3 simultaneously says A3 is pending/unratified and ratified.

## Issue Context
The old status prose is still presented as current normative text and is copied into the conformance kit extract.

## Fix Focus Areas
- docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md[453-477]
- conformance/cnp-0-jcs-v0/SPEC-EXTRACT.md[252-276]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

5. Extract byte range is wrong 🐞 Bug ≡ Correctness
Description
The rebuilt §5.1.3 marker labels Python Unicode character indexes as bytes 23791..27893. Because
the source contains multibyte UTF-8 characters before this section, a consumer slicing the source by
the advertised byte range retrieves the wrong region even though --check passes.
Code

conformance/cnp-0-jcs-v0/SPEC-EXTRACT.md[224]

+<!-- quoted §5.1.3 from docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md sha256:d9067ec2a81691b3… bytes 23791..27893 region-sha256:f24e30d86ecb3de4… -->
Relevance

●●● Strong

Byte-range metadata is objectively wrong for multibyte UTF-8 sources; this breaks consumers despite
passing checks.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
source.index() and len(body) produce Unicode code-point offsets, while only the body-length
field is encoded to UTF-8; the emitted comment nevertheless labels start/end as bytes. The source
has multibyte characters such as § before and within §5.1.3, so byte and character positions
cannot match.

conformance/cnp-0-jcs-v0/tools/build_kit.py[162-180]
docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md[427-448]
conformance/cnp-0-jcs-v0/SPEC-EXTRACT.md[222-226]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Generated extract metadata publishes character positions as byte offsets.

## Issue Context
Keep text selection character-based if desired, but derive start/end from the UTF-8 encoding of the source prefix and selected body, then rebuild the extract and manifest.

## Fix Focus Areas
- conformance/cnp-0-jcs-v0/tools/build_kit.py[162-180]
- conformance/cnp-0-jcs-v0/SPEC-EXTRACT.md[222-224]
- conformance/cnp-0-jcs-v0/MANIFEST.sha256[1-9]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
Review mode: ⚖️ Balanced

Grey Divider

Tip of the day
💡 Did you know, you can start a comment with 'qodo' or '@qodo' to chat about any finding

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread contracts/CANONICAL_ENCODING.v0.1.md
Comment on lines +10 to +12
> **Status: RATIFIED 2026-08-26.** This document restates the encoding RFC-0003
> Part 01 §5.1 selects, in the form an implementer needs. Tranche A3 is ratified
> and the specification-side federation blocker is lifted.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

3. Corpus still says unratified 🐞 Bug ≡ Correctness

The PR ratifies the CNP-0 corpus as an A3 artifact but leaves its executable manifest hard-coded as
candidate / unratified / partial implementation. Regenerating the corpus preserves that false
status, so consumers of the manifest continue to see the ratified artifact as unratified.
Agent Prompt
## Issue description
The ratified corpus manifest still reports candidate/unratified status.

## Issue Context
The status is hard-coded by the manifest generator, so update both source generation logic and generated output while preserving the separate partial-implementation caveat where appropriate.

## Fix Focus Areas
- probes/cnp-0-seed-v0/tools/build_manifest.py[564-578]
- probes/cnp-0-seed-v0/corpus/manifest.json[1-4]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +28 to +29
reproducible conformance kit, and steward ratification — **all six exist, and the
steward ratified A3 on 2026-08-26** (Part 07 §17). Two independently

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

4. Seed still reports missing kit 🐞 Bug ≡ Correctness

The seed README’s new text says all six A3 requirements exist and A3 is ratified, but the
immediately following current-status paragraph still says the conformance kit is the missing item.
This leaves the active probe’s guidance internally contradictory about what remains to be built.
Agent Prompt
## Issue description
The active seed README says the conformance kit both exists and is still missing.

## Issue Context
After ratification, remaining work is adoption-evidenced and interop-confirmed, not packaging the already-ratified kit.

## Fix Focus Areas
- probes/cnp-0-seed-v0/README.md[21-33]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

## §5.1.3 — Parity is proven, not assumed

<!-- quoted §5.1.3 from docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md sha256:9c244fe2a7b4bc36… bytes 25115..27383 region-sha256:40d1af20265a5925… -->
<!-- quoted §5.1.3 from docs/rfc/0003-heterogeneous-state-protocol/01-canonical-identity-and-encoding.md sha256:d9067ec2a81691b3… bytes 23791..27893 region-sha256:f24e30d86ecb3de4… -->

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

5. Extract byte range is wrong 🐞 Bug ≡ Correctness

The rebuilt §5.1.3 marker labels Python Unicode character indexes as bytes 23791..27893. Because
the source contains multibyte UTF-8 characters before this section, a consumer slicing the source by
the advertised byte range retrieves the wrong region even though --check passes.
Agent Prompt
## Issue description
Generated extract metadata publishes character positions as byte offsets.

## Issue Context
Keep text selection character-based if desired, but derive start/end from the UTF-8 encoding of the source prefix and selected body, then rebuild the extract and manifest.

## Fix Focus Areas
- conformance/cnp-0-jcs-v0/tools/build_kit.py[162-180]
- conformance/cnp-0-jcs-v0/SPEC-EXTRACT.md[222-224]
- conformance/cnp-0-jcs-v0/MANIFEST.sha256[1-9]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@s0fractal

Copy link
Copy Markdown
Owner Author

Acceptance is blocked on exact head 6079f2e. This is not a new hardening request; current normative status surfaces contradict the ratification in the same tree.

Concrete current-state contradictions:

  • contracts/CANONICAL_ENCODING.v0.1.md still has front matter status: "draft", heading "Canonical Encoding — candidate", and "Executable candidate" while its banner says RATIFIED.
  • Part 01 §5.1.2.1 still says "draft selection" and "Tranche A3 candidate".
  • Part 01 §5.1.3 still says "Design selected; conformance pending", "It does not ratify Tranche A3", and "A candidate exists" for the kit, then later says A3 is RATIFIED.
  • Part 00 current A3 discussion still says "A candidate kit exists" after saying all six artifacts exist and A3 is ratified.
  • probes/cnp-0-seed-v0/README.md current banner says it does not close A3 and that Part 01 requires two independent encoders; its following section says the opposite and says all six artifacts exist.

Fix only these active/current claims. Preserve genuinely historical §15–§16, old receipts, Qwen VERDICT, and clearly marked pre-run Qwen status. Then rebuild the verbatim CONTRACT/SPEC extracts and MANIFEST, confirm corpus bytes/digests are unchanged, run build_kit.py --check and ./t check, and provide a new exact SHA + manifest root. Do not create the steward receipt yet.

Signing decision is resolved: s0fractal will personally run the one signing command on the Mac mini. Prepare the exact payload and command only after merge; do not invoke the s0fractal key yourself.

Codex blocked 6079f2e on a status contradiction, not on hardening: the same tree
asserted RATIFIED, "candidate", "conformance pending", and "requires two
independent encoders". All five instances were current claims, and one of them
was my own bug — the replacement of "**Design selected; conformance pending.**"
never landed, because the edit script that carried it aborted on a later
assertion before writing.

Fixed, current claims only:

* the contract's front matter `status: "draft"` → `"ratified"`, its title
  "— candidate" → "— ratified", "Executable candidate" → "Reference
  implementation", and its five self-references as "this candidate" → "this
  contract";
* Part 01 §5.1.2.1 heading "draft selection" → "the ratified selection", and
  "This draft selects CNP-0-JCS as the Tranche A3 candidate" → the ratified
  wording; §5.1's earlier "the leading Tranche A3 candidate" likewise;
* Part 01 §5.1.3's surviving "Design selected; conformance pending / It does not
  ratify Tranche A3" paragraph, replaced by the ratification and the steward's
  verbatim statement; "A candidate exists at conformance/cnp-0-jcs-v0/" → "It
  exists at";
* Part 00's "A candidate kit exists" → "That kit is at", §17.1.1's heading "Two
  decisions now have named candidates" → "One decision is ratified, one has a
  named candidate", and §17.1.2's "Naming candidates is not ratifying them" and
  "Draft selection is not adoption authority" → ratification-aware wording that
  keeps the point: A3 closed settles the specification, not adoption;
* probes/cnp-0-seed-v0's banner, which said it does not close A3 and that two
  independent encoders are required, while its next section said the opposite.

Historical surfaces untouched: Part 07 §15–§16, the receipts in src/, the Qwen
VERDICT, and the RFC-wide "this candidate" in Part 00's stewardship note — that
one is about RFC-0003 as a whole, which is still a draft. Only tranche A3 is
ratified.

Two derived-artifact fixes the ratification forced, both the same defect:

The kit's §5.1.2.1 anchor was the prose "This draft selects", which this commit
rewrites. Re-anchored to the heading, like §5.1.3 before it. A boundary that
moves with the content it delimits is not a boundary, and this is the second
time that has bitten in two commits.

The sealed qwen capsule crashed on `--check`: `main()` extracted from the live
specification and asked whether the capsule was sealed afterwards, so a missing
anchor killed it while re-deriving is precisely what a sealed capsule must never
do. The seal is now consulted first. Work performed ahead of the guard that makes
it unnecessary can fail for the reasons the guard exists to rule out — the same
shape as the FIFO refusal that was recorded and not honoured.

Corpus unchanged, checked not asserted:
`git diff --quiet 852788f -- conformance/cnp-0-jcs-v0/corpus/` clean;
required dde58a183fa746900cc82de3f1935a09177483297ab16a650c2cba25c07e9e19,
extended 17aaf7ed6d92040b0d1c4b88f4157912c95029368b6d28e56f2144c103082e5a.

No new cryptography, encoding rules, test cases or hardening.

New manifest root: 63bb595b56a7da32ab0fa1a23ea1ea5d2cb963cf42dc942e73739ccdea49ce74
./t check 573 passed; kit selftest 26/26; reference adapter 126/126;
build_kit.py --check green.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DRHMVB9rUYNggn4wLmc1An
@s0fractal

Copy link
Copy Markdown
Owner Author

Status contradictions fixed. New exact SHA: 2dd453b441ac62c45e07d8082943e1441247a89a
New manifest root: 63bb595b56a7da32ab0fa1a23ea1ea5d2cb963cf42dc942e73739ccdea49ce74

All five you named, plus a sweep for the same class:

where was now
CANONICAL_ENCODING.v0.1 front matter status: "draft" status: "ratified"
its title — candidate — ratified
its source list Executable candidate Reference implementation
its prose, ×5 "this candidate" (self-reference) "this contract"
Part 01 §5.1.2.1 heading draft selection the ratified selection
Part 01 §5.1.2.1 opening "This draft selects CNP-0-JCS as the Tranche A3 candidate" ratified wording
Part 01 §5.1.2 "the leading Tranche A3 candidate" "the ratified Tranche A3 encoding"
Part 01 §5.1.3 "Design selected; conformance pending / It does not ratify Tranche A3" ratification + the steward's verbatim statement
Part 01 §5.1.3 item 5 "A candidate exists at" "It exists at"
Part 00 §17.1.1 heading "Two decisions now have named candidates" "One decision is ratified, one has a named candidate"
Part 00 §17.1.1 "A candidate kit exists at" "That kit is at"
Part 00 §17.1.2 "Naming candidates is not ratifying them" / "Draft selection is not adoption authority" ratification-aware, keeping the point that A3 closed ≠ adoption
probes/cnp-0-seed-v0 banner "does not close Tranche A3 … requires two independent encoders" reference implementation; A3 ratified; both other states false

One of these was my own bug rather than an oversight: the Design selected; conformance pending replacement never landed in 6079f2e, because the edit script carrying it aborted on a later assertion before writing.

Untouched, deliberately: Part 07 §15–§16, the receipts in src/, the Qwen VERDICT, and Part 00's stewardship note calling RFC-0003 itself "this candidate" — that one is about the RFC as a whole, which is still a draft. Only tranche A3 is ratified.

Two derived-artifact fixes the ratification forced, both the same defect

The kit's §5.1.2.1 region was anchored on the prose This draft selects — the sentence this PR rewrites. Re-anchored to the heading, as §5.1.3 was in the previous commit. Second time in two commits that a prose anchor moved with the content it delimits.

The sealed Qwen capsule crashed on --check: main() extracted from the live specification and consulted the seal afterwards, so a missing anchor killed it — while re-deriving is exactly what a sealed capsule must never do. The seal is consulted first now. Work performed ahead of the guard that makes it unnecessary can fail for the reasons the guard exists to rule out; same shape as the FIFO refusal that was recorded and not honoured.

Acceptance

./t check                      573 passed, 366 signed chords valid
selftest.py                    26 passed, 0 failed
reference adapter              126/126
build_kit.py --check           green
git diff --quiet 852788f -- conformance/cnp-0-jcs-v0/corpus/   clean
  required   dde58a183fa746900cc82de3f1935a09177483297ab16a650c2cba25c07e9e19
  extended   17aaf7ed6d92040b0d1c4b88f4157912c95029368b6d28e56f2144c103082e5a

No new cryptography, encoding rules, test cases or hardening. No receipt.

Still awaiting your ruling on VERDICT.md:164 — I left it, reasoning in the PR body.

@s0fractal

Copy link
Copy Markdown
Owner Author

One final factual correction is required before acceptance; everything else in the bounded pass is clean.

VERDICT.md:164 must remain unchanged. It accurately records the historical post-§15 state: conformance kit and steward ratification pending, independent interoperability unconfirmed.

The error is in the new Part 07 §17 at lines 1163–1165, which says the Qwen VERDICT closing line claimed A3 still required two independent encoders. It does not: VERDICT lines 153–165 already describe the two-level restatement and say only kit + steward ratification were pending. Replace that sentence with an exact description, for example: "the Qwen VERDICT closing status recorded the conformance kit and steward ratification as pending; both were true at closure and are superseded by §16 and this §17." Preserve the statement that the probe produced no encoder and is evidence for nothing.

Verified on 2dd453b otherwise:

  • active status surfaces are consistent;
  • build_kit.py --check passes: 63 required, 52 extended, 6 verbatim regions;
  • kit selftest is 26/26;
  • seed and kit corpus bytes are unchanged from pre-ratification main;
  • current manifest root is 63bb595b56a7da32ab0fa1a23ea1ea5d2cb963cf42dc942e73739ccdea49ce74;
  • all GitHub checks are green.

After this docs-only correction, provide the new exact SHA and regenerated manifest root if it changes. Do not create the receipt yet. Signing decision remains: prepare one command for s0fractal after merge; do not invoke the key.

Part 07 §17 said the Qwen `VERDICT.md` closing line claimed A3 still required two
independent encoders. It does not. The verdict's **closing status**, in its
"Subsequent steward disposition" section, already carries the two-level
restatement and records the conformance kit and steward ratification as pending
and independent interoperability as unconfirmed — all true at closure, and
superseded by §16 and §17.

The "two independent encoders" sentence is in an earlier section the verdict
itself bounds as "recorded at closing", and it is superseded inside the same
document by the disposition that follows it. I attributed that earlier sentence
to the document's closing status, which misdescribed the document — a paraphrase
of a historical record is a claim about it, and this one was wrong.

The correction is here, not in the verdict. `VERDICT.md` stays untouched: it is
accurate about each moment it names, and editing it to read better in hindsight
is the ledger-revision failure §17 exists to warn about. §17 now says which of
its two sections says what.

Preserved unchanged: the probe produced no encoder and is evidence of nothing.

Docs only. No status surface, no code, no derived artifact touched — the manifest
root is unchanged at
63bb595b56a7da32ab0fa1a23ea1ea5d2cb963cf42dc942e73739ccdea49ce74.

./t check 573 passed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DRHMVB9rUYNggn4wLmc1An
@s0fractal

Copy link
Copy Markdown
Owner Author

Corrected. Final SHA: 94c33d55eaa727a478ccbe2435d29171a8893e07
Manifest root unchanged: 63bb595b56a7da32ab0fa1a23ea1ea5d2cb963cf42dc942e73739ccdea49ce74 — docs only, nothing derived was touched.

You were exactly right, and the error was a paraphrase claiming more than it checked. §17 now says which of the verdict's two sections says what:

its closing status, in the "Subsequent steward disposition" section, already carries the two-level restatement and records the conformance kit and steward ratification as pending and independent interoperability as unconfirmed. Both were true at closure and are superseded by §16 and by this §17. Its earlier "recorded at closing" section does say A3 still required two independent encoders — correctly, for the moment that section names, and superseded inside the same document by the disposition that follows it.

It also names the mistake rather than quietly repairing it: an earlier draft attributed that earlier sentence to the verdict's closing status, and the correction lives in §17 rather than in the verdict. VERDICT.md is untouched — it is accurate about each moment it names, and editing it to read better in hindsight is the ledger-revision failure §17 exists to warn about.

Preserved unchanged: the probe produced no encoder and is evidence of nothing.

./t check 573 passed. Ready for merge.

After merge I will post the exact payload and the single signing command for @s0fractal to run on the Mac mini, and will not invoke the key.

@s0fractal

Copy link
Copy Markdown
Owner Author

ACCEPTED by Codex on exact head 94c33d5.

Final bounded check:

  • delta from 2dd453b touches only Part 07 §17;
  • VERDICT.md remains unchanged and is now described exactly: its recorded-at-closing section had the old two-encoder requirement, while its subsequent disposition already had the two-level gate and kit + steward ratification pending;
  • corpus and manifest remain unchanged from the previously verified candidate; manifest root remains 63bb595b56a7da32ab0fa1a23ea1ea5d2cb963cf42dc942e73739ccdea49ce74;
  • verify, cross-substrate, and GitGuardian are green on this exact SHA.

After merge, prepare the formatted receipt and exact payload, but do not invoke the s0fractal key. The steward will personally run the one signing command. After the signature is inserted, verification must be read-only: no formatter or --fix operation may rewrite the signed bytes.

@s0fractal
s0fractal merged commit 786e3b1 into main Aug 26, 2026
3 checks passed
@s0fractal
s0fractal deleted the spec/rfc-0003-a3-ratification branch August 31, 2026 09:44
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