27 Sep 2026 · 9:08 AM MTUpdated…
Recorded findings and repair evidence

Audit progress

Recorded audit status as of . Finding verdicts are separate from the executable repair queue. This snapshot is more than six hours old; check the source before treating a finding as current.
Executable repairs: CODE-1 — Queued, DATA-01 — Queued. Claimed means reserved; accepted requires a review receipt.
2Repaired
6Partial
31Open
1Future acceptance
OPS-01P0Open

Unmanaged scorecard artifacts are consuming the remaining local disk capacity

Recorded status: open; selective retention policy investigated September27. Current scorecard status references26of1367reports (10.85GB of367.98GB logical);1341reports/357.13GB lack current-status references but require other-reference checks and reconstruction proof before disposal. Current summaries/status reference1of78derivedarchive indexes (1.25GB of45.60GB). No move or deletion performed.

Observed: The 21-day retention job covers run warehouse snapshots, while scorecard history and forecast archives dominate disk and continued growing rapidly. 54Gi was available at observation; APFS reported capacity is 94% and may include purgeable behavior not measured here.

Evidence: df -h .: Data volume 926Gi, 836Gi used, 54Gi available, 94% capacity; du -sh data/*: data 526G, institute 516G

CODE-1P0Open

The self-improvement promotion path does not enforce whole-game quality

Recorded status: open; not repaired by this audit

Observed: nightly.run_one calls evaluator.evaluate; promote.verify re-runs the same component evaluator and a small standing-gate list. Neither calls multi_target_evaluator.multi_target_evaluate or its simulator paired CRPS check. The loop README explicitly calls this unwired.

Evidence: research/playgrain/loop/nightly.py:28,92-113; research/playgrain/loop/promote.py:51,77-135

CTRL-01P1Open

Closed gate cannot reach an idle build fleet

Recorded status: open; control repair not implemented by this read-only audit

Observed: Gate open=false on playgrain grade while current board eligibility is zero in all eight shards; build worker logs idle before seeing the gate. Baseline OPS-04 identifies this particular grade alarm as a false weekly-cadence classification, not a missed grade.

Evidence: bin/build-loop.sh:96-102,407-412; bin/takeable.py:101-124

SURF-03P1Open

Started Week 3 has no carried pre-kickoff supplement

Recorded status: open; live/saved observation, repair not implemented by this read-only audit

Observed: Live Week 3 lifecycle is live/unavailable with verified matchup/lineup blocks withheld. Separately served Tucker Kraft and starter-group actuals both show 5.10, so actuals are not wholly absent. A valid pregame supplement existed Sep 24 23:45 UTC; first post-kickoff Sep 25 04:09…

Evidence: Live /team notice and saved payload pages.team.weeks[week=3].lifecycle; data/institute/forecast-refresh/runs/20260924T234519-b674adcb/site-supplement/site-products.json

SURF-02P1Repaired

Current Yahoo values drift beyond the published capture clock

Recorded status: repaired and live-verified for the current Sean/opponent matchup in90657b1b: saved00:19UTC capture32rows, published e95928d8440e12d68513.json,32/32 exact two-decimal matches and maxnumericdelta0.00. Existing15-minute scheduler checks30-minute capture-age target (up to roughly45minutes plus job duration); broader/future pairs retain their separate cadence. Pregame archive hash unchanged.

Observed: Published Week 3 Yahoo cells matched the 18:45:57 UTC saved capture 32/32, but signed-in live Yahoo at 00:02:30 UTC differed on 8/32 same-week, same-team, same-player rows by 0.02-0.06 points. Week 4/5/14 saved parity was 32/32, 33/33, 33/33; their live-source parity was not…

Evidence: data/land/yahoo_proj/2026-09-26/184557.jsonl; Examples: Goff 22.10 published/22.14 live; Walker 20.46/20.40

CTRL-03P1Open

Required capture and reingest child failures can end in green parent exits

Recorded status: open; control repair not implemented by this read-only audit

Observed: Yahoo refresh logs scrape exit codes then unconditionally exits 0; chain-run logs reingest as non-fatal and ends 0 after the gate report. Historical measured instance: The prior hourly reingest janitor retired September 23 without a successor until a manual reingest September 25…

Evidence: bin/yahoo-refresh.sh:79-84,106-139; bin/chain-run.sh:189-213

CTRL-04P1Open

Payload gap findings do not cause repair and unreadable evidence skips reconciliation

Recorded status: open; control repair not implemented by this read-only audit

Observed: Validation returns 0 with nonblocking gaps and skips gap reconciliation if the warehouse is unreadable; latest receipt has four missing Week 3 participation fields despite warehouse evidence, plus eight week-shape warnings requiring policy classification. Historical measured…

Evidence: bin/validate-payload.py:223-311,396-416,650-682; bin/publish-data.sh:45-71

CTRL-02P1Open

Non-lane alarms and worker findings have no durable repair lifecycle

Recorded status: open; control repair not implemented by this read-only audit

Observed: Source/stage alarms and worker-watch findings are written for display; the 17:55 worker-watch receipt has a high proxy finding of 17 commits but zero commit subjects classified as plan items. That proxy alone does not prove work was unproductive; no linked triage attempt is…

Evidence: bin/lane-watchdog.py:1023-1075,1078-1118,1261-1301; bin/worker-watch.py:142-157

OPS-02P1Partial

Snapshot mirror verification does not prove a restorable copy

Recorded status: partial: a6ded152 and 2d3e2741 control patches reviewed. Twelve isolated recovery fixtures pass: quarantine, verified atomic replacement, bounded retry and local source retention. Production provider durability/restore and scheduled recovery remain unverified; no production deletion in this audit.

Observed: The remote compressed file's SHA-256 is recorded but never checked against the uncompressed source. An existing destination is reused without validating its decoded contents. A verified row can therefore represent a corrupt or stale compressed file. Follow-up: Current helper…

Evidence: bin/archive-retention.sh:104-114 hashes raw local warehouse and compressed .zst separately, then inserts archive_mirror verified=True without decompressing or comparing content; bin/archive-retention.sh:134-147 permits deletion based on that verified flag

OPS-08P1Partial

Retention reports referenced snapshots kept but deletes them anyway

Recorded status: partial: reference protection and action counters patched in a6ded152 and tested in isolated fixtures; production aged-snapshot pruning unobserved

Observed: In the snapshot pruning loop, if s in referenced increments kept_ref but does not continue. Execution reaches os.remove(s) for an old, non-active snapshot with a verified mirror row. An isolated execution of the exact loop with fake OS and DB called remove for a referenced…

Evidence: bin/archive-retention.sh: snapshot pruning loop; isolated-control-probes.json: retention_referenced_snapshot, fake os.remove only

OPS-03P1Open

Retention run consistently fails during model release mirroring

Recorded status: open: repeated model-release mirror failure remains; provider-side restore/readback unverified

Observed: Snapshot phase continued and reported 40 offsite objects by 09:20, but the release mirror step failed and the whole job exited 1 on every inspected recent run. Remote file presence and exact synchronization remain unverified.

Evidence: launchctl list: com.seano.playerweek.retention last exit 1; installed plist schedules 03:20, 09:20, 15:20

CODE-2P1Partial

Scheduled proving reports success after a required child fails

Recorded status: partial: repair landed on main b70f9114 after isolated 557cef8c; integrity 8, proving 8 and settle 7 tests pass, but no production filing or ledger replay was run

Observed: bin/proving-auto.py run() prints a nonzero child return code but does not return or raise it. main() continues from build-early-lines.py to proving-week.py --commit and finishes normally; the module calls main() at import time. The installed proving plist invokes this wrapper.

Evidence: bin/proving-auto.py:23-31,46-78; ops/launchd/com.playerweek.proving.plist:10-13

CODE-8P1Partial

A torn last proving-ledger line can be treated as absent evidence

Recorded status: partial: repair landed on main b70f9114 after isolated 557cef8c; integrity 8, proving 8 and settle 7 tests pass, but no production filing or ledger replay was run

Observed: proving._rows silently skips every JSON parsing failure. verify_chain hashes only successfully parsed rows, and _append bases its next hash on the last parsed row. An invalid trailing line is therefore invisible to chain verification and can be followed by a new valid line.

Evidence: playerweek/proving.py:88-126; tests/test_proving.py:84-94 (tests edited valid row, not invalid trailing JSON)

DATA-01P1Open

The sanctioned historical warehouse interface can bypass its cutoff

Recorded status: open; not repaired by this audit

Observed: At cutoff 2024-01-01, a filtered {plays} query returns maximum valid_time 2023-12-31, but raw SQL through AsOf.sql and an escaped where predicate return 2026-09-24. The wrapper also truncates datetime cutoffs to dates and does not enforce transaction-time availability.

Evidence: data.md: DATA-01; data-integrity-probes.json

CODE-5P1Open

The evaluated, frozen and consumer forecast paths are different objects

Recorded status: open; not repaired by this audit

Observed: The active fantasy delivery calls frozen playermodel.lines_for and empirical intervals; the issued playgrain game kernel takes team summaries/QB scalar and stores score trajectories. A separate sim2 player rollout and serving adapter exist outside the issued game release. Later…

Evidence: playerweek/forecast_delivery.py:206-230,417-450; research/playgrain/evalx/issue_playgrain.py:350-383,441

MODEL-01P1Open

Ratings, lineup uncertainty and policies are not fully connected to the issued game kernel

Recorded status: open; not repaired by this audit

Observed: N-04 calls the frozen Sim with team offense/defense summaries and a QB scalar. Separate ratings, lineup/policy components and sim2 player attribution exist, but their existence does not establish integration into that issuance. The S-15 player adapter is…

Evidence: ../full-forecast-machine-2026-09-26.md: architecture rule matrix; research/playgrain/evalx/issue_playgrain.py

MODEL-02P1Open

Game forecast quality gates remain red and evaluation does not fully match issuance

Recorded status: open; not repaired by this audit

Observed: E-01 k51f: 4897 games across 18 origins, only five accepted and thirteen rejected. Default QB=0 differs from issuance; recent QB-inclusive reruns also failed. G2 margin SD is 13.03 versus 14.2 +/-0.3 and key-number tests fail. G4 on 544 2024-25 games is RED: return -3.83%, 95%…

Evidence: ../full-forecast-machine-2026-09-26.md; research/playgrain/evalx/g4_verdict.json

MODEL-03P1Open

Research scorecards do not certify the currently served fantasy generation

Recorded status: open; not repaired by this audit

Observed: The active capsule uses September 16 weights and frozen lines_for plus opponent factor and empirical bands. It does not run forecast.py postprocessing scored by F-04 (723 2026 week1-2 survivors, post-hoc). J-03 grades a later clean-feature challenger. Later working-tree…

Evidence: ../full-forecast-machine-2026-09-26.md: published fantasy rule audit; playerweek/forecast_delivery.py

MODEL-04P1Open

Legacy fantasy approximations leave participation, role response and joint uncertainty incomplete

Recorded status: open; not repaired by this audit

Observed: Scoped Out zeroing, P(play), QB share and stat scoring are real controls. However future roles are largely held fixed; allocation/efficiency candidates were rejected or left off; interval output is an empirical point/position band with KDEF constants, not joint game…

Evidence: ../full-forecast-machine-2026-09-26.md: participation, allocation, efficiency and calibration rows; playerweek/forecast_delivery.py

MODEL-05P1Open

Market-free ancestry and enforcement are not established for the active fantasy capsule

Recorded status: open; not repaired by this audit

Observed: Current KDEF serving uses saved own-game score anchors, not a live odds lookup, but coefficient training retains market ancestry. Frozen player volume retains a reachable six-column market path and lacks the later general knowability.assert_clean call. None of 450 saved Week3…

Evidence: ../full-forecast-machine-2026-09-26.md: market-isolation correction; playerweek/forecast_fantasy.py

DATA-02P1Open

Table clock coverage does not establish row-level historical eligibility

Recorded status: open; not repaired by this audit

Observed: The clock gate requires one populated recognized clock per table. It reports 213/216 clocked with three explicit exemptions. Partially populated clocks include aar_attribution (15022 missing ingested_at), games_raw (272), stats_raw (2294), and inj_ladder (6077 missing…

Evidence: data.md: DATA-02; data-integrity-probes.json

CODE-4P1Open

Board completion measures work recorded, not requirements accepted or deployed

Recorded status: open; not repaired by this audit

Observed: All 127 flagged plan items currently carry state=done, including L-10 (unwired), E-01 (13 rejected origins), and N-04 (first real Tuesday issuance still future). tests/test_board_is_plan.py checks membership and tracked files only for the done bucket, while 56 plan items marked…

Evidence: buildsite/construction.json (2026-09-26 read: 127 plan_item, 127 state=done, 71 in done bucket); tests/test_board_is_plan.py:56-109

UX-01P1Open

Current Week 3 matchup and saved core forecast show different Playerweek totals without reconciliation

Recorded status: open; not repaired by this audit

Observed: The /team matchup board labels Sean's PLAYERWEEK total 130.22, while its adjacent SAVED CORE FORECAST card and Your roster starters total show 137.77. The board says the lineup is unverified; the source dialog for 130.22 supplies only serving:site_group_total:3:mine:starters and…

Evidence: No public evidence excerpt; see the source audit.

OPS-04P1Repaired

Weekly grader's healthy silence causes continuous false watchdog restarts

Recorded status: repaired in 928a18e5; 20 focused tests cover weekly success, genuine missed slot, failed slot, catch-up, missing receipt, hold and DST. Normal 18:24 MT watchdog publication shows grade OK using last_ok receipt, next obligation September 29 at 08:00 MT. No heavy grade was run for this test.

Observed: The weekly obligation was fulfilled, but the watchdog compares the last logged grade with the most recent hourly launchd firing. Its kickstarts immediately exit silently and cannot satisfy its own evidence check.

Evidence: installed com.seano.playerweek.playgrain-grade plist: hourly StartCalendarInterval Minute=0; bin/playgrain-grade.sh: latest Tuesday 08:00 marker makes subsequent hourly firings exit zero silently

OPS-05P1Open

Nimo transcript transfer works while audio archive moves repeatedly fail

Recorded status: open; not repaired by this audit

Observed: Transcription remains productive, but repeated HTTP 400 responses defer audio archive moves. The exact failing Drive API operation and whether all affected items are T1 were not established read-only.

Evidence: data/nimo-status.json observed 15:03 MDT: state ok, 8 workers alive, 6 transcribers alive, 463 collected in 24h, 4,133 transcripts on disk; installed com.playerweek.nimo-feed plist runs every 300s

CODE-3P1Open

The plan membership gate depends on a file outside the repository

Recorded status: open; not repaired by this audit

Observed: tests/test_board_is_plan.py reads ~/Downloads/playerweek-predictive-machine-plan.md directly. It passes here with 127 parsed IDs but fails with HOME set to an empty temporary directory despite the checked-in plan being present. bin/mouse-land.sh runs this test in a fresh clone,…

Evidence: AGENTS.md:19-27; tests/test_board_is_plan.py:20-43,54-68

MODEL-06P1Future acceptance

First real Tuesday issuance remains an unobserved acceptance event

Recorded status: pending future acceptance; not overdue

Observed: September25 rehearsal issued 16/16 games with n=20 and CLOSE rehearsal locks. The first intended production firing is Tuesday September29. That rehearsal does not establish the actual TUE lock, n>=2000, no-overwrite behavior, or production receipts. The event is still in the…

Evidence: ../full-forecast-machine-2026-09-26.md: N-04 and N-12; bin/playgrain-issue.sh

UX-06P2Partial

Season-plan summary binding repaired; rank assumptions still need product acceptance

Recorded status: partial: saved total binding repaired in 5a5fd0e4 and live verified at 18:12 MT; rank assumptions, uncertainty, and 19-change/+124.55 versus 50.35 total-delta explanation remain to be accepted; optimizer accuracy is not certified

Observed: On /team, the always-visible summary shows Current lineup FINISH 4th PTS 1601.17 and Optimized plan FINISH 1st PTS not published. The Season plan tab states 19 changes worth +124.55 points and lists swaps, but does not reconcile the first-place assertion with the missing…

Evidence: Live /team .season-summary; data/site-build/dist/data/adfc83adca269460f868.json pages.team.season_outlook.mine

CTRL-07P2Open

Zero site-audit findings does not certify missing required product fields

Recorded status: open; control repair not implemented by this read-only audit

Observed: Current site audit has zero findings under its declared browser rules; baseline audit saw an optimized-plan first-place card with points 'not published'. SURF-04 finds saved plan_projected_remaining_points=1651.52 while the card reads absent optimized_remaining_points: a missing…

Evidence: bin/site-audit.py:133-315,373-390; data/site-findings.json:findings

CODE-6P2Open

The automatic mouse landing gate does not run tests for changed behavior

Recorded status: open; not repaired by this audit

Observed: bin/mouse-land.sh permits up to six files and 300 changed lines. Its clone checks parse changed Python plus check-heredocs and board membership, and mutates only the heredoc control. It does not select or run tests for a changed model, ledger, or operator script before applying…

Evidence: bin/mouse-land.sh:28-47,55-103; No repository .github workflow, Makefile, tox.ini, pytest.ini or pre-commit configuration found by file inventory

ACTUAL-3P2Open

Sealed pregame archive actual dash has an ambiguous current-sounding tooltip

Recorded status: open presentation ambiguity; current actual recovered

Observed: Current default /team shows Tucker Kraft ACTUAL 5.10, while the collapsed sealed pregame snapshot shows ACTUAL — after opening and calls it “Awaiting result”; the archived score is intentionally frozen, but the tooltip can be read as a current missing actual.

Evidence: ops/audits/self-healing-2026-09-26/actuals.md; frontend/app.js historical-matchup rendering

UX-04P2Open

Status opens a Week 14 provider comparison during Week 3 without a visible week choice

Recorded status: open; not repaired by this audit

Observed: The /status Model accuracy view says Week 2 and Week 3 are in flight, but its Comparable projection sources table defaults to Week 14, with ours cutoff Time not recorded and Yahoo captured Sep 26, 12:45 PM MDT. The top-level Status view offers Model accuracy and Data & freshness…

Evidence: No public evidence excerpt; see the source audit.

UX-05P2Open

Build and consumer accuracy pages present different maturity signals without a product bridge

Recorded status: open; not repaired by this audit

Observed: Build / displays LIVE · 2026 winner accuracy 70.6% on 17 as-issued games and a fantasy-points live error of 65.9% on n=383. Consumer /status says S, SB, SQ, and SBQ Accuracy not published and Player / game completed matched outcome metrics are not published. Those can be…

Evidence: No public evidence excerpt; see the source audit.

UX-03P2Open

Consumer mobile header text collides at 390 pixels

Recorded status: open; not repaired by this audit

Observed: At a 390×844 emulated mobile viewport, the My Team title, Playerweek label, and Checked 0s ago / forecast snapshot text overlap in the top bar. The hamburger and info icon are visible, and document width stays 390 pixels, so a horizontal-overflow check alone misses the collision.

Evidence: No public evidence excerpt; see the source audit.

OPS-06P2Partial

Operations status conflates loaded jobs, work, and useful plan progress

Recorded status: partially repaired: job visibility and durable completion observation are live in 6053630b/ccc4d804/627946a7. All 135 installed jobs have state/attempt/result/completion/success/due/reason fields; 18:34 snapshot has 53 timed attempts, 32 timed exit-0 receipts, 8 named success receipts. Missing historical evidence remains explicit. Accepted-product progress attribution remains open; process completion is not model quality.

Observed: Eight workers were alive and logging, yet the worker-watch snapshot counted zero actively marked lanes; this can be a momentary between-unit state. Commit-prefix count is a proxy for plan progress, not acceptance of model quality.

Evidence: buildsite/watchdog.json 15:02: 76 ok, 1 late, 1 dead and no unwatched labels; data/worker-watch.json 15:04: lanes_working 0, 9 commits in 3h, 0 plan items built, Codex pace STOP while 93% weekly remained

OPS-07P2Open

A standing heavy-transcription hold is expired and should be reconciled

Recorded status: open; not repaired by this audit

Observed: The declared hold outlived its stated end by more than a day. Nimo is providing transcript throughput, so this is not evidence of a corpus-wide transcription stop.

Evidence: data/holds.json at 15:05 MDT: com.playerweek.transcribe-heavy since Sep 25 01:07 MDT, expected_until Sep 25 06:00 MDT, reason states Mac memory reserved for model critical path…; launchctl list: transcribe-heavy last exit 142

CODE-7P2Open

The older audit entrypoint still labels a superseded plan as the live queue

Recorded status: open; not repaired by this audit

Observed: docs/AUDIT-BRIEF.md is marked CURRENT and directs independent auditors first to docs/PLAN-machine.md, calling it the live queue. That file was last modified September 17 and is distinct from docs/PLAN-OF-RECORD.md modified September 25; AGENTS.md declares the latter…

Evidence: docs/AUDIT-BRIEF.md:1-37; AGENTS.md:19-27

UX-07P3Open

Legacy consumer URLs silently land on unrelated current sections

Recorded status: open; not repaired by this audit

Observed: Direct live navigation sends /accuracy and /data to Status, /brief to My Team, and /closed and /history to Maintenance; /news and /personas render a Page unavailable shell. The current seven-link primary navigation itself works, but these existing source-page paths do not…

Evidence: No public evidence excerpt; see the source audit.

R-02P1Open

Promoted learned features are not consumed by the examined training path

Recorded status: open; read-only architectural finding

Observed: The playgrain loop's learned-feature registry has a September 22 promotion, but its registered expressions have no located consumer in fit_models.py or the fixed features.FEATURES training frame. Commit 1af2edcb proves a registry update; this bounded code trace does not prove or…

Evidence: research/playgrain/loop/learned-features.json; research/playgrain/loop/registry.py

R-03P1Open

Research responsibilities do not clearly connect current-product work to the world-model transition

Recorded status: open; read-only architectural finding

Observed: Most daily scientist charters own the legacy player-forecast chain while the authoritative plan now targets a snap-by-snap world model. Useful current-board research is not consistently routed to the new policy, kernel, rollout and compiler layers. Legacy research remains…

Evidence: AGENTS.md; docs/PLAN-OF-RECORD.md

Source: ops/audits/self-healing-2026-09-26/prioritized-findings.json · Status follows the source snapshot; a partial repair remains open for acceptance.