Skip to content

fix(ce-ideate): scale the run with the ask, and slim the always-loaded body - #1357

Merged
tmchow merged 33 commits into
mainfrom
tmchow/skill-improvements-followup
Aug 12, 2026
Merged

fix(ce-ideate): scale the run with the ask, and slim the always-loaded body#1357
tmchow merged 33 commits into
mainfrom
tmchow/skill-improvements-followup

Conversation

@tmchow

@tmchow tmchow commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

ce-ideate now scales with what you asked for. Previously only go deep changed a run — it raised every agent to the ceiling tier, doubled verification reads, and added a critic. A tactical ask (quick wins, polish, cleanup) lowered the ambition floor and nothing else, so the cheapest-to-be-wrong phase in the chain stayed the most expensive to run. Tactical now roughly halves generated output without cutting a lens or thinning the basis check.

The always-loaded body is 9.5% smaller — 8,354 → 7,561 words, with 1,279 words moved into two references that load only when their trigger fires.

Rewriting the scaling rules is what exposed the defects below: 30 of the 33 commits are correctness fixes, and the diff is net-additive. Read this as a fix PR with a size benefit, not a cleanup.

AGENTS.md also gains one rule, diagnosed from this PR's own review history: when a finding targets text an earlier round added, delete that addition rather than qualify it — and re-verify the shortened rule against every path it served.

What was broken

The tactical waiver was cancelled one phase later. Generators waive the meeting-test under tactical scope, but the Phase 3 verifier is dispatched with "none of the generation history", told to check the meeting-test with no waiver, and its judgment "supersedes the generators' self-attestation" — so every candidate on a tactical run should come back weak.

go deep silently lost half its verification budget. The tactical read cut keyed on a run carrying quick wins rather than on tactical scope surviving collision resolution, so go deep — give me 100 quick wins dropped from 10 reads to 5 even though go deep suppresses tactical outright.

A survivor limit had no consumer. A total too small to spread across the frames resolves to a survivor limit, but Phase 3 targeted 5-7 unconditionally — so 3 ideas about auth could return more than asked.

Two of five cost examples contradicted their own enumeration (printed "~13 agents", listed 14). The formula is gone rather than patched: the agent derives the line from the dispatch decisions it just made.

Phase 1 cited the wrong phase for issue-tracker detection, and surprise-me was specified in eight places across ~350 lines, with silent partial application as the failure mode.

Codex, reviewing the pre-change prose blind during the eval, stated the scaling defect back unprompted: "'quick wins' triggered only the tactical-scope relaxation — it did not reduce the default fleet or candidate volume."

Two decisions worth pushing back on

Cost comes out of volume, never out of lenses or verification. Packing six frames into two agents was tried on this branch and reverted: per-frame idea targets persist under packing, so two packed agents still generate the same 36-48 candidates — while the verification-read budget is per agent, so a three-frame agent checks each idea's basis about a third as thoroughly. Tactical keeps the default 5-agent/6-frame fleet and lowers what each frame produces.

Both extractions keep their dispatch skeleton inline. Issue intelligence and user research moved to references, but both carry an ordered dispatch with an await — the shape that measured 0/5 in the ce-debug Phase 4 eval, where agents read the reference and stopped. The references own only the payloads.

Validation

Mechanical: bun run test (2,968 pass, 0 fail), release:validate, plugin:validate --strict. Two new contract files carry 47 tests; when first written, 15 of the dispatch-contract assertions were confirmed to fail against the pre-change files. Three defects here were ordering problems — a load instruction placed after the step it governs — and every one passed a presence-style assertion, so those are now index assertions.

Behavioral: paired old-vs-new blind injection, 48 runs across Claude and Codex, per docs/solutions/skill-design/paired-old-vs-new-injection-skill-evals.md. Tactical scaling with frame coverage held went 0/6 → 6/6 on both hosts. Issue-intelligence sequencing, surprise-me consolidation, and the verifier waiver each held at 6/6 with no regression — the waiver scenario is non-discriminating, since both models reasoned past the old contradiction unaided.

Read honestly: only the tactical-scaling row is a demonstrated behavior change. The rest buys determinism and weaker-model insurance.

