@aperant/framework 0.6.3 → 0.6.5

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 (244) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +64 -10
  3. package/agents/apt-improver.md +99 -0
  4. package/agents/apt-planner.md +115 -10
  5. package/dist/__test-helpers/run-cmd.d.mts +4 -2
  6. package/dist/__test-helpers/run-cmd.d.mts.map +1 -1
  7. package/dist/__test-helpers/run-cmd.mjs +56 -15
  8. package/dist/__test-helpers/run-cmd.mjs.map +1 -1
  9. package/dist/cli/artifacts/classification.d.mts.map +1 -1
  10. package/dist/cli/artifacts/classification.mjs +10 -0
  11. package/dist/cli/artifacts/classification.mjs.map +1 -1
  12. package/dist/cli/ci-watch/lock.d.mts +53 -0
  13. package/dist/cli/ci-watch/lock.d.mts.map +1 -0
  14. package/dist/cli/ci-watch/lock.mjs +172 -0
  15. package/dist/cli/ci-watch/lock.mjs.map +1 -0
  16. package/dist/cli/ci-watch/state.d.mts +36 -0
  17. package/dist/cli/ci-watch/state.d.mts.map +1 -0
  18. package/dist/cli/ci-watch/state.mjs +103 -0
  19. package/dist/cli/ci-watch/state.mjs.map +1 -0
  20. package/dist/cli/ci-watch/stop-matrix.d.mts +58 -0
  21. package/dist/cli/ci-watch/stop-matrix.d.mts.map +1 -0
  22. package/dist/cli/ci-watch/stop-matrix.mjs +164 -0
  23. package/dist/cli/ci-watch/stop-matrix.mjs.map +1 -0
  24. package/dist/cli/cli-wrappers/ci-watch.d.mts +2 -0
  25. package/dist/cli/cli-wrappers/ci-watch.d.mts.map +1 -0
  26. package/dist/cli/cli-wrappers/ci-watch.mjs +9 -0
  27. package/dist/cli/cli-wrappers/ci-watch.mjs.map +1 -0
  28. package/dist/cli/commands/adr.d.mts +5 -0
  29. package/dist/cli/commands/adr.d.mts.map +1 -0
  30. package/dist/cli/commands/adr.mjs +228 -0
  31. package/dist/cli/commands/adr.mjs.map +1 -0
  32. package/dist/cli/commands/ci-watch.d.mts +7 -0
  33. package/dist/cli/commands/ci-watch.d.mts.map +1 -0
  34. package/dist/cli/commands/ci-watch.mjs +465 -0
  35. package/dist/cli/commands/ci-watch.mjs.map +1 -0
  36. package/dist/cli/commands/context.d.mts +7 -0
  37. package/dist/cli/commands/context.d.mts.map +1 -0
  38. package/dist/cli/commands/context.mjs +224 -0
  39. package/dist/cli/commands/context.mjs.map +1 -0
  40. package/dist/cli/commands/event.d.mts.map +1 -1
  41. package/dist/cli/commands/event.mjs +59 -24
  42. package/dist/cli/commands/event.mjs.map +1 -1
  43. package/dist/cli/commands/host-detect.d.mts +1 -1
  44. package/dist/cli/commands/host-detect.d.mts.map +1 -1
  45. package/dist/cli/commands/host-detect.mjs +30 -3
  46. package/dist/cli/commands/host-detect.mjs.map +1 -1
  47. package/dist/cli/commands/init.d.mts.map +1 -1
  48. package/dist/cli/commands/init.mjs +73 -5
  49. package/dist/cli/commands/init.mjs.map +1 -1
  50. package/dist/cli/commands/modes.d.mts +13 -0
  51. package/dist/cli/commands/modes.d.mts.map +1 -0
  52. package/dist/cli/commands/modes.mjs +220 -0
  53. package/dist/cli/commands/modes.mjs.map +1 -0
  54. package/dist/cli/commands/pr-review-audit-fixer.d.mts +41 -2
  55. package/dist/cli/commands/pr-review-audit-fixer.d.mts.map +1 -1
  56. package/dist/cli/commands/pr-review-audit-fixer.mjs +91 -14
  57. package/dist/cli/commands/pr-review-audit-fixer.mjs.map +1 -1
  58. package/dist/cli/commands/route.d.mts.map +1 -1
  59. package/dist/cli/commands/route.mjs +11 -2
  60. package/dist/cli/commands/route.mjs.map +1 -1
  61. package/dist/cli/commands/task.d.mts.map +1 -1
  62. package/dist/cli/commands/task.mjs +136 -6
  63. package/dist/cli/commands/task.mjs.map +1 -1
  64. package/dist/cli/commands/tokens.d.mts.map +1 -1
  65. package/dist/cli/commands/tokens.mjs +150 -6
  66. package/dist/cli/commands/tokens.mjs.map +1 -1
  67. package/dist/cli/commands/triage.d.mts +8 -0
  68. package/dist/cli/commands/triage.d.mts.map +1 -0
  69. package/dist/cli/commands/triage.mjs +259 -0
  70. package/dist/cli/commands/triage.mjs.map +1 -0
  71. package/dist/cli/config/post-merge-sweep.d.mts +18 -0
  72. package/dist/cli/config/post-merge-sweep.d.mts.map +1 -1
  73. package/dist/cli/config/post-merge-sweep.mjs +48 -3
  74. package/dist/cli/config/post-merge-sweep.mjs.map +1 -1
  75. package/dist/cli/consistency/registry.d.mts +11 -0
  76. package/dist/cli/consistency/registry.d.mts.map +1 -1
  77. package/dist/cli/consistency/registry.mjs +13 -0
  78. package/dist/cli/consistency/registry.mjs.map +1 -1
  79. package/dist/cli/coordination/agent-identity.d.mts +9 -0
  80. package/dist/cli/coordination/agent-identity.d.mts.map +1 -1
  81. package/dist/cli/coordination/agent-identity.mjs +11 -0
  82. package/dist/cli/coordination/agent-identity.mjs.map +1 -1
  83. package/dist/cli/coordination/event-log.d.mts +27 -0
  84. package/dist/cli/coordination/event-log.d.mts.map +1 -1
  85. package/dist/cli/coordination/event-log.mjs +72 -2
  86. package/dist/cli/coordination/event-log.mjs.map +1 -1
  87. package/dist/cli/design/frontmatter-schema.d.mts +3 -3
  88. package/dist/cli/design/frontmatter-schema.d.mts.map +1 -1
  89. package/dist/cli/design/frontmatter-schema.mjs +3 -1
  90. package/dist/cli/design/frontmatter-schema.mjs.map +1 -1
  91. package/dist/cli/dispatch.d.mts.map +1 -1
  92. package/dist/cli/dispatch.mjs +14 -1
  93. package/dist/cli/dispatch.mjs.map +1 -1
  94. package/dist/cli/gate/registry.d.mts +11 -0
  95. package/dist/cli/gate/registry.d.mts.map +1 -1
  96. package/dist/cli/gate/registry.mjs +13 -0
  97. package/dist/cli/gate/registry.mjs.map +1 -1
  98. package/dist/cli/help.d.mts.map +1 -1
  99. package/dist/cli/help.mjs +1 -0
  100. package/dist/cli/help.mjs.map +1 -1
  101. package/dist/cli/host/detect.d.mts +1 -0
  102. package/dist/cli/host/detect.d.mts.map +1 -1
  103. package/dist/cli/host/detect.mjs +5 -0
  104. package/dist/cli/host/detect.mjs.map +1 -1
  105. package/dist/cli/route/envelope.d.mts +68 -4
  106. package/dist/cli/route/envelope.d.mts.map +1 -1
  107. package/dist/cli/route/envelope.mjs +140 -103
  108. package/dist/cli/route/envelope.mjs.map +1 -1
  109. package/dist/cli/route/skill-discover.d.mts +11 -0
  110. package/dist/cli/route/skill-discover.d.mts.map +1 -1
  111. package/dist/cli/route/skill-discover.mjs +46 -1
  112. package/dist/cli/route/skill-discover.mjs.map +1 -1
  113. package/dist/cli/skill-author/contract.d.mts +20 -0
  114. package/dist/cli/skill-author/contract.d.mts.map +1 -1
  115. package/dist/cli/skill-author/contract.mjs +27 -0
  116. package/dist/cli/skill-author/contract.mjs.map +1 -1
  117. package/dist/cli/skill-author/skill-template.d.mts.map +1 -1
  118. package/dist/cli/skill-author/skill-template.mjs +4 -3
  119. package/dist/cli/skill-author/skill-template.mjs.map +1 -1
  120. package/dist/cli/task/worktree-cleanup.d.mts +9 -1
  121. package/dist/cli/task/worktree-cleanup.d.mts.map +1 -1
  122. package/dist/cli/task/worktree-cleanup.mjs +190 -9
  123. package/dist/cli/task/worktree-cleanup.mjs.map +1 -1
  124. package/dist/plugin/.claude-plugin/plugin.json +1 -1
  125. package/dist/plugin/agents/apt-planner.md +1 -1
  126. package/dist/plugin/skills/apt/SKILL.md +111 -5
  127. package/dist/plugin/skills/apt-author-skill/SKILL.md +11 -0
  128. package/dist/plugin/skills/apt-bootstrap/SKILL.md +1 -0
  129. package/dist/plugin/skills/apt-classify/SKILL.md +1 -0
  130. package/dist/plugin/skills/apt-close-task/SKILL.md +1 -0
  131. package/dist/plugin/skills/apt-create-docs/SKILL.md +1 -0
  132. package/dist/plugin/skills/apt-debug/SKILL.md +2 -0
  133. package/dist/plugin/skills/apt-design/SKILL.md +2 -0
  134. package/dist/plugin/skills/apt-discuss/SKILL.md +2 -0
  135. package/dist/plugin/skills/apt-docs/SKILL.md +2 -0
  136. package/dist/plugin/skills/apt-execute/SKILL.md +1 -0
  137. package/dist/plugin/skills/apt-mockup/SKILL.md +2 -0
  138. package/dist/plugin/skills/apt-pause/SKILL.md +1 -0
  139. package/dist/plugin/skills/apt-personas/SKILL.md +1 -0
  140. package/dist/plugin/skills/apt-plan/SKILL.md +2 -0
  141. package/dist/plugin/skills/apt-pr-review/SKILL.md +1 -0
  142. package/dist/plugin/skills/apt-quick/SKILL.md +2 -0
  143. package/dist/plugin/skills/apt-resume/SKILL.md +1 -0
  144. package/dist/plugin/skills/apt-review/SKILL.md +1 -0
  145. package/dist/plugin/skills/apt-roadmap/SKILL.md +1 -0
  146. package/dist/plugin/skills/apt-roundtable/SKILL.md +2 -0
  147. package/dist/plugin/skills/apt-run/SKILL.md +1 -0
  148. package/dist/plugin/skills/apt-scan/SKILL.md +1 -0
  149. package/dist/plugin/skills/apt-setup/SKILL.md +1 -0
  150. package/dist/plugin/skills/apt-ship/SKILL.md +6 -5
  151. package/dist/plugin/skills/apt-stress-test/SKILL.md +1 -0
  152. package/dist/plugin/skills/apt-terminal/SKILL.md +1 -0
  153. package/dist/plugin/skills/apt-update/SKILL.md +5 -0
  154. package/dist/plugin/skills/apt-verify/SKILL.md +1 -0
  155. package/dist/plugin/skills/apt-verify-proof/SKILL.md +1 -0
  156. package/dist/types/config.d.ts +85 -0
  157. package/dist/types/config.d.ts.map +1 -1
  158. package/package.json +125 -122
  159. package/prompts/coder.md +2 -0
  160. package/prompts/planner.md +12 -0
  161. package/prompts/spec_writer.md +9 -0
  162. package/skills/apt/SKILL.md +112 -5
  163. package/skills/apt-author-skill/SKILL.md +11 -0
  164. package/skills/apt-bootstrap/SKILL.md +1 -0
  165. package/skills/apt-classify/SKILL.md +1 -0
  166. package/skills/apt-close-task/SKILL.md +33 -1
  167. package/skills/apt-create-docs/SKILL.md +1 -0
  168. package/skills/apt-debug/SKILL.md +41 -6
  169. package/skills/apt-debug/appendices/diagnose-discipline.md +119 -0
  170. package/skills/apt-design/SKILL.md +2 -0
  171. package/skills/apt-diagram/SKILL.md +342 -0
  172. package/skills/apt-diagram/appendices/design-discipline.md +97 -0
  173. package/skills/apt-discuss/SKILL.md +27 -0
  174. package/skills/apt-discuss/appendices/grill-discipline.md +104 -0
  175. package/skills/apt-discuss/appendices/zoom-out-helper.md +79 -0
  176. package/skills/apt-docs/SKILL.md +2 -0
  177. package/skills/apt-execute/SKILL.md +49 -5
  178. package/skills/apt-execute/appendices/tdd-mode.md +107 -0
  179. package/skills/apt-improve/DEEPENING.md +84 -0
  180. package/skills/apt-improve/INTERFACE-DESIGN.md +97 -0
  181. package/skills/apt-improve/LANGUAGE.md +104 -0
  182. package/skills/apt-improve/SKILL.md +141 -0
  183. package/skills/apt-mockup/SKILL.md +2 -0
  184. package/skills/apt-pause/SKILL.md +1 -0
  185. package/skills/apt-personas/SKILL.md +1 -0
  186. package/skills/apt-plan/SKILL.md +149 -4
  187. package/skills/apt-planner.md +42 -1
  188. package/skills/apt-pr-review/SKILL.md +47 -16
  189. package/skills/apt-prototype/LOGIC.md +109 -0
  190. package/skills/apt-prototype/SKILL.md +143 -0
  191. package/skills/apt-prototype/UI.md +90 -0
  192. package/skills/apt-quick/SKILL.md +32 -0
  193. package/skills/apt-resume/SKILL.md +1 -0
  194. package/skills/apt-review/SKILL.md +3 -0
  195. package/skills/apt-roadmap/SKILL.md +1 -0
  196. package/skills/apt-roundtable/SKILL.md +2 -0
  197. package/skills/apt-run/SKILL.md +33 -4
  198. package/skills/apt-scan/SKILL.md +1 -0
  199. package/skills/apt-setup/SKILL.md +129 -2
  200. package/skills/apt-ship/SKILL.md +52 -4
  201. package/skills/apt-stress-test/SKILL.md +1 -0
  202. package/skills/apt-terminal/SKILL.md +1 -0
  203. package/skills/apt-triage/AGENT-BRIEF.md +84 -0
  204. package/skills/apt-triage/OUT-OF-SCOPE.md +75 -0
  205. package/skills/apt-triage/SKILL.md +169 -0
  206. package/skills/apt-update/SKILL.md +3 -0
  207. package/skills/apt-verify/SKILL.md +4 -0
  208. package/skills/apt-verify-proof/SKILL.md +4 -0
  209. package/skills/apt-watch-ci/SKILL.md +163 -0
  210. package/skills/apt-zoom-out/SKILL.md +130 -0
  211. package/src/cli/artifacts/classification.mjs +10 -0
  212. package/src/cli/ci-watch/lock.mjs +178 -0
  213. package/src/cli/ci-watch/state.mjs +103 -0
  214. package/src/cli/ci-watch/stop-matrix.mjs +181 -0
  215. package/src/cli/cli-wrappers/ci-watch.mjs +9 -0
  216. package/src/cli/commands/adr.mjs +243 -0
  217. package/src/cli/commands/ci-watch.mjs +503 -0
  218. package/src/cli/commands/context.mjs +244 -0
  219. package/src/cli/commands/event.mjs +63 -24
  220. package/src/cli/commands/host-detect.mjs +33 -7
  221. package/src/cli/commands/init.mjs +83 -5
  222. package/src/cli/commands/modes.mjs +215 -0
  223. package/src/cli/commands/pr-review-audit-fixer.mjs +95 -16
  224. package/src/cli/commands/route.mjs +11 -2
  225. package/src/cli/commands/task.mjs +152 -18
  226. package/src/cli/commands/tokens.mjs +157 -6
  227. package/src/cli/commands/triage.mjs +277 -0
  228. package/src/cli/config/post-merge-sweep.mjs +49 -3
  229. package/src/cli/consistency/registry.mjs +14 -0
  230. package/src/cli/coordination/agent-identity.mjs +12 -0
  231. package/src/cli/coordination/event-log.mjs +73 -2
  232. package/src/cli/design/frontmatter-schema.mjs +3 -1
  233. package/src/cli/dispatch.mjs +15 -1
  234. package/src/cli/gate/registry.mjs +14 -0
  235. package/src/cli/help.mjs +1 -0
  236. package/src/cli/host/detect.mjs +5 -0
  237. package/src/cli/route/envelope.mjs +140 -106
  238. package/src/cli/route/skill-discover.mjs +46 -1
  239. package/src/cli/skill-author/contract.mjs +29 -0
  240. package/src/cli/skill-author/skill-template.mjs +4 -3
  241. package/src/cli/task/worktree-cleanup.mjs +191 -9
  242. package/templates/adr-format.md +56 -0
  243. package/templates/config.json +4 -0
  244. package/templates/context-format.md +34 -0
