@guyghost/swarm-dao-core 0.16.0 → 0.16.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"control-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/control-proposal.use-case.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAc,kBAAkB,EAAY,MAAM,sBAAsB,CAAC;AAErF,MAAM,MAAM,qBAAqB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7G,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;KAClB;IAGU,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAqClH,OAAO,CAAC,KAAK;CAYd"}
1
+ {"version":3,"file":"control-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/control-proposal.use-case.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAc,kBAAkB,EAAY,MAAM,sBAAsB,CAAC;AAErF,MAAM,MAAM,qBAAqB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7G,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;KAClB;IAGU,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiDlH,OAAO,CAAC,KAAK;CAYd"}
@@ -14,6 +14,18 @@ export class ControlProposalUseCase {
14
14
  if (proposal.status !== "approved") {
15
15
  return { ok: false, error: `Must be approved (current: ${proposal.status})` };
16
16
  }
17
+ // Foreseeable ordering mistake guard (issue #141): a red-zone proposal
18
+ // without a completed dry-run always fails the mandatory-dry-run gate.
19
+ // Dispatching CONTROL_FAIL for it made the proposal a final zombie (the
20
+ // operator fixes the missing dry-run but the terminal state can never
21
+ // re-check). Refuse before any transition instead — the proposal stays
22
+ // approved and the operator runs the dry-run, then re-checks.
23
+ if (proposal.riskZone === "red" && !proposal.dryRunAt) {
24
+ return {
25
+ ok: false,
26
+ error: `Risk zone 'red' requires a completed dry-run before control — run dao_dry_run proposalId=${proposal.id} first. No state change was made (the proposal stays approved).`,
27
+ };
28
+ }
17
29
  const now = this.dependencies.clock.now();
18
30
  const control = runGates(proposal, state.config, { allProposals: state.proposals, now });
19
31
  state.controlResults[proposal.id] = control;
@@ -1 +1 @@
1
- {"version":3,"file":"control-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/control-proposal.use-case.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/control-proposal.use-case.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ export type ExecuteProposalResult = {
7
7
  proposal: Proposal;
8
8
  plan: DeliveryPlan;
9
9
  snapshot: ExecutionSnapshot;
10
+ /** Isolated workspace the implementation must happen in, when configured. */
11
+ workspacePath?: string | null;
10
12
  } | {
11
13
  ok: false;
12
14
  error: string;
@@ -1 +1 @@
1
- {"version":3,"file":"execute-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/execute-proposal.use-case.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAc,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAElG,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,GACjF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAgBjC,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;QACjB,iEAAiE;QACjE,SAAS,CAAC,EAAE,sBAAsB,CAAC;KACpC;IAGU,OAAO,CAAC,OAAO,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAmDnC"}
1
+ {"version":3,"file":"execute-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/execute-proposal.use-case.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAc,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAElG,MAAM,MAAM,qBAAqB,GAC7B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAgBjC,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;QACjB,iEAAiE;QACjE,SAAS,CAAC,EAAE,sBAAsB,CAAC;KACpC;IAGU,OAAO,CAAC,OAAO,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAmDnC"}
@@ -60,7 +60,7 @@ export class ExecuteProposalUseCase {
60
60
  };
61
61
  state.auditLog.push(audit);
62
62
  await this.dependencies.repository.persist();
63
- return { ok: true, proposal, plan, snapshot };
63
+ return { ok: true, proposal, plan, snapshot, workspacePath: workspacePath ?? null };
64
64
  }
65
65
  }
66
66
  //# sourceMappingURL=execute-proposal.use-case.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/execute-proposal.use-case.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/execute-proposal.use-case.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,11 @@ export type RejectProposalResult = {
13
13
  /**
14
14
  * Human rejection path: an auditable veto/withdrawal of a proposal.
15
15
  * The proposal machine decides which event applies (DISCARD from `open`,
16
- * REJECT from `deliberating`/`approved`); this use case only picks the
17
- * event from the persisted status and records who rejected, and why.
16
+ * REJECT from `deliberating`/`approved`/`failed`); this use case only picks
17
+ * the event from the persisted status and records who rejected, and why.
18
+ * REJECT from `failed` is a closure annotation: the lifecycle is terminal,
19
+ * but the machine keeps this one transition so a dead proposal can carry an
20
+ * auditable reason instead of being an unannotatable zombie (issue #141).
18
21
  */
