Fix frontmatter scalar validation and reject hidden policy whitespace - #3067
Chris0Jeky wants to merge 138 commits into
Conversation
…92-typed-links-core
…92-typed-links-portability
…92-typed-links-ui
…92-typed-links-portability
…92-typed-links-portability
…integration Deliver proposal webhook durability and card recovery fixes
…t-reselection Reconcile archive and restore after Paper card reselection
Chris0Jeky
left a comment
There was a problem hiding this comment.
Fresh-context review of the follow-up head: no merge-blocking parser or fail-closedness finding.
The implementation now describes and enforces one explicit YAML subset instead of partially emulating arbitrary YAML. Quoted scalars are consumed completely; doubled single quotes and JSON-compatible double-quote escapes are handled; plain scalars retain internal quotes/brackets; leading structural indicators, flow collections, nested mappings, block scalars, tags/aliases, tabs and inconsistent list indentation fail closed. Path entries additionally reject empty, trimmed-different and control-character values, while quoted empty metadata values remain valid.
The full-frontmatter walk is important: malformed material after paths cannot be ignored while certifying the rule. Duplicate keys also fail without making a claim about which value an external loader would choose.
Exact-head Required CI 34715606746 and Smart CI 34715606620 are successful. CI Extended's only failure is the repository's unrelated Load and Concurrency Harness; workflow lint, PostgreSQL Testcontainers, backend solution regression, E2E and the other reported jobs passed. Issue #3005 still owns wiring these focused parser regressions into the hosted docs-governance lane. Within that stated boundary, this PR is ready for maintainer review.
…on-guidance Show relation-specific navigation guidance while proposals are pending
…esize Refresh CardModal fallback height on window resize
…tion-constraints Fix CardRelations PostgreSQL schema creation
Chris0Jeky
left a comment
There was a problem hiding this comment.
PARKED at the review/fix ceiling on exact base ce97301bd7436008941950c010c2ade48dea2c41 and head 9fea3430bf6a1e2ae74186bcb31fcf63c659946b.
The Unicode-edge/NUL repair passes 83 focused tests, governance, syntax, doc links, and diff check. The bounded verification pass nevertheless confirmed two remaining HIGH fail-open cases:
- decoded internal controls (
\n,\r,\t, C1 controls) can remain inside a mirrored path; the checker returns green while the resulting glob does not match the intended control file; - unquoted YAML implicit types such as
null,true, and123are accepted as string paths even though a core-schema YAML loader resolves them as non-strings.
Both can certify an ineffective/non-string control-path mirror. This is the verification pass after the permitted fix round and neither finding is a newly introduced CRITICAL, so repository policy parks the PR instead of reopening another parser cycle. Hosted exact-head CI is not treated as merge evidence for this parked head.
|
@codex address that feedback Please fix and regression-test the two confirmed HIGH fail-open cases on the current branch, limited to the intended validator/test/evidence files:
Add focused red/green tests and keep all existing supported scalar behavior. Do not touch unrelated files despite the contaminated PR history. I will recover the resulting three intended files onto a clean current-main branch after verification. |
Summary
Testing
|
|
@codex please publish the completed three-file validator fix. GitHub cannot resolve local commit |
Summary
Testing
|
|
Clean replacement opened as #3134 from current main. It contains exactly the repaired validator, focused regression suite, and evidence note from head |
|
Superseded by merged PR #3134, which carries the repaired frontmatter governance implementation and its final terminal-surrogate fix. Closing this contaminated-history predecessor; the review and evidence remain available here for provenance. |
Summary
Closes #3006.
Repair the dependency-free control-path mirror validator without editing CI policy, workflows or the agent rule itself. Plain scalars retain internal apostrophes/brackets; leading quoted scalars are parsed completely; malformed/unsupported mappings, list indentation, tags/aliases, trailing quoted garbage and policy whitespace fail closed. Quoted alias-like globs and supported string escapes are handled explicitly. Duplicate-key wording no longer makes an incorrect claim about loader behavior.
This deliberately accepts a documented subset of YAML rather than approximating arbitrary YAML. Issue #3005 still owns wiring the regression suites into the hosted docs job.
Review follow-up
Head
dda9caa4105c26a533d08194111ae501fb9b0793addresses the first automated review's quoted-empty metadata-list finding (discussion_r3997359370). Empty quoted metadata strings now work in scalar/list form; empty paths and missing/unquoted list values remain rejected. Six added cases reproduced two failures before the correction and pass afterward. Exact-head review of this follow-up remains required.Validation
Linux / Node v22.16.0, uploaded snapshot in an isolated linked worktree. The original two changed scripts matched live main
54e4c0a86fb77eabba73b5d21557d6f8720571bdbyte-for-byte; remote history starts on that real main commit, not reconstructed snapshot history.node --test scripts/check-*.test.mjs: 183 passed / 2 failed. Both also reproduce on unchanged source (138 passed / 2 failed): wrong-case-vs-missing link diagnostic on the case-sensitive filesystem, and an indirectly imported staging fixture requiring absent Docker. No broad-green claim; the link-test portability finding is also documented on [CI][Docs governance] Run check-docs-governance.test.mjs and check-doc-links.test.mjs in the docs-governance job (control-plane follow-up to PR #3002) #3005.git diff --checkpass.Integration and scope
Three files only: validator, its regression suite and a dedicated analysis/evidence note. No overlap with inspected #3066 feature paths or archive-editor/estimate changes. No canonical STATUS/MASTERPLAN churn, human-checkbox edits, project-wide priority sync, required-context changes, merge or deployment. Existing device/screen-reader, release/hosting and CI-control-plane decisions remain unchanged. Run the focused suite explicitly while #3005 remains open.