Residual

  • universal-ideation.md is a parallel implementation of the same generation contract for non-software topics, with nothing enforcing parity — five findings here traced to it, each a different rule that never crossed. Predates this PR; the new both-paths assertions cover only the rules that broke.
  • The survivor rubric ranks direct: > external: > reasoned:, while the two ceiling-tier frames are the ones told to produce reasoned: — the skill may be discounting the output it spends the most on.
  • Survivor scoring weights axis spread but nothing about ambition spread.

The last two predate this PR and need an eval that grades idea quality rather than dispatch shape.

Security Disclosure

No security-relevant changes. No shell/exec, path or input handling, converter/writer output, credential, permission, or dependency changes. The Phase 1 scratch-directory fence is unchanged; the reference-file and AGENTS.md additions are prose only.

Agent Disclosure

  • Model: Claude Code · claude-opus-5[1m]

… body

ce-ideate carried 8,354 words of always-loaded prose, the largest of the
ideation chain. Slimming it surfaced five defects, each reproduced before
it was fixed:

- Phase 1 cited Phase 0.3 for issue-tracker detection; the detector lives
  in 0.2, and divergent-ideation.md already said so.
- Two of five cost examples contradicted their own enumeration (~13 vs 14,
  ~14 vs 15). The formula that produced them is gone rather than patched.
- Scaling ran one way only. `go deep` raised every agent to the ceiling
  tier; tactical signals (`quick wins`, `polish`) lowered the ambition
  floor but left the fleet at ~14 agents.
- The tactical waiver was defeated one layer down: the Phase 3 verifier
  runs on a fresh context with none of the generation history, was told to
  enforce the meeting-test unconditionally, and its judgment supersedes
  the generators'.
- Surprise-me was specified in eight places across ~350 lines.

Tactical scope now cuts agents, never lenses: 2 ideation agents covering
all six frames, axes and scouts capped together, waiver passed to the
verifier. Frame coverage is a floor, so a false-positive trigger costs
breadth nothing.

Issue intelligence and user-research handling move to references, but the
ordered dispatch skeletons stay inline -- the shape that measured 0/5 in
the ce-debug Phase 4 eval.

Always-loaded prose: 8,354 -> 6,941 words (-17% net, ~25% gross of the
surprise-me table and tactical block added back).

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
@cursor

cursor Bot commented Aug 12, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Touches core ce-ideate dispatch, scaling, and mode-collision rules that govern multi-agent ideation behavior; regressions would mis-scale runs or drop lenses, though changes are prose/protocol with new contract tests.

Overview
Tactical asks now cut real costquick wins, polish, and cleanup previously only waived the ambition floor. They now lower per-frame volume (3–4 ideas), verification reads (2–3), and axis/scout caps, while keeping the full 5-agent / 6-frame fleet. Packing frames into fewer agents was tried and rejected because the verification budget is per agent.

Mode collisions and waivers are made deterministic. go deep suppresses tactical outright; issue-tracker owns frames/agents while tactical still contributes its dials. The meeting-test waiver is passed explicitly into the Phase 3 verifier (which has no generation history). The same dials and volume-as-total rules now reach the universal/non-software path.

Always-loaded body is slimmed (~9% fewer words). Issue intelligence and user-research artifact handling move to on-demand references, with ordered dispatch skeletons kept inline. Surprise-me deltas consolidate into one Phase 0.2 table with local hooks. Cost notices stop using hand-maintained agent totals.

AGENTS.md gains step 5: stop the accretion loop — prefer deleting earlier review additions over qualifying them when a section has absorbed repeated rounds of prose.

Adds two contract test files (~47 tests) pinning skeletons, dials, collision pairs, and software/universal parity.

Reviewed by Cursor Bugbot for commit b460ed1. Bugbot is set up for automated code reviews on this repo. Configure here.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 16729b4d64

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md Outdated
Comment thread skills/ce-ideate/SKILL.md Outdated
Comment thread skills/ce-ideate/references/divergent-ideation.md Outdated
…t variants

Two review findings, both real:

