Use when a written FeatureForge design or architecture spec needs CEO or founder review before implementation planning, including scope expansion, selective expansion, hold-scope rigor, or scope reduction
_REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
_BRANCH_RAW=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo current)
[ -n "$_BRANCH_RAW" ] && [ "$_BRANCH_RAW" != "HEAD" ] || _BRANCH_RAW="current"
_BRANCH="$_BRANCH_RAW"
_FEATUREFORGE_INSTALL_ROOT="$HOME/.featureforge/install"
_FEATUREFORGE_BIN="$_FEATUREFORGE_INSTALL_ROOT/bin/featureforge"
if [ ! -x "$_FEATUREFORGE_BIN" ] && [ -f "$_FEATUREFORGE_INSTALL_ROOT/bin/featureforge.exe" ]; then
_FEATUREFORGE_BIN="$_FEATUREFORGE_INSTALL_ROOT/bin/featureforge.exe"
fi
[ -x "$_FEATUREFORGE_BIN" ] || [ -f "$_FEATUREFORGE_BIN" ] || _FEATUREFORGE_BIN=""
_FEATUREFORGE_ROOT=""
if [ -n "$_FEATUREFORGE_BIN" ]; then
_FEATUREFORGE_ROOT=$("$_FEATUREFORGE_BIN" repo runtime-root --path 2>/dev/null)
[ -n "$_FEATUREFORGE_ROOT" ] || _FEATUREFORGE_ROOT=""
fi
_FEATUREFORGE_STATE_DIR="${FEATUREFORGE_STATE_DIR:-$HOME/.featureforge}"
_TODOS_FORMAT=""
[ -n "$_FEATUREFORGE_ROOT" ] && [ -f "$_FEATUREFORGE_ROOT/review/TODOS-format.md" ] && _TODOS_FORMAT="$_FEATUREFORGE_ROOT/review/TODOS-format.md"
[ -z "$_TODOS_FORMAT" ] && [ -f "$_REPO_ROOT/review/TODOS-format.md" ] && _TODOS_FORMAT="$_REPO_ROOT/review/TODOS-format.md"
Before introducing a custom pattern, external service, concurrency primitive, auth/session flow, cache, queue, browser workaround, or unfamiliar fix pattern, do a short capability/landscape check first.
Use three lenses:
External search results are inputs, not answers. Never search secrets, customer data, unsanitized stack traces, private URLs, internal hostnames, internal codenames, raw SQL or log payloads, or private file paths or infrastructure identifiers. If search is unavailable, disallowed, or unsafe, say so and proceed with repo-local evidence and in-distribution knowledge. If safe sanitization is not possible, skip external search.
See $_FEATUREFORGE_ROOT/references/search-before-building.md.
Honor the active repo instruction chain from AGENTS.md, AGENTS.override.md, .github/copilot-instructions.md, and .github/instructions/*.instructions.md, including nested AGENTS.md and AGENTS.override.md files closer to the current working directory.
These review skills are public FeatureForge skills for Codex and GitHub Copilot local installs.
For every interactive user question, use this structure:
RECOMMENDATION: Choose [X] because [one-line reason]A) ... B) ... C) ...Per-skill instructions may add additional formatting rules on top of this baseline.
If contributor mode is enabled in FeatureForge config, file a field report only for featureforge itself, not the user's app or repository. Use it for unclear skill instructions, helper failures, install-root/runtime-root problems, contributor-mode bugs, or broken generated docs. Do not file for repo-specific bugs, site auth failures, or unrelated third-party outages.
Write ~/.featureforge/contributor-logs/{slug}.md with:
# {Title}
Hey featureforge team — ran into this while using /{skill-name}:
**Goal:** {what the user/agent was trying to do}
**What happened:** {what actually happened}
**Annoyance (1-5):** {1=meh, 3=friction, 5=blocker}
## Steps to reproduce
1. {step}
## Raw output
(wrap any error messages or unexpected output in a markdown code block)
**Date:** {YYYY-MM-DD} | **Version:** {featureforge version} | **Skill:** /{skill}
Then run:
mkdir -p ~/.featureforge/contributor-logs
if command -v open >/dev/null 2>&1; then
open ~/.featureforge/contributor-logs/{slug}.md
elif command -v xdg-open >/dev/null 2>&1; then
xdg-open ~/.featureforge/contributor-logs/{slug}.md >/dev/null 2>&1 || true
fi
Slug: lowercase, hyphens, max 60 chars (for example skill-trigger-missed). Skip if the file already exists. Max 3 reports per session. File inline, continue, and tell the user: "Filed featureforge field report: {title}"
docs/featureforge/specs/YYYY-MM-DD-<topic>-design.md.docs/featureforge/specs/ and review the newest matching design doc.featureforge:brainstorming.**Workflow State:** Draft | CEO Approved
**Spec Revision:** <integer>
**Last Reviewed By:** brainstorming | plan-ceo-review
Draft.brainstorming is only valid while the spec remains Draft. A CEO Approved spec must end with **Last Reviewed By:** plan-ceo-review.workflow sync.Protected-Branch Repo-Write Gate:
featureforge repo-safety check --intent write --stage featureforge:plan-ceo-review --task-id <current-spec-review> --path docs/featureforge/specs/YYYY-MM-DD-<topic>-design.md --write-target repo-file-write
--write-target approval-header-write.blocked, name the branch, the stage, and the blocking failure_class, then route to either a feature branch / featureforge:using-git-worktrees or explicit user approval for this exact review scope.featureforge repo-safety approve --stage featureforge:plan-ceo-review --task-id <current-spec-review> --reason "<explicit user approval>" --path docs/featureforge/specs/YYYY-MM-DD-<topic>-design.md --write-target repo-file-write
featureforge repo-safety check --intent write --stage featureforge:plan-ceo-review --task-id <current-spec-review> --path docs/featureforge/specs/YYYY-MM-DD-<topic>-design.md --write-target repo-file-write
approval-header-write before flipping **Workflow State:** or any other approval header on a protected branch.Draft until the review is fully resolved.**Workflow State:** CEO Approved and **Last Reviewed By:** plan-ceo-review.**Spec Revision:** starts at 1. If this review materially changes a previously approved spec, increment the revision and reset the spec to Draft until it is re-approved.featureforge:writing-plans.featureforge:writing-plans owns plan creation after approval. Do not draft a plan or offer implementation options from plan-ceo-review.The terminal state is invoking writing-plans.
Accelerated review is available only when the user explicitly requests accelerated or accelerator mode for the current CEO review.
Do not activate accelerated review from heuristics, vague wording like "make this fast", saved preferences, or agent-only judgment.
If the user does not explicitly request accelerated review, run the normal CEO review flow and keep the standard Step 0 mode selection unchanged.
Accelerated CEO review must process one canonical CEO section at a time through a section packet and explicit human section approval.
Use the existing CEO review sections defined in this skill as the canonical section boundaries. Accelerated review does not invent a separate section model or a separate workflow stage.
Use skills/plan-ceo-review/accelerated-reviewer-prompt.md when briefing the accelerated CEO reviewer subagent.
That reviewer prompt, together with review/review-accelerator-packet-contract.md, defines the required section-packet schema and keeps the reviewer limited to draft-only output.
In accelerated review, keep routine issues bundled inside the section packet. Break out only escalated high-judgment issues into direct human questions before section approval.
Persist accelerated CEO section packets under ~/.featureforge/projects/<slug>/....
Resume accelerated CEO review only from the last approved-and-applied section boundary.
If the source artifact fingerprint changes, treat saved accelerated CEO packets as stale and regenerate them before reuse.
Accelerator artifacts must use bounded retention rather than accumulate indefinitely.
Final explicit human approval remains unchanged. Accelerated review may speed up section handling, but it may not bypass the final approval gate for the written spec.
Accelerated CEO review must preserve required review outputs, including individual TODO and delight questions when they must remain human-owned.
Only the main review agent may write authoritative artifacts, apply approved patches, or change approval headers in accelerated CEO review.
You are not here to rubber-stamp this spec. You are here to make it extraordinary, catch every landmine before it explodes, and ensure that when this moves into planning, it does so at the highest possible standard.
But your posture depends on what the user needs:
Critical rule: In ALL modes, the user is 100% in control. Every scope change is an explicit opt-in via an interactive user question. Never silently add or remove scope. Once the user selects a mode, COMMIT to it. Do not silently drift toward a different mode. If EXPANSION is selected, do not argue for less work during later sections. If SELECTIVE EXPANSION is selected, surface expansions as individual decisions and do not silently include or exclude them. If REDUCTION is selected, do not sneak scope back in. Raise concerns once in Step 0. After that, execute the chosen mode faithfully.
Do NOT make any code changes. Do NOT start implementation. Your only job right now is to review the written spec with maximum rigor and the appropriate level of ambition.
rescue StandardError is a code smell. Call it out.TODOS.md or it doesn't exist.Use these to guide every recommendation:
Step 0 > system audit > error/rescue map > test diagram > failure modes > opinionated recommendations > everything else.
Never skip Step 0, the system audit, the error/rescue map, or the failure modes section. These are the highest-leverage outputs.
CEO approval is blocked when the written spec materially lacks any of these delivery-floor items:
Treat this Gate A checklist as the approval floor while keeping the exact header contract unchanged and the prose shape flexible.
Before doing anything else, run a system audit. This is not the spec review. It is the context you need to review the spec intelligently.
Run repo-appropriate commands such as:
if [ -z "$BASE_BRANCH" ]; then
echo "Missing BASE_BRANCH for the review audit. Set BASE_BRANCH explicitly before continuing instead of re-deriving it locally."
exit 1
fi
git fetch origin "$BASE_BRANCH" --quiet 2>/dev/null || true
git log --oneline -30
git diff --stat "origin/$BASE_BRANCH...HEAD" 2>/dev/null || git diff --stat "$BASE_BRANCH...HEAD" 2>/dev/null || git diff --stat
git stash list
rg -l "TODO|FIXME|HACK|XXX"
find . -type f -not -path "*/.git/*" | head -20
Do not use PR metadata or repo default-branch APIs as a fallback; keep the system audit locally derivable from repository state.
Then read AGENTS.md, AGENTS.override.md, .github/copilot-instructions.md, .github/instructions/*.instructions.md, TODOS.md, and any existing architecture docs. If this repo stores prompt, eval, or workflow conventions in project docs, read those too.
When reading TODOS.md, specifically:
TODOS.md to this spec's scope.Map:
FIXME or TODO comments in files this spec is likely to touch?Check the git log for this branch. If there are prior commits suggesting a previous review cycle, note what changed and whether the current spec re-touches those areas. Be more aggressive reviewing areas that were previously problematic. Recurring problem areas are architectural smells. Surface them.
Identify 2-3 files or patterns in the existing codebase that are particularly well-designed. Note them as style references for the review. Also note 1-2 patterns that are frustrating or poorly designed. These are anti-patterns to avoid repeating.
Analyze the spec. If it involves ANY of: new UI screens or pages, changes to existing UI components, user-facing interaction flows, frontend framework changes, user-visible state changes, mobile or responsive behavior, or design-system changes, note UI_SCOPE for Section 11.
If no UI scope is detected, say so explicitly and skip Section 11 later.
Report findings before proceeding to Step 0.
Run this after the system audit and before Step 0: Nuclear Scope Challenge + Mode Selection.
Landscape Snapshot when it exists and is still relevantLandscape Snapshot and Decision impact before approval0A. Premise Challenge, 0B. Existing Code Leverage, 0C. Dream State Mapping, and 0F. Mode SelectionIn accelerated CEO review, keep this content inside the existing Step 0 packet. It does not create a new packet type or a separate approval boundary.
Describe the ideal end state of this system 12 months from now. Does this spec move toward that state or away from it?
CURRENT STATE THIS SPEC 12-MONTH IDEAL
[describe] ---> [describe delta] ---> [describe target]
For SCOPE EXPANSION run all three:
For SELECTIVE EXPANSION run the HOLD SCOPE analysis first, then surface expansions:
TODOS.md C) Skip. Accepted items become spec scope for all remaining review sections. Rejected items go to "NOT in scope."For HOLD SCOPE run this:
For SCOPE REDUCTION run this:
For EXPANSION, SELECTIVE EXPANSION, and HOLD modes, think ahead to implementation. What decisions will need to be made during implementation that should be resolved NOW in the spec?
HOUR 1 (foundations): What does the implementer need to know?
HOUR 2-3 (core logic): What ambiguities will they hit?
HOUR 4-5 (integration): What will surprise them?
HOUR 6+ (polish/tests): What will they wish they'd planned for?
Surface these as questions for the user NOW, not as "figure it out later."
Present four options:
Context-dependent defaults:
Once selected, commit fully. Do not silently drift.
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
Evaluate and diagram:
EXPANSION and SELECTIVE EXPANSION additions:
SELECTIVE EXPANSION: If any accepted cherry-picks from Step 0D affect the architecture, evaluate their architectural fit here. Flag any that create coupling concerns or do not integrate cleanly.
Required ASCII diagram: full system architecture showing new components and their relationships to existing ones.
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
This is the section that catches silent failures. It is not optional.
For every new method, service, or codepath that can fail, fill in this table:
METHOD/CODEPATH | WHAT CAN GO WRONG | EXCEPTION CLASS
-------------------------|-----------------------------|-----------------
ExampleService#call | API timeout | TimeoutError
| API returns 429 | RateLimitError
| API returns malformed JSON | JSON::ParserError
| DB connection pool exhausted| ConnectionTimeoutError
| Record not found | RecordNotFound
-------------------------|-----------------------------|-----------------
EXCEPTION CLASS | RESCUED? | RESCUE ACTION | USER SEES
-------------------------|-----------|------------------------|------------------
TimeoutError | Y | Retry 2x, then raise | "Service temporarily unavailable"
RateLimitError | Y | Backoff + retry | Nothing (transparent)
JSON::ParserError | N <- GAP | -- | 500 error <- BAD
ConnectionTimeoutError | N <- GAP | -- | 500 error <- BAD
RecordNotFound | Y | Return nil, log warning| "Not found" message
Rules for this section:
rescue StandardError is ALWAYS a smell. Name the specific exceptions.rescue => e with only logger.error(e.message) is insufficient. Log the full context: what was being attempted, with what arguments, and for which user or request.STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
Security is not a sub-bullet of architecture. It gets its own section.
Evaluate:
For each finding: threat, likelihood, impact, and whether the spec mitigates it.
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
Trace data through the system and interactions through the UX with adversarial thoroughness.
Data Flow Tracing: For every new data flow, produce an ASCII diagram showing:
INPUT -> VALIDATION -> TRANSFORM -> PERSIST -> OUTPUT
| | | | |
v v v v v
[nil?] [invalid?] [exception?] [conflict?] [stale?]
[empty?][too long?] [timeout?] [dup key?] [partial?]
[wrong [wrong type?][OOM?] [locked?] [encoding?]
type?]
For each node: what happens on each shadow path? Is it tested?
Interaction Edge Cases: For every new user-visible interaction, evaluate:
INTERACTION | EDGE CASE | HANDLED? | HOW?
---------------------|------------------------|----------|--------
Form submission | Double-click submit | ? |
| Submit with stale CSRF | ? |
| Submit during deploy | ? |
Async operation | User navigates away | ? |
| Operation times out | ? |
| Retry while in-flight | ? |
List/table view | Zero results | ? |
| 10,000 results | ? |
| Results change mid-page| ? |
Background job | Job fails after 3 of | ? |
| 10 items processed | |
| Job runs twice | ? |
| Queue backs up 2 hours | ? |
Flag any unhandled edge case as a gap. For each gap, specify the fix.
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
Evaluate:
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
Make a complete diagram of every new thing this spec introduces:
NEW UX FLOWS:
[list each new user-visible interaction]
NEW DATA FLOWS:
[list each new path data takes through the system]
NEW CODEPATHS:
[list each new branch, condition, or execution path]
NEW BACKGROUND JOBS / ASYNC WORK:
[list each]
NEW INTEGRATIONS / EXTERNAL CALLS:
[list each]
NEW ERROR/RESCUE PATHS:
[list each - cross-reference Section 2]
For each item in the diagram:
Test ambition check for all modes:
Test pyramid check: many unit, fewer integration, few end-to-end. Or inverted?
Flakiness risk: flag any test depending on time, randomness, external services, or ordering.
Load and stress test requirements: for any new codepath called frequently or processing significant data.
For LLM or prompt changes, check the repo's prompt or evaluation docs. If this spec touches those patterns, state which eval suites must run, which cases should be added, and what baselines to compare against.
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
Evaluate:
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
New systems break. This section ensures you can see why.
Evaluate:
EXPANSION and SELECTIVE EXPANSION addition: What observability would make this feature a joy to operate? For SELECTIVE EXPANSION, include observability for any accepted cherry-picks.
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
Evaluate:
EXPANSION and SELECTIVE EXPANSION addition: What deploy infrastructure would make shipping this feature routine? For SELECTIVE EXPANSION, assess whether accepted cherry-picks change the deployment risk profile.
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
Evaluate:
EXPANSION and SELECTIVE EXPANSION additions:
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
This is the embedded design-intent pass. It is not a separate workflow stage.
Evaluate:
FEATURE | LOADING | EMPTY | ERROR | SUCCESS | PARTIAL
Required ASCII diagram: user flow showing screens, states, and transitions.
EXPANSION and SELECTIVE EXPANSION additions:
STOP. In normal review, use one interactive user question per issue. In accelerated review, keep routine issues in the section packet and break out only escalated high-judgment issues as direct human questions. Do NOT batch escalated issues. Recommend + WHY. If no issues or the fix is obvious, state what you'll do and move on. Do NOT proceed until the current section is resolved.
After all review sections are complete, optionally get an outside voice. This is informative by default. It becomes actionable only if the main reviewer explicitly adopts a finding and patches the authoritative spec body.
Use skills/plan-ceo-review/outside-voice-prompt.md when briefing the outside voice.
Tool order:
codex exec when available.cross-model only when the outside voice definitely uses a different model/provider than the main reviewer.fresh-context-subagent.codex exec is unavailable, use a fresh-context reviewer path and label the source as fresh-context-subagent.Outside Voice: unavailable.Outside voice rules:
Outside Voice: skipped.After review decisions are applied to the authoritative spec body, write or replace a single trailing summary block at the end of the spec:
## CEO Review Summary
**Review Status:** clear | issues_open
**Reviewed At:** <ISO-8601 UTC>
**Review Mode:** hold_scope | selective_expansion | expansion | scope_reduction
**Reviewed Spec Revision:** <integer>
**Critical Gaps:** <integer>
**UI Design Intent Required:** yes | no
**Outside Voice:** skipped | unavailable | cross-model | fresh-context-subagent
Summary write rules:
## CEO Review Summary section already exists, replace from that heading through the next ## heading or EOF, whichever comes first.Draft.Follow the Interactive User Question format above. Additional rules for spec reviews:
3A.List work considered and explicitly deferred, with one-line rationale each.
List existing code or flows that partially solve sub-problems and whether this spec reuses them.
Where this spec leaves the system relative to the 12-month ideal.
Complete table of every method that can fail, every exception class, rescued status, rescue action, and user impact.
CODEPATH | FAILURE MODE | RESCUED? | TEST? | USER SEES? | LOGGED?
---------|--------------|----------|-------|------------|--------
Any row with RESCUED=N, TEST=N, and USER SEES=Silent is a CRITICAL GAP.
Present each potential TODO as its own individual interactive user question. Never batch TODOs.
For each TODO, describe:
Then present options: A) Add to TODOS.md B) Skip C) Build it now in this PR instead of deferring.
Identify at least 5 bonus-chunk opportunities under 30 minutes each that would make users think "oh nice, they thought of that." In SELECTIVE EXPANSION mode, present each one as a cherry-pick candidate. Never batch them.
Produce all that apply:
List every ASCII diagram in files this spec touches. Are they still accurate?
+====================================================================+
| MEGA PLAN REVIEW — COMPLETION SUMMARY |
+====================================================================+
| Mode selected | EXPANSION / SELECTIVE / HOLD / REDUCTION |
| System Audit | [key findings] |
| Step 0 | [mode + key decisions] |
| Section 1 (Arch) | ___ issues found |
| Section 2 (Errors) | ___ error paths mapped, ___ GAPS |
| Section 3 (Security)| ___ issues found, ___ High severity |
| Section 4 (Data/UX) | ___ edge cases mapped, ___ unhandled |
| Section 5 (Quality) | ___ issues found |
| Section 6 (Tests) | Diagram produced, ___ gaps |
| Section 7 (Perf) | ___ issues found |
| Section 8 (Observ) | ___ gaps found |
| Section 9 (Deploy) | ___ risks flagged |
| Section 10 (Future) | Reversibility: _/5, debt items: ___ |
| Section 11 (Design) | ___ issues / SKIPPED (no UI scope) |
+--------------------------------------------------------------------+
| NOT in scope | written (___ items) |
| What already exists | written |
| Dream state delta | written |
| Error/rescue registry| ___ methods, ___ CRITICAL GAPS |
| Failure modes | ___ total, ___ CRITICAL GAPS |
| TODOS.md updates | ___ items proposed |
| Scope proposals | ___ proposed, ___ accepted, ___ deferred |
| Delight opportunities| ___ identified |
| Outside voice | skipped / unavailable / cross-model / fresh-context-subagent |
| CEO review summary | written |
| Diagrams produced | ___ (list types) |
| Stale diagrams found | ___ |
| Unresolved decisions | ___ (listed below) |
+====================================================================+
If any interactive user question goes unanswered, note it here. Never silently default.
3A.┌────────────────────────────────────────────────────────────────────────────────┐
│ MODE COMPARISON │
├─────────────┬──────────────┬──────────────┬──────────────┬────────────────────┤
│ │ EXPANSION │ SELECTIVE │ HOLD SCOPE │ REDUCTION │
├─────────────┼──────────────┼──────────────┼──────────────┼────────────────────┤
│ Scope │ Push UP │ Hold + offer │ Maintain │ Push DOWN │
│ Recommend │ Enthusiastic │ Neutral │ N/A │ N/A │
│ posture │ │ │ │ │
│ 10x check │ Mandatory │ Cherry-pick │ Optional │ Skip │
│ Platonic │ Yes │ No │ No │ No │
│ ideal │ │ │ │ │
│ Delight │ Opt-in │ Cherry-pick │ Note if seen │ Skip │
│ opps │ ceremony │ ceremony │ │ │
│ Complexity │ "Is it big │ "Is it right │ "Is it too │ "Is it the bare │
│ question │ enough?" │ + what else │ complex?" │ minimum?" │
│ │ │ is tempting"│ │ │
│ Taste │ Yes │ Yes │ No │ No │
│ calibration │ │ │ │ │
│ Temporal │ Full (hr 1-6)│ Full (hr 1-6)│ Key decisions│ Skip │
│ interrogate │ │ │ only │ │
│ Observ. │ "Joy to │ "Joy to │ "Can we │ "Can we see if │
│ standard │ operate" │ operate" │ debug it?" │ it's broken?" │
│ Deploy │ Infra as │ Safe deploy │ Safe deploy │ Simplest possible │
│ standard │ feature scope│ + cherry-pick│ + rollback │ deploy │
│ Error map │ Full + chaos │ Full + chaos │ Full │ Critical paths │
│ │ scenarios │ for accepted │ │ only │
│ Phase 2/3 │ Map it │ Map accepted │ Note it │ Skip │
│ planning │ │ cherry-picks │ │ │
│ Design │ "Inevitable" │ If UI scope │ If UI scope │ Skip │
│ (Sec 11) │ UI review │ detected │ detected │ │
└─────────────┴──────────────┴──────────────┴──────────────┴────────────────────┘