feat(framework): remove the architect (#545)#549
Merged
Conversation
A build no longer runs a turn to pick the app's stack, and no longer tells the agent what to build on. The agent reads the workspace and decides for itself. buildPrompt / extendPrompt / scaffoldPrompt take just the intent. Gone with it, because the architect was their only source: the plan-approval gate and re-architect, the decisions ledger in a run and the DECISIONS.md it wrote, and the dashboard's Stack & rationale + Decisions ledger panels. The agent-authored await gates a build turn raises are untouched. The bootstrap flow is now scope -> build -> loop -> deploy.
parseArchitectPlan's JSON helpers (coerceStrings, FENCE, lastJsonObject) had no callers left; noUnusedLocals is off, so tsc stayed quiet. Plus the doc comments still describing scope -> architect -> build.
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.
Closes #545. Second of two, after #548 (meta-select), which is merged.
A build no longer picks the stack. There is no architect turn, and nothing in the build prompt tells the agent what to build on: it reads the workspace and decides for itself, the way it would outside The Framework.
Doing stack guidance well is deep work. What we had was not designed, it accumulated, so it goes rather than half-ships.
What goes, and why it had to go together
The architect was not a detachable step. The build prompt interpolated its answer (
Stack: ${plan.stack}plus its narration), and it was the only thing that ever fed the decisions ledger. So these go with it:await-choicesgate and still asserts the pick is attributed to the user).DECISIONS.md. Nothing else ever wrote to it.MEMORY_FILESalso drops itsDECISIONS.mdentry, which claimed the file was read-only because The Framework writes it - no longer true.agentArchitect,STACK_TRADEOFFS(the Vike-vs-Next tradeoff block),BootstrapSteps.architect,BootstrapOptions.ledger, thearchitectbootstrap event, theArchitect*types, and theplanfield on the build / loop / deploy contexts and onBootstrapResult. The flow is now scope -> build -> loop -> deploy.driverArchitect,reArchitect,architectPrompt,parseArchitectPlan,architectPlan,decisionLedger,RunFrameworkResult.ledger, andbench:architect.This does NOT finish the job on its own
The stack opinion outlives the architect.
personas/library.tsstill hard-instructs the data modeler to "Default to Prisma", and the Vike preset personas are stack-opinionated. A build still gets pushed toward a stack until the personas go in #547. The two need to land together to actually deliver "a build stops being opinionated about the stack" - flagging it so this isn't read as complete on its own.Open question, not blocking
@gemstack/ai-autopilot'sdecisions/module now has no feeder and no consumer. I left it exported rather than widen this PR into another published package's public API. Delete it too, or keep it as a seam? Worth knowing either way:loadLedgerandrecord_decisionwere already exported-but-never-wired, so theDECISIONS.mdround-trip the docs promised has never actually worked.Changesets
Deleted 3 whose entire subject was the architect (
architect-await-gate,architect-drop-vike-nudge,gate-refire-after-realternative), and edited 5 that describe surviving features in architect terms. None had shipped (#285 is still open).Verify
framework --fake --no-dashboardruns the whole flow end to end with no architect phase:scope -> build -> checklist pass 1 -> improve -> checklist pass 2 -> deploy, production-grade in 2 passes, exit 0pnpm start): streams scope -> build -> loop -> deploy, writes its files, lands the deploy URLTwo things that were load-bearing rather than cosmetic, in case they matter on review: the fake script's architect turn had to be removed or every scripted run desynced by one turn (that was the real cause of a serve-gate failure), and
pnpm testcompiles todist-test/where tsc leaves stale.jsfor deleted.ts-rm -rf dist-testbefore trusting a run.