The tactical caps stranded an axis. Axes capped at 3 and scouts at 2, while
the stated rationale for coupling them is that scouts dispatch one per axis
and no axis should reach generation without an evidence dossier. Every
tactical run left exactly one axis with only the Phase 1 orientation gist.
The caps are now equal at 3 — three is the decomposition floor, so this is
the smallest coupled pair rather than a further cut on either side.

Colliding fleet variants had no defined winner. Tactical selects a 2-agent
six-frame fleet and issue-tracker mode selects a 4-agent theme-frame fleet,
so "quick wins from open issues" was undefined, and the
insufficient-issue-signal fallback hardcoded 5 agents over a scaled run.
Frames and agent count are now decided separately: whichever variant owns
the surface picks the frames, whichever owns the budget picks the count.
The fallback inherits the run's own scaling.

The cap test now asserts the two numbers are equal rather than pinning
either value.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e186d7e7fc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md Outdated
Comment thread skills/ce-ideate/references/divergent-ideation.md Outdated
… detection

Round-2 review found two consequences of the collision rules added in
e186d7e:

The `go deep` waiver leak. `go deep` beats a tactical signal, so a prompt
can carry `quick wins` while tactical scope is suppressed — but all seven
meeting-test waivers keyed on "Phase 0.5 detected tactical focus signals."
A `go deep quick wins` run therefore went all-ceiling with a second critic
and still admitted below-floor candidates. Phase 0.5 now resolves an active
state and says so explicitly; `go deep` suppresses tactical scope outright
rather than only outranking its fleet, and every waiver site keys on
"tactical scope is active."

The six-frame invariant overclaimed. "All six frames are covered in every
variant" sat directly above the issue-tracker variant, which deliberately
replaces the frame set with at most four theme frames. Two dispatch
directives in contradiction. The floor is now scoped to variants that use
the default frame set, with issue-tracker mode exempted by name.

Tests assert the waiver keys on the active state and that no reference
reintroduces detection-keyed wording.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 06a1fb1843

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md Outdated
Comment thread skills/ce-ideate/SKILL.md
…elsewhere paths

Third review round found two more sites the tactical/routing work had not
reached. Both are the same class as the previous two rounds -- a
cross-cutting mode added without sweeping every path that must honor it --
so this fixes the class rather than the two instances.

The universal (elsewhere-non-software) path never scaled. Phase 0.3 routes
it to references/universal-ideation.md in place of the Phase 2 frame
dispatch, so it never loads divergent-ideation.md and never saw the fleet
packing, the axis cap, or the verifier waiver. "quick wins for this launch
strategy" silently got the full treatment. That reference now carries all
three, with frame coverage still a floor.

The research routing test gated only the repo scan. Elsewhere-mode
synthesis reads "any rich-prompt material", so a survey or analytics export
could reach synthesis AND a distiller, duplicating the file into Topic
context. The test now runs before both dispatch blocks, and the synthesis
dispatch excludes routed evidence at its own site.

Swept the remaining tactical mentions for the same gap; the issue-tracker
fallback, the caps, and the waivers were already covered.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 28476615c9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/divergent-ideation.md Outdated
Comment thread skills/ce-ideate/SKILL.md Outdated
Comment thread skills/ce-ideate/SKILL.md
…ler count

Fourth review round, both small:

tactical + surprise-me had no row in the collision table. It is reachable
whenever a vague tactical prompt ("quick wins") sends the user to the 0.2
subject gate and they pick "Surprise me" -- both variants then fire with no
winner. Surprise-me now owns the fleet and tier, since subject discovery is
that mode's entire value and cannot run on two native-tier agents; tactical
keeps only its waived ambition floor, because the user did still ask for
small wins. The axis and scout caps are moot there, as surprise-me skips
decomposition. The table now covers every pair that can fire together, and
a test enumerates them.

The Phase 0.6 cost notice promised one distiller per research artifact,
but small artifacts fold into the grounding summary with no sub-agent, and
the size rule lives in a reference not loaded until Phase 1. Qualified in
place rather than pulling the size rule forward.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2c8b45050c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md
Comment thread skills/ce-ideate/references/universal-ideation.md Outdated
…e universal fleet to depth

