Repository navigation
Make the blueprint suite assert what the blueprints actually are - #7
Merged
Merged
Conversation
CI has been red on main for five commits. Three blueprints failed
`scaffold → canon → validate` with 43 unfilled `<REPLACE: …>` placeholders in
`reference/requirements.md`, and the suite read that as three broken blueprints.
It was one broken assertion and one genuinely missing spec.
The assertion said every blueprint scaffolds into an app that passes `validate`.
That is true of react-node, which ships a finished to-do starter — a View, a
model and operations. It is not true, and is not meant to be true, of two others:
blueprint-base framework files only, no runtime code at all: no
entities, no operations, a pipeline of placeholder
echoes. The author picks the stack.
blueprint-pocketbase-react adapter hooks only. Its `tasks` collection is
created by hand in PocketBase and `install` prints
"download the pocketbase binary".
For those two, `validate` refusing a fresh scaffold is `validate` WORKING. An
unauthored spec must not pass, or the check means nothing on the apps that are
finished. The only way to make the old assertion true would have been to invent
a spec for an app that does not exist — three fictional documents to turn a
truthful red into a decorative green. So the check is inverted for them instead,
and each carries the reason it is incomplete, in a string that should read
wrongly the day someone finishes the blueprint and forgets this line.
blueprint-python-fastapi was the real gap. It ships a complete, runnable agent
app — model, operations, adapter, working pipeline — and simply had no spec
written. It has one now, describing what it actually is rather than what the
other starter is: an app whose interface is the agent, with no browser View.
Q1–Q9 of the Quality Standard are recorded n/a with that reason rather than
quietly skipped, so an author who later adds a View knows those entries are
theirs to fill in. Its gate now passes end to end, framework files included.
Conformance: 57/60 with three failures, to 60/60.
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.
CI has been red on
mainfor five commits. This turns it green.Three blueprints failed
scaffold → canon → validatewith 43 unfilled<REPLACE: …>placeholders inreference/requirements.md. The suite read that as three broken blueprints. It was one broken assertion and one genuinely missing spec.The assertion was wrong for two of them
It said every blueprint scaffolds into an app that passes
validate. That is true ofreact-node, which ships a finished to-do starter — a View, a model, operations. It is not true, and is not meant to be true, of two others:blueprint-baseblueprint-pocketbase-reacttaskscollection is created by hand in PocketBase, andinstallprints "download the pocketbase binary"For those two,
validaterefusing a fresh scaffold isvalidateworking. An unauthored spec must not pass, or the check means nothing on the apps that are finished.The only way to satisfy the old assertion would have been to invent a spec for an app that does not exist — three fictional documents, to turn a truthful red into a decorative green. The check is inverted for them instead, and each carries the reason it is incomplete:
The reason is a string rather than a boolean on purpose: it should read wrongly the day someone finishes the blueprint and forgets this line.
One blueprint had a real gap
blueprint-python-fastapiships a complete, runnable agent app — model, operations, adapter, working pipeline. It simply had no spec written.It has one now, describing what it actually is rather than copying the other starter: an app whose interface is the agent, with no browser View. Q1–Q9 of the Quality Standard concern a View it does not ship, so they are recorded
n/awith that reason rather than quietly skipped — an author who later adds a View knows those entries are theirs to fill in.Its gate now passes end to end:
Result
pnpm -r buildandpnpm -r testboth clean.Note
This is independent of #6 (the delete guard). #6 shows red for exactly these three failures and nothing else — once this merges, #6 goes green with no change to it.
I deliberately did not write specs for
baseandpocketbase-react. Deciding what those two blueprints are meant to become is a call for whoever owns them, not something to settle by writing plausible-sounding requirements for apps that do not exist yet.