codecartographer-pi 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/.codecarto/GUIDE.md +30 -15
  2. package/.codecarto/README.md +3 -0
  3. package/.codecarto/findings/goal-synthesis/README.md +3 -0
  4. package/.codecarto/findings/goal-synthesis-finalize/SKILL.md +30 -0
  5. package/.codecarto/findings/goal-synthesis-propose/SKILL.md +24 -0
  6. package/.codecarto/findings/spec-merge/README.md +3 -0
  7. package/.codecarto/findings/spec-merge/SKILL.md +23 -0
  8. package/.codecarto/findings/vision-capture/README.md +3 -0
  9. package/.codecarto/findings/vision-capture/SKILL.md +26 -0
  10. package/.codecarto/inputs/vision.md +11 -0
  11. package/.codecarto/templates/merged-spec.md +58 -0
  12. package/.codecarto/templates/phase-handoff.yaml +22 -0
  13. package/.codecarto/templates/project-plan.md +70 -0
  14. package/.codecarto/templates/proposal.md +43 -0
  15. package/.codecarto/templates/vision.md +63 -0
  16. package/.codecarto/workflow/pipeline-synthesis.yaml +105 -0
  17. package/.codecarto/workflow/status.yaml +2 -0
  18. package/README.md +52 -6
  19. package/dist/core/completion.d.ts +6 -0
  20. package/dist/core/completion.js +127 -0
  21. package/dist/core/dashboard.js +19 -2
  22. package/dist/core/index.d.ts +2 -0
  23. package/dist/core/index.js +2 -0
  24. package/dist/core/pipeline.js +1 -0
  25. package/dist/core/prompts.d.ts +9 -3
  26. package/dist/core/prompts.js +37 -26
  27. package/dist/core/status.d.ts +7 -1
  28. package/dist/core/status.js +187 -2
  29. package/dist/core/synthesis.d.ts +31 -0
  30. package/dist/core/synthesis.js +140 -0
  31. package/dist/core/types.d.ts +29 -1
  32. package/dist/core/workspace.d.ts +3 -1
  33. package/dist/core/workspace.js +39 -3
  34. package/dist/core/yaml.js +24 -0
  35. package/dist/extensions/codecarto/auto-runner.d.ts +3 -1
  36. package/dist/extensions/codecarto/auto-runner.js +20 -68
  37. package/dist/extensions/codecarto/index.js +125 -11
  38. package/dist/mcp-server/server.js +24 -68
  39. package/package.json +3 -2
@@ -6,6 +6,8 @@ This is a structured reverse-engineering workspace embedded inside a repository.
6
6
 
7
7
  All CodeCartographer files live inside this `.codecarto/` folder. The source code is everything outside it.
8
8
 
9
+ **Synthesis exception.** When `workflow/status.yaml` selects `workflow/pipeline-synthesis.yaml`, this workspace is planning a new product rather than reverse-engineering the surrounding repository. Use `inputs/vision.md` and the read-only library paths supplied by the executable host. Do not treat the parent directory as source evidence for synthesis.
10
+
9
11
  Work in explicit phases. Do not try to do everything at once.
10
12
 
11
13
  ## Roles
@@ -76,9 +78,11 @@ Some files in this workspace are **read-only instructions** and must not be modi
76
78
  | Templates (read-only) | `templates/*.md` | Read only. Never modify. |
77
79
  | Pipeline definitions (read-only) | `workflow/pipeline*.yaml`, `workflow/VALIDATE.md` | Read only. Never modify. |
78
80
  | Source code (read-only) | `../` (everything outside `.codecarto/`) | Read only. Analyze but never modify. |
79
- | Workflow state (read-write) | `workflow/status.yaml` | Update to track progress. |
81
+ | Synthesis input (user-maintained) | `inputs/vision.md` | The user fills this before the synthesis pipeline starts. Implementing phases read it but do not rewrite the raw brief. |
82
+ | Workflow state (framework-owned) | `workflow/status.yaml` | Read to understand progress. Implementing sessions never edit it directly; completion applies a validated phase handoff under a lock. |
80
83
  | Findings (read-write) | `findings/<phase>/<primary-output>.md`, secondary output files | Create and update during phases. |
81
- | Closeouts (read-write, append-only) | `closeouts/<date>-<phase-or-module>.md`, `THREAD_LOG.md` | Each session writes a new closeout file; `THREAD_LOG.md` is an INDEX pointing to closeouts. |
84
+ | Phase handoff (read-write) | `scratch/handoffs/<phase>.yaml` | Implementing sessions propose state changes and closeout content here. The framework validates and applies them. |
85
+ | Closeouts (framework-owned) | `closeouts/<date>-<phase-or-module>.md`, `THREAD_LOG.md` | Completion writes or updates one canonical closeout and one idempotent index entry. |
82
86
  | Conventions (orchestrator-maintained) | `CONVENTIONS.md` | Cross-cutting patterns promoted to project-wide invariants. Implementing sessions propose; the orchestrator writes. |
