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:
- Plans 5, 29, 52, 53, 55, 56, 77, 83 and 137 entered the superseded table; Plan 132 moved from build order to superseded.
- Plans 64, 70, 73, 103, 106, 107 and 117 entered backlog; Plan 130 moved from build order back to backlog.
- Plans 69, 134, 136, 138, 139, 140, 141, 142, 145 and 147 entered build order.
- Plans 114, 115, 120, 124, 128, 129, 131 and 133 left the live index as their completion records were reconciled into the archive.
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
- Plan 136 Stage 3b is waiting for the Stage 3a memory baseline; the plan says the next executable decision cannot be made from a healthy window alone.
- Plan 142 Phase B still has to exercise the maintenance pool at zero slots and
perform the live rotation/window procedure. Its document still opens with a
DRAFTstatus even though Stage 0 has shipped;fe7d5e9flags that mismatch without silently rewriting it. - Plan 145 has one Stage 0 gate left: a test rather than another production measurement. Deletion has not started.
- Plan 147 is filed but not built; until it lands, pausing processing can reopen detail fetches every fifteen minutes.
- Plan 138 remains an audited design; presentation work has not started.
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