contract-driven-delivery 2.0.16 → 2.0.17
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/CHANGELOG.md +28 -0
- package/README.md +69 -81
- package/assets/CLAUDE.template.md +3 -3
- package/assets/CODEX.template.md +5 -5
- package/assets/agents/backend-engineer.md +29 -31
- package/assets/agents/change-classifier.md +28 -33
- package/assets/agents/ci-cd-gatekeeper.md +21 -25
- package/assets/agents/contract-reviewer.md +21 -26
- package/assets/agents/dependency-security-reviewer.md +21 -26
- package/assets/agents/e2e-resilience-engineer.md +19 -23
- package/assets/agents/frontend-engineer.md +29 -31
- package/assets/agents/monkey-test-engineer.md +19 -23
- package/assets/agents/qa-reviewer.md +20 -25
- package/assets/agents/repo-context-scanner.md +17 -22
- package/assets/agents/spec-architect.md +17 -21
- package/assets/agents/spec-drift-auditor.md +17 -22
- package/assets/agents/stress-soak-engineer.md +17 -21
- package/assets/agents/test-strategist.md +24 -28
- package/assets/agents/ui-ux-reviewer.md +16 -21
- package/assets/agents/visual-reviewer.md +19 -24
- package/assets/skills/cdd-new/SKILL.md +112 -119
- package/assets/skills/contract-driven-delivery/SKILL.md +3 -3
- package/assets/skills/contract-driven-delivery/references/agent-log-protocol.md +68 -157
- package/assets/skills/contract-driven-delivery/references/code-map-protocol.md +57 -35
- package/assets/skills/contract-driven-delivery/templates/agent-log.example.yml +6 -0
- package/assets/skills/contract-driven-delivery/templates/change-classification.md +2 -2
- package/dist/cli/index.js +2353 -2134
- package/package.json +1 -1
|
@@ -1,72 +1,63 @@
|
|
|
1
|
-
# Agent Log Protocol (YAML)
|
|
1
|
+
# Agent Log Protocol (Optional YAML)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
`src/schemas/agent-log.schema.ts` (JSON Schema, draft-07). Drift here equals
|
|
7
|
-
silent gate skips, so do not re-document this in agent prompts.
|
|
3
|
+
Agent logs are optional trace artifacts for debugging, resume summaries, and
|
|
4
|
+
handoff notes. They are not required for `cdd-kit gate`, and agents should not
|
|
5
|
+
spend useful development time reconstructing every file they read.
|
|
8
6
|
|
|
9
|
-
## Output
|
|
7
|
+
## Output Target
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
If an agent emits a log, write one YAML file per run:
|
|
12
10
|
|
|
13
|
-
```
|
|
11
|
+
```text
|
|
14
12
|
specs/changes/<change-id>/agent-log/<agent-name>.yml
|
|
15
13
|
```
|
|
16
14
|
|
|
17
|
-
If the same agent runs more than once for a change
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
## Required structure
|
|
15
|
+
If the same agent runs more than once for a change, overwrite the file. The
|
|
16
|
+
latest run is the only useful trace.
|
|
21
17
|
|
|
22
|
-
|
|
18
|
+
## Minimal Structure
|
|
23
19
|
|
|
24
20
|
```yaml
|
|
25
21
|
change-id: <id>
|
|
26
22
|
agent: <agent-name>
|
|
27
23
|
timestamp: "<ISO 8601 date-time, e.g. 2026-04-27T14:30:00Z>"
|
|
28
|
-
status: complete
|
|
29
|
-
files-read:
|
|
30
|
-
- <repo-relative path>
|
|
31
|
-
- <repo-relative path>
|
|
24
|
+
status: complete
|
|
32
25
|
artifacts:
|
|
33
26
|
- { type: <evidence-type>, pointer: <concrete pointer> }
|
|
34
|
-
|
|
35
|
-
next-action: <one line, or "none">
|
|
27
|
+
next-action: none
|
|
36
28
|
notes: <optional free-form>
|
|
37
29
|
```
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
| field | required | rule |
|
|
42
|
-
|---|---|---|
|
|
43
|
-
| `change-id` | yes | must equal the parent change directory name |
|
|
44
|
-
| `agent` | yes | canonical agent name (matches the agent's filename) |
|
|
45
|
-
| `timestamp` | yes | ISO 8601 date-time string; quote it to avoid YAML timestamp coercion in non-cdd tools. UTC `Z` is preferred; numeric offsets such as `+08:00` are accepted. |
|
|
46
|
-
| `status` | yes | canonical values are `complete` \| `needs-review` \| `blocked`; `done` and `approved` are accepted by gate as compatibility aliases for `complete` |
|
|
47
|
-
| `files-read` | conditional | required for context-governed changes (see below) |
|
|
48
|
-
| `artifacts` | yes | array of `{type, pointer}` objects, ≥ 1 item |
|
|
49
|
-
| `next-action` | yes | when `status: blocked`, ≥ 10 chars and not `none` |
|
|
50
|
-
| `notes` | no | optional |
|
|
51
|
-
|
|
52
|
-
#### `files-read`
|
|
53
|
-
|
|
54
|
-
Required when `tasks.yml` has `context-governance: v1`. Each entry is a
|
|
55
|
-
repo-relative path. Absolute paths and `..` traversal are rejected. If you
|
|
56
|
-
legitimately read nothing beyond your own change directory, write:
|
|
31
|
+
Optional fields:
|
|
57
32
|
|
|
58
33
|
```yaml
|
|
59
34
|
files-read:
|
|
60
|
-
-
|
|
35
|
+
- <repo-relative path>
|
|
36
|
+
indexes-used:
|
|
37
|
+
- .cdd/code-map.yml
|
|
38
|
+
index-queries:
|
|
39
|
+
- cdd-kit index query "AuthService"
|
|
61
40
|
```
|
|
62
41
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
add the repo-relative path to `context-manifest.md` under `## Allowed Paths` or
|
|
66
|
-
approve a Context Expansion Request. `files-read` is the audit trail; the
|
|
67
|
-
manifest is the authorization boundary.
|
|
42
|
+
Use optional fields only when they are cheap and accurate. Do not add noisy
|
|
43
|
+
paperwork just to satisfy a gate; the gate does not inspect these logs.
|
|
68
44
|
|
|
69
|
-
|
|
45
|
+
## Field Rules
|
|
46
|
+
|
|
47
|
+
| field | required | rule |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| `change-id` | yes | should equal the parent change directory name |
|
|
50
|
+
| `agent` | yes | canonical agent name, matching the agent filename |
|
|
51
|
+
| `timestamp` | yes | ISO 8601 date-time string; quote it to avoid YAML timestamp coercion |
|
|
52
|
+
| `status` | yes | `complete` \| `needs-review` \| `blocked` |
|
|
53
|
+
| `artifacts` | yes | concise array of `{type, pointer}` objects |
|
|
54
|
+
| `next-action` | yes | when `status: blocked`, name the concrete next step |
|
|
55
|
+
| `files-read` | no | optional repo-relative read trace |
|
|
56
|
+
| `indexes-used` | no | optional repo-relative index artifact paths used to plan reads |
|
|
57
|
+
| `index-queries` | no | optional command/query strings used for project intelligence |
|
|
58
|
+
| `notes` | no | optional |
|
|
59
|
+
|
|
60
|
+
## artifacts
|
|
70
61
|
|
|
71
62
|
Concrete pointers only. Allowed forms:
|
|
72
63
|
|
|
@@ -75,123 +66,43 @@ Concrete pointers only. Allowed forms:
|
|
|
75
66
|
- `cdd-kit gate <id>: 0 errors`
|
|
76
67
|
- `contracts/api/api-contract.md#endpoints`
|
|
77
68
|
|
|
78
|
-
|
|
79
|
-
text before the first `:` contains
|
|
80
|
-
|
|
81
|
-
means:
|
|
69
|
+
Pointer style still matters because humans and future tools may parse these
|
|
70
|
+
values. When the text before the first `:` contains `/`, treat it as one
|
|
71
|
+
repo-relative file path:
|
|
82
72
|
|
|
83
73
|
- One pointer names one file only. Use separate `artifacts` items for multiple
|
|
84
74
|
files.
|
|
85
75
|
- Do not attach parenthetical notes to a file path, e.g. use
|
|
86
76
|
`src/api/users.ts:45-67`, not `src/api/users.ts (updated):45-67`.
|
|
87
77
|
- Do not start a pointer with slash-containing prose labels such as `I/O:` or
|
|
88
|
-
`WARNING/OVERDUE
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- `n/a (<reason>)` is exempt from path validation and is allowed for genuinely
|
|
92
|
-
inapplicable required artifact types.
|
|
93
|
-
|
|
94
|
-
Never `verified`, `OK`, `done`, or unscoped prose.
|
|
95
|
-
|
|
96
|
-
#### `next-action`
|
|
97
|
-
|
|
98
|
-
When `status: blocked`, this must be ≥ 10 chars, must not be `none`, `tbd`,
|
|
99
|
-
`investigate further`, or `n/a`, and must name the actual next step a human
|
|
100
|
-
can act on. When `status: complete`, `none` is acceptable.
|
|
101
|
-
|
|
102
|
-
#### `status`
|
|
103
|
-
|
|
104
|
-
Use `status: complete` for a finished agent-log. `tasks.yml` task entries use
|
|
105
|
-
`status: done`, and review language may say "approved", but agent-log
|
|
106
|
-
completion is canonically `complete`. `cdd-kit gate` accepts `done` and
|
|
107
|
-
`approved` as compatibility aliases so these common mix-ups do not block
|
|
108
|
-
delivery.
|
|
109
|
-
|
|
110
|
-
## Per-agent additional artifact requirements
|
|
111
|
-
|
|
112
|
-
Each agent prompt lists its own `### Required artifacts for this agent`. The
|
|
113
|
-
gate enforces the declared artifact `type` values when the corresponding agent
|
|
114
|
-
prompt file is installed in `.claude/agents/` or `~/.claude/agents/`. This keeps
|
|
115
|
-
agent prompts, evidence logs, and gate behavior aligned without duplicating the
|
|
116
|
-
full protocol in every prompt.
|
|
117
|
-
|
|
118
|
-
If you add a required artifact type in an agent prompt, also update tests that
|
|
119
|
-
exercise `cdd-kit gate` for that agent. Agents may emit
|
|
120
|
-
`pointer: "n/a (<reason>)"` when a declared type is genuinely inapplicable; the
|
|
121
|
-
type must still be present so reviewers can tell that the omission was
|
|
122
|
-
intentional.
|
|
123
|
-
|
|
124
|
-
## Self-validation before submitting your response
|
|
125
|
-
|
|
126
|
-
**Every agent MUST self-validate its draft agent-log YAML before finishing.**
|
|
127
|
-
A malformed log forces `cdd-kit gate` to fail, which forces the skill to
|
|
128
|
-
re-invoke you, which costs the user another full agent round. Self-lint is
|
|
129
|
-
~5 seconds; a re-run is minutes and dollars.
|
|
130
|
-
|
|
131
|
-
Before sending your final response, re-read the YAML you intend to write and
|
|
132
|
-
verify each item:
|
|
133
|
-
|
|
134
|
-
- [ ] **All required keys exist**: `change-id`, `agent`, `timestamp`,
|
|
135
|
-
`status`, `artifacts`, `next-action` (plus `files-read` for
|
|
136
|
-
context-governed changes).
|
|
137
|
-
- [ ] **`timestamp` is quoted** and uses ISO 8601 date-time form. Prefer
|
|
138
|
-
UTC `Z`, e.g. `timestamp: "2026-04-27T14:30:00Z"`. Numeric offsets
|
|
139
|
-
such as `timestamp: "2026-05-05T00:00:00+08:00"` are valid.
|
|
140
|
-
- [ ] **`status` is one of**: `complete`, `needs-review`, `blocked`.
|
|
141
|
-
Prefer `complete` for finished logs; `done` and `approved` are accepted
|
|
142
|
-
only as compatibility aliases. Do not use `OK`, `pending`, `wip`, or
|
|
143
|
-
anything else.
|
|
144
|
-
- [ ] **Every `artifacts` item is a `{type, pointer}` mapping** with a
|
|
145
|
-
concrete pointer:
|
|
146
|
-
- GOOD: `{ type: tests-added, pointer: "tests/foo.test.ts::should reject empty body" }`
|
|
147
|
-
- GOOD: `{ type: files-changed, pointer: "src/api/users.ts:45-67" }`
|
|
148
|
-
- GOOD: `{ type: test-output, pointer: "5 passed (last 10 lines: …)" }`
|
|
149
|
-
- BAD: `{ type: tests-added, pointer: verified }`
|
|
150
|
-
- BAD: `{ type: files-changed, pointer: yes }`
|
|
151
|
-
- BAD: `{ type: contract, pointer: OK }`
|
|
152
|
-
- BAD: `{ type: files-changed, pointer: "src/api/users.ts (updated):45-67" }`
|
|
153
|
-
- BAD: `{ type: test-output, pointer: "I/O: warning reproduced" }`
|
|
154
|
-
- BAD: `{ type: test-output, pointer: "WARNING/OVERDUE: manual follow-up" }`
|
|
155
|
-
Reject any line whose pointer would not let a reviewer click through.
|
|
156
|
-
If the text before the first `:` contains `/`, confirm it is exactly one
|
|
157
|
-
existing repo-relative file path with no parenthetical note.
|
|
158
|
-
- [ ] **If `status: blocked`**, `next-action` is ≥ 10 chars, is NOT `none`,
|
|
159
|
-
`investigate further`, `tbd`, or `n/a`, and names the actual next step
|
|
160
|
-
a human can act on.
|
|
161
|
-
- [ ] **Every `files-read` entry**: repo-relative path, no leading `/`, no
|
|
162
|
-
`..`, no `~`. If you read your own change directory only, write
|
|
163
|
-
`- specs/changes/<change-id>/`.
|
|
164
|
-
- [ ] **YAML is parseable**: indentation is consistent (2 spaces), strings
|
|
165
|
-
with special characters (`:`, `#`, leading numbers like `001`) are
|
|
166
|
-
quoted.
|
|
167
|
-
|
|
168
|
-
If any check fails, **fix the YAML before sending your response**. Do not
|
|
169
|
-
ship a known-bad log and rely on the gate to catch it.
|
|
170
|
-
|
|
171
|
-
## Gate enforcement summary
|
|
172
|
-
|
|
173
|
-
`cdd-kit gate` rejects an agent log when any of these are true:
|
|
174
|
-
|
|
175
|
-
1. The file is missing for a tier-required agent (see CONTRACTS for tier matrix).
|
|
176
|
-
2. YAML fails to parse, or top-level is not a mapping.
|
|
177
|
-
3. `status` is missing or has an unknown value.
|
|
178
|
-
4. `status: blocked` without a concrete `next-action`.
|
|
179
|
-
5. `files-read` is missing for a context-governed change, or contains an
|
|
180
|
-
absolute path / `..` segment / forbidden path / path outside manifest
|
|
181
|
-
`Allowed Paths` and `Approved Expansions`.
|
|
182
|
-
6. Any `artifacts` item is missing `type` or `pointer`, or the array is empty.
|
|
183
|
-
7. A required per-agent artifact `type` declared in the agent prompt is missing.
|
|
184
|
-
8. Unless gate is run with `--lax`: any `artifacts` pointer whose text before
|
|
185
|
-
the first `:` contains `/` but does not exist on disk; or any
|
|
186
|
-
runtime-logged read not declared in `files-read`.
|
|
187
|
-
|
|
188
|
-
## Why this lives in references/
|
|
78
|
+
`WARNING/OVERDUE:`. Write those labels in `notes` or after a non-path
|
|
79
|
+
command/result pointer.
|
|
80
|
+
- `n/a (<reason>)` is allowed for genuinely inapplicable artifact types.
|
|
189
81
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
82
|
+
Never use `verified`, `OK`, `done`, or unscoped prose as evidence pointers.
|
|
83
|
+
|
|
84
|
+
## next-action
|
|
193
85
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
86
|
+
When `status: blocked`, this must be concrete and must not be `none`, `tbd`,
|
|
87
|
+
`investigate further`, `unknown`, `todo`, or `n/a`. When `status: complete`,
|
|
88
|
+
`none` is acceptable.
|
|
89
|
+
|
|
90
|
+
## Self-Validation
|
|
91
|
+
|
|
92
|
+
If you choose to emit an agent log, self-validate it before finishing:
|
|
93
|
+
|
|
94
|
+
- Required keys exist: `change-id`, `agent`, `timestamp`, `status`,
|
|
95
|
+
`artifacts`, `next-action`.
|
|
96
|
+
- `timestamp` is quoted and uses ISO 8601 date-time form.
|
|
97
|
+
- `status` is one of `complete`, `needs-review`, `blocked`.
|
|
98
|
+
- Every `artifacts` item is a `{type, pointer}` mapping with a concrete pointer.
|
|
99
|
+
- If `status: blocked`, `next-action` names the actual next step.
|
|
100
|
+
- Optional `files-read` entries are repo-relative, with no leading `/`, no
|
|
101
|
+
`..`, and no `~`.
|
|
102
|
+
- YAML is parseable with consistent two-space indentation.
|
|
103
|
+
|
|
104
|
+
## Why This Lives In References
|
|
105
|
+
|
|
106
|
+
The historical mistake was duplicating the protocol inside every agent prompt.
|
|
107
|
+
Moving it here cuts prompt size and keeps optional traces consistent without
|
|
108
|
+
turning them into required process paperwork.
|
|
@@ -1,53 +1,75 @@
|
|
|
1
1
|
# Code Map Protocol
|
|
2
2
|
|
|
3
|
-
`.cdd/code-map.yml` is a deterministic structural index of every source
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
`.cdd/code-map.yml` is a deterministic structural index of every source file
|
|
4
|
+
in the repo (`.py`, `.js`, `.jsx`, `.mjs`, `.cjs`, `.ts`, `.tsx`, `.vue`).
|
|
5
|
+
Generated by `cdd-kit code-map`, committed to git, refreshed automatically
|
|
6
|
+
when `cdd-kit init --hooks` is installed. `cdd-kit gate` does not enforce
|
|
7
|
+
index hygiene; use `cdd-kit code-map --check`, `cdd-kit doctor --fix`, or the
|
|
8
|
+
auto-refreshing `cdd-kit index ...` commands for that job.
|
|
8
9
|
|
|
9
|
-
##
|
|
10
|
+
## Preferred workflow: query before reading
|
|
11
|
+
|
|
12
|
+
Before reading source, run a targeted query:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
cdd-kit index query "AuthService"
|
|
16
|
+
cdd-kit index query "users.ts" --limit 5
|
|
17
|
+
cdd-kit index impact "src/services/auth.ts"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`cdd-kit index query` searches file paths, imports, constants, classes,
|
|
21
|
+
methods, functions, interfaces, types, enums, and enum members. It also
|
|
22
|
+
auto-regenerates `.cdd/code-map.yml` when the map is missing or stale, then
|
|
23
|
+
prints only the candidate files and line ranges an agent should inspect first.
|
|
24
|
+
|
|
25
|
+
Before editing a source file, run `cdd-kit index impact "<path-or-symbol>"`.
|
|
26
|
+
It reports indexed local imports and direct dependents, so the agent can inspect
|
|
27
|
+
the target plus likely affected callers/callees before changing behavior.
|
|
10
28
|
|
|
11
29
|
Agents have no built-in way to know a file's line count before reading it.
|
|
12
|
-
Reading a 1300-line file when you only need lines 200
|
|
13
|
-
|
|
14
|
-
|
|
30
|
+
Reading a 1300-line file when you only need lines 200-250 wastes most of the
|
|
31
|
+
token budget. The code map is the size oracle: it tells you how big a file is
|
|
32
|
+
and exactly which lines hold the symbol you need.
|
|
15
33
|
|
|
16
34
|
## The 300-line rule
|
|
17
35
|
|
|
18
36
|
Before reading any source file:
|
|
19
37
|
|
|
20
|
-
1. `
|
|
21
|
-
|
|
22
|
-
2.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
5.
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
1. Prefer `cdd-kit index query "<symbol-or-file>"` to get candidate paths and
|
|
39
|
+
line ranges.
|
|
40
|
+
2. Before editing a chosen source file, run
|
|
41
|
+
`cdd-kit index impact "<path-or-symbol>"` to identify local imports and
|
|
42
|
+
dependents worth inspecting.
|
|
43
|
+
3. If you cannot run commands, `Read .cdd/code-map.yml` once at the start of
|
|
44
|
+
your task and cache it for the rest of your session.
|
|
45
|
+
4. Find the file's entry. The first line is `<path>: # N lines`.
|
|
46
|
+
5. If `N <= 300`: do a normal full `Read <path>`.
|
|
47
|
+
6. If `N > 300`: locate the class / method / function in the entry's
|
|
48
|
+
`classes:` / `functions:` block (or, for `.ts`/`.tsx`, the `interfaces:` /
|
|
49
|
+
`types:` / `enums:` blocks); its `lines: A-B` field is the exact range. Use
|
|
50
|
+
`Read <path> offset:A limit:(B-A+1)`.
|
|
51
|
+
7. To understand a file's surface area without reading code, the `imports:` /
|
|
52
|
+
`constants:` / `interfaces:` / `types:` sections are usually sufficient.
|
|
31
53
|
|
|
32
54
|
## Fallback when the map is missing
|
|
33
55
|
|
|
34
|
-
If
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
attention to missing infrastructure rather than burning tokens
|
|
39
|
-
silently.
|
|
56
|
+
If you can run shell commands, use `cdd-kit index query "<term>"` or
|
|
57
|
+
`cdd-kit index impact "<path-or-symbol>"`; both refresh the map automatically
|
|
58
|
+
before querying. If you cannot run commands and `.cdd/code-map.yml` does not
|
|
59
|
+
exist, avoid broad source reads and ask the harness/user to regenerate the map.
|
|
40
60
|
|
|
41
61
|
## Fallback when the map is stale
|
|
42
62
|
|
|
43
|
-
If
|
|
44
|
-
|
|
63
|
+
If you can run shell commands, use `cdd-kit index query "<term>"` or
|
|
64
|
+
`cdd-kit index impact "<path-or-symbol>"`; both refresh stale maps
|
|
65
|
+
automatically. If you cannot run commands and the map is stale, use the same
|
|
66
|
+
protocol as missing: avoid broad source reads and ask for a regen.
|
|
45
67
|
|
|
46
68
|
## What the map does NOT contain
|
|
47
69
|
|
|
48
|
-
- Function bodies, parameter types, JSDoc, TS generic constraints
|
|
49
|
-
|
|
50
|
-
- Vue `<script lang="ts">` blocks
|
|
70
|
+
- Function bodies, parameter types, JSDoc, TS generic constraints; read the
|
|
71
|
+
source for these using offset/limit.
|
|
72
|
+
- Vue `<script lang="ts">` blocks; fall back to a full `Read` for now.
|
|
51
73
|
- Anything inside `node_modules/`, `dist/`, `build/`, `.venv/`, `__pycache__/`.
|
|
52
74
|
|
|
53
75
|
## Customising what gets indexed
|
|
@@ -56,7 +78,7 @@ Optional file: `.cdd/code-map-config.yml`
|
|
|
56
78
|
|
|
57
79
|
```yaml
|
|
58
80
|
# Both keys optional. When present, each REPLACES (not merges) the built-in
|
|
59
|
-
# default
|
|
81
|
+
# default; copy the built-in list and edit it for partial overrides.
|
|
60
82
|
include:
|
|
61
83
|
- "**/*.py"
|
|
62
84
|
- "**/*.ts"
|
|
@@ -102,6 +124,6 @@ src/types/index.ts: # 625 lines
|
|
|
102
124
|
members: [Pending, Active, Done]
|
|
103
125
|
```
|
|
104
126
|
|
|
105
|
-
`async ` prefix on a function/method name indicates `async def` (Python)
|
|
106
|
-
|
|
107
|
-
|
|
127
|
+
`async ` prefix on a function/method name indicates `async def` (Python) or
|
|
128
|
+
`async function` (JS/TS). `# local` annotation on an interface/type/enum means
|
|
129
|
+
it is NOT exported.
|
|
@@ -3,9 +3,15 @@ agent: backend-engineer
|
|
|
3
3
|
timestamp: "2026-04-27T14:30:00Z"
|
|
4
4
|
status: complete
|
|
5
5
|
files-read:
|
|
6
|
+
- .cdd/code-map.yml
|
|
6
7
|
- contracts/api/api-contract.md
|
|
7
8
|
- src/api/users.ts
|
|
8
9
|
- specs/changes/feat-001/test-plan.md
|
|
10
|
+
indexes-used:
|
|
11
|
+
- .cdd/code-map.yml
|
|
12
|
+
index-queries:
|
|
13
|
+
- cdd-kit index query "users.ts"
|
|
14
|
+
- cdd-kit index impact "src/api/users.ts"
|
|
9
15
|
artifacts:
|
|
10
16
|
- { type: files-changed, pointer: "src/api/users.ts:45-67" }
|
|
11
17
|
- { type: tests-added, pointer: "tests/api/users.test.ts::should reject empty body" }
|
|
@@ -69,7 +69,7 @@ Always required: change-request.md, change-classification.md, test-plan.md, ci-g
|
|
|
69
69
|
## Context Manifest Draft
|
|
70
70
|
<!-- Classifier fills this section. In /cdd-new Step 2.3, Claude copies it verbatim into
|
|
71
71
|
specs/changes/<change-id>/context-manifest.md, replacing the scaffold.
|
|
72
|
-
All paths must be repo-relative.
|
|
72
|
+
All paths must be repo-relative. Use cdd-kit context check before invoking agents. -->
|
|
73
73
|
|
|
74
74
|
### Affected Surfaces
|
|
75
75
|
-
|
|
@@ -77,7 +77,7 @@ Always required: change-request.md, change-classification.md, test-plan.md, ci-g
|
|
|
77
77
|
### Allowed Paths
|
|
78
78
|
<!-- Union of ALL paths any agent will read. Add change-specific paths below the defaults.
|
|
79
79
|
Include component/store/view files for frontend work and CI contracts/workflows for CI work
|
|
80
|
-
when those files are legitimate work scope.
|
|
80
|
+
when those files are legitimate work scope. -->
|
|
81
81
|
- specs/changes/<change-id>/
|
|
82
82
|
- specs/context/project-map.md
|
|
83
83
|
- specs/context/contracts-index.md
|