@ashlr/hub 3.2.6 → 3.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.
Files changed (195) hide show
  1. package/CHANGELOG.md +290 -0
  2. package/README.md +4 -1
  3. package/dist/build-identity.json +2 -2
  4. package/dist/cli/activation.d.ts +41 -0
  5. package/dist/cli/activation.js +485 -0
  6. package/dist/cli/activation.js.map +1 -0
  7. package/dist/cli/audit.js +18 -0
  8. package/dist/cli/audit.js.map +1 -1
  9. package/dist/cli/backlog.d.ts +0 -5
  10. package/dist/cli/backlog.js +18 -0
  11. package/dist/cli/backlog.js.map +1 -1
  12. package/dist/cli/comms.js +20 -0
  13. package/dist/cli/comms.js.map +1 -1
  14. package/dist/cli/completions.d.ts +6 -1
  15. package/dist/cli/completions.js +37 -11
  16. package/dist/cli/completions.js.map +1 -1
  17. package/dist/cli/conductor-permit.d.ts +1 -0
  18. package/dist/cli/conductor-permit.js +122 -0
  19. package/dist/cli/conductor-permit.js.map +1 -0
  20. package/dist/cli/daemon.js +10 -3
  21. package/dist/cli/daemon.js.map +1 -1
  22. package/dist/cli/demo.d.ts +0 -27
  23. package/dist/cli/demo.js +17 -0
  24. package/dist/cli/demo.js.map +1 -1
  25. package/dist/cli/goals.d.ts +2 -0
  26. package/dist/cli/goals.js +90 -5
  27. package/dist/cli/goals.js.map +1 -1
  28. package/dist/cli/help.js +21 -3
  29. package/dist/cli/help.js.map +1 -1
  30. package/dist/cli/inbox.d.ts +14 -2
  31. package/dist/cli/inbox.js +137 -23
  32. package/dist/cli/inbox.js.map +1 -1
  33. package/dist/cli/index.d.ts +1 -0
  34. package/dist/cli/index.js +16 -0
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/cli/loop.js +26 -5
  37. package/dist/cli/loop.js.map +1 -1
  38. package/dist/cli/onboard.d.ts +0 -13
  39. package/dist/cli/onboard.js +20 -0
  40. package/dist/cli/onboard.js.map +1 -1
  41. package/dist/cli/resources.js +15 -0
  42. package/dist/cli/resources.js.map +1 -1
  43. package/dist/cli/run.js +1 -1
  44. package/dist/cli/run.js.map +1 -1
  45. package/dist/cli/sandbox.js +43 -0
  46. package/dist/cli/sandbox.js.map +1 -1
  47. package/dist/cli/tui.d.ts +0 -6
  48. package/dist/cli/tui.js +14 -0
  49. package/dist/cli/tui.js.map +1 -1
  50. package/dist/core/comms/elon-dialogue.js +16 -7
  51. package/dist/core/comms/elon-dialogue.js.map +1 -1
  52. package/dist/core/config.js +70 -0
  53. package/dist/core/config.js.map +1 -1
  54. package/dist/core/daemon/activation-permit.d.ts +357 -33
  55. package/dist/core/daemon/activation-permit.js +1585 -183
  56. package/dist/core/daemon/activation-permit.js.map +1 -1
  57. package/dist/core/daemon/goal-conductor-permit-operator.d.ts +75 -0
  58. package/dist/core/daemon/goal-conductor-permit-operator.js +842 -0
  59. package/dist/core/daemon/goal-conductor-permit-operator.js.map +1 -0
  60. package/dist/core/daemon/loop.d.ts +13 -1
  61. package/dist/core/daemon/loop.js +294 -29
  62. package/dist/core/daemon/loop.js.map +1 -1
  63. package/dist/core/daemon/runtime-activation-resident-start-protocol.d.ts +141 -0
  64. package/dist/core/daemon/runtime-activation-resident-start-protocol.js +462 -0
  65. package/dist/core/daemon/runtime-activation-resident-start-protocol.js.map +1 -0
  66. package/dist/core/daemon/runtime-activation-resident-start-runtime.d.ts +27 -0
  67. package/dist/core/daemon/runtime-activation-resident-start-runtime.js +28 -0
  68. package/dist/core/daemon/runtime-activation-resident-start-runtime.js.map +1 -0
  69. package/dist/core/daemon/runtime-activation-stopped-consumer.d.ts +139 -0
  70. package/dist/core/daemon/runtime-activation-stopped-consumer.js +995 -0
  71. package/dist/core/daemon/runtime-activation-stopped-consumer.js.map +1 -0
  72. package/dist/core/daemon/runtime-activation-stopped-runtime.d.ts +36 -0
  73. package/dist/core/daemon/runtime-activation-stopped-runtime.js +134 -0
  74. package/dist/core/daemon/runtime-activation-stopped-runtime.js.map +1 -0
  75. package/dist/core/daemon/runtime-activation-transaction.d.ts +41 -17
  76. package/dist/core/daemon/runtime-activation-transaction.js +80 -11
  77. package/dist/core/daemon/runtime-activation-transaction.js.map +1 -1
  78. package/dist/core/daemon/runtime-release-dependency-inventory.js +1 -0
  79. package/dist/core/daemon/runtime-release-dependency-inventory.js.map +1 -1
  80. package/dist/core/daemon/service-install-authority.d.ts +0 -4
  81. package/dist/core/daemon/service-install-authority.js +18 -3
  82. package/dist/core/daemon/service-install-authority.js.map +1 -1
  83. package/dist/core/dashboard.d.ts +10 -0
  84. package/dist/core/dashboard.js +103 -28
  85. package/dist/core/dashboard.js.map +1 -1
  86. package/dist/core/effective-config.js +7 -0
  87. package/dist/core/effective-config.js.map +1 -1
  88. package/dist/core/fleet/automerge-pass.js +33 -0
  89. package/dist/core/fleet/automerge-pass.js.map +1 -1
  90. package/dist/core/fleet/decisions-ledger.js +35 -12
  91. package/dist/core/fleet/decisions-ledger.js.map +1 -1
  92. package/dist/core/fleet/external-skill-git-capture.js +9 -1
  93. package/dist/core/fleet/external-skill-git-capture.js.map +1 -1
  94. package/dist/core/fleet/judge-decision-metadata.d.ts +8 -1
  95. package/dist/core/fleet/judge-decision-metadata.js +14 -1
  96. package/dist/core/fleet/judge-decision-metadata.js.map +1 -1
  97. package/dist/core/fleet/manager.d.ts +15 -1
  98. package/dist/core/fleet/manager.js +108 -30
  99. package/dist/core/fleet/manager.js.map +1 -1
  100. package/dist/core/fleet/post-merge-credit.d.ts +134 -9
  101. package/dist/core/fleet/post-merge-credit.js +350 -10
  102. package/dist/core/fleet/post-merge-credit.js.map +1 -1
  103. package/dist/core/fleet/quota.d.ts +74 -7
  104. package/dist/core/fleet/quota.js +688 -34
  105. package/dist/core/fleet/quota.js.map +1 -1
  106. package/dist/core/fleet/self-improve.d.ts +34 -1
  107. package/dist/core/fleet/self-improve.js +106 -1
  108. package/dist/core/fleet/self-improve.js.map +1 -1
  109. package/dist/core/fleet/skill-library.d.ts +21 -2
  110. package/dist/core/fleet/skill-library.js +54 -12
  111. package/dist/core/fleet/skill-library.js.map +1 -1
  112. package/dist/core/fleet/status.js +7 -5
  113. package/dist/core/fleet/status.js.map +1 -1
  114. package/dist/core/fleet/worked-ledger.d.ts +22 -0
  115. package/dist/core/fleet/worked-ledger.js +32 -0
  116. package/dist/core/fleet/worked-ledger.js.map +1 -1
  117. package/dist/core/foundry/automerge-scope-policy.d.ts +2 -2
  118. package/dist/core/foundry/automerge-scope-policy.js +9 -2
  119. package/dist/core/foundry/automerge-scope-policy.js.map +1 -1
  120. package/dist/core/goals/advance.js +34 -5
  121. package/dist/core/goals/advance.js.map +1 -1
  122. package/dist/core/goals/conductor-quota.d.ts +38 -0
  123. package/dist/core/goals/conductor-quota.js +110 -0
  124. package/dist/core/goals/conductor-quota.js.map +1 -0
  125. package/dist/core/goals/conductor-target.d.ts +24 -0
  126. package/dist/core/goals/conductor-target.js +35 -0
  127. package/dist/core/goals/conductor-target.js.map +1 -0
  128. package/dist/core/goals/conductor.d.ts +15 -0
  129. package/dist/core/goals/conductor.js +116 -9
  130. package/dist/core/goals/conductor.js.map +1 -1
  131. package/dist/core/goals/store.d.ts +29 -5
  132. package/dist/core/goals/store.js +197 -30
  133. package/dist/core/goals/store.js.map +1 -1
  134. package/dist/core/goals/timestamp-repair.d.ts +50 -0
  135. package/dist/core/goals/timestamp-repair.js +740 -0
  136. package/dist/core/goals/timestamp-repair.js.map +1 -0
  137. package/dist/core/inbox/apply.js +5 -2
  138. package/dist/core/inbox/apply.js.map +1 -1
  139. package/dist/core/inbox/merge.d.ts +94 -1
  140. package/dist/core/inbox/merge.js +349 -16
  141. package/dist/core/inbox/merge.js.map +1 -1
  142. package/dist/core/integrations/github.d.ts +2 -0
  143. package/dist/core/integrations/github.js +2 -1
  144. package/dist/core/integrations/github.js.map +1 -1
  145. package/dist/core/integrations/pulse-sync.js +13 -4
  146. package/dist/core/integrations/pulse-sync.js.map +1 -1
  147. package/dist/core/learn/reflect.d.ts +42 -4
  148. package/dist/core/learn/reflect.js +56 -5
  149. package/dist/core/learn/reflect.js.map +1 -1
  150. package/dist/core/run/best-of-n.d.ts +18 -0
  151. package/dist/core/run/best-of-n.js +163 -18
  152. package/dist/core/run/best-of-n.js.map +1 -1
  153. package/dist/core/run/engines.d.ts +8 -0
  154. package/dist/core/run/engines.js +9 -1
  155. package/dist/core/run/engines.js.map +1 -1
  156. package/dist/core/run/learned-router.js +28 -3
  157. package/dist/core/run/learned-router.js.map +1 -1
  158. package/dist/core/run/orchestrator.d.ts +7 -2
  159. package/dist/core/run/orchestrator.js +140 -60
  160. package/dist/core/run/orchestrator.js.map +1 -1
  161. package/dist/core/strategy/goal-planner.js +7 -1
  162. package/dist/core/strategy/goal-planner.js.map +1 -1
  163. package/dist/core/swarm/planner.d.ts +2 -2
  164. package/dist/core/swarm/planner.js +52 -5
  165. package/dist/core/swarm/planner.js.map +1 -1
  166. package/dist/core/swarm/rollback.d.ts +11 -0
  167. package/dist/core/swarm/rollback.js +54 -0
  168. package/dist/core/swarm/rollback.js.map +1 -1
  169. package/dist/core/swarm/runner.js +123 -11
  170. package/dist/core/swarm/runner.js.map +1 -1
  171. package/dist/core/types.d.ts +139 -1
  172. package/dist/core/types.js.map +1 -1
  173. package/dist/core/web/api.js +105 -7
  174. package/dist/core/web/api.js.map +1 -1
  175. package/dist/core/web/control.d.ts +20 -0
  176. package/dist/core/web/control.js +49 -34
  177. package/dist/core/web/control.js.map +1 -1
  178. package/dist/core/web/fleet-status-cache.d.ts +68 -0
  179. package/dist/core/web/fleet-status-cache.js +120 -0
  180. package/dist/core/web/fleet-status-cache.js.map +1 -0
  181. package/dist/core/web/public/next/assets/index-CY0U241s.css +1 -0
  182. package/dist/core/web/public/next/assets/index-Ct0mf8n4.js +69 -0
  183. package/dist/core/web/public/next/assets/index-Ct0mf8n4.js.map +1 -0
  184. package/dist/core/web/public/next/index.html +15 -0
  185. package/dist/release-dependency-inventory.json +1 -1
  186. package/dist/tui/app.js +2 -2
  187. package/dist/tui/app.js.map +1 -1
  188. package/dist/tui/render.d.ts +2 -0
  189. package/dist/tui/render.js +162 -4
  190. package/dist/tui/render.js.map +1 -1
  191. package/docs/RUNTIME_ACTIVATION_AUTHORITY.md +126 -21
  192. package/docs/contracts/CONTRACT-M521.md +102 -0
  193. package/package.json +20 -3
  194. package/schema/config.schema.json +800 -5
  195. package/node_modules/which/CHANGELOG.md +0 -166
