Add baddies-smp-pigs-can-fly-command-ledger (agentic omni understanding) - #99
Add baddies-smp-pigs-can-fly-command-ledger (agentic omni understanding)#99wenkai-li wants to merge 5 commits into
Conversation
|
Hi @wenkai-li, thanks for the PR. before merge:
|
Reconstruct the ledger of spoken requests in a 228-minute multiplayer building session that were not acted on when asked but were carried out later. Deterministic event-level F1 with one-to-one bipartite matching; no LLM judge. Calibration is reported as measured, including the gate it fails: Opus 5 xhigh 0.1875 (115 turns) FAILS the < 0.10 gate Opus 4.8 0.1379 ( 51 turns) FAILS Codex GPT-5.6 Sol 0.0741 (112 turns) passes oracle 1.0 / empty 0.0 / all five ablations 0.0000 check_task.py passes 9 of 10 checks; the failure is strong-agent difficulty. The cross-modal requirement is unconditional: both single-modality ablations score zero and fail differently. Video-only cannot detect that a request occurred (detection F1 0.00); audio-only locates four real requests but grounds none (detection F1 0.30, evidence IoU 0.25). Speech carries the existence of the event, video carries its temporal anchor. Two repairs for the difficulty gate were measured and both failed: enlarging the ledger (90 -> 228 min raised Opus 5 from 0.1053 to 0.1875, since the extra footage supplied more solvable rows), and raising the deferral floor (no floor from 15 s to 180 s clears the gate). The measured finding is that difficulty tracks whether the execution is visually conspicuous, not how long after the request it happened.
…oiting it costs The first submission identified visual inconspicuousness as the likely difficulty axis but left it as a suggestion. It is now measured, and the follow-up task it points to has been scoped rather than assumed. Controlled test. Per row, the fraction of pixels changing across the execution minus the same span 45 s earlier (a per-row baseline for ambient camera motion). The 21 rows split into SOLVED (4), request LOCATED but execution never grounded (4), and never found (13). The third tier is confounded — those may be missed because the request was missed — but the first two are not, giving a clean 4-vs-4 comparison in which the agent heard the request either way: fraction of pixels changed solved +0.289 vs located-only -0.259 exact p = 0.043 mean absolute difference solved +31.19 vs located-only -18.26 exact p = 0.043 Every row below 0.35 footprint — six of them — was solved by no agent. Stated limits: n is 4 vs 4 against a 1/70 = 0.014 floor, and the threshold was picked by looking at which rows went unsolved, so it needs validating on rows it never saw. Feasibility of the revision. Licence is per video, not per channel, so all 136 sibling sessions were checked individually: 42 are CC-BY (191 h). Seven were pulled as audio only, transcribed (19,638 lines / 30 h), and swept by 16 subagents. Yield depends on the two players co-building, and 0 of 10 new half-sessions do (7 parallel play, 3 solo) against 2 of 2 for this session. A positive control — the same sweep on this session, true ledger 21 — returned 9, so sweep recall is ~43% and the counts are calibrated rather than taken at face value. At that recall the revision lands at roughly 11-13 rows, where one lucky agent hit still passes (0.087) but two do not (0.174). The hotel-era sessions where this footage's collaboration happens are almost all standard-licence. The axis is real; the footage to exploit it at scale is not obviously there.
…on — channel exhausted The feasibility section projected a revision at 11-13 rows and flagged that the sessions where this footage's collaboration happens are almost all standard-licence. One CC-BY hotel-era session remained unswept, and it was the strongest available test of whether collaboration is a property of that era: 32WK9Q8-Dcc sits directly beside the shipped session in the channel timeline and shares its subject matter. Read-out rules were fixed before the run, and the prompt was byte-identical to the positive control. Result: parallel play in the first half, solo in the second. Its five candidates are all requests from Noodle, Bread and Miller — Twitch-chat and Discord viewers commissioning hotel rooms, not players in the world — which the sweep flagged itself and the task's rules reject. Tally is now 12 new half-sessions, 0 shared projects (8 parallel play, 4 solo), against 2 of 2 for the shipped session. That kills the era hypothesis and leaves the simpler one: this channel's format is one streamer building alone while viewers commission rooms. The shipped session is exceptional because a second player happened to log on and involve himself in the same structure — an event, not an era. On this axis the channel is exhausted; a revision needs a different source, and scaling within this channel was measured rather than assumed.
…round truth - Add the Antigravity CLI (Gemini 3.5 Flash, high) row to the baddies calibration table: 0.0, 98 tool-call turns, plus the integrity-audit line and a full provenance note (host run because agy only authenticates via OAuth and cannot run headless in the sandbox; quota-terminated at ~28 min with the agent still orchestrating transcription). Ship the raw trajectory as the audit record. - Add scripts/understanding/audit_trajectory.py: three-format (ATIF / Gemini / agy stream-json) tool-call counter + answer-key / web-grounding audit. - Move the solution dumps out of the repo: inline the ground truth into judge.py and the oracle answer into solve.sh (matching dualrunway/gsw/soccer), and drop the loose ground_truth.json and oracle_solution.json. Oracle still scores 1.0, empty 0.0; provenance kept as the evidence trail. - Set the agent budget to 3600 s (1h) to match SPEC.md and the calibration table.
35fc8eb to
9b0c4de
Compare
|
Thanks @christine1729 — all four items addressed. scores.md table now carries the required rows, each with harness version, reasoning effort, score, tool-call turns, and a committed raw trajectory in
(Opus 5 / xhigh / 0.1875 / 115 kept as a fourth row.)
Also rebased onto latest main to clear the conflict. Happy to adjust anything. |
|
Hi @wenkai-li — thanks for completing the documentation and artifact portion of the previous checklist. I re-reviewed live head 9b0c4de. I verified that the requested model/version/reasoning/turn-count rows and raw trajectories are present, the one-hour timeout is configured, and the loose solution/reward dumps were removed. Those parts of the The raw trajectories make the measurements auditable, but they also reveal that the calibration portion is not closed yet. I recommend moving the PR back to Draft for one bounded correction cycle.
Before rerunning, please successfully build and freeze the exact image, including immutable media/ASR revisions and checksums, and remove the unnecessary HF_TOKEN exposure. The next checkpoint should be just one clean Codex GPT-5.6 Sol pilot: fresh container and empty workspace, only shipped setup materials, one-hour budget, task networking disabled, and a native audited GitHub currently also reports a merge conflict with main; that can be resolved after this measurement checkpoint. I reproduced the existing oracle 1.0, the NaN and speaker/target cases, and the auditor’s |
… calibration undetermined Addresses the PR PhiloLabs#99 re-review (2026-09-01). audit_trajectory.py now parses Claude Code (message.content[].tool_use) and Codex (item.completed command_execution / file_change) transcripts, so the retained rollouts count 112/51/115/98 instead of 0. It exits 2 on a non-empty trajectory with no recognized tool calls instead of printing a vacuous PASS, and treats a shell find exclusion clause as an exclusion rather than an access. Regression: scripts/understanding/test_audit_trajectory.py. judge.py rejects non-finite timestamps: an all-NaN ledger scored 1.0 because a comparison against NaN is always False and the checks are written as reject-if-outside-tolerance. Regression added to tools/test_judge.py. instruction.md declares speaker/target optional and unscored, matching the judge, and states the enforced evidence threshold (temporal IoU >= 0.5) and that times must be finite. Dockerfile pins the base image by digest, the ASR model to an immutable revision with sha256 for all four files, and ctranslate2==4.8.1 (previously a floating transitive dependency). A full build passed every checksum and transcribe runs on the baked video. task.toml drops the unused HF_TOKEN env exposure; the media is public. scores.md: the verdict is now 'difficulty gate undetermined'. A re-audit of the raw trajectories found all three full-evidence runs started on a pre-populated work/ tree at a host path, and the two Claude runs executed concurrently and merged each other's solution.json. Findings are recorded under Provenance; the next checkpoint is one clean Codex pilot. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FQLPCzeG3LDrYxEyFRStas
Add
baddies-smp-pigs-can-fly-command-ledger(agentic omni understanding)Reconstruct the ledger of spoken requests in a 228-minute multiplayer building session
that were not acted on when asked, but were carried out later. For each one the
agent reports the request, who eventually did it, what happened, and the timestamps and
evidence window of the execution. Scoring is deterministic event-level F1 with
one-to-one bipartite matching (
steps/solve/tests/judge.py); no LLM judge.The reasoning is cross-modal by construction: the request exists only in the voice
chat, the fulfilment exists only on screen, and the two are separated by 20 s to 12 min
of unrelated activity. The image ships an offline ASR tool because text+vision
harnesses cannot hear — without it they would fail for lack of a sensor rather than for
lack of reasoning.
Calibration — this task does NOT clear the difficulty bar
I am opening this with the failing number rather than filing it away, because the
reason it fails turned out to be the most useful thing the build produced.
scripts/understanding/check_task.pypasses 9 of its 10 checks; the one failure isstrong agent < 0.1. Oracle 1.0, empty 0.0,> 50turns for all three, and everyablation scores exactly 0.0000 against a
<= 0.15gate.The ablations are the part that worked
Detection F1 is unscored credit for merely locating the right utterance. The two
single-modality runs both score zero but fail differently, and that asymmetry is the
real evidence: speech carries the existence of the event, video carries its temporal
anchor, and neither half completes the chain. Audio-only located four genuine requests
and then died on
exec_timeaccuracy 0.50 and evidence-window IoU 0.25 — the transcripttells you who asked for what, never which second it got done.
(In an earlier 15-row / 180-min configuration audio-only scored 0.0952, nearly matching
the full-evidence agents. On the shipped ledger it is a clean zero, with no restriction
of the ground truth needed to make the cross-modal claim hold.)
Two repairs were measured and both failed
Enlarging the ledger does not work. Event F1 is
2·TP/(P+N); when predictions andground truth are the same order of magnitude the reward tracks the agent's solve rate,
not the ledger size. Opus 5 solves 3 of 21 rows with 11 predictions, so reaching 0.10
needs
N > 49. I extended the window from 90 to 228 minutes to try exactly this: theledger grew 15 → 21 rows and Opus 5's score went up, 0.1053 → 0.1875, because the
extra footage handed it more solvable rows rather than diluting the ones it had.
Raising the deferral floor does not work either. The design assumed longer gaps are
harder. They are not — the filter removes ground-truth rows and agent true positives at
the same rate:
No floor clears the gate for both Claude agents. Opus 5's three solved rows have gaps of
36 s, 20 s and 549 s — it handles the nine-minute deferral as comfortably as the
twenty-second one.
What the difficulty axis actually is
Field accuracy among located rows tells the story:
object,executorandoutcomeare 1.00 for every agent on every row they found. The loss is entirely in when —
execution timestamp and evidence-window IoU. Detection F1 (locating the right utterance,
unscored) is 0.37–0.44, roughly triple the official score.
So these agents hear what was asked and know who did it; they cannot say which second it
was done. And what separates a row they solve from one they miss is whether the
execution is visually conspicuous — a pig landing, a block placed into an empty
frame — not how long after the request it happened. That is the axis footage should be
selected on, and it is not the axis this task was built around.
Known gaps
remote fetch verified HTTP 200 and the media sha256 matches the remote LFS oid, but a
real
docker buildis still required.annotators the family asks for. It was drafted by two vision models independently
(Cohen's κ 0.916 on actionability), adjudicated from dense frame sampling, and every
row cites the frames that settled it.
Provenance
instruction.mdused a real ground-truth row asits worked example and one agent copied it verbatim. Every affected run was
discarded and re-run, not re-scored; the example is now fictional and flagged.
nameplate) entered the vocabulary and cost one run a 0.0. Caught, verified from
cropped frames, removed.
agents touch any answer-key path.
had most of its candidates rejected on the evidence.
Full numbers and method:
calibration/scores.md. Design card:SPEC.md. Build historyand rejected source alternatives:
RUNBOOK.md.