Skip to content

Chain-wide question budget keyed to build scale (v1.63.1.0)#30

Merged
time-attack merged 7 commits into
mainfrom
time-attack/concise-plan
Jul 23, 2026
Merged

Chain-wide question budget keyed to build scale (v1.63.1.0)#30
time-attack merged 7 commits into
mainfrom
time-attack/concise-plan

Conversation

@time-attack

@time-attack time-attack commented Jul 23, 2026

Copy link
Copy Markdown
Owner

What

The Scale: header from garrytan#886 capped question rounds per specialist, but rounds accumulated across chained invocations, so a hackathon-scale /plan chain still collected 15+ questions. The scale now fixes one question budget for the whole chain: 5 at session, 8 at hobby, 12 at project, uncapped at product/venture.

How

  • Overlay GENERAL: Reduce Token Overhead garrytan/gstack#886 body (scripts/gstack2/bug-fix-overlays.ts): chain-wide budget counted in individual questions; handoffs carry questions-spent; exhausted budget means infer-and-state the default, not ask; approval STOP gates excluded; spend on hardest-to-reverse decisions first.
  • /plan dispatcher Build scale section (generate-skill-tree.ts): prints the budget with the scale, handoffs carry it.
  • Executable regression: chain_question_budget + budget_spans_chain fields added to the GENERAL: Reduce Token Overhead garrytan/gstack#886 fixture and evaluator.

No pinned parity-count changes (body edit rides existing includes() checks). Regen committed separately.

Testing

  • bun run test:gstack2 — all 26 files pass
  • bun test — passes (exit 0)
  • bun run eval:select — 0/178 E2E, 0/28 LLM-judge tests affected by this diff

🤖 Generated with Claude Code


Summary by cubic