@@ -0,0 +1,224 @@
1
+ /**
2
+ * commands/context.mjs — `apt-tools context write` (Pocock adoption ST-5, AC4).
3
+ *
4
+ * Upserts a term-block into the project's CONTEXT.md (the persistent
5
+ * project glossary). Format ported from Pocock's CONTEXT-FORMAT.md
6
+ * (see packages/framework/templates/context-format.md for the MIT
7
+ * attribution + field semantics).
8
+ *
9
+ * Idempotent: re-running with the same `--term` updates the existing
10
+ * block in place. Fields not explicitly overridden via flags are
11
+ * preserved from the prior block.
12
+ *
13
+ * CLI:
14
+ * apt-tools context write <project-dir>
15
+ * --term <bold-term>
16
+ * --definition <one-line>
17
+ * [--aliases-to-avoid alias1,alias2]
18
+ * [--cardinality 'one-to-many' | 'one-to-one' | 'many-to-many']
19
+ * [--flagged-ambiguity 'note']
20
+ * [--example-dialogue 'example']
21
+ *
22
+ * Output: JSON envelope { status: 'ok' | 'error',
23
+ * command: 'context-write',
24
+ * file: <absolute path>,
25
+ * term: <term>,
26
+ * operation: 'created' | 'updated' }.
27
+ */
28
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
29
+ import { resolve } from 'node:path';
30
+ import { parseFlags } from '../util/args.mjs';
31
+ import { err, ok } from '../util/result.mjs';
32
+ const HEADER = '# Project glossary (CONTEXT.md)';
33
+ const HEADER_NOTE = '<!-- Managed by `apt-tools context write`. Hand-edits are preserved across upserts. -->';
34
+ /**
35
+ * Parse a single term-block out of CONTEXT.md.
36
+ *
37
+ * A block looks like:
38
+ * ## {Term}
39
+ *
40
+ * {Definition line}
41
+ *
42
+ * - **Aliases to avoid:** ...
43
+ * - **Cardinality:** ...
44
+ * - **Flagged ambiguities:** ...
45
+ * - **Example dialogue:** ...
46
+ *
47
+ * Returns `{ definition, aliasesToAvoid, cardinality, flaggedAmbiguity, exampleDialogue }`
48
+ * with each field as a string or null.
49
+ *
50
+ * @param {string} blockText
51
+ */
52
+ function parseBlock(blockText) {
53
+ const lines = blockText.split('\n');
54
+ // First non-empty line after the ## header is the definition.
55
+ let definition = '';
56
+ let i = 0;
57
+ while (i < lines.length && lines[i].trim() === '')
58
+ i++;
59
+ if (i < lines.length && !lines[i].startsWith('- ')) {
60
+ definition = lines[i].trim();
61
+ i++;
62
+ }
63
+ const fields = {
64
+ aliasesToAvoid: null,
65
+ cardinality: null,
66
+ flaggedAmbiguity: null,
67
+ exampleDialogue: null,
68
+ };
69
+ for (; i < lines.length; i++) {
70
+ const line = lines[i];
71
+ const m = line.match(/^- \*\*([^*]+):\*\*\s*(.*)$/);
72
+ if (!m)
73
+ continue;
74
+ const key = m[1].trim();
75
+ const value = m[2].trim();
76
+ switch (key) {
77
+ case 'Aliases to avoid':
78
+ fields.aliasesToAvoid = value;
79
+ break;
80
+ case 'Cardinality':
81
+ fields.cardinality = value;
82
+ break;
83
+ case 'Flagged ambiguities':
84
+ fields.flaggedAmbiguity = value;
85
+ break;
86
+ case 'Example dialogue':
87
+ fields.exampleDialogue = value;
88
+ break;
89
+ }
90
+ }
91
+ return { definition, ...fields };
92
+ }
93
+ /**
94
+ * Render a term-block to markdown.
95
+ *
96
+ * @param {string} term
97
+ * @param {{
98
+ * definition: string,
99
+ * aliasesToAvoid: string|null,
100
+ * cardinality: string|null,
101
+ * flaggedAmbiguity: string|null,
102
+ * exampleDialogue: string|null,
103
+ * }} block
104
+ */
105
+ function renderBlock(term, block) {
106
+ const lines = [`## ${term}`, '', block.definition, ''];
107
+ const fields = [
108
+ ['Aliases to avoid', block.aliasesToAvoid],
109
+ ['Cardinality', block.cardinality],
110
+ ['Flagged ambiguities', block.flaggedAmbiguity],
111
+ ['Example dialogue', block.exampleDialogue],
112
+ ];
113
+ for (const [key, value] of fields) {
114
+ if (value !== null && value !== undefined && value !== '') {
115
+ lines.push(`- **${key}:** ${value}`);
116
+ }
117
+ }
118
+ return lines.join('\n');
119
+ }
120
+ /**
121
+ * Find an existing block by term in the source markdown.
122
+ * Returns `{ start, end, prior }` or `null` if no such block exists.
123
+ * `start` and `end` are inclusive/exclusive offsets into `source`.
124
+ *
125
+ * @param {string} source
126
+ * @param {string} term
127
+ */
128
+ function findBlock(source, term) {
129
+ const escaped = term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
130
+ const headerRe = new RegExp(`^##\\s+${escaped}\\s*$`, 'm');
131
+ const m = headerRe.exec(source);
132
+ if (!m)
133
+ return null;
134
+ const start = m.index;
135
+ // Find the next ## or # header or EOF. LOG-004: including H1 prevents a
136
+ // manually-inserted `# Heading` from being absorbed into the block's content.
137
+ const tail = source.slice(m.index + m[0].length);
138
+ const nextRe = /^#{1,2}\s+/m;
139
+ const nextMatch = nextRe.exec(tail);
140
+ const end = nextMatch ? m.index + m[0].length + nextMatch.index : source.length;
141
+ const blockText = source.slice(m.index + m[0].length, end);
142
+ return { start, end, prior: parseBlock(blockText) };
143
+ }
144
+ /**
145
+ * CLI entry: `apt-tools context <subcommand> <project-dir> [flags]`.
146
+ *
147
+ * Only `write` is supported in v1; other subcommands return a usage error.
148
+ */
149
+ export function cmdContext(subcommand, projectDir, extraArgs) {
150
+ if (subcommand !== 'write') {
151
+ return err('Usage: apt-tools context write <project-dir> --term <term> --definition <line> [--aliases-to-avoid ...] [--cardinality ...] [--flagged-ambiguity ...] [--example-dialogue ...]', 1, { command: 'context' });
152
+ }
153
+ if (!projectDir) {
154
+ return err('Usage: apt-tools context write <project-dir> --term <term> --definition <line>', 1, {
155
+ command: 'context-write',
156
+ });
157
+ }
158
+ const flags = parseFlags(extraArgs ?? []);
159
+ const term = flags.get('term');
160
+ const definition = flags.get('definition');
161
+ if (typeof term !== 'string' || term.trim() === '') {
162
+ return err('--term <bold-term> is required', 1, { command: 'context-write' });
163
+ }
164
+ if (typeof definition !== 'string' || definition.trim() === '') {
165
+ return err('--definition <one-line> is required', 1, { command: 'context-write' });
166
+ }
167
+ const absProjectDir = resolve(projectDir);
168
+ if (!existsSync(absProjectDir)) {
169
+ return err(`project directory not found: ${absProjectDir}`, 1, {
170
+ command: 'context-write',
171
+ });
172
+ }
173
+ const contextPath = resolve(absProjectDir, 'CONTEXT.md');
174
+ let source = '';
175
+ if (existsSync(contextPath)) {
176
+ source = readFileSync(contextPath, 'utf-8');
177
+ }
178
+ else {
179
+ source = `${HEADER}\n\n${HEADER_NOTE}\n\n`;
180
+ }
181
+ // Ensure the file starts with the header even if it existed pre-Pocock.
182
+ if (!source.startsWith(HEADER)) {
183
+ source = `${HEADER}\n\n${HEADER_NOTE}\n\n${source}`;
184
+ }
185
+ const existing = findBlock(source, term);
186
+ const incoming = {
187
+ definition,
188
+ aliasesToAvoid: typeof flags.get('aliases-to-avoid') === 'string' ? flags.get('aliases-to-avoid') : null,
189
+ cardinality: typeof flags.get('cardinality') === 'string' ? flags.get('cardinality') : null,
190
+ flaggedAmbiguity: typeof flags.get('flagged-ambiguity') === 'string' ? flags.get('flagged-ambiguity') : null,
191
+ exampleDialogue: typeof flags.get('example-dialogue') === 'string' ? flags.get('example-dialogue') : null,
192
+ };
193
+ // Merge: prior block fields are preserved unless explicitly overridden.
194
+ const merged = existing
195
+ ? {
196
+ definition: incoming.definition, // definition always overrides
197
+ aliasesToAvoid: incoming.aliasesToAvoid ?? existing.prior.aliasesToAvoid,
198
+ cardinality: incoming.cardinality ?? existing.prior.cardinality,
199
+ flaggedAmbiguity: incoming.flaggedAmbiguity ?? existing.prior.flaggedAmbiguity,
200
+ exampleDialogue: incoming.exampleDialogue ?? existing.prior.exampleDialogue,
201
+ }
202
+ : incoming;
203
+ const rendered = renderBlock(term, merged);
204
+ let updated;
205
+ if (existing) {
206
+ // Replace the existing block (header + body) with the rendered one.
207
+ const before = source.slice(0, existing.start).replace(/\n+$/, '');
208
+ const after = source.slice(existing.end).replace(/^\n+/, '');
209
+ updated = `${before}\n\n${rendered}\n${after.length > 0 ? `\n${after}` : ''}`;
210
+ }
211
+ else {
212
+ // Append a new block at the end.
213
+ updated = `${source.replace(/\n+$/, '')}\n\n${rendered}\n`;
214
+ }
215
+ writeFileSync(contextPath, updated);
216
+ return ok({
217
+ status: 'ok',
218
+ command: 'context-write',
219
+ file: contextPath,
220
+ term,
221
+ operation: existing ? 'updated' : 'created',
222
+ });
223
+ }
224
+ //# sourceMappingURL=context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.mjs","sourceRoot":"","sources":["../../../src/cli/commands/context.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/event.mjs"],"names":[],"mappings":"AAaA,uHA4OC"}
1
+ {"version":3,"file":"event.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/event.mjs"],"names":[],"mappings":"AAsDA,uHA0OC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * commands/event.mjs — append-only event log for coordination history (C29).
3
3
  */
