agile-context-engineering 0.2.2 → 0.3.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/CHANGELOG.md +82 -0
- package/LICENSE +51 -51
- package/README.md +324 -323
- package/agents/ace-research-synthesizer.md +228 -228
- package/agents/ace-technical-application-architect.md +28 -0
- package/agents/ace-wiki-mapper.md +445 -334
- package/agile-context-engineering/src/ace-tools.test.js +1089 -1089
- package/agile-context-engineering/templates/_command.md +53 -53
- package/agile-context-engineering/templates/_workflow.xml +16 -16
- package/agile-context-engineering/templates/product/product-backlog.xml +231 -231
- package/agile-context-engineering/templates/product/story-integration-solution.xml +1 -0
- package/agile-context-engineering/templates/product/story-wiki.xml +4 -0
- package/agile-context-engineering/templates/wiki/coding-standards.xml +38 -0
- package/agile-context-engineering/templates/wiki/decizions.xml +115 -115
- package/agile-context-engineering/templates/wiki/guide.xml +137 -137
- package/agile-context-engineering/templates/wiki/module-discovery.xml +174 -174
- package/agile-context-engineering/templates/wiki/pattern.xml +159 -159
- package/agile-context-engineering/templates/wiki/system-architecture.xml +254 -254
- package/agile-context-engineering/templates/wiki/system-cross-cutting.xml +197 -197
- package/agile-context-engineering/templates/wiki/system.xml +381 -381
- package/agile-context-engineering/templates/wiki/walkthrough.xml +255 -0
- package/agile-context-engineering/templates/wiki/wiki-readme.xml +297 -276
- package/agile-context-engineering/utils/questioning.xml +110 -110
- package/agile-context-engineering/workflows/execute-story.xml +1219 -1145
- package/agile-context-engineering/workflows/help.xml +540 -540
- package/agile-context-engineering/workflows/init-coding-standards.xml +386 -386
- package/agile-context-engineering/workflows/map-story.xml +1046 -797
- package/agile-context-engineering/workflows/map-subsystem.xml +2 -1
- package/agile-context-engineering/workflows/map-walkthrough.xml +457 -0
- package/agile-context-engineering/workflows/plan-feature.xml +1495 -1495
- package/agile-context-engineering/workflows/plan-story.xml +36 -1
- package/agile-context-engineering/workflows/research-integration-solution.xml +1 -0
- package/agile-context-engineering/workflows/research-story-wiki.xml +2 -1
- package/agile-context-engineering/workflows/research-technical-solution.xml +1 -0
- package/agile-context-engineering/workflows/review-story.xml +281 -281
- package/agile-context-engineering/workflows/update.xml +238 -207
- package/bin/install.js +8 -0
- package/commands/ace/execute-story.md +1 -0
- package/commands/ace/help.md +93 -93
- package/commands/ace/init-coding-standards.md +83 -83
- package/commands/ace/map-story.md +165 -156
- package/commands/ace/map-subsystem.md +140 -138
- package/commands/ace/map-system.md +92 -92
- package/commands/ace/map-walkthrough.md +127 -0
- package/commands/ace/plan-feature.md +89 -89
- package/commands/ace/plan-story.md +15 -1
- package/commands/ace/review-story.md +109 -109
- package/commands/ace/update.md +56 -54
- package/hooks/ace-check-update.js +62 -62
- package/hooks/ace-statusline.js +89 -89
- package/package.json +4 -3
|
@@ -1,174 +1,174 @@
|
|
|
1
|
-
<module-discovery>
|
|
2
|
-
<purpose>
|
|
3
|
-
Template for `.ace/artifacts/[subsystem_name]/module-discovery.md` — the discovery
|
|
4
|
-
artifact that groups subsystem files into logical documentation modules.
|
|
5
|
-
|
|
6
|
-
This document is consumed by Step 8.7 of map-subsystem to determine which map-story
|
|
7
|
-
calls to make and what files to pass to each call.
|
|
8
|
-
|
|
9
|
-
Each module is a coherent group of related files that together represent one concern.
|
|
10
|
-
map-story receives the files and autonomously decides what documentation to produce —
|
|
11
|
-
it may create systems/ docs, patterns/ docs, cross-cutting/ docs, guides/ docs,
|
|
12
|
-
decisions/ docs, all from a single call. Discovery does NOT pre-categorize modules
|
|
13
|
-
by document type.
|
|
14
|
-
|
|
15
|
-
Files CAN appear in multiple modules. A domain model shared by two systems legitimately
|
|
16
|
-
belongs in both — map-story will document it from each system's perspective.
|
|
17
|
-
</purpose>
|
|
18
|
-
|
|
19
|
-
<template>
|
|
20
|
-
# Module Discovery: [subsystem_name]
|
|
21
|
-
|
|
22
|
-
## Modules
|
|
23
|
-
|
|
24
|
-
Each row is one coherent group of related files. map-story receives these files
|
|
25
|
-
and autonomously decides what docs to create or update (systems/, patterns/,
|
|
26
|
-
cross-cutting/, guides/, decisions/).
|
|
27
|
-
|
|
28
|
-
| # | Module Name | Files | Relevant Docs |
|
|
29
|
-
|---|-------------|-------|---------------|
|
|
30
|
-
| 1 | [e.g., User Management] | [comma-separated absolute paths — full E2E flow] | [comma-separated doc paths, or `none`] |
|
|
31
|
-
| 2 | [e.g., Order Processing] | [comma-separated absolute paths — full E2E flow] | [comma-separated doc paths, or `none`] |
|
|
32
|
-
| 3 | [e.g., Repository Pattern] | [2-4 representative files that demonstrate the pattern] | [docs, or `none`] |
|
|
33
|
-
| 4 | [e.g., Dependency Injection] | [all DI/registration files] | [docs, or `none`] |
|
|
34
|
-
|
|
35
|
-
## Existing Documentation Inventory
|
|
36
|
-
|
|
37
|
-
All documentation files found within the subsystem, with their curation status.
|
|
38
|
-
|
|
39
|
-
| # | Doc Path | Type | Curated To Module |
|
|
40
|
-
|---|----------|------|-------------------|
|
|
41
|
-
| 1 | [absolute path to .md file] | [README / architecture / implementation-doc / planning / cross-cutting / other] | [module name, or `unmatched`] |
|
|
42
|
-
|
|
43
|
-
## File Coverage
|
|
44
|
-
|
|
45
|
-
**Total files in subsystem:** N
|
|
46
|
-
**Files covered by at least one module:** M
|
|
47
|
-
**Uncovered files:** [list any files intentionally excluded]
|
|
48
|
-
|
|
49
|
-
Intentionally excluded (trivial):
|
|
50
|
-
- `[path]` — [reason: index re-export / empty stub / generated code / test file]
|
|
51
|
-
</template>
|
|
52
|
-
|
|
53
|
-
<guidelines>
|
|
54
|
-
|
|
55
|
-
**What makes a good module:**
|
|
56
|
-
|
|
57
|
-
A module is a coherent group of files that together represent ONE concern worth
|
|
58
|
-
documenting. Discovery groups files by concern — map-story decides what doc types
|
|
59
|
-
to produce from each group. There are three kinds of modules to discover:
|
|
60
|
-
|
|
61
|
-
**E2E Domain Flows (most important):**
|
|
62
|
-
|
|
63
|
-
A vertical slice traced from entry point through all architectural layers.
|
|
64
|
-
|
|
65
|
-
How to discover:
|
|
66
|
-
- Identify entry points: HTTP controllers, CLI handlers, event consumers, background jobs
|
|
67
|
-
- Trace DOWNWARD through every layer:
|
|
68
|
-
controller -> mapper -> service/use-case -> domain entity + value objects
|
|
69
|
-
-> repository interface -> repository implementation -> DB scripts / migrations
|
|
70
|
-
- Collect EVERY file that participates — including DTOs, mappers, constants
|
|
71
|
-
- Group related entry points when they share the same domain concern:
|
|
72
|
-
CreateUser + GetUser + UpdateUser + DeleteUser = "User Management" (not 4 modules)
|
|
73
|
-
|
|
74
|
-
Key rule: a domain model shared across flows appears in EVERY module that uses it.
|
|
75
|
-
Do NOT exclude a file because it is shared — duplication in the file list is CORRECT.
|
|
76
|
-
|
|
77
|
-
**Recurring Implementation Patterns:**
|
|
78
|
-
|
|
79
|
-
A group of similarly structured files that follow a common template.
|
|
80
|
-
|
|
81
|
-
How to discover:
|
|
82
|
-
- Find groups of similar files (3+ repositories, 3+ mappers, 3+ handlers)
|
|
83
|
-
- Read them — if they follow the same structural template, that's a pattern
|
|
84
|
-
- Use 2-4 representative files (not all implementations — map-story will discover the rest)
|
|
85
|
-
- Examples: Repository Pattern, CQRS, Template Method, Factory/Registry, Mapper Pattern
|
|
86
|
-
|
|
87
|
-
**Shared Infrastructure / Cross-Cutting Concerns:**
|
|
88
|
-
|
|
89
|
-
Infrastructure files that multiple domain flows depend on.
|
|
90
|
-
|
|
91
|
-
How to discover:
|
|
92
|
-
- DI container / service registration files
|
|
93
|
-
- Event bus, message broker, pub/sub infrastructure
|
|
94
|
-
- Cache / invalidation infrastructure
|
|
95
|
-
- Authentication / authorization middleware
|
|
96
|
-
- Shared abstract base classes
|
|
97
|
-
- Error handling or logging infrastructure
|
|
98
|
-
- Registry / factory lookup tables
|
|
99
|
-
|
|
100
|
-
**Existing Documentation (Relevant Docs column):**
|
|
101
|
-
|
|
102
|
-
Subsystems often contain pre-existing documentation: READMEs, architecture notes,
|
|
103
|
-
legacy implementation docs, feature planning docs, cross-cutting docs. These are
|
|
104
|
-
valuable context for map-story — they describe intent, decisions, and history that
|
|
105
|
-
the code alone doesn't convey.
|
|
106
|
-
|
|
107
|
-
How to discover existing docs:
|
|
108
|
-
- Scan the subsystem directory recursively for *.md files
|
|
109
|
-
- Scan common documentation locations: `docs/`, `documentation/`, `README.md`,
|
|
110
|
-
`ARCHITECTURE.md`, `.docs/` (if legacy docs exist there)
|
|
111
|
-
- Include legacy implementation docs (`*-implementation-doc.md`) — they contain
|
|
112
|
-
detailed knowledge about what was built and why
|
|
113
|
-
|
|
114
|
-
How to curate (assign docs to modules):
|
|
115
|
-
- Read each doc's title and first few lines to understand its subject
|
|
116
|
-
- Match to the module whose domain it describes:
|
|
117
|
-
e.g., `drawing-visibility-implementation-doc.md` -> Drawing System module
|
|
118
|
-
- A doc can be relevant to multiple modules — list it in each
|
|
119
|
-
- Architecture docs and READMEs are typically relevant to ALL system modules
|
|
120
|
-
- Feature planning docs are relevant to the system they planned
|
|
121
|
-
- Cross-cutting docs match cross-cutting modules
|
|
122
|
-
|
|
123
|
-
The Existing Documentation Inventory table lists ALL docs found with their curation status.
|
|
124
|
-
Docs marked `unmatched` were found but don't clearly belong to any module — the
|
|
125
|
-
synthesis agent should decide if a new module is needed or if the doc is obsolete.
|
|
126
|
-
|
|
127
|
-
**File Coverage:**
|
|
128
|
-
|
|
129
|
-
Every non-trivial file must appear in at least one module. Exclude ONLY:
|
|
130
|
-
- Index / barrel re-exports (files that only re-export from other files, no logic)
|
|
131
|
-
- Empty stubs or placeholder files
|
|
132
|
-
- Auto-generated files (never manually edited)
|
|
133
|
-
- Build output
|
|
134
|
-
- Test files (*.test.ts, *.spec.ts, *Tests.cs, etc.)
|
|
135
|
-
|
|
136
|
-
If a file has meaningful logic and fits no existing module, create a new module for it.
|
|
137
|
-
|
|
138
|
-
</guidelines>
|
|
139
|
-
|
|
140
|
-
<what-not-to-do>
|
|
141
|
-
|
|
142
|
-
DO NOT group files by architectural layer:
|
|
143
|
-
- WRONG: { module: "Controllers", files: [UserController, OrderController, ProductController] }
|
|
144
|
-
- RIGHT: { module: "User Management", files: [UserController, CreateUserDto, UserMapper, UserService, IUserRepository, UserRepository, User, 20240101_CreateUsers.sql] }
|
|
145
|
-
|
|
146
|
-
DO NOT exclude domain models because they are shared:
|
|
147
|
-
- WRONG: Put the User model in zero modules or only one
|
|
148
|
-
- RIGHT: User model appears in every system that uses it (User Management, Authentication, etc.)
|
|
149
|
-
|
|
150
|
-
DO NOT create a module per file:
|
|
151
|
-
- WRONG: { module: "UserController", files: [UserController.ts] }
|
|
152
|
-
- RIGHT: { module: "User Management", files: [UserController.ts, ...all related files] }
|
|
153
|
-
|
|
154
|
-
DO NOT infer modules from the structure doc or architecture doc summaries alone:
|
|
155
|
-
- WRONG: Read structure.md, see folder names, create one module per folder
|
|
156
|
-
- RIGHT: Read the ACTUAL SOURCE CODE — trace E2E flows, read multiple similar files to find patterns
|
|
157
|
-
|
|
158
|
-
DO NOT treat all files as equally important:
|
|
159
|
-
- Index re-exports, empty stubs, and test files are excluded from modules
|
|
160
|
-
- Focus on files that contain real logic a developer would need to understand
|
|
161
|
-
|
|
162
|
-
</what-not-to-do>
|
|
163
|
-
|
|
164
|
-
<evolution>
|
|
165
|
-
|
|
166
|
-
module-discovery.md is a single-use artifact created per map-subsystem run.
|
|
167
|
-
It is NOT maintained over time — it is regenerated each time map-subsystem runs.
|
|
168
|
-
|
|
169
|
-
It lives in `.ace/artifacts/[subsystem_name]/module-discovery.md` (ephemeral tier).
|
|
170
|
-
It is committed to git as a record of what this map-subsystem run documented.
|
|
171
|
-
|
|
172
|
-
</evolution>
|
|
173
|
-
|
|
174
|
-
</module-discovery>
|
|
1
|
+
<module-discovery>
|
|
2
|
+
<purpose>
|
|
3
|
+
Template for `.ace/artifacts/[subsystem_name]/module-discovery.md` — the discovery
|
|
4
|
+
artifact that groups subsystem files into logical documentation modules.
|
|
5
|
+
|
|
6
|
+
This document is consumed by Step 8.7 of map-subsystem to determine which map-story
|
|
7
|
+
calls to make and what files to pass to each call.
|
|
8
|
+
|
|
9
|
+
Each module is a coherent group of related files that together represent one concern.
|
|
10
|
+
map-story receives the files and autonomously decides what documentation to produce —
|
|
11
|
+
it may create systems/ docs, patterns/ docs, cross-cutting/ docs, guides/ docs,
|
|
12
|
+
walkthroughs/ docs, and decisions/ docs, all from a single call. Discovery does NOT pre-categorize modules
|
|
13
|
+
by document type.
|
|
14
|
+
|
|
15
|
+
Files CAN appear in multiple modules. A domain model shared by two systems legitimately
|
|
16
|
+
belongs in both — map-story will document it from each system's perspective.
|
|
17
|
+
</purpose>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
# Module Discovery: [subsystem_name]
|
|
21
|
+
|
|
22
|
+
## Modules
|
|
23
|
+
|
|
24
|
+
Each row is one coherent group of related files. map-story receives these files
|
|
25
|
+
and autonomously decides what docs to create or update (systems/, patterns/,
|
|
26
|
+
cross-cutting/, guides/, walkthroughs/, decisions/).
|
|
27
|
+
|
|
28
|
+
| # | Module Name | Files | Relevant Docs |
|
|
29
|
+
|---|-------------|-------|---------------|
|
|
30
|
+
| 1 | [e.g., User Management] | [comma-separated absolute paths — full E2E flow] | [comma-separated doc paths, or `none`] |
|
|
31
|
+
| 2 | [e.g., Order Processing] | [comma-separated absolute paths — full E2E flow] | [comma-separated doc paths, or `none`] |
|
|
32
|
+
| 3 | [e.g., Repository Pattern] | [2-4 representative files that demonstrate the pattern] | [docs, or `none`] |
|
|
33
|
+
| 4 | [e.g., Dependency Injection] | [all DI/registration files] | [docs, or `none`] |
|
|
34
|
+
|
|
35
|
+
## Existing Documentation Inventory
|
|
36
|
+
|
|
37
|
+
All documentation files found within the subsystem, with their curation status.
|
|
38
|
+
|
|
39
|
+
| # | Doc Path | Type | Curated To Module |
|
|
40
|
+
|---|----------|------|-------------------|
|
|
41
|
+
| 1 | [absolute path to .md file] | [README / architecture / implementation-doc / planning / cross-cutting / other] | [module name, or `unmatched`] |
|
|
42
|
+
|
|
43
|
+
## File Coverage
|
|
44
|
+
|
|
45
|
+
**Total files in subsystem:** N
|
|
46
|
+
**Files covered by at least one module:** M
|
|
47
|
+
**Uncovered files:** [list any files intentionally excluded]
|
|
48
|
+
|
|
49
|
+
Intentionally excluded (trivial):
|
|
50
|
+
- `[path]` — [reason: index re-export / empty stub / generated code / test file]
|
|
51
|
+
</template>
|
|
52
|
+
|
|
53
|
+
<guidelines>
|
|
54
|
+
|
|
55
|
+
**What makes a good module:**
|
|
56
|
+
|
|
57
|
+
A module is a coherent group of files that together represent ONE concern worth
|
|
58
|
+
documenting. Discovery groups files by concern — map-story decides what doc types
|
|
59
|
+
to produce from each group. There are three kinds of modules to discover:
|
|
60
|
+
|
|
61
|
+
**E2E Domain Flows (most important):**
|
|
62
|
+
|
|
63
|
+
A vertical slice traced from entry point through all architectural layers.
|
|
64
|
+
|
|
65
|
+
How to discover:
|
|
66
|
+
- Identify entry points: HTTP controllers, CLI handlers, event consumers, background jobs
|
|
67
|
+
- Trace DOWNWARD through every layer:
|
|
68
|
+
controller -> mapper -> service/use-case -> domain entity + value objects
|
|
69
|
+
-> repository interface -> repository implementation -> DB scripts / migrations
|
|
70
|
+
- Collect EVERY file that participates — including DTOs, mappers, constants
|
|
71
|
+
- Group related entry points when they share the same domain concern:
|
|
72
|
+
CreateUser + GetUser + UpdateUser + DeleteUser = "User Management" (not 4 modules)
|
|
73
|
+
|
|
74
|
+
Key rule: a domain model shared across flows appears in EVERY module that uses it.
|
|
75
|
+
Do NOT exclude a file because it is shared — duplication in the file list is CORRECT.
|
|
76
|
+
|
|
77
|
+
**Recurring Implementation Patterns:**
|
|
78
|
+
|
|
79
|
+
A group of similarly structured files that follow a common template.
|
|
80
|
+
|
|
81
|
+
How to discover:
|
|
82
|
+
- Find groups of similar files (3+ repositories, 3+ mappers, 3+ handlers)
|
|
83
|
+
- Read them — if they follow the same structural template, that's a pattern
|
|
84
|
+
- Use 2-4 representative files (not all implementations — map-story will discover the rest)
|
|
85
|
+
- Examples: Repository Pattern, CQRS, Template Method, Factory/Registry, Mapper Pattern
|
|
86
|
+
|
|
87
|
+
**Shared Infrastructure / Cross-Cutting Concerns:**
|
|
88
|
+
|
|
89
|
+
Infrastructure files that multiple domain flows depend on.
|
|
90
|
+
|
|
91
|
+
How to discover:
|
|
92
|
+
- DI container / service registration files
|
|
93
|
+
- Event bus, message broker, pub/sub infrastructure
|
|
94
|
+
- Cache / invalidation infrastructure
|
|
95
|
+
- Authentication / authorization middleware
|
|
96
|
+
- Shared abstract base classes
|
|
97
|
+
- Error handling or logging infrastructure
|
|
98
|
+
- Registry / factory lookup tables
|
|
99
|
+
|
|
100
|
+
**Existing Documentation (Relevant Docs column):**
|
|
101
|
+
|
|
102
|
+
Subsystems often contain pre-existing documentation: READMEs, architecture notes,
|
|
103
|
+
legacy implementation docs, feature planning docs, cross-cutting docs. These are
|
|
104
|
+
valuable context for map-story — they describe intent, decisions, and history that
|
|
105
|
+
the code alone doesn't convey.
|
|
106
|
+
|
|
107
|
+
How to discover existing docs:
|
|
108
|
+
- Scan the subsystem directory recursively for *.md files
|
|
109
|
+
- Scan common documentation locations: `docs/`, `documentation/`, `README.md`,
|
|
110
|
+
`ARCHITECTURE.md`, `.docs/` (if legacy docs exist there)
|
|
111
|
+
- Include legacy implementation docs (`*-implementation-doc.md`) — they contain
|
|
112
|
+
detailed knowledge about what was built and why
|
|
113
|
+
|
|
114
|
+
How to curate (assign docs to modules):
|
|
115
|
+
- Read each doc's title and first few lines to understand its subject
|
|
116
|
+
- Match to the module whose domain it describes:
|
|
117
|
+
e.g., `drawing-visibility-implementation-doc.md` -> Drawing System module
|
|
118
|
+
- A doc can be relevant to multiple modules — list it in each
|
|
119
|
+
- Architecture docs and READMEs are typically relevant to ALL system modules
|
|
120
|
+
- Feature planning docs are relevant to the system they planned
|
|
121
|
+
- Cross-cutting docs match cross-cutting modules
|
|
122
|
+
|
|
123
|
+
The Existing Documentation Inventory table lists ALL docs found with their curation status.
|
|
124
|
+
Docs marked `unmatched` were found but don't clearly belong to any module — the
|
|
125
|
+
synthesis agent should decide if a new module is needed or if the doc is obsolete.
|
|
126
|
+
|
|
127
|
+
**File Coverage:**
|
|
128
|
+
|
|
129
|
+
Every non-trivial file must appear in at least one module. Exclude ONLY:
|
|
130
|
+
- Index / barrel re-exports (files that only re-export from other files, no logic)
|
|
131
|
+
- Empty stubs or placeholder files
|
|
132
|
+
- Auto-generated files (never manually edited)
|
|
133
|
+
- Build output
|
|
134
|
+
- Test files (*.test.ts, *.spec.ts, *Tests.cs, etc.)
|
|
135
|
+
|
|
136
|
+
If a file has meaningful logic and fits no existing module, create a new module for it.
|
|
137
|
+
|
|
138
|
+
</guidelines>
|
|
139
|
+
|
|
140
|
+
<what-not-to-do>
|
|
141
|
+
|
|
142
|
+
DO NOT group files by architectural layer:
|
|
143
|
+
- WRONG: { module: "Controllers", files: [UserController, OrderController, ProductController] }
|
|
144
|
+
- RIGHT: { module: "User Management", files: [UserController, CreateUserDto, UserMapper, UserService, IUserRepository, UserRepository, User, 20240101_CreateUsers.sql] }
|
|
145
|
+
|
|
146
|
+
DO NOT exclude domain models because they are shared:
|
|
147
|
+
- WRONG: Put the User model in zero modules or only one
|
|
148
|
+
- RIGHT: User model appears in every system that uses it (User Management, Authentication, etc.)
|
|
149
|
+
|
|
150
|
+
DO NOT create a module per file:
|
|
151
|
+
- WRONG: { module: "UserController", files: [UserController.ts] }
|
|
152
|
+
- RIGHT: { module: "User Management", files: [UserController.ts, ...all related files] }
|
|
153
|
+
|
|
154
|
+
DO NOT infer modules from the structure doc or architecture doc summaries alone:
|
|
155
|
+
- WRONG: Read structure.md, see folder names, create one module per folder
|
|
156
|
+
- RIGHT: Read the ACTUAL SOURCE CODE — trace E2E flows, read multiple similar files to find patterns
|
|
157
|
+
|
|
158
|
+
DO NOT treat all files as equally important:
|
|
159
|
+
- Index re-exports, empty stubs, and test files are excluded from modules
|
|
160
|
+
- Focus on files that contain real logic a developer would need to understand
|
|
161
|
+
|
|
162
|
+
</what-not-to-do>
|
|
163
|
+
|
|
164
|
+
<evolution>
|
|
165
|
+
|
|
166
|
+
module-discovery.md is a single-use artifact created per map-subsystem run.
|
|
167
|
+
It is NOT maintained over time — it is regenerated each time map-subsystem runs.
|
|
168
|
+
|
|
169
|
+
It lives in `.ace/artifacts/[subsystem_name]/module-discovery.md` (ephemeral tier).
|
|
170
|
+
It is committed to git as a record of what this map-subsystem run documented.
|
|
171
|
+
|
|
172
|
+
</evolution>
|
|
173
|
+
|
|
174
|
+
</module-discovery>
|