19
22
  export declare class RejectProposalUseCase {
20
23
  private readonly dependencies;
@@ -1 +1 @@
1
- {"version":3,"file":"reject-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/reject-proposal.use-case.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;;;;GAKG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;KAClB;IAGU,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAgCpH"}
1
+ {"version":3,"file":"reject-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/reject-proposal.use-case.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;;;;;;;GAQG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAC7B,UAAU,EAAE,sBAAsB,CAAC;QACnC,KAAK,EAAE,SAAS,CAAC;KAClB;IAGU,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAsCpH"}
@@ -1,9 +1,13 @@
1
1
  import { dispatchProposalEvent } from "../../governance/proposal.utils.js";
2
+ import { PROPOSAL_FINAL_STATUSES } from "../../models/proposal.machine.js";
2
3
  /**
3
4
  * Human rejection path: an auditable veto/withdrawal of a proposal.
4
5
  * The proposal machine decides which event applies (DISCARD from `open`,
5
- * REJECT from `deliberating`/`approved`); this use case only picks the
6
- * event from the persisted status and records who rejected, and why.
6
+ * REJECT from `deliberating`/`approved`/`failed`); this use case only picks
7
+ * the event from the persisted status and records who rejected, and why.
8
+ * REJECT from `failed` is a closure annotation: the lifecycle is terminal,
9
+ * but the machine keeps this one transition so a dead proposal can carry an
10
+ * auditable reason instead of being an unannotatable zombie (issue #141).
7
11
  */
8
12
  export class RejectProposalUseCase {
9
13
  dependencies;
@@ -20,6 +24,12 @@ export class RejectProposalUseCase {
20
24
  if (!command.reason || command.reason.trim().length === 0) {
21
25
  return { ok: false, error: "A rejection reason is required (it is recorded in the audit trail)." };
22
26
  }
27
+ if (PROPOSAL_FINAL_STATUSES.has(proposal.status)) {
28
+ return {
29
+ ok: false,
30
+ error: `Proposal is in terminal status "${proposal.status}"; no transitions are permitted`,
31
+ };
32
+ }
23
33
  const event = proposal.status === "open" ? { type: "DISCARD" } : { type: "REJECT" };
24
34
  const dispatched = dispatchProposalEvent(proposal, event, { clock: this.dependencies.clock });
25
35
  if (!dispatched.ok)
@@ -1 +1 @@
1
- {"version":3,"file":"reject-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/reject-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAS3E;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IAEb;IADnB,YACmB,YAGhB;QAHgB,iBAAY,GAAZ,YAAY,CAG5B;IACA,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,OAA8D;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,OAAO,CAAC,UAAU,aAAa,EAAE,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qEAAqE,EAAE,CAAC;QACrG,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,SAAS,EAAY,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,QAAQ,EAAY,CAAC;QAC1G,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QAEtC,MAAM,KAAK,GAAe;YACxB,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE;YACvB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE;YACxC,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;SACnD,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC7C,OAAO;YACL,EAAE,EAAE,IAAI;YACR,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,KAAK,CAAC,IAAI;YACf,OAAO,EAAE,aAAa,QAAQ,CAAC,EAAE,iBAAiB,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,KAAK,GAAG;SACpF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"reject-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/reject-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAS3E;;;;;;;;GAQG;AACH,MAAM,OAAO,qBAAqB;IAEb;IADnB,YACmB,YAGhB;QAHgB,iBAAY,GAAZ,YAAY,CAG5B;IACA,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,OAA8D;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;QACjG,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,OAAO,CAAC,UAAU,aAAa,EAAE,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qEAAqE,EAAE,CAAC;QACrG,CAAC;QACD,IAAI,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,mCAAmC,QAAQ,CAAC,MAAM,iCAAiC;aAC3F,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,SAAS,EAAY,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,QAAQ,EAAY,CAAC;QAC1G,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QAEtC,MAAM,KAAK,GAAe;YACxB,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE;YACvB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE;YACxC,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;SACnD,CAAC;QACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC7C,OAAO;YACL,EAAE,EAAE,IAAI;YACR,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,KAAK,CAAC,IAAI;YACf,OAAO,EAAE,aAAa,QAAQ,CAAC,EAAE,iBAAiB,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,KAAK,GAAG;SACpF,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"rollback-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/rollback-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,qBAAa,uBAAuB;IACf,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAAE,UAAU,EAAE,sBAAsB,CAAA;KAAE;IAE3E,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;CASvF"}
1
+ {"version":3,"file":"rollback-proposal.use-case.d.ts","sourceRoot":"","sources":["../../../src/application/proposals/rollback-proposal.use-case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,qBAAa,uBAAuB;IACf,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE;QAAE,UAAU,EAAE,sBAAsB,CAAA;KAAE;IAE3E,OAAO,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAavF"}
@@ -7,10 +7,14 @@ export class RollbackProposalUseCase {
7
7
  const snapshot = this.dependencies.repository.get().snapshots[command.proposalId];
8
8
  if (!snapshot)
9
9
  return { ok: false, error: `No snapshot found for proposal #${command.proposalId}` };
10
+ // Honest boundary: this use case performs no git operations and the
11
+ // execution snapshot carries no recoverable commit (commitSha is recorded
12
+ // as "unknown" and filesChanged is never populated), so an automated
13
+ // revert cannot exist. Claiming success here reported a rollback that
14
+ // never happened; surface the manual path instead.
10
15
  return {
11
- ok: true,
12
- snapshot,
13
- message: `Proposal #${command.proposalId} rolled back to commit ${snapshot.commitSha.slice(0, 8)} on branch ${snapshot.branch}`,
16
+ ok: false,
17
+ error: `Automated rollback is not supported: the execution snapshot for proposal #${command.proposalId} carries no recoverable commit (branch ${snapshot.branch}). Restore the workspace/branch manually from git history, then correct the proposal state if needed.`,
14
18
  };
15
19
  }
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rollback-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/rollback-proposal.use-case.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,uBAAuB;IACE;IAApC,YAAoC,YAAoD;QAApD,iBAAY,GAAZ,YAAY,CAAwC;IAAG,CAAC;IAErF,KAAK,CAAC,OAAO,CAAC,OAA+B;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACpG,OAAO;YACL,EAAE,EAAE,IAAI;YACR,QAAQ;YACR,OAAO,EAAE,aAAa,OAAO,CAAC,UAAU,0BAA0B,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,QAAQ,CAAC,MAAM,EAAE;SAChI,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"rollback-proposal.use-case.js","sourceRoot":"","sources":["../../../src/application/proposals/rollback-proposal.use-case.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,uBAAuB;IACE;IAApC,YAAoC,YAAoD;QAApD,iBAAY,GAAZ,YAAY,CAAwC;IAAG,CAAC;IAErF,KAAK,CAAC,OAAO,CAAC,OAA+B;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACpG,oEAAoE;QACpE,0EAA0E;QAC1E,qEAAqE;QACrE,sEAAsE;QACtE,mDAAmD;QACnD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,6EAA6E,OAAO,CAAC,UAAU,0CAA0C,QAAQ,CAAC,MAAM,uGAAuG;SACvQ,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"proposal.machine.d.ts","sourceRoot":"","sources":["../../src/models/proposal.machine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,cAAc,CAA+C,CAAC;AAEhH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAE/D;AA2BD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,cAAuB;UAzC1D,YAAY;;UACZ,SAAS;WAAS,WAAW;;UAC7B,QAAQ;;UACR,cAAc;YAAU,kBAAkB;;UAC1C,cAAc;;UACd,iBAAiB;;UACjB,MAAM;;UACN,SAAS;;UACT,OAAO;aAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAwEnC"}
1
+ {"version":3,"file":"proposal.machine.d.ts","sourceRoot":"","sources":["../../src/models/proposal.machine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAMvC,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,cAAc,CAAqC,CAAC;AAEtG,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAE/D;AA2BD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,cAAuB;UA7C1D,YAAY;;UACZ,SAAS;WAAS,WAAW;;UAC7B,QAAQ;;UACR,cAAc;YAAU,kBAAkB;;UAC1C,cAAc;;UACd,iBAAiB;;UACjB,MAAM;;UACN,SAAS;;UACT,OAAO;aAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GA+EnC"}
@@ -1,5 +1,9 @@
1
1
  import { assign, setup } from "xstate";
2
- export const PROPOSAL_FINAL_STATUSES = new Set(["executed", "failed", "rejected"]);
2
+ // `failed` is deliberately NOT final (issue #141): a gate failure is by
3
+ // definition recoverable, and a dead proposal must stay annotatable — the
4
+ // machine gives `failed` exactly one transition (REJECT → rejected) so the
5
+ // closure reason is auditable while no lifecycle reuse is possible.
6
+ export const PROPOSAL_FINAL_STATUSES = new Set(["executed", "rejected"]);
3
7
  export function isProposalFinal(status) {
4
8
  return PROPOSAL_FINAL_STATUSES.has(status);
5
9
  }
@@ -60,7 +64,10 @@ export function createProposalMachine(initial = "open") {
60
64
  },
61
65
  },
62
66
  executed: { type: "final" },
63
- failed: { type: "final" },
67
+ // `failed` is lifecycle-final (see PROPOSAL_FINAL_STATUSES) but keeps
68
+ // one closure transition: REJECT records an auditable reason on a dead
69
+ // proposal instead of leaving an unannotatable zombie (issue #141).
70
+ failed: { on: { REJECT: { target: "rejected", actions: "recordTransition" } } },
64
71
  rejected: { type: "final" },
65
72
  },
66
73
  });
@@ -1 +1 @@
1
- {"version":3,"file":"proposal.machine.js","sourceRoot":"","sources":["../../src/models/proposal.machine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proposal.machine.js","sourceRoot":"","sources":["../../src/models/proposal.machine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"proposal.presenter.d.ts","sourceRoot":"","sources":["../../src/presenters/proposal.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AACpH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AACrG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAM7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGnG,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAGjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGzE;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,wBAAwB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,EACvD,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAGR;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAElE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAK7F;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAErF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,6BAA6B,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAErG;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEjE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAE5F"}
1
+ {"version":3,"file":"proposal.presenter.d.ts","sourceRoot":"","sources":["../../src/presenters/proposal.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AACpH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AACrG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAM7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGnG,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAGjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGzE;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,wBAAwB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,EACvD,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAGR;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAElE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAQ7F;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAErF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,6BAA6B,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAErG;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEjE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAE5F"}
@@ -24,7 +24,10 @@ export function presentExecution(result) {
24
24
  const taskCount = result.plan.phases.reduce((sum, phase) => sum + phase.tasks.length, 0);
25
25
  // snapshot.branch is the branch actually used: the delivery plan strategy
26
26
  // without isolation, the isolated dao/<id>-<slug> branch with a workspace.
27
- return `# Proposal Executed #${result.proposal.id}\n\n**Title:** ${result.proposal.title}\n**Status:** 🚀 executed\n**Branch:** \`${result.snapshot.branch}\`\n**Plan:** ${result.plan.phases.length} phases, ${taskCount} tasks\n\nThe delivery agent has prepared an implementation plan. Review the tasks and begin implementation.`;
27
+ // The workspace path is essential: implementation is delegated to the
28
+ // session agent, which cannot act on a branch name alone.
29
+ const workspace = result.workspacePath ?? "the current repository (no isolation)";
30
+ return `# ✅ Proposal Executed — #${result.proposal.id}\n\n**Title:** ${result.proposal.title}\n**Status:** 🚀 executed\n**Branch:** \`${result.snapshot.branch}\`\n**Workspace:** \`${workspace}\`\n**Plan:** ${result.plan.phases.length} phases, ${taskCount} tasks\n\nImplementation is delegated to the session agent — begin NOW: work in the workspace above on the branch above (run \`dao_plan proposalId=${result.proposal.id}\` for the full task list), implement the phases in order, and commit on the branch. Run \`dao_ship proposalId=${result.proposal.id}\` when the work is complete and verified.`;
28
31
  }
29
32
  export function presentShip(result) {
30
33
  return `# 🚀 Ship Complete\n\nShipped proposals:\n${result.shipped.map((id) => `- #${id}`).join("\n")}`;
@@ -1 +1 @@
1
- {"version":3,"file":"proposal.presenter.js","sourceRoot":"","sources":["../../src/presenters/proposal.presenter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proposal.presenter.js","sourceRoot":"","sources":["../../src/presenters/proposal.presenter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guyghost/swarm-dao-core",
3
- "version": "0.16.0",
3
+ "version": "0.16.2",
4
4
  "description": "Swarm DAO core — pure business logic for AI agent governance",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",