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

Window: 2026-04-27 00:00:00 to 2026-05-03 23:59:59, local author time Recapped: 2026-08-28 Commits in window: 141 (109 non-merge, 32 merges)

This is a backfill written 117 days after the window closed. It is an unusually large week: the measured commit/body/stat read was about 12.6k tokens. Work spanned the final Airflow cutover, dbt/DuckDB and dashboard migrations, n8n decommissioning, portfolio presentation, and a new production observability stack.

What shipped

Plan 71 closed the remaining scraper migration and processing-test gap at e95e426: scheduled listing and detail DAGs, safe claim release, a scraper readiness endpoint, 52 processing integration tests, 95% processing unit coverage, and dashboard visibility into Airflow. This made the orchestrator thin and kept business behavior in tested services.

The surrounding unattributed work completed the same architectural turn. 421f90c replaced dbt-backed operational views with plain Postgres views over HOT tables. 9f08336 rebuilt dbt on DuckDB/MinIO silver, replaced Python integration seeding with declarative dbt unit tests, and overhauled CI. db85b2a and its follow-ups converted the Streamlit dashboard into an analytics product reading DuckDB materializations instead of operational Postgres queries.

Plan 86 added Prometheus and Grafana at 3b84995, with Airflow, Postgres, MinIO, service and host metrics provisioned as code. Later commits added Loki/Promtail aggregation, customer-pipeline gauges, dashboards, Telegram alerts and operational fixes. The plan's purpose was to add observability only after Airflow supplied meaningful production signals to observe.

850cdb9 names Plans 102 and 95. It removed n8n, legacy Postgres and dead service paths while turning /info into a concise portfolio landing page. Follow-ups removed stale tests and mounts, polished the page and demo, and added data-health metrics. Plan 103 appears only in that commit's body after the subject has already attributed the commit to Plans 102 and 95, so it is not an additional attribution under this recap's rule.

The rest of the week repaired issues exposed by the migration: Flyway ordering and grants, SRP scheduling, 403 ownership, cooldown events, archiver foreign keys, VIN collisions, dashboard queries, Caddy/static paths, CI, logging and alert timing. All are named below rather than disappearing for lack of a plan number.

What moved between states

Seven planning-index revisions produced these net transitions:

What is still owed

Documents for Plan 99, Plan 100, Plan 101, Plan 102 and Plan 103 were created during the week. Plans 99–101 shipped without ever appearing in an active-table transition; Plan 103 ended the window with a document but no table row. Plans 86, 91, 92 and 96 also left active tables without every terminal state being explicit in that week's index. Those were historical filing gaps.

As of 2026-08-28, Plans 71, 86, 91, 92, 96 and 99–102 are archived; Plan 90 is superseded; and Plan 103 is in backlog with a trigger. No planning-state action is owed today.

Unattributed commits

Three non-merge commits carry plan references: e95e426 (Plan 71), 3b84995 (Plan 86), and 850cdb9 (Plans 102 and 95). The other 106 are unattributed:

