Skip to content

limits 66-69: the subagent path leaves no chain row, and the numbers that do exist disagree - #46

Open
githubscum wants to merge 2 commits into
lotor-lane/limit-65-pin-bodyfrom
lotor-lane/limits-66-69-subagent-blindspot
Open

limits 66-69: the subagent path leaves no chain row, and the numbers that do exist disagree#46
githubscum wants to merge 2 commits into
lotor-lane/limit-65-pin-bodyfrom
lotor-lane/limits-66-69-subagent-blindspot

Conversation

@githubscum

Copy link
Copy Markdown
Owner

The work order

WO-TRACE-BRIDGE-01 (Isaac, 2026-09-02 09:3x CDT): "best trace ever needs to bridge across." The Agent-tool dispatch path is how every lane here runs its workers, and it was invisible to the witness. The prior run measured what a dispatch actually leaves behind; this PR files what that measurement found.

Docs only. Four entries appended to KNOWN-LIMITS.md. No source change.

Why it is filed today

The confession-log rule is that a limit is recorded the day it is found. These were found 2026-09-02 on a live dispatch. A limit found and not written down is worse than one never found, because the system then behaves as though it were covered.

What the four say

# The defect The evidence
66 Subagent tool use produces zero chain rows 3 children, 3 Bash calls in the window, no rows; the parent's calls in the same minutes produced a row every time (the control)
67 The harness's reported per-child token figure disagrees with the transcript reported 32,395 / 32,481 / 32,504; transcripts sum to 32,512 / 25,069 / 25,132 — two off by ~7,400
68 The reader globs an undocumented harness path with no schema check glob at trace-bridge.py:24, count printed at :73, no version marker in 91 lines; failure mode is a false zero
69 Every dollar is computed, against a price table dated four days earlier drive/lotor/price-table.json "date": "2026-08-29", list prices; $0.923399 total for three echo calls

What was tested

npm test on this branch: 971 pass / 0 fail, including the read-only numbering test, which now reads 1..69 contiguous.

Stacking, stated so the diff is not misread

Based on lotor-lane/limit-65-pin-body, not on main, because the numbering test enforces contiguity and 62-65 are still in flight on #43 / #44 / #45. The diff against that base is only the four new entries. Merge order does not matter as long as this lands after them; if #43-#45 are rejected, these need renumbering before landing.

What a reviewer should doubt

  1. Entry 66 is stated at its floor on purpose. Whether an honest agent reaches this hole by accident or only deliberately is not established. The entry says so. If you think the stronger claim is warranted, say so rather than assuming the probe was done.
  2. Entry 67 does not say which side is right. The transcript is the artifact the work left behind, so the entry recommends pricing from it, but the harness figure was not independently recomputed. That asymmetry is deliberate and arguable.
  3. The reader lives outside this repo (projects/meter/tools/trace-bridge.py, in Isaac's brain, not shipped here). A reader of this log cannot re-run it from here. Entry 66's evidence is the absence of chain rows, which anyone can check on their own dispatch; entry 68's line citations are not checkable from this repository. Whether an unshippable citation belongs in a shipped log is a fair objection.
  4. The write half is core and is not here. Emitting a subagent-receipt row lands in src/chain and src/store. It queues for the signing sitting rather than riding along with a docs PR. This PR discloses the hole; it does not close it.
  5. Entry 69's $0.92 is derived by the same machinery entry 69 is warning about. The tokens are measured; the dollars are not. If that reads as circular, it is, and the entry's point is that the date must travel with the number for exactly that reason.

githubscum and others added 2 commits September 2, 2026 16:42
…that do exist disagree

Four limits found 2026-09-02 on a live three-child concurrent dispatch, filed
the day they were found per the confession-log rule.

66: subagent tool use produces zero chain rows while the parent's calls in the
same minutes produce one every time. A hole in enforcement under a herded
posture, not only in bookkeeping.
67: the harness's reported per-child token figure disagrees with the child's own
transcript by ~7,400 on two of three calls. Price from the transcript.
68: the reader that found the children globs an undocumented harness path with
no schema check across 91 lines, so its failure mode is a false zero.
69: no dollar figure is reported anywhere; every one is computed against a price
table dated four days earlier, so the date has to travel with the number.

Tests: 971 pass / 0 fail, including the read-only numbering test, which now
reads 1..69 contiguous.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…epending on who runs it

Entry 66 shipped at its declared floor: it confirmed the witness records nothing
a subagent does, and explicitly said reachability by an honest agent was NOT
established. That probe has now run. Every subagent transcript on this machine
(3,962 tool calls, 1,073 child transcripts, 104 parent sessions, six weeks) was
replayed through the repo's own matcher under an all-gate policy. 519 calls
(13.1%) would have gated the parent, in 38.5% of parent sessions, 377 of them
after the gate was armed.

Entry 66 comes off its floor with those numbers. The asymmetry the measurement
exposes is filed as its own entry 70: the protected-path rules are enforced
against the parent's calls and structurally unenforced against a child's.

Both blocks carry the caveat rather than the headline: the nine core-file edits
found inside child sessions all predate the arming of the gate by one day and
are not evidence that anyone walked around an armed gate.

Suite 971 pass / 0 fail.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@githubscum

Copy link
Copy Markdown
Owner Author

Added in 435798c: entry 66 amended, and limit 70

This branch was opened for limits 66-69. A fifth block landed on it rather than on a sixth PR, deliberately: five PRs are open and none has merged since 2026-09-01, so the lane advanced an existing branch instead of adding to the pile.

What changed.

  1. Entry 66 comes off its stated floor. It shipped saying reachability by an honest agent was not established and naming that as the next probe. The probe ran. Every subagent transcript on this machine was replayed through this repo's own evaluate() under a policy with all nine rules set to gate: 3,962 tool calls, 1,073 child transcripts, 104 parent sessions, six weeks, zero read/parse/evaluate failures. 519 calls (13.1%) would have gated the parent, in 110 child transcripts and 40 of 104 parent sessions (38.5%). 377 are after the gate was armed on 2026-07-23.
  2. New entry 70 states the asymmetry the measurement exposes, which is sharper than 66: the protected-path rules are enforced against the parent and structurally unenforced against a child, so the same command is gated or ungated depending only on who runs it. During the measuring run the self-mod rule stopped the parent twice; the identical call from inside a child goes through silently.

Tested. npm test: 971 pass / 0 fail. Docs-only change to KNOWN-LIMITS.md; the numbering test on this branch covers the new heading.

What a reviewer should doubt.

  • 519 is a floor, not a point estimate. opaque-exec resolves extensionless local files against a cwd, and the children ran in many directories while the replay used one. It misses rather than over-reports, but the true number is higher by an unmeasured amount.
  • The nine core-file edits are the quotable line and the caveat is load-bearing. All nine are 2026-07-22, one day before the gate was armed, when Lotor was a recorder. They are not evidence of anyone bypassing an armed gate, and both blocks say so before the number. Push back if that reads as buried.
  • Not an enforcement claim. This machine runs LOOSE. Under a herded posture the 519 are an enforcement hole; today they are 519 missing rows.
  • The replay tool lives outside this repository (projects/meter/tools/subagent-gate-replay.mjs in the operator's brain), so a reader of this log cannot re-run the measurement from here. That is stated in both blocks and is a real weakness of the confession: you are asked to take the corpus on trust, and only the absence of chain rows is checkable from inside the repo.
  • Scope creep on the branch. If you would rather review 66-69 clean, say so and this commit gets moved to its own PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant