This is a point-in-time record of the week of 2026-08-17 to 2026-08-23. It was written from the repository's history for that week and is not revised afterwards, so later pages may supersede what it says.

Week of 2026-08-17 to 2026-08-23

Window: 2026-08-17 00:00:00 to 2026-08-23 23:59:59, local author time Recapped: 2026-08-24 Commits in window: 155 (118 non-merge, 37 merges)

This was the week several production systems crossed from implementation into measured operation, while the repository's planning system was rebuilt around history rather than accumulating prose. Packed storage completed its first full four-month cycle; storage, service-health, analytics-serving and deploy-script plans closed; solver work acquired direct counters and a memory baseline; and a real maintenance window exposed the next ownership boundary.

What shipped

Storage and packed-artifact safety

Plan 131 existed to turn millions of tiny bronze objects into verified packs without losing the ability to read any artifact. Stage 5 added the worker, lifecycle DAG, recurring verification, refusal alert and production runbook; April through July were packed and pruned, with July collapsing 909,654 objects to 66 and reporting zero refused deletes. The plan then closed. The nine commits attributed to it are 17383a5, 217f6ba, 0ef59f7, a6011f6, ba4fda1, fea82ce, 095404e, dc2082e and 12dca3d.

Plan 133 fixed the two defects that pruning made consequential: existence checks now recognize packed objects, and sequential scans no longer thrash the sidecar-index cache. Production verification covered 720 artifacts across all four packed months with no failures (97962b9).

Plan 135 began because the 196 GB data volume was invisible to node-exporter. It made both filesystems visible by bytes and inodes, added capacity alerts and a per-path watchlist, bounded every local log sink, set Loki and Airflow retention, fire-tested the notification path, and brought the root filesystem back from 79% to 51%. Its eleven commits were 699a100, 91d5f45, 9148685, f60f339, 095404e, 71f3afd, 2a053a4, 216388c, a45c0fe, 8d7e22c and 912c939.

Plan 124 closed after the production record distinguished container-local OOM enforcement from the host-wide failures the guardrail was built to prevent (c99fbf0).

Health, analytics and solver liveness

Plan 140 replaced a two-service view with a contract covering the whole Compose fleet, then made container health a three-state metric so recovered containers do not remain alerting. Production deploys and soaks closed both stages. The fourteen attributed commits were 4aa3ff9, 760d440, 0477efd, ae72067, f740e6f, 0b4d62a, a6b2aed, 3009039, 1928bb1, 30552d1, b732d22, 530e82f, 7377b0e and 1799a08.

Plan 143 moved recurring analytics reads behind one atomic serving snapshot, with dbt_runner owning publication and metrics while ops became a presentation-only consumer. The corrected hourly freshness contract completed a clean 24-hour soak. Its five attributed commits were c379eed, d1246f2, d090a37, f740e6f and 1799a08.

Plan 136 first shipped scraper-owned solver/fetch counters and alerts, then learned that production's old browser image ignored the configured recycle settings and the previous OOM recycle had stopped firing. Stage 3 was therefore redesigned around measured memory headroom; Stage 3a now publishes that baseline. Its fifteen attributed commits were af4d752, 760d440, 1d32edd, 584f100, 59bfaeb, b8e6718, 23daeee, 7377b0e, 1799a08, 4ef5fdc, d66af58, 37025f4, 0aab919, 22b3e71 and b58ff9f.

Plan 141 was opened from the logging defects exposed by Plan 135, so parsing, labels, replay safety and privacy have one owner (12dca3d, 1799a08).

Delivery, CI and planning infrastructure

Plan 139 measured the suite and CI before changing them, closed its first two stages, and supplied the baseline used by the later docs-only fast path (436d815, 80a68e7, d138dad, 216388c, 1799a08). Plan 120 closed Gate F after verifying the published snapshot path and correcting a sibling-project finding (6320798, be1299e, 12dca3d).

Plan 144 made the standard redeploy path report what it actually recreated, distinguish restart from recreate, wait on the fleet's real health contract, and account for dependent services. Both modes were verified in production (a6b2aed, 441ae4e, 9a9a869, af4940b, f74f7ca).

Plan 125 gained an explicit branch pointer while stale watch rows and duplicated build-order commentary were removed from the index (6dbed62).

Plan 146 rebuilt the planning record: it reconciled states from git history, backfilled the completion archive, collapsed the index to five state tables, moved documents into a stable hierarchy, made the invariants executable, and added separate skills for state transitions and weekly prose. Its twenty commits were 310e2c3, 4973be4, eecd1ae, 9fb5408, 353336a, 0c08382, 810251a, f5416dd, b494798, 1efaf07, 9ed8f30, 5031e15, 937dd43, 20418e1, ae0f2c5, 48afa13, 4568c50, 041e647, b37942c and 4d3cdd9.

Plan 148 used that focused planning-doc test contract to skip application builds only when every changed path is under docs/, while mixed changes still run full CI. It was built, corrected for test isolation, verified against the mixed gate and closed in the same day (9266c98, 542f201, d022056, 0aa49d0).

Maintenance and the next data-ownership boundary

Plan 142 turned the first whole-host maintenance record into a reproducible state machine. Stage 0 captured the expected running set, created an inert maintenance pool, corrected the package-history claim, added caddy's restart policy, and wrote the JWT rotation and Phase B procedures. Its eleven commits were 717518a, 03c3868, 552d7de, 56771b7, 853297c, 39909a2, 2621324, ad805a7, cfe4198, 8045e7e and fe7d5e9.

That work found a recurring re-scrape loop: fetch completion was recorded only after downstream enrichment. Plan 147 separates scraper-owned fetch state from processor-owned enrichment state so a paused or failed processor cannot reopen network work (62cd758).

Plan 145 replaced two overlapping recovery drafts with one deletion-goaled plan for 1,299 legacy Parquet objects, explicitly preserving what matters before removing the bytes (136cb9f). Plan 138 established the public-surface contract and made the scored roadmap, rather than live GitHub or Markdown parsing, its source for recent work (d614d4a, b76fb44).

What moved between states

The index changed 62 times during the window, including Plan 146's deliberate conversion from the older index layout to five state tables. Read from that history, not from today's prose:

The parser reports these as before/after state changes, so “absent” here means absent from the five live-state tables, not absent from the repository or its completion history.

What is still owed

Unattributed commits

Nineteen non-merge commits name no numbered plan in their own subject or body. They are still part of the week's work; what is missing is only the durable link to why they were done.

Commit Subject
737a42c Docs update.
033f0f1 Fix Promtail discovery on Docker 29
ce53e23 Filter Promtail discovery at the Docker API
ec42e15 Reduce Airflow control-plane log noise
eeb806b Drop routine OAuth auth success logs
277f7c4 Keep only actionable Airflow stdout
dbe4ac1 Plan structured log ingestion contract
564784a ci: report coverage and reduce pipeline latency
806ce85 ci: use low-overhead coverage core
987f80c Plan safe host maintenance windows
21333ab test: make task log symlink check cross-platform
bbd9b23 feat: consolidate analytics query boundaries
2cfdb73 feat: publish analytics serving snapshot
ef3fda1 fix: align analytics alerts with hourly cadence
8267e5c fix: harden packed artifact read path
43032b4 fix(tests): read counters outside the builtins.open patch
35eef9a docs: Current State was a changelog; move it to the decision log
02d6603 feat(ci): add a docs-only fast path
41cf14d fix(ci): isolate the planning docs test

The Promtail and Airflow logging commits implemented the production fixes that fed Plan 141; the analytics commits are the implementation behind Plan 143; 8267e5c is Plan 133's read-path repair in effect; and the final two commits are Plan 148's code and isolation fix. Those neighboring records explain the sequence, but under this recap's attribution rule they do not retroactively put a plan number into a commit that did not name one.

Merges

Thirty-seven merges, named but not recapped as work because their non-merge commits are covered above.

Merge PR Branch
2643ed3 #210 plan-135-stage-5-discovery-filter
b94cfd6 #209 plan-135-stage-5-docker29
ff6d6b0 #208 plan-135-stage-5
f62cd00 #207 plan-136-stage-0-health-contract
8454ecd #206 plan-135-stage-4-followup
93ea4ec #205 plan-135-disk-watchlist
d3a82e7 #204 plan-135-disk-visibility
71dc70c #203 plan-131-stage-5-closeout
aa6cfce #202 plan-138-public-surface-refresh
6f6a2ba #201 plan-131-stage-5-lifecycle-dag
70e1ff4 #200 plan-131-stage-5-pack-worker
324666f #199 plan-135-storage-observability
5066bc1 #219 plan-133-pack-read-path-hardening
a3cdd59 #218 plan-143-production-soak-status
e5d3a46 #217 plan-143-analytics-serving-snapshot
821a6a6 #216 plan-140-service-health-contract
9f6c025 #215 plan-142-planned-host-maintenance
8b2254b #214 plan-136-stage-0-apiserver-pool
4fa6c7d #213 plan-139-ci-coverage-cache
a2b5adf #212 plan-120-gate-f-closeout
1c3ac0e #211 plan-141-structured-log-contract
70ccd83 #220 plan-140-143-soak-closeout
0a9fba9 #221 plan-140-stage-2-container-health
0d07ed9 #222 plan-140-stage-2-alert-ghost-series
50bba68 #223 plan-136-stage-2-solver-counters
1b66213 #224 plan-144-deploy-script-hardening
dd9e207 #225 plan-144-restart-mode-naming
5875def #227 plan-145-april-cutover-reconciliation
df2b9a4 #228 plan-146-planning-system
e43849d #229 docs/plan-136-d7-solver-memory-outage
5cd3e63 #230 plan-136-stage-3-solver-recycle
48374db #231 plan-142-stage-0-fixtures-and-gate
622a481 #232 plan-142-stage-0-items-6-and-7
a4d5ef4 #233 docs/plan-135-closeout
9b171b2 #234 plan-148-docs-only-ci
6481fa6 #236 fix/plan-148-docs-test-isolation
ad44704 #235 docs/plan-148-docs-only-verification

Deferred to the next recap

Zero commits currently sit after this window's end. The recap was opened at midnight, before any commit entered the new week.

git rev-list --count --all --since='2026-08-23 23:59:59'   # 0