diff --git a/BUILD-LOG.md b/BUILD-LOG.md index ce33c152..2e024584 100644 --- a/BUILD-LOG.md +++ b/BUILD-LOG.md @@ -1902,3 +1902,7 @@ ms-grill-me rounds resolved gates 2/3/4/8/9/10 and the per-execution selection m ## 2026-09-10 — #1499 increment 1 implemented (pre-review) packages/mosaic added: provider/account/profile/selection/harness schemas with strict unknown-field and ID validation, allowInsecureTransport rule (plain-http custom endpoints only), fork-pin field, harness id==executable rule (gate 1), registry tree loader with cross-reference integrity, read-only validate/list CLI with secret-free projections. 15 package tests pass. Pi pin moved 0.84.4 -> 0.85.1 (package.json, lockfile regenerated, three fixture scripts updated). Suites after pin: config/auth/conductor/release green; task suite shows exactly the one pre-existing failure also present at stashed baseline (no agent identity on headless run); one earlier mock-adapter failure did not recur on rerun and is recorded as flaky-unreproduced. Implementation awaits independent review before commit/push consideration per charter; no materializer/refresh/credential paths exist in this code. + +## 2026-09-10 — #1499 increment 1 approved + +Round 1 REQUEST CHANGES caught uncommitted sage-agent contamination swept into 557aba0f from the dirty worktree plus a dangling package export; both fixed at e5a9a05b (sage hunks dropped, 0.85.1 kept). Clean git-archive verification: 20/20 tests across package and launcher suites, no agents/sage committed. Follow-up verdict APPROVED. Pre-existing task-suite headless failure remains baseline parity, not regression. Push follows; Jason acceptance precedes increment 2. diff --git a/docs/SESSIONS.md b/docs/SESSIONS.md index 0cad66f3..e03b3283 100644 --- a/docs/SESSIONS.md +++ b/docs/SESSIONS.md @@ -178,3 +178,5 @@ are never rewritten or removed; corrections are new entries. - 2026-09-10 — darkwing — GATE7-FINAL-FILBERT-1 APPROVED; gate 7 closed with owner mechanism (a). Six units committed at 86e009dd, pushed, remote verified. Registry plan fully resolved; no implementation authorized without a separate charter. - 2026-09-10 — darkwing — #1499 opened; M20 increment-1 charter drafted (docs/plans/2026-09-10_m20-increment1-charter.md): packages/mosaic schema/validation/CLI slice, pi 0.85.1 pin, no materializer/refresh/deployment. Awaiting owner approval; no implementation started. + +- 2026-09-10 — darkwing for Filbert — MOSAIC-I1-FILBERT-1 REQUEST CHANGES (sage contamination, dangling export) fixed at e5a9a05b; follow-up APPROVED after clean-archive reruns (package 15/15, launcher 5/5). I1-F3 baseUrl hardening deferred to a later increment. Push and owner acceptance next. diff --git a/docs/plans/reviews/2026-09-10_mosaic-i1-verdict.md b/docs/plans/reviews/2026-09-10_mosaic-i1-verdict.md new file mode 100644 index 00000000..0fac4881 --- /dev/null +++ b/docs/plans/reviews/2026-09-10_mosaic-i1-verdict.md @@ -0,0 +1,50 @@ +# MOSAIC-I1-FILBERT-1 (#1499) — increment 1 implementation verdict + +Reviewer: Filbert (independent). Author: Darkwing. Candidate: `557aba0f9eba6cc413850e62196c20349ce4c24d` on refactor (not pushed). All work in disposable `git archive` copies of the candidate and baseline `54c12312`; no pushes, no live auth, no shared-log edits. + +## Verdict: REQUEST CHANGES + +The package itself is solid: 15/15 tests, a clean secret-free CLI, an exact 0.85.1 pin whose lockfile integrity matches the PI-REFRESH-ROCKO-1 record. But one change in the candidate breaks the charter's "existing suites remain green" obligation on the committed tree, and the review request's scope description did not disclose it. + +## Blocking finding I1-F1: test-darkwing-launch.mjs depends on uncommitted state + +`scripts/test-darkwing-launch.mjs` adds a fourth agent, `sage` (provider `zai`, model `glm-5.3`, thinking `high`), to the per-agent loop. `agents/sage` does not exist in git — never committed on any branch — it exists only as uncommitted live-worktree state. On the clean candidate tree (git archive of `557aba0f`), the suite fails: 4 pass, 1 fail at the sage iteration (ENOENT copying `agents/sage`). The suite passes only inside the dirty live worktree where the coordinator ran it. The stated scope ("0.84.4→0.85.1 fixture updates… Nothing else") is therefore both inaccurate and violated: this hunk is not a version bump, and it makes the commit's own suite red on the commit's own tree. + +Required fix: remove the three sage hunks (restore the three-agent enumeration), or land `agents/sage` through its own reviewed change first — which is outside this charter's allowed paths. Then re-freeze; I will rerun the darkwing suite and the package tests only. + +## Non-blocking findings + +- **I1-F2:** `packages/mosaic/package.json` exports advertise `./ids.mjs`, but `src/ids.mjs` does not exist. Lazy resolution hides it from the tests; any consumer importing that subpath fails. Remove the export or add the module in the fix-up commit. +- **I1-F3 (hardening note):** a `custom-endpoint` provider with no `harnesses.pi` entry skips baseUrl/insecure-transport validation entirely. Uncovered shape; belongs in a later schema increment, recorded here so it is not forgotten. + +## Charter criteria, as verified + +1. **Package suites:** 15/15 pass (`node --test tests/` in the disposable candidate tree). Coverage maps to the plan's registry-schema list: unknown keys, ID regex including traversal shapes, path/name match, kind-specific requireds (native/custom-endpoint, insecure-transport rule, native rejecting `allowInsecureTransport`), reference integrity, duplicate IDs, missing provider/account, credential-type support, fork-pin field. +2. **CLI:** `validate` exits 0 with `valid` on the fixture tree; refuses invalid trees exit 1 with precise `path: code: detail` errors, no stack spew, no secret echo (broken-JSON, duplicate, missing-reference cases all tested); usage errors exit 2; `list` prints only id/kind, ref/name/type, id projections — no credential-shaped fields, verified including a planted `credential.json` marker that is never read or echoed. +3. **Pin and suites:** `package.json` pins `0.85.1` exactly; the lockfile entry carries the same tarball URL and `sha512-FGRN+…` integrity that PI-REFRESH-ROCKO-1 recorded from the npm registry — the pin resolves to exactly the investigated artifact. In the disposable candidate tree: config, auth, release green; conductor 17/0 green (my first conductor run failed only because a `git archive` tree lacks `.git` — rerun with a scratch git init passed; environment artifact, not a candidate defect). Task suite shows exactly one failure, `no agent identity on headless run`, identical at stashed baseline `54c12312` — parity confirmed, pre-existing, not counted against the candidate. The once-observed mock-adapter failure did not reproduce in any of my runs either; flaky-unreproduced stands. +4. **No hidden paths:** the loader uses only `readFile`/`readdir`/`stat` on the supplied root; the CLI writes only stdout/stderr; tests use fixtures and `mkdtemp` temp roots; no network anywhere; `credential.json` is never read (code review plus the planted-marker test). `scripts/auth.sh` untouched; no writes to `~/.pi` or dataRoot. + +## Effect + +REQUEST CHANGES blocks the push. With I1-F1 fixed (and ideally I1-F2), a re-frozen candidate needs only the darkwing-suite and package-test reruns from me; everything else in this verdict carries over. No increment 2 is authorized by this review in any case. + +--- + +# Follow-up verdict (appended after I1-F1/F2 fix) + +Fix commit `e5a9a05b` (with the intervening request-record commit `e6e30b6f`). The delta from `557aba0f` is exactly the two fixes: the sage hunks are gone from `scripts/test-darkwing-launch.mjs` (agent enumeration back to darkwing/dewey/filbert, 0.85.1 fixture changes retained) and the dangling `./ids.mjs` export is removed from `packages/mosaic/package.json`. Pin, lockfile, package sources, and all other candidate files are untouched. + +## Verdict: APPROVED + +Rerun per the stated scope, on a clean `git archive` of `e5a9a05b` (no live worktree state): + +- Package tests: 15/15 pass, exit 0. +- Launcher suites (`test-darkwing-launch.mjs` + `test-rocko-launch.mjs` combined): 5 tests, 5 pass, 0 fail — the suite that failed 4/1 on the dirty-state-dependent candidate is green on the committed tree. +- CLI spot-check: `validate` on the fixture tree exits 0 with `valid`. +- Committed tree contains no `agents/sage`; the package manifest no longer references `ids.mjs`. + +All other verifications from the REQUEST CHANGES verdict carry over unchanged: schema coverage, secret-free CLI with the planted-marker control, exact 0.85.1 pin with lockfile integrity matching PI-REFRESH-ROCKO-1's npm record, config/auth/conductor/release green, task-suite parity for the single pre-existing headless failure, and no hidden mutation/network/credential paths. I1-F3 remains acknowledged later hardening, not a defect of this increment. + +## Effect + +`e5a9a05b` (with `e6e30b6f` and `557aba0f`) is approved to push as increment 1. Per charter criterion 5, Jason accepts the completion before any increment 2 planning. This review authorizes no increment 2 and no deployment.