This is a point-in-time record of the week of 2026-03-23 to 2026-03-29. 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-03-23 to 2026-03-29

Window: 2026-03-23 00:00:00 to 2026-03-29 23:59:59, local author time Recapped: 2026-08-30 Commits in window: 71 (48 non-merge, 23 merges)

This is a backfill written 154 days after the window closed. The measured commit-body/stat read was about 9.0k tokens. The week turned the previous week's fast-growing pipeline into something safer to build, parallelize, deploy and operate, then closed with dbt efficiency work and an expanded admin surface.

What shipped

The March 23 sequence hardened deployment and identity. 1b2d5ea removed source bind mounts so images were built from committed code; f991fc7 materialized int_vehicle_attributes as the cross-source VIN identity table; and 153ad65 introduced an atomic dbt build lock. Plans 45–47 in the completed-plan ledger capture the shared constraint: deploys and builds needed to operate on a known code snapshot and serialize stateful transformations.

Parallel detail processing followed. 0b600e4, 01abcd6, 0d0b391 and their fixes introduced status-aware listing claims and moved the large selection query into ops_detail_scrape_queue. Two runs could then claim disjoint work without a fragile time-only lease. The schema, setup guide and README were updated around that topology, while 65eeef3 automated n8n workflow import so checked-in workflow JSON could actually control a deployment.

The dashboard was made both smaller and more truthful. 1a649a4 split the 1,108-line Streamlit application into per-tab modules. The surrounding commits corrected active-listing counts, run throughput, error summaries, price freshness and newly unlisted metrics. b283302 and c2a00f2 correspond to Plans 33 and 30 in the completed ledger, even though their own commit text uses issue-style #33/#30 rather than naming a plan and therefore does not earn plan attribution here.

ed5a492 explicitly implemented Plan 35's dbt audit: staging layers were filled in, redundant models and tests were removed, expensive models were materialized appropriately, and documentation was tightened. Other dbt commits improved early-break behavior, widened the known-VIN source, and created a shared build sub-workflow that distinguished lock contention from a failed build rather than retrying both forever.

ee28bae names Plans 54 and 58 and overhauled the admin UI with run history, dbt controls, database-backed intent management and dbt documentation. The same branch later added the log viewer. The ledger records the combined goal as an operational control plane with clearer service responsibility, rather than unrelated pages added to the scraper.

The final attributed fix, 0fa3c56, names Plans 73 and 74. It corrected dbt intent handling and SRP breakpoint behavior. Plan 74's full DAG correction completed on March 30 and therefore belongs to the next recap; the live Plan 73 document still treats the broader scraper split as a deferred review after the linting pass.

What moved between states

Eight planning-index revisions produced these net changes:

The second change did not undo Plan 6's asynchronous scraper work. As of 2026-08-30, the completed-plan ledger records it again with the implementing commits and recovery history.

What is still owed

At the window boundary, Plan 74's new-search-config DAG correction was not yet complete; it closed on March 30 and is covered by the next recap. Plan 73's larger structural review remained deferred and, as of 2026-08-30, its live document still says to reassess after the relevant linting work.

The week also exposed a historical filing gap when Plan 6 disappeared from the index. That record has since been recovered in the completed-plan ledger, so no planning-state action is owed for it today.

Unattributed commits

Five non-merge commits name plans: e43f3f1 (Plan 25), 4b55084 (Plans 25, 35 and 37), ed5a492 (Plan 35), ee28bae (Plans 54 and 58), and 0fa3c56 (Plans 73 and 74). The other 43 are unattributed:

18ae913 Fix unlisted chart: drop scrape target filter that excluded pre-backfill data
b283302 Add error_count and last_error to runs table (#33); verify #34 resolved
c2a00f2 Dashboard: add unified Recent Runs table with throughput stats (#30)
88f49c3 Dashboard: switch search scrape chart from per-run to daily aggregate
97b4546 Dashboard: add success % line to search scrape chart
b4833e2 Dashboard: add unmapped carousel hints to stale vehicle backlog
5feae4c Dashboard: 30-min buckets on price freshness chart, trim to 12h window
07b3bb5 Quick dashboard changes
1b2d5ea Docker: build from committed code, remove source volume mounts
f991fc7 Convert int_vehicle_attributes from view to incremental table
b8a865d Fix missing WITH keyword in int_vehicle_attributes on full-refresh
641a349 Update PLANS.md: mark 45 and 46 complete
153ad65 Add dbt build lock to prevent concurrent dbt runs
df3c160 updating workflows
0b600e4 Add listing claiming and ops_detail_scrape_queue dbt model
94048de Update schema, setup script, and README for recent changes
65eeef3 Automate n8n workflow import on container startup
01abcd6 Add status column to detail_scrape_claims for self-managing claim lifecycle
e643516 Fix n8n entrypoint mount conflict with read-only /workflows volume
c1c28de Add .gitattributes to force LF line endings for shell scripts
4611eef tweaks to workflow
0d0b391 add yml for ops detail scrape
689633f Fix dbt build failure: remove valid_vin test from ops_detail_scrape_queue
9920ec4 more tweaks
73464c4 Update docs and setup for auto-import workflows and parallel detail scrapes
1a649a4 Refactor dashboard: split 1108-line app.py into per-tab modules
65339ce Fix active listing count: source from snapshot instead of time-windowed SRP/detail CTEs
05c7272 trying to increase throughput
8753832 Fix detail scrape run metrics: show prices refreshed and newly unlisted
a31ba8f Various tweaks to dashboards and pipelining logic
054b996 fixing unlisted record recording.
08d7346 dashboard and dbt model tweaks
be33e1d fixing scraper and dbt models
82b8b9d updated readme and plans
da99ebc more dbt fine tuning
0864d34 more dbt cleanup, removing redundant tests.
8f4cc93 Fix SRP early breakout: unescape HTML before VIN regex extraction
dd17f3b dbt improvements
fbe7567 Fix known_vins: query all VINs from int_vehicle_attributes instead of 14-day SRP window
557bae0 refactor n8n workflows to implement new DBT building subflow to better handle failure. New Orphan Checker to clean up in-flight crashes
06c9526 refactor: move dbt_intents DDL into schema_new.sql and seed into db/seed/
4ace675 feat: add log viewer to admin UI (/admin/logs)
edb3f74 Future Planning

Merges

PRs #42 and #43 come from feature/admin-logs-plan54-58 and therefore name Plans 54 and 58. The other merge branches name no plan; merges are listed but not recapped.

Deferred to the next recap

1,183 commits sit after this window's end as of 2026-08-30.

git rev-list --count --all --since='2026-03-29 23:59:59'   # 1183

That raw tail includes every following week through the current partial week. Every complete week from March 30 through the week ending August 23 is already covered. No following complete week is genuinely uncovered; the week ending August 30 is in progress.