421f90c replace dbt ops views with plain postgres views reading HOT tables directly
d222b67 fix view creation
525099a fixing dashboard queries for new schema
de546fe moving dashboard queries to sql files to keep testing in sync with reality. Streamline linting.
8c31554 fixing ops scrape sql
ddecda8 fixing dashboard imports
d18c880 fix the test setup to work with other tests, hit the actual test data.
c8c9a75 add new dashboard queries to get airflow stats. remove dependencies on n8n runs.
d61d073 fix import
3387e7c fix dashboard query to use correct schema for airflow stats
144dc00 fixing port for scraper
1f99a4b increasing batch size
049d469 additional planning
9f08336 Rebuild dbt layer for silver/DuckDB architecture and overhaul CI
47da02f integration and testing fixes for new framework
8c09e2c fixing minio image
c0a0764 fixing migration guard for airflow check
ffe880f fixing dbt unit tests
cc5c011 more CI tweaking.
864aaf4 fixing dbt setup
dc3c253 testing a row in a table
8bbb391 defining source column types.
f779b5b adding empty model runs to build structure before unit testing.
4a668d2 removing unit tests on source tables.
90e316b fixing data types, wrong ci values supplied.
130bd8a fixing test expectations.
b21096c fixing airflow smoke test to remove removed task.
844a1c7 fix minio config
db85b2a Refactoring the dashboard to pull from minio data
8e6e66e add testing support
49ed455 fixing import
87ccbbc new dashboard page for ops health
3a85ccc linting
4319839 fixing unit tests.
da822c3 fixing tests
dcde98c adding test data
79990e5 fix flyway migrations
7f0458f fixing dashboard requirements
bdf2b68 dashboard tweaks and dbt fixes for correct data
88cb4f0 filter mart to only tracked vehicles
e892dbd fixing unit tests for new mart def
e96a441 fixing dealer id mapping
ca96b33 fixing dashboard queries
ff080c0 fix processing bug w/ writing unlisting events.
9cf593f script to backfill unlisted data
a77f789 fix marts to correctly keep vehicle info when tracking unlistings.
0ca724e fix price freshness
2255434 fix flyway migration for CI
63825cc flyway fixes
f3d580a adding requirements to test env
dfd5c1d fixing CI dependencies
171f2ec cleaning up claude's flyway mess
4cfc205 final flyway fix
c636ee9 fixing caddyfile handling
ff035aa fixing unit test for DBT, adding dashboard link, planning.
a61d1af more planning
ded1bf1 docker-compose.override.yml: removed stale n8n service block
4069b09 cleaning up integration tests refrencing removed tables.
0d87ffb cleaning up integration tests refrencing removed tables.
3fbd1b1 fix a couple bugs
51d90ef info page polish
1ec094d info page enhancements
2bb6ca0 info page tweaks
88f22c8 info page tweaks
93ba47a info page tweaks
f7d5c6b linting
577b647 adding new dashboard metrics for scraping performance.
a2be03d linting
c3e8006 fixing ci dependencies
5cf2203 tweaks to the info page
832943e dashboard fix
d31592b fixing SRP bug
788f548 linting
ae5e7aa more robust logging
c8257e3 fix bad pathing handle
fe9a37b more pathing fixes
2280f45 fixing 403 bug, moving recording of 403's to source.
caf09e7 cleaning up the integration testing
818efee problem in cleanup queue
bd5f6b6 archiver fix
50f70db migration to fix scraper permissions
ed322eb Redesigning the landing page for maximum impact
d281722 demo vid
311cc58 more page tweaks
52e4258 full language pass. Cleaning it up.
6eeb928 fixing sequence permissions for scraper
09b450b dealing with version conflict
a6211d7 another version tweak
0fb3f25 fixing bug on vin collisions coming from carousel hints.
1547095 fixing unlisted query on dashboard
9dc3f54 telling the story on key design changes.
620ecba adding some through-put metrics
6c5f2ff fixing detail drop downs
cf216c8 Add Loki 2.9.8 and Promtail 2.9.8 services to aggregate logs from all Python services (ops, scraper, processing, dbt_runner, archiver).
da26ec6 fixing set up of dashboards
f8a40af fix test
ccd39f7 adding customer pipeline health metrics
4e3c3c2 adding new metrics to dashboards
3aea888 add alerting via telegram to grafana.
cbb7dd6 fixing grafana setup
14bf973 trying older grafana version
1304e05 fix env variable
6e9bf9d telegram set up tweaks
002e55f fixing alert timing rules
efc9fb2 updating readme and info page with new stuff
eb5484c tidyiing up landing page

Merges

None of the merge branches names a plan.

Deferred to the next recap

683 commits sit after this window's end as of 2026-08-28.

git rev-list --count --all --since='2026-05-03 23:59:59'   # 683

That raw tail includes every following week through the current partial week. The complete weeks ending May 10, May 17, May 24, May 31, June 7, June 14, June 21, June 28, July 5, July 12, July 19, July 26, August 2, August 9, August 16 and August 23 are already covered. No following complete week is genuinely uncovered; the week ending August 30 is still in progress.