83
87
  | Decisions (orchestrator-maintained, append-only) | `DECISIONS.md` | Numbered log of decisions that diverge from spec, prompt, or obvious-default. Appended at session close. |
84
88
  | Backlog (read-write) | `BACKLOG.md` | Deferred items with rationale. |
@@ -88,7 +92,7 @@ If you are uncertain whether a file should be modified, treat it as read-only.
88
92
 
89
93
  ## Pipeline Selection
90
94
 
91
- Six pipeline variants are available. Check the `pipeline` field in `workflow/status.yaml` to see which is active.
95
+ Seven pipeline variants are available. Check the `pipeline` field in `workflow/status.yaml` to see which is active.
92
96
 
93
97
  - If the field is **empty**, ask the user which scope to use.
94
98
  - If the field points to a **file that does not exist**, stop and ask the user to correct it. Do not guess or fall back to the default pipeline.
@@ -101,6 +105,7 @@ Six pipeline variants are available. Check the `pipeline` field in `workflow/sta
101
105
  | Defect scan | `workflow/pipeline-defect-scan.yaml` | architecture → defect-scan | Maintenance audit to surface latent problems |
102
106
  | Lite | `workflow/pipeline-lite.yaml` | architecture → contracts → protocols | Understanding behavior without porting plans |
103
107
  | Architecture only | `workflow/pipeline-architecture-only.yaml` | architecture | Quick structural overview |
108
+ | Synthesis | `workflow/pipeline-synthesis.yaml` | vision-capture → goal-synthesis-propose → spec-merge → goal-synthesis-finalize | Convert a user vision and explicitly confirmed library specs into a provenance-backed project plan; requires Pi or MCP |
104
109
 
105
110
  ## Evaluation Objective
106
111
 
@@ -119,6 +124,9 @@ Produce a reusable evaluation bundle for the repository. The bundle has two purp
119
124
  | Protocols and state | `findings/protocols/protocols-and-state.md` |
120
125
  | Reverse-engineering bundle | `findings/porting/reverse-engineering-bundle.md` |
121
126
  | Reimplementation spec | `findings/reimplementation-spec/reimplementation-spec.md` |
127
+ | Synthesis proposal | `findings/goal-synthesis/proposal.md` |
128
+ | Merged specification | `findings/spec-merge/merged-spec.md` |
129
+ | Evidence-backed project plan | `findings/goal-synthesis/project-plan.md` |
122
130
 
123
131
  Not all deliverables apply to every pipeline variant. Check your active pipeline YAML for which phases and outputs are included.
124
132
 
@@ -161,7 +169,7 @@ Before beginning a phase, estimate how much source material you need to read. Fo
161
169
  - Defer deep reads until the current phase actually needs them.
162
170
  - For long phases, update `scratch/checkpoints/<phase>.md` after each major subsystem or output section. Pi writes a phase-aware checkpoint automatically after phase compaction; other hosts should use `templates/phase-checkpoint.md` manually.
163
171
  - Every primary output must include `Coverage and limits`: inspected scope, skipped scope, evidence basis, known blind spots, and a `COMPLETE` or `PARTIAL` disposition.
164
- - If you are running low on context, finish the current section, write a PARTIAL validation, and document what remains in `open_questions` (truly unknown) or `carry_forward` (deferred to a specific later phase) in status.yaml. See "Open Questions vs Carry-Forward" below.
172
+ - If you are running low on context, finish the current section, write a PARTIAL validation, and document what remains in `open_questions` (truly unknown) or `carry_forward` (deferred to a specific later phase) in the phase handoff. See "Open Questions vs Carry-Forward" below.
165
173
 
166
174
  ### Synthesis compression boundary
167
175
 
@@ -177,8 +185,9 @@ For codebases over roughly 50 source files or 100K LOC, do not burn primary cont
177
185
 
178
186
  - **`open_questions`** — items that are *still genuinely unknown*. Need more evidence (a runtime test, a maintainer decision, a spec ruling). Not resolvable by any later phase in the current pipeline.
179
187
  - **`carry_forward`** — items that are deferred to a specific later phase because the current phase can't responsibly close them but the pipeline naturally will. Each entry has a target phase.
188
+ - **`post_pipeline`** — optional work after the active pipeline: spikes, amendments, deltas, maintainer rulings, or opinionated reruns. These items do not make pipeline completion partial and must not be disguised as carry-forward targets.
180
189
 
181
- Both lists carry structured entries. Recommended shape:
190
+ All three collections carry structured entries. Recommended phase-state shape:
182
191
 
183
192
  ```yaml
