Skip to content

Render human CLI output consistently as inert text - #20

Merged
patschmittdev merged 2 commits into
mainfrom
patschmittdev-inert-cli-output
Sep 12, 2026
Merged

Render human CLI output consistently as inert text#20
patschmittdev merged 2 commits into
mainfrom
patschmittdev-inert-cli-output

Conversation

@patschmittdev

Copy link
Copy Markdown
Owner

Summary

Apply the existing inertSingleLineText convention only at human-facing interpolation sites:

  • Clean-room Markdown: finding path, category, and detail.
  • Conformance Markdown: case ID and detail.
  • 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

  • Regression-first evidence: five initial unsafe-output tests failed before the scoped patch, and the additional unknown-config-key stderr test failed before its fix. Ordinary-rendering and JSON round-trip tests passed unchanged.
  • npm run build followed 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 --check and git diff --cached --check: passed before commit.
  • Local platform: Windows. CLI tests create actual temporary roots, renamed existing Bronze files for duplicate lookup, a non-UTF-8 file, and a YAML config with an unknown key. No filesystem mocks. Names use Windows-permitted C1, bidi, and Unicode line separator characters; C0 controls are synthetic renderer/JSON inputs or escaped YAML content, not purported Windows filenames. Hostile CLI output is captured rather than printed live.
  • Machine JSON from ingest/check retains exact original filenames and diagnostics; direct safeJsonStringify checks assert byte-exact decoded strings in compact and pretty modes.

Checklist

  • Behavior changes include tests that use real temporary files.
  • Model pathways still cannot write Bronze, knowledge, trust, receipts, reviewed metadata, or indexes.
  • No signer, apply, approve, promote command, or --promote flag was added.
  • Retrieved content remains reference-only with instruction_authority: none.
  • Documentation and compatibility notes match the implementation.
  • npm run check passes.
  • node dist/src/cli/main.js check --root . --audit-clean-room passes.
  • No private key, credential, personal path, or private vault content is included.

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
patschmittdev merged commit 8dd3f6d into main Sep 12, 2026
7 checks passed
@patschmittdev
patschmittdev deleted the patschmittdev-inert-cli-output branch September 12, 2026 18:31
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
## 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>
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