Fifth review round, both defects introduced by this PR's own earlier commits:

The issue-intelligence load fired after the steps it governs. The four-step
skeleton is executable ("dispatch the analyst in SCAN mode"), and the
instruction to read the reference -- plus the prohibition against composing
a dispatch from the summary -- sat below it. A sequential agent could launch
the scan from the deliberately incomplete summary before reaching the line
telling it not to. The load now precedes step a, and a test asserts that
ordering by index rather than by presence.

The universal tactical block promised a fleet the selected depth would not
dispatch. Only Full depth runs frames as parallel sub-agents in that mode,
yet the block applied the 2-agent packing to Full while steering tactical
runs toward Quick/Standard -- so the common path could announce two ideation
agents and dispatch none. Depth is now explicitly the fleet decision there:
Full packs six frames into 2 agents, Quick/Standard dispatch zero and cover
all six inline, and Phase 0.6 says the count for this mode is not settled
until that depth is chosen.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0beee5d069

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md
Comment thread skills/ce-ideate/references/universal-ideation.md Outdated
Comment thread skills/ce-ideate/references/universal-ideation.md Outdated
tmchow added 2 commits August 11, 2026 17:48
Sixth review round. The research-artifact reference load sat in its own
section below the Phase 1 dispatch blocks, so a sequential agent could run
the whole grounding batch before reading the spec that requires distillers
to run *in* that batch -- serializing the most expensive read in the phase
behind codebase, learnings, and web grounding.

The load now sits beside the pre-dispatch routing test, conditional on that
test actually routing something to evidence. A test asserts its index
precedes the parallel-batch instruction.

Same class as the issue-intelligence load fixed in 0beee5d: an extraction
moved content to a reference, and the load instruction landed after the
step that needed it rather than before.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
Seventh review round. Fixing the depth/fleet contradiction in the previous
commit moved the tactical depth preference into "How to generate", but
"How to start" is where this mode actually chooses depth and it comes
first -- so a sequential pass could lock Full before ever reading that
tactical prefers Quick or Standard. Phase 0.5's flat "2 ideation agents"
reinforced it, since only Full can satisfy that count here.

The cue now sits in "How to start" beside the depth options, stating that
depth is the fleet decision in this mode and that Phase 0.5's count is the
software-path packing. Phase 0.5 notes that elsewhere-non-software resolves
its count with depth, with the six-frame floor holding either way.

Same ordering class as the previous two rounds: a rule placed after the
step it governs. Tests now assert the cue's index falls between "How to
start" and "How to generate".

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 100af7db5e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md Outdated
…lving them

Eighth review round. The Phase 0.6 notice told the agent to subtract the web
researcher on a V15 cache reuse, but the cache is not checked until Phase 1
after <scratch-dir> exists -- so the notice cannot know whether that dispatch
will be skipped.

Swept the rest of the paragraph for the same shape and found an un-flagged
twin: it also announced the issue cluster call unconditionally, though that
call only happens when the scan returns usable signal.

Both are now stated as conditional, with a rule covering the class: say
"conditional" for anything this phase cannot yet resolve rather than
pre-subtracting or asserting it. A skip phrase stays a real subtraction --
that one is readable from the prompt at notice time.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7f758e70d3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md Outdated
… packing frames

Reverts the 2-agents-x-3-frames tactical packing. Two problems with it, both
verifiable in the file it lived in:

