5.1 KiB
Draft(b): expected P10 reasons before diagnostic(a)
Not derived from diagnostic output. No test edit is prepared or committed. The brief delegates P10 checks/outcome wording to DESIGN (docs/plans/2026-10-21_tester-socket-scripts.md:31). DESIGN.md:163-170 requires the failed reason to identify the failing observation, rather than accepting any unnamed line. BUILD.md:17 records the separate parent/socket/process/snapshot and peer checks. C4 refined failure classes in DESIGN-C4.md:84 and:91-95, with BUILD.md:175-177 recording distinct refusals.
The approved prose names semantic classes, not a literal exhaustive code-name table. The expected bounded labels below name those classes using existing source labels, cited separately for transparency. They are not selected from (a). peer-malformed=probe is additionally explicit in mos1293. If the diagnostic reports a different class/code, send it to Mos before any edit, even if it would make an existing broad assertion pass.
| Fault | Expected reason= | Designed observation | Design/build authority | Existing label locator, not output oracle |
|---|---|---|---|---|
| parent-mode | metadata | Private parent mode is exact0700 | DESIGN.md:119; BUILD.md:17 | scripts/case1-accept.sh:659 |
| parent-owner | metadata | Parent owner is stack uid | DESIGN.md:119; BUILD.md:17 | scripts/case1-accept.sh:659 |
| socket-mode | metadata | Socket mode is exact0600 | DESIGN.md:120; BUILD.md:17 | scripts/case1-accept.sh:659 |
| socket-owner | metadata | Socket owner is stack uid | DESIGN.md:120; BUILD.md:17 | scripts/case1-accept.sh:659 |
| socket-type | metadata | Final entry is socket | DESIGN.md:119; BUILD.md:17 | scripts/case1-accept.sh:659 |
| symlink | metadata | Final entry is not symlink | DESIGN.md:119; BUILD.md:17 | scripts/case1-accept.sh:659 |
| peer | peer | Connected uid equals stack uid | DESIGN.md:136; BUILD.md:17 | scripts/case1-accept.sh:665 |
| peer-pid | peer | Connected pid equals MainPID | DESIGN.md:136; BUILD.md:17 | scripts/case1-accept.sh:665 |
| python-mode | interpreter | Fixed system interpreter safely owned and protected | DESIGN.md:126; BUILD.md:17 | scripts/case1-accept.sh:660 |
| python-missing | interpreter | Missing system Python is failed observation | DESIGN.md:129; BUILD.md:17 | scripts/case1-accept.sh:660 |
| python-not-elf | interpreter | System entry target is ELF | DESIGN.md:126; BUILD.md:17 | scripts/case1-accept.sh:660 |
| peer-malformed | probe | Probe returns only exactly pid uid gid | DESIGN.md:135; DESIGN.md:163; BUILD.md:17; mos-1293 item2 explicitly reason=probe | scripts/case1-accept.sh:666 |
| peer-error | probe-inner-command | Nonzero child output discarded, distinct child failure | DESIGN-C4.md:84-85; BUILD.md:175; BUILD.md:177 | scripts/case1-accept.sh:662; tester_capture_reason |
| peer-uid-fields | metadata | MainPID four proc uid fields equal stack uid | DESIGN.md:118; BUILD.md:17 | scripts/case1-accept.sh:659 |
| changed-inode | changed | Snapshot replacement fails observation | DESIGN.md:120; DESIGN.md:121; BUILD.md:17 | scripts/case1-accept.sh:668 |
| changed-pid | changed | MainPID change fails observation | DESIGN.md:121; BUILD.md:17 | scripts/case1-accept.sh:668 |
| floor | floor | Numeric floor above privileged Console port | DESIGN.md:122; DESIGN.md:123 | scripts/case1-accept.sh:658 |
All existing status assertions and the boundary=failed/no-boundary=observed assertions remain. The draft adds exact reasons; it never weakens a status or changes a failure to fit observation. The special peer-uid-fields functional failure remains exit1. Product changes require Mos. A fixture-only repair can be considered only when the stub is shown to mask the intended fault, under mos1293.
One scratch archive of0604d91fc is prepared at the path in PREPARE.json. Its only change logs every P10 line, reason and status immediately before the same existing assertions in the named loop. Both product scripts and shared fixture are exact base blobs. The COPY-PATH is not a commit/worktree. No source or test in the seat checkout is changed.
On Sage CLEAR: create TMPDIR via mktemp-d /mnt/storage/scratch/tmp/gXXX, export it, invoke diagnostic-a/run.py with that grant. It gates with the busy check, uses timeout-k10 418 and outer448, pipefail/tee, records command/header/results and writes P10.jsonl. It refuses a second run if output exists. No diagnostic/syntax/Node execution has run while preparing this.
Duckworth0160 expected-set review
All17 expected reasons accepted by source-only review. C1: assert the exact reason token, including its following space, for example reason=probe , or match the full P10 line. A prefix expression /reason=probe/ is forbidden because it also accepts probe-inner-command and other probe-* reasons. C2: keep every existing status, boundary=failed and no-boundary=observed assertion. A fixture repair is limited to a mask shown by diagnostic(a), and an unexpected reason goes to Mos before any edit.
N1 citation corrected: peer-error child failure is DESIGN-C4.md:84-85. N2: the existing peer-hang test at case1-accept.test.mjs:291 has a separate loose probe prefix; Duckworth says it is outside mos1292/1293 scope and does not bind this repair. No change to it is prepared.