4 months ago
1e50b33- tripwire's own comments now nest inside the change-request timeline, labeled bot and deduped to one entry (one upserted artifact, §7). normalize sets a neutral comment.byTripwire from the forge marker; buildGroup + the live merge collapse create/edits. copy reads "commented on #1", never "comment #3". - a blocked entry always says why: the leading-reason lateral falls back to the failing rule name when the projected summary is null. plus a one-shot scripts/backfill-public-projection.ts that re-projects stored evidence through the worker's own projectRulePublic (no second home for rule knowledge) — backfilled 31 of 37 stale rule steps. - exempt evaluations and other non-run context render dimmed so they never compete with the verdicts. - every entry is clickable: a run links to /runs/$runId, otherwise the event's github html_url (push gained an optional compare url through contracts + normalize). - deleted the garbage Codertocat fixture event via a one-off SQL statement; no app delete path — the event store stays append-only. root package.json gains core/db/drizzle devDeps so one-shot scripts resolve the workspace packages. spec §4 surface line updated. Checks: biome clean, typecheck 0, boundaries ok, 196 tests, replay 2 flips (unchanged causes).
Parentbbf5479