Packing barely saved anything. divergent-ideation.md states per-frame idea
targets explicitly persist under packing ("a two-frame agent targets that per
frame"), so two packed agents still had to generate the same 36-48 candidates.
The saving was fixed dispatch overhead plus a repeated input block that the
payload is deliberately structured to make cache-friendly.

Packing starved the basis check. The verification-read budget is per agent,
not per frame -- so a three-frame agent got 5 reads across ~18-24 ideas where
three single-frame agents got 15. That is a ~3x cut to the mechanism the skill
exists to enforce: a `direct:` basis must quote a line the agent actually read.

Tactical now keeps the default 5-agent/6-frame fleet and gets cheap where the
cost actually is: 3-4 ideas per frame instead of 6-8, 2-3 verification reads
instead of 5, plus the existing axis/scout caps and waived floor. Roughly
halves generated output while leaving each idea's verification ratio intact.

The universal path and the variant-collision table follow the same rule:
tactical contributes volume, reads, and the waived floor, and never repacks
another variant's fleet.

A 16-run paired eval (Claude + Codex) found packing did not dilute per-frame
output as feared -- volume held and inter-frame distinctness was if anything
higher, since independent agents converge on the same salient evidence. The
verification-budget argument, not dilution, is why packing is out.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
Comment thread skills/ce-ideate/SKILL.md

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 45919aa156

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/issue-intelligence.md Outdated
Comment thread skills/ce-ideate/SKILL.md Outdated
Comment thread skills/ce-ideate/SKILL.md Outdated
The inline Phase 1 fallback said to "use the default Phase 2 fleet" when the
issue scan finds no reachable tracker or too little signal, while both
extracted references say to fall back at this run's own agent count. On a
`go deep` or surprise-me run that also carried issue-tracker intent, the
inline wording silently discarded the depth the user asked for.

The inline step now names the six default frames at the run's own count and
budgets. A test pins that wording and asserts the flat-reset phrasing is gone
from the body -- the references already agreed; the body was the outlier.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
Comment thread skills/ce-ideate/SKILL.md Outdated
Three review findings, all stale statements left by the previous commit's
switch from fleet-packing to volume/read cuts: the issue-analysis fallback
still resolved 2 agents under tactical, the issue-tracker collision still said
tactical sets the agent count, and the surprise-me collision still said
tactical keeps "only" the waived floor while the reference also gave it the
volume and read cuts.

Fixing the three in place would leave the same trap for the next change, since
each collision site re-enumerated tactical's effect from scratch. Phase 0.5 now
defines **tactical's dials** as one complete named set -- 3-4 ideas per frame,
2-3 verification reads, 3 axes, 3 scouts, floor waived at both layers -- and
states what tactical does NOT touch (agent count, frame set, tier). Every
collision site and both references now reference the set by name.

A test pins the named set, its does-not-touch clause, the by-name references,
and the absence of any surviving 2-agent tactical claim.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 536976e1ed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/universal-ideation.md Outdated
Comment thread skills/ce-ideate/SKILL.md Outdated
… a real distiller

Two findings:

The universal path swallowed explicit volume overrides. divergent-ideation.md
has always said an override like "100 ideas" adjusts the per-frame target, but
universal-ideation.md hardcoded "3-4 when tactical scope is active" with no
escape -- so "100 quick wins for this launch strategy" capped at 18-24 raw
ideas on the non-software path. The override clause is now mirrored there.

The user-research stub awaited a distiller that may not exist. It said to
distill and await unconditionally, while the reference folds a small artifact
into the grounding summary inline with no sub-agent. A literal runner would
dispatch an agent that should not exist and block the batch on it. The stub now
names the no-distiller case and makes the await conditional on one running.

Tests pin the override escape on both paths and the conditional await.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f5a095cb60

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/universal-ideation.md Outdated
Comment thread docs/skills/ce-ideate.md Outdated
…size unresolved at notice time

The frame guard was vacuous a third time, one level finer than the last fix.
Section scoping still let the section's own intro sentence -- "ceiling frames
(assumption-breaking, analogy, constraint-flipping)" -- plus the axis-coverage
example satisfy three of the six probes, so deleting those three definitions on
the universal path left the test green. Confirmed by running it.

Frames are now asserted by DEFINITION LINE: each name must head its own bolded
list item inside the owning section. A passing mention in prose no longer
counts. Falsified against both the reviewer's exact case (delete three
universal definitions, keep the intro) and a single-definition deletion on the
software side; each turns the suite red.

Separately, Phase 0.6 asked the cost notice to name the ideation fleet size,
but the six-agent go-deep/surprise-me variant is defined in
divergent-ideation.md, which is not loaded until Phase 2, and Phase 0.5 names
those overrides without their counts. A sequential runner could not derive the
number and would likely reuse the five-agent example -- the one value certain
to be wrong there. The notice now names the fleet as scaled by the active
override instead of stating a count, matching how it already handles the
depth-dependent universal count.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fb90c26463

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/divergent-ideation.md Outdated
Comment thread skills/ce-ideate/SKILL.md Outdated
…-count cases together

