FE-843: Expand cook toolchain profiles, selected at plan time#198
FE-843: Expand cook toolchain profiles, selected at plan time#198kostandinang wants to merge 5 commits into
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
PR SummaryMedium Risk Overview Profiles in Strict resolution: unknown profile ids now throw Tests cover registry invariants, selection precedence, CLI parsing, and architect profile behavior. Reviewed by Cursor Bugbot for commit 8557ba7. Bugbot is set up for automated code reviews on this repo. Configure here. |
|
Follow-on work tracked in FE-864 — Orchestrator enhancements: brownfield feature delivery from spec. This branch's deferred items (structured spec-profile field, outstanding |
c5efb9a to
8837e9b
Compare
a6b27a5 to
81e0833
Compare
8837e9b to
b84fbda
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit b84fbda. Configure here.
b84fbda to
e4e3afe
Compare
…ard queue Co-authored-by: Claude <noreply@anthropic.com>
…t/deno profiles Profiles are now data literals (path templates + argv template + conventions prose) compiled into the unchanged Toolchain interface — adding a runtime is one data entry. Registry invariants pinned enumerably across all profiles. Co-authored-by: Claude <noreply@anthropic.com>
…d into plan.yaml brunch plan gains --profile=<id> (validated via parseProfileId); the emitter resolves the chain once and stamps the id on both the authored and fallback plans, so cook always reads the profile the emitter used. resolveToolchain now throws UnknownProfileError on a typo'd id instead of silently running bun; absent stays lenient for hand-authored fixtures. Co-authored-by: Claude <noreply@anthropic.com>
architectPlan's schema gains an optional profile enum (registry ids, null when the spec is silent); the emitter chain becomes flag ≫ spec profile ≫ architect-classified ≫ bun. A hallucinated profile fails the schema parse and rides the existing deterministic fallback. D160-K intact — classification reads projected spec prose only. Queue exhausted: CARDS.md retired; PLAN frontier marked branch-complete. Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
e4e3afe to
8557ba7
Compare


Stack Context
Stacks on FE-841 (#194). Expands the FE-829 toolchain contract so
brunch cookcan build on more technologies than bun, and so the profile selection path actually works.What?
project-profile.ts) -- profiles are data literals (path templates + argv template + conventions prose) compiled into the unchangedToolchaininterface. Addsnode-vitest,node-test,node-jest,denoalongsidebun/brunch; registry invariants pinned enumerably over every entry. Adding a runtime = one data entry.brunch plan --profile=<id>(validated); the emitter resolves the chain once (--profileflag >> specprofile>> architect-classified >>bun) and stamps the resolved id intoplan.yamlon both the authored and fallback paths, so cook always reads the profile the emitter used (I130-K).resolveToolchainnow throwsUnknownProfileErroron a typo'd id instead of silently running bun; absent stays lenient for hand-authored fixtures.architectPlanschema (nullwhen the spec is silent); a hallucinated id fails schema parse and rides the existing deterministic fallback. No host introspection (D160-K intact).Why?
Before this branch both implemented profiles were TypeScript and the selection path was dead -- nothing populated
snapshot.profile, so every cook run silently resolved to bun, and a typo'd profile id silently defaulted rather than erroring. Adding profiles without live selection changes nothing at runtime; live selection without strictness hides real misconfiguration.Deliberately not included (recorded in PLAN as follow-ons): a harness install verb (the cook agent scaffolds + installs per A98), fail/infra test-outcome split, brownfield drift-check at cook open,
brunch detect. Outer-loop validation outstanding: a greenfield cook smoke with--profile=node-vitestas the conventions-prose oracle.