From ba4bab1034b3792ca77920da446cd20dde8dd19b Mon Sep 17 00:00:00 2001 From: Mikael Hugo Date: Sat, 2 May 2026 18:06:16 +0200 Subject: [PATCH] fix(sf): correct stale .sf milestone paths in prompts + ADR-impl absolute links prompts/parallel-research-slices.md step 3 told the dispatcher to verify research at `.sf/{{mid}}/`, but slice research files actually live at `.sf/milestones/{{mid}}/slices//-RESEARCH.md`. Step 3 verification could only ever fail. prompts/validate-milestone.md sent the three milestone-validation reviewer agents to wrong paths: - parentTrace pointed at `.sf/{{milestoneId}}/S0X-SUMMARY.md` (slice summaries actually live at `.sf/milestones/{{milestoneId}}/slices/S0X/`) - Reviewer A read `.sf/{{milestoneId}}/REQUIREMENTS.md` (the file is at project-level `.sf/REQUIREMENTS.md`) - Reviewer A scanned `.sf/{{milestoneId}}/` for slice SUMMARYs (wrong dir) - Reviewer C read `.sf/{{milestoneId}}/CONTEXT.md` (actual file is `.sf/milestones/{{milestoneId}}/{{milestoneId}}-CONTEXT.md`) Reviewers would either return false MISSING / FAIL verdicts or have to re-discover the layout. docs/dev/ADR-{008,009}-IMPLEMENTATION-PLAN.md "Related ADR" links pointed to absolute paths inside a contributor's old Mac (`/Users/jeremymcspadden/ Github/sf-2/...`). Replaced with sibling-file relative paths. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/dev/ADR-008-IMPLEMENTATION-PLAN.md | 2 +- docs/dev/ADR-009-IMPLEMENTATION-PLAN.md | 2 +- .../extensions/sf/prompts/parallel-research-slices.md | 2 +- src/resources/extensions/sf/prompts/validate-milestone.md | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/dev/ADR-008-IMPLEMENTATION-PLAN.md b/docs/dev/ADR-008-IMPLEMENTATION-PLAN.md index 7bbf7456f..901a949e1 100644 --- a/docs/dev/ADR-008-IMPLEMENTATION-PLAN.md +++ b/docs/dev/ADR-008-IMPLEMENTATION-PLAN.md @@ -1,6 +1,6 @@ # ADR-008 Implementation Plan -**Related ADR:** [ADR-008-sf-tools-over-mcp-for-provider-parity.md](/Users/jeremymcspadden/Github/sf-2/docs/ADR-008-sf-tools-over-mcp-for-provider-parity.md) +**Related ADR:** [ADR-008-sf-tools-over-mcp-for-provider-parity.md](./ADR-008-sf-tools-over-mcp-for-provider-parity.md) **Status:** Draft **Date:** 2026-04-09 diff --git a/docs/dev/ADR-009-IMPLEMENTATION-PLAN.md b/docs/dev/ADR-009-IMPLEMENTATION-PLAN.md index 2ac1363aa..f65c3ff4b 100644 --- a/docs/dev/ADR-009-IMPLEMENTATION-PLAN.md +++ b/docs/dev/ADR-009-IMPLEMENTATION-PLAN.md @@ -1,6 +1,6 @@ # ADR-009 Implementation Plan -**Related ADR:** [ADR-009-orchestration-kernel-refactor.md](/Users/jeremymcspadden/Github/sf-2/docs/dev/ADR-009-orchestration-kernel-refactor.md) +**Related ADR:** [ADR-009-orchestration-kernel-refactor.md](./ADR-009-orchestration-kernel-refactor.md) **Status:** Draft **Date:** 2026-04-14 **Target Window:** 8-10 waves (incremental, no big-bang rewrite) diff --git a/src/resources/extensions/sf/prompts/parallel-research-slices.md b/src/resources/extensions/sf/prompts/parallel-research-slices.md index 3162e648b..fed88350f 100644 --- a/src/resources/extensions/sf/prompts/parallel-research-slices.md +++ b/src/resources/extensions/sf/prompts/parallel-research-slices.md @@ -14,7 +14,7 @@ Dispatch ALL slices simultaneously using the `subagent` tool in **parallel mode* 1. Call `subagent` exactly once with the JSON payload below 2. Wait for ALL subagents to complete -3. Verify each slice's RESEARCH file was written (check the `.sf/{{mid}}/` directory) +3. Verify each slice's RESEARCH file was written (check the `.sf/milestones/{{mid}}/slices//` directory for `-RESEARCH.md`) 4. If any subagent failed to write its RESEARCH file, re-run it individually 5. Report which slices completed research and which (if any) failed diff --git a/src/resources/extensions/sf/prompts/validate-milestone.md b/src/resources/extensions/sf/prompts/validate-milestone.md index 6d2659b14..19dd12df9 100644 --- a/src/resources/extensions/sf/prompts/validate-milestone.md +++ b/src/resources/extensions/sf/prompts/validate-milestone.md @@ -36,8 +36,8 @@ artifacts, not just trust the SUMMARY prose. ``` subagent({ parentTrace: "Slice claims to audit:\n" + - "- S01: (.sf/{{milestoneId}}/S01-SUMMARY.md)\n" + - "- S02: (.sf/{{milestoneId}}/S02-SUMMARY.md)\n" + + "- S01: (.sf/milestones/{{milestoneId}}/slices/S01/S01-SUMMARY.md)\n" + + "- S02: (.sf/milestones/{{milestoneId}}/slices/S02/S02-SUMMARY.md)\n" + "- ...", tasks: [ { agent: "reviewer", task: "" }, @@ -49,7 +49,7 @@ subagent({ **Reviewer A — Requirements Coverage** Agent: `reviewer` -Prompt: "Review milestone {{milestoneId}} requirements coverage. Working directory: {{workingDirectory}}. Read `.sf/{{milestoneId}}/REQUIREMENTS.md` (or equivalent requirements file). For each requirement, check the slice SUMMARY files in `.sf/{{milestoneId}}/` to determine if it is: COVERED (clearly demonstrated), PARTIAL (mentioned but not fully demonstrated), or MISSING (no evidence). Output a markdown table with columns: Requirement | Status | Evidence. End with a one-line verdict: PASS if all covered, NEEDS-ATTENTION if partials exist, FAIL if any missing." +Prompt: "Review milestone {{milestoneId}} requirements coverage. Working directory: {{workingDirectory}}. Read `.sf/REQUIREMENTS.md` (project-level). For each requirement, check the slice SUMMARY files in `.sf/milestones/{{milestoneId}}/slices//-SUMMARY.md` to determine if it is: COVERED (clearly demonstrated), PARTIAL (mentioned but not fully demonstrated), or MISSING (no evidence). Output a markdown table with columns: Requirement | Status | Evidence. End with a one-line verdict: PASS if all covered, NEEDS-ATTENTION if partials exist, FAIL if any missing." **Reviewer B — Cross-Slice Integration** Agent: `reviewer` @@ -57,7 +57,7 @@ Prompt: "Review milestone {{milestoneId}} cross-slice integration. Working direc **Reviewer C — Assessment & Acceptance Criteria** Agent: `reviewer` -Prompt: "Review milestone {{milestoneId}} assessment evidence and acceptance criteria. Working directory: {{workingDirectory}}. Read `.sf/{{milestoneId}}/CONTEXT.md` for acceptance criteria. Check for ASSESSMENT files in each slice directory. Verify each acceptance criterion maps to either a passing assessment result or clear SUMMARY evidence. Then review the inlined milestone verification classes from planning. For each non-empty planned class, output a markdown table: Class | Planned Check | Evidence | Verdict. Use the exact class names `Contract`, `Integration`, `Operational`, and `UAT` whenever those classes are present. If no verification classes were planned, say that explicitly. Output two sections: `Acceptance Criteria` with a checklist `[ ] Criterion | Evidence`, and `Verification Classes` with the table. End with a one-line verdict: PASS if all criteria and verification classes are covered, NEEDS-ATTENTION if gaps exist." +Prompt: "Review milestone {{milestoneId}} assessment evidence and acceptance criteria. Working directory: {{workingDirectory}}. Read `.sf/milestones/{{milestoneId}}/{{milestoneId}}-CONTEXT.md` for acceptance criteria. Check for ASSESSMENT files in each slice directory. Verify each acceptance criterion maps to either a passing assessment result or clear SUMMARY evidence. Then review the inlined milestone verification classes from planning. For each non-empty planned class, output a markdown table: Class | Planned Check | Evidence | Verdict. Use the exact class names `Contract`, `Integration`, `Operational`, and `UAT` whenever those classes are present. If no verification classes were planned, say that explicitly. Output two sections: `Acceptance Criteria` with a checklist `[ ] Criterion | Evidence`, and `Verification Classes` with the table. End with a one-line verdict: PASS if all criteria and verification classes are covered, NEEDS-ATTENTION if gaps exist." ### Step 2 — Synthesize Findings