Sets a chain-wide question budget for /plan chains keyed to build scale to stop question creep across specialists (5/8/12, uncapped at product/venture). Handoffs carry spend, approvals don’t count, and exhausted budget means infer-and-state; release 1.64.1.0.

  • New Features

    • Enforce one budget across planning and reviews; count questions (not rounds); spend on hard-to-reverse choices first; approvals excluded; when exhausted, state the inferred default and continue.
    • /plan prints the budget with the scale; handoffs carry scale, time box, and questions spent; added chain_question_budget/budget_spans_chain to the pr-886 regression and evaluator; docs updated.
  • Dependencies

    • Synced lockfile to package.json after design/PDF runtime removal, dropping html-to-docx and related @oozcitak/* to fix frozen-lockfile CI.

Written for commit 1e21b5a. Summary will update on new commits.

Review in cubic

Sinabina and others added 3 commits July 23, 2026 15:43
…an#886)

Rounds were capped per specialist but questions still accumulated across
chained invocations (15+ on a hackathon plan). The scale now fixes a total
question budget for the whole chain: 5 at session, 8 at hobby, 12 at
project, uncapped at product/venture. Handoffs carry questions spent;
exhausted budget means infer-and-state, not ask. Approval STOP gates are
outside the budget.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 23, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 issues found across 20 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="scripts/gstack2/bug-fix-overlays.ts">

<violation number="1" location="scripts/gstack2/bug-fix-overlays.ts:615">
P2: The new regression does not exercise the chain-wide behavior it claims to protect: `budget_spans_chain` is always returned as `true`, with no prior-spend input or remaining-budget calculation. A handoff case should model questions already spent and verify deduction/exhaustion so a future counter reset fails the regression.</violation>
</file>

<file name="CHANGELOG.md">

<violation number="1" location="CHANGELOG.md:13">
P2: Startup plans with a one-sitting or day-or-two constraint are capped at session/hobby, so “Startups still get the full interrogation” and “planning a startup, nothing changed” overstate the behavior. Describe uncapped questioning as product/venture-scale instead.</violation>

<violation number="2" location="CHANGELOG.md:21">
P3: The release table omits the required Δ column and mixes rounds with questions in its first comparison. Using one unit and adding explicit deltas keeps the before/after numbers comparable and follows the changelog contract.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Fix all with cubic | Re-trigger cubic

questions_batched: rank <= 2,
question_rounds_max: small ? rank + 1 : null,
chain_question_budget: [5, 8, 12, null, null][rank],
budget_spans_chain: true,

@cubic-dev-ai cubic-dev-ai Bot Jul 23, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The new regression does not exercise the chain-wide behavior it claims to protect: budget_spans_chain is always returned as true, with no prior-spend input or remaining-budget calculation. A handoff case should model questions already spent and verify deduction/exhaustion so a future counter reset fails the regression.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At scripts/gstack2/bug-fix-overlays.ts, line 615:

<comment>The new regression does not exercise the chain-wide behavior it claims to protect: `budget_spans_chain` is always returned as `true`, with no prior-spend input or remaining-budget calculation. A handoff case should model questions already spent and verify deduction/exhaustion so a future counter reset fails the regression.</comment>

<file context>
@@ -609,6 +611,8 @@ export function evaluateBugFixRegression(pr: number, rawInput: unknown): Record<
         questions_batched: rank <= 2,
         question_rounds_max: small ? rank + 1 : null,
+        chain_question_budget: [5, 8, 12, null, null][rank],
+        budget_spans_chain: true,
         web_search: small ? 'on-request' : 'privacy-gated-offer',
         outside_voices: small ? 'on-request' : 'offer',
</file context>
Fix with cubic

Comment thread CHANGELOG.md
@@ -7,6 +7,41 @@
> completion state and remaining P0 gates. No version bump or release claim is

@cubic-dev-ai cubic-dev-ai Bot Jul 23, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Startup plans with a one-sitting or day-or-two constraint are capped at session/hobby, so “Startups still get the full interrogation” and “planning a startup, nothing changed” overstate the behavior. Describe uncapped questioning as product/venture-scale instead.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At CHANGELOG.md, line 13:

<comment>Startup plans with a one-sitting or day-or-two constraint are capped at session/hobby, so “Startups still get the full interrogation” and “planning a startup, nothing changed” overstate the behavior. Describe uncapped questioning as product/venture-scale instead.</comment>

<file context>
@@ -7,6 +7,41 @@
+## [1.63.1.0] - 2026-07-23
+
+## **A hackathon plan now gets five questions, total.**
+## **Startups still get the full interrogation.**
+
+/plan already classified every request on a build scale (session, hobby, project, product, venture) and sized each specialist's machinery to it. What it did not do was count. Each specialist obeyed its own round cap, then handed off to the next one, and a one-sitting build could still collect 15+ questions across the full chain of planning and reviews. The scale now fixes one question budget for the entire chain: 5 at session, 8 at hobby, 12 at project, uncapped at product and venture. Every handoff carries the questions already spent, so a chained review deducts from what is left instead of starting fresh. When the budget runs out, the specialist states its inferred default in one line and keeps moving. Plan approvals and mutation authorizations never count against it.
</file context>
Fix with cubic

Comment thread CHANGELOG.md
Comment on lines +21 to +26
| Metric | Before | After |
|---|---|---|
| Question ceiling across a full session-scale chain | none (18 rounds observed) | 5 questions |
| Ceiling at hobby / project scale | none | 8 / 12 |
| Ceiling at product / venture scale | none | none, on purpose |
| Budget resets at each chained review | yes | never |

@cubic-dev-ai cubic-dev-ai Bot Jul 23, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The release table omits the required Δ column and mixes rounds with questions in its first comparison. Using one unit and adding explicit deltas keeps the before/after numbers comparable and follows the changelog contract.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At CHANGELOG.md, line 21:

<comment>The release table omits the required Δ column and mixes rounds with questions in its first comparison. Using one unit and adding explicit deltas keeps the before/after numbers comparable and follows the changelog contract.</comment>

<file context>
@@ -7,6 +7,41 @@
+
+Source: the overlay contract in `scripts/gstack2/bug-fix-overlays.ts` (issue #886), verified by `bun run test:gstack2`, against an observed hackathon planning chain from 2026-07-23.
+
+| Metric | Before | After |
+|---|---|---|
+| Question ceiling across a full session-scale chain | none (18 rounds observed) | 5 questions |
</file context>
Suggested change
| Metric | Before | After |
|---|---|---|
| Question ceiling across a full session-scale chain | none (18 rounds observed) | 5 questions |
| Ceiling at hobby / project scale | none | 8 / 12 |
| Ceiling at product / venture scale | none | none, on purpose |
| Budget resets at each chained review | yes | never |
| Metric | Before | After | Δ |
|---|---|---|---|
| Chain-wide question budget at session scale | none (15+ questions observed) | 5 questions | New 5-question ceiling |
| Chain-wide question budget at hobby / project scale | none | 8 / 12 questions | New ceilings |
| Chain-wide question budget at product / venture scale | none | none, on purpose | Unchanged |
| Budget resets at each chained review | yes | never | Resets eliminated |
Fix with cubic

Sinabina and others added 4 commits July 23, 2026 16:17
Main's package.json edit (9053324) landed without a lockfile regen, so
every frozen-lockfile CI job fails on main and any PR including it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@time-attack
time-attack merged commit 6ab2b9a into main Jul 23, 2026
6 of 16 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