Skip to content

feat(foundry): Self-Upgrade files its own proposals - #21

Merged
dotcomjack merged 12 commits into
mainfrom
feat/foundry-synthesis
Oct 31, 2026
Merged

dotcomjack merged 12 commits into
mainfrom
feat/foundry-synthesis

Conversation

@dotcomjack

Copy link
Copy Markdown
Owner

feat(foundry): Self-Upgrade files its own proposals

Nothing in Grux ever filed a Self-Upgrade proposal: the sense pass harvested
signals that went nowhere, and every card came from one hand-written June
book. ProposalSynthesizer is the missing stage.

  • One pass is one Claude Code run on the user's plan over a git archive copy
    of the source checkout in a temp folder: Read, Grep and Glob only, nothing
    under any home folder, other volumes, /Library or /etc, no MCP servers,
    none of the user's settings.
  • Every draft is checked before it is filed: lane, domain, a one-line title,
    a bounded build brief with no fetch, shell pipe, push or home reach, real
    paths in the copy, no duplicate (a Reject or failed build blocks a title
    for 90 days), at most 8 a pass and 16 waiting. Touching the build rail
    pins it protected. The brief is shown on the card before Build.
  • Proposals unbuilt for 30 days retire in the same pass.
  • Runs on scheduled and manual passes (never opportunistic), stands down at a
    session limit, and on ~/.grux/fire-foundry-refresh.
  • Stuck cards are cleared at launch with self-upgrade off too.

Stacked on #20 (the subscription route fix); merge #20 first.

- Subscription runs (agents, swarms, Foundry builds, Command V2) read their
  default model from one place, SubscriptionModels: Opus 5.5 for agent work,
  Sonnet 5.5 for routine work. A sweep test fails on a Claude model literal
  in any file that starts a run.
- Design Studio's subscription route said "$0 metered", then reviewed every
  design on the API key. On that route the review now runs on the plan, as
  claude --print with no tools, no MCP servers and none of the user's own
  settings, because the HTML under review is untrusted. At most two
  reviewers run at once, and Stop ends them and refuses the rest.
- Foundry proposals stuck in building or verifying with nothing tracking
  them are rejected at launch with a visible reason.
- Every spawned claude strips billing variables from the one tested list.
- --studio-smoke --route=subscription checks the plan route end to end.
Nothing in Grux ever filed a Self-Upgrade proposal: the sense pass harvested
signals that went nowhere, and every card came from one hand-written June
book. ProposalSynthesizer is the missing stage.

- One pass is one Claude Code run on the user's plan over a git archive copy
  of the source checkout in a temp folder: Read, Grep and Glob only, nothing
  under any home folder, other volumes, /Library or /etc, no MCP servers,
  none of the user's settings.
- Every draft is checked before it is filed: lane, domain, a one-line title,
  a bounded build brief with no fetch, shell pipe, push or home reach, real
  paths in the copy, no duplicate (a Reject or failed build blocks a title
  for 90 days), at most 8 a pass and 16 waiting. Touching the build rail
  pins it protected. The brief is shown on the card before Build.
- Proposals unbuilt for 30 days retire in the same pass.
- Runs on scheduled and manual passes (never opportunistic), stands down at a
  session limit, and on ~/.grux/fire-foundry-refresh.
- Stuck cards are cleared at launch with self-upgrade off too.
Drops are counted and named by rule; paths are read as models write them;
briefs carry Grux's own rules line; the prompt no longer describes the
build and test gate (RDWorker owns it).
@dotcomjack
dotcomjack marked this pull request as ready for review October 31, 2026 01:08
@dotcomjack
dotcomjack merged commit 0bb0ec5 into main Oct 31, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant