@aperant/framework 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +215 -0
  2. package/dist/cli/commands/check-version.d.mts.map +1 -1
  3. package/dist/cli/commands/check-version.mjs +76 -1
  4. package/dist/cli/commands/check-version.mjs.map +1 -1
  5. package/dist/cli/commands/ci-watch.d.mts.map +1 -1
  6. package/dist/cli/commands/ci-watch.mjs +73 -5
  7. package/dist/cli/commands/ci-watch.mjs.map +1 -1
  8. package/dist/cli/commands/health-check.mjs +1 -1
  9. package/dist/cli/commands/health-check.mjs.map +1 -1
  10. package/dist/cli/commands/init.d.mts +17 -1
  11. package/dist/cli/commands/init.d.mts.map +1 -1
  12. package/dist/cli/commands/init.mjs +183 -11
  13. package/dist/cli/commands/init.mjs.map +1 -1
  14. package/dist/cli/commands/release-notes.d.mts +11 -0
  15. package/dist/cli/commands/release-notes.d.mts.map +1 -0
  16. package/dist/cli/commands/release-notes.mjs +173 -0
  17. package/dist/cli/commands/release-notes.mjs.map +1 -0
  18. package/dist/cli/commands/route.d.mts.map +1 -1
  19. package/dist/cli/commands/route.mjs +37 -2
  20. package/dist/cli/commands/route.mjs.map +1 -1
  21. package/dist/cli/commands/task.d.mts.map +1 -1
  22. package/dist/cli/commands/task.mjs +48 -0
  23. package/dist/cli/commands/task.mjs.map +1 -1
  24. package/dist/cli/config/load.d.mts +14 -0
  25. package/dist/cli/config/load.d.mts.map +1 -1
  26. package/dist/cli/config/load.mjs +40 -0
  27. package/dist/cli/config/load.mjs.map +1 -1
  28. package/dist/cli/config/upgrade-gitignore.d.mts.map +1 -1
  29. package/dist/cli/config/upgrade-gitignore.mjs +6 -0
  30. package/dist/cli/config/upgrade-gitignore.mjs.map +1 -1
  31. package/dist/cli/consistency/parse-review.d.mts.map +1 -1
  32. package/dist/cli/consistency/parse-review.mjs +4 -1
  33. package/dist/cli/consistency/parse-review.mjs.map +1 -1
  34. package/dist/cli/dispatch.d.mts.map +1 -1
  35. package/dist/cli/dispatch.mjs +2 -0
  36. package/dist/cli/dispatch.mjs.map +1 -1
  37. package/dist/cli/gate/gates/review-clean.d.mts.map +1 -1
  38. package/dist/cli/gate/gates/review-clean.mjs +4 -2
  39. package/dist/cli/gate/gates/review-clean.mjs.map +1 -1
  40. package/dist/cli/help.d.mts.map +1 -1
  41. package/dist/cli/help.mjs +1 -0
  42. package/dist/cli/help.mjs.map +1 -1
  43. package/dist/cli/host/detect.d.mts +122 -9
  44. package/dist/cli/host/detect.d.mts.map +1 -1
  45. package/dist/cli/host/detect.mjs +132 -0
  46. package/dist/cli/host/detect.mjs.map +1 -1
  47. package/dist/cli/install/legacy-paths.d.mts +38 -0
  48. package/dist/cli/install/legacy-paths.d.mts.map +1 -0
  49. package/dist/cli/install/legacy-paths.mjs +69 -0
  50. package/dist/cli/install/legacy-paths.mjs.map +1 -0
  51. package/dist/cli/install/runtime-migrate.d.mts +84 -0
  52. package/dist/cli/install/runtime-migrate.d.mts.map +1 -0
  53. package/dist/cli/install/runtime-migrate.mjs +244 -0
  54. package/dist/cli/install/runtime-migrate.mjs.map +1 -0
  55. package/dist/cli/install/update-chips.d.mts +23 -0
  56. package/dist/cli/install/update-chips.d.mts.map +1 -1
  57. package/dist/cli/install/update-chips.mjs +60 -0
  58. package/dist/cli/install/update-chips.mjs.map +1 -1
  59. package/dist/cli/release-notes/compile.d.mts +38 -0
  60. package/dist/cli/release-notes/compile.d.mts.map +1 -0
  61. package/dist/cli/release-notes/compile.mjs +244 -0
  62. package/dist/cli/release-notes/compile.mjs.map +1 -0
  63. package/dist/cli/release-notes/draft.d.mts +73 -0
  64. package/dist/cli/release-notes/draft.d.mts.map +1 -0
  65. package/dist/cli/release-notes/draft.mjs +120 -0
  66. package/dist/cli/release-notes/draft.mjs.map +1 -0
  67. package/dist/cli/release-notes/output-dir.d.mts +20 -0
  68. package/dist/cli/release-notes/output-dir.d.mts.map +1 -0
  69. package/dist/cli/release-notes/output-dir.mjs +42 -0
  70. package/dist/cli/release-notes/output-dir.mjs.map +1 -0
  71. package/dist/cli/release-notes/persona-filter.d.mts +51 -0
  72. package/dist/cli/release-notes/persona-filter.d.mts.map +1 -0
  73. package/dist/cli/release-notes/persona-filter.mjs +127 -0
  74. package/dist/cli/release-notes/persona-filter.mjs.map +1 -0
  75. package/dist/cli/release-notes/publish.d.mts +23 -0
  76. package/dist/cli/release-notes/publish.d.mts.map +1 -0
  77. package/dist/cli/release-notes/publish.mjs +125 -0
  78. package/dist/cli/release-notes/publish.mjs.map +1 -0
  79. package/dist/cli/release-notes/ship-autodraft.d.mts +37 -0
  80. package/dist/cli/release-notes/ship-autodraft.d.mts.map +1 -0
  81. package/dist/cli/release-notes/ship-autodraft.mjs +97 -0
  82. package/dist/cli/release-notes/ship-autodraft.mjs.map +1 -0
  83. package/dist/cli/route/drift-detect.d.mts +20 -0
  84. package/dist/cli/route/drift-detect.d.mts.map +1 -0
  85. package/dist/cli/route/drift-detect.mjs +107 -0
  86. package/dist/cli/route/drift-detect.mjs.map +1 -0
  87. package/dist/cli/util/aperant-section.d.mts +34 -0
  88. package/dist/cli/util/aperant-section.d.mts.map +1 -0
  89. package/dist/cli/util/aperant-section.mjs +127 -0
  90. package/dist/cli/util/aperant-section.mjs.map +1 -0
  91. package/dist/cli/util/copy.d.mts +28 -1
  92. package/dist/cli/util/copy.d.mts.map +1 -1
  93. package/dist/cli/util/copy.mjs +43 -55
  94. package/dist/cli/util/copy.mjs.map +1 -1
  95. package/dist/cli/util/semver.d.mts +17 -0
  96. package/dist/cli/util/semver.d.mts.map +1 -0
  97. package/dist/cli/util/semver.mjs +29 -0
  98. package/dist/cli/util/semver.mjs.map +1 -0
  99. package/dist/cli/util/skill-installs.d.mts +65 -9
  100. package/dist/cli/util/skill-installs.d.mts.map +1 -1
  101. package/dist/cli/util/skill-installs.mjs +130 -21
  102. package/dist/cli/util/skill-installs.mjs.map +1 -1
  103. package/dist/cli/util/version-preflight.d.mts +44 -0
  104. package/dist/cli/util/version-preflight.d.mts.map +1 -0
  105. package/dist/cli/util/version-preflight.mjs +66 -0
  106. package/dist/cli/util/version-preflight.mjs.map +1 -0
  107. package/dist/types/config.d.ts +11 -7
  108. package/dist/types/config.d.ts.map +1 -1
  109. package/package.json +133 -133
  110. package/skills/apt-close-task/SKILL.md +30 -0
  111. package/skills/apt-diagram/SKILL.md +45 -9
  112. package/skills/apt-release-notes/SKILL.md +193 -0
  113. package/skills/apt-release-notes/appendices/persona-voice.md +59 -0
  114. package/skills/apt-setup/SKILL.md +146 -3
  115. package/skills/apt-ship/SKILL.md +63 -4
  116. package/skills/apt-spar/SKILL.md +36 -11
  117. package/skills/apt-update/SKILL.md +77 -10
  118. package/skills/apt-watch-ci/SKILL.md +6 -3
  119. package/src/cli/commands/check-version.mjs +73 -1
  120. package/src/cli/commands/ci-watch.mjs +74 -5
  121. package/src/cli/commands/health-check.mjs +1 -1
  122. package/src/cli/commands/init.mjs +202 -10
  123. package/src/cli/commands/release-notes.mjs +187 -0
  124. package/src/cli/commands/route.mjs +38 -2
  125. package/src/cli/commands/task.mjs +49 -0
  126. package/src/cli/config/load.mjs +37 -0
  127. package/src/cli/config/upgrade-gitignore.mjs +6 -0
  128. package/src/cli/consistency/parse-review.mjs +3 -1
  129. package/src/cli/dispatch.mjs +2 -0
  130. package/src/cli/gate/gates/review-clean.mjs +4 -2
  131. package/src/cli/help.mjs +1 -0
  132. package/src/cli/host/detect.mjs +135 -0
  133. package/src/cli/install/legacy-paths.mjs +69 -0
  134. package/src/cli/install/runtime-migrate.mjs +252 -0
  135. package/src/cli/install/update-chips.mjs +57 -0
  136. package/src/cli/release-notes/compile.mjs +261 -0
  137. package/src/cli/release-notes/draft.mjs +133 -0
  138. package/src/cli/release-notes/output-dir.mjs +52 -0
  139. package/src/cli/release-notes/persona-filter.mjs +126 -0
  140. package/src/cli/release-notes/publish.mjs +128 -0
  141. package/src/cli/release-notes/ship-autodraft.mjs +106 -0
  142. package/src/cli/route/drift-detect.mjs +107 -0
  143. package/src/cli/util/aperant-section.mjs +136 -0
  144. package/src/cli/util/copy.mjs +43 -56
  145. package/src/cli/util/semver.mjs +28 -0
  146. package/src/cli/util/skill-installs.mjs +134 -21
  147. package/src/cli/util/version-preflight.mjs +65 -0
  148. package/templates/aperant-claude-md-appendix.md +37 -0
  149. package/templates/config.json +28 -3
  150. package/workflows/docs.md +12 -0