4
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
4
+ import { appendFileSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
5
5
  import { hostname } from 'node:os';
6
6
  import { join, resolve } from 'node:path';
7
7
  import { readLifecycleEventsForDay } from '../coordination/event-log.mjs';
@@ -9,6 +9,44 @@ import { createCoordinationStore } from '../coordination/store.mjs';
9
9
  import { detectWorktree } from '../git/worktree-detect.mjs';
10
10
  import { parseFlags } from '../util/args.mjs';
11
11
  import { err, ok } from '../util/result.mjs';
12
+ // QUA-003 / PRF-002 — single source of truth for valid event types.
13
+ // VALID_EVENT_TYPES is the authoritative list; CI_WATCH_EVENT_TYPES is the O(1)
14
+ // membership Set used to short-circuit ci-watch.* events to the JSONL path (D-04).
15
+ const VALID_EVENT_TYPES = [
16
+ 'task-claimed',
17
+ 'task-completed',
18
+ 'task-failed',
19
+ 'wave-started',
20
+ 'wave-completed',
21
+ 'install.started',
22
+ 'install.ok',
23
+ 'install.failed',
24
+ 'ci-watch.armed',
25
+ 'ci-watch.tick',
26
+ 'ci-watch.fix-pushed',
27
+ 'ci-watch.stopped',
28
+ ];
29
+ const CI_WATCH_EVENT_TYPES = new Set([
30
+ 'ci-watch.armed',
31
+ 'ci-watch.tick',
32
+ 'ci-watch.fix-pushed',
33
+ 'ci-watch.stopped',
34
+ ]);
35
+ /**
36
+ * Append a ci-watch event to the per-day JSONL file (D-04).
37
+ * O(1) — no directory scan. Creates the events dir if missing.
38
+ * @param {string} eventsDir
39
+ * @param {object} payload
40
+ * @returns {{ jsonlFile: string, jsonlPath: string }}
41
+ */
42
+ function appendToJsonl(eventsDir, payload) {
43
+ mkdirSync(eventsDir, { recursive: true });
44
+ const today = new Date().toISOString().slice(0, 10);
45
+ const jsonlFile = `${today}.jsonl`;
46
+ const jsonlPath = join(eventsDir, jsonlFile);
47
+ appendFileSync(jsonlPath, `${JSON.stringify(payload)}\n`, 'utf-8');
48
+ return { jsonlFile, jsonlPath };
49
+ }
12
50
  export function cmdEvent(subcommand, projectDir, extraArgs) {
13
51
  if (!subcommand)
14
52
  return err('Usage: apt-tools event <append|list|rebuild-state> <project-dir> [flags]');
@@ -33,18 +71,12 @@ export function cmdEvent(subcommand, projectDir, extraArgs) {
33
71
  // install.started — { task_id, ecosystem, pid, started_at, log_path }
34
72
  // install.ok — { task_id, ecosystem, duration_ms, log_path }
35
73
  // install.failed — { task_id, ecosystem, exit_code, duration_ms, reason, log_path }
36
- const validTypes = [
37
- 'task-claimed',
38
- 'task-completed',
39
- 'task-failed',
40
- 'wave-started',
41
- 'wave-completed',
42
- 'install.started',
43
- 'install.ok',
44
- 'install.failed',
45
- ];
46
- if (!validTypes.includes(type)) {
47
- return err(`Invalid event type: ${type}. Valid types: ${validTypes.join(', ')}`);
74
+ // C28 (post-ship CI watcher D-04) — added ci-watch.{armed,tick,fix-pushed,stopped}
75
+ // so /apt:watch-ci tick / start / stop can stream events into
76
+ // .aperant/events/{today}.jsonl. The rebuild-state switch below
77
+ // silently ignores them (they're informational, not task-lifecycle).
78
+ if (!VALID_EVENT_TYPES.includes(type)) {
79
+ return err(`Invalid event type: ${type}. Valid types: ${VALID_EVENT_TYPES.join(', ')}`);
48
80
  }
49
81
  let data = {};
50
82
  if (dataStr) {
@@ -55,6 +87,19 @@ export function cmdEvent(subcommand, projectDir, extraArgs) {
55
87
  return err(`Invalid JSON for --data: ${e.message}`);
56
88
  }
57
89
  }
90
+ // PRF-002 — ci-watch.* events go to the per-day JSONL path (D-04).
91
+ // O(1) append; no directory scan needed.
92
+ if (CI_WATCH_EVENT_TYPES.has(type)) {
93
+ const event = {
94
+ type,
95
+ subtask,
96
+ worker: `${hostname()}-${process.pid}`,
97
+ timestamp: new Date().toISOString(),
98
+ data,
99
+ };
100
+ const { jsonlFile } = appendToJsonl(eventsDir, event);
101
+ return ok({ status: 'ok', command: 'event-append', event_file: jsonlFile, event });
102
+ }
58
103
  // Find next sequence number — scan existing files for highest number
59
104
  const existingFiles = readdirSync(eventsDir).filter((f) => f.endsWith('.json'));
60
105
  let maxId = 0;
@@ -159,17 +204,7 @@ export function cmdEvent(subcommand, projectDir, extraArgs) {
159
204
  try {
160
205
  const event = JSON.parse(readFileSync(join(eventsDir, f), 'utf-8'));
161
206
  // Validate event type before processing (T-11-04 mitigation)
162
- const validTypes = [
163
- 'task-claimed',
164
- 'task-completed',
165
- 'task-failed',
166
- 'wave-started',
167
- 'wave-completed',
168
- 'install.started',
169
- 'install.ok',
170
- 'install.failed',
171
- ];
172
- if (!validTypes.includes(event.type))
207
+ if (!VALID_EVENT_TYPES.includes(event.type))
173
208
  continue;
174
209
  eventsProcessed++;
175
210
  switch (event.type) {
@@ -1 +1 @@
1
- {"version":3,"file":"event.mjs","sourceRoot":"","sources":["../../../src/cli/commands/event.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event.mjs","sourceRoot":"","sources":["../../../src/cli/commands/event.mjs"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export function cmdHostDetect(): import("../util/result.mjs").CommandResult;
2
- export function cmdReconcile(projectDir: any): import("../util/result.mjs").CommandResult;
2
+ export function cmdReconcile(projectDir: any, extraArgs?: any[]): import("../util/result.mjs").CommandResult;
3
3
  //# sourceMappingURL=host-detect.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host-detect.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/host-detect.mjs"],"names":[],"mappings":"AAeA,4EAOC;AAED,0FA8DC"}
1
+ {"version":3,"file":"host-detect.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/host-detect.mjs"],"names":[],"mappings":"AAeA,4EAOC;AAgBD,6GA0EC"}
@@ -19,20 +19,37 @@ export function cmdHostDetect() {
19
19
  host,
20
20
  });
21
21
  }
22
- export function cmdReconcile(projectDir) {
22
+ /**
23
+ * Parse `--track <quick|standard|deep>` from positional args. Returns the
24
+ * lowercased track or null when the flag is absent. Unknown values are
25
+ * silently ignored to preserve backward-compat — the caller falls back to
26
+ * global phase_delegation in that case.
27
+ */
28
+ function parseTrackFlag(args) {
29
+ if (!Array.isArray(args))
30
+ return null;
31
+ const idx = args.indexOf('--track');
32
+ if (idx === -1 || idx === args.length - 1)
33
+ return null;
34
+ const val = String(args[idx + 1]).toLowerCase();
35
+ return val === 'quick' || val === 'standard' || val === 'deep' ? val : null;
36
+ }
37
+ export function cmdReconcile(projectDir, extraArgs = []) {
23
38
  if (!projectDir)
24
- return err('Usage: apt-tools reconcile <project-dir>');
39
+ return err('Usage: apt-tools reconcile <project-dir> [--track quick|standard|deep]');
25
40
  const targetDir = resolve(projectDir);
26
41
  if (!existsSync(targetDir))
27
42
  return err(`Directory does not exist: ${targetDir}`);
28
43
  const host = detectHost();
29
44
  const { capabilities } = host;
45
+ const track = parseTrackFlag(extraArgs);
30
46
  // Read orchestration config — default all fields to 'auto' if missing
31
47
  let orchestrationConfig = {
32
48
  phase_delegation: 'auto',
33
49
  review_mode: 'auto',
34
50
  debate_mode: 'auto',
35
51
  };
52
+ let perTrack = null;
36
53
  const configPath = join(targetDir, '.aperant', 'config.json');
37
54
  if (existsSync(configPath)) {
38
55
  try {
@@ -43,14 +60,20 @@ export function cmdReconcile(projectDir) {
43
60
  review_mode: cfg.orchestration.review_mode ?? 'auto',
44
61
  debate_mode: cfg.orchestration.debate_mode ?? 'auto',
45
62
  };
63
+ perTrack = cfg.orchestration.per_track ?? null;
46
64
  }
47
65
  }
48
66
  catch {
49
67
  // Malformed config — use defaults
50
68
  }
51
69
  }
70
+ // Per-track phase_delegation override (roundtable 2026-05-14 R7):
71
+ // when --track is passed AND per_track[track] is set, use that as
72
+ // the requested mode for phase_delegation. Otherwise fall back to
73
+ // the global value. review_mode and debate_mode are not track-scoped.
74
+ const requestedPhaseDelegation = track && perTrack?.[track] ? perTrack[track] : orchestrationConfig.phase_delegation;
52
75
  // Resolve each dimension
53
- const pdResult = resolveMode(orchestrationConfig.phase_delegation, capabilities, 'phase_delegation');
76
+ const pdResult = resolveMode(requestedPhaseDelegation, capabilities, 'phase_delegation');
54
77
  const rmResult = resolveMode(orchestrationConfig.review_mode, capabilities, 'review_mode');
55
78
  const dmResult = resolveMode(orchestrationConfig.debate_mode, capabilities, 'debate_mode');
56
79
  const resolved = {
@@ -66,6 +89,10 @@ export function cmdReconcile(projectDir) {
66
89
  config: orchestrationConfig,
67
90
  resolved,
68
91
  };
92
+ if (track) {
93
+ result.track = track;
94
+ result.track_source = perTrack && perTrack[track] ? 'per_track' : 'fallback';
95
+ }
69
96
  if (downgrades.length > 0) {
70
97
  result.downgrades = downgrades;
71
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"host-detect.mjs","sourceRoot":"","sources":["../../../src/cli/commands/host-detect.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-detect.mjs","sourceRoot":"","sources":["../../../src/cli/commands/host-detect.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/init.mjs"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wCAHW,MAAM,EAAE,GACN;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAC,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAC,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAgD7N;AA+vBD;;;;;;GAMG;AACH,oCAJW,MAAM,cACN,MAAM,EAAE,GACN,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAiI3D;;;;;cAj4Ba,MAAM,EAAE;;;;qBACR,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC;;;;gBACP,MAAM,GAAC,MAAM;;;;4BACb,MAAM,EAAE;;;;aACR,OAAO;;;;mBACP,OAAO;eACP,OAAO,0BAA0B,EAAE,eAAe;;;;;;;;;aAErC,MAAM;eAAS,OAAO;cAAQ,MAAM;iBAAW,MAAM;;;;;;aAErD,MAAM;eAAS,OAAO;gBAAU,MAAM;;;;;;kBAEvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;0BAAoB,OAAO,EAAE;2BAAqB,OAAO,EAAE;oBAAc,OAAO,EAAE"}
1
+ {"version":3,"file":"init.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/init.mjs"],"names":[],"mappings":"AAmEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wCAHW,MAAM,EAAE,GACN;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAC,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAC,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAgD7N;AA40BD;;;;;;GAMG;AACH,oCAJW,MAAM,cACN,MAAM,EAAE,GACN,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAiI3D;;;;;cA98Ba,MAAM,EAAE;;;;qBACR,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC;;;;gBACP,MAAM,GAAC,MAAM;;;;4BACb,MAAM,EAAE;;;;aACR,OAAO;;;;mBACP,OAAO;eACP,OAAO,0BAA0B,EAAE,eAAe;;;;;;;;;aAErC,MAAM;eAAS,OAAO;cAAQ,MAAM;iBAAW,MAAM;;;;;;aAErD,MAAM;eAAS,OAAO;gBAAU,MAAM;;;;;;kBAEvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;0BAAoB,OAAO,EAAE;2BAAqB,OAAO,EAAE;oBAAc,OAAO,EAAE"}
@@ -14,6 +14,7 @@
14
14
  * byte-for-byte from the previous implementation. Only the runtime-install
15
15
  * half is replaced.
16
16
  */
17
+ import { execSync } from 'node:child_process';
17
18
  import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, } from 'node:fs';
18
19
  import { basename, dirname, join, resolve } from 'node:path';
19
20
  import { fileURLToPath } from 'node:url';
@@ -191,6 +192,52 @@ function buildRerunWithHint(projectDir, parsedFlags, requiresExplicit) {
191
192
  }
192
193
  return `apt-tools init ${projectDir} ${flags.join(' ')}`.trim();
193
194
  }
195
+ /**
196
+ * Infer `share.visibility` from the target's git tracking state.
197
+ *
198
+ * Repos that already track files inside `.aperant/` or any runtime root
199
+ * (`.claude/`, `.codex/`, …) are *behaviourally* team-mode: contributors
200
+ * pull the framework's installed files via git, not via local
201
+ * `apt-tools init`. Treating them as solo on an upgrade (the old `--yes`
202
+ * default did exactly this — bumped the schema, silently wrote
203
+ * `visibility: 'solo'`, and the project-gitignore allow-list flipped)
204
+ * is a destructive, non-obvious surprise. The 0.6.0/0.6.1 dogfood
205
+ * incidents both hit this rake.
206
+ *
207
+ * Returns:
208
+ * - `'team'` when any tracked file lives under `.aperant/` or a runtime
209
+ * root.
210
+ * - `'solo'` when the dir is a git repo but no such tracked file
211
+ * exists.
212
+ * - `undefined` when the target isn't a git repo (caller falls back to
213
+ * the descriptor default, which preserves greenfield behaviour).
214
+ *
215
+ * @param {string} targetDir
216
+ * @returns {'team'|'solo'|undefined}
217
+ */
218
+ function inferVisibilityFromGit(targetDir) {
219
+ try {
220
+ execSync('git rev-parse --is-inside-work-tree 2>/dev/null', {
221
+ cwd: targetDir,
222
+ stdio: ['ignore', 'ignore', 'ignore'],
223
+ });
224
+ }
225
+ catch {
226
+ return undefined;
227
+ }
228
+ const probePaths = ['.aperant', ...RUNTIMES.map((r) => r.installRoot)];
229
+ try {
230
+ const out = execSync(`git ls-files -- ${probePaths.map((p) => `'${p}'`).join(' ')}`, {
231
+ cwd: targetDir,
232
+ encoding: 'utf8',
233
+ stdio: ['ignore', 'pipe', 'ignore'],
234
+ }).trim();
235
+ return out.length > 0 ? 'team' : 'solo';
236
+ }
237
+ catch {
238
+ return 'solo';
239
+ }
240
+ }
194
241
  /**
195
242
  * Apply Class A defaults that were collapsed under --yes /
196
243
  * --accept-new-defaults back into the migrated config so finishInit
@@ -212,22 +259,31 @@ function buildRerunWithHint(projectDir, parsedFlags, requiresExplicit) {
212
259
  * writes — keeps the prototype-pollution guard and dot-path semantics in
213
260
  * one place.
214
261
  *
262
+ * `overrides` lets callers substitute the descriptor default for a
263
+ * specific shortKey — used in the upgrade path to honour
264
+ * `inferVisibilityFromGit`, so a team repo that ran `--yes` doesn't get
265
+ * silently flipped to solo.
266
+ *
215
267
  * @param {{ migrated: Record<string, unknown>, applied_defaults: Array<{ key: string, value: unknown, why: string, source?: string }> }} migration
216
268
  * @param {Array<{ key: string, why: string, default?: unknown }>} collapsedEntries
217
269
  * @param {string} source `--yes` or `--accept-new-defaults`.
218
270
  * @param {unknown} templateVersion Template's version, applied to migrated.
271
+ * @param {Record<string, unknown>} [overrides] shortKey → inferred value.
219
272
  */
220
- function applyCollapsedClassAToMigration(migration, collapsedEntries, source, templateVersion) {
273
+ function applyCollapsedClassAToMigration(migration, collapsedEntries, source, templateVersion, overrides = {}) {
221
274
  for (const r of collapsedEntries) {
222
275
  const desc = findClassDescriptor(r.key);
223
276
  if (!desc)
224
277
  continue;
225
- setAt(migration.migrated, desc.key, desc.default);
278
+ const hasOverride = Object.hasOwn(overrides, desc.shortKey);
279
+ const value = hasOverride ? overrides[desc.shortKey] : desc.default;
280
+ const recordedSource = hasOverride ? `${source} (inferred from git tracking)` : source;
281
+ setAt(migration.migrated, desc.key, value);
226
282
  migration.applied_defaults.push({
227
283
  key: desc.shortKey,
228
- value: desc.default,
284
+ value,
229
285
  why: r.why,
230
- source,
286
+ source: recordedSource,
231
287
  });
232
288
  }
233
289
  if (templateVersion !== undefined) {
@@ -284,7 +340,19 @@ function nonInteractiveAnswers(targetDir, canonicalRoot, archetype, parsedFlags)
284
340
  // solo-mode — re-introducing the 0.6.0 dogfood bug.
285
341
  let requires = migration.requires_explicit;
286
342
  if (parsedFlags.yes && requires.length > 0) {
287
- applyCollapsedClassAToMigration(migration, requires, '--yes', templateConfig.version);
343
+ // Prefer evidence over descriptor defaults: a repo that already
344
+ // tracks `.aperant/` or any runtime root is team-mode by
345
+ // behaviour. Without this, `--yes` flips long-tracked repos to
346
+ // solo on the v3→v4 schema bump (0.6.0/0.6.1 dogfood incidents).
347
+ // Explicit --solo/--team in parsedFlags wins; only collapse-time
348
+ // inference runs here.
349
+ const overrides = {};
350
+ if (!parsedFlags.visibility && requires.some((r) => r.key === 'visibility')) {
351
+ const inferred = inferVisibilityFromGit(targetDir);
352
+ if (inferred !== undefined)
353
+ overrides.visibility = inferred;
354
+ }
355
+ applyCollapsedClassAToMigration(migration, requires, '--yes', templateConfig.version, overrides);
288
356
  requires = [];
289
357
  }
290
358
  else if (parsedFlags.accept_new_defaults && requires.length > 0) {