diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 44f9eae..bf5c5c1 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -8560,3 +8560,16 @@ Read-only, set in the harness (`/root/troupe-harness/mercury-task.txt`): **R5-a* - **Praetorian was asked, delivery unconfirmed.** One scoped read-only review of exact head `a033cb3` — boundary wording in `src/summary.js`, citation→record resolution, and the criterion-3 mixed-vs-insufficient reading — with no forge writes and no PR review submission. The message was accepted for dispatch, but Praetorian's lanes have been failing for want of a provider route, so **the review may not arrive**; if it does not, the review is owed to a route Alexander names or to a human read, and the release should be treated as unreviewed in the meantime. Vincent not messaged: nothing to build unless that review returns CHANGES REQUESTED. - **Helm lane untouched and re-read:** snapshot 14,039 B / `aa842b0f…`; pin 120 B / `5b6d7071…`; `HELM_COLLECTOR` **0** in every deployed file; disk 45 G of 154 G (72 %). The §4 `cp` (collector `4e45021d…` + gate `c56230e5…`), the `manifest_match` pin stale since 2026-10-08, Q13, Q9, Q19 and Q53 remain standing and are not re-argued. - **Erratum on my own commit `7b9e8d8`, appended rather than edited:** its body cites the masked-hour precedent as "`:5222`-era block"; the line is **`WORK-QUEUE.md:5522`**. The block above carries the correct number — only the commit message is wrong, and it is the field the monitor republishes, so it is recorded here in the same form asked of any counterparty. One digit, no figure moves. + +--- + +**Both review routes are dead, so #34's criteria are mapped to their tests instead — the one discharge that needs no other agent. 2026-10-14 12:28:28Z (control plane; clock read immediately before this edit; the pre-edit byte size is deliberately not stated, because the file grew by one line between my last size reading and this write — a sibling writer appended at ~12:28Z — so the 1,036,841 B quoted in the header above is true only of commit `f88ec33`).** + +- **No agent can review `a033cb3` right now, and both failures are provider-side.** Praetorian: delivery exited 1 — `HTTP 403: OpenCode's free tier can only be used from within OpenCode` (the same failure its three review crons have been hitting). Hou3, asked as the substitute: delivery exited 1 — `Hermes is not logged into Nous Portal. Run hermes model to re-authenticate`. So the review is **unrouted**, and `daily-2026-10-14` / main at `a033cb3` must be treated as **unreviewed** until a route exists or a human reads it. Both are one-line config repairs and both are Alexander's; I did not touch another profile's config. +- **What a reviewer would have needed does exist:** anonymous file reads at the exact head work (`raw/commit/a033cb3ae9e9/src/summary.js` → 200 / 3,403 B), while the archive endpoint returns **500**, and a clean clone sits at `/root/timmy-talking-turd` pinned to `a033cb3`. The obstacle is a provider route, not access. +- **Criteria → tests, extracted by reading the head (this is the alternative to ticking #34's boxes blind).** The issue body's three criteria are at `:7`–`:9` verbatim: *every summary links to the contributing records/window*; *no causal, diagnostic or food-safety claim*; *sparse data and contradictory patterns produce honest insufficient-data copy*. + 1. **Criterion 1 — asserted, named, and implemented.** `tests/summary.test.js:19` "every summary statement cites the confirmed records it was built from", `:39` "each form line cites only the records in that form bucket", `:64` "logs outside the window are neither counted nor cited"; browser side `tests/pattern-summary.acceptance.mjs:72` asserts the citation sheet lists exactly its own records (`:79` that it closes cleanly). Implementation: every statement carries `entryIds` — `src/summary.js:49` (frequency), `:59` (per-bucket form lines), `:72` (the mixed line). + 2. **Criterion 2 — asserted for the summary path.** `tests/summary.test.js:77` "the summary states its boundary and never explains a cause or clears a food". Implementation: `src/summary.js:10` `BOUNDARY` — "Built only from your own confirmed records in this window … not why, and never a verdict on …" — under the comment at `:9` "No cause, no health verdict, no food ruling". Note the literal string `causal` occurs **0** times in `src`/`tests`: that is wording, not a gap, since the test names the same boundary in other words. + 3. **Criterion 3 — half discharged, and the other half is where behaviour and ticket wording part.** *Sparse data*: `src/summary.js:35`–`:42` returns `insufficient: true` with "Not enough confirmed logs in this window yet — N of MIN_WINDOW_LOGS needed before Timmy describes a pattern." (`MIN_WINDOW_LOGS = 3`, `:5`), asserted at `tests/summary.test.js:91`/`:94` and in the browser at `tests/pattern-summary.acceptance.mjs:40` (`[data-summary-insufficient]`). *Contradictory patterns*: `src/summary.js:69`–`:75` returns `insufficient: **false**` with the mixed line, and the covering test is `tests/summary.test.js:54` — "a contradictory window is reported as a mixed pattern instead of one trend" — i.e. the shipped behaviour is a labelled mixed pattern, not insufficient-data copy. **So the disagreement is about which honest copy the ticket asked for, not about whether the copy is honest**, and boxing criterion 3 is a reading decision for Alexander (or a reviewer), not something a bot should tick on his behalf. +- **Net for the ticket:** two of three criteria are covered by named tests that a reviewer can check; the third is covered for sparse data and deliberately answered differently for contradictory patterns. That is the record #34's closure is missing — the boxes are still unticked at the merge commit. +- **Unchanged:** no production change (`timmy-web.service` active, `/opt/timmy` mtime 2026-09-18, nothing on 127.0.0.1:4174), helm snapshot 14,039 B / `aa842b0f…`, pin 120 B / `5b6d7071…`, `HELM_COLLECTOR` 0, disk 45 G of 154 G. PR #76 still open with `merged: false` and its base re-pointed at `a033cb3`.