@guyghost/swarm-dao-core 0.16.1 → 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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"}
@@ -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":"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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guyghost/swarm-dao-core",
3
- "version": "0.16.1",
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",