Scope
Git history of master since the project was committed. 50 commits total (verified git log --oneline | wc -l on 2026-05-02). Spans 2026-03-11 to 2026-04-27, ~7 weeks.
The wiki QA gate originally estimated ~131 of 163 commits as undocumented. The real branch is much smaller — 50 commits, all on
master. The earlier figure appears to have counted overstory worktree branches (overstory/...) which are agent scratch and not part of project history.
Eras
Commits grouped thematically. Detail notes link the individual commits with hash, date, and one-line meaning. See Notable Commits for the top ~20 with deeper interpretation.
| Era | Span | Commits | Detail note |
|---|---|---|---|
| Security & restore point | 2026-03-11 → 2026-03-24 | 2 | History Foundation Era |
| Phase 1–3 enrichment overhaul | 2026-03-24 → 2026-03-25 | 4 | History Phase Refactor Era |
| Domain discovery hardening | 2026-03-25 | ~12 | History Domain Discovery Era |
| Firecrawl experiment | 2026-03-26 → 2026-03-27 | 3 | History Firecrawl Era |
| Kundkort + BV API + frontend | 2026-03-31 → 2026-04-01 | ~7 | History Kundkort Era |
| Crawlee migration & quality loop | 2026-04-01 → 2026-04-02 | 4 | History Crawlee Era |
| Tremor frontend & ECOAPI | 2026-04-06 | 5 | History Frontend Era |
| Archive / retention system | 2026-04-06 | 4 | History Archive Era |
| Docs & QA push | 2026-04-22 → 2026-04-27 | 4 | History Docs Era |
| Schema migrations tracking | 2026-04-27 | 1 | History Migrations Era |
Era counts sum to 46. The remaining 4 are housekeeping: seeds: sync (29e46db), mulch: update expertise (19ff8cc), chore: remove temporary test companies (68a59da), and the docs: status report (cda3728) which is also covered under domain discovery.
Reading order for newcomers
- History Foundation Era — what existed before the rewrite.
- History Phase Refactor Era — the three-phase teardown of
enrichmentEngine.v7.ts. - History Domain Discovery Era — the single hardest problem the project has solved repeatedly.
- History Crawlee Era — the current scraper foundation; see Crawlee Scraper.
- Compliance era — covered inline within Phase 1; see Reklamspärr, Article 14, Opt-Out Hashes.
- Notable Commits — the highlights when in a hurry.
Cross-cutting threads
These threads span multiple eras and may be useful as alternate indices.
Compliance hardening
- 006a770 (2026-03-11) — HMAC-SHA256 opt-out hashing, JWT sig fix
- 2f1119d (2026-03-24) — Reklamspärr Gate 0, Article 14 trigger moved to collection time
- d78d33e (2026-03-25) — reklamspärr filter on export endpoints, Gate 0 inside
enrichV7()
Wiki entries: Reklamspärr, Article 14, Opt-Out Hashes, GDPR Legitimate Interest, RoPA Log.
Domain discovery iterations
Five separate commits attack the same problem from different angles. See History Domain Discovery Era and Domain Discovery.
Worker isolation (Phase 3)
- c006048 (2026-03-25) — labelled “Phase 3 — scale infrastructure for 1.4M enrichment runs/year”
- Promoted JSONB fields to real columns, added partial index for staleness, RoPA month bucketing, per-purpose Redis logical DBs, dispatcher worker
The
MEMORY.mdnotes "Playwright runs inline in enrichWorker — must decouple before raising concurrency > 40" as a critical blocker. No commit in the 50-commit history isolates Playwright into a separate worker. Phase 3 is infrastructure-only.
How this note is maintained
Append new commits to the appropriate era note as they land. When a new theme appears that does not fit existing eras, add a row to the table above and create a new History <Name> Era.md note. Do not rewrite past entries; correct them with > [!stale] callouts.
See also
Notable Commits, System Overview, Repository Layout, log.