This is a point-in-time record of the week of 2026-08-03 to 2026-08-09. 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-03 to 2026-08-09
Window: 2026-08-03 00:00:00 to 2026-08-09 23:59:59, local author time Recapped: 2026-08-21 Commits in window: 1 (1 non-merge, 0 merges)
One commit, on the last working day of the week. It is the week work resumed after a seventeen-day break — the maintainer was on vacation, per their own account on 2026-08-21 — and the commit it resumed with set up everything the following week then measured and rejected.
This recap was written on 2026-08-21, twelve days after its window closed, to
fill a gap in docs/recaps/ rather than at the end of the week it describes.
Everything below was read from git and from the plan documents on that date.
What shipped
Plan 114 — the sectioner itself, built and gated
8cab72a on 2026-08-08 landed Stages 0-2 of
Plan 114: 1,005 lines
across processing/html_sections.py and its tests, splitting raw cars.com
detail pages into named, content-addressed sections. No MinIO, no scripts, no
scraper or production changes.
The plan exists because Plan 110 found that whole-file byte hashes do not match even when parsed vehicle state is unchanged, with the difference concentrated in request, session and analytics regions while the vehicle data stays stable. If sections could be made stable and reusable, artifacts could be retained far longer than a 30-day window — which is the prize the whole audit was chasing.
Three decisions in the commit are worth keeping, because each is a refusal:
- Correct by construction, not by testing. Sections are contiguous,
non-overlapping character slices covering the whole document, so
reconstruct(extract_sections(html)) == htmlholds by the shape of the data structure. Offsets come from anhtml.parsersubclass rather than from BeautifulSoup withstr(element)re-joined, specifically so that lxml normalising an attribute cannot be mistaken for the sectioner being wrong. - A lossy tier was built and then dropped. An earlier draft key-sorted JSON script bodies and discarded sections believed to be per-request noise, for a measured ~1.8% reuse gain. It was cut because the equivalence gate can only validate against the current parser, while the entire point of retaining artifacts is reprocessing under future ones — so any lossy transform is a bet that cannot be re-run.
- Two whole-document parser scans make pruning unsafe, and are now pinned by
tests.
parse_detail_page.py:166scans the serialized document for"seller":{...}and takes the first match, so dropping an earlier section holding a decoy blob changesdealer_phoneand the fallbackdealer_zip.parse_detail_page.py:72scans the raw string for "no longer available", so dropping a section containing that text flipslisting_statefromunlistedtoactive. No fixture carries an unlisted marker, so that second scan is covered by injecting one rather than left untested.
The Stage 2 gate passed on all three fixtures. What it did not yet touch is the
storage question — whether sectioning is worth doing — which is Stage 3, and
Stage 3 ran the following week at 1f0e847 and answered no on a 223%
regression. See 2026-08-16.
What moved between states
Nothing. docs/PLANS.md has no revision with an author date inside this
window, so no plan entered, left or changed table — including Plan 114, whose
implementation this week was.
What is still owed
- Plan 114's storage case was untested when the week ended. The commit is explicit that it is audit-first and should not replace raw HTML writes in the production scrape path. The measurement that would decide it had not run.
listing_statecorruption is pinned but not fixed. The second parser scan flips unlisted and challenge pages toactive, and this commit's tests stop sectioning from causing that. The underlying defect is not this plan's and later became the blocker on Plan 130.- The Plan 125 Gate C branch stayed unmerged through the break and was not touched this week.
Unattributed commits
None. The window's single commit names Plan 114 in its subject.
Merges
None. 8cab72a reached master the following week, inside 788bb33
(PR #184) on 2026-08-10, which is counted in
2026-08-16 — the one merge in that window that carried work
in from before it.
Deferred to the next recap
173 commits fall after this window's end, as of 2026-08-21.
git rev-list --count --all --since='2026-08-09 23:59:59' # 173
Because this recap was backfilled, most of that tail is no longer deferred: the week ending 2026-08-16 is recapped. What remains genuinely uncovered is the week of 2026-08-17, which is not complete and so is not recappable yet.