184
193
  open_questions:
@@ -192,9 +201,13 @@ carry_forward:
192
201
  target_phase: defect-scan
193
202
  description: The `loadConfig()` callsite returns `{}` on both ENOENT and parse-error — can't tell absent from corrupt.
194
203
  deferred_reason: framing this as a defect requires the defect-scan rubric; flagged here so defect-scan picks it up.
204
+ post_pipeline:
205
+ - id: post-runtime-1
206
+ kind: spike
207
+ description: Capture restart behavior against a packaged build after the pipeline is complete.
195
208
  ```
196
209
 
197
- `kind` is one of: `needs-runtime-test`, `needs-maintainer-decision`, `needs-spec-ruling`, `defer-to-phase`, `needs-fixture-capture`. The downstream phase scans `carry_forward` entries whose `target_phase` matches its own ID and either resolves them (deleting the entry) or re-defers (updating `target_phase`).
210
+ `kind` is one of: `needs-runtime-test`, `needs-maintainer-decision`, `needs-spec-ruling`, `defer-to-phase`, `needs-fixture-capture`, or a post-pipeline work kind such as `spike` or `amendment`. Every new `carry_forward.target_phase` must be an ID in the active pipeline. Every `post_pipeline` entry requires a stable ID. Open questions should carry a stable `id` (e.g. `q-loadconfig-ambiguity`); if omitted, the framework auto-assigns one. When a later phase resolves an open question, list its id in `open_question_closures` to remove it from all phases. The downstream phase records resolved carry-forward IDs in `carry_forward_closures`; completion removes those entries atomically.
198
211
 
199
212
  ## Phase Selection Logic
200
213
 
@@ -205,9 +218,9 @@ carry_forward:
205
218
  5. Load that phase's `skill_path` and all files listed in `required_reads`.
206
219
  6. Run the phase. Write output to `primary_output`.
207
220
  7. Run validation per `workflow/VALIDATE.md`. Append the validation block to the output.
208
- 8. Enforce completion rules: the primary output file must exist with a PASS or PASS WITH GAPS validation block, status.yaml must reflect completion, and THREAD_LOG.md must have a handoff entry.
221
+ 8. Write `scratch/handoffs/<phase>.yaml`, then run completion. The framework verifies the primary output and validation, applies the handoff to `status.yaml`, and maintains the closeout and `THREAD_LOG.md` entry.
209
222
 
210
- **Parallel phase warning:** Some phases share the same `depends_on` and can run concurrently (e.g., `contracts` and `protocols` both depend only on `architecture`). If two sessions update `status.yaml` at the same time, the second write will overwrite the first. When running parallel phases, update `status.yaml` carefully — read the file immediately before writing, and preserve the status of any phase completed by a sibling session.
223
+ **Parallel phases:** Some phases share the same `depends_on` and can run concurrently. Each session writes only its phase handoff; completion serializes canonical state changes with a filesystem lock so sibling phase state is preserved.
211
224
 
212
225
  ## Session Update Protocol
213
226
 
@@ -224,9 +237,9 @@ When a session starts:
224
237
  When a session finishes durable work:
225
238
 
226
239
  1. Run the validation step described in `workflow/VALIDATE.md`. Append a validation block to the output.
227
- 2. Update `workflow/status.yaml` (the single source of truth for progress): mark the phase status as `complete`, advance `current_phase` to the next pending phase, and update both `open_questions` and `carry_forward`. When all phases in the pipeline are complete, set `current_phase` to `complete`.
228
- 3. Record 2-3 key observations in `owner_notes` for the completed phase (e.g., row counts, notable decisions, scope of analysis).
229
- 4. Write a per-session closeout file at `closeouts/<YYYY-MM-DD>-<phase-or-module>.md` using `templates/closeout-template.md`. Append a one-line index entry to `THREAD_LOG.md` pointing at it.
240
+ 2. Write `scratch/handoffs/<phase>.yaml` with `schema_version: 1`, the exact `phase_id`, arrays for `owner_notes`, `open_questions`, `carry_forward`, `carry_forward_closures`, `open_question_closures`, `post_pipeline`, and `decisions`, plus `closeout_summary` and optional multiline `closeout_content`. Omitted arrays default to empty; malformed collection shapes fail completion.
241
+ 3. Record 2-3 key observations in the handoff's `owner_notes` (e.g., row counts, notable decisions, scope of analysis). Do not provide a canonical timestamp; the host clock owns timestamps.
242
+ 4. Run `/codecarto-complete` (or `codecarto_complete`). The framework atomically updates `workflow/status.yaml`, writes or updates one canonical closeout, and appends one idempotent `THREAD_LOG.md` entry. Do not edit those files directly.
230
243
  5. Store the durable output in the declared `findings/` path.
231
244
  6. If the session made cross-cutting decisions or discovered project-wide invariants, propose additions to `CONVENTIONS.md` (in the closeout's "Proposed Conventions" section) and `DECISIONS.md` (numbered entries in the closeout's "Decisions Beyond Prompt" section). The orchestrator promotes these to the canonical files.
232
245
 
@@ -243,9 +256,9 @@ This conversation produces inputs the synthesis phase actually needs (locked tar
243
256
 
244
257
  ## Guardrails
245
258
 
246
- These rules cannot be enforced by the template — they rely on the LLM following instructions. A future code-backed implementation should enforce them programmatically.
259
+ These rules combine framework enforcement with explicit agent discipline:
247
260
 
248
- 1. **Validation gate:** Never set a phase's status to `complete` in `status.yaml` if the validation block contains any FAIL result. Fix the output first, re-run validation, and only then mark complete. If the validation is PASS WITH GAPS, document the gaps in `open_questions` before marking complete.
261
+ 1. **Validation gate:** Completion refuses FAIL or MISSING validation. Fix the output first and re-run validation. If validation is PASS WITH GAPS, document the gaps in the handoff's `open_questions`.
249
262
  2. **Status recovery:** If `workflow/status.yaml` becomes malformed (bad YAML syntax, missing fields), do not guess at the intended state. Stop and ask the user to review the file. Compare against the phase outputs in `findings/` to reconstruct which phases are actually complete.
250
263
  3. **Output path verification:** After writing a phase's primary output, verify the file path matches the `primary_output` field in the active pipeline YAML. Do not write findings to a path that belongs to a different phase.
251
264
 
@@ -255,7 +268,7 @@ These rules cannot be enforced by the template — they rely on the LLM followin
255
268
  - Rough working notes go under `scratch/`.
256
269
  - The primary outputs are listed in the deliverables table above.
257
270
  - Secondary outputs are created only when needed, using `mode: append`.
258
- - Per-session closeouts go under `closeouts/<YYYY-MM-DD>-<phase-or-module>.md`. `THREAD_LOG.md` is an INDEX of one-line pointers to those closeouts, not the primary store.
271
+ - Completion owns `closeouts/<YYYY-MM-DD>-<phase-or-module>.md` and `THREAD_LOG.md`; implementing sessions supply closeout content through their phase handoff.
259
272
  - Cross-cutting patterns go in `CONVENTIONS.md`; numbered cross-cutting decisions go in `DECISIONS.md`. Both are orchestrator-maintained — implementing sessions propose in their closeout, the orchestrator promotes.
260
273
  - Do not store durable findings only in `THREAD_LOG.md`. The log is an index, not the primary artifact store.
261
274
 
@@ -282,7 +295,8 @@ your-repo/
282
295
  state-and-storage/ # (Optional) Extracted durable state notes.
283
296
  build-and-deploy/ # (Optional) Build pipeline and packaging notes.
284
297
  config-model/ # (Optional) Configuration inheritance and env behavior.
285
- scratch/ # Disposable analysis notes.
298
+ scratch/ # Disposable analysis notes plus framework handoffs/checkpoints.
299
+ handoffs/<phase>.yaml # Structured state/closeout proposal consumed by completion.
286
300
  templates/ # Output templates and log entry templates.
287
301
  skills/
288
302
  spec-delta-application/ # Post-pipeline skill: apply triaged spec deltas with citation discipline.
@@ -294,6 +308,7 @@ your-repo/
294
308
  pipeline-defect-scan.yaml # 2-phase (architecture + defect scan).
295
309
  pipeline-lite.yaml # 3-phase (no porting or reimpl).
296
310
  pipeline-architecture-only.yaml # 1-phase (architecture only).
311
+ pipeline-synthesis.yaml # 4-phase forward synthesis (Pi/MCP only).
297
312
  status.yaml # Per-project progress. Single source of truth.
298
313
  VALIDATE.md # Validation protocol. Run after every phase.
299
314
  closeouts/ # Per-session closeout files (replaces monolithic THREAD_LOG body).
@@ -36,4 +36,7 @@ pipeline: workflow/pipeline.yaml # 5-phase without defect
36
36
  pipeline: workflow/pipeline-defect-scan.yaml # 2-phase defect audit — remove contracts through reimplementation-spec
37
37
  pipeline: workflow/pipeline-lite.yaml # 3-phase understanding — remove defect-scan phases, porting, and reimplementation-spec
38
38
  pipeline: workflow/pipeline-architecture-only.yaml # 1-phase quick overview — keep only architecture
39
+ pipeline: workflow/pipeline-synthesis.yaml # 4-phase forward synthesis — vision + confirmed library specs → project plan (Pi/MCP only)
39
40
  ```
