From 8d76d5b0d41a68af5010bb11ab783101bb250f5c Mon Sep 17 00:00:00 2001 From: Bram Date: Tue, 22 Sep 2026 21:12:50 +0200 Subject: [PATCH] feat(pstack): upgrade models and require three architect candidates --- CHANGELOG.md | 6 ++++ skills/architect/SKILL.md | 4 +-- skills/arena/SKILL.md | 6 ++-- skills/codex-first/SKILL.md | 6 ++-- skills/how/SKILL.md | 6 ++-- skills/interrogate/SKILL.md | 2 +- skills/no-comments/SKILL.md | 2 +- skills/poteto-mode/SKILL.md | 2 +- skills/poteto-mode/playbooks/bug-fix.md | 2 +- skills/poteto-mode/playbooks/feature.md | 2 +- skills/poteto-mode/playbooks/hillclimb.md | 2 +- .../poteto-mode/playbooks/multi-phase-plan.md | 4 +-- skills/poteto-mode/playbooks/perf-issue.md | 2 +- skills/poteto-mode/playbooks/refactoring.md | 2 +- skills/poteto-mode/references/models.md | 32 +++++++++---------- skills/poteto-mode/references/poteto-agent.md | 2 +- skills/poteto-mode/scripts/check-plan.mjs | 2 +- skills/reflect/SKILL.md | 2 +- skills/setup-pstack/SKILL.md | 32 +++++++++---------- skills/swarm/SKILL.md | 2 +- skills/why/SKILL.md | 4 +-- 21 files changed, 65 insertions(+), 59 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0150b4d..18cfb00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ summary: Timeline of guardrail helper changes mirrored from Sweetistics and rela # Changelog +## 2026-09-22: GPT-6 Sol and Luna role upgrades +- Require three distinct Architect designs, one per configured runner, before synthesis; verified Sol high, Astra low, and Fable 5.1 high through a complete design-only dry run. +- Set Arena runners to Astra medium, GPT-6 Sol high, GPT-5.6 Sol high, Opus 5.5 high, and Fable 5.1 high; route both Claude candidates through `claude -p` and require Claude Code 2.1.280+ for Opus. +- Upgrade active Luna roles to GPT-6 Luna at high reasoning: discovery, Swarm, comment audits, and live-verification lanes; align the plan validator and setup template. +- Upgrade active Sol roles to GPT-6 Sol at high reasoning: Arena runners and cross-judge pool, Architect, Interrogate, implementation playbooks, explainers, synthesis, tooling reflection, and Codex-first defaults; keep setup templates aligned. + ## 2026-09-17: Design panel models - Architect now uses Sol high, Astra low, and Fable 5.1 high; Arena honors the design panel and runs its Fable candidate through Claude CLI. diff --git a/skills/architect/SKILL.md b/skills/architect/SKILL.md index 2e52d59..d9746b9 100644 --- a/skills/architect/SKILL.md +++ b/skills/architect/SKILL.md @@ -29,9 +29,9 @@ Skip Phase A only when the work is genuinely greenfield with no surrounding syst Run the **arena** skill with the design-sketch task and the Phase A grounding artifacts. Pass `references/runner-prompt.md` as each runner's prompt. Each candidate produces a design package shaped per `references/rationale-template.md`. -Use `architect runners` from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` when present. Otherwise default to one each on `gpt-5.6-sol` at `high` reasoning, `gpt-6-astra` at `low` reasoning, `claude-fable-5-1` at `high` reasoning. Pass this panel to Arena as the explicit runner list. +Use `architect runners` from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` when present. Otherwise default to one each on `gpt-6-sol` at `high` reasoning, `gpt-6-astra` at `low` reasoning, `claude-fable-5-1` at `high` reasoning. Pass this panel to Arena as the explicit runner list. -Design it twice. Require at least two structurally distinct candidates before synthesis, even when the first looks sufficient. This is the **exhaust-the-design-space** principle skill made concrete. Whole-shape alternatives, not point fixes inside one shape. +Design it three times. Require three structurally distinct candidates before synthesis, one from each configured Architect runner, even when the first looks sufficient. This is the **exhaust-the-design-space** principle skill made concrete. Whole-shape alternatives, not point fixes inside one shape. Screen every candidate against [`references/design-red-flags.md`](references/design-red-flags.md) before synthesis. Reject or revise shallow modules, information leakage, temporal decomposition, and pass-through methods. diff --git a/skills/arena/SKILL.md b/skills/arena/SKILL.md index f621baa..8f7336a 100644 --- a/skills/arena/SKILL.md +++ b/skills/arena/SKILL.md @@ -24,12 +24,12 @@ The N candidates will receive the same prompt, so the prompt is the contract. 1. State the artifact each candidate is producing. 2. Derive the rubric. State what success looks like for *this* task, then turn it into 3-6 concrete gradeable criteria. The rubric is the picker's tool in Phase D. Candidates only see the task. -3. Pick the runners. Honor an explicit runner list from the caller (including Architect); otherwise use `arena runners` from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` when present. Otherwise default to one each on `gpt-5.6-sol` at `high` reasoning, `gpt-5.6-terra` at `high` reasoning, `gpt-5.6-luna` at `high` reasoning. Spawn more when the arena covers multiple design directions. Same model N times when the work is generation-bound rather than judgment-sensitive. +3. Pick the runners. Honor an explicit runner list from the caller (including Architect); otherwise use `arena runners` from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` when present. Otherwise default to one each on `gpt-6-astra` at `medium`, `gpt-6-sol` at `high`, `gpt-5.6-sol` at `high`, `claude-opus-5-5` at `high`, `claude-fable-5-1` at `high`. Spawn more when the arena covers multiple design directions. Same model N times when the work is generation-bound rather than judgment-sensitive. 4. Assign output paths. Each candidate writes to its own location (a git worktree where possible, otherwise `/tmp/arena-/candidate-/`), per the **separate-before-serializing-shared-state** principle skill. ## Phase B: Fan out -Launch all N candidates concurrently with the task, the path to the shared grounding, their own output path, and instructions to produce both the artifact and a short rationale. Use Codex collaboration agents with `model` and `reasoning_effort` for Codex entries. Run `claude-fable-5-1` entries through `claude -p --model claude-fable-5-1 --effort ` with the same candidate inputs and output contract. +Launch all N candidates concurrently with the task, the path to the shared grounding, their own output path, and instructions to produce both the artifact and a short rationale. Use Codex collaboration agents with `model` and `reasoning_effort` for Codex entries. Run Claude entries through `claude -p --model --effort ` with the same candidate inputs and output contract. `claude-opus-5-5` requires Claude Code 2.1.280 or newer. Schedule in waves when runner count exceeds available concurrency; keep one candidate per configured entry. Each rationale names the alternatives the candidate considered and what it rejected. @@ -37,7 +37,7 @@ If a candidate fails to produce output, proceed with N-1 and note the dropout in ## Phase C: Cross-judge -After all Phase B candidates complete, choose one model from the `arena cross-judge pool` in `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` when present. Otherwise use `gpt-6-astra` at `medium` reasoning, `gpt-5.6-sol` at `high` reasoning. Prefer a different model family from the parent's. Spawn one judge agent on that model and instruct it not to edit files or change repository state. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with the parent's reading in Phase D, not with the candidates themselves. Don't spawn the judge while candidates are still writing. +After all Phase B candidates complete, choose one model from the `arena cross-judge pool` in `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` when present. Otherwise use `gpt-6-astra` at `medium` reasoning, `gpt-6-sol` at `high` reasoning. Prefer a different model family from the parent's. Spawn one judge agent on that model and instruct it not to edit files or change repository state. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with the parent's reading in Phase D, not with the candidates themselves. Don't spawn the judge while candidates are still writing. ## Phase D: Pick a base diff --git a/skills/codex-first/SKILL.md b/skills/codex-first/SKILL.md index 01e6d83..523bb2f 100644 --- a/skills/codex-first/SKILL.md +++ b/skills/codex-first/SKILL.md @@ -54,12 +54,12 @@ P=$(mktemp); cat >"$P" <<'EOF' EOF command codex exec --yolo -C \ - -m gpt-5.6-sol \ + -m gpt-6-sol \ -c model_reasoning_effort="high" \ -o /tmp/codex-last.md - <"$P" 2>/dev/null ``` -- Model default: `gpt-5.6-sol`, effort `high` — pin both explicitly; don't rely on user config. +- Model default: `gpt-6-sol`, effort `high` — pin both explicitly; don't rely on user config. - Never fast mode: no `--enable fast_mode`, on any route. - `--yolo` is the house default; Codex may run commands/tests freely. Keep prompts scoped to the target repo. - `command codex` bypasses any interactive shell alias. If codex isn't on PATH, it depends on how it was installed: @@ -95,7 +95,7 @@ Follow-up fixes — cheaper than fresh runs, keeps context. `resume` has no `-C` For runs you must not babysit, trade the stderr suppression for a log and watch its mtime; read only the `-o` file into context, never the log body. ```bash -command codex exec --yolo -C -m gpt-5.6-sol \ +command codex exec --yolo -C -m gpt-6-sol \ -c model_reasoning_effort="high" \ -o "$OUT" - <"$P" > "$LOG" 2>&1 # Claude Code: run the line above as its own Bash run_in_background call diff --git a/skills/how/SKILL.md b/skills/how/SKILL.md index 85a8dc7..69d0b5a 100644 --- a/skills/how/SKILL.md +++ b/skills/how/SKILL.md @@ -20,7 +20,7 @@ When in doubt, take the simple path. Decompose the question into 2 to 4 exploration angles, each a distinct slice of the subsystem. Spawn all explorers concurrently: -- `model`: your configured `how explorer` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-luna` at `high` reasoning) +- `model`: your configured `how explorer` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-luna` at `high` reasoning) Each explorer gets the prompt in `references/explorer-prompt.md` with its angle filled in. Then go to Step 3. @@ -28,7 +28,7 @@ Each explorer gets the prompt in `references/explorer-prompt.md` with its angle Spawn one agent that explores and explains in one pass: -- `model`: your configured `how explainer` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning) +- `model`: your configured `how explainer` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning) Build its prompt from `references/explainer-prompt.md` without the explorer-findings section. Go to Step 4. @@ -36,7 +36,7 @@ Build its prompt from `references/explainer-prompt.md` without the explorer-find Once all explorers have returned, spawn one agent to synthesize their findings into one explanation: -- `model`: your configured `how explainer` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning) +- `model`: your configured `how explainer` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning) Build its prompt from `references/explainer-prompt.md` with every explorer's findings filled in. diff --git a/skills/interrogate/SKILL.md b/skills/interrogate/SKILL.md index 0f9dbfb..54e8663 100644 --- a/skills/interrogate/SKILL.md +++ b/skills/interrogate/SKILL.md @@ -37,7 +37,7 @@ Launch all reviewers as Codex collaboration agents. Use the `interrogate reviewe | Subagent | Default model | |----------|---------------| | Reviewer A | `gpt-6-astra` at `high` reasoning | -| Reviewer B | `gpt-5.6-sol` at `high` reasoning | +| Reviewer B | `gpt-6-sol` at `high` reasoning | | Reviewer C | `claude -p --model claude-fable-5-1 --effort xhigh` | For each reviewer: diff --git a/skills/no-comments/SKILL.md b/skills/no-comments/SKILL.md index 2db52bc..b2fcd70 100644 --- a/skills/no-comments/SKILL.md +++ b/skills/no-comments/SKILL.md @@ -15,7 +15,7 @@ Use the caller's files or diff. Otherwise use the current diff against the base ## Steps -1. Spawn a Codex collaboration agent with the Comment Sicko instructions from `references/comment-sicko.md`, using your configured `Comment Sicko` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-luna` at `high` reasoning). Pass the scope. Do not restate its rules. +1. Spawn a Codex collaboration agent with the Comment Sicko instructions from `references/comment-sicko.md`, using your configured `Comment Sicko` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-luna` at `high` reasoning). Pass the scope. Do not restate its rules. 2. Inspect its report and diff. Reject application-code edits, scope escapes, exception-protected deletions, misstated `MUST KILL` reasons, and flags that treat kept intentional code as guilty. Reshape flags on our-code surprises stay actionable. Do not restore those comments. A keep survives only with proof it is about something we cannot change. Audit missed scoped lint and TypeScript suppressions. Correctness or safety suppressions stay actionable `MUST KILL`s. Restore deletions only with exact exceptions and scoped proof. Before accepting thin `IMPORTANT` or `do not remove` kills or keeps, run `$how` or `$why` on their symbol. If a kill is ambiguous, do not restore. If a keep is refuted or still ambiguous, delete it. Revert and rerun one rejected report with the failure named. Reject a second, report it open, and fail `$no-comments`. 3. Fix trivial accepted flags directly by deleting a dead path, dropping a parameter, or using the real API. If any fix needs a shape, run `$architect` once for the accepted set and surrounding code. Stop at the sketch. Architect shapes. Step 4 implements. 4. Implement the smallest root-cause fix in scope. Remove every named workaround. If the root cause is out of scope, land the smallest in-scope fix and report the rest open. The **principle-fix-root-causes** and **principle-redesign-from-first-principles** skills guide intent only. Neither authorizes widening the fence nor fixing instances outside it. Never bolt on symptom guards. diff --git a/skills/poteto-mode/SKILL.md b/skills/poteto-mode/SKILL.md index 7bd31d0..130c395 100644 --- a/skills/poteto-mode/SKILL.md +++ b/skills/poteto-mode/SKILL.md @@ -85,7 +85,7 @@ Read the leaf skill in full for any principle you apply. Each entry names when i **Use the `poteto-agent` instructions in `references/poteto-agent.md` for any subagent you spawn inside a playbook step** (code-writing delegates, ad-hoc helpers). `$poteto-mode` and `poteto-agent` route through the same wrapper. Routed workflow skills (`how`, `why`, `interrogate`, `reflect`, `swarm`) set their own subagent instructions for diverse-model review. Respect what the skill prescribes, don't override to `poteto-agent`. -**Defaults for every spawn.** `fork_turns: "none"` (Codex forks the whole parent context by default), concurrent when independent, file pointers not inlined context, explicit model per role (configurable via `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md`. Defaults `gpt-5.6-sol` at `high` reasoning for code, `gpt-6-astra` at `medium` reasoning for prose and judgment). Code delegates tier by difficulty. The hardest changes (cross-cutting design, gnarly concurrency, subtle algorithms) go to your strongest judgment model (`gpt-6-astra` at `high` reasoning), whether the task needs judgment on vague intent or is a precisely specified sequence of steps to execute to the letter. Trivial mechanical edits go to your fast code model. Per-role lines in `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` override these defaults and the model choices in the routed skills (`how`, `why`, `arena`, `swarm`, `architect`, `interrogate`, `reflect`). A role with no row keeps its default. +**Defaults for every spawn.** `fork_turns: "none"` (Codex forks the whole parent context by default), concurrent when independent, file pointers not inlined context, explicit model per role (configurable via `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md`. Defaults `gpt-6-sol` at `high` reasoning for code, `gpt-6-astra` at `medium` reasoning for prose and judgment). Code delegates tier by difficulty. The hardest changes (cross-cutting design, gnarly concurrency, subtle algorithms) go to your strongest judgment model (`gpt-6-astra` at `high` reasoning), whether the task needs judgment on vague intent or is a precisely specified sequence of steps to execute to the letter. Trivial mechanical edits go to your fast code model. Per-role lines in `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` override these defaults and the model choices in the routed skills (`how`, `why`, `arena`, `swarm`, `architect`, `interrogate`, `reflect`). A role with no row keeps its default. You own every subagent's work. Review the diff and write your own summary, don't pass through what it said. Interrupt-chained resumes silently drop directives, so fire a fresh subagent with consolidated scope rather than trusting a "done" summary. A second opinion is the same prompt against a different model. Agreement is high-signal. diff --git a/skills/poteto-mode/playbooks/bug-fix.md b/skills/poteto-mode/playbooks/bug-fix.md index 84424bd..960083d 100644 --- a/skills/poteto-mode/playbooks/bug-fix.md +++ b/skills/poteto-mode/playbooks/bug-fix.md @@ -6,7 +6,7 @@ Be scientific. Every shipped line traces to runtime evidence. Belt-and-suspender 1. Reproduce it yourself on the matching surface via the control skill (Non-negotiables). Don't hand the repro to the user. A debug or instrumentation protocol that says to ask the user does not override this. You drive the instrumented runtime. Ask the user only with a stated, specific reason the control surface cannot reach the target, and only after driving it as far as it goes. Won't reproduce directly, force it: synthesize the trigger, tighten conditions, or instrument until it fires. 2. Binary-search the cause. Form the candidate hypotheses, then rule them out until one survives. Seed them with `how` over the affected subsystem and the **why** skill for regression history. Each pass, take the split that cuts the most remaining problem space, get runtime evidence, eliminate. When program state is unclear, add instrumentation or logging and read it as the code runs. Don't guess. Drive a long or stubborn hunt with Codex's `/goal` command. Confirm the surviving *mechanism* with runtime evidence before the step-3 architect/interrogate fan-out. -3. Plan the fix. If it crosses a function boundary, `architect` first. Delegate implementation to a subagent using your configured `bug-fix` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning) with a specific scope. Review the diff. +3. Plan the fix. If it crosses a function boundary, `architect` first. Delegate implementation to a subagent using your configured `bug-fix` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning) with a specific scope. Review the diff. 4. Verify on the same surface. The original repro now passes. "Inconclusive" or wrong-surface is not a pass. Flag it. Unit tests show branch behavior, not bug absence. 5. Stage the commits so the failing repro lands before the fix in git history. See the **tdd** skill for the failing-test-first cadence when the bug has a cheap local test path. Skip it when the test would be expensive, integration-heavy, or unclear. This is the canonical **sequence-verifiable-units** principle skill, the failing test first and the fix on top. diff --git a/skills/poteto-mode/playbooks/feature.md b/skills/poteto-mode/playbooks/feature.md index deebccc..d86ef0a 100644 --- a/skills/poteto-mode/playbooks/feature.md +++ b/skills/poteto-mode/playbooks/feature.md @@ -9,7 +9,7 @@ - **Independent workstreams.** Disjoint files, services, or layers parallelize. Shared writes serialize. - **Shared mutable state.** Default to splitting the target (the **separate-before-serializing-shared-state** principle skill). Serialize only for real invariants. - **Smallest safe decomposition.** If one worker is best, name why. -4. Delegate code-writing to a subagent using your configured `feature` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning) with a specific scope (file paths, named data shape and its organizing structure per **principle-model-the-domain**, a state machine over scattered booleans, a table/registry over branching, a typed model over repeated shape assumptions, chosen before the delegate writes logic, and success criteria). Review its diff yourself. When the implementation admits multiple valid shapes (error handling, abstraction layer, test structure), delegate via the **arena** skill instead so the runners surface the alternatives and the cross-judge guards the pick. Mandatory: no skip-with-reason escape, and Laziness Protocol does not override it (the gain is review separation, not lines saved). You can spawn a subagent even though you are one. "The app is small" and "a subagent cannot spawn one" are both wrong. A subagent forbidden to spawn satisfies this by owning the diff directly with the same review separation. No "standing by" reply that waits on a nested agent. Comments per **Comments**. Surgical edits, re-ground against the source for upstream-derived files. Port shared-primitive improvements to all consumers and verify each. Commit liberally. +4. Delegate code-writing to a subagent using your configured `feature` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning) with a specific scope (file paths, named data shape and its organizing structure per **principle-model-the-domain**, a state machine over scattered booleans, a table/registry over branching, a typed model over repeated shape assumptions, chosen before the delegate writes logic, and success criteria). Review its diff yourself. When the implementation admits multiple valid shapes (error handling, abstraction layer, test structure), delegate via the **arena** skill instead so the runners surface the alternatives and the cross-judge guards the pick. Mandatory: no skip-with-reason escape, and Laziness Protocol does not override it (the gain is review separation, not lines saved). You can spawn a subagent even though you are one. "The app is small" and "a subagent cannot spawn one" are both wrong. A subagent forbidden to spawn satisfies this by owning the diff directly with the same review separation. No "standing by" reply that waits on a nested agent. Comments per **Comments**. Surgical edits, re-ground against the source for upstream-derived files. Port shared-primitive improvements to all consumers and verify each. Commit liberally. 5. Verify on the matching surface. "Inconclusive" or wrong-surface is not a pass. Flag it. 6. Rebase into small, ordered commits. Stack follow-ups. Use the **sequence-verifiable-units** principle skill, building, verifying, and committing each small unit before the next. diff --git a/skills/poteto-mode/playbooks/hillclimb.md b/skills/poteto-mode/playbooks/hillclimb.md index ea3a3c4..52d8400 100644 --- a/skills/poteto-mode/playbooks/hillclimb.md +++ b/skills/poteto-mode/playbooks/hillclimb.md @@ -9,7 +9,7 @@ Core discipline: one change, one measurement, keep or revert. Never stack untest 3. Open the decision log via the **show-me-your-work** skill. A `decision.tsv`, one row per attempt: id, hypothesis, change, before, after, delta, tests, verdict (kept or reverted), note. Read it before each attempt. Keep it out of the tree (gitignored). 4. Ground each hypothesis in the architecture model from step 1, so it names a specific mechanism ("defer X off the boot path because it blocks first paint"), not "try memoizing something". 5. Loop, one hypothesis per iteration: - - Hand the change to a subagent using your configured `hillclimb` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning) with a tight scope. Supervise and review the diff rather than typing it (the **guard-the-context-window** principle skill). When several independent hypotheses are live, fan them to parallel subagents, each in its own worktree (the **separate-before-serializing-shared-state** principle skill). + - Hand the change to a subagent using your configured `hillclimb` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning) with a tight scope. Supervise and review the diff rather than typing it (the **guard-the-context-window** principle skill). When several independent hypotheses are live, fan them to parallel subagents, each in its own worktree (the **separate-before-serializing-shared-state** principle skill). - Measure before and after with the frozen harness, and run the regression gate. - Accept only when the metric moves past noise and the gate stays green. Otherwise revert the change in full. A tweak that "might help" is not kept. - One commit per accepted fix, staging only the files you changed (`git add `, never `-A`). Log the row either way, kept or reverted. diff --git a/skills/poteto-mode/playbooks/multi-phase-plan.md b/skills/poteto-mode/playbooks/multi-phase-plan.md index 262d468..197bdaf 100644 --- a/skills/poteto-mode/playbooks/multi-phase-plan.md +++ b/skills/poteto-mode/playbooks/multi-phase-plan.md @@ -10,7 +10,7 @@ 6. Run `node ${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/scripts/check-plan.mjs ` and fix every line it prints (the **encode-lessons-in-structure** principle skill). 7. Hand back. Post the plan path and the script's output, then stop. Execution starts on the operator's explicit go, under the execution playbook the plan names. -**Verification.** Tests alone are not sufficient verification. A PR is verified only when its unit, live, and perf boxes are all checked (the **prove-it-works** principle skill). That sentence is the verification rule. Every verification block opens with it. The live block is mandatory. Ten lanes on `gpt-5.6-luna` at the PR head drive the real surface through its control skill, per the **swarm** skill. Each lane is one box with a concrete scenario, the screenshot it saves, and its pass predicate. One lane is the **Regression lane against trunk.** It runs the same load-bearing scenario on trunk and head. If trunk does not have the feature, the lane records that fact and gates the behavior the diff adds plus the end state the user waits for instead of inventing a trunk result. The perf gate is dual-sided. Trunk and head must both produce the named metric. If trunk lacks the feature, also isolate the work the diff adds and set an absolute budget for that work plus the end-to-end state the user waits for. Do not claim a ratio between unlike scenarios. The perf block names the metric, the interleaved probe, the trunk baseline measured first, and the rule with the number that fails. A PR that changes an interaction is review-gated. The operator reviews it in chat with screenshots and a video before merge. A PR that changes no interaction writes `**Review gate.** None. is not review-gated.` and no boxes under it. +**Verification.** Tests alone are not sufficient verification. A PR is verified only when its unit, live, and perf boxes are all checked (the **prove-it-works** principle skill). That sentence is the verification rule. Every verification block opens with it. The live block is mandatory. Ten lanes on `gpt-6-luna` at the PR head drive the real surface through its control skill, per the **swarm** skill. Each lane is one box with a concrete scenario, the screenshot it saves, and its pass predicate. One lane is the **Regression lane against trunk.** It runs the same load-bearing scenario on trunk and head. If trunk does not have the feature, the lane records that fact and gates the behavior the diff adds plus the end state the user waits for instead of inventing a trunk result. The perf gate is dual-sided. Trunk and head must both produce the named metric. If trunk lacks the feature, also isolate the work the diff adds and set an absolute budget for that work plus the end-to-end state the user waits for. Do not claim a ratio between unlike scenarios. The perf block names the metric, the interleaved probe, the trunk baseline measured first, and the rule with the number that fails. A PR that changes an interaction is review-gated. The operator reviews it in chat with screenshots and a video before merge. A PR that changes no interaction writes `**Review gate.** None. is not review-gated.` and no boxes under it. **Control skill.** Pick it by surface. Browser, Electron, and web UIs use `control-ui`. CLIs and TUIs use `control-cli`. Native mobile uses whatever simulator-driving skill the repo has. A PR that touches two surfaces gets lanes on both. A surface with no control skill is a risk in Appendix C, and its live block still names how each lane drives it. @@ -98,7 +98,7 @@ Each live lane runs in its own isolated worktree at the PR head. Drive through ` - [ ] Run ``. -**Verify, live.** Tests alone are not sufficient verification. A PR is verified only when its unit, live, and perf boxes are all checked. Ten lanes on `gpt-5.6-luna` at the PR head, per the boot recipe. +**Verify, live.** Tests alone are not sufficient verification. A PR is verified only when its unit, live, and perf boxes are all checked. Ten lanes on `gpt-6-luna` at the PR head, per the boot recipe. - [ ] Lane 1. Regression lane against trunk. Run at trunk and head. If trunk lacks the feature, record that and gate . Save `.png`. Pass when . - [ ] Lane 2. Save `.png`. Pass when . diff --git a/skills/poteto-mode/playbooks/perf-issue.md b/skills/poteto-mode/playbooks/perf-issue.md index f8ad696..0722b46 100644 --- a/skills/poteto-mode/playbooks/perf-issue.md +++ b/skills/poteto-mode/playbooks/perf-issue.md @@ -13,7 +13,7 @@ - **Redundancy.** The wait hangs on one slow instance or attempt. Duplicate the work (replicas, hedged requests, speculative execution) and take the fastest result. The trace has to show the wait dominates and the system has headroom. - **Lazy evaluation.** Cost lands on results that are never used or not needed yet (eager init on the boot path, rendering offscreen items). Defer the work until first use. - **Scheduling.** The work must happen, but not during the interactive moment. Move it to where nobody is waiting: idle callbacks, a background warmup after boot, precompute before the user arrives, cleanup after the frame commits. The win is perceived latency, so measure the interactive path, not total work done. -3. Plan the fix from the trace. If it crosses a function boundary, `architect` first. Delegate implementation to a subagent using your configured `perf-issue` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning). Review the diff. Capture a post-fix trace. +3. Plan the fix from the trace. If it crosses a function boundary, `architect` first. Delegate implementation to a subagent using your configured `perf-issue` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning). Review the diff. Capture a post-fix trace. Apply the **sequence-verifiable-units** principle skill, verifying each attempt before trying the next. 4. Parse and compare the artifacts (JSON to sqlite, diff). "Inconclusive" or wrong-surface is not a pass. Flag it. 5. Cite the measurement in the PR. diff --git a/skills/poteto-mode/playbooks/refactoring.md b/skills/poteto-mode/playbooks/refactoring.md index 2f083f9..56dbb88 100644 --- a/skills/poteto-mode/playbooks/refactoring.md +++ b/skills/poteto-mode/playbooks/refactoring.md @@ -8,7 +8,7 @@ If the cleanup reveals a missing feature or a real bug, split it out and ship th 2. Name the structure the code is missing per **principle-model-the-domain**. Boring code stays when the shape is already clear and local. The reshape must delete branches or invalid states, not add indirection. 3. Name the target shape. State what the module layout, types, and call graph should be if built today (**principle-foundational-thinking**, **principle-redesign-from-first-principles**). If the target crosses a function boundary, run the **architect** skill for parallel design exploration of the shape before the move. 4. Subtract before you add. Delete dead code, collapse one-caller wrappers, drop redundant validators, and remove orphan references before introducing the new shape (**principle-subtract-before-you-add**). The smallest change that reaches the target shape ships (**principle-laziness-protocol**). A speculative cleanup that "might help" gets reverted. -5. Move in small behavior-preserving steps, each keeping the pin green. For API reshapes, migrate every caller and delete the old API in the same wave (**principle-migrate-callers-then-delete-legacy-apis**). No compatibility shims, no parallel old-and-new paths. Spot-check every rename against the actual files. Renames silently miss usages in strings, prose, and back-references. Delegate the mechanical edits to a subagent using your configured `refactoring` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning) with a specific scope (file paths, the names being moved, the behavior to hold). Review the diff yourself. +5. Move in small behavior-preserving steps, each keeping the pin green. For API reshapes, migrate every caller and delete the old API in the same wave (**principle-migrate-callers-then-delete-legacy-apis**). No compatibility shims, no parallel old-and-new paths. Spot-check every rename against the actual files. Renames silently miss usages in strings, prose, and back-references. Delegate the mechanical edits to a subagent using your configured `refactoring` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning) with a specific scope (file paths, the names being moved, the behavior to hold). Review the diff yourself. 6. Prove behavior is unchanged on the real artifact, not "it compiles" (**principle-prove-it-works**). For larger reshapes, run an equivalence check: a script that diffs old-vs-new outputs, a recorded baseline replayed against the new code, or a smoke run on the matching surface via the relevant control skill. Own the verification yourself. Do not trust a delegate's "looks good" summary. 7. Confirm the change is worth keeping. The success measure is reduced reader load (**principle-minimize-reader-load**). If the diff does not lower reader load somewhere, revert it. 8. Rebase into small ordered commits. A subtraction commit, then the reshape, then any follow-on cleanup. Shape them with the **sequence-verifiable-units** principle skill, so each behavior-preserving slice stays green before the next. Run **Opening a PR**. diff --git a/skills/poteto-mode/references/models.md b/skills/poteto-mode/references/models.md index 286cce7..26eec69 100644 --- a/skills/poteto-mode/references/models.md +++ b/skills/poteto-mode/references/models.md @@ -10,23 +10,23 @@ One line per role. Delete a line to fall back to the skill default. `inherit-parent` or `auto` as a value: the role runs on the parent chat model (omit `model`). Alias entries in a panel list still count toward its fan-out. -`` at ``: pass the slug as `model` and the effort as `reasoning_effort` on the collaboration agent. `claude-fable-5-1` entries run through `claude -p --model claude-fable-5-1 --effort `. +`` at ``: pass the slug as `model` and the effort as `reasoning_effort` on the collaboration agent. Claude entries run through `claude -p --model --effort `; `claude-opus-5-5` requires Claude Code 2.1.280 or newer. -- feature, refactoring: `gpt-5.6-sol` at `high` -- bug-fix: `gpt-5.6-sol` at `high` -- perf-issue: `gpt-5.6-sol` at `high` -- hillclimb: `gpt-5.6-sol` at `high` +- feature, refactoring: `gpt-6-sol` at `high` +- bug-fix: `gpt-6-sol` at `high` +- perf-issue: `gpt-6-sol` at `high` +- hillclimb: `gpt-6-sol` at `high` - judgment and prose: `gpt-6-astra` at `medium` - hardest tasks: `gpt-6-astra` at `high` -- how explorer: `gpt-5.6-luna` at `high` -- how explainer: `gpt-5.6-sol` at `high` -- why investigators: `gpt-5.6-luna` at `high` -- why synthesizer: `gpt-5.6-sol` at `high` -- reflect tooling: `gpt-5.6-sol` at `high` +- how explorer: `gpt-6-luna` at `high` +- how explainer: `gpt-6-sol` at `high` +- why investigators: `gpt-6-luna` at `high` +- why synthesizer: `gpt-6-sol` at `high` +- reflect tooling: `gpt-6-sol` at `high` - reflect judgment, divergent, synthesizer: `gpt-6-astra` at `medium` -- arena runners: `gpt-5.6-sol` at `high`, `gpt-5.6-terra` at `high`, `gpt-5.6-luna` at `high` -- arena cross-judge pool: `gpt-6-astra` at `medium`, `gpt-5.6-sol` at `high` -- swarm workers: `gpt-5.6-luna` at `high` -- architect runners: `gpt-5.6-sol` at `high`, `gpt-6-astra` at `low`, `claude-fable-5-1` at `high` -- interrogate reviewers: `gpt-6-astra` at `high`, `gpt-5.6-sol` at `high`, `claude-fable-5-1` at `xhigh` -- Comment Sicko: `gpt-5.6-luna` at `high` +- arena runners: `gpt-6-astra` at `medium`, `gpt-6-sol` at `high`, `gpt-5.6-sol` at `high`, `claude-opus-5-5` at `high`, `claude-fable-5-1` at `high` +- arena cross-judge pool: `gpt-6-astra` at `medium`, `gpt-6-sol` at `high` +- swarm workers: `gpt-6-luna` at `high` +- architect runners: `gpt-6-sol` at `high`, `gpt-6-astra` at `low`, `claude-fable-5-1` at `high` +- interrogate reviewers: `gpt-6-astra` at `high`, `gpt-6-sol` at `high`, `claude-fable-5-1` at `xhigh` +- Comment Sicko: `gpt-6-luna` at `high` diff --git a/skills/poteto-mode/references/poteto-agent.md b/skills/poteto-mode/references/poteto-agent.md index 70bd530..43e65ba 100644 --- a/skills/poteto-mode/references/poteto-agent.md +++ b/skills/poteto-mode/references/poteto-agent.md @@ -5,4 +5,4 @@ description: Routing instructions for `$poteto-mode` and any request for poteto' # Poteto subagent -You are operating as poteto-mode's full agent style. Use `gpt-5.6-sol` at high reasoning for implementation. Use the model explicitly assigned by a routed judgment or review skill for those roles. Always use standard mode. Never use fast mode or substitute another model. Read the `poteto-mode` skill's `SKILL.md` in full before doing any work, including its inline Principles index. Navigate to a leaf `principle-*` skill whenever you apply that principle. +You are operating as poteto-mode's full agent style. Use `gpt-6-sol` at high reasoning for implementation. Use the model explicitly assigned by a routed judgment or review skill for those roles. Always use standard mode. Never use fast mode or substitute another model. Read the `poteto-mode` skill's `SKILL.md` in full before doing any work, including its inline Principles index. Navigate to a leaf `principle-*` skill whenever you apply that principle. diff --git a/skills/poteto-mode/scripts/check-plan.mjs b/skills/poteto-mode/scripts/check-plan.mjs index c54f61f..bf43651 100644 --- a/skills/poteto-mode/scripts/check-plan.mjs +++ b/skills/poteto-mode/scripts/check-plan.mjs @@ -4,7 +4,7 @@ import process from "node:process"; const RULE = "Tests alone are not sufficient verification. A PR is verified only when its unit, live, and perf boxes are all checked."; -const LANES = "Ten lanes on `gpt-5.6-luna` at the PR head"; +const LANES = "Ten lanes on `gpt-6-luna` at the PR head"; const SUB_BLOCKS = [ "Depends on.", "Files.", diff --git a/skills/reflect/SKILL.md b/skills/reflect/SKILL.md index df762b5..a8360d2 100644 --- a/skills/reflect/SKILL.md +++ b/skills/reflect/SKILL.md @@ -32,7 +32,7 @@ One message, three agent calls, explicit `model:` and `reasoning_effort` on each | Lens | `model` | Prompt template | |---|---|---| | Judgment | your configured `reflect judgment` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-astra` at `medium` reasoning) | `references/judgment-reviewer.md` | -| Tooling | your configured `reflect tooling` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning) | `references/tooling-reviewer.md` | +| Tooling | your configured `reflect tooling` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning) | `references/tooling-reviewer.md` | | Divergent | your configured `reflect judgment` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-astra` at `medium` reasoning) | `references/divergent-reviewer.md` | Pass each template verbatim, substituting the transcript path or digest where marked. Reviewers return findings in the agent response body. diff --git a/skills/setup-pstack/SKILL.md b/skills/setup-pstack/SKILL.md index 73b6be5..420259e 100644 --- a/skills/setup-pstack/SKILL.md +++ b/skills/setup-pstack/SKILL.md @@ -53,26 +53,26 @@ One line per role. Delete a line to fall back to the skill default. `inherit-parent` or `auto` as a value: the role runs on the parent chat model (omit `model`). Alias entries in a panel list still count toward its fan-out. -`` at ``: pass the slug as `model` and the effort as `reasoning_effort` on the collaboration agent. `claude-fable-5-1` entries run through `claude -p --model claude-fable-5-1 --effort `. +`` at ``: pass the slug as `model` and the effort as `reasoning_effort` on the collaboration agent. Claude entries run through `claude -p --model --effort `; `claude-opus-5-5` requires Claude Code 2.1.280 or newer. -- feature, refactoring: `gpt-5.6-sol` at `high` -- bug-fix: `gpt-5.6-sol` at `high` -- perf-issue: `gpt-5.6-sol` at `high` -- hillclimb: `gpt-5.6-sol` at `high` +- feature, refactoring: `gpt-6-sol` at `high` +- bug-fix: `gpt-6-sol` at `high` +- perf-issue: `gpt-6-sol` at `high` +- hillclimb: `gpt-6-sol` at `high` - judgment and prose: `gpt-6-astra` at `medium` - hardest tasks: `gpt-6-astra` at `high` -- how explorer: `gpt-5.6-luna` at `high` -- how explainer: `gpt-5.6-sol` at `high` -- why investigators: `gpt-5.6-luna` at `high` -- why synthesizer: `gpt-5.6-sol` at `high` -- reflect tooling: `gpt-5.6-sol` at `high` +- how explorer: `gpt-6-luna` at `high` +- how explainer: `gpt-6-sol` at `high` +- why investigators: `gpt-6-luna` at `high` +- why synthesizer: `gpt-6-sol` at `high` +- reflect tooling: `gpt-6-sol` at `high` - reflect judgment, divergent, synthesizer: `gpt-6-astra` at `medium` -- arena runners: `gpt-5.6-sol` at `high`, `gpt-5.6-terra` at `high`, `gpt-5.6-luna` at `high` -- arena cross-judge pool: `gpt-6-astra` at `medium`, `gpt-5.6-sol` at `high` -- swarm workers: `gpt-5.6-luna` at `high` -- architect runners: `gpt-5.6-sol` at `high`, `gpt-6-astra` at `low`, `claude-fable-5-1` at `high` -- interrogate reviewers: `gpt-6-astra` at `high`, `gpt-5.6-sol` at `high`, `claude-fable-5-1` at `xhigh` -- Comment Sicko: `gpt-5.6-luna` at `high` +- arena runners: `gpt-6-astra` at `medium`, `gpt-6-sol` at `high`, `gpt-5.6-sol` at `high`, `claude-opus-5-5` at `high`, `claude-fable-5-1` at `high` +- arena cross-judge pool: `gpt-6-astra` at `medium`, `gpt-6-sol` at `high` +- swarm workers: `gpt-6-luna` at `high` +- architect runners: `gpt-6-sol` at `high`, `gpt-6-astra` at `low`, `claude-fable-5-1` at `high` +- interrogate reviewers: `gpt-6-astra` at `high`, `gpt-6-sol` at `high`, `claude-fable-5-1` at `xhigh` +- Comment Sicko: `gpt-6-luna` at `high` ``` ### 6. Confirm diff --git a/skills/swarm/SKILL.md b/skills/swarm/SKILL.md index f6d94b6..17e295a 100644 --- a/skills/swarm/SKILL.md +++ b/skills/swarm/SKILL.md @@ -21,7 +21,7 @@ Call `update_plan` with one entry per phase before launching anything. 1. State the done predicate and the artifact or report the swarm must return. 2. Choose the shape. Partition into slices, race N workers on identical briefs, or mix both. For a race or mixed shape, declare `first pass`, `rank all`, or `best-of` before spawning. 3. Set N from the user or derive it from the shape. N is total workers, not the Codex concurrency limit. -4. Pick the worker model from `swarm workers` in `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` when present. Otherwise use `gpt-5.6-luna` at `high` reasoning. For a model race, name each arm's model up front. +4. Pick the worker model from `swarm workers` in `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` when present. Otherwise use `gpt-6-luna` at `high` reasoning. For a model race, name each arm's model up front. 5. Give each worker its own writable output when it writes. ## Phase B: Fan out diff --git a/skills/why/SKILL.md b/skills/why/SKILL.md index 725715c..7fec99d 100644 --- a/skills/why/SKILL.md +++ b/skills/why/SKILL.md @@ -77,7 +77,7 @@ Aim for a complete **coverage map**, not a minimal one. Document the null, don't Launch all matching investigators concurrently so they run concurrently. Don't ask one agent to cover multiple MCPs. Subagent config (each): -- `model`: your configured `why investigators` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-luna` at `high` reasoning) +- `model`: your configured `why investigators` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-luna` at `high` reasoning) - Codex has no read-only switch for collaboration agents. Instruct every agent not to edit files, change repository state, or perform external writes. Each investigator gets: @@ -120,7 +120,7 @@ If your scope assessment suggests a single-commit trivial target where the PR de Spawn one synthesizer subagent: -- `model`: your configured `why synthesizer` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-5.6-sol` at `high` reasoning) +- `model`: your configured `why synthesizer` model from `${CODEX_HOME:-$HOME/.codex}/skills/poteto-mode/references/models.md` (default `gpt-6-sol` at `high` reasoning) - Codex has no read-only switch for collaboration agents; instruct the agent not to edit files, change repository state, or perform external writes. The synthesizer's quality check spot-verifies citations, which can require MCP access. Readonly/Ask mode strips MCPs and defeats that. The synthesizer gets: