Repository navigation
feat(roadmap): check a plan number against its constant - #4073
Merged
Merged
Conversation
dan-petty
force-pushed
the
feat/3308-the-plan-check-compares-a-number
branch
2 times, most recently
from
November 7, 2026 21:02
43b995e to
5b42b51
Compare
Add constant checking to roadmap stage validation. Read module-level integer constants from the staged repository with Python AST. Compare candidate numbers in proposal, design, and spec delta sentences with known staged constants. Refuse proposals where the numbers differ. Record constants in stage eval cases and pass them to the gates during replay. Closes #3308
dan-petty
force-pushed
the
feat/3308-the-plan-check-compares-a-number
branch
from
November 7, 2026 21:35
5b42b51 to
3feccf2
Compare
dan-petty
marked this pull request as ready for review
November 7, 2026 21:44
dan-petty
pushed a commit
that referenced
this pull request
Nov 7, 2026
🤖 I have created a release *beep* *boop* --- ## [0.84.0](v0.83.2...v0.84.0) (2026-11-07) ### Features * **k8s:** alert when Crawl4AI fetches fail ([#4037](#4037)) ([49f0f14](49f0f14)) * **k8s:** run SearXNG in the devops namespace ([#4033](#4033)) ([9d223f4](9d223f4)), closes [#3924](#3924) * **research:** add GitHub advisories and KEV to research advisories ([#4032](#4032)) ([61e6936](61e6936)), closes [#3987](#3987) * **research:** add research sweep that files intake candidates ([#4055](#4055)) ([11ddee9](11ddee9)) * **roadmap:** add a test-first manifest kind to the stage plan ([#3981](#3981)) ([8476163](8476163)) * **roadmap:** check a plan number against its constant ([#4073](#4073)) ([324a3a5](324a3a5)) * **roadmap:** name every caller of a changed function ([#4047](#4047)) ([24e9138](24e9138)) * **roadmap:** the stage probe routes prompt changes to prompt rule tests ([#3989](#3989)) ([4aebde2](4aebde2)) ### Code Refactoring * **cli:** source modules keep no accommodation for tests ([#4053](#4053)) ([33b57a9](33b57a9)) * **roadmap:** remove the dead plan and review step classes ([#4074](#4074)) ([526834f](526834f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: dan-petty-release[bot] <346998822+dan-petty-release[bot]@users.noreply.github.com>
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.
A plan can put a number beside a constant name that is not the value in the staged tree. The plan of the pull request for #3200 gave a summary bound of 40 in a spec scenario, while
SUMMARY_MAX_CHARSis 60 insrc/devops_cli/roadmap/pull_form.pyandSTAGE_SUMMARY_MAX_CHARSis 47. The plan check accepted it. #3308 makes that number a claim that the check compares with the staged tree, and the plan stage prompt asks the model to cite the staged value first. A sentence that holds more than one number is ambiguous: it can show an example, a note or a second bound. The check skips it, so a valid plan is not refused. A constant name that the tree does not define is skipped too; the prompt rule asks the model to cite the existing constant instead of giving its bound a new name.Closes #3308
Change:
openspec/changes/archive/2026-11-07-3308-the-plan-check-compares-a-number/