Commit Graph

286 Commits

Author SHA1 Message Date
Trevin Chow 483bca0f87 fix(ce-ideate): resolve four count-precedence conflicts
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
2026-08-11 23:47:01 -07:00
Trevin Chow deb53bdfc4 fix(ce-ideate): probe each parity rule in the file that owns it, and fix three gaps
The parity guard added last commit could not catch two of the rules it claimed
to pin. `divergent-ideation.md` contains no Phase 3 verifier at all -- the
probe was matching its generation-time verification-read budget, a different
mechanism in a different phase -- and the axis-spread probe matched the
generation-time "distribute across axes" instruction rather than survivor-set
scoring. Both real rules live in `post-ideation-workflow.md`, which the test
never read, so deleting either would have left the suite green.

Fixed structurally rather than by patching two regexes: each rule now names the
file that owns it, and the convergence reference is part of the software path.
Probing a whole path as one blob is what let a lookalike in the wrong file
satisfy an assertion. A meta-test asserts convergence-phase rules are probed in
the convergence file.

Then audited every probe instead of the two reported, by deleting each rule
from its owning file and confirming that rule's test goes red -- 11 rules
across both paths, 22 checks, all now failing on removal. The original
verification injected drift into only 2 of 11 probes and generalized from
those; that was the process error underneath this bug.

Three content gaps fixed alongside:

- The reads-track-ideas override never reached the universal path -- the fifth
  distinct dial to miss it, and one the named dial set could not cover because
  it is an interaction rule between a dial and an override rather than a dial.
  It is now enforced by the parity map, not just present.
- Parallel research distillers collided on a shared basename: `q3/report.md`
  and `q4/report.md` both slugified to `report`, so concurrent agents
  overwrote each other's dossier while the gists still pointed at it. The slug
  now derives from the full path plus a digest, with a distinctness check
  before dispatch.
- The docs page's fleet claim was software-path-only; non-software runs
  dispatch zero ideation agents at Quick/Standard and one per lens at Full.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
2026-08-11 21:47:15 -07:00
Trevin Chow b9454b9664 fix(ce-ideate): read a raw volume request as a total, and state the real agent count
Two findings:

"100 ideas" multiplied instead of dividing. The spec said a volume override
"raises the per-frame target", so a request for 100 ideas asked each of six
frames for 100 -- ~600 raw candidates, and on a tactical run it defeated the
cost reduction entirely. A raw number is now explicitly a total to divide
across the frames in play (~16-17 each over six), while `top 3`-shaped requests
constrain survivors and leave generation alone. Both the software spec and its
universal twin carry the rule, and the test asserts both.

The docs page claimed six lenses run in six agents. The default is five: one
ceiling-tier agent holds assumption-breaking and constraint-flipping together
as cognitive cousins. The page now says six lenses across five agents, which
matters because the surrounding paragraph is explaining why packing was
rejected -- overstating the count undercut the point it was making.

