Trials P-17 (fail) and P-22 (pass): a Run is identified from the run records
Closes #10.
Trials P-17 and P-22: can a Run be identified from the run records? (design §6, batch 1; I-21, I-38)
| Trial | Pass condition, written first | Verdict |
|---|---|---|
| P-17 | A run's name is set when it is created and is visible for a run whose job never started; recent runs of one workflow can be listed and matched by name, at a recorded cost | Fail on the first half, pass on the second |
| P-22 | A started Run is in the list within one pass interval. The bound was taken as 60 s, the shorter end of the relay's "every minute or two", since §7.3 gives no single interval. Measured over at least 20 starts; "no" if any exceeds it | Pass |
P-17
- First appearance: a new run is in the list within about 1.6 s. But the first read that holds it shows the workflow's name, not the run-name, in 10 of 10 starts whose job never started and in 13 of 24 hosted starts. The run-name appears about a second later, by 3.7 s at most.
- A run whose job never starts stays listed, queued and named, until it is cancelled (5 minutes in the trial).
- Listing by name: one request lists a workflow's recent runs, and the run is matched by name. That costs 1 request, and 1 point of the 5,000-an-hour core limit.
- The failure is filed against the design as #161, "Design: a Run is identified before its run-name is listed (P-17 failed)", before any code depends on it.
P-22: across 24 starts, every run was in the list at the first read, 2 s after the dispatch. Time to that read's response: min 2.28 s, median 2.34 s, max 2.80 s. These are upper bounds.
Also seen, recorded in #161:
- The run-list endpoint answers with
cache-control: max-age=60. - The dispatch reply carries
DeprecationandSunsetheaders. - Reading a run's jobs counts against a separate rate-limit window.
What changes
trials/P-17.jsonandtrials/P-22.json. They hold full exchanges for a sample of starts, plus a timing table copied from the redacted captures. Every request in full would have run to megabytes.- Grounding in
sim/grounding.py:a_queued_run_is_listednames P-17.a_new_run_is_listed_latenames P-22.a_superseded_run_failsstays unverified: a cancelled run that never started concludescancelled, notfailure.
- One test fix the grounding needed:
test_verify_prints_every_rule_no_fixture_groundsassumed no rule was grounded yet. It is in a commit of its own.
Redaction removed the authorization header on every request, listed in removed, and 13 response headers a fixture may not keep. Nothing shaped like a credential was found.
Step 8 undid:
- the 11 queued runs, cancelled;
- the 35 trial runs, deleted;
- the trial workflow, disabled.
There were no branches or PRs. Staying in the canary: the workflow commit on main and one CodeQL run. As in P-3, the environment main-only and its real secret were never named, read or touched.
Verified: python3 -m tools.check_trials passes, and make verify passes on a git archive export. The mutation run is CI's.
🤖 Generated with Claude Code