Align served Gold bodies with signed canonical line endings - #21
Merged
Merged
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
patschmittdev
added a commit
that referenced
this pull request
Sep 12, 2026
The sole maintainer reviewed the changes and explicitly authorized a one-time review-only exception for PRs #18, #19, #20, and #21. Required CI checks and all other branch protections remained enforced. This is not a recorded independent GitHub approval. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
patschmittdev
added a commit
that referenced
this pull request
Sep 12, 2026
The sole maintainer reviewed the changes and explicitly authorized a one-time review-only exception for PRs #18, #19, #20, and #21. Required CI checks and all other branch protections remained enforced. This is not a recorded independent GitHub approval. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
patschmittdev
added a commit
that referenced
this pull request
Sep 12, 2026
The sole maintainer reviewed the changes and explicitly authorized a one-time review-only exception for PRs #18, #19, #20, and #21. Required CI checks and all other branch protections remained enforced. This is not a recorded independent GitHub approval. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
8 tasks
patschmittdev
added a commit
that referenced
this pull request
Sep 12, 2026
## Summary
Astro removed newline/indentation whitespace immediately before three
inline anchors in `site/src/pages/index.astro`. The production DOM
contained `Clone therepository`, `then theattack-control mapping`, and
`and theguarantees and residual risks`. Add explicit `{' '}` at those
three boundaries, preserving commas, the final period, navigation/flex
spacing, layout, and palette. No CSS changes.
Audit all six homepage prose anchors with DOM Range assertions before
and after each link, including the already-correct provenance, overview,
and project-status links. The regression runs in the existing visual
suite and catches joined text regardless of CSS spacing or axe results.
Screenshots now use Playwright's output directory so artifacts can
remain outside the checkout. A validated decimal `PORT` override selects
the same loopback port as the static server; occupied ports fail instead
of silently reusing another worktree's server.
Qualify one consequential claim: a missing signer is not OS-enforced
private-key isolation. The homepage now explicitly makes custody outside
the vault and access restrictions for the model/Ziggurat process an
operator responsibility. AdmissionFigure uses the corresponding
imperative rather than implying automatic isolation. Other wording and
historical measurement caveats are unchanged.
## Trust-boundary impact
None to runtime behavior, contracts, signing bytes, admission, or
retrieval. This is a presentation correction and test isolation change.
Focused claim trace uses final integrated main
**`a8e3606d1820ee90ae8e6aea0a993ccb5b29eaef`**, including #19, #18, #20,
and #21:
- Strict model draft v1, host materialization/staging of Silver v2, and
live evidence checks remain in `src/contracts/refinement-draft.ts` and
`src/refine/`.
- Bronze remains CRLF-only canonical text; shared parsing now aligns
duplicate detection and verification. Gold uses signed canonical line
endings, while conditional `source_body_sha256` retains live staleness
detection without becoming receipt authority.
- Gold still requires the external Ed25519 receipt plus every
eligibility check. Three physically separate profiles, Gold-only
read-only MCP, and reference/none output labels remain unchanged.
- Human CLI display escaping does not change decoded JSON values.
Loopback adapter limits and lack of a shipped signer remain unchanged.
The custody qualification was the only substantive homepage mismatch
identified in this scoped trace. This is not a comprehensive
correctness/security certification, proof of human attention or semantic
truth, or production-readiness claim. Source-only/pre-1.0 status remains
explicit. Existing measurements are bounded historical development
evidence; this PR does not re-benchmark the updated runtime.
## Validation
- Confirmed the new DOM regression fails on the unfixed production build
for all three missing-space locations.
- `npm run site:check`: passes; zero Astro diagnostics, 7 plugin tests,
24 built pages and link/asset validation.
- `npm run visual -- --grep 'homepage inline prose link boundaries| /
visual and accessibility' --output <external-artifact-directory>` from
`site`, with `PORT=4339`: **12 passed**, desktop/tablet/mobile in
light/dark. Includes text boundaries, custody wording, layout
thresholds, and axe.
- Inspected bounded desktop/mobile light/dark screenshots and readable
evaluation/custody crops. This is a focused local inspection, not
independent human visual signoff.
- Port probes: 7 invalid values rejected, 3 valid values discover all
six text cases, occupied port explicitly refused.
- `npm run check`: **728 passed, 3 platform skips** in the 731-test
runtime suite; 11 script tests passed; documentation links and style
passed.
- `node dist/src/cli/main.js check --root . --audit-clean-room`: PASS,
no findings.
- `git diff --check`: passes. Screenshots/logs are outside the checkout;
no dependency, runtime, or CSS changes.
This PR requires the normal independent review and required CI. It is
not covered by the one-time exception for the four preceding PRs and
must not be merged under that exception.
## Checklist
- [x] Behavior changes include tests that use real temporary files.
- [x] Model pathways still cannot write Bronze, knowledge, trust,
receipts, reviewed metadata, or indexes.
- [x] No signer, apply, approve, promote command, or `--promote` flag
was added.
- [x] Retrieved content remains reference-only with
`instruction_authority: none`.
- [x] Documentation and compatibility notes match the implementation.
- [x] `npm run check` passes.
- [x] `node dist/src/cli/main.js check --root . --audit-clean-room`
passes.
- [x] No private key, credential, personal path, or private vault
content is included.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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
Align served Gold body line endings with the existing signed canonical representation. This is a representation-consistency fix, not a cryptographic collision or admission bypass. Based exactly on audited commit
a62686c3ab6d58c67f7b1c58529436099372b95d.makeGoldChunkinsrc/retrieval/chunks.tsreuses the existing CRLF-only helper for the parsed source representation, then authorization's existingnormalizeTextbefore constructing the Gold body and body-derived chunk ID. Review/evidence Gold, BM25, citation hashes, and integrity fingerprints consistently consume that canonical LF body.Normalizing body and ID alone would hide a post-build lone-CR mutation from freshness checks. A host-derived, optional
source_body_sha256cache field preserves the parsed pre-canonical body hash only when it differs from canonical LF. Gold stores it on the chunk, and review/evidence copy it into authorization provenance. Constructor and schema field order match. Removed, tampered, and unexpected markers fail verification, including when cache fingerprints are recomputed.Compatibility: This is a bounded optional index-v2 cache schema extension, not a receipt change. Ordinary LF/CRLF serialized chunks, IDs, and fingerprints remain unchanged. If indexed Gold contains lone CR, rebuild all three indexes with
ziggurat buildafter updating. Those legacy snapshots fail live verification; rebuilding changes their Gold chunk IDs, citation body hashes, and fingerprints. Obtain new citations afterward. Rolling back to an older binary also requires rebuilding affected indexes because older strict schemas reject the new field. No re-signing or Silver restaging is needed.Changed files:
src/retrieval/chunks.tssrc/contracts/gold-index.tssrc/retrieval/profile-index.tstest/gold-body-normalization.test.tsdocs/retrieval-evaluation.mdsite/src/content/docs/concepts/tiers.mdTrust-boundary impact
Only host-constructed Gold cache representation and related cache provenance change. The source-body marker is neither an admission nor signing input. Receipt v1 canonical bytes, digest algorithm, signing payload, published vectors, and verification are unchanged. Generic corpus parsing and Bronze storage/canonicalization are untouched: Bronze still normalizes CRLF only and preserves lone CR in body hashes and line-range citations. Source files, receipts, and trust configuration are not rewritten. Machine JSON remains lossless with no double escaping.
All-profile LF -> lone CR -> mixed -> LF mutation tests retain stale-search/citation refusal before rebuild, recover canonical retrieval after rebuild, and invalidate citations issued for the prior corpus state. Three physically separate indexes and shipped Gold-only/read-only MCP remain unchanged. No signer, admission bypass, trust writes, or model authority are added.
Validation
npm run check: passed, 708 core tests passed and 2 existing permission-dependent tests skipped because this filesystem/user does not enforce those permissions; all 11 script tests, links, and style checks passed.npm run site:check: passed, zero Astro diagnostics, 7 plugin tests passed, all 24 built pages validated.node dist\src\cli\main.js check --root . --audit-clean-room: PASS, no findings and no exclusion changes.git diff --check: passed.This PR requires independent human review and the normal required Actions checks. No merge or protection bypass is requested.
Checklist
--promoteflag was added.instruction_authority: none.npm run checkpasses.node dist/src/cli/main.js check --root . --audit-clean-roompasses.