no-mistakes(review): fix onboard fast root anchoring

This commit is contained in:
Jeremy McSpadden
2026-07-03 11:06:45 -05:00
committed by Codesmith
parent 1797207280
commit b3555b103d
4 changed files with 85 additions and 20 deletions

View File

@@ -28,7 +28,7 @@ interface InitModule {
cmdInitPlanPhase(cwd: string, phase: string | undefined, raw: boolean, opts: Record<string, string | boolean | null>): void;
cmdInitNewProject(cwd: string, raw: boolean): void;
cmdInitNewMilestone(cwd: string, raw: boolean): void;
cmdInitOnboard(cwd: string, raw: boolean): void;
cmdInitOnboard(cwd: string, raw: boolean, opts?: Record<string, string | boolean | null>): void;
cmdInitQuick(cwd: string, name: string, raw: boolean): void;
cmdInitIngestDocs(cwd: string, raw: boolean): void;
cmdInitResume(cwd: string, raw: boolean): void;
@@ -72,7 +72,10 @@ function routeInitCommand({ init, args, cwd, raw, error }: RouteInitCommandOptio
},
'new-project': () => init.cmdInitNewProject(cwd, raw),
'new-milestone': () => init.cmdInitNewMilestone(cwd, raw),
onboard: () => init.cmdInitOnboard(cwd, raw),
onboard: () => {
const namedArgs = parseNamedArgs(args, [], ['fast']);
init.cmdInitOnboard(cwd, raw, { fast: namedArgs['fast'] });
},
quick: () => init.cmdInitQuick(cwd, args.slice(2).join(' '), raw),
'ingest-docs': () => init.cmdInitIngestDocs(cwd, raw),
resume: () => init.cmdInitResume(cwd, raw),

View File

@@ -109,6 +109,10 @@ const REQUIRED_CODEBASE_MAP_FILES = [
'INTEGRATIONS.md', 'CONCERNS.md',
];
const FAST_CODEBASE_MAP_FILES = [
'STACK.md', 'INTEGRATIONS.md', 'ARCHITECTURE.md', 'STRUCTURE.md',
];
const PLANNING_DOC_SEGMENTS = new Set([
'adr', 'adrs', 'prd', 'prds', 'spec', 'specs', 'rfc', 'rfcs',
]);
@@ -902,17 +906,29 @@ function cmdInitIngestDocs(cwd: string, raw: boolean): void {
output(withProjectRoot(cwd, result), raw);
}
function cmdInitOnboard(cwd: string, raw: boolean): void {
function cmdInitOnboard(
cwd: string,
raw: boolean,
options: Record<string, unknown> = {},
): void {
const config = loadConfig(cwd);
const codebaseMapFiles = listCodebaseMapFiles(cwd);
const missingCodebaseMapFiles = REQUIRED_CODEBASE_MAP_FILES.filter(
(file) => !codebaseMapFiles.includes(file),
);
const missingFastCodebaseMapFiles = FAST_CODEBASE_MAP_FILES.filter(
(file) => !codebaseMapFiles.includes(file),
);
const docCandidates = listPlanningDocCandidates(cwd);
const hasCode = hasCodeFilesInternal(cwd);
const hasPackageFile = hasPackageFileInternal(cwd);
const isBrownfield = hasCode || hasPackageFile;
const hasCodebaseMap = codebaseMapFiles.length === REQUIRED_CODEBASE_MAP_FILES.length;
const fastMode = options['fast'] === true;
const hasFastCodebaseMap = missingFastCodebaseMapFiles.length === 0;
const needsCodebaseMap = isBrownfield && (
fastMode ? !hasFastCodebaseMap : !hasCodebaseMap
);
const result: Record<string, unknown> = {
commit_docs: config.commit_docs,
@@ -929,11 +945,15 @@ function cmdInitOnboard(cwd: string, raw: boolean): void {
has_existing_code: hasCode,
has_package_file: hasPackageFile,
is_brownfield: isBrownfield,
needs_codebase_map: isBrownfield && !hasCodebaseMap,
fast_mode: fastMode,
needs_codebase_map: needsCodebaseMap,
has_codebase_map: hasCodebaseMap,
has_fast_codebase_map: hasFastCodebaseMap,
codebase_dir_exists: fs.existsSync(path.join(planningRoot(cwd), 'codebase')),
fast_codebase_map_files_required: FAST_CODEBASE_MAP_FILES,
codebase_map_files_present: codebaseMapFiles,
missing_codebase_map_files: missingCodebaseMapFiles,
missing_fast_codebase_map_files: missingFastCodebaseMapFiles,
has_docs_candidates: docCandidates.length > 0,
doc_candidate_count: docCandidates.length,