Recent history with branch topology for this repository.
docs(test): USAGE.md — how to run the e2e harness (§11)
3171722
docs(test): ledger live-E2E webhook-ownership consequence (§11)
5872848
feat(test): preflight the webhook API before opening a real PR (§11)
e8ea864
fix(test): harness fails clearly when the database is unreachable (§11)
31d5f45
feat(test): complete the e2e harness — fold, degraded-mode, docs (§11)
7ffc692
feat(test): scenario-driven e2e harness (scripts/e2e) with clack/commander CLI
dce67e0
polish(arming): clearer arm-callout copy, drop eyebrow/icon, tighten button; show all repos in switcher
85ec68a
feat(worker): TRIPWIRE_FAIL_READS — force reads to degrade for the E2E floor (§11)
f86ceff
feat(web): home goes cross-repo — the only cross-repo surface (§4)
ab5fd81
style: biome format drift in onboarding-page + db manifest
dce913b
feat(web): repo switcher — topbar + cmdk palette, signal rows (§4)
846771b
feat(core): arm-time backfill — replay stored events into runs, surface off (§4)
174eb87
feat(web): arming affordance — unarmed is a call to action, not empty (§4)
c566b0a
feat(web): closed beta banner
db83b78
feat(core): repos.armed — a repo is gated only when explicitly armed (§4)
225a63e
feat(test): one-command prod lifecycle E2E — bun run test:lifecycle:prod
461c615
feat(test): fork-mode for the lifecycle E2E — runs on prod via a non-exempt PR
e43dd6b
fix(onboarding): link installation from the webhook, not just the redirect
b679f28
pushu pushu
c027335
test(deploy): §10 leak invariant as projection proof + fix smoke (unit 4 follow-up)
7739e5a
feat(deploy): cut-over runbook + deploy smoke script (unit 4)
087580f
feat(deploy): PlanetScale pooled/direct split + verify gate (unit 3)
36a43e7
feat(deploy): Railway config-as-code + env matrix + DEPLOY.md (unit 2)
6316fbe
feat(deploy): containerize api, worker, web for Railway (unit 1)
fb881bc
test(e2e): scripted live E2E for the comment lifecycle (§11)
39957ef
feat(forge-github): PR comment lifecycle — verdict transitions get a new comment
896b9ae
feat(core): min-merged-prs@2 — fix an unsatisfiable rule
8b250b5
feat(web): run page evidence — the stored §10 projection, not raw JSON
c112fbe
feat(db): seed a full year of realistic activity for demo personas
abbd43f
style(web): lay the /login dev personas out as a grid
e421886
fix(web): dev-login sign-in fallback + demo secret length
3d224c6
feat: bun run dev:demo — embedded pglite, web head only (§13)
732e270
feat(web): dev persona switcher — auto-login without OAuth (§13)
26c2dfb
fix(web): home stat cards — number and series tell one story
cb4771e
feat(core): ai-review@2 — findings quote code in backticks
8884568
feat(web): enrich run page — passed/failed steps, ai-review file containers
3bb7675
feat(web): run steps — connector line through dots, tighter ms badge
ac880a2
feat(web): block hover behind the feed blur; apply stack styling to the run page
53c8e4e
fix(web): activity stack — header fill, no row dividers, show less, aligned chips
55218ea
fix(web): activity stack — first 10 then 'show more (N)', bottom blur
3fdffed
fix(web): onboarding callback links on session; funnel install params
8f297cc
fix(web): quiet first contact — real logo, cardless /login + /onboarding
70e2899
feat(web): /activity stacked cards, no dropdowns
168bd17
feat(web): real empty states across surfaces
f805fc0
feat(web): onboarding — user ↔ installation ↔ active repo (§10)
c3c7bd7
fix(web): run skeleton matches session — no chrome for public runs
62c52d0
poggers
6694685
feat(forge-github): rewrite the PR comment + review copy (§7/§12)
7047647
feat(core): rules declare a remedy + optional waitHint (§12)
ff0fa8f
fix(web): run-page skeleton renders in the app shell
3ffc578
refactor(db): activity feed wire shapes to contracts + typed row mapping
e47c736
feat(web): polish the /activity feed — 5 defects
1e50b33
feat(web): chain /activity feed by change request
bbf5479
feat(web): /events → /activity — the live decision feed
c958bee
fix(web): scroll at the shell, not per-page — hover anywhere to scroll
8bc4843
chore: add `bun run test:run` to fire a fresh scratch-PR run
e733610
fix(web): real session user + collapse analytics to moderation source
432eee5
feat(web): home renders the real moderation queue
acf3dab
refactor(web): delete demo-residue routes + their data/components
68608e0
fix(web): restore page scroll on session dashboard routes
59c223e
feat(core,worker,web): public evidence split — contributor facts vs repo internals (§10)
4840794
feat(core,web): ai-review opt-in per repo — off until enabled (§8)
02b83dc
feat(web): /rules over real data — automod mockup absorbed (§9 step 3)
4279ab9
feat(web): public run pages (spec §10 access model) + queue #11 synthetic steps
a0bfa67
feat(worker): verdict replay — the §11 row + core CI gate
a6f0eef
docs: live-test report — T1-T4 findings, evidence, surprises ledger
6612a4c
feat(web): editor outcome handles — fail/approve/deny edges expressible
4732b2e
fix(worker): deny floors to block when the graph drew no deny edge
89c6de1
fix(worker): harden exemption env + close verification-queue #10
3229e98
feat(worker): surface sweeper + comment ownership + boot health
ef9b797
feat(core,worker): toggles become real — derive the default workflow from rules
c485503
fix(core): gates must see failures — all-failing gate no longer verdicts pass
b221093
docs: merge unified-rules amendment into spec (kills "automod")
3ccfc9a
Update bun.lock
bf6e66e
feat(web): real activity on /analytics moderation metrics
45832ac
refactor(copy): centralize all bot-facing strings in forge-github/copy.ts
594aedb
docs: de-stale parity §7, fence note for exemption flag, queue #5 status
c06cb3c
docs: sync spec §7/§10 + ledgers to as-built comment + public-run-page decision
0e7649b
feat(comment): one comment — reason up top, run button in a for-maintainers dropdown
f20cf30
feat(comment): sharper verdict copy, review points to the comment
2e8f1fb