no-mistakes(review): Label fast onboard partial maps

This commit is contained in:
Jeremy McSpadden
2026-07-03 11:31:29 -05:00
committed by Codesmith
parent 6f2c2c2fd6
commit 3e0dbf6cf4
2 changed files with 34 additions and 4 deletions

View File

@@ -38,14 +38,15 @@ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
Parse JSON fields: `planning_exists`, `project_exists`, `requirements_exists`,
`roadmap_exists`, `state_exists`, `has_existing_code`, `has_package_file`,
`is_brownfield`, `has_codebase_map`, `has_fast_codebase_map`,
`is_brownfield`, `fast_mode`, `has_codebase_map`, `has_fast_codebase_map`,
`codebase_map_files_present`, `missing_codebase_map_files`, `missing_fast_codebase_map_files`,
`has_docs_candidates`,
`doc_candidate_count`, `onboarding_summary_exists`, `text_mode`, `commit_docs`, `agents_installed`,
`missing_agents`, `has_git`, `git_worktree_root`, `in_nested_subdir`.
Set `FAST_MODE=fast_mode` from INIT.
Set `TEXT_MODE=true` if `--text` is present OR `text_mode` from INIT is true.
Set `CODEBASE_MAP_READY=has_fast_codebase_map` when `--fast` is present; otherwise set
Set `CODEBASE_MAP_READY=has_fast_codebase_map` when `FAST_MODE` is true; otherwise set
`CODEBASE_MAP_READY=has_codebase_map`.
**Text mode (`workflow.text_mode: true` in config or `--text` flag):** When `TEXT_MODE` is active, replace every `AskUserQuestion` call in this workflow with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available and would otherwise render as an inert code block.
@@ -225,6 +226,18 @@ If the user chooses to keep the existing summary, skip to Step 7 without writing
If `onboarding_summary_exists` is false or the user confirms an update, write the summary
using the template below.
Before rendering summary and final status, derive map status values:
- If `has_codebase_map` is true:
- `CODEBASE_MAP_SUMMARY_STATUS=.planning/codebase/ (complete)`
- `CODEBASE_MAP_FINAL_STATUS=(complete)`
- Else if `fast_mode && has_fast_codebase_map` is true:
- `CODEBASE_MAP_SUMMARY_STATUS=.planning/codebase/ (fast/partial-but-accepted codebase map)`
- `CODEBASE_MAP_FINAL_STATUS=(fast/partial-but-accepted; required fast files present)`
- Else:
- `CODEBASE_MAP_SUMMARY_STATUS=.planning/codebase/ (incomplete or skipped)`
- `CODEBASE_MAP_FINAL_STATUS=(incomplete or skipped; missing: {missing_codebase_map_files})`
Summary contents:
```markdown
@@ -239,7 +252,7 @@ Summary contents:
- Requirements: .planning/REQUIREMENTS.md
- Roadmap: .planning/ROADMAP.md
- State: .planning/STATE.md
- Codebase map: {has_codebase_map ? ".planning/codebase/ (complete)" : ".planning/codebase/ (incomplete or skipped)"}
- Codebase map: {CODEBASE_MAP_SUMMARY_STATUS}
## Codebase Map
@@ -252,6 +265,13 @@ Confirmed files:
- TESTING.md
- INTEGRATIONS.md
- CONCERNS.md
{else if fast_mode && has_fast_codebase_map}
Accepted fast map files:
- STACK.md
- INTEGRATIONS.md
- ARCHITECTURE.md
- STRUCTURE.md
Context strength: fast/partial-but-accepted codebase map; not all seven map files are present.
{else}
Present files: {codebase_map_files_present}
Missing files: {missing_codebase_map_files}
@@ -283,7 +303,7 @@ Print:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Created / confirmed / status:
- .planning/codebase/ {has_codebase_map ? "(complete)" : "(incomplete or skipped; missing: {missing_codebase_map_files})"}
- .planning/codebase/ {CODEBASE_MAP_FINAL_STATUS}
- .planning/PROJECT.md
- .planning/REQUIREMENTS.md {requirements_exists ? "(present)" : "(missing; onboarding incomplete)"}
- .planning/ROADMAP.md

View File

@@ -278,6 +278,16 @@ describe('/gsd:onboard command contract', () => {
/gsd_run --cwd "\$ONBOARDING_ROOT" query commit "docs: create onboarding summary" --files \.planning\/onboarding\/SUMMARY\.md/,
'workflow must commit the root-relative summary path from onboarding root',
);
assert.match(
content,
/CODEBASE_MAP_SUMMARY_STATUS=\.planning\/codebase\/ \(fast\/partial-but-accepted codebase map\)/,
'workflow summary must label fast accepted maps without implying a complete map',
);
assert.match(
content,
/CODEBASE_MAP_FINAL_STATUS=\(fast\/partial-but-accepted; required fast files present\)/,
'final status must distinguish complete maps from accepted fast maps',
);
assert.match(content, /overwrite|idempotent|do not overwrite/i, 'workflow must protect existing planning');
assert.ok(content.includes('requirements_exists'), 'workflow must parse requirements existence');
assert.match(content, /REQUIREMENTS\.md: \{requirements_exists \? "present" : "missing"\}/, 'workflow must report missing requirements in partial planning');