@@ -0,0 +1,173 @@
1
+ /**
2
+ * commands/release-notes.mjs — `apt-tools release-notes <sub>` (subtask 2-3
3
+ * of persona-aware-changelog-and-release-note_16-05-26).
4
+ *
5
+ * Deterministic I/O surface for the apt:release-notes skill. NEVER calls
6
+ * an LLM. The SKILL.md body invokes the host LLM to author the note text
7
+ * and hands the structured payload to this CLI for persistence + compile.
8
+ *
9
+ * Sub-verb menu:
10
+ *
11
+ * apt-tools release-notes draft <project-dir> --pr <n> --note "<text>"
12
+ * [--persona <id>] [--output-dir <path>] [--commits <sha,sha,...>]
13
+ * [--date <YYYY-MM-DD>]
14
+ * → write `<output_dir>/_unreleased/PR-<n>.md`. Idempotent.
15
+ *
16
+ * apt-tools release-notes compile <project-dir> --tag <tag>
17
+ * [--output-dir <path>]
18
+ * → read every `_unreleased/PR-*.md`, filter by persona_filter, write
19
+ * `<output_dir>/<tag>.md`, clear `_unreleased/` only on success.
20
+ *
21
+ * apt-tools release-notes publish <project-dir> --tag <tag>
22
+ * [--output-dir <path>] [--dry-run]
23
+ * → read `<output_dir>/<tag>.md` + shell `gh release create/edit`.
24
+ *
25
+ * Return shape: always `{ status, command, ... }`. The wrap() helper in
26
+ * dispatch.mjs translates `{ status: 'error' }` envelopes into exit-1.
27
+ */
28
+ import { resolve } from 'node:path';
29
+ import { compileTag } from '../release-notes/compile.mjs';
30
+ import { writeDraft } from '../release-notes/draft.mjs';
31
+ import { publishTag } from '../release-notes/publish.mjs';
32
+ import { getFlagValue } from '../util/common-flags.mjs';
33
+ import { err, ok } from '../util/result.mjs';
34
+ /**
35
+ * Dispatch shape (mirrors `audit`): `release-notes: (args) =>
36
+ * wrap(cmdReleaseNotes)(args[1], args[2], args.slice(3))` — args[1] is the
37
+ * sub-verb, args[2] is the project dir.
38
+ *
39
+ * @param {string | undefined} subcommand
40
+ * @param {string | undefined} projectDirArg
41
+ * @param {string[] | undefined} extraArgs
42
+ */
43
+ export async function cmdReleaseNotes(subcommand, projectDirArg, extraArgs) {
44
+ const args = extraArgs ?? [];
45
+ if (!subcommand) {
46
+ return err('Usage: apt-tools release-notes <draft|compile|publish> <project-dir> [flags]\n' +
47
+ ' draft write docs/releases/_unreleased/PR-<n>.md\n' +
48
+ ' compile read fragments → docs/releases/<tag>.md, clear _unreleased/\n' +
49
+ ' publish shell gh release create/edit');
50
+ }
51
+ const projectDir = resolve(projectDirArg && projectDirArg.length > 0 ? projectDirArg : '.');
52
+ switch (subcommand) {
53
+ case 'draft':
54
+ return runDraft(projectDir, args);
55
+ case 'compile':
56
+ return runCompile(projectDir, args);
57
+ case 'publish':
58
+ return runPublish(projectDir, args);
59
+ default:
60
+ return err(`apt-tools release-notes: unknown subcommand "${subcommand}". Known: draft, compile, publish.`);
61
+ }
62
+ }
63
+ /**
64
+ * draft — write a single PR fragment.
65
+ *
66
+ * @param {string} projectDir
67
+ * @param {string[]} args
68
+ */
69
+ function runDraft(projectDir, args) {
70
+ const prRaw = getFlagValue(args, '--pr');
71
+ const note = getFlagValue(args, '--note');
72
+ const persona = getFlagValue(args, '--persona');
73
+ const outputDirFlag = getFlagValue(args, '--output-dir');
74
+ const commitsFlag = getFlagValue(args, '--commits');
75
+ const dateFlag = getFlagValue(args, '--date');
76
+ if (!prRaw) {
77
+ return err('release-notes draft: --pr <number> is required');
78
+ }
79
+ const pr = Number.parseInt(prRaw, 10);
80
+ if (!Number.isFinite(pr) || pr <= 0) {
81
+ return err(`release-notes draft: --pr must be a positive integer (got "${prRaw}")`);
82
+ }
83
+ if (!note || note.trim().length === 0) {
84
+ return err('release-notes draft: --note "<text>" is required (and must be non-empty)');
85
+ }
86
+ const commits = commitsFlag
87
+ ? commitsFlag
88
+ .split(',')
89
+ .map((s) => s.trim())
90
+ .filter((s) => s.length > 0)
91
+ : null;
92
+ const result = writeDraft({
93
+ projectDir,
94
+ pr,
95
+ note,
96
+ persona,
97
+ outputDir: outputDirFlag,
98
+ commits,
99
+ date: dateFlag,
100
+ });
101
+ return ok({
102
+ status: 'ok',
103
+ command: 'release-notes-draft',
104
+ projectDir,
105
+ pr,
106
+ written: result.written,
107
+ reason: result.reason,
108
+ path: result.path,
109
+ });
110
+ }
111
+ /**
112
+ * compile — produce the per-tag narrative file from accumulated fragments.
113
+ *
114
+ * @param {string} projectDir
115
+ * @param {string[]} args
116
+ */
117
+ function runCompile(projectDir, args) {
118
+ const tag = getFlagValue(args, '--tag');
119
+ if (!tag) {
120
+ return err('release-notes compile: --tag <tag> is required');
121
+ }
122
+ const outputDirFlag = getFlagValue(args, '--output-dir');
123
+ const result = compileTag({ projectDir, tag, outputDir: outputDirFlag });
124
+ return ok({
125
+ status: 'ok',
126
+ command: 'release-notes-compile',
127
+ projectDir,
128
+ tag,
129
+ written: result.written,
130
+ path: result.path,
131
+ fragments_total: result.fragmentsTotal,
132
+ fragments_in_body: result.fragmentsInBody,
133
+ fragments_in_triage: result.fragmentsInTriage,
134
+ fragments_filtered: result.fragmentsFiltered,
135
+ cleared_unreleased: result.clearedUnreleased,
136
+ });
137
+ }
138
+ /**
139
+ * publish — shell `gh release create/edit`. Returns a graceful
140
+ * `{status: 'skipped', reason: 'gh-not-found'}` when gh is unavailable.
141
+ *
142
+ * @param {string} projectDir
143
+ * @param {string[]} args
144
+ */
145
+ function runPublish(projectDir, args) {
146
+ const tag = getFlagValue(args, '--tag');
147
+ if (!tag) {
148
+ return err('release-notes publish: --tag <tag> is required');
149
+ }
150
+ const outputDirFlag = getFlagValue(args, '--output-dir');
151
+ const dryRun = args.includes('--dry-run');
152
+ const result = publishTag({ projectDir, tag, outputDir: outputDirFlag, dryRun });
153
+ if (result.status === 'skipped') {
154
+ return ok({
155
+ status: 'skipped',
156
+ command: 'release-notes-publish',
157
+ projectDir,
158
+ tag,
159
+ reason: result.reason,
160
+ notes_path: result.notesPath ?? null,
161
+ });
162
+ }
163
+ return ok({
164
+ status: 'ok',
165
+ command: 'release-notes-publish',
166
+ projectDir,
167
+ tag,
168
+ mode: result.mode,
169
+ dry_run: dryRun,
170
+ notes_path: result.notesPath,
171
+ });
172
+ }
173
+ //# sourceMappingURL=release-notes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-notes.mjs","sourceRoot":"","sources":["../../../src/cli/commands/release-notes.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/route.mjs"],"names":[],"mappings":"AA+KA,sGAkRC;AAED;;;GAGG;AACH;;;;;IAqGC"}
1
+ {"version":3,"file":"route.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/route.mjs"],"names":[],"mappings":"AAmMA,sGAkSC;AAED;;;GAGG;AACH;;;;;IAqGC"}
@@ -25,15 +25,35 @@
25
25
  */
