Repository navigation
Conversation
ROADMAP.md says what is shipped, what is next and why. The parity plan stays the backlog — what is missing — and its "immediate list" is marked spent, because all four items in it have shipped. That split is the point. The parity plan drifted far enough once that five shipped features still read as outstanding, and work was nearly dispatched to rebuild the webhooks UI, the scheduled-job ledger and the storage seam. Keeping a schedule in the same file as a backlog is what let that happen, so the roadmap is explicitly reconciled against the tree rather than against its own previous contents, and says so at the top. Records three things that were otherwise only in PR descriptions and would have been lost: the merge order for the open stack (#245 consumes an API that only exists in #248), the suppression-expiry question P1.3 must answer in its schema rather than defer, and the two standing environmental hazards — DB-to-host clock skew failing clock-sensitive tests on any branch, and the golangci-lint action cache reporting findings in files a branch never touched. Also sets out QA as a separate Petri agent: what it would look for, why the existing QA agent cannot find it, and that it is a spike before it is infrastructure. The Petri API specifics are explicitly marked unverified. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VECELVAKe8Xcp7GH9wGR5t
Contributor
Author
|
Closing — not the right call. The roadmap content isn't lost; it's in the PR history if any of it is wanted later. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
ROADMAP.md, and stops keeping the schedule in two places.Why a separate file
The parity plan has been doing two jobs — backlog and schedule — and it drifted far enough that five shipped features still read as outstanding, nearly sending work to rebuild the webhooks UI, the scheduled-job ledger and the storage seam.
So the split is explicit: the parity plan stays the backlog (what is missing),
ROADMAP.mdis the schedule (what we are doing next and why), and the roadmap states at the top that it is reconciled against the tree rather than against its own previous contents. The parity plan's "immediate list" is marked spent — all four items in it have shipped — and now points here.What it records that was otherwise only in PR descriptions
Three things that would have been lost:
The merge order for the open stack. #245 consumes an API that only exists in #248. Merging it first breaks the build. That is currently knowable only by reading two PR comments.
The question P1.3 must answer in its schema. Nothing in this repo ever deletes from
suppression. The verification row carries an expiry; the suppression it writes does not. So an address suppressed because its domain was briefly NXDOMAIN is suppressed permanently, and the only evidence expires. Either a sweep re-verifies expiredinvalidverdicts, orundeliverablesuppressions carry their own expiry — but it has to be decided in the schema, not deferred.Two standing environmental hazards, both of which cost real debugging time this cycle: DB↔host clock skew (measured between −1711 ms and −37 ms on one machine in a day) failing clock-sensitive tests on any branch including
main; and thegolangci-lintaction cache reporting findings in files a branch never touched, including paths that no longer exist.QA as a Petri agent
Sets out the intent rather than a design.
The existing QA agent executes 135 Go integration files, 9 Playwright specs and the Vitest suite — it verifies what we thought to assert, and structurally cannot find what nobody thought to assert. Every significant bug found this cycle was in that second category:
errors.Newvalues meaning anerrors.Ischeck had never once been true in productionA judge rubric aimed at "did the system report success while doing nothing", "did two paths disagree about the same object" and "did a failure surface anywhere a user could see it" would have caught all four.
Inroad suits this unusually well because it already exposes a typed agent surface (
internal/app/mcpserverwith a documented tool reference), so an auditor can drive the product through its own MCP tools rather than a browser.Sequenced as a spike first — stand it up against the MCP surface with a handful of seeds and find out whether the transcripts are judgeable. Output is an answer, not infrastructure. Petri's current API, its judge configuration, and whether it drives a non-model target cleanly are all explicitly marked unverified and need checking upstream before any of it is scheduled.
Also
README.md's docs table links the roadmap, so it isn't orphaned. The relative link from the parity plan was checked and resolves. No docs-site content changed — the roadmap is a repo-root file, not a Starlight page.🤖 Generated with Claude Code
https://claude.ai/code/session_01VECELVAKe8Xcp7GH9wGR5t