Render human CLI output consistently as inert text - #20
Merged
Conversation
Apply existing single-line rendering to report findings, init roots, ingest paths, and clean-room configuration stderr. Keep machine JSON and shared rendering semantics unchanged, with focused real-filesystem regressions and CLI documentation. 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
Apply the existing
inertSingleLineTextconvention only at human-facing interpolation sites:init: displayed root;ingest: displayed result source path.check: human-readable invalid-config stderr diagnostic, including when the report itself uses--json.This is low-severity output robustness hardening against terminal/C1/bidirectional controls, not an admission bypass or remote-code-execution fix. Ordinary wording, literal backslashes, report structure, and exit behavior remain unchanged. The CLI reference documents the distinction between human presentation and machine data.
No changes to
safeJsonStringify,inertText, canonicalization, or machine JSON serialization. Parse-equivalence regressions preserve original control characters, CR/LF, quotes, and literal backslashes byte-exact; emitted safe JSON text remains inert without sanitizing its decoded values.Based on audited main
a62686c3ab6d58c67f7b1c58529436099372b95d.Trust-boundary impact
None. No changes to Bronze capture/parsing, strict model draft v1 or host-staged Silver v2, external human Ed25519 authorization, Gold admission, profile isolation, hashes, or Gold-only/read-only MCP. This PR needs independent human review; AI checks are not a human approval substitute. No protection/settings changes or merge are requested.
Validation
npm run buildfollowed by focused tests for CLI inert output, presentation, CLI behavior, clean-room reports, conformance, and check-config: 84 passed, 0 failed, 0 skipped.npm run check: 703 passed, 2 existing permission-related skips out of 705 main tests; 11 script tests passed; documentation links and style checks passed.node dist/src/cli/main.js check --root . --audit-clean-room: PASS on the actual checkout, with no exclusion changes or source-snapshot workaround.git diff --checkandgit diff --cached --check: passed before commit.safeJsonStringifychecks assert byte-exact decoded strings in compact and pretty modes.Checklist
--promoteflag was added.instruction_authority: none.npm run checkpasses.node dist/src/cli/main.js check --root . --audit-clean-roompasses.