plans: C2-20b brief (row 221 follow-up, Webby N1, N2 and N4) and DEFERRED for N3, Morgana's 213 B3 anchor
Webby approved row 221 round 1 (webby-0073) with four notes that don't block. N1, N2 and N4 are in scripts/case2-persona-import.mjs and go in before Jason's one import run (sage-1941), as row C2-20b, owned by Gosalyn and reviewed by Webby. N3 is tooling outside the product and waits in DEFERRED.
This commit is contained in:
1 parent
3007664504
commit
335bb3e30f
2 files changed
+55
No files matched your search
@@ -593,6 +593,54 @@ gate, along with every `scripts/test-*.sh`.
|
||||
|
||||
---
|
||||
|
||||
## C2-20b persona import follow-up: printed keys, the dry run fence check and the mkdir race
|
||||
|
||||
### Problem
|
||||
|
||||
Webby's round 1 review of row 221 (webby-0073, REVIEW-r1 a0a00630e on webby/reviews) approved it with
|
||||
four notes that don't block. Three are in `scripts/case2-persona-import.mjs` and go in before Jason's
|
||||
import run, because he runs the script once (sage-1941):
|
||||
- N1: lines :147 and :237 print channel and platform keys from `config.yaml` as they are. A key with a
|
||||
newline or a control character could forge an output line.
|
||||
- N2: the dry run counts but doesn't apply C2-08's 8000-char fence. A persona over the fence and under
|
||||
32000 bytes passes the dry run and then refuses at staging.
|
||||
- N4: `privateDir` runs lstat, then mkdir. A directory made between the two gives a raw EEXIST. It still
|
||||
fails closed, so only the error text is wrong.
|
||||
|
||||
N3 (Morgana's 213 `mutants.py:48` B3 pattern no longer matches `bundle.mjs`) isn't in this row. It's in
|
||||
DEFERRED.
|
||||
|
||||
### Owner and reviewer
|
||||
|
||||
- Owner: Gosalyn.
|
||||
- Reviewer: Webby.
|
||||
- After: row 221 (C2-20) lands.
|
||||
|
||||
### Files owned
|
||||
|
||||
`scripts/case2-persona-import.mjs`, `packages/cli/tests/case2-persona-import.test.mjs` and its fixture
|
||||
tree.
|
||||
|
||||
### What ships
|
||||
|
||||
- N1: every printed config key goes through `JSON.stringify`.
|
||||
- N2: the dry run calls `personaTextFault` on each persona and prints the fault's name. It still prints
|
||||
no persona text, no line and no line number.
|
||||
- N4: an EEXIST from the mkdir refuses with a named reason, not a raw EEXIST.
|
||||
|
||||
Tests:
|
||||
- A fixture key with a newline prints as one quoted line.
|
||||
- A persona over the fence makes the dry run print the fault, write nothing and exit nonzero.
|
||||
- The mkdir race refuses with the named reason. A stubbed mkdir that throws EEXIST is enough.
|
||||
- One mutant for each of the three fixes, each killed by its test.
|
||||
|
||||
### Gate
|
||||
|
||||
Webby approves the manifest. The test file runs green on its own, and the three mutants are killed on
|
||||
Sage's slot. The cli suite and every `scripts/test-*.sh` are green on Sage's gate.
|
||||
|
||||
---
|
||||
|
||||
## C2-03a fetch-only sync
|
||||
|
||||
### Problem
|
||||
|
||||
@@ -315,6 +315,13 @@ at every gate. Started 2026-09-12 during the control board MVP.
|
||||
`mosaic`, and F10 uses equality. Darkwing has a follow-up on
|
||||
`darkwing/row195-n1` 1e3c4767c, not yet run; it gets its own row now
|
||||
that 195 has landed (b65014647), Duckworth reviews. (2026-10-21)
|
||||
- **Morgana's row 213 mutation set: the B3 pattern no longer matches `bundle.mjs`.**
|
||||
(Webby N3 on row 221 round 1, REVIEW-r1 a0a00630e.) Row 221's
|
||||
candidate changes `packages/harness/src/bundle.mjs`, and the B3
|
||||
anchor at Morgana's 213 `mutants.py:48` stops matching on that
|
||||
base. This matters only if someone reruns that set. Fix the anchor
|
||||
in that tooling before any rerun, and check that a stale anchor
|
||||
refuses instead of skipping the mutant (sage-1941). (2026-10-21)
|
||||
|
||||
## Queue
|
||||
|
||||
|
||||
Reference in new issue
Block a user