@optimystic/db-core 0.25.1 → 0.26.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 (104) hide show
  1. package/dist/src/cohort-topic/membership/verifier.d.ts +8 -0
  2. package/dist/src/cohort-topic/membership/verifier.d.ts.map +1 -1
  3. package/dist/src/cohort-topic/membership/verifier.js +17 -0
  4. package/dist/src/cohort-topic/membership/verifier.js.map +1 -1
  5. package/dist/src/cohort-topic/promotion.d.ts +25 -0
  6. package/dist/src/cohort-topic/promotion.d.ts.map +1 -1
  7. package/dist/src/cohort-topic/promotion.js +58 -11
  8. package/dist/src/cohort-topic/promotion.js.map +1 -1
  9. package/dist/src/cohort-topic/wire/primitives.d.ts +6 -0
  10. package/dist/src/cohort-topic/wire/primitives.d.ts.map +1 -1
  11. package/dist/src/cohort-topic/wire/primitives.js +6 -0
  12. package/dist/src/cohort-topic/wire/primitives.js.map +1 -1
  13. package/dist/src/cohort-topic/wire/types.d.ts +5 -0
  14. package/dist/src/cohort-topic/wire/types.d.ts.map +1 -1
  15. package/dist/src/cohort-topic/wire/validate.d.ts.map +1 -1
  16. package/dist/src/cohort-topic/wire/validate.js +10 -19
  17. package/dist/src/cohort-topic/wire/validate.js.map +1 -1
  18. package/dist/src/collection/collection.d.ts +8 -1
  19. package/dist/src/collection/collection.d.ts.map +1 -1
  20. package/dist/src/collection/collection.js +19 -3
  21. package/dist/src/collection/collection.js.map +1 -1
  22. package/dist/src/matchmaking/wire.d.ts +2 -2
  23. package/dist/src/matchmaking/wire.d.ts.map +1 -1
  24. package/dist/src/matchmaking/wire.js +3 -3
  25. package/dist/src/matchmaking/wire.js.map +1 -1
  26. package/dist/src/network/struct.d.ts +5 -5
  27. package/dist/src/network/struct.d.ts.map +1 -1
  28. package/dist/src/testing/index.d.ts +1 -0
  29. package/dist/src/testing/index.d.ts.map +1 -1
  30. package/dist/src/testing/index.js +1 -0
  31. package/dist/src/testing/index.js.map +1 -1
  32. package/dist/src/testing/refresh-probe.d.ts +31 -0
  33. package/dist/src/testing/refresh-probe.d.ts.map +1 -0
  34. package/dist/src/testing/refresh-probe.js +39 -0
  35. package/dist/src/testing/refresh-probe.js.map +1 -0
  36. package/dist/src/testing/test-transactor.d.ts +58 -5
  37. package/dist/src/testing/test-transactor.d.ts.map +1 -1
  38. package/dist/src/testing/test-transactor.js +87 -4
  39. package/dist/src/testing/test-transactor.js.map +1 -1
  40. package/dist/src/transaction/coordinator.d.ts +90 -6
  41. package/dist/src/transaction/coordinator.d.ts.map +1 -1
  42. package/dist/src/transaction/coordinator.js +311 -90
  43. package/dist/src/transaction/coordinator.js.map +1 -1
  44. package/dist/src/transaction/errors.d.ts +42 -0
  45. package/dist/src/transaction/errors.d.ts.map +1 -1
  46. package/dist/src/transaction/errors.js +50 -0
  47. package/dist/src/transaction/errors.js.map +1 -1
  48. package/dist/src/transaction/index.d.ts +1 -1
  49. package/dist/src/transaction/index.d.ts.map +1 -1
  50. package/dist/src/transaction/index.js +1 -1
  51. package/dist/src/transaction/index.js.map +1 -1
  52. package/dist/src/transaction/session.d.ts +7 -3
  53. package/dist/src/transaction/session.d.ts.map +1 -1
  54. package/dist/src/transaction/session.js +7 -3
  55. package/dist/src/transaction/session.js.map +1 -1
  56. package/dist/src/transaction/transaction.d.ts +12 -2
  57. package/dist/src/transaction/transaction.d.ts.map +1 -1
  58. package/dist/src/transaction/transaction.js.map +1 -1
  59. package/dist/src/transactor/network-transactor.d.ts +1 -1
  60. package/dist/src/transactor/network-transactor.d.ts.map +1 -1
  61. package/dist/src/transactor/network-transactor.js +6 -26
  62. package/dist/src/transactor/network-transactor.js.map +1 -1
  63. package/dist/src/transactor/transactor-source.d.ts +4 -6
  64. package/dist/src/transactor/transactor-source.d.ts.map +1 -1
  65. package/dist/src/transactor/transactor-source.js +4 -6
  66. package/dist/src/transactor/transactor-source.js.map +1 -1
  67. package/dist/src/transform/atomic.d.ts.map +1 -1
  68. package/dist/src/transform/atomic.js +7 -0
  69. package/dist/src/transform/atomic.js.map +1 -1
  70. package/dist/src/transform/base-pins.d.ts +48 -0
  71. package/dist/src/transform/base-pins.d.ts.map +1 -0
  72. package/dist/src/transform/base-pins.js +65 -0
  73. package/dist/src/transform/base-pins.js.map +1 -0
  74. package/dist/src/transform/digest.d.ts +4 -2
  75. package/dist/src/transform/digest.d.ts.map +1 -1
  76. package/dist/src/transform/digest.js +14 -19
  77. package/dist/src/transform/digest.js.map +1 -1
  78. package/dist/src/transform/tracker.d.ts +31 -3
  79. package/dist/src/transform/tracker.d.ts.map +1 -1
  80. package/dist/src/transform/tracker.js +105 -13
  81. package/dist/src/transform/tracker.js.map +1 -1
  82. package/package.json +1 -1
  83. package/src/cohort-topic/membership/verifier.ts +487 -461
  84. package/src/cohort-topic/promotion.ts +86 -14
  85. package/src/cohort-topic/wire/primitives.ts +195 -188
  86. package/src/cohort-topic/wire/types.ts +480 -475
  87. package/src/cohort-topic/wire/validate.ts +504 -512
  88. package/src/collection/collection.ts +19 -3
  89. package/src/matchmaking/wire.ts +605 -603
  90. package/src/network/struct.ts +5 -5
  91. package/src/testing/index.ts +1 -0
  92. package/src/testing/refresh-probe.ts +52 -0
  93. package/src/testing/test-transactor.ts +100 -4
  94. package/src/transaction/coordinator.ts +312 -99
  95. package/src/transaction/errors.ts +141 -91
  96. package/src/transaction/index.ts +1 -1
  97. package/src/transaction/session.ts +7 -3
  98. package/src/transaction/transaction.ts +12 -2
  99. package/src/transactor/network-transactor.ts +1025 -1045
  100. package/src/transactor/transactor-source.ts +170 -172
  101. package/src/transform/atomic.ts +6 -0
  102. package/src/transform/base-pins.ts +83 -0
  103. package/src/transform/digest.ts +14 -19
  104. package/src/transform/tracker.ts +108 -15