The reads fix from two commits ago was still wrong. It lifted a raised-volume
run back to "the ordinary 5 reads" -- but 5 is calibrated for roughly 6-8 ideas
from ONE frame, so at ~16-17 ideas per frame it verifies a third as much per
idea, and the default fleet's two-frame cousin agent was already submitting two
frames' worth against that same 5. The "ratio is the point" claim was never
literally true even at baseline.

The budget is now stated as a rate sized to what an agent actually submits: the
tactical cut is legitimate because generation is cut alongside it, a volume
override raises the budget with it instead of snapping back to a
smaller-target number, and a two-frame agent needs proportionally more. Mirrored
on the universal path.

Added the honest valve rather than pretending the rate solves everything: at a
large raw-volume override, per-idea depth still falls, and the artifact must say
so instead of implying uniform scrutiny.

Separately, the Phase 0.6 fleet-size paragraph added last commit contradicted
the sentence above it, which still called elsewhere-non-software "the one mode"
with an unsettled count -- an exclusivity claim that licensed reusing the
five-agent example for a software go-deep run, the exact miscount the addition
forbade. Both cases are now stated together, with tactical explicitly excluded
since it changes volume and reads but never the agent count.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
Comment thread skills/ce-ideate/references/divergent-ideation.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fbc5ed70e8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md Outdated
My previous fix made the 5-read budget a per-submission *rate* ("any agent
carrying more than one frame's 6-8 ideas needs proportionally more"), which
directly contradicted the flat budget line two lines above it -- and that line
governs every default dispatch, since the default fleet's cousin agent holds
two frames.

That is the third consecutive round where a repair contradicted its neighbour
(the duplicate survivor-scoring rubric, the "one mode" exclusivity claim, now
this). The common cause is adding a statement beside an existing one without
reconciling them, so this reverts the elaboration rather than adding a fourth
statement to reconcile three.

What remains is one budget and its two real consequences:

- One stated budget: 5 reads, 10 under `go deep`, 2-3 under tactical scope.
- The tactical cap is paired with the tactical volume cut, so a run carrying
  both a tactical signal and a volume override verifies at 5, not 2-3.
- Budgets are ceilings, not guarantees of uniform scrutiny. A two-frame agent
  or a raised-volume run gets less per-idea depth; that is an accepted trade
  and the artifact says so rather than implying equal verification.

The per-idea "ratio" framing is gone entirely -- it was never true even at
baseline, since the cousin agent always submitted two frames' worth against
one budget. A test asserts the rate formulation cannot return.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7db4ede948

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/divergent-ideation.md
…g cases

The previous commit replaced "the one mode whose count is unsettled" with "two
situations" -- a smaller closed set, but still a closed set, and it was still
incomplete. Issue-tracker mode is a third: the fleet is 4 theme agents if the
Phase 1 scan returns usable themes, otherwise the default, and that is decided
after this notice fires.

Adding a third bullet would invite a fourth, so the enumeration is gone. Phase
0.6 now states the rule -- if the number comes from a decision this phase has
not made, describe the leg instead of counting it -- with the known cases
listed as explicitly non-exhaustive examples, issue-tracker mode among them.
Tactical stays named as the case that IS resolvable, since it changes volume
and reads but never the agent count.

Tests assert the rule and the non-exhaustive marker, and that neither closed-set
phrasing can return.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
Comment thread skills/ce-ideate/SKILL.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 52d8aceca9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/universal-ideation.md Outdated
Comment thread docs/skills/ce-ideate.md Outdated
All four are "which number wins when two rules apply":

A raw total below the frame floor was unsatisfiable. "3 ideas about auth"
divided three ideas across six required frames, so the run had to either
overshoot the ask or leave frames unrun. Any total at or below roughly one per
frame now reads the way `top 3` does -- generate normally, cut to that many
survivors -- on both paths.

An explicit survivor count lost to the depth default. The universal
convergence target was unconditional, so `top 3 names for a coffee shop` could
return five at Standard depth even though line 81 makes `top 3` the survivor
limit. An explicit count now wins outright, with the depth-keyed target as the
fallback.

The issue-tracker fallback said "the default fleet" -- the ordinary five --
directly above a sentence forbidding that figure. It now falls back to the
six-frame default at this run's own count, which is 6 under go deep or
surprise-me.

The docs page claimed all software/product tactical runs keep five agents,
but an issue-tracker run with usable themes dispatches four. Exception added.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 483bca0f87

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md Outdated
The issue-analysis fallback named tactical's lowered volume and reads, so
"100 quick wins from open issues" that fell back on an unreachable tracker
discarded the user's explicit total and generated 18-24 candidates against the
tactical read cap -- after divergent-ideation.md had already resolved the
override as the winner.

Last round fixed the agent-count half of this same sentence and left the
volume/read half naming specifics. Both halves, and the two references stating
the same rule, now say the fallback carries every value the run has already
resolved -- count, volume, reads, and any explicit user override -- and
restores the default frame set only.

Naming any specific value in a fallback is the defect: it re-derives what an
earlier phase settled and silently outranks a user's request. All three sites
now name none, and a parity rule plus a negative assertion keep tactical's
defaults from reappearing there.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
Comment thread skills/ce-ideate/SKILL.md Outdated
Comment thread tests/skills/ce-ideate-generation-contract-parity.test.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 72c0acd134

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/SKILL.md Outdated
…values

Last commit's "carry every resolved value, re-derive nothing" was inverted, and
broke in two ways at once.

Issue-tracker mode resolves a 4-agent fleet. Carrying that agent count while
switching to the six default frames leaves 4 agents holding 6 frames -- exactly
the packing this PR removed, because the verification budget is per agent.

And carrying a per-frame volume across a 4-to-6 frame change multiplies the
total: "100 ideas from open issues" resolved as 25 per theme frame becomes ~150
on fallback, contradicting the rule that a raw number is a total.

The split is now explicit at all three sites: preserve what the user asked for
(raw total, explicit survivor count, `go deep`, tactical signal) and re-derive
what the mode computed for the surface being abandoned (agent count, per-frame
split, and the read budget that followed from them). Both hazards are named in
the text so the reason survives the next edit.

Also removed a parity entry added last commit that asserted this rule on both
paths. Issue-tracker fallback is software-path-only -- the universal path has
zero issue-tracker mentions -- so its universal probe was matching an unrelated
survivor-count line and could never fail. The assertion now lives in the
software-only contract test, checked across all three sites, and falsified by
injecting each hazard's removal.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
Comment thread skills/ce-ideate/SKILL.md Outdated
…ot raw signals

The fallback rule from last commit preserved the user's raw prompt signals --
"`go deep`, a tactical signal" -- and re-derived the dials from them. That
skips Phase 0.5's collision resolution, where `go deep` suppresses tactical
scope entirely. A `go deep quick wins from open issues` run that fell back
would resurrect the waived ambition floor and lowered volume on an all-ceiling
maximum-depth fleet -- the same waiver leak this PR fixed at the start,
returning through a different door.

The fallback now carries Phase 0.5's already-resolved state (which overrides
survived its collisions, plus the raw total or explicit survivor count) and
re-derives only the two values the abandoned frame count determined: the agent
count and the per-frame split. It explicitly does not re-read the prompt.

