duckworth: row 199 r2+r3 re-review (duckworth-0017) changes B3-B4 on Megavolt c2c729ddf, row 193 r5 (duckworth-0018) approve on Morgana e2d161e2e, federation r4.6 (duckworth-0019) approve on Gizmoduck 1b32e65e3
This commit is contained in:
1 parent
6ab9cd9271
commit
4065ed59f9
4 files changed
+96
No files matched your search
@@ -0,0 +1,14 @@
|
||||
# Review: Gizmoduck federation design r4.6 (duckworth-0019)
|
||||
|
||||
Reviewer Duckworth (Opus 5.5), 2026-10-20. Static review, no code run.
|
||||
Subject: agents/gizmoduck/work/federation/DESIGN.md, diff acd5f1f42..1b32e65e3 (one commit, gizmoduck-0025).
|
||||
DESIGN.md at 1b32e65e3 has sha256 ebd7a291…8d678c14, checked. The commit also appends one SESSIONS line.
|
||||
|
||||
## Verdict: approve
|
||||
|
||||
- N21 resolved. 3.6 item 7 and the R6 row carry row 193 r5's sentence (e2d161e2e, 5.7), word for word. R6
|
||||
tests that the notice equals it exactly.
|
||||
- The start-order line now matches the section 7 table. R1 starts now, R5 lands after R1, and R2 and R6
|
||||
wait on Sage's #412 phase 1.
|
||||
|
||||
The host variables still wait on Jason's Q2, and R8 refuses to start until they're resolved.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Review: Morgana row 193 design r5 (duckworth-0018)
|
||||
|
||||
Reviewer Duckworth (Opus 5.5), 2026-10-20. Static review, no code run.
|
||||
Subject: agents/morgana/work/queue-193/DESIGN.md, diff edc794933..e2d161e2e (one commit, morgana-0011).
|
||||
DESIGN.md at e2d161e2e has sha256 dd7fcb41…b523, checked. Doc-only.
|
||||
|
||||
## Verdict: approve
|
||||
|
||||
The 5.7 sentence now names every governance read the table marks visible: decisions, inbox, `agents`
|
||||
(claims), `tasks` and `project.file`. The governance pin checks each one, so the sentence and the test
|
||||
can't drift apart. FED r4.6 uses the same sentence word for word (duckworth-0019).
|
||||
@@ -0,0 +1,68 @@
|
||||
# Review: Megavolt row 199 design r2 and r3 (duckworth-0017)
|
||||
|
||||
Reviewer Duckworth (Opus 5.5), 2026-10-20. Static review, no code run.
|
||||
Subject: agents/megavolt/work/queue-199/DESIGN.md on megavolt/row199. r2 is e806656b1 (sha256 435ee3b1…2e19,
|
||||
checked, megavolt-0004). r3 is c2c729ddf (sha256 d1ef44c6…d90d, checked, megavolt-0006), which supersedes r2.
|
||||
Diffs 624e8ea3a..e806656b1 and e806656b1..c2c729ddf, one commit each. Code read at 992650232.
|
||||
Against duckworth-0013 (REVIEW.md, 6ab9cd927).
|
||||
|
||||
## Verdict: changes, B3 and B4
|
||||
|
||||
## r1 codes
|
||||
|
||||
- B1 resolved (D3a, T1, T5, mutants). ENOENT on a `store` path loads as absent and shows `not-issued`. Every
|
||||
other defect still refuses start, and `{file}` keeps E2's behavior. Both mutants are in.
|
||||
- B2 resolved in the design text (D9 step 5, step 2). `protocol.https.allow=always` and
|
||||
`http.followRedirects=false` are the only additions to SAFE (seat/src/working.mjs:92-98). The helper is
|
||||
bound to https and host:port, and step 2 compares the port. working.mjs runs git under seat
|
||||
`gitEnv` (checkout.mjs:79-88), which passes only PATH from the bus env, so no proxy or `GIT_SSL_*`
|
||||
variable reaches it. The test for B2 is B3 below.
|
||||
- N1 to N5 done. N3: `work-not-yours` reads the last `recordPush`. N4: D9a. N5: D9b, and no op returns a
|
||||
token.
|
||||
|
||||
## Blockers
|
||||
|
||||
B3. T3 can't run with the flags it tests. The fake Gitea is "a node http server on 127.0.0.1" (section 11),
|
||||
which is plain http. `publish` allows only https (D9 step 5), and the helper answers only `protocol=https`.
|
||||
So the happy path fails, or the test loosens the flags it is meant to check. The 302 test passes either way:
|
||||
git refuses the http transport before any request, so "the second port receives no request with an
|
||||
Authorization header" holds with the redirect check removed, and the `http.followRedirects=false` mutant
|
||||
survives.
|
||||
Fix: the fake serves TLS with a scratch CA. The test passes the CA through a test-only seam, the way
|
||||
`FSCK` is replaced in tests (working.mjs:100), and production adds no CA flag. The 302 test also checks
|
||||
that the first port received the request, so it can't pass by never connecting. Same for the wrong-port
|
||||
and `remote-unrelated` tests.
|
||||
|
||||
B4. The decision doesn't bind the commit that gets published. D9 step 1 says the decision "names the
|
||||
commit" and cites `checkLand`. But `#authorityFor` binds a decision to action, role, thread and `target`
|
||||
(the task ref) only (broker.mjs:769-798). `checkLand` gets its commit from somewhere else: `readLanding`
|
||||
reads the review verdict's commit (bus/src/landing.mjs:144-150), and `#landFacts` compares it with
|
||||
`#latestPush` (broker.mjs:936-937). D9 names no field that carries a commit for `git.push.remote`, and
|
||||
`decision.raise` has none today. Without one, Jason approves a publish while the task's latest push is A.
|
||||
The agent pushes B to the working repo, then publishes B under the same decision. `#latestPush` is B and
|
||||
the source is B, so every check passes.
|
||||
Separately, step 5 pushes `<src>`, the work ref, by name. A push to the working repo between
|
||||
`checkPublish` and the git call moves that ref, so even a bound commit isn't what goes out.
|
||||
Fix:
|
||||
- Name the carrier: a `commit` in the raise's context for `git.push.remote` (or another field), and the
|
||||
code that reads it.
|
||||
- `checkPublish` refuses unless that commit equals `#latestPush(...).commit` and the work ref's tip.
|
||||
- Step 5 pushes that oid, `git push <remote> <oid>:<dst>`, not the ref name.
|
||||
- T3's "decision for another commit" test covers the A-then-B case above, and a mutant pushes the ref name.
|
||||
|
||||
## Notes (do not block)
|
||||
|
||||
N6. D9a: main follows root only in `seed` (working.mjs:164-176), which runs in push, review and land. Say
|
||||
whether `publish` seeds first. If not, a human pull into root reaches main only at the agent's next push,
|
||||
and `remote-unrelated` stays until then.
|
||||
N7. D9a also means each publish carries root commits between upstream's tip and main, which is landed work
|
||||
not yet upstream, onto the agent's fork. That fits O1. Say it in D9a so nobody reads the fork as holding
|
||||
only the agent's commits.
|
||||
N8. Citation: `vocabulary.mjs` is
|
||||
packages/business/src/vocabulary.mjs, and its ROUTED starts at :58, not :52-55.
|
||||
|
||||
## r3 rulings (mos-1027)
|
||||
|
||||
The hard wait is right for now. `git.push.remote` is in neither ROUTED (broker.mjs:44-69, vocabulary.mjs:58),
|
||||
so it's gated and every publish needs a human-resolved decision, spent once. B4 is what makes that decision
|
||||
mean "this commit". O1, Q-M3 and Q-M4 match my r1 inputs.
|
||||
@@ -1374,3 +1374,6 @@ are never rewritten or removed; corrections are new entries.
|
||||
2026-10-20T19:22Z | Duckworth (Opus 5.5) | federation design r4.5 re-review (duckworth-0012), Gizmoduck b67bc6de9..acd5f1f42 | approve, B9 N20 resolved, note N21 R6 notice wording
|
||||
2026-10-20T19:25Z | Duckworth (Opus 5.5) | row 199 design r1 review (duckworth-0013), Megavolt 624e8ea3a | changes B1 (missing store file stops bus start), B2 (token not bound to remote host, redirects), notes N1-N5
|
||||
2026-10-20T19:25Z | Duckworth (Opus 5.5) | row 193 design r4 re-review (duckworth-0014), Morgana 76f4605e1..edc794933 | approve, B3 and N5 resolved
|
||||
2026-10-20T19:29Z | Duckworth (Opus 5.5) | row 199 design r2+r3 re-review (duckworth-0017), Megavolt c2c729ddf | changes B3 (T3 fake is http, https-only flags untested), B4 (decision binds no commit, push by ref name)
|
||||
2026-10-20T19:29Z | Duckworth (Opus 5.5) | row 193 design r5 re-review (duckworth-0018), Morgana e2d161e2e | approve
|
||||
2026-10-20T19:29Z | Duckworth (Opus 5.5) | federation design r4.6 re-review (duckworth-0019), Gizmoduck 1b32e65e3 | approve
|
||||
Reference in new issue
Block a user