codecartographer-pi 0.1.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.
- package/.codecarto/BACKLOG.md +192 -0
- package/.codecarto/CHANGELOG-2026-05-02-feedback-pass.md +118 -0
- package/.codecarto/CONTRIBUTING.md +56 -0
- package/.codecarto/GUIDE.md +298 -0
- package/.codecarto/LICENSE +21 -0
- package/.codecarto/NEW_THREAD_BLURB.md +47 -0
- package/.codecarto/README.md +39 -0
- package/.codecarto/THREAD_LOG.md +39 -0
- package/.codecarto/closeouts/2026-05-02-framework-feedback-pass.md +111 -0
- package/.codecarto/findings/architecture/README.md +3 -0
- package/.codecarto/findings/architecture/SKILL.md +102 -0
- package/.codecarto/findings/build-and-deploy/.gitkeep +0 -0
- package/.codecarto/findings/config-model/.gitkeep +0 -0
- package/.codecarto/findings/contracts/README.md +3 -0
- package/.codecarto/findings/contracts/SKILL.md +89 -0
- package/.codecarto/findings/defect-scan/README.md +18 -0
- package/.codecarto/findings/defect-scan/SKILL.md +87 -0
- package/.codecarto/findings/defect-scan/passes/01-logic-and-correctness.md +50 -0
- package/.codecarto/findings/defect-scan/passes/02-error-handling.md +55 -0
- package/.codecarto/findings/defect-scan/passes/03-concurrency-and-resources.md +54 -0
- package/.codecarto/findings/defect-scan/passes/04-security-and-trust.md +62 -0
- package/.codecarto/findings/defect-scan/passes/05-api-contract-violations.md +57 -0
- package/.codecarto/findings/defect-scan/passes/06-config-and-environment.md +58 -0
- package/.codecarto/findings/defect-scan-mechanical/README.md +17 -0
- package/.codecarto/findings/defect-scan-mechanical/SKILL.md +60 -0
- package/.codecarto/findings/defect-scan-semantic/README.md +17 -0
- package/.codecarto/findings/defect-scan-semantic/SKILL.md +54 -0
- package/.codecarto/findings/porting/README.md +3 -0
- package/.codecarto/findings/porting/SKILL.md +52 -0
- package/.codecarto/findings/protocols/README.md +3 -0
- package/.codecarto/findings/protocols/SKILL.md +87 -0
- package/.codecarto/findings/public-surfaces/README.md +3 -0
- package/.codecarto/findings/reimplementation-spec/README.md +3 -0
- package/.codecarto/findings/reimplementation-spec/SKILL.md +66 -0
- package/.codecarto/findings/runtime-lifecycle/README.md +3 -0
- package/.codecarto/findings/state-and-storage/README.md +3 -0
- package/.codecarto/scratch/.gitkeep +0 -0
- package/.codecarto/skills/spec-delta-application/SKILL.md +102 -0
- package/.codecarto/templates/architecture-map.md +143 -0
- package/.codecarto/templates/behavioral-contracts.md +134 -0
- package/.codecarto/templates/closeout-template.md +85 -0
- package/.codecarto/templates/conventions-template.md +65 -0
- package/.codecarto/templates/decisions-template.md +82 -0
- package/.codecarto/templates/defect-fix-tracker.md +77 -0
- package/.codecarto/templates/defect-report.md +116 -0
- package/.codecarto/templates/deltas-applied.md +71 -0
- package/.codecarto/templates/mechanical-defects.md +104 -0
- package/.codecarto/templates/protocols-and-state.md +126 -0
- package/.codecarto/templates/reimplementation-spec-opinionated.md +183 -0
- package/.codecarto/templates/reimplementation-spec.md +148 -0
- package/.codecarto/templates/reverse-engineering-bundle.md +141 -0
- package/.codecarto/templates/semantic-defects.md +109 -0
- package/.codecarto/templates/thread-log-entry-template.md +27 -0
- package/.codecarto/workflow/VALIDATE.md +81 -0
- package/.codecarto/workflow/pipeline-architecture-only.yaml +38 -0
- package/.codecarto/workflow/pipeline-defect-scan.yaml +61 -0
- package/.codecarto/workflow/pipeline-full-with-audit.yaml +188 -0
- package/.codecarto/workflow/pipeline-full-with-deep-audit.yaml +227 -0
- package/.codecarto/workflow/pipeline-lite.yaml +100 -0
- package/.codecarto/workflow/pipeline.yaml +163 -0
- package/.codecarto/workflow/status.yaml +64 -0
- package/LICENSE +21 -0
- package/README.md +356 -0
- package/core/index.ts +11 -0
- package/core/pipeline.ts +175 -0
- package/core/prompts.ts +183 -0
- package/core/status.ts +155 -0
- package/core/types.ts +96 -0
- package/core/utils.ts +52 -0
- package/core/workspace.ts +81 -0
- package/core/yaml.ts +256 -0
- package/extensions/codecarto/index.ts +446 -0
- package/mcp-server/bin.mjs +7 -0
- package/mcp-server/server.ts +497 -0
- package/package.json +52 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Behavioral Contracts
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Output template for the contracts phase.
|
|
5
|
+
Fill in each section. Remove placeholder text. Keep the section headers.
|
|
6
|
+
Split analysis by user-facing surface.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Surfaces Covered
|
|
10
|
+
|
|
11
|
+
<!-- List which surface types this codebase exposes (CLI, TUI, web UI, API/SDK, bot, storage formats). -->
|
|
12
|
+
|
|
13
|
+
## Feature Contracts
|
|
14
|
+
|
|
15
|
+
<!--
|
|
16
|
+
For each significant feature, create a contract entry.
|
|
17
|
+
Group by surface type.
|
|
18
|
+
-->
|
|
19
|
+
|
|
20
|
+
### [Surface Type: e.g., CLI]
|
|
21
|
+
|
|
22
|
+
#### [Feature Name]
|
|
23
|
+
|
|
24
|
+
| Field | Value |
|
|
25
|
+
|---|---|
|
|
26
|
+
| **Feature** | |
|
|
27
|
+
| **Trigger or input** | |
|
|
28
|
+
| **Defaults** | |
|
|
29
|
+
| **Observable output** | |
|
|
30
|
+
| **Side effects** | |
|
|
31
|
+
| **Persisted state** | |
|
|
32
|
+
| **Error behavior** | |
|
|
33
|
+
| **Retry or recovery behavior** | |
|
|
34
|
+
| **Owner (layer/package)** | |
|
|
35
|
+
|
|
36
|
+
<!-- Repeat for each feature. -->
|
|
37
|
+
|
|
38
|
+
## High-Value Behaviors
|
|
39
|
+
|
|
40
|
+
<!--
|
|
41
|
+
Specific notes on these areas (if applicable to this codebase):
|
|
42
|
+
- Cancellation and abort handling
|
|
43
|
+
- Streaming and partial output
|
|
44
|
+
- Queueing or follow-up behavior
|
|
45
|
+
- Compaction and summarization
|
|
46
|
+
- Persistence and resume flows
|
|
47
|
+
- Tool execution and validation
|
|
48
|
+
-->
|
|
49
|
+
|
|
50
|
+
## Security and Authorization
|
|
51
|
+
|
|
52
|
+
<!--
|
|
53
|
+
If the system has auth or access control, document:
|
|
54
|
+
- Authentication method(s) (OAuth, API keys, session tokens, SSO)
|
|
55
|
+
- Authorization model (RBAC, ABAC, ACLs, capability-based)
|
|
56
|
+
- Trust boundaries (what is trusted vs untrusted input)
|
|
57
|
+
- Permission system (who can do what, how permissions are checked)
|
|
58
|
+
- Secret management (how tokens, keys, and credentials are stored and rotated)
|
|
59
|
+
- Session security (expiration, refresh, invalidation)
|
|
60
|
+
- CORS, CSP, or other web security policies (if applicable)
|
|
61
|
+
|
|
62
|
+
Skip this section if the system has no auth model (e.g., a pure library or CLI tool).
|
|
63
|
+
-->
|
|
64
|
+
|
|
65
|
+
## Configuration Model
|
|
66
|
+
|
|
67
|
+
<!--
|
|
68
|
+
How does configuration flow through the system?
|
|
69
|
+
- Config sources and precedence (env vars > config file > defaults)
|
|
70
|
+
- Config file format and location
|
|
71
|
+
- Feature flags and how they're toggled
|
|
72
|
+
- Environment-specific overrides (dev, staging, prod)
|
|
73
|
+
- Config validation and error handling for bad config
|
|
74
|
+
|
|
75
|
+
If the config model is complex, write detailed notes to the secondary output
|
|
76
|
+
at findings/config-model/config-model.md instead.
|
|
77
|
+
-->
|
|
78
|
+
|
|
79
|
+
## Doc/Test Conflicts
|
|
80
|
+
|
|
81
|
+
<!-- Any cases where documentation and test behavior disagree. -->
|
|
82
|
+
|
|
83
|
+
## Black-Box Acceptance List
|
|
84
|
+
|
|
85
|
+
<!--
|
|
86
|
+
Scenario-style checks that another implementation can run without referencing the source.
|
|
87
|
+
Use concrete preconditions and expected outcomes.
|
|
88
|
+
-->
|
|
89
|
+
|
|
90
|
+
| # | Scenario | Precondition | Action | Expected Outcome |
|
|
91
|
+
|---|----------|--------------|--------|------------------|
|
|
92
|
+
| 1 | | | | |
|
|
93
|
+
|
|
94
|
+
## Open Questions
|
|
95
|
+
|
|
96
|
+
<!-- Items that are still genuinely unknown — need a runtime test, maintainer decision, or spec ruling.
|
|
97
|
+
NOT items deferred to a later phase in this pipeline (those go in Carry-Forward).
|
|
98
|
+
Each entry: { id, kind, description, deferred_reason }. See workflow/status.yaml schema. -->
|
|
99
|
+
|
|
100
|
+
| ID | Kind | Description | Deferred Reason |
|
|
101
|
+
|---|---|---|---|
|
|
102
|
+
| | | | |
|
|
103
|
+
|
|
104
|
+
## Carry-Forward
|
|
105
|
+
|
|
106
|
+
<!-- Items deferred to a specific later phase whose rubric is the right place to close them.
|
|
107
|
+
Common targets from contracts: protocols (wire-format details), porting (synthesis-level resolution).
|
|
108
|
+
Each entry: { id, kind: defer-to-phase, target_phase, description, deferred_reason }.
|
|
109
|
+
Mirror these into workflow/status.yaml under this phase's carry_forward list. -->
|
|
110
|
+
|
|
111
|
+
| ID | Target Phase | Description | Deferred Reason |
|
|
112
|
+
|---|---|---|---|
|
|
113
|
+
| | | | |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Validation
|
|
118
|
+
|
|
119
|
+
<!-- Fill in this table per workflow/VALIDATE.md.
|
|
120
|
+
IMPORTANT: The rows below must match the completion_criteria in your ACTIVE pipeline YAML.
|
|
121
|
+
The default rows below match the full, full-with-audit, and full-with-deep-audit pipelines (6 criteria).
|
|
122
|
+
For pipeline-lite.yaml (5 criteria): DELETE row 3 (security) — that criterion is not in the lite pipeline. -->
|
|
123
|
+
|
|
124
|
+
| # | Criterion | Result | Evidence |
|
|
125
|
+
|---|-----------|--------|----------|
|
|
126
|
+
| 1 | User-facing surfaces are split by surface type. | PASS / PARTIAL / FAIL | |
|
|
127
|
+
| 2 | Feature contracts record trigger, defaults, outputs, side effects, persisted state, error behavior, and recovery behavior. | PASS / PARTIAL / FAIL | |
|
|
128
|
+
| 3 | Security and authorization model is documented (if applicable). | PASS / PARTIAL / FAIL | |
|
|
129
|
+
| 4 | Contract ownership is mapped back to a layer or package. | PASS / PARTIAL / FAIL | |
|
|
130
|
+
| 5 | A black-box acceptance list is included. | PASS / PARTIAL / FAIL | |
|
|
131
|
+
| 6 | Findings are marked with evidence levels. | PASS / PARTIAL / FAIL | |
|
|
132
|
+
|
|
133
|
+
**Validated by:** [session identifier or date]
|
|
134
|
+
**Overall:** PASS / PASS WITH GAPS / FAIL
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Closeout — <YYYY-MM-DD> — <phase-or-module>
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Per-session closeout file. Place at: closeouts/<YYYY-MM-DD>-<phase-or-module>.md
|
|
5
|
+
THREAD_LOG.md gets a one-line index entry pointing here.
|
|
6
|
+
|
|
7
|
+
This pattern replaces the monolithic THREAD_LOG.md body. Per-session files
|
|
8
|
+
scale forever, are individually read-budget-cheap, and avoid the heredoc-vs-edit
|
|
9
|
+
sync risks that bite append-to-large-file workflows.
|
|
10
|
+
|
|
11
|
+
Fill every section that applies. Delete sections that don't.
|
|
12
|
+
-->
|
|
13
|
+
|
|
14
|
+
## Summary
|
|
15
|
+
|
|
16
|
+
<!-- Two-to-four sentences. What did this session do, and what is the next session's starting point? -->
|
|
17
|
+
|
|
18
|
+
## Files Touched
|
|
19
|
+
|
|
20
|
+
<!-- Group by add/modify/delete. List paths relative to repo root. -->
|
|
21
|
+
|
|
22
|
+
- **Added:**
|
|
23
|
+
- **Modified:**
|
|
24
|
+
- **Deleted:**
|
|
25
|
+
|
|
26
|
+
## Tests / Gates
|
|
27
|
+
|
|
28
|
+
<!-- Whatever the project's "all gates green" set is. Honest reporting only. -->
|
|
29
|
+
|
|
30
|
+
| Gate | Result | Notes |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| `bun install` | | |
|
|
33
|
+
| `tsc --noEmit` | | |
|
|
34
|
+
| `oxlint` | | |
|
|
35
|
+
| `bun test` | | |
|
|
36
|
+
|
|
37
|
+
## Decisions Beyond Prompt
|
|
38
|
+
|
|
39
|
+
<!-- Cross-cutting decisions made this session that diverged from spec, prompt, or obvious-default.
|
|
40
|
+
These become numbered entries in DECISIONS.md when the orchestrator promotes them.
|
|
41
|
+
Format each entry: <one-liner> | <rationale, ~one paragraph>. -->
|
|
42
|
+
|
|
43
|
+
- **D???** | <one-liner> | <rationale>
|
|
44
|
+
|
|
45
|
+
## Proposed Conventions
|
|
46
|
+
|
|
47
|
+
<!-- Cross-cutting patterns this session reached for that may generalize.
|
|
48
|
+
The orchestrator promotes these to CONVENTIONS.md when a third independent session
|
|
49
|
+
reaches for the same pattern (or when the orchestrator confirms generalization sooner).
|
|
50
|
+
Format: title + Why + How to apply. -->
|
|
51
|
+
|
|
52
|
+
### C? <Title>
|
|
53
|
+
|
|
54
|
+
**Why:**
|
|
55
|
+
|
|
56
|
+
**How to apply:**
|
|
57
|
+
|
|
58
|
+
## Open Questions Left Behind
|
|
59
|
+
|
|
60
|
+
<!-- Items that are still genuinely unknown after this session.
|
|
61
|
+
Mirror these into workflow/status.yaml under the relevant phase's open_questions. -->
|
|
62
|
+
|
|
63
|
+
| ID | Kind | Description | Deferred Reason |
|
|
64
|
+
|---|---|---|---|
|
|
65
|
+
| | | | |
|
|
66
|
+
|
|
67
|
+
## Carry-Forward Routed
|
|
68
|
+
|
|
69
|
+
<!-- Items deferred to a specific later phase.
|
|
70
|
+
Mirror these into workflow/status.yaml under the relevant phase's carry_forward. -->
|
|
71
|
+
|
|
72
|
+
| ID | Target Phase | Description | Deferred Reason |
|
|
73
|
+
|---|---|---|---|
|
|
74
|
+
| | | | |
|
|
75
|
+
|
|
76
|
+
## Framework Feedback (optional)
|
|
77
|
+
|
|
78
|
+
<!-- If this session encountered friction with the framework itself, write a short note here.
|
|
79
|
+
Promote to a separate file under .codecarto/feedback/ (create the directory if needed) if the note
|
|
80
|
+
is substantial. Closing the loop on the framework is itself a CodeCarto-style activity — see GUIDE.md. -->
|
|
81
|
+
|
|
82
|
+
## Next Session Pointer
|
|
83
|
+
|
|
84
|
+
<!-- One paragraph: what should the next session pick up first? Cite specific files, status.yaml entries,
|
|
85
|
+
or carry_forward IDs. The next session reads this as part of pre-flight. -->
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Conventions
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Project-level skeleton. Copy this to `.codecarto/CONVENTIONS.md` (one level up from templates/)
|
|
5
|
+
the first time the orchestrator promotes a convention. Then add entries as they accumulate.
|
|
6
|
+
|
|
7
|
+
This file holds cross-cutting patterns that have been promoted to project-wide invariants.
|
|
8
|
+
Every new session reads this file and either honors these conventions or documents why it
|
|
9
|
+
diverges.
|
|
10
|
+
|
|
11
|
+
This file is **orchestrator-maintained**. Implementing sessions should not edit it without
|
|
12
|
+
explicit invitation; they propose additions in their session closeout and the orchestrator
|
|
13
|
+
promotes them.
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
Cross-cutting patterns promoted to project-wide invariants. Every session reads this file at start
|
|
17
|
+
and either honors these conventions or documents why it diverges.
|
|
18
|
+
|
|
19
|
+
This file is **orchestrator-maintained**. Implementing sessions propose additions in their
|
|
20
|
+
closeout's "Proposed Conventions" section; the orchestrator promotes them here.
|
|
21
|
+
|
|
22
|
+
## How conventions get added
|
|
23
|
+
|
|
24
|
+
A new entry lands here when ONE of the following holds:
|
|
25
|
+
|
|
26
|
+
1. **Three independent sessions** reach for the same pattern (the "lift if it generalizes" rule
|
|
27
|
+
applied to conventions themselves), OR
|
|
28
|
+
2. **One session** explicitly promotes a pattern in its closeout report and the orchestrator
|
|
29
|
+
confirms it generalizes, OR
|
|
30
|
+
3. **The spec or framework feedback corpus** identifies a project-wide invariant that future
|
|
31
|
+
implementing sessions need to know about.
|
|
32
|
+
|
|
33
|
+
The orchestrator owns this file. Implementing sessions propose; orchestrator promotes.
|
|
34
|
+
|
|
35
|
+
## Entry shape
|
|
36
|
+
|
|
37
|
+
Each convention is a numbered section (`## C<NN>. <Title>`) with three required parts:
|
|
38
|
+
|
|
39
|
+
- **Body** — the rule itself, in prose. May include a code block for shape contracts.
|
|
40
|
+
- **Why:** — the reason the rule exists. Often a past incident or a defect class the rule
|
|
41
|
+
prevents. Future maintainers judging edge cases need to know *why* to judge whether the rule
|
|
42
|
+
applies.
|
|
43
|
+
- **How to apply:** — when and where the rule kicks in. Should answer "is this case in scope?"
|
|
44
|
+
|
|
45
|
+
Optional:
|
|
46
|
+
- **Current implementers:** — files/modules that already follow the rule. Useful as worked examples.
|
|
47
|
+
- **Source:** — the closeout entry where the orchestrator promoted this convention.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## C01. <Title>
|
|
52
|
+
|
|
53
|
+
<!-- Lead with the rule itself. -->
|
|
54
|
+
|
|
55
|
+
**Why:**
|
|
56
|
+
|
|
57
|
+
**How to apply:**
|
|
58
|
+
|
|
59
|
+
**Current implementers:**
|
|
60
|
+
|
|
61
|
+
**Source:**
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
<!-- Repeat the C<NN> block for each convention. Number sequentially. -->
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Decisions
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Project-level skeleton. Copy this to `.codecarto/DECISIONS.md` (one level up from templates/)
|
|
5
|
+
the first time the orchestrator promotes a decision. Then add entries as they accumulate.
|
|
6
|
+
|
|
7
|
+
This file is an append-only numbered log of cross-cutting decisions made during the project
|
|
8
|
+
that diverge from spec text, prompt direction, or the obvious-default. Each entry is a
|
|
9
|
+
one-liner with a back-reference to the closeout where the decision was made and the rationale
|
|
10
|
+
lives.
|
|
11
|
+
|
|
12
|
+
This file is **append-only and orchestrator-maintained**. Every implementing session's
|
|
13
|
+
"Decisions Beyond Prompt" section in the closeout becomes one or more entries here.
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
Append-only log of cross-cutting decisions that diverge from spec text, prompt direction, or
|
|
17
|
+
obvious-default. Each entry is a one-liner with a back-reference to the closeout where the
|
|
18
|
+
decision was made and the rationale lives.
|
|
19
|
+
|
|
20
|
+
This file is **append-only and orchestrator-maintained**. Every implementing session's
|
|
21
|
+
"Decisions Beyond Prompt" section in the closeout becomes one or more entries here. The
|
|
22
|
+
orchestrator updates this file at session close as part of the closeout ritual.
|
|
23
|
+
|
|
24
|
+
## Format
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
D<NNN> | <ONE-LINER> | <SOURCE-CLOSEOUT> | <RATIONALE-POINTER>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- `D<NNN>` — sequential within category (see Categories below). Use leading zeros to width 3.
|
|
31
|
+
- `<ONE-LINER>` — the decision in one sentence. Should answer "what did we decide and why is it
|
|
32
|
+
not obvious?"
|
|
33
|
+
- `<SOURCE-CLOSEOUT>` — closeout filename (e.g., `2026-05-02-architecture`).
|
|
34
|
+
- `<RATIONALE-POINTER>` — short pointer to where the full rationale lives. Usually the closeout's
|
|
35
|
+
"Decisions Beyond Prompt" section.
|
|
36
|
+
|
|
37
|
+
## Categories
|
|
38
|
+
|
|
39
|
+
Numbering is sequential within each category, not within the file. Future sessions add at the
|
|
40
|
+
end of the appropriate category.
|
|
41
|
+
|
|
42
|
+
- **D000–D099** — Type system, discriminators, cross-cutting type discipline
|
|
43
|
+
- **D100–D199** — Toolchain, lint, project-level config
|
|
44
|
+
- **D200–D299** — Module-internal patterns
|
|
45
|
+
- **D300–D399** — Cross-module primitives lifted into a shared module
|
|
46
|
+
- **D400–D499** — Native code, OS-platform-specific, sandboxing
|
|
47
|
+
- **D500–D599** — Pending spec deltas (proposed but not yet applied)
|
|
48
|
+
- **D600–D699** — Reserved for future categories — extend the table here when you open a new range
|
|
49
|
+
|
|
50
|
+
Categories are project-specific. Edit this list when the project's shape demands a new range.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## D000–D099: Type system and discriminator
|
|
55
|
+
|
|
56
|
+
<!-- Append entries here as they accumulate. Example:
|
|
57
|
+
|
|
58
|
+
D001 | Outcome<T,E> is a brand newtype keyed by a unique Symbol, NOT a value-union; only OutcomeSink can construct one. | 2026-05-02-protocol | Spike List #11 requires unconstructable-outside-the-sink.
|
|
59
|
+
|
|
60
|
+
-->
|
|
61
|
+
|
|
62
|
+
## D100–D199: Toolchain and lint
|
|
63
|
+
|
|
64
|
+
## D200–D299: Module-internal patterns
|
|
65
|
+
|
|
66
|
+
## D300–D399: Cross-module primitives lifted
|
|
67
|
+
|
|
68
|
+
## D400–D499: Native / platform-specific
|
|
69
|
+
|
|
70
|
+
## D500–D599: Pending spec deltas
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## How decisions get added
|
|
75
|
+
|
|
76
|
+
Every implementing session's "Decisions Beyond Prompt" section in the closeout becomes one or
|
|
77
|
+
more `D<NNN>` entries here. The orchestrator promotes them at session close as part of the
|
|
78
|
+
closeout ritual. Implementing sessions never edit this file directly.
|
|
79
|
+
|
|
80
|
+
If a decision is later overturned, do **not** delete the entry. Append a new `D<NNN>` superseding
|
|
81
|
+
it (with `Supersedes D<old-NNN>` in the one-liner) and update the old entry's one-liner to begin
|
|
82
|
+
`SUPERSEDED by D<new-NNN>:`. The history is the value.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Defect Fix Tracker — [project_name]
|
|
2
|
+
|
|
3
|
+
**Campaign:** Post-CodeCartographer defect remediation
|
|
4
|
+
**Started:** [date]
|
|
5
|
+
**Source:** `findings/defect-scan/defect-report.md` ([total] defects)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Summary
|
|
10
|
+
|
|
11
|
+
| Metric | Count |
|
|
12
|
+
|--------|-------|
|
|
13
|
+
| Total defects | |
|
|
14
|
+
| Fixed | |
|
|
15
|
+
| Deferred | |
|
|
16
|
+
| Accepted (by design) | |
|
|
17
|
+
| Remaining | |
|
|
18
|
+
|
|
19
|
+
**Test suite:** [X tests passing (Y files)] or [no test suite]
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Fix Status
|
|
24
|
+
|
|
25
|
+
### Critical — [X found, Y fixed]
|
|
26
|
+
|
|
27
|
+
<!-- One row per defect from the defect report. ID format: D{pass}.{number} (e.g., D1.1 = Pass 1, Finding 1). -->
|
|
28
|
+
<!-- Status: FIXED / DEFERRED / ACCEPTED / REMAINING -->
|
|
29
|
+
<!-- Fix Summary: one line describing what changed. Leave blank for deferred/remaining. -->
|
|
30
|
+
|
|
31
|
+
| ID | Location | Description | Status | Fix Summary |
|
|
32
|
+
|----|----------|-------------|--------|-------------|
|
|
33
|
+
| | | | | |
|
|
34
|
+
|
|
35
|
+
### High — [X found, Y fixed]
|
|
36
|
+
|
|
37
|
+
| ID | Location | Description | Status | Fix Summary |
|
|
38
|
+
|----|----------|-------------|--------|-------------|
|
|
39
|
+
| | | | | |
|
|
40
|
+
|
|
41
|
+
### Medium — [X found, Y fixed]
|
|
42
|
+
|
|
43
|
+
| ID | Location | Description | Status | Fix Summary |
|
|
44
|
+
|----|----------|-------------|--------|-------------|
|
|
45
|
+
| | | | | |
|
|
46
|
+
|
|
47
|
+
### Low — [X found, Y fixed]
|
|
48
|
+
|
|
49
|
+
| ID | Location | Description | Status | Fix Summary |
|
|
50
|
+
|----|----------|-------------|--------|-------------|
|
|
51
|
+
| | | | | |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Deferred Items
|
|
56
|
+
|
|
57
|
+
<!-- For each deferred defect, explain why and what would be needed to fix it. -->
|
|
58
|
+
|
|
59
|
+
- **D_._ ([short description]):** [Reason for deferral. What work would be needed — e.g., requires library integration, needs design spike, blocked by upstream.]
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Files Modified
|
|
64
|
+
|
|
65
|
+
<!-- One row per file that was touched during remediation. List which defect IDs were addressed in each. -->
|
|
66
|
+
|
|
67
|
+
| File | Defects Fixed |
|
|
68
|
+
|------|---------------|
|
|
69
|
+
| | |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Notes
|
|
74
|
+
|
|
75
|
+
<!-- Any important context about the fix campaign: backward compatibility, breaking changes, migration steps, test coverage changes, etc. -->
|
|
76
|
+
|
|
77
|
+
-
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Defect Report — [project_name]
|
|
2
|
+
|
|
3
|
+
## Scan Context
|
|
4
|
+
|
|
5
|
+
- **Source:** `../` (repository root)
|
|
6
|
+
- **Architecture reference:** `findings/architecture/architecture-map.md`
|
|
7
|
+
- **Contracts reference:** [available / not available]
|
|
8
|
+
- **Protocols reference:** [available / not available]
|
|
9
|
+
- **Pipeline:** [pipeline variant name]
|
|
10
|
+
- **Date:** [date]
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Pass 1: Logic and Correctness
|
|
15
|
+
|
|
16
|
+
<!-- For each finding: location, defect, evidence, severity, evidence level, action. -->
|
|
17
|
+
<!-- Sort by severity: critical → high → medium → low. -->
|
|
18
|
+
<!-- If no findings, write "No defects found in this category." -->
|
|
19
|
+
|
|
20
|
+
| # | Location | Defect | Severity | Evidence Level | Action |
|
|
21
|
+
|---|----------|--------|----------|----------------|--------|
|
|
22
|
+
| 1 | | | | | |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Pass 2: Error Handling and Resilience
|
|
27
|
+
|
|
28
|
+
| # | Location | Defect | Severity | Evidence Level | Action |
|
|
29
|
+
|---|----------|--------|----------|----------------|--------|
|
|
30
|
+
| 1 | | | | | |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Pass 3: Concurrency and Resource Management
|
|
35
|
+
|
|
36
|
+
| # | Location | Defect | Severity | Evidence Level | Action |
|
|
37
|
+
|---|----------|--------|----------|----------------|--------|
|
|
38
|
+
| 1 | | | | | |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Pass 4: Security and Trust Boundaries
|
|
43
|
+
|
|
44
|
+
| # | Location | Defect | Severity | Evidence Level | Action |
|
|
45
|
+
|---|----------|--------|----------|----------------|--------|
|
|
46
|
+
| 1 | | | | | |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Pass 5: API Contract Violations
|
|
51
|
+
|
|
52
|
+
| # | Location | Defect | Severity | Evidence Level | Action |
|
|
53
|
+
|---|----------|--------|----------|----------------|--------|
|
|
54
|
+
| 1 | | | | | |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Pass 6: Configuration and Environment Hazards
|
|
59
|
+
|
|
60
|
+
| # | Location | Defect | Severity | Evidence Level | Action |
|
|
61
|
+
|---|----------|--------|----------|----------------|--------|
|
|
62
|
+
| 1 | | | | | |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Summary
|
|
67
|
+
|
|
68
|
+
### Findings by Severity
|
|
69
|
+
|
|
70
|
+
| Severity | Count |
|
|
71
|
+
|----------|-------|
|
|
72
|
+
| Critical | |
|
|
73
|
+
| High | |
|
|
74
|
+
| Medium | |
|
|
75
|
+
| Low | |
|
|
76
|
+
| **Total** | |
|
|
77
|
+
|
|
78
|
+
### Findings by Category
|
|
79
|
+
|
|
80
|
+
| Pass | Critical | High | Medium | Low | Total |
|
|
81
|
+
|------|----------|------|--------|-----|-------|
|
|
82
|
+
| 1. Logic and correctness | | | | | |
|
|
83
|
+
| 2. Error handling | | | | | |
|
|
84
|
+
| 3. Concurrency and resources | | | | | |
|
|
85
|
+
| 4. Security and trust | | | | | |
|
|
86
|
+
| 5. API contract violations | | | | | |
|
|
87
|
+
| 6. Config and environment | | | | | |
|
|
88
|
+
|
|
89
|
+
### Top Findings
|
|
90
|
+
|
|
91
|
+
<!-- List the most impactful findings across all passes, ranked by severity and confidence. -->
|
|
92
|
+
<!-- Include: pass number, location, one-line defect description, severity, recommended action. -->
|
|
93
|
+
|
|
94
|
+
1.
|
|
95
|
+
2.
|
|
96
|
+
3.
|
|
97
|
+
4.
|
|
98
|
+
5.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Validation
|
|
103
|
+
|
|
104
|
+
<!-- Fill in this table per workflow/VALIDATE.md. The rows below match the full pipeline.
|
|
105
|
+
Adjust rows to match your active pipeline's completion_criteria if using a variant. -->
|
|
106
|
+
|
|
107
|
+
| # | Criterion | Result | Evidence |
|
|
108
|
+
|---|-----------|--------|----------|
|
|
109
|
+
| 1 | At least three analysis passes produced findings or documented "no defects found." | PASS / PARTIAL / FAIL | |
|
|
110
|
+
| 2 | Each finding has location, severity, evidence level, and recommended action. | PASS / PARTIAL / FAIL | |
|
|
111
|
+
| 3 | Findings are organized by pass and sorted by severity. | PASS / PARTIAL / FAIL | |
|
|
112
|
+
| 4 | Summary tables are complete and counts match the detailed findings. | PASS / PARTIAL / FAIL | |
|
|
113
|
+
| 5 | Findings are marked with evidence levels. | PASS / PARTIAL / FAIL | |
|
|
114
|
+
|
|
115
|
+
**Validated by:** [session identifier or date]
|
|
116
|
+
**Overall:** PASS / PASS WITH GAPS / FAIL
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Deltas Applied — <YYYY-MM-DD>
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Output of a spec-delta-application session. See skills/spec-delta-application/SKILL.md.
|
|
5
|
+
|
|
6
|
+
One row per delta from every source. APPLY, CLARIFY, DEFER, REJECT all recorded.
|
|
7
|
+
Future revision passes read this file to know which deltas have already been processed.
|
|
8
|
+
|
|
9
|
+
Place at: findings/reimplementation-spec/DELTAS-APPLIED.md
|
|
10
|
+
(Sibling of the spec; the spec itself stays at reimplementation-spec.md.)
|
|
11
|
+
|
|
12
|
+
If multiple delta-application passes happen over the project's life, append a new dated
|
|
13
|
+
section below the existing one rather than overwriting. Same append-mode discipline as
|
|
14
|
+
secondary outputs.
|
|
15
|
+
-->
|
|
16
|
+
|
|
17
|
+
## Sources
|
|
18
|
+
|
|
19
|
+
<!-- List every source file containing deltas processed in this session. -->
|
|
20
|
+
|
|
21
|
+
| Source | Delta count | Notes |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| spike-1-<slug>.md | | |
|
|
24
|
+
| spike-2-<slug>.md | | |
|
|
25
|
+
| <other-source>.md | | |
|
|
26
|
+
|
|
27
|
+
## Triage Summary
|
|
28
|
+
|
|
29
|
+
| Bucket | Count | Notes |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| APPLY | | |
|
|
32
|
+
| CLARIFY | | |
|
|
33
|
+
| DEFER | | |
|
|
34
|
+
| REJECT | | |
|
|
35
|
+
| **Total** | | |
|
|
36
|
+
|
|
37
|
+
## Audit Table
|
|
38
|
+
|
|
39
|
+
<!-- One row per delta. Order: by source, then by delta ID within source. -->
|
|
40
|
+
|
|
41
|
+
| # | Source | Δ ID | Bucket | Spec Section Touched | Disposition / Rationale |
|
|
42
|
+
|---|---|---|---|---|---|
|
|
43
|
+
| 1 | spike-1-<slug>.md | Δ1 | APPLY | §X.Y | Applied — spec said X, real behavior is Y. |
|
|
44
|
+
| 2 | spike-1-<slug>.md | Δ2 | REJECT | n/a | Premise wrong on close reading — three of eleven sites have no IPC. |
|
|
45
|
+
| 3 | spike-2-<slug>.md | Δ3 | CLARIFY | §A.B | Reworded "may" → "must" to match the actual normative rule. |
|
|
46
|
+
| 4 | spike-2-<slug>.md | Δ4 | DEFER | n/a | Real improvement but not load-bearing for next module; in BACKLOG.md. |
|
|
47
|
+
|
|
48
|
+
## Citation Markers Added
|
|
49
|
+
|
|
50
|
+
<!-- For audit: list every spec section that received a `[revised per <source> §<delta-id>]` marker
|
|
51
|
+
in this pass. Future readers can grep for these. -->
|
|
52
|
+
|
|
53
|
+
- §X.Y — `[revised per spike-1-<slug>.md §Δ1]`
|
|
54
|
+
- §A.B — `[revised per spike-2-<slug>.md §Δ3]`
|
|
55
|
+
|
|
56
|
+
## Re-Validation Result
|
|
57
|
+
|
|
58
|
+
<!-- Summary of the re-validation check. The spec's validation block must still be PASS or
|
|
59
|
+
PASS WITH GAPS after delta application. If it degrades, deltas weren't applied carefully —
|
|
60
|
+
fix the spec body, NOT the validation criteria. -->
|
|
61
|
+
|
|
62
|
+
- Pre-edit spec validation: PASS / PASS WITH GAPS
|
|
63
|
+
- Post-edit spec validation: PASS / PASS WITH GAPS
|
|
64
|
+
- Criteria changed: yes / no (must be `no` — if `yes`, document why)
|
|
65
|
+
|
|
66
|
+
## Decisions Beyond Triage
|
|
67
|
+
|
|
68
|
+
<!-- Decisions made during this session that weren't directly in the delta list — e.g., "rejected
|
|
69
|
+
Δ7 because §X already covers the case." These also become numbered entries in DECISIONS.md. -->
|
|
70
|
+
|
|
71
|
+
- **D???** | <one-liner> | <rationale>
|