Repository navigation
Credit interventions to the right actor: steers, task notices and unknown root prompts #133
Description
What: Observer credits interventions to the right actor: T3 steers and delegated-task notices stop counting as Luke's rejections and prompts, and unknown root-thread actors carry a reason.
Why: In the 2026-10-12 to 2026-10-19 window all 9 "user rejections" were test fixtures or tool calls stopped by a T3 steer, completion notices counted as user prompts, and 574 root-thread rows had no actor, so the user-intervention view overstates human corrections.
So what: A Sol worker implements it, Grok and Muse Spark review, and Luke approves the merge.
Outcome
agent-observer interventions --created-by user lists only moments a person acted, with one row per steer, and every unknown actor says why it is unknown.
Evidence (bestia ledger, window 2026-10-12T14:20+02:00 to 2026-10-19T14:20+02:00)
- Six "rejections" in
claude:d8e0df86-1aab-4821-a85d-0f0c1dc151ecare the Chromeriaurgent-interrupt-deliveryfixture; three were sent by agents but stored ascreated_by=user. ev:claude:0dfef3b4-54d3-4696-b518-342a8578a8b8/permission/toolu_01KCee4y9ufc3NL3N66XcnrY,ev:claude:170e2046-0af7-466f-b6f6-1292c00e829b/permission/toolu_01ShEowpLDCTcko5WKtDwxxV,ev:claude:77c7e955-ce6b-470d-9112-1f8e4510ea53/permission/toolu_01CJN2hHVnn7H2oFMFVZBD6Y: tool results denied by a T3 steer whose next prompt is the T3 "interrupted your previous turn" note. One steer yields up to three user rows (rejection, interrupt, prompt).- "Delegated task … reached a terminal state" notices stored as user prompts:
sub:codex:msg_01a13ed6-5dfc-7bd1-b8d5-1d343ae8dd69,sub:codex:msg_01a13f20-d551-7c72-8dcf-ba06bfde3f2e,sub:codex:msg_01a144e1-590d-7c50-99d3-5c6395b5c64b. - 1,972 unknown-actor interventions: 1,302 on child threads (expected), 96 with no thread, 574 on root threads, 570 of those Claude prompts.
- This continues the 2026-10-04 finding that cancelled turns were counted as human corrections without an actor.
Contribution to the Objective: explicit ownership with visible gaps ("gaps stay visible").
Elon record
- Requirements and who asked: Luke (2026-10-19 review follow-up): user-intervention counts must reflect people, not transport events, so weekly reviews judge real moments.
- Deleted: deleting raw permission or interrupt records; they stay as evidence, only actor and grouping change.
- Bottleneck: reviewers spent rounds disputing fixture and steer rows; correct attribution removes that work.
- Checked myself: intervention counts and the cited rows via
agent-observer interventions --jsonon bestia.
Acceptance criteria
- A tool denial caused by a T3 steer or interrupt yields one
interruptintervention linked to its follow-up prompt, attributed to the steer's sender (agent when an agent sent it); raw events remain. - Delegated-task completion notices are
created_by=agent. - Unknown actor on a root-thread prompt carries a stored reason; fix the cause for the Claude root prompts if it is an Observer defect.
- Re-running
interventions --created-by userfor the window above shows none of the cited non-human rows.
Non-goals
- Judging whether interventions were corrections (that is the verdict layer).
- Changing child-thread attribution, where unknown is expected.
Blockers
None. Release PR #122 (1.3.0) is open with a Human Gate; coordinate the version transition with it.
Required proof
- Regression tests from sanitized real records for each case (fixture steer, agent steer, completion notice, root-thread unknown).
- Window recount before and after, reported on the PR.
- Full test suite; independent review on the exact head.
Activity
lukemaj commentedon Oct 19, 2026
Correction to the Blockers section: release PR #122 (1.3.0) was already merged at 2026-10-19 13:09 Warsaw, so it is not open. Fixes go on top of 1.3.0 as patch releases.
lukemaj commentedon Oct 19, 2026
What: #133 is implemented and proved in draft PR #135 at
abcee573722755abae9c3f5354009e4ec7e0bb3b.Why: Explicit transport sender evidence removes false human rejections and prompts while unmatched native authors stay explained.
So what: The parent schedules Grok and Muse Spark reviews on this head; Luke approves merging to main.
Canonical implementation handoff: #135. The PR body owns the complete sanitized recount, source diagnosis, acceptance evidence and Elon record.
fix/133-intervention-actors,/home/luke/.t3/worktrees/agent-observer/fix-133-intervention-actors; exact base1fbbb0fe3098842d19e04bc5a6b35a3667ecda90. Branch pushed and remote head verified; working tree clean. No writes in other checkouts.1.3.0 → 1.3.1, including canonical VERSION, three plugin mirrors and changelog through versionctl. chore(release): prepare 1.3.0 (Human Gate: do not merge without approval) #122 had already merged before this task.versionctl release-checkpassed on the clean exact commit:release candidate OK: v1.3.1 at abcee573722755abae9c3f5354009e4ec7e0bb3b (1.3.1).python3 -m unittest discover -s testspassed 863 tests in 65.490 seconds;python3 -m compileall -q agent_observer tests scripts,bin/agent-observer --version(1.3.1), and whitespace/self-review passed. No existing test expectation was weakened. The initial new foreign-key constraint failure in legacy-identity tests was repaired with ON UPDATE CASCADE, then the full suite passed.fix: credit intervention actors and group T3 steers (#133)
fix: credit intervention actors and group T3 steers (#133)
lukemaj commentedon Oct 19, 2026
What: Round-1 fixes are pushed to PR #135 at
a16938bc3b1dc504d4f6731c54863d5e433375f2.Why: Grouped ids must retain durable verdict references, and Grok inputs must feed the same transport evidence as Claude/Codex.
So what: The parent schedules the requested new-head reviews; Luke approves the merge to main.
This supersedes the implementation handoff at
abcee57. The PR body is the canonical detailed proof and decision record, including the full all-actor replay and verdict-report policy.fix/133-intervention-actorsand workspace/home/luke/.t3/worktrees/agent-observer/fix-133-intervention-actors, pushed heada16938bc3b1dc504d4f6731c54863d5e433375f2. Base remains1fbbb0fe3098842d19e04bc5a6b35a3667ecda90; fetched main had not moved, so no rebase. Pending 1.3.0 → 1.3.1 transition retained in this one merge unit; clean exact-head versionctl release-check passes. If fix: treat pending gh pr checks as pending (#132) #134 merges first, parent reconciles the version before merge.python3 -m unittest discover -s tests: 865 passed (63.739 seconds). Focused intervention/Grok suites: 92 passed. Compileall, whitespace and full diff self-review pass. Final new regressions fail on archived exact round-1 source for the intended causes, and pass on the repaired source.verdict listattaches every row to its canonical intervention. Recurrence counts 323 canonical interventions: 64 yes, 259 no, and explicitly reports four duplicate judgments as superseded. The cited orphaned yes resolves and shows its canonical steer with status ok.fix: credit intervention actors and group T3 steers (#133)
fix: credit intervention actors and group T3 steers (#133)
lukemaj commentedon Oct 19, 2026
What: PR #135 now includes both review-round repairs at
49c3766e365fce0af524d56e5d61252dc3d212fd.Why: Complete notice boundaries preserve user instructions, and yes precedence preserves grouped verdict evidence regardless of timestamps.
So what: Exact-head review remains pending with the parent; no reviewers were started and merge remains a human decision.
PR proof and full recount supersede earlier candidates: 922 tests pass; all 327 spectrum-review verdicts resolve unchanged; recurrence counts 64 yes and 259 no across 323 canonical judgments, with four superseded records. Full window replay: 319 user, 4,484 agent, 1,584 unknown, 6,387 total. Rebased onto main
eda2c8df41d75246ab11d0f7932cd0400f2f932c; one pending version transition is now 1.4.0 → 1.4.1. Observer cost comment republished. All owned ledger copies and private replay/source archives from this task were deleted and absence verified. Live ledger was read-only; no merge, release or installation.Requirements and who asked: Luke requires #133 and both review repairs, exact proof, cost publication and copy cleanup.
Deleted: No guessed historical actors, verdict migration/deletion, extra service or #132 classification changes.
Bottleneck: Whole-input parsing and canonical verdict precedence.
Checked myself: Reviewed baseline failures, final full suite, all-source copied replay, all 327 resolutions, actual CLI reports, pushed SHA and copy deletion.
fix: credit intervention actors and group T3 steers (#133)
fix: credit intervention actors and group T3 steers (#133) (#135)