41
+
42
+ The synthesis pipeline is different from the analysis variants: it requires Pi or MCP, a configured non-empty CodeCartographer library, and a completed `inputs/vision.md`. It pauses after proposing candidate specs and will not merge or finalize until the user changes at least one proposal checkbox from `[ ]` to `[x]`.
@@ -0,0 +1,3 @@
1
+ # Goal Synthesis
2
+
3
+ The synthesis pipeline writes the human-confirmation proposal and final evidence-backed project plan here.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: finalize-evidence-backed-project-plan
3
+ description: Transform a confirmed product vision and merged reusable specifications into an executable project plan whose important decisions remain traceable.
4
+ ---
5
+
6
+ # Finalize Evidence-Backed Project Plan
7
+
8
+ Produce `findings/goal-synthesis/project-plan.md` using `templates/project-plan.md`.
9
+
10
+ Use `findings/spec-merge/merged-spec.md` as the default compression boundary. Deep-read a confirmed library specification only when the merged intermediate names a gap, unresolved conflict, or missing acceptance detail. Record any targeted deep reads in Coverage and limits.
11
+
12
+ Create a coherent build plan:
13
+
14
+ - define the first executable vertical slice,
15
+ - identify target components and stable public boundaries,
16
+ - break delivery into dependency-ordered work packages,
17
+ - give every work package an observable acceptance gate,
18
+ - preserve open conflicts and unknowns with owners or dispositions,
19
+ - state deliberate non-goals.
20
+
21
+ The provenance ledger is mandatory. Map every load-bearing architecture, scope, behavior, and sequencing decision to one of:
22
+
23
+ - an exact confirmed library reference and version,
24
+ - an exact product-vision section,
25
+ - an explicit synthesis decision, marked `strong inference`,
26
+ - an unresolved choice, marked `open question`.
27
+
28
+ Do not hide conflicts by averaging incompatible source behaviors. Prefer a clear disposition with rationale. A complete-looking plan with missing provenance must fail validation.
29
+
30
+ End with Coverage and limits and the validation table from the template.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: propose-synthesis-inputs
3
+ description: Rank reusable CodeCartographer library specifications against a captured product vision and create an explicit human confirmation gate.
4
+ ---
5
+
6
+ # Propose Synthesis Inputs
7
+
8
+ Produce `findings/goal-synthesis/proposal.md` using `templates/proposal.md`.
9
+
10
+ Read `findings/vision-capture/vision.md` first. Use the library index and entry paths supplied in the phase prompt. Start with metadata for all entries; deep-read a specification only when its headline, tags, or capabilities indicate a credible fit that metadata cannot resolve.
11
+
12
+ For each serious candidate:
13
+
14
+ - map its reusable capabilities to concrete vision needs,
15
+ - state the benefit of including it,
16
+ - identify likely conceptual conflicts, irrelevant surface details, and integration costs,
17
+ - identify vision needs no candidate covers,
18
+ - rank it relative to the other candidates.
19
+
20
+ Write every candidate row with an unchecked `[ ]` box. Never confirm on the user's behalf, including in auto mode. The user confirms by editing one or more boxes to `[x]` after reviewing the proposal.
21
+
22
+ On a re-run, preserve existing `[x]` selections unless the user explicitly changed them. Re-evaluate the proposal and mark validation PASS only when the shortlist is coherent; confirmation itself is enforced structurally by the next phase, not by optimistic prose.
23
+
24
+ Treat library entries as read-only. Do not merge them yet. End with Coverage and limits and the validation table from the template.
@@ -0,0 +1,3 @@
1
+ # Specification Merge
2
+
3
+ The synthesis pipeline writes its normalized, provenance-rich merge of confirmed library entries here as `merged-spec.md`.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: merge-confirmed-specifications
3
+ description: Normalize only human-confirmed reimplementation specifications into a provenance-rich, conflict-explicit intermediate for project planning.
4
+ ---
5
+
6
+ # Merge Confirmed Specifications
7
+
8
+ Produce `findings/spec-merge/merged-spec.md` using `templates/merged-spec.md`.
9
+
10
+ Read the product vision, proposal, and only the library entries identified as human-confirmed in the phase prompt. The runtime preflight has already verified that at least one proposal checkbox is `[x]`; do not broaden the selection yourself.
11
+
12
+ Merge by concept, not by original repository structure:
13
+
14
+ - normalize capabilities that use different names for the same behavior,
15
+ - preserve load-bearing invariants and externally observable acceptance behavior,
16
+ - distinguish reusable semantics from adapters and source-specific delivery surfaces,
17
+ - record each incompatibility in the conflict ledger,
18
+ - choose `adopt`, `adapt`, `defer`, or `reject` only when the evidence supports it,
19
+ - keep gaps against the vision visible rather than filling them with invented behavior.
20
+
21
+ Every load-bearing row must cite an exact library reference and version, such as `team/router@v2`, or an exact section of the vision. A merged claim without provenance is a validation failure.
22
+
23
+ Treat library entries as read-only. End with Coverage and limits and the validation table from the template.
@@ -0,0 +1,3 @@
1
+ # Vision Capture
2
+
3
+ The synthesis pipeline writes its bounded product vision here as `vision.md`.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: capture-product-vision
3
+ description: Convert a user's intended product into bounded outcomes, constraints, acceptance scenarios, assumptions, and non-goals before selecting reusable specifications.
4
+ ---
5
+
6
+ # Capture Product Vision
7
+
8
+ Produce `findings/vision-capture/vision.md` using `templates/vision.md`.
9
+
10
+ Treat user-stated intent as the primary evidence. Do not inspect or choose library entries in this phase; selection comes later so the available implementation ingredients do not distort the problem definition.
11
+
12
+ Capture:
13
+
14
+ - the specific audience and problem,
15
+ - desired user-visible outcomes,
16
+ - scope boundaries and deliberate non-goals,
17
+ - technical, operational, timeline, privacy, and compatibility constraints,
18
+ - measurable success criteria,
19
+ - black-box acceptance scenarios,
20
+ - assumptions and decisions that still require confirmation.
21
+
22
+ Do not invent missing product choices. If this phase is running without a sufficiently detailed user vision, use the current conversation and any explicitly supplied inputs, mark unsupported details as assumptions, and return `PASS WITH GAPS`. Record truly blocking choices as stable open-question IDs in the phase handoff.
23
+
24
+ Keep architecture preferences separate from required outcomes unless the user made them explicit. The next phases need freedom to compare multiple library specifications against the same neutral vision.
25
+
26
+ End with Coverage and limits and the validation table from the template.
@@ -0,0 +1,11 @@
1
+ # Synthesis vision brief
2
+
3
+ <!--
4
+ Replace this comment with a short description of:
5
+ - who the new product is for,
6
+ - the problem it should solve,
7
+ - the outcome you want,
8
+ - any hard constraints or non-goals.
9
+
10
+ The vision-capture phase will turn your brief into a structured, testable vision.
11
+ -->
@@ -0,0 +1,58 @@
1
+ # Confirmed Specification Merge
2
+
3
+ ## Confirmed inputs
4
+
5
+ | Reference | Version | Source path | Role in the merge |
6
+ |---|---|---|---|
7
+ | | | | |
8
+
9
+ ## Normalized capability model
10
+
11
+ | Capability | Required behavior | Invariants | Source references | Vision fit |
12
+ |---|---|---|---|---|
13
+ | | | | | |
14
+
15
+ ## Architecture ingredients
16
+
17
+ | Concept | Responsibility | Inputs and outputs | Constraints | Provenance |
18
+ |---|---|---|---|---|
19
+ | | | | | |
20
+
21
+ ## Conflict ledger
22
+
23
+ | ID | Sources in tension | Conflict | Disposition | Confidence |
24
+ |---|---|---|---|---|
25
+ | | | | adopt / adapt / defer / reject | observed / strong inference / open question |
26
+
27
+ ## Gaps against the vision
28
+
29
+ | Vision need | Missing or weak evidence | Plan consequence |
30
+ |---|---|---|
31
+ | | | |
32
+
33
+ ## Acceptance behavior inventory
34
+
35
+ | # | Behavior | Observable acceptance | Provenance |
36
+ |---|---|---|---|
37
+ | 1 | | | |
38
+
39
+ ## Coverage and limits
40
+
41
+ - Inspected scope:
42
+ - Skipped scope:
43
+ - Evidence basis: confirmed library specifications | vision | proposal
44
+ - Known blind spots:
45
+ - Coverage disposition: COMPLETE | PARTIAL
46
+
47
+ ## Validation
48
+
49
+ | # | Criterion | Result | Evidence |
50
+ |---|---|---|---|
51
+ | 1 | Only human-confirmed library entries are merged. | PASS / PARTIAL / FAIL | |
52
+ | 2 | Capabilities, invariants, constraints, and acceptance behavior are normalized by concept rather than copied by source structure. | PASS / PARTIAL / FAIL | |
53
+ | 3 | Conflicts, gaps, and chosen dispositions are explicit. | PASS / PARTIAL / FAIL | |
54
+ | 4 | Every load-bearing merged claim has a provenance reference. | PASS / PARTIAL / FAIL | |
55
+ | 5 | Coverage and limits name inspected scope, skipped scope, evidence basis, and blind spots. | PASS / PARTIAL / FAIL | |
56
+
57
+ **Validated by:** [session identifier or date]
58
+ **Overall:** PASS / PASS WITH GAPS / FAIL
@@ -0,0 +1,22 @@
1
+ # Phase handoff schema v1. Copy to scratch/handoffs/<phase-id>.yaml.
2
+ # The framework owns canonical timestamps, status.yaml, closeouts, and THREAD_LOG.md.
3
+ schema_version: 1
4
+ phase_id: <phase-id>
5
+ owner_notes: []
6
+ open_questions: []
7
+ carry_forward: []
8
+ carry_forward_closures: []
9
+ # Resolved open questions: their IDs are removed from all phases.
10
+ open_question_closures: []
11
+ # Work after the active pipeline: spikes, amendments, deltas, maintainer rulings,
12
+ # or opinionated reruns. Every entry requires a stable id.
13
+ post_pipeline: []
14
+ decisions: []
15
+ closeout_summary: ""
16
+ # Optional full closeout Markdown. YAML literal blocks are supported.
17
+ closeout_content: |-
18
+ # Closeout — <phase-id>
19
+
20
+ ## Summary
21
+
22
+ -
@@ -0,0 +1,70 @@
1
+ # Evidence-Backed Project Plan
2
+
3
+ ## Product definition
4
+
5
+ ## Scope
6
+
7
+ ### First executable slice
8
+
9
+ ### Subsequent increments
10
+
11
+ ### Non-goals
12
+
13
+ ## Target architecture
14
+
15
+ | Component | Responsibility | Public boundary | Owned state and invariants | Provenance |
16
+ |---|---|---|---|---|
17
+ | | | | | |
18
+
19
+ ## Work packages
20
+
21
+ | ID | Deliverable | Dependencies | Acceptance gate | Risk |
22
+ |---|---|---|---|---|
23
+ | WP-01 | | | | |
24
+
25
+ ## Implementation sequence
26
+
27
+ | Order | Work package | Why now | Exit evidence |
28
+ |---|---|---|---|
29
+ | 1 | | | |
30
+
31
+ ## Acceptance plan
32
+
33
+ | # | Scenario | Input or starting state | Observable result | Source |
34
+ |---|---|---|---|---|
35
+ | 1 | | | | |
36
+
37
+ ## Provenance ledger
38
+
39
+ <!-- This is the differentiating contract of the synthesis pipeline. Every load-bearing decision should map to a confirmed spec, the product vision, or an explicit synthesis decision. -->
40
+
41
+ | Decision ID | Plan decision | Source specification or vision section | Evidence level | Conflict status |
42
+ |---|---|---|---|---|
43
+ | D-01 | | | observed fact / strong inference / open question | none / resolved / open |
44
+
45
+ ## Conflict and unknowns register
46
+
47
+ | ID | Issue | Disposition or owner | Blocking work package |
48
+ |---|---|---|---|
49
+ | | | | |
50
+
51
+ ## Coverage and limits
52
+
53
+ - Inspected scope:
54
+ - Skipped scope:
55
+ - Evidence basis: vision | confirmed specifications | merged-spec | explicit synthesis decisions
56
+ - Known blind spots:
57
+ - Coverage disposition: COMPLETE | PARTIAL
58
+
59
+ ## Validation
60
+
61
+ | # | Criterion | Result | Evidence |
62
+ |---|---|---|---|
63
+ | 1 | The plan defines coherent product scope, architecture, work packages, dependencies, and acceptance gates. | PASS / PARTIAL / FAIL | |
64
+ | 2 | Each load-bearing plan decision is traceable through the provenance ledger. | PASS / PARTIAL / FAIL | |
65
+ | 3 | Conflicts and unknowns remain visible with explicit dispositions. | PASS / PARTIAL / FAIL | |
66
+ | 4 | The implementation sequence identifies an executable first slice. | PASS / PARTIAL / FAIL | |
67
+ | 5 | Coverage and limits name inspected scope, skipped scope, evidence basis, and blind spots. | PASS / PARTIAL / FAIL | |
68
+
69
+ **Validated by:** [session identifier or date]
70
+ **Overall:** PASS / PASS WITH GAPS / FAIL
@@ -0,0 +1,43 @@
1
+ # Synthesis Proposal
2
+
3
+ ## Vision fit summary
4
+
5
+ ## Candidate specifications
6
+
7
+ <!-- The first column is the human confirmation gate. Leave every candidate unchecked when first writing this proposal. The user changes selected rows from [ ] to [x]. Keep entry references exactly as shown in the phase prompt. -->
8
+
9
+ | Confirm | Library entry | Version | Vision fit | Reusable capabilities | Likely conflicts or costs |
10
+ |---|---|---|---|---|---|
11
+ | [ ] | `namespace/entry-slug` | v1 | | | |
12
+
13
+ ## Capability coverage
14
+
15
+ | Vision need | Candidate coverage | Gap or decision |
16
+ |---|---|---|
17
+ | | | |
18
+
19
+ ## Recommendation
20
+
21
+ ## Confirmation instructions
22
+
23
+ Review the candidates above. Change at least one `[ ]` to `[x]`, save this file, and then continue the pipeline. CodeCartographer will refuse to merge or finalize until a selection is explicitly confirmed.
24
+
25
+ ## Coverage and limits
26
+
27
+ - Inspected scope:
28
+ - Skipped scope:
29
+ - Evidence basis: library metadata | vision | targeted specification reads
30
+ - Known blind spots:
31
+ - Coverage disposition: COMPLETE | PARTIAL
32
+
33
+ ## Validation
34
+
35
+ | # | Criterion | Result | Evidence |
36
+ |---|---|---|---|
37
+ | 1 | Candidate library entries are ranked against explicit vision needs. | PASS / PARTIAL / FAIL | |
38
+ | 2 | Inclusion benefits, likely conflicts, and missing capabilities are stated for every candidate. | PASS / PARTIAL / FAIL | |
39
+ | 3 | At least one entry is presented with an unchecked human-confirmation box. | PASS / PARTIAL / FAIL | |
40
+ | 4 | Coverage and limits name inspected scope, skipped scope, evidence basis, and blind spots. | PASS / PARTIAL / FAIL | |
41
+
42
+ **Validated by:** [session identifier or date]
43
+ **Overall:** PASS / PASS WITH GAPS / FAIL
@@ -0,0 +1,63 @@
1
+ # Product Vision
2
+
3
+ ## Problem and audience
4
+
5
+ - Target audience:
6
+ - Problem to solve:
7
+ - Why existing approaches are insufficient:
8
+
9
+ ## Desired outcomes
10
+
11
+ | Outcome | User-visible evidence | Priority |
12
+ |---|---|---|
13
+ | | | P0 / P1 / P2 |
14
+
15
+ ## Product boundaries
16
+
17
+ ### In scope
18
+
19
+ ### Non-goals
20
+
21
+ ## Constraints
22
+
23
+ | Constraint | Source | Consequence |
24
+ |---|---|---|
25
+ | | user-stated / inferred | |
26
+
27
+ ## Success measures
28
+
29
+ | Measure | Target | How it will be observed |
30
+ |---|---|---|
31
+ | | | |
32
+
33
+ ## Acceptance scenarios
34
+
35
+ | # | Actor and starting state | Action | Observable outcome |
36
+ |---|---|---|---|
37
+ | 1 | | | |
38
+
39
+ ## Assumptions and unresolved decisions
40
+
41
+ | ID | Type | Statement | Resolution needed |
42
+ |---|---|---|---|
43
+ | | assumption / decision | | |
44
+
45
+ ## Coverage and limits
46
+
47
+ - Inspected scope:
48
+ - Skipped scope:
49
+ - Evidence basis: user vision | supplied documents | inference
50
+ - Known blind spots:
51
+ - Coverage disposition: COMPLETE | PARTIAL
52
+
53
+ ## Validation
54
+
55
+ | # | Criterion | Result | Evidence |
56
+ |---|---|---|---|
57
+ | 1 | The target audience, problem, outcomes, constraints, and non-goals are explicit. | PASS / PARTIAL / FAIL | |
58
+ | 2 | Success measures and acceptance scenarios are testable. | PASS / PARTIAL / FAIL | |
59
+ | 3 | Assumptions and unresolved decisions are separated from confirmed intent. | PASS / PARTIAL / FAIL | |
60
+ | 4 | Coverage and limits name inspected scope, skipped scope, evidence basis, and blind spots. | PASS / PARTIAL / FAIL | |
61
+
62
+ **Validated by:** [session identifier or date]
63
+ **Overall:** PASS / PASS WITH GAPS / FAIL