ledger
1 file changed,
+5
−0
.superpowers/sdd/2026-08-23-idear/progress.md+5 −0
diff --git a/.superpowers/sdd/2026-08-23-idear/progress.md b/.superpowers/sdd/2026-08-23-idear/progress.md| index bce1882..c5efa01 100644 |
| --- a/.superpowers/sdd/2026-08-23-idear/progress.md |
| +++ b/.superpowers/sdd/2026-08-23-idear/progress.md |
| @@ -62,3 +62,8 @@ Task 2: fix round 1 applied (98288b1); scoped re-review dispatched (haiku). |
| Task 2: fix round 1/5 (3 addressed, 0 open; commits f513621..98288b1) |
| Task 2: complete (commits d152346..98288b1, review clean) |
| Task 3: dispatched (sonnet), BASE 98288b1 — the roster store, every invariant in a transaction |
| +Task 3: implemented DONE_WITH_CONCERNS (efd00f8). Controller re-verified: suite green, -race green. |
| +Task 3: Ruling (frozen checksum re-recorded): ACCEPT. Task 2 declared timestamps TEXT; modernc.org/sqlite only scans into time.Time when the DECLARED type is DATE/DATETIME/TIMESTAMP, so idear's tables were writable and unreadable. Editing a shipped migration is forbidden — nothing has shipped: no tag, no consumer, no ledger anywhere holds the old checksum. This is the single pre-release re-recording and it is now commented as such. Cost if wrong: a pre-release database rebuilt from scratch, which is the normal cost of a pre-1.0 schema change. |
| +Task 3: Ruling: the REAL defect is that Task 2's schema test passed a write-only schema. Requiring the reviewer to judge whether a round-trip read test is now present; if not it becomes a finding. A migration test that never reads back proves only that CREATE TABLE parses. |
| +Task 3: Ruling (ErrInvalidRole beyond the brief's four sentinels): ACCEPT. A malformed role is 400 and an authority refusal is 403; folding them loses a distinction handlers need. |
| +Task 3: cross-task note for Tasks 4-6: emails are normalised (trim + lowercase) in the store, so the admission adapters and handlers MUST normalise the submitted address identically or an invitation will never match. ErrLastOwner renders 403, not 400. |