Tests pin the post-collision wording and the stated reason, and assert that
neither of the two earlier formulations -- inherit-everything, or
re-derive-from-raw-signals -- can return. Falsified by reverting the wording
and watching it go red.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 229f9e29cb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/divergent-ideation.md Outdated
…te machine

Twenty rounds of review-driven "precision" had grown SKILL.md from 6,941 words
back to 7,890 -- recovering 67% of this PR's slimming and leaving it only 5.6%
under main. Three sections absorbed 908 of those 937 words: the fallback rule
(194 words across three files), Phase 0.6's unresolved-count enumeration, and
Phase 0.5's per-pair collision table.

Each addition was individually valid and each spawned the next contradiction,
because the sections were being written as a state machine for an executor
rather than guidance for an agent that can reason. The field guide is explicit:
if removal mainly gives a capable model more freedom to reason, it is judgment
-- delete it first, and do not answer lost quality by stacking more protocol.

Collapsed:

- The fallback is one clause: fall back to the six default frames, keeping the
  scaling already resolved and recomputing only what the frame count itself
  determines. An agent applying that will not put a 4-agent fleet on 6 frames
  or multiply a requested total; both are visibly incoherent.
- Phase 0.6 states one conditional rule instead of a case list that was
  incomplete three times running.
- Phase 0.5 states surface-owns-frames / budget-owns-volume once, with the
  per-variant table left to divergent-ideation.md, which owns dispatch.