@@ -60,6 +60,14 @@ export type VerifyResult = "verified" | "untrusted";
60
60
  export interface MembershipVerifier {
61
61
  /** Cache `cert` as the latest known membership for its coord. */
62
62
  cache(cert: MembershipCertV1): void;
63
+ /**
64
+ * Drop everything cached for `cohortCoord` (base64url form, as on a cert's `cohortCoord`): the cached
65
+ * cert — including a *trusted* self-published one, i.e. the trust lock — and any stale-gap strike
66
+ * count. The coord re-enters the cold-cache regime (interim TOFU on next sight). The host calls this
67
+ * when it evicts the coord's engine, so a lock published by a since-evicted engine cannot strand the
68
+ * coord's later-epoch messages. A no-op for a coord the verifier holds nothing for.
69
+ */
70
+ forget(cohortCoord: string): void;
63
71
  /**
64
72
  * Verify a threshold-signed message. `expectedCoord` is the cohort the `signers` should belong to;
65
73
  * `tier` selects the membership source. Performs the single refetch+retry internally.
@@ -1 +1 @@
1
- {"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../../../src/cohort-topic/membership/verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC,SAAU,CAAC;AAE9D,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAEpD,iGAAiG;AACjG,MAAM,WAAW,kBAAkB;IAClC,iEAAiE;IACjE,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACxK;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,yFAAyF;IACzF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,2GAA2G;IAC3G,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAClC;;;;;;;;;;;;;;;;;;OAkBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA+TD,2DAA2D;AAC3D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CAEzF"}
1
+ {"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../../../src/cohort-topic/membership/verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC,SAAU,CAAC;AAE9D,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAEpD,iGAAiG;AACjG,MAAM,WAAW,kBAAkB;IAClC,iEAAiE;IACjE,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACxK;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,yFAAyF;IACzF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,2GAA2G;IAC3G,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAClC;;;;;;;;;;;;;;;;;;OAkBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAiVD,2DAA2D;AAC3D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CAEzF"}
@@ -98,6 +98,23 @@ class CachingMembershipVerifier {
98
98
  // published, so it is marked trusted and may anchor the next rotation in the attestation chain.
99
99
  this.byCoord.set(cert.cohortCoord, { cert, trusted: true });
100
100
  }
101
+ forget(cohortCoord) {
102
+ // Drop the cached cert (the trust lock, when the entry was trusted) and the strike counter — the
103
+ // coord returns to the cold-cache / interim-TOFU regime. `lastFetchAt` is deliberately KEPT: it is
104
+ // anti-amplification state (the refetch rate-limit clock), not trust state, and keeping it means a
105
+ // forget cannot be used to reset a flood-exposed coord's refetch budget.
106
+ //
107
+ // NOTE: this drops the coord's entry whatever its provenance — a *remotely* fetched cert is discarded
108
+ // alongside a self-published lock, so the next sight of the coord re-runs the trust gate from cold.
109
+ // Harmless in both regimes today: with a working trust anchor the refetch re-derives the same
110
+ // `"trusted"` verdict, and with the anchor `"unknown"` the coord was already TOFU-grade with a bounded
111
+ // re-TOFU exit (`staleGapRecoveryStrikes`), so a forget only shortens a path that was already open.
112
+ // The caller today is engine eviction, which an attacker can drive by spraying coords — so if `forget`
113
+ // ever gains a caller in a regime where re-TOFU is NOT otherwise reachable, narrow it to the
114
+ // self-published lock (clear `trusted`, keep the cert) instead of deleting the entry.
115
+ this.byCoord.delete(cohortCoord);
116
+ this.staleGapStrikes.delete(cohortCoord);
117
+ }
101
118
  async verifyMessage(signers, expectedCoord, tier, payload, sig, opts) {
102
119
  const coordKey = bytesToB64url(expectedCoord);
103
120
  const source = this.deps.router.for(tier);
@@ -1 +1 @@
1
- {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/cohort-topic/membership/verifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/cohort-topic/membership/verifier.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,9 @@
42
42
  * idempotent and `effectiveAt`-ordered via the monotonic {@link PromotionState.lastEffectiveAt}
43
43
  * high-water mark, so re-applying a notice (including this member's own echoed broadcast) or a replayed
44
44
  * older notice is a no-op — a stale promotion can never un-demote a cohort that has since demoted.
45
+ * A freshly created lifecycle can seed that per-topic ordering from a longer-lived node-level record via
46
+ * the optional {@link PromotionDeps.seedTransition}, so recreating an engine (e.g. after a memory-pressure
47
+ * eviction) does not reopen the replay window.
45
48
  */
46
49
  import type { CohortSigner } from "./sig/threshold.js";
47
50
  import type { DemotionNoticeV1, PromotionNoticeV1 } from "./wire/types.js";
@@ -101,6 +104,19 @@ export interface PromotionDeps {
101
104
  cohortEpoch: () => Uint8Array;
102
105
  /** Threshold signer (the gossip ticket's `k − x` cohort signer). */
103
106
  signer: CohortSigner;
107
+ /**
108
+ * The node-level record of the last adopted promotion/demotion transition for `topicId` at this
109
+ * cohort's `(coord, tier)` — db-p2p's promote-gate `transitions` map, which outlives the engine this
110
+ * lifecycle lives in. Read once per topic, on first state creation, to seed
111
+ * {@link PromotionState.lastEffectiveAt} and the promoted direction — so a recreated engine (after a
112
+ * memory-pressure eviction) neither re-adopts a replayed stale notice nor forgets a correct
113
+ * `promoted = true`. Optional: absent (key-less / unit composition) a fresh lifecycle starts cold,
114
+ * exactly as before.
115
+ */
116
+ seedTransition?: (topicId: Uint8Array) => {
117
+ readonly effectiveAt: number;
118
+ readonly promoted: boolean;
119
+ } | undefined;
104
120
  config?: PromotionConfig;
105
121
  }
106
122
  /**
@@ -136,6 +152,15 @@ export interface PromotionLifecycle {
136
152
  * `effectiveAt` ordering as {@link applyPromotionNotice} — a stale promotion can never un-demote.
137
153
  */
138
154
  applyDemotionNotice(n: DemotionNoticeV1, now: number): void;
155
+ /**
156
+ * True iff any topic carries adopted promotion/demotion state — a `promoted` flag or a
157
+ * `lastEffectiveAt` high-water. Growth samples / `lowLoadSince` alone do not count: they are
158
+ * reconstructed from the store on the next {@link onParticipantCountChange}. Read by the host's
159
+ * engine-eviction ranking, which prefers to keep an engine holding an adopted transition. A ranking
160
+ * preference, not the safety mechanism: the node-level adopted-transition record
161
+ * ({@link PromotionDeps.seedTransition}) outlives the engine and re-seeds a recreated one.
162
+ */
163
+ hasAdoptedState(): boolean;
139
164
  }