26
26
  import { existsSync, readFileSync } from 'node:fs';
27
27
  import { homedir } from 'node:os';
28
- import { join, resolve } from 'node:path';
28
+ import { dirname, join, resolve } from 'node:path';
29
+ import { fileURLToPath } from 'node:url';
29
30
  import { getTaskIsolationConfig, getTrustedSkillSources } from '../config/load.mjs';
30
31
  import '../gate/gates/index.mjs';
31
32
  import * as gateRegistry from '../gate/registry.mjs';
32
33
  import { detectHost, SUPPORTED_HOSTS } from '../host/detect.mjs';
34
+ import { detectSourceWorkspaceDrift } from '../route/drift-detect.mjs';
33
35
  import { buildEnvelope } from '../route/envelope.mjs';
34
36
  import { discoverSkills } from '../route/skill-discover.mjs';
35
37
  import { executionModesList, isValidExecutionMode } from '../task/execution-mode.mjs';
36
38
  import { err, exitWith, ok } from '../util/result.mjs';
39
+ /**
40
+ * Read the installed kernel's own version from its package.json.
41
+ * Same pattern as commands/check-version.mjs:108-109 — `__dirname` of
42
+ * the running module resolves to the installed kernel for npm-installed
43
+ * users and to the source workspace for in-monorepo runs. Returns null
44
+ * on any I/O / parse failure (drift-detect treats null as "skip").
45
+ */
46
+ function readInstalledKernelVersion() {
47
+ try {
48
+ const here = dirname(fileURLToPath(import.meta.url));
49
+ const pkgPath = resolve(here, '..', '..', '..', 'package.json');
50
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
51
+ return typeof pkg?.version === 'string' ? pkg.version : null;
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ }
37
57
  /**
38
58
  * Read the shared update-check cache (written by the SessionStart hook
39
59
  * via apt-check-update-worker.js) and extract the fields /apt's SKILL.md
@@ -260,7 +280,22 @@ export function cmdRoute(projectDir, extraArgs) {
260
280
  const host_capabilities = routeHost.capabilities;
261
281
  const task_isolation = getTaskIsolationConfig(targetDir);
262
282
  const updateCheck = readUpdateCheckCache();
263
- const update_check = updateCheck ? { ...updateCheck } : null;
283
+ let update_check = updateCheck ? { ...updateCheck } : null;
284
+ // FRAMEWORK-BUG-017 rung 1: in-band detection of workspace-ahead-of-
285
+ // installed-kernel drift. Catches the self-host contributor case
286
+ // where the SessionStart worker can't see the local same-PR fix yet.
287
+ // Workspace wins when both signals fire (workspace is the source of
288
+ // truth for self-host).
289
+ const installedKernelVersion = readInstalledKernelVersion();
290
+ const drift = detectSourceWorkspaceDrift(targetDir, installedKernelVersion);
291
+ if (drift) {
292
+ update_check = {
293
+ update_available: true,
294
+ installed_version: drift.installed_version,
295
+ latest_version: drift.source_version,
296
+ reason: 'workspace source ahead of installed kernel — run /apt:update --from-source',
297
+ };
298
+ }
264
299
  // ---------------- Deterministic branches (zero-behavior-change) ----------------
265
300
  // These fire regardless of host detection status — missing host is not
266
301
  // fatal for init/status/help/skill-passthrough.
@@ -1 +1 @@
1
- {"version":3,"file":"route.mjs","sourceRoot":"","sources":["../../../src/cli/commands/route.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.mjs","sourceRoot":"","sources":["../../../src/cli/commands/route.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/task.mjs"],"names":[],"mappings":"AA4CA,6HAyiDC"}
1
+ {"version":3,"file":"task.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/task.mjs"],"names":[],"mappings":"AA4CA,6HAulDC"}
@@ -919,6 +919,12 @@ export function cmdTask(subcommand, projectDir, extraArgs) {
919
919
  updateOut.ci_watch_skip_reason = ciWatchResult.ci_watch_skip_reason;
920
920
  if (ciWatchResult.ci_watch)
921
921
  updateOut.ci_watch = ciWatchResult.ci_watch;
922
+ // FRAMEWORK-BUG-018 Track 1: surface `scheduler_handle` at the top
923
+ // level so `apt-ship/SKILL.md` §7.2 can read it via
924
+ // `.scheduler_handle // empty` without dotting through `.ci_watch.*`.
925
+ // `null` today (no production path populates it); Track 2 lands
926
+ // non-null values without re-plumbing the envelope shape.
927
+ updateOut.scheduler_handle = ciWatchResult.scheduler_handle ?? null;
922
928
  }
923
929
  updateResult = ok(updateOut);
924
930
  }, { projectRoot: targetDir });
@@ -1097,6 +1103,45 @@ export function cmdTask(subcommand, projectDir, extraArgs) {
1097
1103
  // `gh pr view`, and close the ones GitHub says merged. Per spec §B1.
1098
1104
  const onlyTaskId = flags.get('task') || null;
1099
1105
  const dryRun = flags.has('dry-run');
1106
+ const narrateOnly = flags.has('narrate-only');
1107
+ // FRAMEWORK-BUG-020 — `--narrate-only` is read-only enumeration of
1108
+ // the pending_narration[] ledger. No `gh pr view`, no `task close`
1109
+ // spawn, no ledger writes. The skill body (apt-close-task §4) drains
1110
+ // per row via `task narration-drain` AFTER a successful narrator
1111
+ // spawn — at-least-once semantics is safe because the narrator is
1112
+ // anchor-replace idempotent (agents/apt-team-docs-narrator.md §6/§2).
1113
+ if (narrateOnly) {
1114
+ if (!existsSync(statePath)) {
1115
+ return ok({
1116
+ status: 'ok',
1117
+ command: 'task-close-merged',
1118
+ mode: 'narrate-only',
1119
+ closed: [],
1120
+ skipped: [],
1121
+ errors: [],
1122
+ });
1123
+ }
1124
+ const stateBlob = JSON.parse(readFileSync(statePath, 'utf-8'));
1125
+ const ledger = Array.isArray(stateBlob.pending_narration) ? stateBlob.pending_narration : [];
1126
+ const filtered = onlyTaskId
1127
+ ? ledger.filter((row) => row && row.task_id === onlyTaskId)
1128
+ : ledger;
1129
+ return ok({
1130
+ status: 'ok',
1131
+ command: 'task-close-merged',
1132
+ mode: 'narrate-only',
1133
+ closed: filtered.map((row) => ({
1134
+ task_id: row.task_id,
1135
+ scope: row.scope ?? null,
1136
+ phase_id: row.phase_id ?? null,
1137
+ closed_at: row.closed_at ?? null,
1138
+ pr_number: row.pr_number ?? null,
1139
+ narration_pending: true,
1140
+ })),
1141
+ skipped: [],
1142
+ errors: [],
1143
+ });
1144
+ }
1100
1145
  if (!existsSync(statePath)) {
1101
1146
  return ok({
1102
1147
  status: 'ok',
@@ -1526,6 +1571,7 @@ function armCiWatchAfterPrUrl(targetDir, task, prUrl) {
1526
1571
  ci_watch_armed: true,
1527
1572
  ci_watch_skip_reason: null,
1528
1573
  ci_watch: envelope,
1574
+ scheduler_handle: envelope.scheduler_handle ?? null,
1529
1575
  };
1530
1576
  }
1531
1577
  if (envelope.status === 'busy' && envelope.reason === 'already-armed') {
@@ -1533,12 +1579,14 @@ function armCiWatchAfterPrUrl(targetDir, task, prUrl) {
1533
1579
  ci_watch_armed: true,
1534
1580
  ci_watch_skip_reason: 'already-armed',
1535
1581
  ci_watch: envelope,
1582
+ scheduler_handle: envelope.scheduler_handle ?? null,
1536
1583
  };
1537
1584
  }
1538
1585
  return {
1539
1586
  ci_watch_armed: false,
1540
1587
  ci_watch_skip_reason: envelope.reason || 'start-failed',
1541
1588
  ci_watch: envelope,
1589
+ scheduler_handle: envelope.scheduler_handle ?? null,
1542
1590
  };
1543
1591
  }
1544
1592
  /**