Claude-Session: https://claude.ai/code/session_01LFdS46yevebfqNrcrJMiVq
2026-08-11 18:39:07 -07:00
Trevin Chow 45919aa156 fix(ce-ideate): take tactical savings from volume and reads, not from 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
2026-08-11 18:16:30 -07:00
Trevin Chow 16729b4d64 fix(ce-ideate): scale the run with the ask and slim the always-loaded 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
2026-08-11 17:03:14 -07:00
Trevin Chow 071b08ea7d fix(skills): slim four skills and restore load-bearing routing (#1356) 2026-08-11 15:58:12 -07:00
Trevin Chow 303c70b528 fix(ce-work): require review receipt or explicit skip before shipping (#1355) 2026-08-11 15:53:18 -07:00
Trevin Chow 265127996a fix(ce-commit-push-pr): construct retrospective stacks (#1338) 2026-08-06 00:51:39 -07:00
Trevin Chow 1a58b4a691 fix(ce-babysit-pr): own managed stacks with postures and opt-in ship (#1331) 2026-08-05 13:28:24 -07:00
Trevin Chow 6d60b7448b fix(ce-work): keep worker contexts scoped to one unit (#1336) 2026-08-05 13:24:10 -07:00
Trevin Chow 71a9714aee fix(ce-commit): lean skill for stronger models, keep load-bearing protocol (#1330) 2026-08-04 21:36:39 -07:00
Trevin Chow a44f1f9e29 fix(ce-commit-push-pr): require babysit handoff ownership (#1328) 2026-08-04 17:08:59 -07:00
Trevin Chow f8f1a207a2 fix(ce-doc-review): keep decision context visible for interactive choices (#1324) 2026-08-04 13:19:25 -07:00
Trevin Chow 4a47a2e0ae fix(ce-handoff): tighten create-body status, pointers, and traps (#1319) 2026-08-02 23:11:31 -07:00
Trevin Chow 56e34aca41 docs(solutions): record the context.mjs exit-and-revert episode (#1315) 2026-08-02 16:37:36 -07:00
Trevin Chow fce88ae25b fix(simplify-code): restore context.mjs dispatch setup (#1313) 2026-08-02 14:21:05 -07:00
Trevin Chow e84de89ef5 fix(simplify-code): improve cleanup with a smaller prompt (#1311) 2026-08-02 13:12:29 -07:00
Trevin Chow c23acfb73c fix(dispatch): harden skill-context directive delivery (#1307) 2026-08-01 13:04:02 -07:00
Trevin Chow bed74b2ea1 fix(ce-babysit-pr): drain review while CI awaits approval (#1297) 2026-07-31 14:52:35 -07:00
Som Samantray 5788604522 fix(peer-job-runner): prefer Git Bash over WSL on native Windows (#1292)
Co-authored-by: SomSamantray <>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Trevin Chow <trevin@trevinchow.com>
2026-07-31 14:50:27 -07:00
Som Samantray fea76d4396 fix: rename mode:headless to mode:non-interactive (#475) (#1291)
Co-authored-by: SomSamantray <>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Trevin Chow <trevin@trevinchow.com>
2026-07-31 13:21:22 -07:00
Trevin Chow 5fe350523c fix(ce-handoff): stop resume from inventing fake choice menus (#1296) 2026-07-31 13:08:02 -07:00
Trevin Chow 1b46bafac8 fix(babysit): harden the post-PR handoff, ready reporting, and drafts (#1293) 2026-07-31 11:41:00 -07:00
Trevin Chow 7ddaa418a8 fix(ce-compound-refresh): garden the solutions folder structure (#1288) 2026-07-30 17:51:14 -07:00
Trevin Chow bfccada952 fix(cross-model): idle-detect streaming peer routes (#1287) 2026-07-30 17:31:17 -07:00
Trevin Chow 9e8d4a4846 fix(cross-model): derive runner hard window from CROSS_MODEL_HARD_SECS (#1286) 2026-07-30 14:31:11 -07:00
Trevin Chow b76d9d6001 fix: unblock the scratch-root preamble on Git Bash and narrow the Windows lock retry (#1285) 2026-07-30 13:59:16 -07:00
Trevin Chow 1d3543fcc6 fix(ce-babysit-pr): run the watcher on native Windows (#1284) 2026-07-30 12:44:48 -07:00
Juan Gomez 6158fc0cb7 fix(codex-content): preserve URLs and mention-like text (#1254)
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-07-29 15:04:38 -07:00
Trevin Chow 95ea8ad0df fix(dispatch): authorize shipped subagents through skill context (#1274) 2026-07-29 14:55:25 -07:00
Nick Walker bf981584e9 fix(cross-model): make the peer wall-clock budget one derived knob (#1267)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:39:40 -07:00
Trevin Chow a9f6d530d4 fix(skills): probe Python interpreter instead of hardcoding python3 (#1255) 2026-07-24 11:13:52 -07:00
Kieran Klaassen aca3387d88 feat(ce-retune): measurement-first corpus retuning for model upgrades (#1252)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-24 12:10:08 -05:00
Luke Johnson 9a0ba637ce fix(codex): use a local marketplace source so /plugins lists CE's skills (#1249)
Co-authored-by: Trevin Chow <trevin@trevinchow.com>
2026-07-24 09:36:48 -07:00
Trevin Chow 393b14cd27 fix(peer-job-runner): make detached peer jobs work on native Windows (#1248) 2026-07-24 09:08:10 -07:00
Trevin Chow e6629187a1 feat(skills): configurable docs_root for CE artifact folders (#1245) 2026-07-23 20:37:08 -07:00
Trevin Chow b7a09f4035 fix(doc-review): render findings decision-first on every output surface (#1239) 2026-07-23 13:22:30 -07:00
Trevin Chow 3422ea0916 fix(ce-explain): keep tokens out of prose, render for a named reader (#1236) 2026-07-22 19:49:42 -07:00
Trevin Chow dbc565dbb8 perf(ci): run the test suite in parallel worker processes (#1235) 2026-07-22 19:18:17 -07:00
Trevin Chow f9d9e08a88 fix(ce-work): gate simplify on substantive code lines, not total diff lines (#1231) 2026-07-22 11:26:51 -07:00
Trevin Chow 0498571a9b docs(specs): remove claude-code and codex mirror specs (#1229) 2026-07-22 01:30:04 -07:00
Trevin Chow ece51fd7a6 feat(lfg): route planning and implementation stages per-directive (#1220) 2026-07-21 16:04:19 -07:00
Trevin Chow 52be0d1bc6 fix(ce-babysit-pr): spend the invocation budget in active watch time, not wall-clock (#1216) 2026-07-21 15:11:21 -07:00
Trevin Chow 7403e53ee8 fix(ce-pov): oracle panel prompting, disclosure, and grounding fixes (#1219) 2026-07-21 14:28:19 -07:00
Trevin Chow 868fb5467c fix(skills): render invocations for the active harness (#1218) 2026-07-21 14:03:17 -07:00
Trevin Chow 987c3be244 fix(ce-code-review): dispatch local reviewers as a foreground concurrent batch (#1214) 2026-07-21 10:20:50 -07:00
Trevin Chow 7d61a8af74 fix(ce-brainstorm): preserve multi-area project continuity (#1210) 2026-07-20 22:02:43 -07:00
Trevin Chow 5f48fb5397 feat(ce-plan,ce-brainstorm): elevate reasoning to a chosen model on any harness (#1206) 2026-07-20 21:36:26 -07:00
Trevin Chow 80550a8a7d feat(ce-ideate): generalize issue-tracker ideation to any tracker (#1209) 2026-07-20 21:35:50 -07:00
Trevin Chow 10bdacd294 fix(ce-code-review): move codex adversarial peer to gpt-5.6-luna at xhigh (#1208) 2026-07-20 21:34:33 -07:00