fix(fabrika): seat exit 11 in write-pattern's two writing verbs (#5355) - #5365
Conversation
No preview deploy
|
|
review-skill: FAIL @ 04353ef — changes-requested Reviewed-head: @ 04353ef Verified PR #5365 against #5355's acceptance criteria + the skill-rigor checklist. Class: non-blocking ( The finding in one line: the four rows land, but the two Errors rows specify stderr bytes that the already-merged implementation does not emit, and The
Every other row in these two Errors tables is verbatim the string the code emits ( Acceptance criteria
Skill rigor
Read the PR head (§HEAD): all contract text under review sourced from Failing items above must be addressed before this PR can merge. The PR stays open and unmerged; #5355 stays open and assigned. Re-request review once they're satisfied. Verdict-written: 2026-08-10T21:19:49Z |
The two Errors rows added for `11 PRECONDITION_UNKNOWN` specified messages the merged implementation does not emit, and `pattern register`'s single row covered one of its three exit-11 sites. Both tables now carry the strings `packages/fabrika-cli/src/pattern/` prints on origin/main: `new-verb.ts` (`cannot check <path>`), and `register-verb.ts` at all three sites (index existence, index read, doc existence).
|
review-skill: PASS @ c4f598e — merge-ready Reviewed-head: @ c4f598e Re-gate of PR #5365 after repair round 2 (prior verdicts: FAIL @ Required namespace set for this diff (1 file, has-skills): The head is unchanged. The round-2 blocker is fixed. The one FAIL standing at this head was
Acceptance criteria — re-confirmed against the same head; the diff is the same six added rows, zero removed lines, against merge base
Skill rigor
Read the PR head (§HEAD): the head SHA was resolved live via REST and re-confirmed unchanged before binding; all contract text and the shipped verb sources were read from All checks pass — 7/7 acceptance criteria and 6/6 rigor rows, including deviation-disclosure. This PR is merge-ready. review-skill does not merge — Verdict-written: 2026-08-10T21:43:36Z |
The
write-patternCLI contract already defines exit11for "a precondition read failed", and three of its five verbs use it. The two verbs that write files —pattern newandpattern register— did not, so a read that errored fell through to exit1, the code this repo reserves for "the call never ran". This adds the missing seat to both verbs so a failed read is told apart from a call that never happened.Six table rows, no code change: one Exit status row per verb, plus one Errors row per exit-
11site in the shipped verb (one forpattern new, three forpattern register), reusing the shared matrix's existing11 PRECONDITION_UNKNOWN.pattern new—11when the target-path existence check itself fails, so existence is neither proven nor disproven (distinct from13, which is proven).pattern register—11at each of its three precondition reads: the<dir>/index.mdexistence check, the<dir>/index.mdread, and the<dir>/<slug>.mdexistence check (distinct from15and12, which are proven facts).Message wording is quoted verbatim from the shipped verbs (
packages/fabrika-cli/src/pattern/{new,register}-verb.ts) —pattern <verb>: cannot check|read <path>: <reason> — nothing was written.No new exit code is minted, nothing is renumbered, exit7(ZERO_SCOPE) stays unseated, codes3–6stay deliberate gaps, and the shared matrix, the seat map, and the three verbs that already seat11are untouched.Same defect and same shape as #4736 in the sibling
adrcontract; belongs to the #4208 collision (a failed read is not a call that never ran).Fixes #5355
Deviations
11seat inpattern new/pattern register#5355's What the fix isasks for "four rows total, two per verb", and AC2/AC4 ask for the stderr row "in the group's
existing refusal wording, naming the outcome as UNKNOWN". Did: six rows —
pattern registergets three Errors rows, one per exit-
11site in the shipped verb — and the wording is quotedverbatim from
packages/fabrika-cli/src/pattern/{new,register}-verb.ts(— nothing was written.),which carries no
UNKNOWNtoken. Why: write-pattern contract: no exit11seat inpattern new/pattern register#5355 was filed before Fivefabrika patternverbs are specified and none exists #5332 shipped, so its suggestedwording is a guess at bytes that now exist; an Errors table that does not match what the binary
prints is the defect the round-1 review FAILed on. Disposition: no action needed — reviewer-
directed in the
review-skill: FAIL @ 04353efbverdict; the seat-level UNKNOWN semantics AC2 wantsare carried by the Exit status rows, and no code change is implied.