@@ -0,0 +1,35 @@
1
+ export function resolveGoalConductorTarget(goalId, dependencies) {
2
+ if (!goalId || goalId.length > 256) {
3
+ return { ok: false, reason: 'goal-conductor-explicit-goal-required' };
4
+ }
5
+ const source = dependencies.listGoalsDetailed({ status: 'active' });
6
+ if (source.sourceState === 'degraded' || !source.complete) {
7
+ return { ok: false, reason: 'goal-conductor-goal-source-degraded' };
8
+ }
9
+ const goal = source.goals.find((entry) => entry.id === goalId);
10
+ if (!goal)
11
+ return { ok: false, reason: 'goal-conductor-target-not-active' };
12
+ if (!goal.project)
13
+ return { ok: false, reason: 'goal-conductor-target-project-missing' };
14
+ const enrolled = dependencies.listEnrolled();
15
+ if (!enrolled.includes(goal.project)) {
16
+ return { ok: false, reason: 'goal-conductor-target-project-not-enrolled' };
17
+ }
18
+ const milestone = dependencies.nextActionableMilestone(goal);
19
+ if (!milestone) {
20
+ return { ok: false, reason: 'goal-conductor-target-has-no-actionable-milestone' };
21
+ }
22
+ return {
23
+ ok: true,
24
+ reason: 'goal-conductor-target-resolved',
25
+ goal,
26
+ milestone,
27
+ target: {
28
+ goalId: goal.id,
29
+ milestoneId: milestone.id,
30
+ goalDigest: dependencies.goalSnapshotDigest(goal),
31
+ projectPath: goal.project,
32
+ },
33
+ };
34
+ }
35
+ //# sourceMappingURL=conductor-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conductor-target.js","sourceRoot":"","sources":["../../../src/core/goals/conductor-target.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,0BAA0B,CACxC,MAAc,EACd,YAA6C;IAE7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IAC5E,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IACzF,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC;IAC7E,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC;IACpF,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,gCAAgC;QACxC,IAAI;QACJ,SAAS;QACT,MAAM,EAAE;YACN,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,UAAU,EAAE,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACjD,WAAW,EAAE,IAAI,CAAC,OAAO;SAC1B;KACF,CAAC;AACJ,CAAC"}
@@ -38,6 +38,10 @@ export interface ConductorCycleSummary {
38
38
  killSwitchTripped: boolean;
39
39
  /** True when live conductor authority is intentionally unavailable. */
40
40
  activationRefused?: boolean;
41
+ /** Structured fail-closed reason for a dormant/invalid one-shot request. */
42
+ activationRefusalReason?: string;
43
+ /** Metadata-only identifier of the durably consumed one-shot permit. */
44
+ activationPermitId?: string;
41
45
  /**
42
46
  * Per-goal activity for rich UI display: [{goalId, objective, fractionDone,
43
47
  * milestoneTitle, proposalFiled}]. Only populated for goals where work was
@@ -77,3 +81,14 @@ export declare function runConductor(cfg: AshlrConfig, opts: {
77
81
  dryRun: boolean;
78
82
  maxGoalsPerCycle?: number;
79
83
  } & Pick<AdvanceOptions, 'budget' | 'allowCloud' | 'allowAnyRepo'>): Promise<ConductorCycleSummary>;
84
+ /**
85
+ * Execute one explicitly targeted, signed goal milestone.
86
+ *
87
+ * This does not enable the general conductor. It has no resident/watch shape,
88
+ * no cloud option, no retry, and no daemon fallback. Production remains dormant
89
+ * because the immutable conductor trust-root set is intentionally empty; this
90
+ * source path alone grants no activation authority.
91
+ */
92
+ export declare function runAuthorizedConductorOnce(cfg: AshlrConfig, request: {
93
+ goalId: string;
94
+ }): Promise<ConductorCycleSummary>;
@@ -18,6 +18,17 @@
18
18
  * - Kill-switch is checked before each goal advance so a running conductor loop
19
19
  * can be stopped between milestones without waiting for a swarm to finish.
20
20
  */
21
+ function emptyConductorSummary() {
22
+ return {
23
+ goalsAdvanced: 0,
24
+ milestonesAdvanced: 0,
25
+ proposalsFiled: 0,
26
+ goalsDone: 0,
27
+ daemonFallback: false,
28
+ killSwitchTripped: false,
29
+ goalActivity: [],
30
+ };
31
+ }
21
32
  // ---------------------------------------------------------------------------
22
33
  // runConductor
23
34
  // ---------------------------------------------------------------------------
@@ -36,15 +47,7 @@
36
47
  * with remaining goals.
37
48
  */
38
49
  export async function runConductor(cfg, opts) {
39
- const summary = {
40
- goalsAdvanced: 0,
41
- milestonesAdvanced: 0,
42
- proposalsFiled: 0,
43
- goalsDone: 0,
44
- daemonFallback: false,
45
- killSwitchTripped: false,
46
- goalActivity: [],
47
- };
50
+ const summary = emptyConductorSummary();
48
51
  if (!opts.dryRun) {
49
52
  const { liveConductorActivationAuthorized } = await import('../daemon/activation-permit.js');
50
53
  if (!liveConductorActivationAuthorized()) {
@@ -150,4 +153,108 @@ export async function runConductor(cfg, opts) {
150
153
  }
151
154
  return summary;
152
155
  }
156
+ /**
157
+ * Execute one explicitly targeted, signed goal milestone.
158
+ *
159
+ * This does not enable the general conductor. It has no resident/watch shape,
160
+ * no cloud option, no retry, and no daemon fallback. Production remains dormant
161
+ * because the immutable conductor trust-root set is intentionally empty; this
162
+ * source path alone grants no activation authority.
163
+ */
164
+ export async function runAuthorizedConductorOnce(cfg, request) {
165
+ const summary = emptyConductorSummary();
166
+ const refuse = (reason) => {
167
+ summary.activationRefused = true;
168
+ summary.activationRefusalReason = reason;
169
+ return summary;
170
+ };
171
+ if (!request.goalId)
172
+ return refuse('goal-conductor-explicit-goal-required');
173
+ const { killSwitchOn, listEnrolled } = await import('../sandbox/policy.js');
174
+ if (killSwitchOn()) {
175
+ summary.killSwitchTripped = true;
176
+ return summary;
177
+ }
178
+ const { goalSnapshotDigest, listGoalsDetailed, loadGoal } = await import('./store.js');
179
+ const { nextActionableMilestone, advanceGoalCycle, progressOf } = await import('./advance.js');
180
+ const { resolveGoalConductorTarget } = await import('./conductor-target.js');
181
+ const resolution = resolveGoalConductorTarget(request.goalId, {
182
+ listGoalsDetailed,
183
+ listEnrolled,
184
+ nextActionableMilestone,
185
+ goalSnapshotDigest,
186
+ });
187
+ if (!resolution.ok || !resolution.target || !resolution.goal || !resolution.milestone) {
188
+ return refuse(resolution.reason);
189
+ }
190
+ const { target, goal, milestone } = resolution;
191
+ const activationModule = await import('../daemon/activation-permit.js');
192
+ const activation = activationModule.consumeGoalConductorActivationPermit(cfg, target);
193
+ if (!activation.authorized || !activation.capability)
194
+ return refuse(activation.reason);
195
+ summary.activationPermitId = activation.permitId;
196
+ // Reopen after durable receipt creation. Any steering between preflight and
197
+ // consumption burns the permit and makes zero provider contacts.
198
+ const current = loadGoal(goal.id);
199
+ if (!current || goalSnapshotDigest(current) !== target.goalDigest) {
200
+ return refuse('goal-conductor-target-drifted-after-consumption');
201
+ }
202
+ const currentMilestone = nextActionableMilestone(current);
203
+ if (!currentMilestone || currentMilestone.id !== target.milestoneId) {
204
+ return refuse('goal-conductor-milestone-drifted-after-consumption');
205
+ }
206
+ if (!activationModule.isGoalConductorActivationCapability(activation.capability, target)) {
207
+ return refuse('goal-conductor-capability-invalid-or-consumed');
208
+ }
209
+ if (!activation.permitId)
210
+ return refuse('goal-conductor-activation-permit-id-missing');
211
+ // This is intentionally the final pre-provider boundary, after the one-shot
212
+ // capability's action-time runtime revalidation. All thirteen possible
213
+ // contacts are reserved atomically here, then a non-serializable claim seam
214
+ // is carried to the exact planner/orchestrator inference sites.
215
+ const executionConfig = activation.configSnapshot ?? cfg;
216
+ const { reserveGoalConductorProviderQuota } = await import('./conductor-quota.js');
217
+ const quota = reserveGoalConductorProviderQuota(executionConfig, {
218
+ permitId: activation.permitId,
219
+ goalId: target.goalId,
220
+ milestoneId: target.milestoneId,
221
+ goalDigest: target.goalDigest,
222
+ projectPath: target.projectPath,
223
+ });
224
+ if (!quota.launchAuthorized)
225
+ return refuse(quota.reason);
226
+ try {
227
+ const result = await advanceGoalCycle(goal.id, executionConfig, {
228
+ maxRetries: 0,
229
+ allowCloud: false,
230
+ allowAnyRepo: false,
231
+ budget: {
232
+ maxTokens: activationModule.GOAL_CONDUCTOR_ONCE_MAX_TOKENS,
233
+ maxSteps: activationModule.GOAL_CONDUCTOR_ONCE_MAX_STEPS,
234
+ allowCloud: false,
235
+ },
236
+ expectedGoalDigest: target.goalDigest,
237
+ expectedMilestoneId: target.milestoneId,
238
+ providerQuota: quota.providerQuota,
239
+ });
240
+ summary.goalsAdvanced = 1;
241
+ summary.milestonesAdvanced = 1;
242
+ summary.proposalsFiled = result.proposalsFiled;
243
+ summary.goalsDone = result.goalDone ? 1 : 0;
244
+ const refreshed = loadGoal(goal.id);
245
+ const progress = refreshed ? progressOf(refreshed) : { fractionDone: 0 };
246
+ summary.goalActivity.push({
247
+ goalId: goal.id,
248
+ objective: goal.objective,
249
+ fractionDone: progress.fractionDone,
250
+ milestoneTitle: milestone.title,
251
+ proposalFiled: result.proposalsFiled > 0,
252
+ goalCompleted: result.goalDone,
253
+ });
254
+ return summary;
255
+ }
256
+ catch (error) {
257
+ return refuse(`goal-conductor-advance-failed:${error instanceof Error ? error.message : String(error)}`);
258
+ }
259
+ }
153
260
  //# sourceMappingURL=conductor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conductor.js","sourceRoot":"","sources":["../../../src/core/goals/conductor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conductor.js","sourceRoot":"","sources":["../../../src/core/goals/conductor.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,21 @@ export interface UpdateMilestoneStatusOptions extends GoalPersistenceOptions {
59
59
  proposalId?: string | null;
60
60
  specId?: string | null;
61
61
  }
62
+ export interface ClaimGoalMilestoneResult {
63
+ claimed: boolean;
64
+ reason: string;
65
+ goal?: Goal;
66
+ }
67
+ /** Stable digest used by signed one-shot conductor target bindings. */
68
+ export declare function goalSnapshotDigest(goal: Goal): string;
69
+ /** Full persisted-record guard so parseable corruption cannot look authoritative. */
70
+ export declare function isValidGoalRecord(parsed: unknown): parsed is Goal;
71
+ /**
72
+ * Repair-only admission guard. It relaxes exactly one legacy defect: a valid
73
+ * top-level `updatedAt` may precede the goal's valid `createdAt`. Every other
74
+ * goal, mission, project, status, id, and milestone invariant remains strict.
75
+ */
76
+ export declare function isValidGoalRecordForTimestampRepair(parsed: unknown): parsed is Goal;
62
77
  /**
63
78
  * Create a new Goal from an objective, persist it, and return it.
64
79
  *
@@ -70,8 +85,9 @@ export interface UpdateMilestoneStatusOptions extends GoalPersistenceOptions {
70
85
  * M109: stamps `owner` from cfg.user?.id ?? cfg.user?.name when cfg is
71
86
  * provided (undefined otherwise — backward-compatible).
72
87
  *
73
- * NEVER runs a swarm, authors a spec, or emits an outward action. Best-effort
74
- * persistence (returns the in-memory Goal even if the write fails).
88
+ * NEVER runs a swarm, authors a spec, or emits an outward action. A duplicate
89
+ * deterministic id returns the actual persisted goal; a new-record write
90
+ * failure throws so callers cannot report an object that was never created.
75
91
  */
76
92
  export declare function createGoal(objective: string, opts?: {
77
93
  project?: string | null;
@@ -117,11 +133,19 @@ export declare function listGoalsDetailed(filter?: {
117
133
  export declare function listGoals(filter?: {
118
134
  status?: GoalStatus;
119
135
  }): Goal[];
136
+ export declare function saveGoal(goal: Goal, opts?: GoalPersistenceOptions, stillAuthorized?: () => boolean): boolean;
120
137
  /**
121
- * Persist a Goal record atomically (tmp-write + rename). Bumps updatedAt.
122
- * Best-effort; returns false on revocation or I/O failure and never throws.
138
+ * Atomically claim the exact signed goal generation and milestone for one
139
+ * conductor attempt. All ordinary saveGoal writers share this per-goal lock,
140
+ * so drift cannot slip between digest validation and the in-progress write.
123
141
  */
124
- export declare function saveGoal(goal: Goal, opts?: GoalPersistenceOptions, stillAuthorized?: () => boolean): boolean;
142
+ export declare function claimGoalMilestoneIfCurrent(input: {
143
+ goalId: string;
144
+ milestoneId: string;
145
+ expectedGoalDigest: string;
146
+ now?: string;
147
+ stillAuthorized?: () => boolean;
148
+ }): ClaimGoalMilestoneResult;
125
149
  /**
126
150
  * Delete a Goal record by id. Idempotent — deleting an absent goal is a no-op.
127
151
  * Pure FS under ~/.ashlr/goals; never touches a user repo. Never throws.