fix: refusals stop echoing file values and parser text (#1873) #1912

Merged
jason.woltje merged 2 commits from org-redact3 into refactor 2026-11-10 23:56:02 +00:00
Owner

Redaction round 3 (#1873): the remaining refusals that echoed a file value or a JSON parser message.

  • Eight semantic-validation refusals in organization (util.mjs id, positive integer, date and calendar date; access.mjs ISO time, calendar time and grant instance) and the harness built-in web refusal now name the field and the expected shape, without the value.
  • Fifteen parser refusals (control-board, discord, seat, runs, project, queue, mosaic-task.mjs, case2-precheck.sh) name the file, and file:line for the journal, without the parser text. Modules that already import organization reuse parseJsonFileText; runs, project and queue keep a local catch with fixed text instead of a new package dependency.
  • Read errors other than a parse failure keep the native errno code, with no message or cause.
  • Error classes, refusal codes, exit codes and validation predicates are unchanged.
  • Test-only: the minimal scratch checkouts in the ledger, queue and launcher fixtures copy the three parser modules they now need. The case sudo fixture arms its seven-second cleanup guard from the probe-start observer instead of before host setup, which removes a setup-time race in the P10 tests. No production timeout or assertion changed.

Lane: Sol. Regression tests use the sentinel sk-test-NOT-A-SECRET-1234: the original nine files were 0/23 on BASE and 23/0 on the candidate. Gate on the rebased tree: 268 files, 3412/0, summed from each file's latest run. Timing reds in case1-accept and case2-unit passed isolated reruns, and the legacy timeout and P10 outer reds reproduce on BASE. Review: Opus, changes (one P2, one P3), both fixed. Remaining value echoes outside this charter are listed in the lane report for a later slice.

Redaction round 3 (#1873): the remaining refusals that echoed a file value or a JSON parser message. - Eight semantic-validation refusals in organization (`util.mjs` id, positive integer, date and calendar date; `access.mjs` ISO time, calendar time and grant instance) and the harness built-in web refusal now name the field and the expected shape, without the value. - Fifteen parser refusals (control-board, discord, seat, runs, project, queue, `mosaic-task.mjs`, `case2-precheck.sh`) name the file, and `file:line` for the journal, without the parser text. Modules that already import organization reuse `parseJsonFileText`; runs, project and queue keep a local catch with fixed text instead of a new package dependency. - Read errors other than a parse failure keep the native errno code, with no message or cause. - Error classes, refusal codes, exit codes and validation predicates are unchanged. - Test-only: the minimal scratch checkouts in the ledger, queue and launcher fixtures copy the three parser modules they now need. The case sudo fixture arms its seven-second cleanup guard from the probe-start observer instead of before host setup, which removes a setup-time race in the P10 tests. No production timeout or assertion changed. Lane: Sol. Regression tests use the sentinel `sk-test-NOT-A-SECRET-1234`: the original nine files were 0/23 on BASE and 23/0 on the candidate. Gate on the rebased tree: 268 files, 3412/0, summed from each file's latest run. Timing reds in case1-accept and case2-unit passed isolated reruns, and the legacy timeout and P10 outer reds reproduce on BASE. Review: Opus, changes (one P2, one P3), both fixed. Remaining value echoes outside this charter are listed in the lane report for a later slice.
jason.woltje added 2 commits 2026-11-10 23:55:55 +00:00
jason.woltje merged commit 96c900d210 into refactor 2026-11-10 23:56:02 +00:00
Sign in to join this conversation.