140
165
  /** Build a {@link PromotionLifecycle} over the injected store, barometer resolver, and signer. */
141
166
  export declare function createPromotionLifecycle(deps: PromotionDeps): PromotionLifecycle;
@@ -1 +1 @@
1
- {"version":3,"file":"promotion.d.ts","sourceRoot":"","sources":["../../../src/cohort-topic/promotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAKjE,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAC3C,0CAA0C;AAC1C,eAAO,MAAM,8BAA8B,QAAS,CAAC;AACrD,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AA2BD,MAAM,WAAW,aAAa;IAC7B,+FAA+F;IAC/F,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;IACrD;;;OAGG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC;IAC5C,gFAAgF;IAChF,gBAAgB,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC;IAClD,gGAAgG;IAChG,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC;IAC1C,oFAAoF;IACpF,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,UAAU,CAAC;IACjD;;;;;OAKG;IACH,WAAW,EAAE,MAAM,UAAU,CAAC;IAC9B,6DAA6D;IAC7D,WAAW,EAAE,MAAM,UAAU,CAAC;IAC9B,oEAAoE;IACpE,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;;OAKG;IACH,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IACnG;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IACrF,+FAA+F;IAC/F,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;IACzC;;;;;;OAMG;IACH,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D;AAoOD,kGAAkG;AAClG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,aAAa,GAAG,kBAAkB,CAEhF"}
1
+ {"version":3,"file":"promotion.d.ts","sourceRoot":"","sources":["../../../src/cohort-topic/promotion.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,9 @@
42
42
  * idempotent and `effectiveAt`-ordered via the monotonic {@link PromotionState.lastEffectiveAt}
43
43
  * high-water mark, so re-applying a notice (including this member's own echoed broadcast) or a replayed
44
44
  * older notice is a no-op — a stale promotion can never un-demote a cohort that has since demoted.
45
+ * A freshly created lifecycle can seed that per-topic ordering from a longer-lived node-level record via
46
+ * the optional {@link PromotionDeps.seedTransition}, so recreating an engine (e.g. after a memory-pressure
47
+ * eviction) does not reopen the replay window.
45
48
  */
46
49
  import { b64urlToBytes, bytesToB64url } from "./wire/codec.js";
47
50
  import { demotionNoticeSigningPayload, promotionNoticeSigningPayload } from "./sig/payloads.js";
@@ -91,14 +94,14 @@ class CohortPromotionLifecycle {
91
94
  this.growthWindowMs = cfg.growthWindowMs ?? DEFAULT_GROWTH_WINDOW_MS;
92
95
  }
93
96
  async onParticipantCountChange(topicId, now) {
94
- const state = this.stateFor(topicId);
97
+ const state = this.stateFor(topicId, now);
95
98
  const count = this.deps.store.directParticipants(topicId);
96
99
  this.pushGrowthSample(state, count, now);
97
100
  this.refreshLowLoadClock(state, count, now);
98
101
  if (state.promoted) {
99
102
  return undefined; // already promoted — sticky until a demotion clears it
100
103
  }
101
- if (!this.promotionTriggered(topicId, state, count, now)) {
104
+ if (!this.promotionTriggered(topicId, state, count)) {
102
105
  return undefined;
103
106
  }
104
107
  return this.promote(topicId, state, now);
@@ -114,11 +117,38 @@ class CohortPromotionLifecycle {
114
117
  return this.demote(topicId, state, now);
115
118
  }
116
119
  isPromoted(topicId) {
117
- return this.states.get(bytesKey(topicId))?.promoted ?? false;
120
+ const state = this.states.get(bytesKey(topicId));
121
+ if (state !== undefined) {
122
+ // In-engine state wins when present: it was itself seed-initialized on creation, so any divergence
123
+ // from the node-level record means a newer transition landed here first.
124
+ return state.promoted;
125
+ }
126
+ // Seed peek, not a state creation. `isPromoted` has no `now` to arm the sticky-window anchor
127
+ // (`promotedAt`), and creating promoted state without it would skip the sticky gate and allow an
128
+ // early demotion — so the direction is read straight off the node-level record. Nothing else calls
129
+ // `stateFor` on a freshly recreated engine before `isPromoted` is first read, so without this peek a
130
+ // correct `promoted = true` would be invisible until some notice or count change re-created the state.
131
+ return this.deps.seedTransition?.(topicId)?.promoted ?? false;
132
+ }
133
+ hasAdoptedState() {
134
+ // Adopted transition state only: a promoted flag or the lastEffectiveAt high-water. Growth samples /
135
+ // lowLoadSince are rebuilt from the store on the next onParticipantCountChange, so they never count.
136
+ // NOTE: this reports only in-engine state, so a freshly recreated engine whose promoted mode is
137
+ // currently visible ONLY through the `isPromoted` seed peek (no `stateFor` call yet) answers false and
138
+ // ranks 0 in the host's eviction ranking — as evictable as an engine holding nothing. Correctness is
139
+ // unaffected (the node-level record survives eviction and re-seeds again), so this is a ranking
140
+ // preference lost, not state lost. If recreated-promoted engines are ever observed thrashing through
141
+ // eviction, give the peek a `now` and let it create the seeded state instead of peeking.
142
+ for (const state of this.states.values()) {
143
+ if (state.promoted || state.lastEffectiveAt !== undefined) {
144
+ return true;
145
+ }
146
+ }
147
+ return false;
118
148
  }
119
149
  // --- remote apply (verified notices this member did not originate) ---
120
150
  applyPromotionNotice(n, now) {
121
- const state = this.stateFor(b64urlToBytes(n.topicId));
151
+ const state = this.stateFor(b64urlToBytes(n.topicId), now);
122
152
  if (!this.isNewerTransition(state, n.effectiveAt)) {
123
153
  return; // already adopted, our own echoed broadcast, or a stale replay
124
154
  }
@@ -126,8 +156,8 @@ class CohortPromotionLifecycle {
126
156
  state.promotedAt = now;
127
157
  state.lastEffectiveAt = n.effectiveAt;
128
158
  }
129
- applyDemotionNotice(n, _now) {
130
- const state = this.stateFor(b64urlToBytes(n.topicId));
159
+ applyDemotionNotice(n, now) {
160
+ const state = this.stateFor(b64urlToBytes(n.topicId), now);
131
161
  if (!this.isNewerTransition(state, n.effectiveAt)) {
132
162
  return;
133
163
  }
@@ -142,17 +172,21 @@ class CohortPromotionLifecycle {
142
172
  return state.lastEffectiveAt === undefined || effectiveAt > state.lastEffectiveAt;
143
173
  }
144
174
  // --- promotion ---
145
- promotionTriggered(topicId, state, count, now) {
175
+ promotionTriggered(topicId, state, count) {
146
176
  if (count >= this.capPromote) {
147
177
  return true;
148
178
  }
149
179
  if (this.deps.loadBucket(topicId) >= this.bucketOverload && count >= this.capPromoteFast) {
150
180
  return true;
151
181
  }
152
- return this.slopePredictsCrossing(state, count, now);
182
+ return this.slopePredictsCrossing(state, count);
153
183
  }
154
- /** Linear extrapolation over the growth window: will `directParticipants` cross `cap_promote` within lookahead? */
155
- slopePredictsCrossing(state, count, now) {
184
+ /**
185
+ * Linear extrapolation over the growth window: will `directParticipants` cross `cap_promote` within
186
+ * lookahead? Needs no `now` — the caller stamps the current `(now, count)` as the last growth sample
187
+ * before asking, so `samples[last].t` *is* `now`.
188
+ */
189
+ slopePredictsCrossing(state, count) {
156
190
  const samples = state.samples;
157
191
  if (samples.length < 2) {
158
192
  return false;
@@ -251,11 +285,24 @@ class CohortPromotionLifecycle {
251
285
  };
252
286
  }
253
287
  // --- bookkeeping ---
254
- stateFor(topicId) {
288
+ stateFor(topicId, now) {
255
289
  const key = bytesKey(topicId);
256
290
  let state = this.states.get(key);
257
291
  if (state === undefined) {
258
292
  state = { promoted: false, samples: [] };
293
+ // Seed the replay ordering (and direction) from the node-level adopted-transition record, so a
294
+ // recreated engine picks up where the evicted one left off. The original sticky-window anchor is
295
+ // unrecoverable, so a seeded promotion re-arms `promotedAt` at `now` — that only delays demotion
296
+ // (the conservative direction), never allows an early one. `lowLoadSince` stays undefined: it is
297
+ // rebuilt from the store on the next `onParticipantCountChange`.
298
+ const seed = this.deps.seedTransition?.(topicId);
299
+ if (seed !== undefined) {
300
+ state.lastEffectiveAt = seed.effectiveAt;
301
+ state.promoted = seed.promoted;
302
+ if (seed.promoted) {
303
+ state.promotedAt = now;
304
+ }
305
+ }
259
306
  this.states.set(key, state);
260
307
  }
261
308
  return state;
@@ -1 +1 @@
1
- {"version":3,"file":"promotion.js","sourceRoot":"","sources":["../../../src/cohort-topic/promotion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promotion.js","sourceRoot":"","sources":["../../../src/cohort-topic/promotion.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,12 @@
13
13
  * hardening tweak to a check (e.g. the fixed-length byte-width guard in {@link b64urlFixedLen}) lands
14
14
  * once and every consumer inherits it.
15
15
  */
16
+ /**
17
+ * Ring-coord / topic-id / cohort-epoch byte width (SHA-256 truncated to the ring width). Lives here,
18
+ * not in a single validator module, because both wires built on these primitives — cohort-topic and
19
+ * matchmaking — pin the same hash-derived fields to it.
20
+ */
21
+ export declare const COORD_BYTES = 32;
16
22
  /** Thrown for any malformed, oversized, or structurally invalid cohort-topic frame. */
17
23
  export declare class CohortWireError extends Error {
18
24
  constructor(message: string);
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/primitives.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,12 @@
14
14
  * once and every consumer inherits it.
15
15
  */
16
16
  import { b64urlToBytes } from "./codec.js";
17
+ /**
18
+ * Ring-coord / topic-id / cohort-epoch byte width (SHA-256 truncated to the ring width). Lives here,
19
+ * not in a single validator module, because both wires built on these primitives — cohort-topic and
20
+ * matchmaking — pin the same hash-derived fields to it.
21
+ */
22
+ export const COORD_BYTES = 32;
17
23
  /** Thrown for any malformed, oversized, or structurally invalid cohort-topic frame. */
18
24
  export class CohortWireError extends Error {
19
25
  constructor(message) {
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/primitives.ts"],"names":[],"mappings":"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"}
@@ -140,6 +140,7 @@ export interface RenewReplyV1 {
140
140
  result: "ok" | "unknown_registration" | "primary_moved" | "withdrawn";
141
141
  newPrimary?: string;
142
142
  newBackups?: string[];
143
+ /** 32 bytes, base64url. */
143
144
  cohortEpoch?: string;
144
145
  }
145
146
  /**
@@ -209,6 +210,7 @@ export interface PromotionNoticeV1 {
209
210
  thresholdSig: string;
210
211
  /** PeerIds, `>= minSigs`. */
211
212
  signers: string[];
213
+ /** 32 bytes, base64url. */
212
214
  cohortEpoch: string;
213
215
  }
214
216
  /** Threshold-signed demotion notice. */
@@ -228,6 +230,7 @@ export interface DemotionNoticeV1 {
228
230
  effectiveAt: number;
229
231
  thresholdSig: string;
230
232
  signers: string[];
233
+ /** 32 bytes, base64url. */
231
234
  cohortEpoch: string;
232
235
  }
233
236
  /**
@@ -298,6 +301,7 @@ export interface CohortGossipV1 {
298
301
  * naming its own coord, so a gossip for one cohort never pollutes a sibling cohort's store/view.
299
302
  */
300
303
  coord: string;
304
+ /** 32 bytes, base64url. */
301
305
  cohortEpoch: string;
302
306
  /**
303
307
  * The tree tier `d` the originating cohort sits at (the coord encodes the tier-shard, but a coord is a
@@ -401,6 +405,7 @@ export interface MembershipCertV1 {
401
405
  v: 1;
402
406
  /** 32 bytes, base64url. */
403
407
  cohortCoord: string;
408
+ /** 32 bytes, base64url. */
404
409
  cohortEpoch: string;
405
410
  /** PeerIds, sorted ascending, length `k`. */
406
411
  members: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH,OAAO,KAAK,EAEX,gBAAgB,EAChB,WAAW,EACX,cAAc,EAEd,gBAAgB,EAGhB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAEf,UAAU,EACV,YAAY,EACZ,OAAO,EAEP,aAAa,EACb,WAAW,EAEX,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAoClD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAkD7D;AAcD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CA4BvE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAevD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAiBjE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAoB3E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAezE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAyBjF;AAED,8GAA8G;AAC9G,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAUzE;AA2DD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAmErE;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAWnE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAgB/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAmBzE"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/cohort-topic/wire/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqBH,OAAO,KAAK,EAEX,gBAAgB,EAChB,WAAW,EACX,cAAc,EAEd,gBAAgB,EAGhB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAEf,UAAU,EACV,YAAY,EACZ,OAAO,EAEP,aAAa,EACb,WAAW,EAEX,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAkClD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAkD7D;AAcD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAyBvE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAevD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAejE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAoB3E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAezE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAyBjF;AAED,8GAA8G;AAC9G,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAUzE;AA2DD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAmErE;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAWnE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAgB/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAmBzE"}
@@ -8,7 +8,7 @@
8
8
  * narrow cleanly or throw.
9
9
  */
10
10
  import { DEFAULT_D_MAX_CAP } from "../dmax.js";
11
- import { assignDefined, asObject, b64urlField, b64urlFixedLen, failWire as fail, optBool, optFiniteNumber, optString, optStringArray, reqBool, reqEnum, reqFiniteNumber, reqString, reqStringArray, requireV1, } from "./primitives.js";
11
+ import { assignDefined, asObject, b64urlField, b64urlFixedLen, COORD_BYTES, failWire as fail, optBool, optFiniteNumber, optString, optStringArray, reqBool, reqEnum, reqFiniteNumber, reqString, reqStringArray, requireV1, } from "./primitives.js";
12
12
  // The generic structural-validation primitives (`fail`/`asObject`/`req*`/`opt*`/`b64url*`/`reqEnum`/…)
13
13
  // live in ./primitives.js and are imported above; only the cohort-topic domain validators and the
14
14
  // tier-semantics helpers below stay local. `CohortWireError` is re-exported here so existing importers
@@ -33,8 +33,6 @@ function treeTier(value, what) {
33
33
  }
34
34
  return value;
35
35
  }
36
- /** Ring-coord / topic-id / epoch byte width (SHA-256 truncated to the ring width). */
37
- const COORD_BYTES = 32;
38
36
  /** Correlation-id byte width (a 16-byte nonce minted per walk probe / renew). */
39
37
  const CORRELATION_BYTES = 16;
40
38
  const REGISTER_RESULTS = [
@@ -118,10 +116,7 @@ export function validateRegisterReplyV1(value) {
118
116
  assignDefined(out, "backups", optStringArray(obj, "backups", what));
119
117
  const cohortEpoch = optString(obj, "cohortEpoch", what);
120
118
  if (cohortEpoch !== undefined) {
121
- // NOTE: cohortEpoch is NOT length-pinned though real epochs are a 32-byte SHA-256 — several
122
- // test fixtures (db-core reactivity + db-p2p) feed 1-byte synthetic epochs. Pinning is tracked
123
- // by debt-cohort-topic-pin-cohort-epoch. See b64urlField's note.
124
- out.cohortEpoch = b64urlField(cohortEpoch, "cohortEpoch", what);
119
+ out.cohortEpoch = b64urlFixedLen(cohortEpoch, "cohortEpoch", COORD_BYTES, what);
125
120
  }
126
121
  assignDefined(out, "cohortMembers", optStringArray(obj, "cohortMembers", what));
127
122
  if (obj["topicTraffic"] !== undefined) {
@@ -163,9 +158,7 @@ export function validateRenewReplyV1(value) {
163
158
  assignDefined(out, "newBackups", optStringArray(obj, "newBackups", what));
164
159
  const cohortEpoch = optString(obj, "cohortEpoch", what);
165
160
  if (cohortEpoch !== undefined) {
166
- // NOTE: cohortEpoch is NOT length-pinned — see validateRegisterReplyV1's note and
167
- // debt-cohort-topic-pin-cohort-epoch.
168
- out.cohortEpoch = b64urlField(cohortEpoch, "cohortEpoch", what);
161
+ out.cohortEpoch = b64urlFixedLen(cohortEpoch, "cohortEpoch", COORD_BYTES, what);
169
162
  }
170
163
  return out;
171
164
  }
@@ -187,7 +180,7 @@ export function validatePromotionNoticeV1(value) {
187
180
  effectiveAt: reqFiniteNumber(obj, "effectiveAt", what),
188
181
  thresholdSig: b64urlField(reqString(obj, "thresholdSig", what), "thresholdSig", what),
189
182
  signers: reqStringArray(obj, "signers", what),
190
- cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
183
+ cohortEpoch: b64urlFixedLen(reqString(obj, "cohortEpoch", what), "cohortEpoch", COORD_BYTES, what),
191
184
  };
192
185
  }
193
186
  export function validateDemotionNoticeV1(value) {
@@ -203,7 +196,7 @@ export function validateDemotionNoticeV1(value) {
203
196
  effectiveAt: reqFiniteNumber(obj, "effectiveAt", what),
204
197
  thresholdSig: b64urlField(reqString(obj, "thresholdSig", what), "thresholdSig", what),
205
198
  signers: reqStringArray(obj, "signers", what),
206
- cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
199
+ cohortEpoch: b64urlFixedLen(reqString(obj, "cohortEpoch", what), "cohortEpoch", COORD_BYTES, what),
207
200
  };
208
201
  }
209
202
  /**
@@ -239,7 +232,7 @@ export function validateChildLinkV1(value, minSigs) {
239
232
  effectiveAt: reqFiniteNumber(obj, "effectiveAt", what),
240
233
  thresholdSig,
241
234
  signers,
242
- cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
235
+ cohortEpoch: b64urlFixedLen(reqString(obj, "cohortEpoch", what), "cohortEpoch", COORD_BYTES, what),
243
236
  };
244
237
  }
245
238
  /** Validate a {@link ChildLinkReplyV1}: `result` in `linked | rejected`, optional human-readable `reason`. */
@@ -335,7 +328,7 @@ export function validateCohortGossipV1(value) {
335
328
  v: 1,
336
329
  fromMember: reqString(obj, "fromMember", what),
337
330
  coord: b64urlFixedLen(reqString(obj, "coord", what), "coord", COORD_BYTES, what),
338
- cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
331
+ cohortEpoch: b64urlFixedLen(reqString(obj, "cohortEpoch", what), "cohortEpoch", COORD_BYTES, what),
339
332
  treeTier,
340
333
  willingnessBits,
341
334
  loadBuckets: loadBuckets,
@@ -383,7 +376,7 @@ export function validateSignRequestV1(value) {
383
376
  v: 1,
384
377
  kind: reqEnum(obj, "kind", SIGN_KINDS, what),
385
378
  coord: b64urlFixedLen(reqString(obj, "coord", what), "coord", COORD_BYTES, what),
386
- cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
379
+ cohortEpoch: b64urlFixedLen(reqString(obj, "cohortEpoch", what), "cohortEpoch", COORD_BYTES, what),
387
380
  payload: b64urlField(reqString(obj, "payload", what), "payload", what),
388
381
  };
389
382
  }
@@ -411,7 +404,7 @@ export function validateMembershipCertV1(value) {
411
404
  const out = {
412
405
  v: 1,
413
406
  cohortCoord: b64urlFixedLen(reqString(obj, "cohortCoord", what), "cohortCoord", COORD_BYTES, what),
414
- cohortEpoch: b64urlField(reqString(obj, "cohortEpoch", what), "cohortEpoch", what),
407
+ cohortEpoch: b64urlFixedLen(reqString(obj, "cohortEpoch", what), "cohortEpoch", COORD_BYTES, what),
415
408
  members: reqStringArray(obj, "members", what),
416
409
  stabilizedAt: reqFiniteNumber(obj, "stabilizedAt", what),
417
410
  thresholdSig: b64urlField(reqString(obj, "thresholdSig", what), "thresholdSig", what),
@@ -441,9 +434,7 @@ function validateRotationAttestation(obj, out, what) {
441
434
  if (presentCount !== 3) {
442
435
  fail(`${what}: rotation attestation requires all of prevEpoch, rotationSig, rotationSigners — or none`);
443
436
  }
444
- // prevEpoch is a prior cohortEpoch, so it inherits cohortEpoch's leniency (see the b64urlField note
445
- // and debt-cohort-topic-pin-cohort-epoch).
446
- out.prevEpoch = b64urlField(prevEpoch, "prevEpoch", what);
437
+ out.prevEpoch = b64urlFixedLen(prevEpoch, "prevEpoch", COORD_BYTES, what);
447
438
  out.rotationSig = b64urlField(rotationSig, "rotationSig", what);
448
439
  out.rotationSigners = rotationSigners;
449
440
  }