Kept every rule with a demonstrated failure behind it: tactical cuts volume not
lenses, no packing, the waiver at both layers, the named dial set, the ordered
scan/scope/cluster/await skeleton, load-before-dispatch, and derive-don't-
memorize. Tests now assert those principles; the assertions that had calcified
the deleted nitpick wording are gone.

SKILL.md 7,890 -> 7,566 words.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq

@cursor cursor 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.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 5233c9e. Configure here.

Comment thread skills/ce-ideate/SKILL.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5233c9ed66

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/divergent-ideation.md
tmchow added 2 commits August 12, 2026 01:36
Applying Feedback to Skills gates whether a finding is worth editing for,
but says nothing about what happens once a fix itself becomes the next
round's target. PR #1125 diagnosed prose accretion across review rounds
and installed the author-side gate; this closes the gap it left open.

Observed on this PR: ~26 review rounds produced overwhelmingly material
findings -- 7 of the last 8 named a concrete runtime consequence -- yet
ce-ideate's SKILL.md still grew 6,941 -> 7,890 words, because each valid
finding was answered with more prose, manufacturing fresh cross-file
surface for the next round to find. The reviewer was not the problem.

The re-verify clause is earned by a regression here: collapsing three
sections to principles (5233c9e) left a condensed rule pointing
universal-path runs at a table that has no universal rows.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
…vivor limit a consumer

Three fixes, each removing a wrong statement rather than qualifying it.

- The tactical read-budget pairing keyed on a run *carrying* `quick wins`,
  so `go deep -- give me 100 quick wins` halved go deep's 10 reads to 5.
  It now keys on tactical scope still being active after Phase 0.5 resolves
  collisions, which is what the governing rule already said.
- A total too small to spread across frames resolves to a survivor limit,
  but Phase 3 targeted 5-7 unconditionally, so `3 ideas about auth` could
  return more than asked. post-ideation-workflow.md now honors an explicit
  survivor count first, matching the wording the universal path already used.
- Phase 0.5's collision rule pointed at divergent-ideation.md for the
  per-variant table while naming the universal path as a colliding surface.
  universal-ideation.md carries its own depth-keyed rules instead, so the
  pointer was wrong on that path; dropped it, since each path already loads
  its own dispatch spec.

The always-loaded body shrinks 5 words. Full suite green (2968 pass).

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
@tmchow

tmchow commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

Two commits landed after the last review pass (which stopped at 5233c9ed):

  • e062e80a — adds step 5 to AGENTS.md "Applying Feedback to Skills"
  • b460ed19 — three fixes in ce-ideate: the tactical read budget now keys on scope that is still active after Phase 0.5 resolves collisions; post-ideation-workflow.md honors an explicit survivor count before its 5-7 default; and Phase 0.5's collision rule no longer points universal-path runs at divergent-ideation.md, which has no universal rows.

The third is a deletion — please check that dropping the pointer did not strand the software path, which now relies on the Phase 1 load instruction alone.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b460ed198f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills/ce-ideate/references/post-ideation-workflow.md Outdated
b460ed1 replaced "fewer than 5" with "fewer than the target" so an
explicit count would be honored, but on a default run "the target" is the
5-7 range, so five or six sound survivors read as a shortfall. The floor is
now named inline: the explicit count when one was given, five otherwise.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
@tmchow
tmchow merged commit e36ddb8 into main Aug 12, 2026
5 checks passed
@github-actions github-actions Bot mentioned this pull request Aug 12, 2026
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