@wowok/agent-mcp 3.4.2 → 3.4.3

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 (308) hide show
  1. package/dist/.build-stamp.json +5 -0
  2. package/dist/chain-semantics/composition-truth.js +1 -1
  3. package/dist/chain-semantics/eval-order.js +1 -1
  4. package/dist/chain-semantics/field-capability.js +1 -1
  5. package/dist/chain-semantics/freeze-map.js +1 -1
  6. package/dist/chain-semantics/fund-flow.js +1 -1
  7. package/dist/chain-semantics/guard-verbs.js +1 -1
  8. package/dist/chain-semantics/object-graph.js +1 -1
  9. package/dist/composition/audit.js +1 -1
  10. package/dist/composition/compile.d.ts +10 -3
  11. package/dist/composition/compile.js +1 -1
  12. package/dist/composition/emit-phases.d.ts +30 -2
  13. package/dist/composition/emit-phases.js +1 -1
  14. package/dist/composition/guard-fill.d.ts +8 -0
  15. package/dist/composition/guard-fill.js +1 -1
  16. package/dist/composition/inflight.js +1 -1
  17. package/dist/composition/input-normalize.js +1 -1
  18. package/dist/composition/materialize.d.ts +2 -0
  19. package/dist/composition/materialize.js +1 -1
  20. package/dist/composition/mode-gates.js +1 -1
  21. package/dist/composition/param-disclosure.js +1 -1
  22. package/dist/composition/plan-retry-ledger.d.ts +16 -0
  23. package/dist/composition/plan-retry-ledger.js +1 -1
  24. package/dist/composition/plan.d.ts +15 -1
  25. package/dist/composition/plan.js +1 -1
  26. package/dist/config/config-audit.spec.js +1 -1
  27. package/dist/config/judgment.d.ts +5 -0
  28. package/dist/config/judgment.js +1 -1
  29. package/dist/evaluation/builtins/arbitration-score.d.ts +1 -0
  30. package/dist/evaluation/builtins/arbitration-score.js +1 -1
  31. package/dist/evaluation/builtins/demand-match.js +1 -1
  32. package/dist/evaluation/builtins/graph-service.d.ts +8 -0
  33. package/dist/evaluation/builtins/graph-service.js +1 -1
  34. package/dist/evaluation/capability.d.ts +9 -0
  35. package/dist/evaluation/engine.js +1 -1
  36. package/dist/evaluation/extract.d.ts +9 -1
  37. package/dist/evaluation/extract.js +1 -1
  38. package/dist/evaluation/match-operation.js +1 -1
  39. package/dist/evaluation/match-policy.d.ts +5 -3
  40. package/dist/evaluation/match-policy.js +1 -1
  41. package/dist/evaluation/standards.d.ts +1 -0
  42. package/dist/evaluation/standards.js +1 -1
  43. package/dist/evaluation/structured-lines.js +1 -1
  44. package/dist/evaluation/types.d.ts +1 -0
  45. package/dist/extensions/capability.js +1 -1
  46. package/dist/harness/recover.js +1 -1
  47. package/dist/index.js +1 -1
  48. package/dist/intent/types.d.ts +1 -1
  49. package/dist/intent/types.js +1 -1
  50. package/dist/knowledge/allocation-ledger.js +1 -1
  51. package/dist/knowledge/allocator-rail-verifier.d.ts +17 -1
  52. package/dist/knowledge/allocator-rail-verifier.js +1 -1
  53. package/dist/knowledge/arb-fund-facts.d.ts +7 -0
  54. package/dist/knowledge/arb-fund-facts.js +1 -1
  55. package/dist/knowledge/arbitration-rail-verifier.d.ts +35 -0
  56. package/dist/knowledge/arbitration-rail-verifier.js +1 -0
  57. package/dist/knowledge/audit-rules.d.ts +11 -0
  58. package/dist/knowledge/audit-rules.js +1 -1
  59. package/dist/knowledge/baselines/judgment-baselines.json +1 -0
  60. package/dist/knowledge/baselines/rules/guard.json +7 -6
  61. package/dist/knowledge/baselines/rules/progress.json +4 -4
  62. package/dist/knowledge/baselines/rules/reward.json +118 -3
  63. package/dist/knowledge/builtin-templates.d.ts +3 -2
  64. package/dist/knowledge/builtin-templates.js +1 -1
  65. package/dist/knowledge/chain-query-registry.d.ts +14 -0
  66. package/dist/knowledge/chain-query-registry.js +1 -0
  67. package/dist/knowledge/event-semantics.js +1 -1
  68. package/dist/knowledge/fee-param-bindings.d.ts +2 -0
  69. package/dist/knowledge/fee-param-bindings.js +1 -1
  70. package/dist/knowledge/getting-started.js +1 -1
  71. package/dist/knowledge/guard-binding-table.js +1 -1
  72. package/dist/knowledge/guard-binding-verifier.d.ts +7 -0
  73. package/dist/knowledge/guard-binding-verifier.js +1 -1
  74. package/dist/knowledge/guard-design-patterns.d.ts +1 -1
  75. package/dist/knowledge/guard-design-patterns.js +1 -1
  76. package/dist/knowledge/guard-host-context.js +1 -1
  77. package/dist/knowledge/guard-lint.js +1 -1
  78. package/dist/knowledge/guard-node-gates.d.ts +3 -1
  79. package/dist/knowledge/guard-node-gates.js +1 -1
  80. package/dist/knowledge/guard-puzzle.js +1 -1
  81. package/dist/knowledge/guard-render.js +1 -1
  82. package/dist/knowledge/guard-risk.js +1 -1
  83. package/dist/knowledge/guard-templates.d.ts +2 -1
  84. package/dist/knowledge/guard-templates.js +1 -1
  85. package/dist/knowledge/guard-translation.js +1 -1
  86. package/dist/knowledge/index.d.ts +2 -0
  87. package/dist/knowledge/index.js +1 -1
  88. package/dist/knowledge/industry-registry.js +1 -1
  89. package/dist/knowledge/jsonrpc-enum.js +1 -1
  90. package/dist/knowledge/knob-docs.js +1 -1
  91. package/dist/knowledge/param-schema.d.ts +1 -1
  92. package/dist/knowledge/param-schema.js +1 -1
  93. package/dist/knowledge/param-tiers.d.ts +2 -0
  94. package/dist/knowledge/param-tiers.js +1 -1
  95. package/dist/knowledge/path-oracle/products/food-delivery.js +1 -1
  96. package/dist/knowledge/pattern-resolutions.d.ts +2 -0
  97. package/dist/knowledge/pattern-resolutions.js +1 -1
  98. package/dist/knowledge/product-detail-source.d.ts +37 -0
  99. package/dist/knowledge/product-detail-source.js +1 -0
  100. package/dist/knowledge/product-doc-b5.d.ts +16 -0
  101. package/dist/knowledge/product-doc-b5.js +1 -0
  102. package/dist/knowledge/progress-ledger.js +1 -1
  103. package/dist/knowledge/projection.spec.js +1 -1
  104. package/dist/knowledge/publish-gate.d.ts +20 -0
  105. package/dist/knowledge/publish-gate.js +1 -0
  106. package/dist/knowledge/publish-readiness.d.ts +25 -0
  107. package/dist/knowledge/publish-readiness.js +1 -0
  108. package/dist/knowledge/publish-surface-contract.d.ts +16 -0
  109. package/dist/knowledge/publish-surface-contract.js +1 -0
  110. package/dist/knowledge/rail-exit-satisfiability.d.ts +25 -0
  111. package/dist/knowledge/rail-exit-satisfiability.js +1 -0
  112. package/dist/knowledge/reward-ledger.d.ts +1 -1
  113. package/dist/knowledge/reward-ledger.js +1 -1
  114. package/dist/knowledge/reward-risk.d.ts +1 -1
  115. package/dist/knowledge/reward-risk.js +1 -1
  116. package/dist/knowledge/service-ledger.d.ts +3 -1
  117. package/dist/knowledge/service-ledger.js +1 -1
  118. package/dist/knowledge/template-loader.d.ts +41 -2
  119. package/dist/knowledge/template-loader.js +1 -1
  120. package/dist/knowledge/template-registry.js +1 -1
  121. package/dist/knowledge/template-scanner.d.ts +17 -0
  122. package/dist/knowledge/template-scanner.js +1 -1
  123. package/dist/knowledge/workflow-guidance.d.ts +4 -0
  124. package/dist/knowledge/workflow-guidance.js +1 -1
  125. package/dist/monitor/MonitorLoop.js +1 -1
  126. package/dist/monitor/normalize.d.ts +1 -1
  127. package/dist/monitor/normalize.js +1 -1
  128. package/dist/monitor/types.js +1 -1
  129. package/dist/participation/game-context.js +1 -1
  130. package/dist/participation/radar-core.js +1 -1
  131. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  132. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  133. package/dist/playbooks/service-build/merchant-guide.d.ts +28 -3
  134. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  135. package/dist/playbooks/service-build/object-panorama.d.ts +4 -0
  136. package/dist/playbooks/service-build/object-panorama.js +1 -1
  137. package/dist/playbooks/service-build/participation-radar.js +1 -1
  138. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  139. package/dist/playbooks/service-build/service-panorama.js +1 -1
  140. package/dist/playbooks/service-build/service-quote.js +1 -1
  141. package/dist/review/index.js +1 -1
  142. package/dist/review/order.js +1 -1
  143. package/dist/safety/confirm-gate.js +1 -1
  144. package/dist/schema/benchmark-migration/index.d.ts +24 -0
  145. package/dist/schema/benchmark-migration/index.js +1 -1
  146. package/dist/schema/call/allocation.d.ts +11 -7
  147. package/dist/schema/call/allocation.js +1 -1
  148. package/dist/schema/call/arbitration.d.ts +4 -0
  149. package/dist/schema/call/arbitration.js +1 -1
  150. package/dist/schema/call/base.d.ts +28 -0
  151. package/dist/schema/call/base.js +1 -1
  152. package/dist/schema/call/bridge.d.ts +21 -0
  153. package/dist/schema/call/contact.d.ts +4 -0
  154. package/dist/schema/call/demand.d.ts +4 -0
  155. package/dist/schema/call/guard.d.ts +12 -0
  156. package/dist/schema/call/handler.d.ts +1 -0
  157. package/dist/schema/call/handler.js +1 -1
  158. package/dist/schema/call/machine.d.ts +16 -8
  159. package/dist/schema/call/normalize-error.d.ts +1 -0
  160. package/dist/schema/call/normalize-error.js +1 -0
  161. package/dist/schema/call/order.d.ts +7 -3
  162. package/dist/schema/call/order.js +1 -1
  163. package/dist/schema/call/payment.d.ts +7 -3
  164. package/dist/schema/call/permission.d.ts +4 -0
  165. package/dist/schema/call/personal.d.ts +4 -0
  166. package/dist/schema/call/progress.d.ts +4 -0
  167. package/dist/schema/call/progress.js +1 -1
  168. package/dist/schema/call/proof.d.ts +8 -0
  169. package/dist/schema/call/receipt.js +1 -1
  170. package/dist/schema/call/repository.d.ts +4 -0
  171. package/dist/schema/call/reward.d.ts +6 -2
  172. package/dist/schema/call/reward.js +1 -1
  173. package/dist/schema/call/semantic.d.ts +2 -2
  174. package/dist/schema/call/semantic.js +1 -1
  175. package/dist/schema/call/service.d.ts +6 -2
  176. package/dist/schema/call/treasury.d.ts +10 -6
  177. package/dist/schema/common/index.js +1 -1
  178. package/dist/schema/envelope-unify.d.ts +1 -0
  179. package/dist/schema/envelope-unify.js +1 -1
  180. package/dist/schema/evaluation/index.d.ts +43 -0
  181. package/dist/schema/evaluation/index.js +1 -1
  182. package/dist/schema/goal/index.d.ts +14 -2
  183. package/dist/schema/goal/planning.d.ts +18 -0
  184. package/dist/schema/goal/planning.js +1 -1
  185. package/dist/schema/intent-radar/index.d.ts +12 -0
  186. package/dist/schema/intent-radar/index.js +1 -1
  187. package/dist/schema/keeper/index.d.ts +1 -0
  188. package/dist/schema/local/index.d.ts +10 -0
  189. package/dist/schema/local/index.js +1 -1
  190. package/dist/schema/local/wip.js +1 -1
  191. package/dist/schema/messenger/index.d.ts +1 -0
  192. package/dist/schema/messenger/index.js +1 -1
  193. package/dist/schema/operations.d.ts +95 -12
  194. package/dist/schema/operations.js +1 -1
  195. package/dist/schema/persona/index.d.ts +22 -0
  196. package/dist/schema/query/bi.d.ts +28 -2
  197. package/dist/schema/query/bi.js +1 -1
  198. package/dist/schema/query/index.d.ts +67 -61
  199. package/dist/schema/query/index.js +1 -1
  200. package/dist/schema/schema-version.js +1 -1
  201. package/dist/schema/workflow/index.js +1 -1
  202. package/dist/schema-query-impl/index.d.ts +1 -0
  203. package/dist/schema-query-impl/index.js +1 -1
  204. package/dist/schemas/account_operation.output.json +2 -1
  205. package/dist/schemas/benchmark_migration_operation.output.json +74 -0
  206. package/dist/schemas/benchmark_migration_operation.schema.json +32 -0
  207. package/dist/schemas/bridge_operation.output.json +2 -1
  208. package/dist/schemas/bridge_operation.schema.json +40 -0
  209. package/dist/schemas/evaluation_operation.output.json +96 -0
  210. package/dist/schemas/evaluation_operation.schema.json +39 -0
  211. package/dist/schemas/goal_operation.schema.json +32 -0
  212. package/dist/schemas/guard2file.schema.json +8 -0
  213. package/dist/schemas/index.json +1 -1
  214. package/dist/schemas/intent_radar.output.json +10 -2
  215. package/dist/schemas/intent_radar.schema.json +5 -1
  216. package/dist/schemas/keeper_operation.output.json +2 -1
  217. package/dist/schemas/local_cache_operation.output.json +2 -1
  218. package/dist/schemas/local_history_operation.output.json +2 -1
  219. package/dist/schemas/local_info_operation.output.json +2 -1
  220. package/dist/schemas/local_mark_operation.output.json +2 -1
  221. package/dist/schemas/local_mark_operation.schema.json +10 -1
  222. package/dist/schemas/machineNode2file.schema.json +8 -0
  223. package/dist/schemas/messenger_operation.output.json +2 -1
  224. package/dist/schemas/messenger_operation.schema.json +2 -1
  225. package/dist/schemas/monitor_events.output.json +2 -1
  226. package/dist/schemas/monitor_subscription.output.json +2 -1
  227. package/dist/schemas/onchain_events.output.json +206 -13
  228. package/dist/schemas/onchain_events.schema.json +16 -0
  229. package/dist/schemas/onchain_operations.output.json +22 -3
  230. package/dist/schemas/onchain_operations.schema.json +971 -326
  231. package/dist/schemas/onchain_operations_allocation.schema.json +19 -12
  232. package/dist/schemas/onchain_operations_arbitration.schema.json +9 -1
  233. package/dist/schemas/onchain_operations_contact.schema.json +8 -0
  234. package/dist/schemas/onchain_operations_demand.schema.json +8 -0
  235. package/dist/schemas/onchain_operations_gen_passport.schema.json +8 -0
  236. package/dist/schemas/onchain_operations_gen_proof.schema.json +8 -0
  237. package/dist/schemas/onchain_operations_guard.schema.json +654 -114
  238. package/dist/schemas/onchain_operations_machine.schema.json +11 -3
  239. package/dist/schemas/onchain_operations_order.schema.json +14 -11
  240. package/dist/schemas/onchain_operations_payment.schema.json +12 -9
  241. package/dist/schemas/onchain_operations_permission.schema.json +8 -0
  242. package/dist/schemas/onchain_operations_personal.schema.json +8 -0
  243. package/dist/schemas/onchain_operations_progress.schema.json +9 -1
  244. package/dist/schemas/onchain_operations_proof.schema.json +8 -0
  245. package/dist/schemas/onchain_operations_repository.schema.json +8 -0
  246. package/dist/schemas/onchain_operations_reward.schema.json +14 -11
  247. package/dist/schemas/onchain_operations_service.schema.json +13 -10
  248. package/dist/schemas/onchain_operations_treasury.schema.json +17 -19
  249. package/dist/schemas/onchain_table_data.output.json +52 -10
  250. package/dist/schemas/persona_operation.output.json +57 -0
  251. package/dist/schemas/persona_operation.schema.json +9 -0
  252. package/dist/schemas/query_toolkit.output.json +325 -22
  253. package/dist/schemas/query_toolkit.schema.json +18 -5
  254. package/dist/schemas/wip_file.output.json +2 -2
  255. package/dist/schemas/wip_file.schema.json +2 -2
  256. package/dist/schemas/workflow_operation.schema.json +1 -1
  257. package/dist/tools/error-catalog.d.ts +17 -0
  258. package/dist/tools/error-catalog.js +1 -0
  259. package/dist/tools/handlers/benchmark-migration.d.ts +20 -8
  260. package/dist/tools/handlers/benchmark-migration.js +1 -1
  261. package/dist/tools/handlers/config.js +1 -1
  262. package/dist/tools/handlers/entry-edge-recipe.d.ts +101 -0
  263. package/dist/tools/handlers/entry-edge-recipe.js +1 -0
  264. package/dist/tools/handlers/escrow-deficit.d.ts +10 -0
  265. package/dist/tools/handlers/escrow-deficit.js +1 -0
  266. package/dist/tools/handlers/evaluation.js +1 -1
  267. package/dist/tools/handlers/fund-rail-recipe.d.ts +10 -0
  268. package/dist/tools/handlers/fund-rail-recipe.js +1 -0
  269. package/dist/tools/handlers/intent-radar.js +1 -1
  270. package/dist/tools/handlers/local.js +1 -1
  271. package/dist/tools/handlers/mark-namespace.d.ts +30 -0
  272. package/dist/tools/handlers/mark-namespace.js +1 -0
  273. package/dist/tools/handlers/messenger.js +1 -1
  274. package/dist/tools/handlers/onchain-name-registration.d.ts +1 -0
  275. package/dist/tools/handlers/onchain-name-registration.js +1 -1
  276. package/dist/tools/handlers/onchain-name-registration.spec.js +1 -1
  277. package/dist/tools/handlers/onchain.d.ts +30 -1
  278. package/dist/tools/handlers/onchain.js +1 -1
  279. package/dist/tools/handlers/publish-binding-echo.d.ts +22 -0
  280. package/dist/tools/handlers/publish-binding-echo.js +1 -0
  281. package/dist/tools/handlers/query.d.ts +1 -1
  282. package/dist/tools/handlers/query.js +1 -1
  283. package/dist/tools/handlers/review-chain.d.ts +1 -0
  284. package/dist/tools/handlers/review-chain.js +1 -1
  285. package/dist/tools/handlers/schema-query.js +1 -1
  286. package/dist/tools/handlers/stale-build-check.d.ts +9 -0
  287. package/dist/tools/handlers/stale-build-check.js +1 -0
  288. package/dist/tools/handlers/submission-assembly.d.ts +55 -0
  289. package/dist/tools/handlers/submission-assembly.js +1 -0
  290. package/dist/tools/handlers/wip.js +1 -1
  291. package/dist/tools/index.d.ts +1 -0
  292. package/dist/tools/index.js +1 -1
  293. package/dist/tools/move-fn-index.gen.js +1 -1
  294. package/dist/tools/publish-gate-state.d.ts +5 -0
  295. package/dist/tools/publish-gate-state.js +1 -0
  296. package/dist/tools/registry/business.js +1 -1
  297. package/dist/tools/registry/onchain.js +1 -1
  298. package/dist/tools/registry/query.js +1 -1
  299. package/dist/tools/retry.js +1 -1
  300. package/dist/tools/runtime-health.js +1 -1
  301. package/dist/tools/shared.js +1 -1
  302. package/dist/tools/upgrade-check.d.ts +1 -0
  303. package/dist/tools/upgrade-check.js +1 -1
  304. package/dist/tools/wip-verify-ledger.d.ts +2 -0
  305. package/dist/tools/wip-verify-ledger.js +1 -1
  306. package/dist/tools/wrap.d.ts +15 -1
  307. package/dist/tools/wrap.js +1 -1
  308. package/package.json +5 -3
@@ -14,6 +14,13 @@ export declare function normalizeGuardRowNames(table: unknown[], description: un
14
14
  };
15
15
  export type GuardFillReviewMode = NonNullable<CompilableTemplate["review_mode"]> | "none";
16
16
  export type GuardBindingCensus = Set<string>;
17
+ export interface GuardMountCensus {
18
+ edgeKeys: ReadonlySet<string>;
19
+ railKeys: ReadonlySet<string>;
20
+ policyKeys: ReadonlySet<string>;
21
+ buyMounted: boolean;
22
+ }
23
+ export declare function guardMountCensus(template: CompilableTemplate, inputs: Record<string, JsonValue>, precomputed?: Pick<ConditionalSelection, "selectorDroppedKeys" | "shape" | "rows">): GuardMountCensus;
17
24
  export interface GuardFillInputs {
18
25
  template: CompilableTemplate;
19
26
  base: string;
@@ -25,6 +32,7 @@ export interface GuardFillDerived {
25
32
  reviewMode: GuardFillReviewMode;
26
33
  rewardMark: string;
27
34
  needsRepository: boolean;
35
+ experienceClaimKey?: string;
28
36
  }
29
37
  export interface GuardFillResult {
30
38
  guardSpecs: GuardSpec[];
@@ -1 +1 @@
1
- import{fillGuardTemplate,getTemplateById}from'../knowledge/guard-templates.js';import{hasCallerIdentityLeg}from'../knowledge/allocator-rail-verifier.js';import{applyFeeParamBindings}from'../knowledge/fee-param-bindings.js';import{identityDefaultResolution,patternDefaultResolution,progressStateDefaultResolution,timeInstantiationFor}from'../knowledge/pattern-resolutions.js';import{GUARD_DESIGN_PATTERNS}from'../knowledge/guard-design-patterns.js';import{lookupBinding}from'../knowledge/guard-binding-table.js';import{TASK_BINDING_SLOT}from'../knowledge/onchain-constants.js';import{feeParamCouplingMismatches,windowMathMismatches,incentiveRatingFloorClaims,rewardWindowDayClaims}from'../knowledge/template-scanner.js';import{ref}from'./plan.js';function safeId(a){return a['replace'](/[^a-zA-Z0-9_]/g,'_');}function normalizeLogicArity(a){if(Array['isArray'](a))return a['map'](normalizeLogicArity);if(a===null||typeof a!=='object')return a;const b=a,c={};for(const [d,e]of Object['entries'](b))c[d]=normalizeLogicArity(e);if((c['type']==='logic_and'||c['type']==='logic_or')&&Array['isArray'](c['nodes'])){const f=c['nodes'];if(f['length']===0x1)return f[0x0];}return c;}export function normalizeInlineGuardTable(a,b){const c=b+'_service',d=f=>f['replace'](/\//g,'_'),e=d(c);return a['map'](f=>{if(f===null||typeof f!=='object'||Array['isArray'](f))return f;const g={...f};typeof g['value']==='string'&&d(g['value'])===e&&(g['value']=ref('service'));if(g['b_submission']===undefined)g['b_submission']=![];return g;});}function shortRowLabel(a,b){const c=a['search'](/:| \(| — /),d=c>0x0?a['slice'](0x0,c)['trim']():'';if(d['length']>0x0&&Buffer['byteLength'](d,'utf8')<=b)return d;let e=a;while(e['length']>0x0&&Buffer['byteLength'](e+'...','utf8')>b)e=e['slice'](0x0,-0x1);return e+'...';}const MAX_GUARD_DESCRIPTION_CONTENT=0xf9e;export function normalizeGuardRowNames(a,b,c){const d=0x3f,e=[],f=a['map'](j=>{if(!j||typeof j!=='object')return j;const k=j,l=k['name'];if(typeof l!=='string')return j;const m=l['startsWith']('0x')?'n_'+l:l;if(Buffer['byteLength'](m,'utf8')<=d)return m===l?j:{...k,'name':m};return e['push']('slot\x20'+String(k['identifier']??'?')+':\x20'+m),{...k,'name':shortRowLabel(m,d)};});if(e['length']===0x0)return{'table':f,'description':b};const g=typeof b==='string'?b:'';let h=g+'\x0a\x0aRow\x20labels\x20(the\x20on-chain\x20name\x20column\x20is\x20capped\x20at\x2064\x20BCS\x20bytes,\x20so\x20each\x20long\x20label\x20is\x20spelled\x20out\x20here):',i=0x0;for(const j of e){const k=h+'\x0a-\x20'+j;if(Buffer['byteLength'](k,'utf8')>c)break;h=k,i+=0x1;}return{'table':f,'description':i===0x0?b:h};}export function fillGuards(a){const {template:b,base:c,inputs:e,guardResolutions:f}=a,{dropKeys:h,selectorDroppedKeys:i,shape:j,rows:k}=a['selector'],l=[],o={},p=new Set();b['guards']['forEach']((Z,a0)=>{const a1=Z['key']??Z['template_id']+'#'+a0;if(i['has'](a1))return;const a2=patternDefaultResolution(b['id'],a1)??progressStateDefaultResolution(b,Z)??identityDefaultResolution(b,Z);if(a2!==undefined)o[a1]=a2;}),Object['assign'](o,Object['fromEntries'](Object['entries'](f??{})['filter'](([,Z])=>Z?.['kind']!=='declare')));const q=[];for(const [Z,a0]of Object['entries'](f??{})){if(a0?.['kind']==='omit')q['push'](Z);}const s=new Set();if(q['length']>0x0){const a1=new Set(j['flatMap'](a3=>(a3['from']??[])['map'](a4=>typeof a4==='string'?undefined:a4['guard_key'])['filter'](a4=>typeof a4==='string'))),a2=new Set(k['map'](a3=>a3['guard_key'])['filter'](a3=>typeof a3==='string'));for(const a3 of q){const a4=b['guards']['find']((a6,a7)=>(a6['key']??a6['template_id']+'#'+a7)===a3);if(a4===undefined)continue;const a5=[];if(a1['has'](a3))a5['push']('a\x20machine\x20forward\x20edge\x20(guard_key)');if(a2['has'](a3))a5['push']('an\x20allocator\x20rail\x20row\x20(guard_key)');if(a4['policy']!==undefined)a5['push']('a\x20Repository\x20write-policy\x20credential\x20(policy)');if(a4['host']==='service'&&a3==='buy')a5['push']('the\x20Service\x20buy\x20gate\x20(buy_guard)');a5['length']>0x0?l['push']({'code':'GUARD_OMIT_UNSUPPORTED','detail':'guard_resolutions[\x27'+a3+'\x27]\x20=\x20{kind:\x27omit\x27}\x20refused:\x20this\x20design\x20is\x20bound\x20to\x20'+a5['join']('\x20and\x20')+'\x20—\x20'+'omitting\x20it\x20would\x20orphan\x20the\x20binding\x20(open\x20rail\x20/\x20open\x20write\x20/\x20ungated\x20purchase).\x20'+'Fold\x20the\x20design\x27s\x20intent\x20into\x20the\x20bound\x20site\x20instead,\x20or\x20keep\x20the\x20guard\x20resolved.'}):s['add'](a3);}}const t=new Set(k['map'](a6=>a6['guard_key'])['filter'](a6=>typeof a6==='string')),u=new Map();b['guards']['forEach']((a6,a7)=>{const a8=a6['key']??a6['template_id']+'#'+a7,a9=a6['identity_leg_exempt'];typeof a9==='string'&&a9['trim']()!==''&&t['has'](a8)&&u['set'](a8,a9['trim']());});for(const [a6,a7]of Object['entries'](f??{})){if(a7?.['kind']!=='declare')continue;const a8=typeof a7['reason']==='string'?a7['reason']['trim']():'';if(a8===''){l['push']({'code':'GUARD_DECLARE_UNSUPPORTED','detail':'guard_resolutions[\x27'+a6+'\x27]\x20=\x20{kind:\x27declare\x27}\x20refused:\x20the\x20reason\x20field\x20is\x20mandatory\x20and\x20'+'must\x20be\x20non-empty\x20—\x20the\x20disclosure\x20that\x20ships\x20with\x20the\x20exemption\x20quotes\x20it\x20verbatim,\x20and\x20an\x20'+'unexplained\x20legless\x20money\x20rail\x20is\x20exactly\x20what\x20the\x20gate\x20exists\x20to\x20prevent\x20(ks11).'});continue;}const a9=b['guards']['find']((aa,ab)=>(aa['key']??aa['template_id']+'#'+ab)===a6);if(a9===undefined)continue;if(!t['has'](a6)){l['push']({'code':'GUARD_DECLARE_UNSUPPORTED','detail':'guard_resolutions[\x27'+a6+'\x27]\x20=\x20{kind:\x27declare\x27}\x20refused:\x20the\x20declare\x20channel\x20is\x20honored\x20ONLY\x20for\x20'+('allocator-rail-bound\x20designs\x20(a\x20spec\x20mounted\x20on\x20an\x20allocator\x20row),\x20and\x20\x27'+a6+'\x27\x20is\x20bound\x20to\x20no\x20')+'allocator\x20row.\x20An\x20identity-less\x20forward/policy/buy\x20gate\x20is\x20a\x20different\x20violation\x20family\x20'+'(RELEASE_EDGE_NO_IDENTITY\x20/\x20REPO_GUARD_POLICY_MISSING)\x20with\x20its\x20own\x20remedy\x20—\x20declare\x20does\x20not\x20reach\x20it.'});continue;}u['set'](a6,a8);}const w=b['guards']['map']((aa,ab)=>{const ac=aa['key']??aa['template_id']+'#'+ab,ad=applyFeeParamBindings(aa['params'],b['id'],ac,e,b['fee_params']);return{'key':ac,'template_id':aa['template_id'],'host':aa['host'],'purpose':aa['purpose'],'policy':aa['policy'],'params':ad};})['filter'](aa=>!h['has'](aa['key'])&&!s['has'](aa['key'])),x=new Map();{const aa=new Set(w['map'](ac=>ac['key'])),ab=ac=>{if(ac===undefined)return![];const ad=w['find'](af=>af['key']===ac);if(ad===undefined)return![];const ae=o[ac];if(ae?.['kind']==='inline'||ae?.['kind']==='template'||ad['template_id']['startsWith']('tpl_'))return!![];if(ae?.['kind']==='omit'&&s['has'](ac))return![];return lookupBinding(ad,b)!==undefined;};for(const ac of j){for(const ad of ac['from']??[]){const ae=typeof ad==='string'?{'prev':ad}:ad,af=ae['operator']??ac['operator']??(ae['prev']===''?'order_payer':'merchant');if(af!=='order_payer')continue;if(ae['guard_key']!==undefined&&ab(ae['guard_key']))continue;const ag=ae['forward']??(ae['prev']===''?'enter_'+ac['name']:ae['prev']+'_to_'+ac['name']);if(x['has'](ag))continue;let ah='order_holder_'+ag;while(aa['has'](ah))ah=ah+'_x';aa['add'](ah),x['set'](ag,ah);const ai=ae['guard_key']===undefined?'Declare\x20an\x20explicit\x20order-holder\x20guard_key\x20on\x20the\x20edge\x20to\x20replace\x20this\x20auto\x20key\x20with\x20a\x20named\x20credential.':'The\x20edge\x20DOES\x20declare\x20guard_key\x20\x27'+ae['guard_key']+'\x27,\x20but\x20that\x20design\x20does\x20not\x20resolve\x20to\x20a\x20Guard\x20object,\x20so\x20the\x20forward\x20would\x20otherwise\x20ship\x20unguarded;\x20resolve\x20\x27'+ae['guard_key']+'\x27\x20(guard_resolutions,\x20or\x20re-point\x20the\x20spec\x20at\x20an\x20instantiable\x20tpl_*\x20id)\x20to\x20carry\x20the\x20richer\x20condition\x20—\x20this\x20identity\x20leg\x20stays\x20bound\x20either\x20way.';w['push']({'key':ah,'template_id':'tpl_forward_order_holder','host':'machine','purpose':'F05\x20kernel-injected\x20order-holder\x20identity\x20binding\x20for\x20the\x20buyer-exclusive\x20forward\x20'+('\x27'+ag+'\x27\x20(edge\x20\x27'+ae['prev']+'\x27->\x27'+ac['name']+'\x27):\x20namedOperator\x20\x22\x22\x20passes\x20for\x20')+'anyone\x20at\x20the\x20permission\x20layer,\x20so\x20without\x20this\x20guard\x20the\x20'+'buyer\x20rail\x20is\x20advanceable\x20by\x20ANY\x20passport\x20holder\x20attached\x20to\x20the\x20order\x20—\x20takeover\x20'+('risk.\x20'+ai)});}}}if(b['arbitration_mode']==='third_party'&&!w['some'](aj=>aj['template_id']['startsWith']('tpl_voting_guard_'))){let aj='arbitration_vote_open';const ak=new Set(w['map'](al=>al['key']));while(ak['has'](aj))aj=aj+'_x';w['push']({'key':aj,'template_id':'tpl_voting_guard_open_vote','host':'arbitration','purpose':'F-cu\x20kernel-injected\x20open-vote\x20surface\x20for\x20the\x20third_party\x20venue:\x20an\x20EMPTY\x20'+'voting_guard\x20is\x20NOT\x20open\x20voting\x20—\x20plain\x20votes\x20hard-require\x20permission\x20358\x20'+'(admin-only\x20by\x20default),\x20so\x20disputes\x20dead-lock\x20when\x20the\x20arb\x20admin\x20is\x20'+'unresponsive\x20(crs9-F-36).\x20Every\x20Passport\x20holder\x20may\x20vote\x20at\x20flat\x20weight\x201;\x20'+'a\x20deliberately\x20closed\x20panel\x20re-declares\x20tpl_voting_guard_numeric_weight.','params':{'vote_weight':0x1}});}const y=new Map(w['map'](al=>[al['key'],al])),z=e['review_mode'],A=z==='review'||z==='review_reward'||z==='none'?z:undefined,B=A??b['review_mode']??'none',C=c+'_review_reward',D=al=>{const am=e[al]??b['fee_params'][al];if(typeof am==='number'&&Number['isFinite'](am))return am;if(typeof am==='string'&&am['trim']()!==''&&Number['isFinite'](Number(am)))return Number(am);return undefined;},E=0x4,F=D('reward_rating_floor'),G=F??E,H=D('reward_claim_opens_after_days'),I=D('reward_claim_closes_after_days'),J=0xe,K=0xe,L=b['fee_params']['return_window_days']??b['fee_params']['review_window_days'],M=typeof L==='number'&&Number['isFinite'](L)&&L>0x0?L:0x0,N=Math['max'](J,M+0x1),O=H??N,P=I??K;if(B==='review_reward'){const al=w['find'](ap=>ap['host']==='reward'),am=al!==undefined?o[al['key']]:undefined,an=am!==undefined&&(am['kind']==='template'||am['kind']==='inline'),ao=al!==undefined&&(al['template_id']['startsWith']('tpl_')||an);if(al===undefined||!ao){const ap=/deliver|complet|receiv|fulfil|finish/i,aq=/fund|pledge|back/i,ar=j['find'](ax=>/review/i['test'](ax['name'])),as=j['find'](ax=>ap['test'](ax['name'])),at=j['filter'](ax=>ax['semantic_role']==='final')['map'](ax=>ax['name']),au=ar?.['name']??as?.['name']??at[0x0],av=as!==undefined?at['filter'](ax=>!aq['test'](ax)):at,aw=[...new Set([au,...av])]['slice'](0x0,0x4);if(au!==undefined){const ax=new Set([au,...av])['size']>0x4,ay='Claim-set\x20default\x20(ks7\x20F-25):\x20the\x20bounty\x20anchors\x20on\x20the\x20review\x20node,\x20else\x20a\x20delivery-class\x20node,\x20else\x20the\x20first\x20terminal'+(as!==undefined?',\x20and\x20funding-class\x20settlement\x20terminals\x20are\x20EXCLUDED\x20—\x20a\x20funding\x20release\x20(funded_released\x20family)\x20precedes\x20physical\x20fulfillment,\x20so\x20a\x20window\x20measured\x20there\x20ships\x20the\x20bounty\x20permanently\x20unclaimable;\x20hosting\x20the\x20bounty\x20on\x20a\x20funding\x20terminal\x20requires\x20an\x20explicit\x20host:\x22reward\x22\x20spec\x20(the\x20named-design\x20escape\x20hatch).':'\x20(this\x20shape\x20mounts\x20no\x20delivery-class\x20node,\x20so\x20funding-class\x20terminals\x20stay\x20IN\x20the\x20default\x20set);\x20an\x20explicit\x20host:\x22reward\x22\x20spec\x20can\x20pin\x20any\x20claim\x20set.'),az=G>0x0,aA=az?'Rating\x20leg\x20ARMED\x20on\x20the\x20plan-created\x20\x27'+c+'_review\x27\x20repository\x20/\x20\x27rating\x27\x20policy\x20(order-keyed\x20U64):\x20pays\x20only\x20at\x20rating\x20>=\x20'+G+'\x20(reward_rating_floor\x20input'+(F===undefined?'\x20—\x20S14\x20default\x20'+E+',\x20no\x20input\x20given':'')+').':'No\x20rating\x20leg\x20—\x20reward_rating_floor\x20was\x20EXPLICITLY\x20set\x20to\x200\x20(plain\x20praise\x20bounty\x20opt-out,\x20S14\x20default\x20is\x20'+E+').',aB=H!==undefined?'Claim\x20window:\x20opens\x20'+O+'\x20day(s)\x20after\x20the\x20claim-allowed\x20entry\x20(reward_claim_opens_after_days\x20input;\x20overrides\x20the\x20after-sales-expiry\x20derivation\x20—\x20keep\x20it\x20ABOVE\x20the\x20store\x27s\x20return/review\x20window\x20or\x20the\x20claim-and-return\x20arbitrage\x20re-opens,\x20tbs7\x20F-04),\x20claimable\x20for\x20a\x20further\x20'+P+'\x20day(s)\x20(bsw4\x20F-11\x20close).':'Claim\x20window:\x20opens\x20'+O+'\x20day(s)\x20after\x20the\x20claim-allowed\x20entry\x20(derived\x20after-sales\x20expiry\x20+\x201d,\x20floored\x20at\x2014d\x20—\x20tbs7\x20F-04:\x20the\x20bounty\x20opens\x20only\x20after\x20the\x20return/review\x20window\x20closed),\x20claimable\x20for\x20a\x20further\x20'+P+'\x20day(s)\x20(bsw4\x20F-11:\x20the\x20window\x20CLOSES\x20—\x20a\x20real\x20deadline,\x20counted\x20from\x20the\x20open).',aC={'reward_address':'review_pool','expected_pre_claim_node':aw[0x0],'expected_pre_claim_node_alt':aw[0x1]??au,'expected_pre_claim_node_alt2':aw[0x2]??au,'expected_pre_claim_node_alt3':aw[0x3]??au,...az?{'rating_repository':c+'_review','rating_policy_name':'rating','rating_floor':String(G)}:{'rating_repository':''},'opens_after_days':String(O),'closes_after_days':String(P)};if(al===undefined){let aD='reward_claim_default';while(w['some'](aE=>aE['key']===aD))aD=aD+'_x';w['push']({'key':aD,'template_id':'tpl_reward_one_time_claim','host':'reward','purpose':'4R-02\x20kernel-injected\x20DEFAULT\x20claim\x20guard\x20for\x20review_mode\x20\x27review_reward\x27\x20(the\x20template\x20'+('declares\x20no\x20reward\x20spec):\x20claim-allowed\x20SET\x20{'+aw['join'](',\x20')+'}'+(ax?'\x20(TRUNCATED\x20to\x20the\x204\x20template\x20slots\x20—\x20the\x20shape\x20carries\x20more\x20terminals;\x20declare\x20an\x20explicit\x20host:\x22reward\x22\x20spec)':'')+',\x20')+'bounty\x20derived\x20T-02\x20(2%\x20of\x20the\x20cheapest\x20SKU,\x20floored\x20at\x201),\x20funding\x20fail-closed\x20'+('(REVIEW_REWARD_UNFUNDED).\x20'+aA+'\x20'+aB+'\x20'+ay+'\x20W5-03\x20mutual\x20exclusion:\x20the\x20claim\x20set\x20')+'carries\x20NO\x20cancelled-role\x20node\x20—\x20a\x20refunded\x20order\x20cannot\x20reach\x20this\x20bounty\x20(a\x20chain-level\x20'+'\x27was\x20ever\x20refunded\x27\x20boolean\x20does\x20not\x20exist;\x20mounting\x20a\x20review/reward\x20advance\x20on\x20a\x20cancelled\x20'+'terminal\x20is\x20blocked\x20by\x20audit\x20STATE-REFUNDED-REWARD-01).\x20Declare\x20an\x20explicit\x20host:\x22reward\x22\x20guard\x20spec\x20to\x20replace\x20this\x20'+'default\x20with\x20a\x20named\x20design.','params':aC});}else{const aE=al['template_id'];al['template_id']='tpl_reward_one_time_claim',al['params']=aC,al['purpose']='4R-02\x20default\x20assembly\x20replaced\x20the\x20unresolved\x20design\x20reference\x20(was\x20\x27'+aE+'\x27\x20with\x20no\x20'+('caller\x20resolution):\x20claim-allowed\x20SET\x20{'+aw['join'](',\x20')+'}'+(ax?'\x20(TRUNCATED\x20to\x20the\x204\x20template\x20slots\x20—\x20declare\x20an\x20explicit\x20spec\x20or\x20resolve\x20this\x20key\x20to\x20cover\x20every\x20terminal)':'')+'.\x20')+(aA+'\x20'+aB+'\x20'+ay+'\x20Resolve\x20this\x20key\x20via\x20guard_resolutions\x20(kind\x20\x27inline\x27\x20or\x20\x27template\x27)\x20to\x20override\x20the\x20')+'default\x20mount\x20per\x20build.';}}}}const Q=new Set(['wip_provenance','subscription_with_proof']),R=Array['isArray'](e['adopted_module_ids'])?e['adopted_module_ids']['filter'](aF=>typeof aF==='string'):[],S=w['some'](aF=>aF['host']==='repository'||aF['template_id']==='pattern.repository_data_check'||aF['template_id']==='pattern.repository_write_authorization'||aF['template_id']==='tpl_repository_row_present'||aF['template_id']==='tpl_repository_row_present_signer'||aF['template_id']==='tpl_repository_row_equals_order_field'||aF['template_id']==='tpl_holder_confirm_evidence_gate')||R['some'](aF=>Q['has'](aF)),T=new Map(),U=[],V=w['map'](aF=>aF['key']);for(const aF of Object['keys'](f??{})){if(s['has'](aF))continue;!y['has'](aF)&&l['push']({'code':'GUARD_RESOLUTION_UNKNOWN','detail':'guard_resolutions\x20key\x20\x27'+aF+'\x27\x20matches\x20no\x20guard\x20spec\x20key\x20declared\x20by\x20\x27'+c+'\x27.\x20'+('Legal\x20keys:\x20'+(V['length']>0x0?V['join'](',\x20'):'(none\x20—\x20this\x20template\x20declares\x20no\x20keyed\x20guards)')+'.\x20')+'An\x20unknown\x20key\x20was\x20previously\x20dropped\x20silently,\x20leaving\x20the\x20intended\x20guard\x20pending\x20while\x20the\x20build\x20looked\x20resolved.'});}for(const aG of w){const aH='guard_'+safeId(aG['key']),aI=o[aG['key']];let aJ=aG['purpose'],aK,aL;if(aI?.['kind']==='inline')aK=normalizeInlineGuardTable(aI['table'],c),aL=aI['root'],aJ=aI['description']??aG['purpose'];else{const aM=aI===undefined||aI['kind']==='omit'&&!s['has'](aG['key'])||aI['kind']==='declare'?lookupBinding(aG,b):undefined,aN=aI?.['kind']==='template'?aI['template_id']:aG['template_id']['startsWith']('tpl_')?aG['template_id']:aM?.['template_id'];if(aN!==undefined){if(aN==='tpl_allocator_node_gate_recover')p['add'](aG['key']);const aO={'service_name':c+'_service',...S?{'repository_name':c+'_evidence'}:{},...B!=='none'?{'review_repository':c+'_review'}:{},...b['arbitration_mode']!==undefined&&b['arbitration_mode']!=='none'?{'arbitration_name':c+'_arbitration'}:{},...b['fee_params'],...e,...aG['params'],...aM!==undefined?aM['params']:{},...aI?.['kind']==='template'?aI['params']:{}},aP=fillGuardTemplate(aN,aO);!aP['ok']?l['push']({'code':'GUARD_TEMPLATE_PARAMS','detail':'guard\x20\x27'+aG['key']+'\x27\x20('+aN+'):\x20'+aP['error']}):(aK=aP['table'],aL=aP['root']);}}if(aK!==undefined){const aQ=u['has'](aG['key'])&&aL!==undefined&&!hasCallerIdentityLeg(aL);T['set'](aG['key'],{'stepId':aH,'description':aQ?aJ+'\x20(merchant-declared\x20exemption:\x20rail\x20\x27'+aG['key']+'\x27\x20ships\x20without\x20a\x20caller\x20identity\x20leg\x20—\x20'+u['get'](aG['key'])+')':aJ,'table':aK,'root':normalizeLogicArity(aL)}),aG['step_id']=aH;}else!aG['template_id']['startsWith']('tpl_')&&getTemplateById(aG['template_id'])===undefined&&!GUARD_DESIGN_PATTERNS['some'](aR=>aR['id']===aG['template_id'])&&l['push']({'code':'GUARD_PATTERN_UNKNOWN','detail':'guard\x20\x27'+aG['key']+'\x27\x20of\x20\x27'+c+'\x27\x20references\x20design\x20\x27'+aG['template_id']+'\x27,\x20which\x20exists\x20in\x20neither\x20the\x20Guard\x20design-pattern\x20catalog\x20nor\x20the\x20guard-template\x20registry\x20—\x20'+'no\x20resolution\x20path\x20can\x20ever\x20fill\x20it\x20(guide\x20confirm,\x20guard_resolutions\x20and\x20module\x20plumbing\x20all\x20key\x20off\x20real\x20ids).\x20'+'Keeping\x20it\x20as\x20a\x20pending\x20design\x20would\x20leave\x20its\x20bound\x20path\x20UNGUARDED\x20behind\x20a\x20plausible\x20pending\x20label\x20'+'(bs-mn-261022\x20TPL-01:\x20nine\x20such\x20specs\x20compiled\x20into\x20a\x20machine\x20with\x20no\x20guards\x20on\x20the\x20grant-lifecycle\x20forwards).\x20'+'Correct\x20the\x20template\x27s\x20guard\x20spec\x20id\x20to\x20a\x20known\x20pattern,\x20or\x20resolve\x20this\x20spec\x20explicitly\x20(guard_resolutions\x20with\x20kind\x20\x27inline\x27).'}),U['push'](aG);}for(const aR of feeParamCouplingMismatches(b)){l['push']({'code':'FEE_PARAM_COUPLING_MISMATCH','detail':'guard\x20\x27'+aR['key']+'\x27\x20('+aR['template_id']+')\x20claims\x20to\x20mirror\x20fee_param\x20\x27'+aR['param']+'\x27\x20('+aR['declared']+')\x20but\x20carries\x20no\x20matching\x20'+('numeric\x20literal\x20(params:\x20'+(aR['literals']['length']>0x0?aR['literals']['join'](',\x20'):'none')+').\x20The\x20guard\x20literal\x20is\x20the\x20ONLY\x20value\x20that\x20')+'becomes\x20on-chain\x20—\x20the\x20fee\x20param\x20the\x20merchant\x20sets\x20stays\x20decorative\x20(rex5-tn-261028\x20T-02).\x20'+('Re-sync\x20the\x20literal\x20with\x20fee_param\x20\x27'+aR['param']+'\x27\x20or\x20drop\x20the\x20coupling\x20claim\x20from\x20the\x20purpose.')});}for(const aS of windowMathMismatches(b)){l['push']({'code':'WINDOW_MATH_MISMATCH','detail':aS['rule']==='R-WINDOW-MATH-ZERO'?'settlement\x20window\x20fee_param\x20\x27'+aS['settle_param']+'\x27\x20=\x20'+aS['settle_value']+':\x20the\x20escrow\x20releases\x20the\x20moment\x20the\x20anchor\x20node\x20is\x20entered,\x20so\x20every\x20buyer\x20window\x20is\x20structurally\x20dead\x20from\x20the\x20first\x20order\x20(ksk4\x20F-35).\x20'+'Set\x20it\x20to\x20a\x20positive\x20duration\x20that\x20covers\x20the\x20after-sales\x20schedule.':'settlement\x20window\x20fee_param\x20\x27'+aS['settle_param']+'\x27\x20('+aS['settle_value']+')\x20opens\x20the\x20release\x20before\x20buyer\x20window\x20'+aS['violates']+'\x20closes\x20—\x20the\x20refund\x20rail\x20is\x20structurally\x20dead\x20from\x20the\x20release\x20moment,\x20since\x20settlement\x20drains\x20the\x20allocation\x20balance\x20and\x20every\x20later\x20refund\x20leg\x20aborts\x20on\x20empty\x20(ktt3\x20F-05).\x20'+'Raise\x20the\x20settlement\x20window\x20to\x20>=\x20the\x20largest\x20buyer\x20window,\x20or\x20shorten\x20the\x20buyer\x20window\x20to\x20match\x20the\x20real\x20policy;\x20re-sync\x20guards[].params\x20with\x20the\x20new\x20fee_params\x20value\x20(FEE_PARAM_COUPLING_MISMATCH).'});}const W=incentiveRatingFloorClaims(b);if(W['length']>0x0){const aT=[...new Set(W['map'](aV=>'\x27'+aV['excerpt']+'\x27\x20('+aV['field']+')'))]['join'](',\x20'),aU=[...new Set(W['map'](aV=>aV['claimed']))];if(B!=='review_reward')l['push']({'code':'INCENTIVE_RATING_FLOOR_MISMATCH','detail':'incentive\x20prose\x20promises\x20a\x20rating\x20floor\x20('+aT+')\x20but\x20review_mode\x20is\x20\x27'+B+'\x27\x20—\x20no\x20reward\x20track\x20'+'exists,\x20so\x20the\x20promise\x20pays\x20nothing\x20regardless\x20of\x20rating\x20(ktt3\x20F02/F12\x20residual).\x20'+('Build\x20with\x20review_mode\x20\x27review_reward\x27\x20and\x20reward_rating_floor\x20=\x20'+aU['join']('/')+',\x20or\x20drop\x20the\x20promise\x20from\x20the\x20prose.')});else{const aV=w['find'](b2=>b2['host']==='reward'),aW=aV!==undefined?o[aV['key']]:undefined,aX=aW?.['kind']==='template'&&aW['params']?{...aV?.['params']??{},...aW['params']}:aV?.['params']??{},aY=aX['rating_floor'],aZ=typeof aY==='number'&&Number['isFinite'](aY)?aY:typeof aY==='string'&&aY['trim']()!==''&&Number['isFinite'](Number(aY))?Number(aY):undefined,b0=Math['max'](0x0,...W['filter'](b2=>b2['kind']==='praise')['map'](b2=>b2['claimed'])),b1=[...new Set(W['filter'](b2=>b2['kind']==='numeric')['map'](b2=>b2['claimed']))];if(aZ===undefined||aZ<=0x0){const b2=aW?.['kind']==='inline'?'the\x20claim\x20guard\x20is\x20a\x20hand-designed\x20inline\x20root\x20compile\x20cannot\x20statically\x20parse\x20—\x20verify\x20its\x20rating\x20leg\x20yourself':'the\x20reward\x20track\x20carries\x20NO\x20rating\x20leg\x20(reward_rating_floor:\x200\x20explicit\x20opt-out,\x20or\x20a\x20reward\x20spec\x20without\x20rating_floor\x20—\x20the\x20S14\x20default\x20only\x20arms\x20the\x20kernel\x20DEFAULT\x20assembly)';l['push']({'code':'INCENTIVE_RATING_FLOOR_MISMATCH','detail':'incentive\x20prose\x20promises\x20a\x20rating\x20floor\x20('+aT+')\x20but\x20the\x20compiled\x20reward\x20track\x20carries\x20NO\x20statically\x20visible\x20'+('rating\x20leg:\x20'+b2+'\x20—\x20the\x20bounty\x20pays\x20even\x20at\x20rating\x201\x20while\x20the\x20store\x20page\x20advertises\x20the\x20floor\x20')+('(ktt3\x20F02/F12\x20residual;\x20S14\x20default\x20arms\x20'+E+').\x20Pass\x20reward_rating_floor\x20=\x20'+aU['join']('/')+'\x20to\x20arm\x20it,\x20or\x20drop\x20the\x20promise\x20from\x20the\x20prose.')});}else{if(b0>0x0&&aZ<b0)l['push']({'code':'INCENTIVE_RATING_FLOOR_MISMATCH','detail':'incentive\x20prose\x20promises\x20a\x20GOOD-review\x20reward\x20('+aT+')\x20—\x20a\x20praise\x20promise\x20derives\x20to\x20floor\x20'+(b0+'\x20(good\x20==\x204+,\x20S14)\x20—\x20but\x20the\x20armed\x20floor\x20is\x20'+aZ+':\x20ratings\x20between\x20'+aZ+'\x20')+('and\x20'+(b0-0x1)+'\x20would\x20PAY\x20while\x20the\x20store\x20page\x20advertises\x20a\x20good-review-only\x20bounty\x20')+('(ktt3\x20F02/F12\x20residual,\x20S14\x20praise\x20shape).\x20Raise\x20reward_rating_floor\x20to\x20>=\x20'+b0+',\x20or\x20rewrite\x20the\x20prose.')});else b1['length']>0x0&&!b1['includes'](aZ)&&l['push']({'code':'INCENTIVE_RATING_FLOOR_MISMATCH','detail':'incentive\x20prose\x20promises\x20rating\x20floor\x20'+b1['join']('/')+'\x20('+aT+')\x20but\x20the\x20armed\x20floor\x20is\x20'+aZ+'\x20—\x20'+'orders\x20at\x20the\x20promised\x20rating\x20would\x20be\x20REJECTED\x20by\x20the\x20claim\x20guard\x20while\x20the\x20store\x20page\x20advertises\x20it\x20'+'(ktt3\x20F02/F12\x20residual).\x20Align\x20reward_rating_floor\x20with\x20the\x20prose,\x20or\x20rewrite\x20the\x20prose.'});}}}if(B==='review_reward'){const b3=rewardWindowDayClaims(b);if(b3['length']>0x0){const b4=w['find'](b6=>b6['host']==='reward'),b5=b4!==undefined?o[b4['key']]:undefined;if(b4!==undefined&&b5?.['kind']!=='inline'){const b6=b5?.['kind']==='template'&&b5['params']?{...b4['params']??{},...b5['params']}:b4['params']??{},b7=bc=>typeof bc==='number'&&Number['isFinite'](bc)?bc:typeof bc==='string'&&bc['trim']()!==''&&Number['isFinite'](Number(bc))?Number(bc):undefined,b8=b7(b6['closes_after_days']),b9=b8??P,ba=[...new Set(b3['map'](bc=>bc['claimed']))],bb=[...new Set(b3['map'](bc=>'\x27'+bc['excerpt']+'\x27\x20('+bc['field']+')'))]['join'](',\x20');!ba['includes'](b9)&&l['push']({'code':'INCENTIVE_WINDOW_MISMATCH','detail':'incentive\x20prose\x20promises\x20a\x20claimable\x20span\x20of\x20'+ba['join']('/')+'\x20day(s)\x20('+bb+')\x20but\x20the\x20compiled\x20'+('claim\x20window\x20closes\x20'+b9+'\x20day(s)\x20after\x20it\x20opens\x20(closes_after_days')+(b8!==undefined?'\x20from\x20the\x20declared\x20reward\x20spec\x20params)':'\x20—\x20kernel\x20default\x20assembly,\x20bsw4\x20F-11\x20span\x20'+K)+'):\x20orders\x20claimed\x20inside\x20the\x20ADVERTISED\x20window\x20would\x20abort\x20E_GUARD_EXPIRED\x20while\x20the\x20store\x20page\x20advertises\x20it\x20'+'(h1w9\x20F-15:\x20\x227\x20days\x20to\x20claim\x22\x20advertising\x20vs\x20the\x20compiled\x2014d).\x20Align\x20the\x20window\x20—\x20pass\x20'+('reward_claim_closes_after_days\x20=\x20'+ba['join']('/')+'\x20(kernel\x20default\x20assembly)\x20or\x20pin\x20the\x20reward\x20spec\x27s\x20')+'closes_after_days\x20param\x20to\x20it\x20—\x20or\x20rewrite\x20the\x20prose.'});}}}const X=new Set(j['flatMap'](bc=>(bc['from']??[])['map'](bd=>typeof bd==='string'?undefined:bd['guard_key'])['filter'](bd=>typeof bd==='string')));for(const bc of k){typeof bc['guard_key']==='string'&&bc['recipient']==='guard_identifier'&&bc['recipient_key']===String(TASK_BINDING_SLOT)&&X['add'](bc['guard_key']);}const Y=new Set();for(const bd of w){if(!X['has'](bd['key'])&&!p['has'](bd['key']))continue;const be=T['get'](bd['key']);if(be===undefined)continue;const bf=be['table']['some'](bg=>bg['identifier']===TASK_BINDING_SLOT);if(bf)continue;T['set'](bd['key'],{...be,'table':[...be['table'],{'identifier':TASK_BINDING_SLOT,'b_submission':!![],'value_type':'Address','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}]}),Y['add'](bd['key']);}{const bg=b['settlement_window_merge'];if(bg!==undefined&&bg['length']>0x0){const bh=b['fee_params'],bi=bm=>{const bn=e[bm]??bh[bm];if(bn===undefined||bn===null)return undefined;const bo=typeof bn==='number'?bn:Number(bn);return Number['isFinite'](bo)&&bo>=0x0?bo:undefined;};let bj=0x0;for(const bm of bg){const bn=bi(bm);if(bn===undefined){bj=undefined;break;}bj+=bn;}const bk='settlement_window_merge\x20['+bg['join']('\x20+\x20')+']',bl=w['find'](bo=>{const bp=timeInstantiationFor(b['id'],bo['key']);return bp!==undefined&&bp['direction']==='lower'&&bp['days']!==undefined&&bg['includes'](bp['days']);});if(bj===undefined)l['push']({'code':'MERGED_LOCK_MISMATCH','detail':bk+':\x20a\x20merged\x20window\x20has\x20no\x20readable\x20day\x20value,\x20so\x20the\x20effective\x20release\x20lock\x20cannot\x20be\x20'+'determined.\x20Declare\x20every\x20merged\x20key\x20as\x20a\x20numeric\x20fee_param\x20(or\x20supply\x20it\x20as\x20an\x20input).'});else{if(bl===undefined)l['push']({'code':'MERGED_LOCK_MISMATCH','detail':bk+'\x20(=\x20'+bj+'\x20days)\x20declares\x20a\x20merged\x20release\x20lock,\x20but\x20no\x20compiled\x20settlement\x20gate\x20'+'(\x22lower\x22\x20time\x20instantiation\x20whose\x20day\x20knob\x20is\x20one\x20of\x20the\x20merged\x20keys)\x20carries\x20it\x20—\x20the\x20'+'declaration\x20would\x20be\x20prose\x20while\x20the\x20escrow\x20releases\x20before\x20the\x20merged\x20windows\x20finish.'});else{if(o[bl['key']]?.['kind']!=='inline'&&T['has'](bl['key'])){const bo=T['get'](bl['key'])['table'];let bp;for(const bq of bo){if(bq['identifier']!==0x3)continue;const br=bq['value'],bs=typeof br==='number'?br:Number(br);if(Number['isFinite'](bs))bp=bs;}bp!==bj&&l['push']({'code':'MERGED_LOCK_MISMATCH','detail':bk+'\x20=\x20'+bj+'\x20days\x20by\x20declaration,\x20but\x20guard\x20\x27'+bl['key']+'\x27\x20compiled\x20its\x20length\x20'+('literal\x20to\x20'+(bp===undefined?'(none)':bp+'\x20days')+'.\x20The\x20escrow\x20would\x20')+'release\x20early\x20while\x20a\x20merged\x20buyer\x20window\x20can\x20still\x20draw\x20it.'});}}}}}for(const [bt,bu]of T){const bv=normalizeGuardRowNames(bu['table'],bu['description'],MAX_GUARD_DESCRIPTION_CONTENT);(bv['table']!==bu['table']||bv['description']!==bu['description'])&&T['set'](bt,{...bu,'table':bv['table'],'description':typeof bv['description']==='string'?bv['description']:bu['description']});}return{'guardSpecs':w,'resolutions':o,'resolvedGuards':T,'unresolved':U,'omitKeys':s,'recoverTwinRails':p,'declareReasons':u,'specByKey':y,'slot254Injected':Y,'injectedOrderHolderKeys':x,'edgeBoundKeys':X,'derived':{'reviewMode':B,'rewardMark':C,'needsRepository':S},'blockers':l};}
1
+ import{fillGuardTemplate,getTemplateById}from'../knowledge/guard-templates.js';import{hasCallerIdentityLeg}from'../knowledge/allocator-rail-verifier.js';import{applyFeeParamBindings}from'../knowledge/fee-param-bindings.js';import{identityDefaultResolution,MS_PER_DAY,patternDefaultResolution,progressStateDefaultResolution,timeInstantiationFor,timeWindowMsResolution}from'../knowledge/pattern-resolutions.js';import{GUARD_DESIGN_PATTERNS}from'../knowledge/guard-design-patterns.js';import{lookupBinding}from'../knowledge/guard-binding-table.js';import{TASK_BINDING_SLOT,ONCE_SLOT_BYTES}from'../knowledge/onchain-constants.js';import{feeParamCouplingMismatches,feeParamUnlanded,windowMathMismatches,incentiveRatingFloorClaims,rewardWindowDayClaims}from'../knowledge/template-scanner.js';import{verifyGuardBinding}from'../knowledge/guard-binding-verifier.js';import{ref}from'./plan.js';import{applyConditionalSelectors}from'./input-normalize.js';function safeId(a){return a['replace'](/[^a-zA-Z0-9_]/g,'_');}function normalizeLogicArity(a){if(Array['isArray'](a))return a['map'](normalizeLogicArity);if(a===null||typeof a!=='object')return a;const b=a,c={};for(const [d,e]of Object['entries'](b))c[d]=normalizeLogicArity(e);if((c['type']==='logic_and'||c['type']==='logic_or')&&Array['isArray'](c['nodes'])){const f=c['nodes'];if(f['length']===0x1)return f[0x0];}return c;}const WINDOW_LEG_DAYS_PARAM='closing_window_days',WINDOW_LEG_ANCHOR_PARAM='window_anchor_node';function windowLegDecl(a){if(a===null||typeof a!=='object')return undefined;const b=a,c=b[WINDOW_LEG_DAYS_PARAM],d=b[WINDOW_LEG_ANCHOR_PARAM];if(typeof c!=='string'||c===''||typeof d!=='string'||d==='')return undefined;return{'daysKey':c,'anchorNode':d};}function andClosingWindowLeg(a,b,c,d){const e=[...a],f=new Set();let g;for(const m of e){const n=m;if(typeof n['identifier']==='number')f['add'](n['identifier']);g===undefined&&n['b_submission']===!![]&&n['object_type']==='Order'&&n['value_type']==='Address'&&(g=n['identifier']);}const h=()=>{let o=0x0;while(f['has'](o)||o===TASK_BINDING_SLOT||o===ONCE_SLOT_BYTES)o+=0x1;return f['add'](o),o;};g===undefined&&(g=h(),e['push']({'identifier':g,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(window-leg\x20progress\x20witness)'}));const i=h(),j=h(),k=h();e['push']({'identifier':i,'b_submission':![],'value_type':'String','value':c,'name':'Window\x20anchor\x20node\x20(closing\x20leg)'},{'identifier':j,'b_submission':![],'value_type':'U64','value':d,'name':'Window\x20length\x20in\x20days\x20(closing\x20leg)'},{'identifier':k,'b_submission':![],'value_type':'U64','value':MS_PER_DAY,'name':'Days-to-milliseconds\x20constant\x20(closing\x20leg)'});const l={'type':'logic_as_u256_lesser_or_equal','nodes':[{'type':'context','context':'Clock'},{'type':'calc_number_add','nodes':[{'type':'query_progress_history_time','object':{'identifier':g,'convert_witness':'OrderProgress'},'where':{'nextNode':c},'find':'last'},{'type':'calc_number_multiply','nodes':[{'type':'identifier','identifier':j},{'type':'identifier','identifier':k}]}]}]};return{'table':e,'root':{'type':'logic_and','nodes':[b,l]}};}const NODE_GATE_PARAM='write_window_nodes';function nodeGateDecl(a){if(a===null||typeof a!=='object')return undefined;const b=a[NODE_GATE_PARAM];if(typeof b!=='string')return undefined;const c=b['split'](/[,\s]+/)['map'](d=>d['trim']())['filter'](d=>d!=='');return c['length']>0x0?{'nodes':c}:undefined;}function andNodeGateLeg(a,b,c){const d=[...a],e=new Set();let f;for(const k of d){const l=k;if(typeof l['identifier']==='number')e['add'](l['identifier']);f===undefined&&l['b_submission']===!![]&&l['object_type']==='Order'&&l['value_type']==='Address'&&(f=l['identifier']);}const g=()=>{let m=0x0;while(e['has'](m)||m===TASK_BINDING_SLOT||m===ONCE_SLOT_BYTES)m+=0x1;return e['add'](m),m;};f===undefined&&(f=g(),d['push']({'identifier':f,'b_submission':!![],'value_type':'Address','object_type':'Order','name':'Order\x20object\x20address\x20(node-window\x20progress\x20witness)'}));const h=c['map'](()=>g());c['forEach']((m,o)=>d['push']({'identifier':h[o],'b_submission':![],'value_type':'String','value':m,'name':'Node-window\x20member\x20(write\x20gate)'}));const i=h['map'](m=>({'type':'logic_equal','nodes':[{'type':'query','query':'progress.current','object':{'identifier':f,'convert_witness':'OrderProgress'},'parameters':[]},{'type':'identifier','identifier':m}]})),j=i['length']===0x1?i[0x0]:{'type':'logic_or','nodes':i};return{'table':d,'root':{'type':'logic_and','nodes':[b,j]}};}export function normalizeInlineGuardTable(a,b){const c=b+'_service',d=f=>f['replace'](/\//g,'_'),e=d(c);return a['map'](f=>{if(f===null||typeof f!=='object'||Array['isArray'](f))return f;const g={...f};typeof g['value']==='string'&&d(g['value'])===e&&(g['value']=ref('service'));if(g['b_submission']===undefined)g['b_submission']=![];return g;});}function shortRowLabel(a,b){const c=a['search'](/:| \(| — /),d=c>0x0?a['slice'](0x0,c)['trim']():'';if(d['length']>0x0&&Buffer['byteLength'](d,'utf8')<=b)return d;let e=a;while(e['length']>0x0&&Buffer['byteLength'](e+'...','utf8')>b)e=e['slice'](0x0,-0x1);return e+'...';}const MAX_GUARD_DESCRIPTION_CONTENT=0xf9e;export function normalizeGuardRowNames(a,b,c){const d=0x3f,e=[],f=a['map'](j=>{if(!j||typeof j!=='object')return j;const k=j,l=k['name'];if(typeof l!=='string')return j;const m=l['startsWith']('0x')?'n_'+l:l;if(Buffer['byteLength'](m,'utf8')<=d)return m===l?j:{...k,'name':m};return e['push']('slot\x20'+String(k['identifier']??'?')+':\x20'+m),{...k,'name':shortRowLabel(m,d)};});if(e['length']===0x0)return{'table':f,'description':b};const g=typeof b==='string'?b:'';let h=g+'\x0a\x0aRow\x20labels\x20(the\x20on-chain\x20name\x20column\x20is\x20capped\x20at\x2064\x20BCS\x20bytes,\x20so\x20each\x20long\x20label\x20is\x20spelled\x20out\x20here):',i=0x0;for(const j of e){const k=h+'\x0a-\x20'+j;if(Buffer['byteLength'](k,'utf8')>c)break;h=k,i+=0x1;}return{'table':f,'description':i===0x0?b:h};}export function guardMountCensus(a,b,c){const {selectorDroppedKeys:d,shape:e,rows:f}=c??applyConditionalSelectors(a,b),g=new Set(e['flatMap'](k=>(k['from']??[])['map'](l=>typeof l==='string'?undefined:l['guard_key'])['filter'](l=>typeof l==='string'))),h=new Set(f['map'](k=>k['guard_key'])['filter'](l=>typeof l==='string')),i=new Set();let j=![];return a['guards']['forEach']((k,l)=>{if(d['has'](k['key']??k['template_id']+'#'+l))return;if(k['policy']!==undefined)i['add'](k['key']??k['template_id']+'#'+l);if(k['host']==='service'&&(k['key']??k['template_id']+'#'+l)==='buy')j=!![];}),{'edgeKeys':g,'railKeys':h,'policyKeys':i,'buyMounted':j};}const REVIEW_OUTCOME_CLASS=/wonder|no_wonder|praise|like|dislike/i;export function fillGuards(a){const {template:b,base:c,inputs:e,guardResolutions:f}=a,{dropKeys:h,selectorDroppedKeys:i,shape:j,rows:k}=a['selector'],l=[],o={},p=new Set();b['guards']['forEach']((a6,a7)=>{const a8=a6['key']??a6['template_id']+'#'+a7;if(i['has'](a8))return;const a9=timeWindowMsResolution(b['id'],a8,e,b['fee_params'])??patternDefaultResolution(b['id'],a8)??progressStateDefaultResolution(b,a6)??identityDefaultResolution(b,a6);if(a9!==undefined)o[a8]=a9;}),Object['assign'](o,Object['fromEntries'](Object['entries'](f??{})['filter'](([,a6])=>a6?.['kind']!=='declare')));const q=[];for(const [a6,a7]of Object['entries'](f??{})){if(a7?.['kind']==='omit')q['push'](a6);}const s=new Set();if(q['length']>0x0){const a8=guardMountCensus(b,e,a['selector']);for(const a9 of q){const aa=b['guards']['find']((ac,ad)=>(ac['key']??ac['template_id']+'#'+ad)===a9);if(aa===undefined)continue;const ab=[];if(a8['edgeKeys']['has'](a9))ab['push']('a\x20machine\x20forward\x20edge\x20(guard_key)');if(a8['railKeys']['has'](a9))ab['push']('an\x20allocator\x20rail\x20row\x20(guard_key)');if(a8['policyKeys']['has'](a9))ab['push']('a\x20Repository\x20write-policy\x20credential\x20(policy)');if(aa['host']==='service'&&a9==='buy')ab['push']('the\x20Service\x20buy\x20gate\x20(buy_guard)');ab['length']>0x0?l['push']({'code':'GUARD_OMIT_UNSUPPORTED','detail':'guard_resolutions[\x27'+a9+'\x27]\x20=\x20{kind:\x27omit\x27}\x20refused:\x20this\x20design\x20is\x20bound\x20to\x20'+ab['join']('\x20and\x20')+'\x20—\x20'+'omitting\x20it\x20would\x20orphan\x20the\x20binding\x20(open\x20rail\x20/\x20open\x20write\x20/\x20ungated\x20purchase).\x20'+'Fold\x20the\x20design\x27s\x20intent\x20into\x20the\x20bound\x20site\x20instead,\x20or\x20keep\x20the\x20guard\x20resolved.'}):s['add'](a9);}}const t=new Set(k['map'](ac=>ac['guard_key'])['filter'](ac=>typeof ac==='string')),u=new Map();b['guards']['forEach']((ac,ad)=>{const ae=ac['key']??ac['template_id']+'#'+ad,af=ac['identity_leg_exempt'];typeof af==='string'&&af['trim']()!==''&&t['has'](ae)&&u['set'](ae,af['trim']());});for(const [ac,ad]of Object['entries'](f??{})){if(ad?.['kind']!=='declare')continue;const ae=typeof ad['reason']==='string'?ad['reason']['trim']():'';if(ae===''){l['push']({'code':'GUARD_DECLARE_UNSUPPORTED','detail':'guard_resolutions[\x27'+ac+'\x27]\x20=\x20{kind:\x27declare\x27}\x20refused:\x20the\x20reason\x20field\x20is\x20mandatory\x20and\x20'+'must\x20be\x20non-empty\x20—\x20the\x20disclosure\x20that\x20ships\x20with\x20the\x20exemption\x20quotes\x20it\x20verbatim,\x20and\x20an\x20'+'unexplained\x20legless\x20money\x20rail\x20is\x20exactly\x20what\x20the\x20gate\x20exists\x20to\x20prevent\x20(ks11).'});continue;}const af=b['guards']['find']((ag,ah)=>(ag['key']??ag['template_id']+'#'+ah)===ac);if(af===undefined)continue;if(!t['has'](ac)){l['push']({'code':'GUARD_DECLARE_UNSUPPORTED','detail':'guard_resolutions[\x27'+ac+'\x27]\x20=\x20{kind:\x27declare\x27}\x20refused:\x20the\x20declare\x20channel\x20is\x20honored\x20ONLY\x20for\x20'+('allocator-rail-bound\x20designs\x20(a\x20spec\x20mounted\x20on\x20an\x20allocator\x20row),\x20and\x20\x27'+ac+'\x27\x20is\x20bound\x20to\x20no\x20')+'allocator\x20row.\x20An\x20identity-less\x20forward/policy/buy\x20gate\x20is\x20a\x20different\x20violation\x20family\x20'+'(RELEASE_EDGE_NO_IDENTITY\x20/\x20REPO_GUARD_POLICY_MISSING)\x20with\x20its\x20own\x20remedy\x20—\x20declare\x20does\x20not\x20reach\x20it.'});continue;}u['set'](ac,ae);}const w=b['guards']['map']((ag,ah)=>{const ai=ag['key']??ag['template_id']+'#'+ah,aj=applyFeeParamBindings(ag['params'],b['id'],ai,e,b['fee_params']);return{'key':ai,'template_id':ag['template_id'],'host':ag['host'],'purpose':ag['purpose'],'policy':ag['policy'],'params':aj};})['filter'](ag=>!h['has'](ag['key'])&&!s['has'](ag['key'])),x=new Map();{const ag=new Set(w['map'](ai=>ai['key'])),ah=ai=>{if(ai===undefined)return![];const aj=w['find'](al=>al['key']===ai);if(aj===undefined)return![];const ak=o[ai];if(ak?.['kind']==='inline'||ak?.['kind']==='template'||aj['template_id']['startsWith']('tpl_'))return!![];if(ak?.['kind']==='omit'&&s['has'](ai))return![];return lookupBinding(aj,b)!==undefined;};for(const ai of j){for(const aj of ai['from']??[]){const ak=typeof aj==='string'?{'prev':aj}:aj,al=ak['operator']??ai['operator']??(ak['prev']===''?'order_payer':'merchant');if(al!=='order_payer')continue;if(ak['guard_key']!==undefined&&ah(ak['guard_key']))continue;const am=ak['forward']??(ak['prev']===''?'enter_'+ai['name']:ak['prev']+'_to_'+ai['name']);if(x['has'](am))continue;let an='order_holder_'+am;while(ag['has'](an))an=an+'_x';ag['add'](an),x['set'](am,an);const ao=ak['guard_key']===undefined?'Declare\x20an\x20explicit\x20order-holder\x20guard_key\x20on\x20the\x20edge\x20to\x20replace\x20this\x20auto\x20key\x20with\x20a\x20named\x20credential.':'The\x20edge\x20DOES\x20declare\x20guard_key\x20\x27'+ak['guard_key']+'\x27,\x20but\x20that\x20design\x20does\x20not\x20resolve\x20to\x20a\x20Guard\x20object,\x20so\x20the\x20forward\x20would\x20otherwise\x20ship\x20unguarded;\x20resolve\x20\x27'+ak['guard_key']+'\x27\x20(guard_resolutions,\x20or\x20re-point\x20the\x20spec\x20at\x20an\x20instantiable\x20tpl_*\x20id)\x20to\x20carry\x20the\x20richer\x20condition\x20—\x20this\x20identity\x20leg\x20stays\x20bound\x20either\x20way.';w['push']({'key':an,'template_id':'tpl_forward_order_holder','host':'machine','purpose':'F05\x20kernel-injected\x20order-holder\x20identity\x20binding\x20for\x20the\x20buyer-exclusive\x20forward\x20'+('\x27'+am+'\x27\x20(edge\x20\x27'+ak['prev']+'\x27->\x27'+ai['name']+'\x27):\x20namedOperator\x20\x22\x22\x20passes\x20for\x20')+'anyone\x20at\x20the\x20permission\x20layer,\x20so\x20without\x20this\x20guard\x20the\x20'+'buyer\x20rail\x20is\x20advanceable\x20by\x20ANY\x20passport\x20holder\x20attached\x20to\x20the\x20order\x20—\x20takeover\x20'+('risk.\x20'+ao)});}}}const y=e['arbitration_vote_policy'],z=y==='party_panel'?'party_panel':'open';if(b['arbitration_mode']==='third_party'&&z==='open'&&!w['some'](ap=>ap['template_id']['startsWith']('tpl_voting_guard_'))){let ap='arbitration_vote_open';const aq=new Set(w['map'](ar=>ar['key']));while(aq['has'](ap))ap=ap+'_x';w['push']({'key':ap,'template_id':'tpl_voting_guard_open_vote','host':'arbitration','purpose':'F-cu\x20kernel-injected\x20open-vote\x20surface\x20for\x20the\x20third_party\x20venue:\x20an\x20EMPTY\x20'+'voting_guard\x20is\x20NOT\x20open\x20voting\x20—\x20plain\x20votes\x20hard-require\x20permission\x20358\x20'+'(admin-only\x20by\x20default),\x20so\x20disputes\x20dead-lock\x20when\x20the\x20arb\x20admin\x20is\x20'+'unresponsive\x20(crs9-F-36).\x20Every\x20Passport\x20holder\x20may\x20vote\x20at\x20flat\x20weight\x201\x20'+'(O-F26:\x20CONSTANT-TRUE\x20gate\x20—\x20the\x20scanner\x20red-flags\x20it;\x20configure\x20a\x20'+'roster+threshold\x20guard\x20before\x20real\x20disputes,\x20or\x20pass\x20'+'arbitration_vote_policy:\x27party_panel\x27\x20to\x20skip\x20this\x20injection\x20entirely\x20and\x20'+'bind\x20tpl_voting_guard_numeric_weight\x20/\x20tpl_voting_guard_party_only);\x20'+'a\x20deliberately\x20closed\x20panel\x20re-declares\x20tpl_voting_guard_numeric_weight.','params':{'vote_weight':0x1}});}const A=new Map(w['map'](ar=>[ar['key'],ar])),B=e['review_mode'],C=B==='review'||B==='review_reward'||B==='none'?B:undefined,D=C??b['review_mode']??'none',E=c+'_review_reward',F=ar=>{const as=e[ar]??b['fee_params'][ar];if(typeof as==='number'&&Number['isFinite'](as))return as;if(typeof as==='string'&&as['trim']()!==''&&Number['isFinite'](Number(as)))return Number(as);return undefined;},G=0x4,H=F('reward_rating_floor'),I=H??G,J=F('reward_claim_opens_after_days'),K=F('reward_claim_closes_after_days'),L=0xe,M=0xe,N=b['fee_params']['return_window_days']??b['fee_params']['review_window_days'],O=typeof N==='number'&&Number['isFinite'](N)&&N>0x0?N:0x0,P=Math['max'](L,O+0x1),Q=J??P,R=K??M;if(D==='review_reward'){const ar=w['find'](av=>av['host']==='reward'),as=ar!==undefined?o[ar['key']]:undefined,at=as!==undefined&&(as['kind']==='template'||as['kind']==='inline'),au=ar!==undefined&&(ar['template_id']['startsWith']('tpl_')||at);if(ar===undefined||!au){const av=/deliver|complet|receiv|fulfil|finish/i,aw=/fund|pledge|back/i,ax=j['find'](aE=>/review/i['test'](aE['name'])),ay=j['find'](aE=>av['test'](aE['name'])),az=j['filter'](aE=>aE['semantic_role']==='final')['map'](aE=>aE['name']),aA=j['filter'](aE=>REVIEW_OUTCOME_CLASS['test'](aE['name']))['map'](aE=>aE['name']),aB=ax?.['name']??ay?.['name']??az[0x0],aC=ay!==undefined?az['filter'](aE=>!aw['test'](aE)):az,aD=[...new Set([aB,...aA,...aC])]['slice'](0x0,0x4);if(aB!==undefined){const aE=new Set([aB,...aA,...aC])['size']>0x4,aF='Claim-set\x20default\x20(ks7\x20F-25\x20+\x20kq4x\x20P-018):\x20the\x20bounty\x20anchors\x20on\x20the\x20review\x20node,\x20else\x20a\x20delivery-class\x20node,\x20else\x20the\x20first\x20terminal;\x20review-outcome\x20nodes\x20(wonder/no_wonder/praise/like/dislike)\x20take\x20the\x20slots\x20between\x20the\x20anchor\x20and\x20the\x20settlement\x20terminals'+(ay!==undefined?',\x20and\x20funding-class\x20settlement\x20terminals\x20are\x20EXCLUDED\x20—\x20a\x20funding\x20release\x20(funded_released\x20family)\x20precedes\x20physical\x20fulfillment,\x20so\x20a\x20window\x20measured\x20there\x20ships\x20the\x20bounty\x20permanently\x20unclaimable;\x20hosting\x20the\x20bounty\x20on\x20a\x20funding\x20terminal\x20requires\x20an\x20explicit\x20host:\x22reward\x22\x20spec\x20(the\x20named-design\x20escape\x20hatch).':'\x20(this\x20shape\x20mounts\x20no\x20delivery-class\x20node,\x20so\x20funding-class\x20terminals\x20stay\x20IN\x20the\x20default\x20set);\x20an\x20explicit\x20host:\x22reward\x22\x20spec\x20can\x20pin\x20any\x20claim\x20set.'),aG=I>0x0,aH=aG?'Rating\x20leg\x20ARMED\x20on\x20the\x20plan-created\x20\x27'+c+'_review\x27\x20repository\x20/\x20\x27rating\x27\x20policy\x20(order-keyed\x20U64):\x20pays\x20only\x20at\x20rating\x20>=\x20'+I+'\x20(reward_rating_floor\x20input'+(H===undefined?'\x20—\x20S14\x20default\x20'+G+',\x20no\x20input\x20given':'')+').':'No\x20rating\x20leg\x20—\x20reward_rating_floor\x20was\x20EXPLICITLY\x20set\x20to\x200\x20(plain\x20praise\x20bounty\x20opt-out,\x20S14\x20default\x20is\x20'+G+').',aI=J!==undefined?'Claim\x20window:\x20opens\x20'+Q+'\x20day(s)\x20after\x20the\x20claim-allowed\x20entry\x20(reward_claim_opens_after_days\x20input;\x20overrides\x20the\x20after-sales-expiry\x20derivation\x20—\x20keep\x20it\x20ABOVE\x20the\x20store\x27s\x20return/review\x20window\x20or\x20the\x20claim-and-return\x20arbitrage\x20re-opens,\x20tbs7\x20F-04),\x20claimable\x20for\x20a\x20further\x20'+R+'\x20day(s)\x20(bsw4\x20F-11\x20close).':'Claim\x20window:\x20opens\x20'+Q+'\x20day(s)\x20after\x20the\x20claim-allowed\x20entry\x20(derived\x20after-sales\x20expiry\x20+\x201d,\x20floored\x20at\x2014d\x20—\x20tbs7\x20F-04:\x20the\x20bounty\x20opens\x20only\x20after\x20the\x20return/review\x20window\x20closed),\x20claimable\x20for\x20a\x20further\x20'+R+'\x20day(s)\x20(bsw4\x20F-11:\x20the\x20window\x20CLOSES\x20—\x20a\x20real\x20deadline,\x20counted\x20from\x20the\x20open).',aJ={'reward_address':'review_pool','expected_pre_claim_node':aD[0x0],...aD['length']>0x1?{'expected_pre_claim_node_alt':aD[0x1]}:{},...aD['length']>0x2?{'expected_pre_claim_node_alt2':aD[0x2]}:{},...aD['length']>0x3?{'expected_pre_claim_node_alt3':aD[0x3]}:{},...aG?{'rating_repository':c+'_review','rating_policy_name':'rating','rating_floor':String(I)}:{'rating_repository':''},'opens_after_days':String(Q),'closes_after_days':String(R)};if(ar===undefined){let aK='reward_claim_default';while(w['some'](aL=>aL['key']===aK))aK=aK+'_x';w['push']({'key':aK,'template_id':'tpl_reward_one_time_claim','host':'reward','purpose':'4R-02\x20kernel-injected\x20DEFAULT\x20claim\x20guard\x20for\x20review_mode\x20\x27review_reward\x27\x20(the\x20template\x20'+('declares\x20no\x20reward\x20spec):\x20claim-allowed\x20SET\x20{'+aD['join'](',\x20')+'}'+(aE?'\x20(TRUNCATED\x20to\x20the\x204\x20template\x20slots\x20—\x20the\x20shape\x20carries\x20more\x20terminals;\x20declare\x20an\x20explicit\x20host:\x22reward\x22\x20spec)':'')+',\x20')+'bounty\x20derived\x20T-02\x20(2%\x20of\x20the\x20cheapest\x20SKU,\x20floored\x20at\x201),\x20funding\x20fail-closed\x20'+('(REVIEW_REWARD_UNFUNDED).\x20'+aH+'\x20'+aI+'\x20'+aF+'\x20W5-03\x20mutual\x20exclusion:\x20the\x20claim\x20set\x20')+'carries\x20NO\x20cancelled-role\x20node\x20—\x20a\x20refunded\x20order\x20cannot\x20reach\x20this\x20bounty\x20(a\x20chain-level\x20'+'\x27was\x20ever\x20refunded\x27\x20boolean\x20does\x20not\x20exist;\x20mounting\x20a\x20review/reward\x20advance\x20on\x20a\x20cancelled\x20'+'terminal\x20is\x20blocked\x20by\x20audit\x20STATE-REFUNDED-REWARD-01).\x20Declare\x20an\x20explicit\x20host:\x22reward\x22\x20guard\x20spec\x20to\x20replace\x20this\x20'+'default\x20with\x20a\x20named\x20design.','params':aJ});}else{const aL=ar['template_id'];ar['template_id']='tpl_reward_one_time_claim',ar['params']=aJ,ar['purpose']='4R-02\x20default\x20assembly\x20replaced\x20the\x20unresolved\x20design\x20reference\x20(was\x20\x27'+aL+'\x27\x20with\x20no\x20'+('caller\x20resolution):\x20claim-allowed\x20SET\x20{'+aD['join'](',\x20')+'}'+(aE?'\x20(TRUNCATED\x20to\x20the\x204\x20template\x20slots\x20—\x20declare\x20an\x20explicit\x20spec\x20or\x20resolve\x20this\x20key\x20to\x20cover\x20every\x20terminal)':'')+'.\x20')+(aH+'\x20'+aI+'\x20'+aF+'\x20Resolve\x20this\x20key\x20via\x20guard_resolutions\x20(kind\x20\x27inline\x27\x20or\x20\x27template\x27)\x20to\x20override\x20the\x20')+'default\x20mount\x20per\x20build.';}}}}const S=e['experience_compensation_mode'],T=S==='reward'||S==='none'?S:b['experience_compensation_mode']??'none';let U;if(T==='reward'){const aM=/deliver|complet|receiv|fulfil|finish/i,aN=/fund|pledge|back/i,aO=/cancel|refund|kill/i,aP=j['filter'](aT=>aT['semantic_role']==='final')['map'](aT=>aT['name']),aQ=j['find'](aT=>aM['test'](aT['name'])),aR=aP['filter'](aT=>!aN['test'](aT)&&!aO['test'](aT)),aS=aQ?.['name']??aR[0x0]??aP[0x0];if(aS!==undefined){const aT=[...new Set([aS,...aR])]['slice'](0x0,0x4),aU=new Set([aS,...aR])['size']>0x4,aV=b['fee_params']['return_window_hours'],aW=typeof aV==='number'&&Number['isFinite'](aV)&&aV>0x0?aV:0x0,aX=Math['max'](O,Math['ceil'](aW/0x18)),aY=F('experience_claim_opens_after_days')??Math['max'](0x1,aX+0x1),aZ=F('experience_claim_closes_after_days')??0x7;let b0='experience_compensation_claim';while(w['some'](b1=>b1['key']===b0))b0=b0+'_x';w['push']({'key':b0,'template_id':'tpl_reward_one_time_claim','host':'reward','purpose':'C-11\x20kernel-injected\x20EXPERIENCE-COMPENSATION\x20claim\x20guard\x20(scene\x20reward_experience_compensation\x20/\x20'+'reward_delay_compensation):\x20an\x20independent\x20goodwill\x20pool\x20the\x20merchant\x20pre-funds,\x20claimed\x20PROACTIVELY\x20by\x20the\x20'+'buyer\x20—\x20never\x20a\x20settlement-edge\x20guard\x20and\x20never\x20a\x20voluntary\x20Payment\x20voucher\x20(both\x20rejected\x20by\x20K3\x20C-11).\x20'+('Claim-allowed\x20SET\x20{'+aT['join'](',\x20')+'}')+((aU?'\x20(TRUNCATED\x20to\x20the\x204\x20template\x20slots\x20—\x20declare\x20an\x20explicit\x20key\x20\x27'+b0+'\x27\x20spec\x20to\x20cover\x20every\x20terminal)':'')+';\x20')+'funding-class\x20AND\x20cancelled-class\x20finals\x20are\x20EXCLUDED\x20(a\x20refunded\x20order\x20can\x20never\x20claim\x20—\x20tbs7\x20F-04\x20/\x20Scene\x207).\x20'+'NO\x20rating\x20leg\x20—\x20goodwill\x20is\x20not\x20review-gated\x20(rating_repository\x20empty\x20ships\x20without\x20the\x20leg).\x20'+('Claim\x20window:\x20opens\x20'+aY+'\x20day(s)\x20after\x20the\x20claim-allowed\x20entry\x20(derived:\x20after-sales\x20return\x20window\x20')+('lapsed\x20+\x201d'+(aW>0x0?'\x20—\x20fee_param\x20return_window_hours\x20'+aW+'h':'')+'),\x20')+('claimable\x20for\x20a\x20further\x20'+aZ+'\x20day(s)\x20—\x20experience\x20compensation\x20must\x20be\x20claimed\x20promptly.\x20')+'Per-order\x20once\x20(template\x20record-gate).\x20Fixed\x20amount\x20tier:\x20fee_param\x20experience_claim_amount\x20(mount-side,\x20'+'emitReviewComponent);\x20fail-closed\x20funding\x20(EXPERIENCE_COMPENSATION_UNFUNDED,\x20INV-4\x20family).\x20'+'Resolve\x20this\x20key\x20via\x20guard_resolutions\x20(kind\x20\x27inline\x27\x20or\x20\x27template\x27)\x20to\x20override\x20the\x20mount\x20per\x20build;\x20'+'a\x20GuardU64Identifier\x20amount\x20variant\x20(submission-resolved\x20tier)\x20must\x20disclose\x20its\x20rule\x20in\x20the\x20listing.','params':{'reward_address':'experience_pool','expected_pre_claim_node':aT[0x0],'expected_pre_claim_node_alt':aT[0x1]??aS,'expected_pre_claim_node_alt2':aT[0x2]??aS,'expected_pre_claim_node_alt3':aT[0x3]??aS,'rating_repository':'','opens_after_days':String(aY),'closes_after_days':String(aZ)}}),U=b0;}}const V=new Set(['wip_provenance','subscription_with_proof']),W=Array['isArray'](e['adopted_module_ids'])?e['adopted_module_ids']['filter'](b1=>typeof b1==='string'):[],X=w['some'](b1=>b1['host']==='repository'||b1['template_id']==='pattern.repository_data_check'||b1['template_id']==='pattern.repository_write_authorization'||b1['template_id']==='tpl_repository_row_present'||b1['template_id']==='tpl_repository_row_present_signer'||b1['template_id']==='tpl_repository_row_equals_order_field'||b1['template_id']==='tpl_holder_confirm_evidence_gate')||W['some'](b1=>V['has'](b1)),Y=new Map(),Z=[],a0=new Map();b['guards']['forEach']((b1,b2)=>{const b3=windowLegDecl(b1['params']);if(b3!==undefined)a0['set'](b1['key']??b1['template_id']+'#'+b2,b3);});const a1=new Map();b['guards']['forEach']((b1,b2)=>{const b3=nodeGateDecl(b1['params']);if(b3!==undefined)a1['set'](b1['key']??b1['template_id']+'#'+b2,b3);});const a2=w['map'](b1=>b1['key']);for(const b1 of Object['keys'](f??{})){if(s['has'](b1))continue;!A['has'](b1)&&l['push']({'code':'GUARD_RESOLUTION_UNKNOWN','detail':'guard_resolutions\x20key\x20\x27'+b1+'\x27\x20matches\x20no\x20guard\x20spec\x20key\x20declared\x20by\x20\x27'+c+'\x27.\x20'+('Legal\x20keys:\x20'+(a2['length']>0x0?a2['join'](',\x20'):'(none\x20—\x20this\x20template\x20declares\x20no\x20keyed\x20guards)')+'.\x20')+'An\x20unknown\x20key\x20was\x20previously\x20dropped\x20silently,\x20leaving\x20the\x20intended\x20guard\x20pending\x20while\x20the\x20build\x20looked\x20resolved.'});}for(const b2 of w){const b3='guard_'+safeId(b2['key']),b4=o[b2['key']];let b5=b2['purpose'],b6,b7;if(b4?.['kind']==='inline')b6=normalizeInlineGuardTable(b4['table'],c),b7=b4['root'],b5=b4['description']??b2['purpose'];else{const b8=b4===undefined||b4['kind']==='omit'&&!s['has'](b2['key'])||b4['kind']==='declare'?lookupBinding(b2,b):undefined,b9=b4?.['kind']==='template'?b4['template_id']:b2['template_id']['startsWith']('tpl_')?b2['template_id']:b8?.['template_id'];if(b9!==undefined){if(b9==='tpl_allocator_node_gate_recover')p['add'](b2['key']);const ba={'service_name':c+'_service',...X?{'repository_name':c+'_evidence'}:{},...D!=='none'?{'review_repository':c+'_review'}:{},...b['arbitration_mode']!==undefined&&b['arbitration_mode']!=='none'?{'arbitration_name':c+'_arbitration'}:{},...b['fee_params'],...e,...b2['params'],...b8!==undefined?b8['params']:{},...b4?.['kind']==='template'?b4['params']:{}},bb=fillGuardTemplate(b9,ba);if(!bb['ok'])l['push']({'code':'GUARD_TEMPLATE_PARAMS','detail':'guard\x20\x27'+b2['key']+'\x27\x20('+b9+'):\x20'+bb['error']});else{b6=bb['table'],b7=bb['root'];const bc=a0['get'](b2['key']);if(bc!==undefined){const be=ba[bc['daysKey']],bf=typeof be==='number'&&Number['isInteger'](be)?be:typeof be==='string'&&be['trim']()!==''&&Number['isInteger'](Number(be))?Number(be):undefined;if(bf===undefined||bf<=0x0)l['push']({'code':'GUARD_TEMPLATE_PARAMS','detail':'guard\x20\x27'+b2['key']+'\x27\x20('+b9+'):\x20the\x20entry\x20declares\x20a\x20closing\x20window\x20via\x20params.'+WINDOW_LEG_DAYS_PARAM+'\x20->\x20\x27'+bc['daysKey']+'\x27,\x20'+('but\x20the\x20merged\x20value\x20\x27'+String(be)+'\x27\x20is\x20not\x20a\x20positive\x20integer\x20day\x20count.\x20Supply\x20the\x20fee\x20param\x20(or\x20an\x20input/params\x20override),\x20')+('or\x20drop\x20the\x20'+WINDOW_LEG_DAYS_PARAM+'/'+WINDOW_LEG_ANCHOR_PARAM+'\x20declaration\x20from\x20the\x20guard\x20entry.')});else{const bg=andClosingWindowLeg(b6,b7,bc['anchorNode'],bf);b6=bg['table'],b7=bg['root'];}}const bd=a1['get'](b2['key']);if(bd!==undefined){const bh=andNodeGateLeg(b6,b7,bd['nodes']);b6=bh['table'],b7=bh['root'];}}}}if(b6!==undefined){const bi=u['has'](b2['key'])&&b7!==undefined&&!hasCallerIdentityLeg(b7);Y['set'](b2['key'],{'stepId':b3,'description':bi?b5+'\x20(merchant-declared\x20exemption:\x20rail\x20\x27'+b2['key']+'\x27\x20ships\x20without\x20a\x20caller\x20identity\x20leg\x20—\x20'+u['get'](b2['key'])+')':b5,'table':b6,'root':normalizeLogicArity(b7)}),b2['step_id']=b3;}else!b2['template_id']['startsWith']('tpl_')&&getTemplateById(b2['template_id'])===undefined&&!GUARD_DESIGN_PATTERNS['some'](bj=>bj['id']===b2['template_id'])&&l['push']({'code':'GUARD_PATTERN_UNKNOWN','detail':'guard\x20\x27'+b2['key']+'\x27\x20of\x20\x27'+c+'\x27\x20references\x20design\x20\x27'+b2['template_id']+'\x27,\x20which\x20exists\x20in\x20neither\x20the\x20Guard\x20design-pattern\x20catalog\x20nor\x20the\x20guard-template\x20registry\x20—\x20'+'no\x20resolution\x20path\x20can\x20ever\x20fill\x20it\x20(guide\x20confirm,\x20guard_resolutions\x20and\x20module\x20plumbing\x20all\x20key\x20off\x20real\x20ids).\x20'+'Keeping\x20it\x20as\x20a\x20pending\x20design\x20would\x20leave\x20its\x20bound\x20path\x20UNGUARDED\x20behind\x20a\x20plausible\x20pending\x20label\x20'+'(bs-mn-261022\x20TPL-01:\x20nine\x20such\x20specs\x20compiled\x20into\x20a\x20machine\x20with\x20no\x20guards\x20on\x20the\x20grant-lifecycle\x20forwards).\x20'+'Correct\x20the\x20template\x27s\x20guard\x20spec\x20id\x20to\x20a\x20known\x20pattern,\x20or\x20resolve\x20this\x20spec\x20explicitly\x20(guard_resolutions\x20with\x20kind\x20\x27inline\x27).'}),Z['push'](b2);}for(const bj of feeParamCouplingMismatches(b)){l['push']({'code':'FEE_PARAM_COUPLING_MISMATCH','detail':'guard\x20\x27'+bj['key']+'\x27\x20('+bj['template_id']+')\x20claims\x20to\x20mirror\x20fee_param\x20\x27'+bj['param']+'\x27\x20('+bj['declared']+')\x20but\x20carries\x20no\x20matching\x20'+('numeric\x20literal\x20(params:\x20'+(bj['literals']['length']>0x0?bj['literals']['join'](',\x20'):'none')+').\x20The\x20guard\x20literal\x20is\x20the\x20ONLY\x20value\x20that\x20')+'becomes\x20on-chain\x20—\x20the\x20fee\x20param\x20the\x20merchant\x20sets\x20stays\x20decorative\x20(rex5-tn-261028\x20T-02).\x20'+('Re-sync\x20the\x20literal\x20with\x20fee_param\x20\x27'+bj['param']+'\x27\x20or\x20drop\x20the\x20coupling\x20claim\x20from\x20the\x20purpose.')});}for(const bk of feeParamUnlanded(b,b['fee_params'],o)){l['push']({'code':'FEE_PARAM_UNLANDED','detail':'fee_param\x20\x27'+bk['param']+'\x27\x20=\x20'+bk['value']+'\x20on\x20\x27'+b['id']+'\x27\x20lands\x20nowhere:\x20no\x20platform-take\x20landing,\x20no\x20FEE_PARAM_BINDINGS\x20row,\x20'+'no\x20allocator\x20value_from/value_from_complement,\x20no\x20mounted\x20guard-template\x20placeholder,\x20no\x20kernel\x20consumer,\x20no\x20time-instantiation\x20or\x20'+'merged-lock\x20knob,\x20and\x20no\x20identical\x20frozen\x20constant\x20in\x20the\x20shipped\x20shape\x20—\x20whoever\x20sets\x20it\x20(shipped\x20default\x20or\x20fee_overrides)\x20changes\x20'+'nothing\x20on\x20chain\x20while\x20the\x20money\x20shape\x20ignores\x20it\x20(cour-mn-261102-z5t8\x20①②).\x20'+'Fix\x20ONE\x20way:\x20zero\x20the\x20knob\x20(direct\x20sales\x20default),\x20wire\x20the\x20allocator\x20rows\x20to\x20it\x20explicitly\x20(value_from\x20/\x20value_from_complement\x20naming\x20the\x20key),\x20'+'or\x20declare\x20an\x20author-literal\x20FEE_PARAM_BINDINGS\x20row\x20so\x20the\x20value\x20provably\x20lands.'});}for(const bl of windowMathMismatches(b)){l['push']({'code':'WINDOW_MATH_MISMATCH','detail':bl['rule']==='R-WINDOW-MATH-ZERO'?'settlement\x20window\x20fee_param\x20\x27'+bl['settle_param']+'\x27\x20=\x20'+bl['settle_value']+':\x20the\x20escrow\x20releases\x20the\x20moment\x20the\x20anchor\x20node\x20is\x20entered,\x20so\x20every\x20buyer\x20window\x20is\x20structurally\x20dead\x20from\x20the\x20first\x20order\x20(ksk4\x20F-35).\x20'+'Set\x20it\x20to\x20a\x20positive\x20duration\x20that\x20covers\x20the\x20after-sales\x20schedule.':'settlement\x20window\x20fee_param\x20\x27'+bl['settle_param']+'\x27\x20('+bl['settle_value']+')\x20opens\x20the\x20release\x20before\x20buyer\x20window\x20'+bl['violates']+'\x20closes\x20—\x20the\x20refund\x20rail\x20is\x20structurally\x20dead\x20from\x20the\x20release\x20moment,\x20since\x20settlement\x20drains\x20the\x20allocation\x20balance\x20and\x20every\x20later\x20refund\x20leg\x20aborts\x20on\x20empty\x20(ktt3\x20F-05).\x20'+'Raise\x20the\x20settlement\x20window\x20to\x20>=\x20the\x20largest\x20buyer\x20window,\x20or\x20shorten\x20the\x20buyer\x20window\x20to\x20match\x20the\x20real\x20policy;\x20re-sync\x20guards[].params\x20with\x20the\x20new\x20fee_params\x20value\x20(FEE_PARAM_COUPLING_MISMATCH).'});}const a3=incentiveRatingFloorClaims(b);if(a3['length']>0x0){const bm=[...new Set(a3['map'](bo=>'\x27'+bo['excerpt']+'\x27\x20('+bo['field']+')'))]['join'](',\x20'),bn=[...new Set(a3['map'](bo=>bo['claimed']))];if(D!=='review_reward')l['push']({'code':'INCENTIVE_RATING_FLOOR_MISMATCH','detail':'incentive\x20prose\x20promises\x20a\x20rating\x20floor\x20('+bm+')\x20but\x20review_mode\x20is\x20\x27'+D+'\x27\x20—\x20no\x20reward\x20track\x20'+'exists,\x20so\x20the\x20promise\x20pays\x20nothing\x20regardless\x20of\x20rating\x20(ktt3\x20F02/F12\x20residual).\x20'+('Build\x20with\x20review_mode\x20\x27review_reward\x27\x20and\x20reward_rating_floor\x20=\x20'+bn['join']('/')+',\x20or\x20drop\x20the\x20promise\x20from\x20the\x20prose.')});else{const bo=w['find'](bv=>bv['host']==='reward'),bp=bo!==undefined?o[bo['key']]:undefined,bq=bp?.['kind']==='template'&&bp['params']?{...bo?.['params']??{},...bp['params']}:bo?.['params']??{},br=bq['rating_floor'],bs=typeof br==='number'&&Number['isFinite'](br)?br:typeof br==='string'&&br['trim']()!==''&&Number['isFinite'](Number(br))?Number(br):undefined,bt=Math['max'](0x0,...a3['filter'](bv=>bv['kind']==='praise')['map'](bv=>bv['claimed'])),bu=[...new Set(a3['filter'](bv=>bv['kind']==='numeric')['map'](bv=>bv['claimed']))];if(bs===undefined||bs<=0x0){const bv=bp?.['kind']==='inline'?'the\x20claim\x20guard\x20is\x20a\x20hand-designed\x20inline\x20root\x20compile\x20cannot\x20statically\x20parse\x20—\x20verify\x20its\x20rating\x20leg\x20yourself':'the\x20reward\x20track\x20carries\x20NO\x20rating\x20leg\x20(reward_rating_floor:\x200\x20explicit\x20opt-out,\x20or\x20a\x20reward\x20spec\x20without\x20rating_floor\x20—\x20the\x20S14\x20default\x20only\x20arms\x20the\x20kernel\x20DEFAULT\x20assembly)';l['push']({'code':'INCENTIVE_RATING_FLOOR_MISMATCH','detail':'incentive\x20prose\x20promises\x20a\x20rating\x20floor\x20('+bm+')\x20but\x20the\x20compiled\x20reward\x20track\x20carries\x20NO\x20statically\x20visible\x20'+('rating\x20leg:\x20'+bv+'\x20—\x20the\x20bounty\x20pays\x20even\x20at\x20rating\x201\x20while\x20the\x20store\x20page\x20advertises\x20the\x20floor\x20')+('(ktt3\x20F02/F12\x20residual;\x20S14\x20default\x20arms\x20'+G+').\x20Pass\x20reward_rating_floor\x20=\x20'+bn['join']('/')+'\x20to\x20arm\x20it,\x20or\x20drop\x20the\x20promise\x20from\x20the\x20prose.')});}else{if(bt>0x0&&bs<bt)l['push']({'code':'INCENTIVE_RATING_FLOOR_MISMATCH','detail':'incentive\x20prose\x20promises\x20a\x20GOOD-review\x20reward\x20('+bm+')\x20—\x20a\x20praise\x20promise\x20derives\x20to\x20floor\x20'+(bt+'\x20(good\x20==\x204+,\x20S14)\x20—\x20but\x20the\x20armed\x20floor\x20is\x20'+bs+':\x20ratings\x20between\x20'+bs+'\x20')+('and\x20'+(bt-0x1)+'\x20would\x20PAY\x20while\x20the\x20store\x20page\x20advertises\x20a\x20good-review-only\x20bounty\x20')+('(ktt3\x20F02/F12\x20residual,\x20S14\x20praise\x20shape).\x20Raise\x20reward_rating_floor\x20to\x20>=\x20'+bt+',\x20or\x20rewrite\x20the\x20prose.')});else bu['length']>0x0&&!bu['includes'](bs)&&l['push']({'code':'INCENTIVE_RATING_FLOOR_MISMATCH','detail':'incentive\x20prose\x20promises\x20rating\x20floor\x20'+bu['join']('/')+'\x20('+bm+')\x20but\x20the\x20armed\x20floor\x20is\x20'+bs+'\x20—\x20'+'orders\x20at\x20the\x20promised\x20rating\x20would\x20be\x20REJECTED\x20by\x20the\x20claim\x20guard\x20while\x20the\x20store\x20page\x20advertises\x20it\x20'+'(ktt3\x20F02/F12\x20residual).\x20Align\x20reward_rating_floor\x20with\x20the\x20prose,\x20or\x20rewrite\x20the\x20prose.'});}}}if(D==='review_reward'){const bw=rewardWindowDayClaims(b);if(bw['length']>0x0){const bx=w['find'](bz=>bz['host']==='reward'),by=bx!==undefined?o[bx['key']]:undefined;if(bx!==undefined&&by?.['kind']!=='inline'){const bz=by?.['kind']==='template'&&by['params']?{...bx['params']??{},...by['params']}:bx['params']??{},bA=bF=>typeof bF==='number'&&Number['isFinite'](bF)?bF:typeof bF==='string'&&bF['trim']()!==''&&Number['isFinite'](Number(bF))?Number(bF):undefined,bB=bA(bz['closes_after_days']),bC=bB??R,bD=[...new Set(bw['map'](bF=>bF['claimed']))],bE=[...new Set(bw['map'](bF=>'\x27'+bF['excerpt']+'\x27\x20('+bF['field']+')'))]['join'](',\x20');!bD['includes'](bC)&&l['push']({'code':'INCENTIVE_WINDOW_MISMATCH','detail':'incentive\x20prose\x20promises\x20a\x20claimable\x20span\x20of\x20'+bD['join']('/')+'\x20day(s)\x20('+bE+')\x20but\x20the\x20compiled\x20'+('claim\x20window\x20closes\x20'+bC+'\x20day(s)\x20after\x20it\x20opens\x20(closes_after_days')+(bB!==undefined?'\x20from\x20the\x20declared\x20reward\x20spec\x20params)':'\x20—\x20kernel\x20default\x20assembly,\x20bsw4\x20F-11\x20span\x20'+M)+'):\x20orders\x20claimed\x20inside\x20the\x20ADVERTISED\x20window\x20would\x20abort\x20E_GUARD_EXPIRED\x20while\x20the\x20store\x20page\x20advertises\x20it\x20'+'(h1w9\x20F-15:\x20\x227\x20days\x20to\x20claim\x22\x20advertising\x20vs\x20the\x20compiled\x2014d).\x20Align\x20the\x20window\x20—\x20pass\x20'+('reward_claim_closes_after_days\x20=\x20'+bD['join']('/')+'\x20(kernel\x20default\x20assembly)\x20or\x20pin\x20the\x20reward\x20spec\x27s\x20')+'closes_after_days\x20param\x20to\x20it\x20—\x20or\x20rewrite\x20the\x20prose.'});}}}const a4=new Set(j['flatMap'](bF=>(bF['from']??[])['map'](bG=>typeof bG==='string'?undefined:bG['guard_key'])['filter'](bG=>typeof bG==='string')));for(const bF of k){typeof bF['guard_key']==='string'&&bF['recipient']==='guard_identifier'&&bF['recipient_key']===String(TASK_BINDING_SLOT)&&a4['add'](bF['guard_key']);}const a5=new Set();for(const bG of w){if(!a4['has'](bG['key'])&&!p['has'](bG['key']))continue;const bH=Y['get'](bG['key']);if(bH===undefined)continue;const bI=bH['table']['some'](bJ=>bJ['identifier']===TASK_BINDING_SLOT);if(bI)continue;Y['set'](bG['key'],{...bH,'table':[...bH['table'],{'identifier':TASK_BINDING_SLOT,'b_submission':!![],'value_type':'Address','name':'task_binding\x20order\x20anchor\x20(protocol\x20slot\x20254;\x20written\x20by\x20order\x20creation)'}]}),a5['add'](bG['key']);}for(const bJ of w){if(bJ['host']!=='reward')continue;const bK=Y['get'](bJ['key']);if(bK?.['root']===undefined)continue;const bL=bK['table']['some'](bN=>{const bO=bN;if(bO['b_submission']!==!![])return![];if(bO['object_type']==='Order')return!![];const bP=bO['name'];return typeof bP==='string'&&/order/i['test'](bP);}),bM=verifyGuardBinding({'host':'reward_claim','root':bK['root'],'facts':{'order_submission_declared':bL}});bM['some'](bN=>bN['code']==='RC_NO_ORDER_ANCHOR')&&l['push']({'code':'REWARD_WINDOW_UNRESOLVABLE','detail':'reward\x20claim\x20guard\x20\x27'+bJ['key']+'\x27\x20of\x20\x27'+c+'\x27\x20carries\x20order./progress.\x20window\x20legs\x20that\x20have\x20NOTHING\x20to\x20resolve\x20against\x20in\x20the\x20'+'reward\x20context\x20(the\x20resolved\x20guard\x20table\x20declares\x20no\x20order-slot\x20submission)\x20—\x20the\x20legs\x20never\x20evaluate,\x20yet\x20they\x20fire\x20as\x20the\x20claim\x20'+'window\x20money\x20gate,\x20so\x20a\x20day-0\x20claim\x20releases\x20the\x20bounty\x20while\x20the\x20disclosed\x20OPENS/CLOSES\x20schedule\x20is\x20fiction\x20(cour\x20C2\x20⑤,\x20T2).\x20'+'Fix\x20ONE\x20way:\x20mount\x20a\x20guard\x20template\x20that\x20declares\x20the\x20order-slot\x20submission\x20(identifier\x200,\x20b_submission,\x20object_type\x20Order\x20—\x20e.g.\x20tpl_reward_one_time_claim),\x20'+'or\x20drop\x20the\x20order./progress.\x20window\x20legs\x20and\x20gate\x20the\x20claim\x20on\x20the\x20reward-context\x20facts\x20(claim-allowed\x20node\x20set,\x20rating\x20leg,\x20open/close\x20day\x20twins).'});}{const bN=b['settlement_window_merge'];if(bN!==undefined&&bN['length']>0x0){const bO=b['fee_params'],bP=bT=>{const bU=e[bT]??bO[bT];if(bU===undefined||bU===null)return undefined;const bV=typeof bU==='number'?bU:Number(bU);return Number['isFinite'](bV)&&bV>=0x0?bV:undefined;};let bQ=0x0;for(const bT of bN){const bU=bP(bT);if(bU===undefined){bQ=undefined;break;}bQ+=bU;}const bR='settlement_window_merge\x20['+bN['join']('\x20+\x20')+']',bS=w['find'](bV=>{const bW=timeInstantiationFor(b['id'],bV['key']);return bW!==undefined&&bW['direction']==='lower'&&bW['days']!==undefined&&bN['includes'](bW['days']);});if(bQ===undefined)l['push']({'code':'MERGED_LOCK_MISMATCH','detail':bR+':\x20a\x20merged\x20window\x20has\x20no\x20readable\x20day\x20value,\x20so\x20the\x20effective\x20release\x20lock\x20cannot\x20be\x20'+'determined.\x20Declare\x20every\x20merged\x20key\x20as\x20a\x20numeric\x20fee_param\x20(or\x20supply\x20it\x20as\x20an\x20input).'});else{if(bS===undefined)l['push']({'code':'MERGED_LOCK_MISMATCH','detail':bR+'\x20(=\x20'+bQ+'\x20days)\x20declares\x20a\x20merged\x20release\x20lock,\x20but\x20no\x20compiled\x20settlement\x20gate\x20'+'(\x22lower\x22\x20time\x20instantiation\x20whose\x20day\x20knob\x20is\x20one\x20of\x20the\x20merged\x20keys)\x20carries\x20it\x20—\x20the\x20'+'declaration\x20would\x20be\x20prose\x20while\x20the\x20escrow\x20releases\x20before\x20the\x20merged\x20windows\x20finish.'});else{if(o[bS['key']]?.['kind']!=='inline'&&Y['has'](bS['key'])){const bV=Y['get'](bS['key'])['table'];let bW;for(const bX of bV){if(bX['identifier']!==0x3)continue;const bY=bX['value'],bZ=typeof bY==='number'?bY:Number(bY);if(Number['isFinite'](bZ))bW=bZ;}bW!==bQ&&l['push']({'code':'MERGED_LOCK_MISMATCH','detail':bR+'\x20=\x20'+bQ+'\x20days\x20by\x20declaration,\x20but\x20guard\x20\x27'+bS['key']+'\x27\x20compiled\x20its\x20length\x20'+('literal\x20to\x20'+(bW===undefined?'(none)':bW+'\x20days')+'.\x20The\x20escrow\x20would\x20')+'release\x20early\x20while\x20a\x20merged\x20buyer\x20window\x20can\x20still\x20draw\x20it.'});}}}}}for(const [c0,c1]of Y){const c2=normalizeGuardRowNames(c1['table'],c1['description'],MAX_GUARD_DESCRIPTION_CONTENT);(c2['table']!==c1['table']||c2['description']!==c1['description'])&&Y['set'](c0,{...c1,'table':c2['table'],'description':typeof c2['description']==='string'?c2['description']:c1['description']});}for(const c3 of w){if(c3['host']!=='reward')continue;const c4=c3['params']??{},c5=['expected_pre_claim_node','expected_pre_claim_node_alt','expected_pre_claim_node_alt2','expected_pre_claim_node_alt3'],c6=c5['map'](c9=>c4[c9])['filter'](c9=>typeof c9==='string'),c7=c6['length']!==new Set(c6)['size'];if(!c7)continue;const c8=j['filter'](c9=>(REVIEW_OUTCOME_CLASS['test'](c9['name'])||c9['semantic_role']==='final')&&!c6['includes'](c9['name']))['map'](c9=>c9['name']);if(c8['length']===0x0)continue;c3['purpose']=c3['purpose']+'\x20REWARD_CLAIM_NODESET_DISPLACED\x20(kq4x\x20P-018):\x20the\x20expected_pre_claim_node*\x20slots\x20carry\x20a\x20'+('duplicate\x20same-value\x20leg\x20('+c6['join'](',\x20')+')\x20while\x20the\x20machine\x20shape\x20mounts\x20claim-eligible\x20node(s)\x20NOT\x20in\x20')+('the\x20set:\x20'+c8['join'](',\x20')+'\x20—\x20those\x20nodes\x20can\x20never\x20open\x20this\x20bounty.\x20If\x20they\x20SHOULD,\x20pin\x20the\x20full\x20set\x20')+'with\x20explicit\x20distinct\x20expected_pre_claim_node\x20/\x20_alt\x20/\x20_alt2\x20/\x20_alt3\x20params\x20on\x20this\x20host:\x22reward\x22\x20spec\x20'+'(a\x20two-slot\x20primary+alt\x20form\x20is\x20legal\x20—\x20unused\x20alts\x20may\x20stay\x20undeclared).';}return{'guardSpecs':w,'resolutions':o,'resolvedGuards':Y,'unresolved':Z,'omitKeys':s,'recoverTwinRails':p,'declareReasons':u,'specByKey':A,'slot254Injected':a5,'injectedOrderHolderKeys':x,'edgeBoundKeys':a4,'derived':{'reviewMode':D,'rewardMark':E,'needsRepository':X,'experienceClaimKey':U},'blockers':l};}
@@ -1 +1 @@
1
- const MAX_RECORDS=0x32,MAX_AGE_MS=0x2*0x3c*0x3c*0x3e8,records=new Map();let seq=0x0;function hash(a){let b=0x1505;for(let c=0x0;c<a['length'];c++)b=(b<<0x5)+b+a['charCodeAt'](c)>>>0x0;return b['toString'](0x10);}function prune(){const a=Date['now']();for(const [b,c]of records){if(a-c['started_at']>MAX_AGE_MS)records['delete'](b);}while(records['size']>MAX_RECORDS){const d=records['keys']()['next']()['value'];if(d===undefined)break;records['delete'](d);}}function addr(a){return typeof a==='string'&&a['startsWith']('0x')?a:undefined;}export function isDeterministicOutcomeMessage(a){return/MoveAbort|abort code|has been deleted|new guard check failed|guard verification would fail on-chain/i['test'](a)||/cannot derive total_pay|buy\.total_pay is (omitted|REQUIRED)/i['test'](a);}export function beginInFlight(a,b,c,d,e){if(c?.['dry_run']===!![])return'';const f=b,g=f?.['order_new']?.['buy'],h=f?.['alloc_by_guard']!=null,i=g?.['total_pay']!=null&&typeof g['total_pay']==='object'?g['total_pay']['balance']:undefined,j=Array['isArray'](g?.['items'])?g['items']['map'](l=>typeof l?.['name']==='string'?l['name']:'')['filter'](Boolean):undefined,k={'marker_id':'ifl_'+Date['now']()['toString'](0x10)+'_'+(seq++)['toString'](0x10),'op':a,'service':h?undefined:addr(f?.['object'])??addr(g?.['service']),'allocation':h?addr(f?.['object']):undefined,'buyer':addr(c?.['account']),'items_count':Array['isArray'](g?.['items'])?g['items']['length']:undefined,...typeof i==='string'&&i!==''?{'total_pay':i}:{},...j&&j['length']>0x0?{'item_names':j}:{},'params_hash':inFlightParamsHash(b,d,c?.['account']),'started_at':e??Date['now'](),'digests':[],'status':'in_flight'};return records['set'](k['marker_id'],k),prune(),k['marker_id'];}const UNKNOWN_OUTCOME_BACKDATE_MS=0x3c*0x3e8;export function parkUnknownOutcomeMarker(a,b,c,d){if(c?.['dry_run']===!![])return;if(lastInFlightMarker(a,inFlightParamsHash(b,d,c?.['account'])))return;beginInFlight(a,b,c,d,Date['now']()-UNKNOWN_OUTCOME_BACKDATE_MS);}const MAX_IDEM_KEYS=0x64,IDEM_PENDING_TTL_MS=0x3c*0x3c*0x3e8,IDEM_UNKNOWN_TTL_MS=0xf*0x3c*0x3e8,idemKeys=new Map();function pruneIdemKeys(){const a=Date['now']();for(const [b,c]of idemKeys){const d=c['status']==='unknown'?IDEM_UNKNOWN_TTL_MS:IDEM_PENDING_TTL_MS;if(a-c['first_seen']>d)idemKeys['delete'](b);}while(idemKeys['size']>MAX_IDEM_KEYS){const e=idemKeys['keys']()['next']()['value'];if(e===undefined)break;idemKeys['delete'](e);}}export function idempotencyKeyGate(a,b,c){if(c===!![])return idemKeys['get'](a);pruneIdemKeys();const d=idemKeys['get'](a);if(d)return d;return idemKeys['set'](a,{'op':b,'status':'pending','first_seen':Date['now'](),'digests':[]}),undefined;}export function idempotencyKeyObserveUnknown(a,b,c){pruneIdemKeys(),idemKeys['set'](a,{'op':b,'status':'unknown','first_seen':idemKeys['get'](a)?.['first_seen']??Date['now'](),...c?.['sender']?{'sender':c['sender']}:{},...c?.['verify_events_since']?{'verify_events_since':c['verify_events_since']}:{},...c?.['digests']&&c['digests']['length']>0x0?{'digests':c['digests']}:{'digests':[]}});}export function idempotencyKeyClear(a){idemKeys['delete'](a);}export function markerOpFor(a,b){const c=b;if(c?.['order_new']!=null)return'order_new';if(c?.['alloc_by_guard']!=null)return'alloc_by_guard';return a;}export function recordInFlightOutcome(a,b){const c=records['get'](a);if(!c)return;const d=b?.['digest'];typeof d==='string'&&d&&(recordLandedTombstone(c['op'],d),records['delete'](a));}const MAX_TOMBSTONES=0xa,TOMBSTONE_MAX_AGE_MS=0xa*0x3c*0x3e8,tombstones=[];function recordLandedTombstone(a,b){tombstones['push']({'op':a,'digest':b,'at':Date['now']()});while(tombstones['length']>MAX_TOMBSTONES)tombstones['shift']();}export function recentLandedTombstone(){const a=Date['now']();while(tombstones['length']>0x0&&a-tombstones[0x0]['at']>TOMBSTONE_MAX_AGE_MS)tombstones['shift']();return tombstones['length']>0x0?tombstones[tombstones['length']-0x1]:undefined;}export function clearInFlightMarkers(){const a=records['size']+tombstones['length'];return records['clear'](),tombstones['length']=0x0,a;}const MAX_RETURNED_DIGESTS=0x200,returnedDigests=[];export function noteReturnedDigest(a,b){if(!a||a['startsWith']('dry_run:'))return;if(returnedDigests['some'](c=>c['digest']===a))return;returnedDigests['push']({'digest':a,'op':b,'at':Date['now']()});while(returnedDigests['length']>MAX_RETURNED_DIGESTS)returnedDigests['shift']();}export function priorReturnOfDigest(a){if(!a)return undefined;for(let b=returnedDigests['length']-0x1;b>=0x0;b--){if(returnedDigests[b]['digest']===a)return returnedDigests[b];}return undefined;}export function attachInFlightDigest(a,b,c){const d=lastInFlightMarker(a,b);if(!d)return;if(!d['digests']['includes'](c))d['digests']['push'](c);}export function inFlightParamsHash(a,b,c){const d=typeof c==='string'?c['trim']()['toLowerCase']():'';return hash(JSON['stringify'](a??{})+'\x00'+JSON['stringify'](b??null)+'\x00'+d);}export function describeLastInFlight(a,b){let c;for(const f of records['values']()){if(f['op']!==a)continue;if(b!==undefined&&f['params_hash']!==b)continue;c=f;}if(!c)return undefined;const d=[c['service']?'service='+c['service']:undefined,c['allocation']?'allocation='+c['allocation']:undefined,c['buyer']?'buyer='+c['buyer']:undefined,c['items_count']!==undefined?'items='+c['items_count']:undefined]['filter'](Boolean)['join']('\x20'),e=c['digests']['length']>0x0?'\x0aReported\x20submission\x20digest(s):\x20'+c['digests']['join'](',\x20')+'\x20—\x20verify\x20THE\x20DIGEST\x20FIRST\x20'+'(onchain_transaction\x20by\x20digest):\x20an\x20executed\x20status\x20means\x20the\x20operation\x20LANDED\x20—\x20adopt\x20the\x20'+'created\x20object(s)\x20and\x20stop;\x20a\x20failure\x20status\x20is\x20FINAL\x20(its\x20bytes\x20are\x20consumed\x20—\x20fix\x20the\x20cause\x20'+'and\x20build\x20a\x20fresh\x20transaction);\x20a\x20digest\x20that\x20does\x20not\x20resolve\x20means\x20nothing\x20landed\x20and\x20a\x20'+'resubmit\x20is\x20safe.':'';return'IN-FLIGHT\x20MARKER\x20'+c['marker_id']+':\x20op='+c['op']+'\x20'+d+'\x20started\x20'+new Date(c['started_at'])['toISOString']()+'\x20'+'—\x20this\x20operation\x20is\x20observability-non-atomic:\x20a\x20transport\x20drop\x20after\x20submit\x20leaves\x20the\x20commit\x20state\x20'+'open.\x20Before\x20resubmitting,\x20first\x20verify\x20whether\x20an\x20order\x20with\x20this\x20exact\x20signature\x20already\x20landed\x20'+'(query\x20the\x20sender\x27s\x20recent\x20on-chain\x20objects\x20or\x20onchain_events\x20for\x20this\x20service);\x20adopt\x20it\x20if\x20present,\x20'+'resubmit\x20only\x20if\x20confirmed\x20absent.'+e;}export function lastInFlightMarker(a,b){let c;for(const d of records['values']()){if(d['op']!==a)continue;if(b!==undefined&&d['params_hash']!==b)continue;c=d;}return c;}export function consumeInFlightMarker(a,b){let c=0x0;for(const [d,e]of records){e['op']===a&&e['params_hash']===b&&(records['delete'](d),c++);}return c;}const RESEND_INTERCEPT_WINDOW_MS=0x78*0x3e8;export function pendingInFlightResend(a,b,c,d){if(d?.['dry_run']===!![])return undefined;const e=lastInFlightMarker(a,inFlightParamsHash(b,c,d?.['account']));if(!e)return undefined;if(Date['now']()-e['started_at']>=RESEND_INTERCEPT_WINDOW_MS)return undefined;const f=e['allocation']??e['service']??'the\x20object\x20referenced\x20by\x20this\x20call',g=new Date(e['started_at']+RESEND_INTERCEPT_WINDOW_MS)['toISOString'](),h=e['allocation']?'query\x20the\x20Allocation\x20object\x20and\x20the\x20Payment\x20object(s)\x20it\x20produced\x20'+'(onchain_objects\x20/\x20onchain_events\x20for\x20this\x20allocation)':'query\x20the\x20object(s)\x20this\x20exact\x20call\x20creates\x20or\x20mutates,\x20and\x20the\x20signing\x20'+'account\x27s\x20recent\x20events\x20(query_toolkit\x20onchain_objects\x20/\x20onchain_events\x20for\x20the\x20sender)';return'THIS\x20EXACT\x20CALL\x20WAS\x20SUBMITTED\x20MOMENTS\x20AGO\x20AND\x20ITS\x20OUTCOME\x20WAS\x20NEVER\x20OBSERVED\x20'+('(in-flight\x20marker\x20'+e['marker_id']+',\x20started\x20'+new Date(e['started_at'])['toISOString']()+',\x20')+('op='+e['op']+',\x20'+f+').\x20The\x20call\x20is\x20observability-non-atomic:\x20a\x20transport\x20drop\x20after\x20submit\x20')+'leaves\x20the\x20commit\x20state\x20open,\x20and\x20resubmitting\x20the\x20same\x20payload\x20without\x20checking\x20may\x20move\x20the\x20funds\x20'+'a\x20second\x20time.\x20Before\x20doing\x20anything\x20else,\x20verify\x20whether\x20the\x20previous\x20submission\x20already\x20landed:\x20'+(h+'\x20—\x20if\x20a\x20result\x20already\x20landed,\x20adopt\x20it\x20and\x20stop;\x20')+'only\x20resubmit\x20once\x20you\x20have\x20confirmed\x20on-chain\x20that\x20nothing\x20landed.\x20'+'Scope\x20of\x20this\x20check:\x20it\x20holds\x20ONLY\x20this\x20exact\x20payload\x20(data\x20+\x20submission\x20envelope\x20together),\x20and\x20'+('only\x20until\x20'+g+'\x20('+Math['round'](RESEND_INTERCEPT_WINDOW_MS/0x3e8)+'s\x20from\x20the\x20marker\x20start)\x20—\x20')+'past\x20that\x20moment\x20the\x20identical\x20call\x20goes\x20through\x20unchanged.\x20A\x20changed\x20payload\x20(different\x20amounts,\x20'+'recipients,\x20targets,\x20or\x20a\x20corrected\x20submission\x20envelope)\x20is\x20never\x20affected:\x20fixing\x20the\x20envelope\x20and\x20'+'retrying\x20right\x20away\x20is\x20always\x20allowed.';}export function matchOrderLandedEvent(a,b){const c=a['started_at']-0xf*0x3e8,d=Number(b?.['time']);if(Number['isFinite'](d)&&d<c)return undefined;if(priorReturnOfDigest(b?.['digest']))return undefined;if(a['total_pay']!=null&&b?.['amount']!=null&&amountMatches(a['total_pay'],b['amount'])===![])return undefined;const e=!!(a['service']&&b?.['service']&&b['service']===a['service']),f=!!(a['buyer']&&b?.['sender']&&b['sender']['toLowerCase']()===a['buyer']['toLowerCase']());if(!e&&!f)return undefined;if(a['buyer']&&b?.['sender']&&!f)return undefined;const g=b?.['digest']??'unknown';return'AUTO-VERIFIED\x20ON-CHAIN:\x20this\x20order\x20DID\x20land\x20despite\x20the\x20error\x20above\x20—\x20order='+(b?.['order']??'?')+((b?.['progress']?'\x20progress='+b['progress']:'')+'\x20digest='+g+'.\x20ADOPT\x20this\x20order\x20object;\x20')+'resubmitting\x20the\x20same\x20call\x20would\x20escrow\x20a\x20SECOND\x20time.';}function amountMatches(c,d){try{const e=BigInt(String(c)),f=BigInt(String(d));return e===f;}catch{return undefined;}}export function matchRecentOrder(a,b){const c=a['started_at']-0xf*0x3e8,d=Number(b?.['time']);if(!Number['isFinite'](d)||d<c)return undefined;if(a['buyer']&&b?.['owner']&&b['owner']['toLowerCase']()!==a['buyer']['toLowerCase']())return undefined;const e=amountMatches(a['total_pay'],b?.['amount']);if(e===![])return undefined;const f=Array['isArray'](b?.['items'])?b['items']['map'](k=>typeof k?.['name']==='string'?k['name']['toLowerCase']():'')['filter'](Boolean)['sort']():undefined,g=(a['item_names']??[])['map'](k=>k['toLowerCase']())['sort'](),h=g['length']>0x0&&f!==undefined;if(h&&JSON['stringify'](g)!==JSON['stringify'](f))return undefined;const i=[a['buyer']&&b?.['owner']?'owner-verified':undefined,e===!![]?'amount-verified':undefined,h?'items-verified':undefined]['filter'](Boolean),j=i['length']>0x0?',\x20'+i['join'](',\x20'):'';return'AUTO-VERIFIED\x20ON-CHAIN:\x20this\x20order\x20DID\x20land\x20despite\x20the\x20error\x20above\x20—\x20order='+(b?.['order']??'?')+'\x20'+('(service\x20recent_orders\x20reverse\x20lookup'+j+').\x20ADOPT\x20this\x20order\x20object;\x20')+'resubmitting\x20the\x20same\x20call\x20would\x20escrow\x20a\x20SECOND\x20time.';}export function listInFlightMarkers(){return Array['from'](records['values']())['map'](a=>({...a,'digests':[...a['digests']]}));}export function recentReturnedDigests(a=0x14){return returnedDigests['slice'](-a)['reverse']();}export function recentLandedTombstones(){return recentLandedTombstone(),[...tombstones];}
1
+ const MAX_RECORDS=0x32,MAX_AGE_MS=0x2*0x3c*0x3c*0x3e8,records=new Map();let seq=0x0;function hash(a){let b=0x1505;for(let c=0x0;c<a['length'];c++)b=(b<<0x5)+b+a['charCodeAt'](c)>>>0x0;return b['toString'](0x10);}function prune(){const a=Date['now']();for(const [b,c]of records){if(a-c['started_at']>MAX_AGE_MS)records['delete'](b);}while(records['size']>MAX_RECORDS){const d=records['keys']()['next']()['value'];if(d===undefined)break;records['delete'](d);}}function addr(a){return typeof a==='string'&&a['startsWith']('0x')?a:undefined;}export function isDeterministicOutcomeMessage(a){return/MoveAbort|abort code|has been deleted|new guard check failed|guard verification would fail on-chain/i['test'](a)||/cannot derive total_pay|buy\.total_pay is (omitted|REQUIRED)/i['test'](a);}export function beginInFlight(a,b,c,d,e){if(c?.['dry_run']===!![])return'';const f=b,g=f?.['order_new']?.['buy'],h=f?.['alloc_by_guard']!=null,i=g?.['total_pay']!=null&&typeof g['total_pay']==='object'?g['total_pay']['balance']:undefined,j=Array['isArray'](g?.['items'])?g['items']['map'](l=>typeof l?.['name']==='string'?l['name']:'')['filter'](Boolean):undefined,k={'marker_id':'ifl_'+Date['now']()['toString'](0x10)+'_'+(seq++)['toString'](0x10),'op':a,'service':h?undefined:addr(f?.['object'])??addr(g?.['service']),'allocation':h?addr(f?.['object']):undefined,'buyer':addr(c?.['account']),'items_count':Array['isArray'](g?.['items'])?g['items']['length']:undefined,...typeof i==='string'&&i!==''?{'total_pay':i}:{},...j&&j['length']>0x0?{'item_names':j}:{},'params_hash':inFlightParamsHash(b,d,c?.['account']),'started_at':e??Date['now'](),'digests':[],'status':'in_flight'};return records['set'](k['marker_id'],k),prune(),k['marker_id'];}const UNKNOWN_OUTCOME_BACKDATE_MS=0x3c*0x3e8;export function parkUnknownOutcomeMarker(a,b,c,d){if(c?.['dry_run']===!![])return;if(lastInFlightMarker(a,inFlightParamsHash(b,d,c?.['account'])))return;beginInFlight(a,b,c,d,Date['now']()-UNKNOWN_OUTCOME_BACKDATE_MS);}const MAX_IDEM_KEYS=0x64,IDEM_PENDING_TTL_MS=0x3c*0x3c*0x3e8,IDEM_UNKNOWN_TTL_MS=0xf*0x3c*0x3e8,idemKeys=new Map();function pruneIdemKeys(){const a=Date['now']();for(const [b,c]of idemKeys){const d=c['status']==='unknown'?IDEM_UNKNOWN_TTL_MS:IDEM_PENDING_TTL_MS;if(a-c['first_seen']>d)idemKeys['delete'](b);}while(idemKeys['size']>MAX_IDEM_KEYS){const e=idemKeys['keys']()['next']()['value'];if(e===undefined)break;idemKeys['delete'](e);}}export function idempotencyKeyGate(a,b,c){if(c===!![])return idemKeys['get'](a);pruneIdemKeys();const d=idemKeys['get'](a);if(d)return d;return idemKeys['set'](a,{'op':b,'status':'pending','first_seen':Date['now'](),'digests':[]}),undefined;}export function idempotencyKeyObserveUnknown(a,b,c){pruneIdemKeys(),idemKeys['set'](a,{'op':b,'status':'unknown','first_seen':idemKeys['get'](a)?.['first_seen']??Date['now'](),...c?.['sender']?{'sender':c['sender']}:{},...c?.['verify_events_since']?{'verify_events_since':c['verify_events_since']}:{},...c?.['digests']&&c['digests']['length']>0x0?{'digests':c['digests']}:{'digests':[]}});}export function idempotencyKeyClear(a){idemKeys['delete'](a);}export function markerOpFor(a,b){const c=b;if(c?.['order_new']!=null)return'order_new';if(c?.['alloc_by_guard']!=null)return'alloc_by_guard';return a;}export function recordInFlightOutcome(a,b){const c=records['get'](a);if(!c)return;const d=b?.['digest'];typeof d==='string'&&d&&(recordLandedTombstone(c['op'],d),records['delete'](a));}const MAX_TOMBSTONES=0xa,TOMBSTONE_MAX_AGE_MS=0xa*0x3c*0x3e8,tombstones=[];function recordLandedTombstone(a,b){tombstones['push']({'op':a,'digest':b,'at':Date['now']()});while(tombstones['length']>MAX_TOMBSTONES)tombstones['shift']();}export function recentLandedTombstone(){const a=Date['now']();while(tombstones['length']>0x0&&a-tombstones[0x0]['at']>TOMBSTONE_MAX_AGE_MS)tombstones['shift']();return tombstones['length']>0x0?tombstones[tombstones['length']-0x1]:undefined;}export function clearInFlightMarkers(){const a=records['size']+tombstones['length'];return records['clear'](),tombstones['length']=0x0,a;}const MAX_RETURNED_DIGESTS=0x200,returnedDigests=[];export function noteReturnedDigest(a,b){if(!a||a['startsWith']('dry_run:'))return;if(returnedDigests['some'](c=>c['digest']===a))return;returnedDigests['push']({'digest':a,'op':b,'at':Date['now']()});while(returnedDigests['length']>MAX_RETURNED_DIGESTS)returnedDigests['shift']();}export function priorReturnOfDigest(a){if(!a)return undefined;for(let b=returnedDigests['length']-0x1;b>=0x0;b--){if(returnedDigests[b]['digest']===a)return returnedDigests[b];}return undefined;}export function attachInFlightDigest(a,b,c){const d=lastInFlightMarker(a,b);if(!d)return;if(!d['digests']['includes'](c))d['digests']['push'](c);}function stableStringify(a){if(typeof a==='bigint')return a['toString']();if(a===null||typeof a!=='object')return JSON['stringify'](a??null);if(Array['isArray'](a))return'['+a['map'](stableStringify)['join'](',')+']';const b=a,c=Object['keys'](b)['sort']()['map'](d=>JSON['stringify'](d)+':'+stableStringify(b[d]))['join'](',');return'{'+c+'}';}export function inFlightParamsHash(a,b,c){const d=typeof c==='string'?c['trim']()['toLowerCase']():'';return hash(stableStringify(a??{})+'\x00'+stableStringify(b??null)+'\x00'+d);}export function describeLastInFlight(a,b){let c;for(const f of records['values']()){if(f['op']!==a)continue;if(b!==undefined&&f['params_hash']!==b)continue;c=f;}if(!c)return undefined;const d=[c['service']?'service='+c['service']:undefined,c['allocation']?'allocation='+c['allocation']:undefined,c['buyer']?'buyer='+c['buyer']:undefined,c['items_count']!==undefined?'items='+c['items_count']:undefined]['filter'](Boolean)['join']('\x20'),e=c['digests']['length']>0x0?'\x0aReported\x20submission\x20digest(s):\x20'+c['digests']['join'](',\x20')+'\x20—\x20verify\x20THE\x20DIGEST\x20FIRST\x20'+'(onchain_transaction\x20by\x20digest):\x20an\x20executed\x20status\x20means\x20the\x20operation\x20LANDED\x20—\x20adopt\x20the\x20'+'created\x20object(s)\x20and\x20stop;\x20a\x20failure\x20status\x20is\x20FINAL\x20(its\x20bytes\x20are\x20consumed\x20—\x20fix\x20the\x20cause\x20'+'and\x20build\x20a\x20fresh\x20transaction);\x20a\x20digest\x20that\x20does\x20not\x20resolve\x20means\x20nothing\x20landed\x20and\x20a\x20'+'resubmit\x20is\x20safe.':'';return'[UNOBSERVED-PENDING]\x20IN-FLIGHT\x20MARKER\x20'+c['marker_id']+':\x20op='+c['op']+'\x20'+d+'\x20started\x20'+new Date(c['started_at'])['toISOString']()+'\x20'+'—\x20this\x20operation\x20is\x20observability-non-atomic:\x20a\x20transport\x20drop\x20after\x20submit\x20leaves\x20the\x20commit\x20state\x20'+'open.\x20Before\x20resubmitting,\x20first\x20verify\x20whether\x20an\x20order\x20with\x20this\x20exact\x20signature\x20already\x20landed\x20'+'(query\x20the\x20sender\x27s\x20recent\x20on-chain\x20objects\x20or\x20onchain_events\x20for\x20this\x20service);\x20adopt\x20it\x20if\x20present,\x20'+'resubmit\x20only\x20if\x20confirmed\x20absent.'+e;}export function lastInFlightMarker(a,b){let c;for(const d of records['values']()){if(d['op']!==a)continue;if(b!==undefined&&d['params_hash']!==b)continue;c=d;}return c;}export function consumeInFlightMarker(a,b){let c=0x0;for(const [d,e]of records){e['op']===a&&e['params_hash']===b&&(records['delete'](d),c++);}return c;}const RESEND_INTERCEPT_WINDOW_MS=0x78*0x3e8;export function pendingInFlightResend(a,b,c,d){if(d?.['dry_run']===!![])return undefined;const e=lastInFlightMarker(a,inFlightParamsHash(b,c,d?.['account']));if(!e)return undefined;if(Date['now']()-e['started_at']>=RESEND_INTERCEPT_WINDOW_MS)return undefined;const f=e['allocation']??e['service']??'the\x20object\x20referenced\x20by\x20this\x20call',g=new Date(e['started_at']+RESEND_INTERCEPT_WINDOW_MS)['toISOString'](),h=e['allocation']?'query\x20the\x20Allocation\x20object\x20and\x20the\x20Payment\x20object(s)\x20it\x20produced\x20'+'(onchain_objects\x20/\x20onchain_events\x20for\x20this\x20allocation)':'query\x20the\x20object(s)\x20this\x20exact\x20call\x20creates\x20or\x20mutates,\x20and\x20the\x20signing\x20'+'account\x27s\x20recent\x20events\x20(query_toolkit\x20onchain_objects\x20/\x20onchain_events\x20for\x20the\x20sender)';return'THIS\x20EXACT\x20CALL\x20WAS\x20SUBMITTED\x20MOMENTS\x20AGO\x20AND\x20ITS\x20OUTCOME\x20WAS\x20NEVER\x20OBSERVED\x20'+('(in-flight\x20marker\x20'+e['marker_id']+',\x20started\x20'+new Date(e['started_at'])['toISOString']()+',\x20')+('op='+e['op']+',\x20'+f+').\x20The\x20call\x20is\x20observability-non-atomic:\x20a\x20transport\x20drop\x20after\x20submit\x20')+'leaves\x20the\x20commit\x20state\x20open,\x20and\x20resubmitting\x20the\x20same\x20payload\x20without\x20checking\x20may\x20move\x20the\x20funds\x20'+'a\x20second\x20time.\x20Before\x20doing\x20anything\x20else,\x20verify\x20whether\x20the\x20previous\x20submission\x20already\x20landed:\x20'+(h+'\x20—\x20if\x20a\x20result\x20already\x20landed,\x20adopt\x20it\x20and\x20stop;\x20')+'only\x20resubmit\x20once\x20you\x20have\x20confirmed\x20on-chain\x20that\x20nothing\x20landed.\x20'+'Scope\x20of\x20this\x20check:\x20it\x20holds\x20ONLY\x20this\x20exact\x20payload\x20(data\x20+\x20submission\x20envelope\x20together),\x20and\x20'+('only\x20until\x20'+g+'\x20('+Math['round'](RESEND_INTERCEPT_WINDOW_MS/0x3e8)+'s\x20from\x20the\x20marker\x20start)\x20—\x20')+'past\x20that\x20moment\x20the\x20identical\x20call\x20goes\x20through\x20unchanged.\x20A\x20changed\x20payload\x20(different\x20amounts,\x20'+'recipients,\x20targets,\x20or\x20a\x20corrected\x20submission\x20envelope)\x20is\x20never\x20affected:\x20fixing\x20the\x20envelope\x20and\x20'+'retrying\x20right\x20away\x20is\x20always\x20allowed.';}export function matchOrderLandedEvent(a,b){const c=a['started_at']-0xf*0x3e8,d=Number(b?.['time']);if(Number['isFinite'](d)&&d<c)return undefined;if(priorReturnOfDigest(b?.['digest']))return undefined;if(a['total_pay']!=null&&b?.['amount']!=null&&amountMatches(a['total_pay'],b['amount'])===![])return undefined;const e=!!(a['service']&&b?.['service']&&b['service']===a['service']),f=!!(a['buyer']&&b?.['sender']&&b['sender']['toLowerCase']()===a['buyer']['toLowerCase']());if(!e&&!f)return undefined;if(a['buyer']&&b?.['sender']&&!f)return undefined;const g=b?.['digest']??'unknown';return'AUTO-VERIFIED\x20ON-CHAIN:\x20this\x20order\x20DID\x20land\x20despite\x20the\x20error\x20above\x20—\x20order='+(b?.['order']??'?')+((b?.['progress']?'\x20progress='+b['progress']:'')+'\x20digest='+g+'.\x20ADOPT\x20this\x20order\x20object;\x20')+'resubmitting\x20the\x20same\x20call\x20would\x20escrow\x20a\x20SECOND\x20time.';}function amountMatches(c,d){try{const e=BigInt(String(c)),f=BigInt(String(d));return e===f;}catch{return undefined;}}export function matchRecentOrder(a,b){const c=a['started_at']-0xf*0x3e8,d=Number(b?.['time']);if(!Number['isFinite'](d)||d<c)return undefined;if(a['buyer']&&b?.['owner']&&b['owner']['toLowerCase']()!==a['buyer']['toLowerCase']())return undefined;const e=amountMatches(a['total_pay'],b?.['amount']);if(e===![])return undefined;const f=Array['isArray'](b?.['items'])?b['items']['map'](k=>typeof k?.['name']==='string'?k['name']['toLowerCase']():'')['filter'](Boolean)['sort']():undefined,g=(a['item_names']??[])['map'](k=>k['toLowerCase']())['sort'](),h=g['length']>0x0&&f!==undefined;if(h&&JSON['stringify'](g)!==JSON['stringify'](f))return undefined;const i=[a['buyer']&&b?.['owner']?'owner-verified':undefined,e===!![]?'amount-verified':undefined,h?'items-verified':undefined]['filter'](Boolean),j=i['length']>0x0?',\x20'+i['join'](',\x20'):'';return'AUTO-VERIFIED\x20ON-CHAIN:\x20this\x20order\x20DID\x20land\x20despite\x20the\x20error\x20above\x20—\x20order='+(b?.['order']??'?')+'\x20'+('(service\x20recent_orders\x20reverse\x20lookup'+j+').\x20ADOPT\x20this\x20order\x20object;\x20')+'resubmitting\x20the\x20same\x20call\x20would\x20escrow\x20a\x20SECOND\x20time.';}export function listInFlightMarkers(){return Array['from'](records['values']())['map'](a=>({...a,'digests':[...a['digests']]}));}export function recentReturnedDigests(a=0x14){return returnedDigests['slice'](-a)['reverse']();}export function recentLandedTombstones(){return recentLandedTombstone(),[...tombstones];}
@@ -1 +1 @@
1
- export function normalizeCompileInputs(a,b,c){const d=[],e=[];b['review_reward_pool']!==undefined&&b['reward_funding']===undefined&&(b={...b,'reward_funding':b['review_reward_pool']});{const f=a['fee_params'],g=f['campaign_deadline_ms']!==undefined,h=f['campaign_duration_days']!==undefined,i=b['campaign_duration_hours']!==undefined;if(g&&(h||i)){const j=w=>{if(w===undefined||w===null||w==='')return undefined;const x=typeof w==='number'?w:Number(w);return Number['isFinite'](x)?x:undefined;},l=j(b['campaign_deadline_ms']),m=j(b['campaign_duration_days']),o=j(b['campaign_duration_hours']),p=j(f['campaign_deadline_ms']),q=j(f['campaign_duration_days']),r=m!==undefined?m*0x5265c00:o!==undefined?o*0x36ee80:q!==undefined?q*0x5265c00:undefined,s=m!==undefined?'campaign_duration_days':o!==undefined?'campaign_duration_hours':'campaign_duration_days',t=m??o??q??0x0,u=l!==undefined&&l>0x0?l:p,v=m!==undefined||o!==undefined||u===undefined||u===0x0;if(c!==undefined&&r!==undefined&&r>0x0&&v){const w=Math['round'](c+r),x=m!==undefined?Math['round'](c+m*0x5265c00):undefined,y=o!==undefined?Math['round'](c+o*0x36ee80):undefined,z=[u!==undefined&&u>0x0?u:undefined,x,y]['filter'](A=>A!==undefined);new Set(z)['size']>0x1?d['push']({'code':'CAMPAIGN_DEADLINE_CONFLICT','detail':'the\x20campaign\x20answers\x20name\x20different\x20instants:\x20'+[m!==undefined?'campaign_duration_days\x20('+m+'\x20d\x20→\x20'+x+'\x20at\x20this\x20build\x20instant)':undefined,o!==undefined?'campaign_duration_hours\x20('+o+'\x20h\x20→\x20'+y+'\x20at\x20this\x20build\x20instant)':undefined,u!==undefined&&u>0x0?'campaign_deadline_ms\x20('+u+')':undefined]['filter'](Boolean)['join'](',\x20')+'.\x20ONE\x20campaign\x20has\x20ONE\x20deadline:\x20pass\x20ONE\x20length\x20(days\x20OR\x20hours)\x20or\x20the\x20absolute\x20timestamp,\x20and\x20drop\x20the\x20others\x20(0\x20=\x20unset\x20is\x20not\x20a\x20deadline).'}):(b={...b,'campaign_deadline_ms':w},e['push']({'param':'campaign_deadline_ms','from':s,'input':t,'value':w,'at_ms':c,'note':'converted\x20at\x20generation:\x20'+t+'\x20'+(s==='campaign_duration_hours'?'hour(s)':'day(s)')+'\x20after\x20the\x20build\x20instant\x20'+('('+new Date(c)['toISOString']()+')\x20became\x20the\x20ABSOLUTE\x20campaign\x20')+('deadline\x20epoch-ms\x20'+w+'\x20—\x20the\x20value\x20every\x20deadline\x20gate\x20and\x20the\x20pre-deadline\x20')+'withdrawal\x20window\x20now\x20read\x20on\x20chain'}));}}}{const A=a['fee_params'];for(const [B,C]of Object['entries'](b)){if(!/_days$/['test'](B)||B==='campaign_duration_days'||!(B in A))continue;const D=typeof C==='number'?C:typeof C==='string'&&C['trim']()!==''?Number(C):NaN;Number['isFinite'](D)&&!Number['isInteger'](D)&&d['push']({'code':'WINDOW_TRUNCATION_ZERO','detail':'input\x20\x27'+B+'\x27\x20=\x20'+String(C)+'\x20is\x20a\x20FRACTIONAL\x20day\x20count\x20—\x20the\x20knob\x20lands\x20in\x20a\x20guard-table\x20'+('U64\x20slot\x20as\x20a\x20DAY\x20COUNT,\x20which\x20BCS\x20truncates\x20to\x20'+String(Math['trunc'](D))+':\x20any\x20`<=`\x20closing\x20window\x20')+'it\x20feeds\x20computes\x20anchor\x20+\x200\x20and\x20welds\x20shut\x20the\x20instant\x20its\x20anchor\x20entry\x20lands\x20(Guards\x20are\x20'+'immutable\x20—\x20the\x20live\x20run\x20compiled\x20a\x200.002-day\x20test\x20window\x20into\x20a\x20permanently\x20closed\x20review\x20rail).\x20'+'Pass\x20whole\x20days,\x20or\x20express\x20sub-day\x20precision\x20as\x20a\x20millisecond\x20duration\x20in\x20a\x20'+'ms-denominated\x20slot\x20pair\x20(duration\x20in\x20ms\x20beside\x20ms_per_day\x20=\x201).'});}}return{'inputs':b,'derivedParams':e,'blockers':d};}export function applyConditionalSelectors(a,b){const d=[],e=new Set();for(const k of a['conditional_guards']??[]){const l=b[k['param']]??a['fee_params'][k['param']];if(l!==k['emit_value'])e['add'](k['guard_key']);}{const m=new Map();for(const n of a['conditional_guards']??[]){const o=m['get'](n['param']);if(o===undefined)m['set'](n['param'],new Set(n['values']??[]));else{for(const p of n['values']??[])o['add'](p);}}for(const [q,r]of m){if(r['size']===0x0)continue;const s=b[q];if(s===undefined||s===null||s==='')continue;const t=String(s);if(r['has'](t))continue;d['push']({'code':'SELECTOR_VALUE_UNKNOWN','detail':'build\x20input\x20\x27'+q+'\x27\x20=\x20\x27'+t+'\x27\x20is\x20outside\x20the\x20value\x20set\x20this\x20template\x20accepts\x20'+('('+[...r]['join']('\x20|\x20')+').\x20The\x20param\x20drives\x20a\x20conditional\x20guard\x20emission,\x20so\x20an\x20out-of-set\x20answer\x20')+'used\x20to\x20compile\x20the\x20DEFAULT\x20business\x20model\x20silently\x20instead\x20of\x20the\x20one\x20asked\x20for\x20—\x20on\x20the\x20'+'storefront_mode\x20/\x20deposit_exit_policy\x20families\x20that\x20means\x20a\x20public\x20storefront\x20or\x20a\x20refunded\x20deposit\x20'+'with\x20no\x20warning\x20at\x20all.\x20Answer\x20one\x20of\x20the\x20accepted\x20values,\x20or\x20drop\x20the\x20input\x20to\x20take\x20the\x20declared\x20'+('default\x20(\x27'+String(a['fee_params'][q]??'none')+'\x27).')});}}const f=new Map();for(const u of a['conditional_guards']??[]){f['set'](u['param'],(f['get'](u['param'])??0x0)+0x1);}const g=new Set((a['conditional_guards']??[])['filter'](w=>(f['get'](w['param'])??0x0)>0x1)['map'](w=>w['guard_key'])),h=new Set([...e]['filter'](w=>g['has'](w))),i=h['size']>0x0?a['machine_shape']['map'](w=>({...w,'from':(w['from']??[])['filter'](x=>typeof x==='string'||x['guard_key']===undefined||!h['has'](x['guard_key']))})):a['machine_shape'],j=h['size']>0x0?(a['allocator']['rows']??[])['filter'](w=>w['guard_key']===undefined||!h['has'](w['guard_key'])):a['allocator']['rows']??[];return{'dropKeys':e,'selectorDroppedKeys':h,'shape':i,'rows':j,'blockers':d};}
1
+ import{hasMsKnobBinding}from'../knowledge/fee-param-bindings.js';export function normalizeCompileInputs(a,b,c){const d=[],e=[];b['review_reward_pool']!==undefined&&b['reward_funding']===undefined&&(b={...b,'reward_funding':b['review_reward_pool']});{const f=a['fee_params'],g=f['campaign_deadline_ms']!==undefined,h=f['campaign_duration_days']!==undefined,i=b['campaign_duration_hours']!==undefined;if(g&&(h||i)){const j=w=>{if(w===undefined||w===null||w==='')return undefined;const x=typeof w==='number'?w:Number(w);return Number['isFinite'](x)?x:undefined;},l=j(b['campaign_deadline_ms']),m=j(b['campaign_duration_days']),o=j(b['campaign_duration_hours']),p=j(f['campaign_deadline_ms']),q=j(f['campaign_duration_days']),r=m!==undefined?m*0x5265c00:o!==undefined?o*0x36ee80:q!==undefined?q*0x5265c00:undefined,s=m!==undefined?'campaign_duration_days':o!==undefined?'campaign_duration_hours':'campaign_duration_days',t=m??o??q??0x0,u=l!==undefined&&l>0x0?l:p,v=m!==undefined||o!==undefined||u===undefined||u===0x0;if(c!==undefined&&r!==undefined&&r>0x0&&v){const w=Math['round'](c+r),x=m!==undefined?Math['round'](c+m*0x5265c00):undefined,y=o!==undefined?Math['round'](c+o*0x36ee80):undefined,z=[u!==undefined&&u>0x0?u:undefined,x,y]['filter'](A=>A!==undefined);new Set(z)['size']>0x1?d['push']({'code':'CAMPAIGN_DEADLINE_CONFLICT','detail':'the\x20campaign\x20answers\x20name\x20different\x20instants:\x20'+[m!==undefined?'campaign_duration_days\x20('+m+'\x20d\x20→\x20'+x+'\x20at\x20this\x20build\x20instant)':undefined,o!==undefined?'campaign_duration_hours\x20('+o+'\x20h\x20→\x20'+y+'\x20at\x20this\x20build\x20instant)':undefined,u!==undefined&&u>0x0?'campaign_deadline_ms\x20('+u+')':undefined]['filter'](Boolean)['join'](',\x20')+'.\x20ONE\x20campaign\x20has\x20ONE\x20deadline:\x20pass\x20ONE\x20length\x20(days\x20OR\x20hours)\x20or\x20the\x20absolute\x20timestamp,\x20and\x20drop\x20the\x20others\x20(0\x20=\x20unset\x20is\x20not\x20a\x20deadline).'}):(b={...b,'campaign_deadline_ms':w},e['push']({'param':'campaign_deadline_ms','from':s,'input':t,'value':w,'at_ms':c,'note':'converted\x20at\x20generation:\x20'+t+'\x20'+(s==='campaign_duration_hours'?'hour(s)':'day(s)')+'\x20after\x20the\x20build\x20instant\x20'+('('+new Date(c)['toISOString']()+')\x20became\x20the\x20ABSOLUTE\x20campaign\x20')+('deadline\x20epoch-ms\x20'+w+'\x20—\x20the\x20value\x20every\x20deadline\x20gate\x20and\x20the\x20pre-deadline\x20')+'withdrawal\x20window\x20now\x20read\x20on\x20chain'}));}}}{const A=a['fee_params'];for(const [B,C]of Object['entries'](b)){if(!/_days$/['test'](B)||B==='campaign_duration_days'||!(B in A))continue;const D=typeof C==='number'?C:typeof C==='string'&&C['trim']()!==''?Number(C):NaN;Number['isFinite'](D)&&!Number['isInteger'](D)&&d['push']({'code':'WINDOW_TRUNCATION_ZERO','detail':'input\x20\x27'+B+'\x27\x20=\x20'+String(C)+'\x20is\x20a\x20FRACTIONAL\x20day\x20count\x20—\x20the\x20knob\x20lands\x20in\x20a\x20guard-table\x20'+('U64\x20slot\x20as\x20a\x20DAY\x20COUNT,\x20which\x20BCS\x20truncates\x20to\x20'+String(Math['trunc'](D))+':\x20any\x20`<=`\x20closing\x20window\x20')+'it\x20feeds\x20computes\x20anchor\x20+\x200\x20and\x20welds\x20shut\x20the\x20instant\x20its\x20anchor\x20entry\x20lands\x20(Guards\x20are\x20'+'immutable\x20—\x20the\x20live\x20run\x20compiled\x20a\x200.002-day\x20test\x20window\x20into\x20a\x20permanently\x20closed\x20review\x20rail).\x20'+('Pass\x20whole\x20days,\x20or\x20answer\x20the\x20PARALLEL\x20\x27'+B['slice'](0x0,-'_days'['length'])+'_ms\x27\x20knob\x20instead\x20')+'(e.g.\x20review_window_ms:\x20600000\x20=\x20a\x2010-minute\x20window)\x20—\x20the\x20compiler\x20then\x20emits\x20the\x20'+'ms-denominated\x20slot\x20pair\x20(duration\x20in\x20ms\x20beside\x20a\x20day-factor\x20of\x201).'});}}{const E=a['fee_params'];for(const [F,G]of Object['entries'](b)){if(!/_ms$/['test'](F))continue;const H=F['slice'](0x0,-'_ms'['length'])+'_days';if(!(H in E))continue;if(typeof G==='number'&&!Number['isFinite'](G))continue;if(typeof G==='string'&&G['trim']()!==''&&!Number['isFinite'](Number(G)))continue;hasMsKnobBinding(a['id'],H)?b[H]!==undefined&&d['push']({'code':'WINDOW_UNIT_CONFLICT','detail':'inputs\x20answer\x20BOTH\x20spellings\x20of\x20one\x20window:\x20\x27'+H+'\x27\x20=\x20'+String(b[H])+'\x20AND\x20'+('\x27'+F+'\x27\x20=\x20'+String(G)+'\x20—\x20ONE\x20window\x20has\x20ONE\x20length,\x20and\x20silently\x20preferring\x20either\x20answer\x20')+('ships\x20a\x20clock\x20the\x20other\x20knob\x20was\x20supposed\x20to\x20move.\x20The\x20\x27'+F+'\x27\x20answer\x20REPLACES\x20the\x20day\x20')+'answer\x20(it\x20re-shapes\x20the\x20leg\x20into\x20the\x20ms\x20slot\x20pair:\x20duration_ms\x20beside\x20a\x20day-factor\x20of\x201);\x20'+'pass\x20ONE\x20of\x20the\x20two\x20and\x20drop\x20the\x20other.'}):d['push']({'code':'WINDOW_MS_UNSUPPORTED','detail':'input\x20\x27'+F+'\x27\x20=\x20'+String(G)+'\x20has\x20no\x20millisecond\x20landing:\x20the\x20\x27'+H+'\x27\x20window\x20on\x20'+('\x27'+a['id']+'\x27\x20resolves\x20to\x20a\x20days-shaped\x20guard\x20form\x20with\x20no\x20ms\x20twin\x20(a\x20multi-mount\x20')+'history\x20twin\x20or\x20a\x20hand-written\x20days\x20template),\x20so\x20the\x20value\x20would\x20compile\x20nowhere\x20while\x20'+('the\x20day\x20answer\x20silently\x20wins.\x20Drop\x20the\x20\x27'+F+'\x27\x20input\x20and\x20pass\x20whole\x20days,\x20or\x20resolve\x20the\x20')+'guard\x20explicitly\x20via\x20guard_resolutions\x20with\x20an\x20inline\x20ms-denominated\x20table.'});}}return{'inputs':b,'derivedParams':e,'blockers':d};}export function applyConditionalSelectors(a,b){const d=[],e=new Set();for(const k of a['conditional_guards']??[]){const l=b[k['param']]??a['fee_params'][k['param']];if(l!==k['emit_value'])e['add'](k['guard_key']);}{const m=new Map();for(const n of a['conditional_guards']??[]){const o=m['get'](n['param']);if(o===undefined)m['set'](n['param'],new Set(n['values']??[]));else{for(const p of n['values']??[])o['add'](p);}}for(const [q,r]of m){if(r['size']===0x0)continue;const s=b[q];if(s===undefined||s===null||s==='')continue;const t=String(s);if(r['has'](t))continue;d['push']({'code':'SELECTOR_VALUE_UNKNOWN','detail':'build\x20input\x20\x27'+q+'\x27\x20=\x20\x27'+t+'\x27\x20is\x20outside\x20the\x20value\x20set\x20this\x20template\x20accepts\x20'+('('+[...r]['join']('\x20|\x20')+').\x20The\x20param\x20drives\x20a\x20conditional\x20guard\x20emission,\x20so\x20an\x20out-of-set\x20answer\x20')+'used\x20to\x20compile\x20the\x20DEFAULT\x20business\x20model\x20silently\x20instead\x20of\x20the\x20one\x20asked\x20for\x20—\x20on\x20the\x20'+'storefront_mode\x20/\x20deposit_exit_policy\x20families\x20that\x20means\x20a\x20public\x20storefront\x20or\x20a\x20refunded\x20deposit\x20'+'with\x20no\x20warning\x20at\x20all.\x20Answer\x20one\x20of\x20the\x20accepted\x20values,\x20or\x20drop\x20the\x20input\x20to\x20take\x20the\x20declared\x20'+('default\x20(\x27'+String(a['fee_params'][q]??'none')+'\x27).')});}}const f=new Map();for(const u of a['conditional_guards']??[]){f['set'](u['param'],(f['get'](u['param'])??0x0)+0x1);}const g=new Set((a['conditional_guards']??[])['filter'](w=>(f['get'](w['param'])??0x0)>0x1)['map'](w=>w['guard_key'])),h=new Set([...e]['filter'](w=>g['has'](w))),i=h['size']>0x0?a['machine_shape']['map'](w=>({...w,'from':(w['from']??[])['filter'](x=>typeof x==='string'||x['guard_key']===undefined||!h['has'](x['guard_key']))})):a['machine_shape'],j=h['size']>0x0?(a['allocator']['rows']??[])['filter'](w=>w['guard_key']===undefined||!h['has'](w['guard_key'])):a['allocator']['rows']??[];return{'dropKeys':e,'selectorDroppedKeys':h,'shape':i,'rows':j,'blockers':d};}
@@ -17,10 +17,12 @@ export interface MaterializeIO {
17
17
  resolveLate?: LateResolver;
18
18
  read?: ObjectReader;
19
19
  env?: unknown;
20
+ envSignerRef?: string;
20
21
  envByAccount?: Record<string, unknown>;
21
22
  timeoutMs?: number;
22
23
  }
23
24
  export declare function handlerExecutor(env?: unknown): Executor;
25
+ export declare function truncateProseUtf8(value: string, maxBytes: number): string;
24
26
  export declare function adaptConfigureParams(method: string, params: unknown): unknown;
25
27
  export declare function adaptCreateData(step: CreateStep, resolved: Record<string, unknown>): Record<string, unknown>;
26
28
  export declare function preflightPlan(plan: Plan): {
@@ -1 +1 @@
1
- import{CREATABLE_OBJECTS,createsOf,isLate,isRef,resolveValue}from'./plan.js';import{auditPlan}from'./audit.js';import{normalizeGuardRowNames}from'./guard-fill.js';function deriveCreated(a){if(Array['isArray'](a['created']))return a['created'];const b=Array['isArray'](a['objectChanges'])?a['objectChanges']:[];return b['filter'](d=>d?.['type']==='created'&&typeof d?.['objectId']==='string')['map'](d=>({'object':d['objectId'],'type_raw':d['objectType']}));}export function handlerExecutor(a){return async(b,c)=>{const {handleOnchainOperations:d}=await import('../tools/handlers/onchain.js'),e=await d({'operation_type':b,'data':c,'env':a}),f=e['structuredContent']??{},g=f['result']!==undefined&&f['result']['data']!==undefined?f['result']:f,h=g['data']?.['result']??g['result']??g,i=g['outcome']??g['data']?.['outcome']??f['outcome']??f['status'];return{'outcome':i==='executed'||i==='success'?'executed':i==='pending_input'?'pending_input':'failed','digest':h['digest']??g['digest'],'created':deriveCreated(h),'error':h['error']??g['error']};};}function normalizeGuardTable(a,b){if(!Array['isArray'](a))return{'table':a,'description':b};return normalizeGuardRowNames(a,b,MAX_DESCRIPTION_CONTENT);}const MAX_DESCRIPTION_CONTENT=0xf9e,MAX_POLICY_DESCRIPTION_BYTES=0x1f4;function truncateToBytes(a,b){if(Buffer['byteLength'](a,'utf8')<=b)return a;let c=a;while(c['length']>0x0&&Buffer['byteLength'](c,'utf8')>b)c=c['slice'](0x0,-0x1);return c;}function truncateDescription(a){if(typeof a!=='string')return a;if(Buffer['byteLength'](a,'utf8')>MAX_DESCRIPTION_CONTENT)return truncateToBytes(a,MAX_DESCRIPTION_CONTENT-0x3)+'...';return a;}export function adaptConfigureParams(a,b){if(a==='pause'&&b!==null&&typeof b==='object'&&!Array['isArray'](b))return b['pause'];if(a==='guard_add'&&b!==null&&typeof b==='object'&&!Array['isArray'](b))return[b];if(a==='coin_add'&&b!==null&&typeof b==='object'&&!Array['isArray'](b)){const c=b,d=c['coin'];if(c['balance']===undefined&&(typeof d==='number'||typeof d==='string'&&/^[0-9]+$/['test'](d)))return{'balance':d};}if(a==='order_allocators'&&b!==null&&typeof b==='object'){const e=b,f=e['allocators'];if(Array['isArray'](f)){const g=f['map'](h=>{const i=h,j=i['sharing'];if(!Array['isArray'](j))return h;return{...i,'sharing':j['map'](k=>{const m=k,n=m['who'];if(n&&typeof n['Entity']==='string')return{...m,'who':{'Entity':{'name_or_address':n['Entity']}}};return k;})};});return{...e,'allocators':g};}}if(a==='sales'&&b!==null&&typeof b==='object'){const h=b,i=h['sales'];if(Array['isArray'](i)){const j=i['map'](k=>{if(!k||typeof k!=='object')return k;const l=k,m=l['stock']??l['quantity']??0x0;return{'suspension':![],'wip':'',...l,'stock':m};});return{...h,'sales':j};}}if(a==='policies'&&b!==null&&typeof b==='object'&&!Array['isArray'](b)){const k=b,l=k['policy'];if(Array['isArray'](l))return{...k,'policy':l['map'](m=>{if(!m||typeof m!=='object')return m;const n=m;return{...Array['isArray'](n['write_guard'])?null:{'write_guard':[]},...n,...typeof n['description']==='string'?{'description':truncateToBytes(n['description'],MAX_POLICY_DESCRIPTION_BYTES)}:{}};})};}return b;}export function adaptCreateData(a,b){const {name:c,permission:d,type_parameter:e,nodes:f,...g}=b;if(g['description']!==undefined)g['description']=truncateDescription(g['description']);switch(a['object']){case'service':case'arbitration':return{'object':{'name':c,'type_parameter':e,'permission':d},...g};case'machine':return{'object':{'name':c,...d!==undefined?{'permission':d}:{}},...g['description']!==undefined?{'description':g['description']}:{},'node':{'op':'add','nodes':f,'bReplace':!![]}};case'guard':{const h=normalizeGuardTable(b['table'],b['description']);return{...b,'description':truncateDescription(h['description']),'table':h['table']};}case'permission':case'contact':case'repository':default:{const i=g['policies'];return{'object':{'name':c,...d!==undefined?{'permission':d}:{}},...g,...a['object']==='repository'&&Array['isArray'](i)?{'policies':{'op':'set','policy':i['map'](j=>{if(!j||typeof j!=='object')return j;const k=j;return{...Array['isArray'](k['write_guard'])?null:{'write_guard':[]},...k,...typeof k['description']==='string'?{'description':truncateToBytes(k['description'],MAX_POLICY_DESCRIPTION_BYTES)}:{}};})}}:{}};}}}export function preflightPlan(a){const b=auditPlan(a),c=new Set(b['findings']['map'](g=>g['rule_id'])),d=c['has']('ARB-KEY-PLANE-01'),e=b['issues']['length']===0x0&&!b['findings']['some'](g=>g['level']==='critical')&&!d,f=a['steps']['map'](g=>{if(g['op']!=='publish')return g;const h=g['preflight']['map'](i=>{const j=i['check']['endsWith']('_publish')?e:!c['has'](i['check']);return{...i,'status':j?'pass':'fail'};});return{...g,'preflight':h};});return{'plan':{...a,'steps':f},'audit':b};}export function bindAuditPlan(a){const b=new Map();for(const h of a['steps']){if(h['op']!=='create')continue;const i=h['params']['name'];if(typeof i==='string'&&i['length']>0x0)b['set'](i,h['id']);}const c=new Set(a['external_refs']??[]),d=[],e=new Set(['value','Entity','name_or_address','objects','coin']),f=(j,k,l,m)=>{if(!e['has'](l))return;b['has'](m)&&d['push']({'step':j,'slot':k,'kind':'intra_plan_bare_name','value':m});},g=(j,k,l)=>{if(b['has'](l))d['push']({'step':j,'slot':k,'kind':'intra_plan_bare_name','value':l});else!c['has'](l)&&d['push']({'step':j,'slot':k,'kind':'undeclared_external','value':l});};for(const j of a['steps']){if(j['op']==='configure'){const m=j['target'];if(typeof m==='string')f(j['id'],'target','value',m);else{if(isLate(m)){const n=m['$late'];if(n['by']==='local_name')g(j['id'],'target',n['mark']);}}}if(j['op']==='publish')continue;const k=j['params'];if(typeof k==='string')f(j['id'],'params','value',k);const l=(o,p,r)=>{if(o===null||o===undefined)return;if(Array['isArray'](o)){o['forEach']((u,w)=>l(u,p,r+'['+String(w)+']'));return;}if(typeof o==='object'){if(isRef(o))return;if(isLate(o)){const u=o['$late'];if(u['by']==='local_name')g(j['id'],r,u['mark']);return;}for(const [w,x]of Object['entries'](o)){l(x,w,r==='params'?'params.'+w:r+'.'+w);}return;}if(typeof o==='string')f(j['id'],r,p,o);};l(k,'','params');}return d;}function retrievalFor(a){if(a==='service')return'stop\x20new\x20orders\x20first\x20(onchain_operations\x20data\x20key\x20\x27pause\x27),\x20then\x20take\x20the\x20fund\x20back\x20'+'(data\x20key\x20\x27compensation_fund_withdraw\x27,\x20owner\x20signer\x20—\x20the\x20pool\x20returns\x20to\x20the\x20owner)';if(a==='reward')return'drain\x20the\x20pool\x20(onchain_operations\x20data\x20key\x20\x27withdraw\x27,\x20owner\x20signer;\x20'+'confirm\x20the\x20pool\x20balance\x20first\x20—\x20a\x20short\x20pool\x20aborts\x20cleanly\x20without\x20paying)';return'holds\x20no\x20build-time\x20money;\x20create-frozen\x20—\x20it\x20cannot\x20be\x20deleted\x20or\x20unbound.\x20'+'Remove\x20its\x20LocalMark\x20name\x20(local_mark_operation)\x20so\x20later\x20runs\x20never\x20bind\x20it\x20by\x20name';}export function bindRecoveryList(a,b){const c=new Map(a['steps']['map'](g=>[g['id'],g])),d=new Map();for(const g of a['steps']){if(g['op']!=='configure')continue;if(g['method']!=='coin_add'&&g['method']!=='compensation_fund_add')continue;const h=g['target'],i=h!==null&&typeof h==='object'?h['$ref']:undefined,j=g['params']?.['balance'];typeof i==='string'&&(typeof j==='string'||typeof j==='number')&&d['set'](i,String(j));}const e=[],f=(k,l)=>{const m=c['get'](k),n=m?.['op']==='create'?m:undefined,o=n?.['object'],p=n?String(n['params']['name']??''):'',q=d['get'](k);e['push']({'step':k,...o!==undefined?{'kind':o}:{},...p?{'object':p}:{},...l?{'address':l}:{},...q!==undefined?{'funded':q}:{},...o!==undefined?{'retrieval':retrievalFor(o)}:{}});};if(b)for(const [k,l]of Object['entries'](b)){f(k,typeof l==='string'&&l['length']>0x0?l:undefined);}else{for(const m of a['steps'])if(m['op']==='create')f(m['id']);}return e;}function teardownPlan(a){if(a['length']===0x0)return'';const b=[],c=a['find'](d=>d['kind']==='service');c!==undefined&&b['push']('\x20\x201.\x20stop\x20new\x20orders:\x20onchain_operations\x20on\x20the\x20Service'+(c['address']?'\x20'+c['address']:'')+'\x20with\x20data\x20key\x20\x27pause\x27.','\x20\x202.\x20take\x20the\x20compensation\x20fund\x20back:\x20the\x20same\x20Service,\x20data\x20key\x20\x27compensation_fund_withdraw\x27\x20(owner\x20signer\x20—\x20the\x20pool\x20returns\x20to\x20the\x20owner;\x20real\x20money\x20only\x20if\x20the\x20money-in\x20step\x20ran\x20—\x20confirm\x20the\x20balance\x20first).');for(const d of a['filter'](e=>e['kind']==='reward')){b['push']('\x20\x20'+(b['length']+0x1)+'.\x20drain\x20the\x20reward\x20pool'+(d['address']?'\x20'+d['address']:'')+':\x20data\x20key\x20\x27withdraw\x27\x20(owner\x20signer;\x20confirm\x20the\x20pool\x20balance\x20first\x20—\x20a\x20short\x20pool\x20aborts\x20cleanly).');}return a['some'](e=>e['kind']!==undefined&&e['kind']!=='service'&&e['kind']!=='reward')&&b['push']('\x20\x20'+(b['length']+0x1)+'.\x20frozen\x20leftovers\x20(guards,\x20machine,\x20repositories)\x20cannot\x20be\x20deleted\x20or\x20unbound\x20—\x20they\x20stay\x20inert\x20on\x20chain;\x20remove\x20their\x20LocalMark\x20names\x20(local_mark_operation)\x20so\x20later\x20runs\x20never\x20bind\x20them\x20by\x20name.'),'\x0aTEARDOWN\x20PLAN\x20(abandon\x20this\x20run\x27s\x20store\x20—\x20execute\x20top\x20to\x20bottom):\x0a'+b['join']('\x0a');}export function bindAuditReport(a,b){const c=a['slice'](0x0,0xc)['map'](e=>'\x20\x20•\x20step\x20\x27'+e['step']+'\x27\x20'+e['slot']+'\x20->\x20\x27'+e['value']+'\x27\x20('+(e['kind']==='intra_plan_bare_name'?'names\x20an\x20object\x20THIS\x20plan\x20creates\x20—\x20must\x20be\x20{\x22$ref\x22:\x20\x22<create_step_id>\x22}':'undeclared\x20external\x20local_name\x20—\x20declare\x20it\x20in\x20plan.external_refs\x20or\x20bind\x20a\x20plan\x20ref')+')'),d=b['length']>0x0?b['map'](e=>{const f=e['object']!==undefined?(e['kind']??'object')+':\x20'+e['object']:e['kind']??'';return'\x20\x20•\x20'+e['step']+(f?'\x20('+f+')':'')+(e['address']!==undefined?'\x20@'+e['address']:'\x20—\x20no\x20address\x20recorded\x20—\x20find\x20the\x20object\x20by\x20its\x20name\x20(workspace/onchain_objects)\x20or\x20its\x20create\x20digest')+(e['funded']!==undefined?';\x20plan-funded\x20'+e['funded']+'\x20raw\x20(confirm\x20the\x20live\x20balance\x20before\x20relying\x20on\x20it)':'')+(e['retrieval']!==undefined?';\x20take\x20back:\x20'+e['retrieval']:'');})['join']('\x0a'):'\x20\x20•\x20(none\x20—\x20nothing\x20was\x20executed\x20in\x20this\x20run;\x20no\x20funds\x20or\x20objects\x20to\x20recover)';return'Offending\x20slots:\x0a'+c['join']('\x0a')+(a['length']>0xc?'\x0a\x20\x20…\x20+'+(a['length']-0xc)+'\x20more':'')+'\x0a'+('RECOVERY\x20LIST\x20(objects\x20already\x20created\x20by\x20this\x20run\x20—\x20id\x20+\x20digest/address\x20—\x20so\x20you\x20can\x20recover\x20funds/objects):\x0a'+d)+teardownPlan(b);}function stripGenerics(a){return a['replace'](/<.*>$/,'');}function matchCreated(a,b){const c=stripGenerics(b);return a['created']['find'](d=>{if(typeof d['type_raw']!=='string'||typeof d['object']!=='string')return![];return stripGenerics(d['type_raw'])['endsWith']('::'+c);})?.['object'];}const DEFAULT_LATE=a=>{if(a['by']==='address')return a['address'];throw new Error('unresolved\x20late\x20binding\x20(no\x20resolver\x20injected):\x20local_name\x20\x27'+a['mark']+'\x27');};export async function materializePlan(a,b,c){const {plan:d,audit:f}=preflightPlan(a),g=new Map(Object['entries'](c?.['outputs']??{})),h=new Set(c?.['completedSteps']??[]),i=[],j=b['resolveLate']??DEFAULT_LATE,k=new Map(d['steps']['filter'](t=>t['op']==='create')['map'](t=>[t['id'],t['object']])),l=s=>resolveValue(s,g,j),m=s=>{if(s['account']===undefined)return b['env'];const t=b['envByAccount']?.[s['account']];if(t===undefined)throw new Error('step\x20\x27'+s['id']+'\x27\x20declares\x20account\x20\x27'+s['account']+'\x27\x20but\x20no\x20env\x20was\x20provided\x20for\x20it\x20—\x20'+('re-run\x20plan_execute\x20with\x20accounts[\x22'+s['account']+'\x22]\x20(a\x20declared\x20account\x20never\x20falls\x20back\x20')+'to\x20the\x20default\x20signer:\x20the\x20controller\x20identity\x20is\x20the\x20point)');return t;};let n=![],o='halted\x20by\x20earlier\x20failure/blocked\x20publish';const p=b['timeoutMs']!==undefined&&b['timeoutMs']>0x0?Date['now']()+b['timeoutMs']:undefined;let q=![];for(const s of d['steps']){if(n){i['push']({'stepId':s['id'],'status':'blocked','error':o});continue;}if(h['has'](s['id'])){if(k['has'](s['id'])){const t=g['get'](s['id']);if(t===undefined){i['push']({'stepId':s['id'],'status':'failed','error':'resumed\x20create\x20step\x20has\x20no\x20recorded\x20output\x20—\x20pass\x20its\x20created\x20address\x20in\x20previous_outputs'}),n=!![];continue;}i['push']({'stepId':s['id'],'status':'executed','address':t,'error':'resumed\x20from\x20a\x20prior\x20run\x20(adopted,\x20not\x20re-executed)'});continue;}i['push']({'stepId':s['id'],'status':'executed','error':'resumed\x20from\x20a\x20prior\x20run\x20(adopted,\x20not\x20re-executed)'});continue;}if(p!==undefined&&Date['now']()>=p){q=!![],n=!![],o='time\x20budget\x20('+b['timeoutMs']+'ms)\x20exhausted\x20before\x20this\x20step\x20—\x20RESUME,\x20not\x20re-run:\x20send\x20plan_execute\x20again\x20with\x20completed_steps\x20=\x20every\x20stepId\x20whose\x20status\x20is\x20\x27executed\x27,\x20previous_outputs\x20=\x20outputs',i['push']({'stepId':s['id'],'status':'blocked','error':o});continue;}try{if(s['op']==='publish'){const y=s['preflight']['filter'](B=>B['status']==='fail');if(y['length']>0x0){i['push']({'stepId':s['id'],'status':'blocked','error':'preflight\x20failed:\x20'+y['map'](B=>B['check'])['join'](',\x20')+'\x20(refusing\x20to\x20publish\x20—\x20A-2)'});continue;}const z=l(s['target']),A=await b['execute'](k['get'](s['target']['$ref'])??'',{'object':z,'publish':!![]},m(s));if(A['outcome']!=='executed'){i['push']({'stepId':s['id'],'status':'failed',...A['digest']!==undefined?{'digest':A['digest']}:{},'error':A['error']??A['outcome']}),n=!![];continue;}i['push']({'stepId':s['id'],'status':'executed','digest':A['digest'],'address':z});continue;}const u=isRef(s['params'])?l(s['params']):Object['fromEntries'](Object['entries'](s['params'])['map'](([B,C])=>[B,l(C)]));if(s['op']==='create'){const B=adaptCreateData(s,u),C=await b['execute'](s['object'],B,m(s));if(C['outcome']!=='executed'){i['push']({'stepId':s['id'],'status':'failed',...C['digest']!==undefined?{'digest':C['digest']}:{},'error':C['error']??C['outcome']}),n=!![];continue;}const D=matchCreated(C,CREATABLE_OBJECTS[s['object']]);if(D===undefined){i['push']({'stepId':s['id'],'status':'failed',...C['digest']!==undefined?{'digest':C['digest']}:{},'error':'created\x20'+s['object']+'\x20not\x20found\x20in\x20transaction\x20result'}),n=!![];continue;}g['set'](s['id'],D),i['push']({'stepId':s['id'],'status':'executed','digest':C['digest'],'address':D});continue;}const v=l(s['target']),w=k['get'](isRef(s['target'])?s['target']['$ref']:'')??'';if(w===''){i['push']({'stepId':s['id'],'status':'failed','error':'PLAN_TARGET_REF_REQUIRED:\x20step\x20\x27'+s['id']+'\x27\x20target\x20does\x20not\x20trace\x20to\x20a\x20create\x20step\x20in\x20this\x20plan\x20—\x20'+'configure\x20targets\x20must\x20be\x20{\x22$ref\x22:\x20\x22<create_step_id>\x22}\x20(a\x20bare\x20name\x20binds\x20the\x20global\x20mark\x20namespace\x20across\x20runs,\x20W5-05)'}),n=!![];continue;}const x=await b['execute'](w,{'object':v,[s['method']]:adaptConfigureParams(s['method'],u)},m(s));if(x['outcome']!=='executed'){i['push']({'stepId':s['id'],'status':'failed',...x['digest']!==undefined?{'digest':x['digest']}:{},'error':x['error']??x['outcome']}),n=!![];continue;}i['push']({'stepId':s['id'],'status':'executed','digest':x['digest'],'address':v});}catch(E){const F=E?.['digest'];i['push']({'stepId':s['id'],'status':'failed',...typeof F==='string'&&F?{'digest':F}:{},'error':E instanceof Error?E['message']:String(E)}),n=!![];}}const r=await verifyMaterialization(d,g,b);return{'steps':i,'outputs':Object['fromEntries'](g),'completed':i['every'](G=>G['status']==='executed'),'budgetExhausted':q,'preflight':f,'readback':r};}function planAllocatorRows(a){const b=[],c=d=>{if(typeof d==='object'&&d!==null&&!Array['isArray'](d)){const e=d;if(Array['isArray'](e['allocators']))d=e['allocators'];}if(!Array['isArray'](d))return;for(const f of d){if(typeof f==='object'&&f!==null)b['push'](f);}};for(const d of a['steps']){if(d['op']==='create'&&d['object']==='service')c(d['params']['order_allocators']);if(d['op']==='configure'&&d['method']==='order_allocators')c(d['params']['allocators']);}return b;}export function conservationCheck(a){const b=planAllocatorRows(a);if(b['length']===0x0)return[{'name':'allocator_conservation','ok':![],'detail':'no\x20allocator\x20rows\x20(PLAN-ALLOC-01)'}];const c=[];return b['forEach']((d,e)=>{const f=d['track']??'settlement',g=typeof d['guard']==='object'&&d['guard']!==null?String(d['guard']['$ref']??JSON['stringify'](d['guard'])['slice'](0x0,0x28)):String(d['guard']??'?'),h='conservation:'+f+'['+e+']'+(g!=='?'?'('+g+')':''),i=(d['sharing']??[])['map'](l=>l['mode']);if(i['some'](l=>l==='Amount')){c['push']({'name':h,'ok':!![],'detail':'contains\x20Amount-mode\x20row(s)\x20—\x20fixed\x20payouts\x20are\x20not\x20statically\x20verifiable\x20against\x20the\x20escrow\x20total'});return;}let j=0x0;for(const l of d['sharing']??[]){if(l['mode']==='Rate'||l['mode']==='RateGross')j+=Number(l['sharing']??0x0);}const k=i['some'](n=>n==='Surplus');if(j>0x2710)c['push']({'name':h,'ok':![],'detail':'rate\x20sum\x20'+j+'\x20>\x2010000\x20—\x20row\x20pays\x20out\x20MORE\x20than\x20it\x20holds'});else j<0x2710&&!k?c['push']({'name':h,'ok':![],'detail':'rate\x20sum\x20'+j+'\x20<\x2010000\x20and\x20no\x20Surplus\x20row\x20—\x20the\x20remainder\x20has\x20no\x20fund\x20exit'}):c['push']({'name':h,'ok':!![],'detail':k?'rate\x20sum\x20'+j+'\x20+\x20Surplus\x20row\x20absorbs\x20the\x20remainder':'rate\x20sum\x20'+j+'\x20==\x2010000'});}),c;}async function verifyMaterialization(a,b,c){const d=[...conservationCheck(a)];if(c['read']!==undefined)for(const f of createsOf(a,'service')){const g=b['get'](f['id']);if(g===undefined)continue;try{const h=await c['read'](g,'service',c['env']);if(h===undefined||h===null){d['push']({'name':'readback:'+f['id'],'ok':![],'detail':'service\x20'+g+'\x20not\x20readable\x20after\x20creation'});continue;}const i=planAllocatorRows(a)['length'],j=h['order_allocators']?.['allocators']?.['length']??(Array['isArray'](h['order_allocators'])?h['order_allocators']['length']:undefined);j!==undefined&&d['push']({'name':'readback:'+f['id']+':allocators','ok':j>=i,'detail':'on-chain\x20allocator\x20rows\x20'+j+'\x20vs\x20plan\x20'+i});}catch(k){d['push']({'name':'readback:'+f['id'],'ok':![],'detail':k instanceof Error?k['message']:String(k)});}}return{'ok':d['every'](l=>l['ok']),'checks':d};}
1
+ import{CREATABLE_OBJECTS,createsOf,isLate,isRef,resolveValue}from'./plan.js';import{auditPlan}from'./audit.js';import{normalizeGuardRowNames}from'./guard-fill.js';import{dryRunGateKey,hasDryRunAudit,recordDryRunAudit}from'../tools/publish-gate-state.js';function deriveCreated(a){if(Array['isArray'](a['created']))return a['created'];const b=Array['isArray'](a['objectChanges'])?a['objectChanges']:[];return b['filter'](d=>d?.['type']==='created'&&typeof d?.['objectId']==='string')['map'](d=>({'object':d['objectId'],'type_raw':d['objectType']}));}export function handlerExecutor(a){return async(b,c,d)=>{const {handleOnchainOperations:e}=await import('../tools/handlers/onchain.js'),f=await e({'operation_type':b,'data':c,'env':d===undefined?a:d}),g=f['structuredContent']??{},h=g['result']!==undefined&&g['result']['data']!==undefined?g['result']:g,i=h['data']?.['result']??h['result']??h,j=h['outcome']??h['data']?.['outcome']??g['outcome']??g['status'];return{'outcome':j==='executed'||j==='success'?'executed':j==='pending_input'?'pending_input':'failed','digest':i['digest']??h['digest'],'created':deriveCreated(i),'error':i['error']??h['error']};};}function normalizeGuardTable(a,b){if(!Array['isArray'](a))return{'table':a,'description':b};return normalizeGuardRowNames(a,b,MAX_DESCRIPTION_CONTENT);}const MAX_DESCRIPTION_CONTENT=0xf9e,MAX_POLICY_DESCRIPTION_BYTES=0x1f4;export function truncateProseUtf8(a,b){if(Buffer['byteLength'](a,'utf8')<=b)return a;let c=0x0,d=a['length'];while(c<d){const i=c+d+0x1>>0x1;if(Buffer['byteLength'](a['slice'](0x0,i),'utf8')<=b)c=i;else d=i-0x1;}const e=a['slice'](0x0,c),f=Math['max'](0x1,Math['floor'](e['length']/0x2)),g=Math['max'](e['lastIndexOf']('。'),e['lastIndexOf']('.'),e['lastIndexOf']('.'),e['lastIndexOf']('!'),e['lastIndexOf']('!'),e['lastIndexOf']('?'),e['lastIndexOf']('?'),e['lastIndexOf'](';'),e['lastIndexOf'](';'));if(g+0x1>=f)return e['slice'](0x0,g+0x1)['trimEnd']();const h=e['lastIndexOf']('\x20');if(h+0x1>=f)return e['slice'](0x0,h)['trimEnd']();return e['trimEnd']();}function truncateToBytes(a,b){return truncateProseUtf8(a,b);}function truncateDescription(a){if(typeof a!=='string')return a;if(Buffer['byteLength'](a,'utf8')>MAX_DESCRIPTION_CONTENT)return truncateToBytes(a,MAX_DESCRIPTION_CONTENT-0x3)+'...';return a;}export function adaptConfigureParams(a,b){if(a==='pause'&&b!==null&&typeof b==='object'&&!Array['isArray'](b))return b['pause'];if(a==='guard_add'&&b!==null&&typeof b==='object'&&!Array['isArray'](b))return[b];if(a==='coin_add'&&b!==null&&typeof b==='object'&&!Array['isArray'](b)){const c=b,d=c['coin'];if(c['balance']===undefined&&(typeof d==='number'||typeof d==='string'&&/^[0-9]+$/['test'](d)))return{'balance':d};}if(a==='order_allocators'&&b!==null&&typeof b==='object'){const e=b,f=e['allocators'];if(Array['isArray'](f)){const g=f['map'](h=>{const i=h,j=i['sharing'];if(!Array['isArray'](j))return h;return{...i,'sharing':j['map'](k=>{const m=k,n=m['who'];if(n&&typeof n['Entity']==='string')return{...m,'who':{'Entity':{'name_or_address':n['Entity']}}};return k;})};});return{...e,'allocators':g};}}if(a==='sales'&&b!==null&&typeof b==='object'){const h=b,i=h['sales'];if(Array['isArray'](i)){const j=i['map'](k=>{if(!k||typeof k!=='object')return k;const l=k,m=l['stock']??l['quantity']??0x0;return{'suspension':![],'wip':'',...l,'stock':m};});return{...h,'sales':j};}}if(a==='policies'&&b!==null&&typeof b==='object'&&!Array['isArray'](b)){const k=b,l=k['policy'];if(Array['isArray'](l))return{...k,'policy':l['map'](m=>{if(!m||typeof m!=='object')return m;const n=m;return{...Array['isArray'](n['write_guard'])?null:{'write_guard':[]},...n,...typeof n['description']==='string'?{'description':truncateToBytes(n['description'],MAX_POLICY_DESCRIPTION_BYTES)}:{}};})};}return b;}export function adaptCreateData(a,b){const {name:c,permission:d,type_parameter:e,nodes:f,...g}=b;if(g['description']!==undefined)g['description']=truncateDescription(g['description']);switch(a['object']){case'service':case'arbitration':return{'object':{'name':c,'type_parameter':e,'permission':d},...g};case'machine':return{'object':{'name':c,...d!==undefined?{'permission':d}:{}},...g['description']!==undefined?{'description':g['description']}:{},'node':{'op':'add','nodes':f,'bReplace':!![]}};case'guard':{const h=normalizeGuardTable(b['table'],b['description']);return{...b,'description':truncateDescription(h['description']),'table':h['table']};}case'permission':case'contact':case'repository':default:{const i=g['policies'];return{'object':{'name':c,...d!==undefined?{'permission':d}:{}},...g,...a['object']==='repository'&&Array['isArray'](i)?{'policies':{'op':'set','policy':i['map'](j=>{if(!j||typeof j!=='object')return j;const k=j;return{...Array['isArray'](k['write_guard'])?null:{'write_guard':[]},...k,...typeof k['description']==='string'?{'description':truncateToBytes(k['description'],MAX_POLICY_DESCRIPTION_BYTES)}:{}};})}}:{}};}}}export function preflightPlan(a){const b=auditPlan(a),c=new Set(b['findings']['map'](g=>g['rule_id'])),d=c['has']('ARB-KEY-PLANE-01'),e=b['issues']['length']===0x0&&!b['findings']['some'](g=>g['level']==='critical')&&!d,f=a['steps']['map'](g=>{if(g['op']!=='publish')return g;const h=g['preflight']['map'](i=>{const j=i['check']['endsWith']('_publish')?e:!c['has'](i['check']);return{...i,'status':j?'pass':'fail'};});return{...g,'preflight':h};});return{'plan':{...a,'steps':f},'audit':b};}export function bindAuditPlan(a){const b=new Map();for(const h of a['steps']){if(h['op']!=='create')continue;const i=h['params']['name'];if(typeof i==='string'&&i['length']>0x0)b['set'](i,h['id']);}const c=new Set(a['external_refs']??[]),d=[],e=new Set(['value','Entity','name_or_address','objects','coin']),f=(j,k,l,m)=>{if(!e['has'](l))return;b['has'](m)&&d['push']({'step':j,'slot':k,'kind':'intra_plan_bare_name','value':m});},g=(j,k,l)=>{if(b['has'](l))d['push']({'step':j,'slot':k,'kind':'intra_plan_bare_name','value':l});else!c['has'](l)&&d['push']({'step':j,'slot':k,'kind':'undeclared_external','value':l});};for(const j of a['steps']){if(j['op']==='configure'){const m=j['target'];if(typeof m==='string')f(j['id'],'target','value',m);else{if(isLate(m)){const n=m['$late'];if(n['by']==='local_name')g(j['id'],'target',n['mark']);}}}if(j['op']==='publish')continue;const k=j['params'];if(typeof k==='string')f(j['id'],'params','value',k);const l=(o,p,r)=>{if(o===null||o===undefined)return;if(Array['isArray'](o)){o['forEach']((u,w)=>l(u,p,r+'['+String(w)+']'));return;}if(typeof o==='object'){if(isRef(o))return;if(isLate(o)){const u=o['$late'];if(u['by']==='local_name')g(j['id'],r,u['mark']);return;}for(const [w,x]of Object['entries'](o)){l(x,w,r==='params'?'params.'+w:r+'.'+w);}return;}if(typeof o==='string')f(j['id'],r,p,o);};l(k,'','params');}return d;}function retrievalFor(a){if(a==='service')return'stop\x20new\x20orders\x20first\x20(onchain_operations\x20data\x20key\x20\x27pause\x27),\x20then\x20take\x20the\x20fund\x20back\x20'+'(data\x20key\x20\x27compensation_fund_withdraw\x27,\x20owner\x20signer\x20—\x20the\x20pool\x20returns\x20to\x20the\x20owner)';if(a==='arb'||a==='arbitration')return'withdraw\x20arbitration\x20fees\x20(onchain_operations\x20data\x20key\x20\x27arb_withdraw\x27,\x20arbitrator\x20signer):\x20from\x20state\x205\x20'+'(Finished)\x20immediately;\x20from\x20state\x203\x20(ruled,\x20objection\x20window\x20open)\x20ONLY\x2030\x20days\x20after\x20the\x20ruling\x20—\x20'+'before\x20expiry\x20the\x20object\x20is\x20locked\x20until\x20<ruling_time\x20+\x2030\x20days>\x20and\x20teardown\x20is\x20refused;\x20from\x20state\x204\x20'+'(objectionable)\x20NEVER.\x20Then\x20cash\x20out\x20via\x20the\x20arb\x20fees_transfer\x20chain\x20(arb\x20→\x20recipient\x20→\x20LocalMark\x20→\x20WOW)';if(a==='permission')return'holds\x20no\x20build-time\x20money\x20—\x20a\x20Permission\x20carries\x20no\x20recoverable\x20funds;\x20a\x20frozen\x20one\x20only\x20leaves\x20'+'LocalMark\x20name\x20clutter\x20(same\x20advice\x20as\x20frozen\x20leftovers)';if(a==='reward')return'drain\x20the\x20pool\x20(onchain_operations\x20data\x20key\x20\x27withdraw\x27,\x20owner\x20signer;\x20'+'confirm\x20the\x20pool\x20balance\x20first\x20—\x20a\x20short\x20pool\x20aborts\x20cleanly\x20without\x20paying)';return'holds\x20no\x20build-time\x20money;\x20create-frozen\x20—\x20it\x20cannot\x20be\x20deleted\x20or\x20unbound.\x20'+'Remove\x20its\x20LocalMark\x20name\x20(local_mark_operation)\x20so\x20later\x20runs\x20never\x20bind\x20it\x20by\x20name';}export function bindRecoveryList(a,b){const c=new Map(a['steps']['map'](g=>[g['id'],g])),d=new Map();for(const g of a['steps']){if(g['op']!=='configure')continue;if(g['method']!=='coin_add'&&g['method']!=='compensation_fund_add')continue;const h=g['target'],i=h!==null&&typeof h==='object'?h['$ref']:undefined,j=g['params']?.['balance'];typeof i==='string'&&(typeof j==='string'||typeof j==='number')&&d['set'](i,String(j));}const e=[],f=(k,l)=>{const m=c['get'](k),n=m?.['op']==='create'?m:undefined,o=n?.['object'],p=n?String(n['params']['name']??''):'',q=d['get'](k);e['push']({'step':k,...o!==undefined?{'kind':o}:{},...p?{'object':p}:{},...l?{'address':l}:{},...q!==undefined?{'funded':q}:{},...o!==undefined?{'retrieval':retrievalFor(o)}:{}});};if(b)for(const [k,l]of Object['entries'](b)){f(k,typeof l==='string'&&l['length']>0x0?l:undefined);}else{for(const m of a['steps'])if(m['op']==='create')f(m['id']);}return e;}function teardownPlan(a){if(a['length']===0x0)return'';const b=[],c=a['find'](d=>d['kind']==='service');c!==undefined&&b['push']('\x20\x201.\x20stop\x20new\x20orders:\x20onchain_operations\x20on\x20the\x20Service'+(c['address']?'\x20'+c['address']:'')+'\x20with\x20data\x20key\x20\x27pause\x27.','\x20\x202.\x20take\x20the\x20compensation\x20fund\x20back:\x20the\x20same\x20Service,\x20data\x20key\x20\x27compensation_fund_withdraw\x27\x20(owner\x20signer\x20—\x20the\x20pool\x20returns\x20to\x20the\x20owner;\x20real\x20money\x20only\x20if\x20the\x20money-in\x20step\x20ran\x20—\x20confirm\x20the\x20balance\x20first).');for(const d of a['filter'](e=>e['kind']==='reward')){b['push']('\x20\x20'+(b['length']+0x1)+'.\x20drain\x20the\x20reward\x20pool'+(d['address']?'\x20'+d['address']:'')+':\x20data\x20key\x20\x27withdraw\x27\x20(owner\x20signer;\x20confirm\x20the\x20pool\x20balance\x20first\x20—\x20a\x20short\x20pool\x20aborts\x20cleanly).');}for(const e of a['filter'](f=>f['kind']==='arb'||f['kind']==='arbitration')){b['push']('\x20\x20'+(b['length']+0x1)+'.\x20arbitration\x20fees'+(e['address']?'\x20on\x20'+e['address']:'')+':\x20data\x20key\x20\x27arb_withdraw\x27\x20(arbitrator\x20signer)\x20—\x20IF\x20the\x20arb\x20is\x20in\x20state\x205\x20(Finished)\x20withdraw\x20immediately;\x20IF\x20it\x20sits\x20in\x20state\x203\x20(ruled,\x20objection\x20window\x20open)\x20it\x20is\x20locked\x20until\x20<ruling_time\x20+\x2030\x20days>\x20—\x20teardown\x20refused\x20until\x20that\x20date,\x20then\x20retry;\x20state\x204\x20(objectionable)\x20can\x20NEVER\x20withdraw.');}return a['some'](f=>f['kind']!==undefined&&f['kind']!=='service'&&f['kind']!=='reward')&&b['push']('\x20\x20'+(b['length']+0x1)+'.\x20frozen\x20leftovers\x20(guards,\x20machine,\x20repositories)\x20cannot\x20be\x20deleted\x20or\x20unbound\x20—\x20they\x20stay\x20inert\x20on\x20chain;\x20remove\x20their\x20LocalMark\x20names\x20(local_mark_operation)\x20so\x20later\x20runs\x20never\x20bind\x20them\x20by\x20name.'),'\x0aTEARDOWN\x20PLAN\x20(abandon\x20this\x20run\x27s\x20store\x20—\x20execute\x20top\x20to\x20bottom):\x0a'+b['join']('\x0a');}export function bindAuditReport(a,b){const c=a['slice'](0x0,0xc)['map'](e=>'\x20\x20•\x20step\x20\x27'+e['step']+'\x27\x20'+e['slot']+'\x20->\x20\x27'+e['value']+'\x27\x20('+(e['kind']==='intra_plan_bare_name'?'names\x20an\x20object\x20THIS\x20plan\x20creates\x20—\x20must\x20be\x20{\x22$ref\x22:\x20\x22<create_step_id>\x22}':'undeclared\x20external\x20local_name\x20—\x20declare\x20it\x20in\x20plan.external_refs\x20or\x20bind\x20a\x20plan\x20ref')+')'),d=b['length']>0x0?b['map'](e=>{const f=e['object']!==undefined?(e['kind']??'object')+':\x20'+e['object']:e['kind']??'';return'\x20\x20•\x20'+e['step']+(f?'\x20('+f+')':'')+(e['address']!==undefined?'\x20@'+e['address']:'\x20—\x20no\x20address\x20recorded\x20—\x20find\x20the\x20object\x20by\x20its\x20name\x20(workspace/onchain_objects)\x20or\x20its\x20create\x20digest')+(e['funded']!==undefined?';\x20plan-funded\x20'+e['funded']+'\x20raw\x20(confirm\x20the\x20live\x20balance\x20before\x20relying\x20on\x20it)':'')+(e['retrieval']!==undefined?';\x20take\x20back:\x20'+e['retrieval']:'');})['join']('\x0a'):'\x20\x20•\x20(none\x20—\x20nothing\x20was\x20executed\x20in\x20this\x20run;\x20no\x20funds\x20or\x20objects\x20to\x20recover)';return'Offending\x20slots:\x0a'+c['join']('\x0a')+(a['length']>0xc?'\x0a\x20\x20…\x20+'+(a['length']-0xc)+'\x20more':'')+'\x0a'+('RECOVERY\x20LIST\x20(objects\x20already\x20created\x20by\x20this\x20run\x20—\x20id\x20+\x20digest/address\x20—\x20so\x20you\x20can\x20recover\x20funds/objects):\x0a'+d)+teardownPlan(b);}function stripGenerics(a){return a['replace'](/<.*>$/,'');}function matchCreated(a,b){const c=stripGenerics(b);return a['created']['find'](d=>{if(typeof d['type_raw']!=='string'||typeof d['object']!=='string')return![];return stripGenerics(d['type_raw'])['endsWith']('::'+c);})?.['object'];}const DEFAULT_LATE=a=>{if(a['by']==='address'){if(typeof a['address']!=='string'||a['address']['length']===0x0)throw new Error('unresolved\x20late\x20binding\x20{$late:{by:\x27address\x27}}\x20resolved\x20to\x20an\x20EMPTY\x20value\x20—\x20an\x20empty\x20Entity/name\x20slot\x20makes\x20the\x20SDK\x20substitute\x20the\x20deployer\x27s\x20own\x20account\x20(cour\x20ENTITY-LATENAME),\x20so\x20this\x20is\x20a\x20hard\x20stop;\x20bind\x20a\x20real\x20address');return a['address'];}if(a['by']==='env_signer')throw new Error('unresolved\x20late\x20binding\x20{$late:{by:\x27env_signer\x27}}\x20(no\x20envSignerRef\x20injected)\x20—\x20pass\x20env.account\x20(the\x20default\x20signing\x20account)\x20to\x20plan_execute');if(typeof a['mark']!=='string'||a['mark']['length']===0x0)throw new Error('unresolved\x20late\x20binding\x20{$late:{by:\x27local_name\x27}}\x20with\x20an\x20EMPTY\x20mark\x20—\x20an\x20empty\x20Entity/name\x20slot\x20makes\x20the\x20SDK\x20substitute\x20the\x20deployer\x27s\x20own\x20account\x20(cour\x20ENTITY-LATENAME),\x20so\x20this\x20is\x20a\x20hard\x20stop;\x20declare\x20and\x20register\x20the\x20LocalMark\x20name\x20first');throw new Error('unresolved\x20late\x20binding\x20(no\x20resolver\x20injected):\x20local_name\x20\x27'+a['mark']+'\x27');};export async function materializePlan(a,b,c){const {plan:d,audit:f}=preflightPlan(a),g=new Map(Object['entries'](c?.['outputs']??{})),h=new Set(c?.['completedSteps']??[]),i=[],j=b['resolveLate']??DEFAULT_LATE,k=t=>{if(t['by']==='env_signer'){if(typeof b['envSignerRef']==='string'&&b['envSignerRef']['length']>0x0)return b['envSignerRef'];throw new Error('step\x20carries\x20{$late:{by:\x27env_signer\x27}}\x20but\x20no\x20default\x20account\x20was\x20provided\x20—\x20pass\x20env.account\x20to\x20plan_execute');}const u=j(t);if(typeof u!=='string'||u['length']===0x0)throw new Error('unresolved\x20late\x20binding\x20{$late:'+JSON['stringify'](t)+'}\x20resolved\x20to\x20an\x20EMPTY\x20value\x20—\x20an\x20empty\x20Entity/name\x20slot\x20makes\x20the\x20SDK\x20substitute\x20the\x20deployer\x27s\x20own\x20account\x20(cour\x20ENTITY-LATENAME);\x20fail-closed,\x20register/bind\x20the\x20value\x20first');return u;},l=new Map(d['steps']['filter'](t=>t['op']==='create')['map'](t=>[t['id'],t['object']])),m=t=>resolveValue(t,g,k),n=t=>{if(t['account']===undefined)return b['env'];const u=b['envByAccount']?.[t['account']];if(u===undefined)throw new Error('step\x20\x27'+t['id']+'\x27\x20declares\x20account\x20\x27'+t['account']+'\x27\x20but\x20no\x20env\x20was\x20provided\x20for\x20it\x20—\x20'+('re-run\x20plan_execute\x20with\x20accounts[\x22'+t['account']+'\x22]\x20(a\x20declared\x20account\x20never\x20falls\x20back\x20')+'to\x20the\x20default\x20signer:\x20the\x20controller\x20identity\x20is\x20the\x20point)');return u;};let o=![],p='halted\x20by\x20earlier\x20failure/blocked\x20publish';const q=b['timeoutMs']!==undefined&&b['timeoutMs']>0x0?Date['now']()+b['timeoutMs']:undefined;let r=![];for(const t of d['steps']){if(o){i['push']({'stepId':t['id'],'status':'blocked','error':p});continue;}if(h['has'](t['id'])){if(l['has'](t['id'])){const u=g['get'](t['id']);if(u===undefined){i['push']({'stepId':t['id'],'status':'failed','error':'resumed\x20create\x20step\x20has\x20no\x20recorded\x20output\x20—\x20pass\x20its\x20created\x20address\x20in\x20previous_outputs'}),o=!![];continue;}i['push']({'stepId':t['id'],'status':'executed','address':u,'error':'resumed\x20from\x20a\x20prior\x20run\x20(adopted,\x20not\x20re-executed)'});continue;}i['push']({'stepId':t['id'],'status':'executed','error':'resumed\x20from\x20a\x20prior\x20run\x20(adopted,\x20not\x20re-executed)'});continue;}if(q!==undefined&&Date['now']()>=q){r=!![],o=!![],p='time\x20budget\x20('+b['timeoutMs']+'ms)\x20exhausted\x20before\x20this\x20step\x20—\x20RESUME,\x20not\x20re-run:\x20send\x20plan_execute\x20again\x20with\x20completed_steps\x20=\x20every\x20stepId\x20whose\x20status\x20is\x20\x27executed\x27,\x20previous_outputs\x20=\x20outputs',i['push']({'stepId':t['id'],'status':'blocked','error':p});continue;}try{if(t['op']==='publish'){const z=t['preflight']['filter'](H=>H['status']==='fail');if(z['length']>0x0){i['push']({'stepId':t['id'],'status':'blocked','error':'preflight\x20failed:\x20'+z['map'](H=>H['check'])['join'](',\x20')+'\x20(refusing\x20to\x20publish\x20—\x20A-2)'});continue;}const A=m(t['target']),B=l['get'](t['target']['$ref'])??'',C={'object':A,'publish':!![]},D=n(t),E=D?.['dry_run']===!![];let F;if(!E&&!hasDryRunAudit(dryRunGateKey('onchain_operations',{'operation_type':B,'data':C}))){const H=await b['execute'](B,C,{...D,'dry_run':!![]});if(H['outcome']!=='executed'){i['push']({'stepId':t['id'],'status':'blocked','error':'AUTO\x20DRY-RUN\x20PRESTEP\x20(ruling\x202026-11-04):\x20the\x20dry_run:true\x20simulation\x20of\x20THIS\x20'+'publish\x20payload\x20FAILED\x20—\x20the\x20formal\x20publish\x20is\x20BLOCKED,\x20never\x20broadcast.\x20'+('Dry-run\x20diagnostics:\x20'+(H['error']??H['outcome']))}),o=!![];continue;}recordDryRunAudit(dryRunGateKey('onchain_operations',{'operation_type':B,'data':C})),F='AUTO\x20DRY-RUN\x20PRESTEP\x20(ruling\x202026-11-04):\x20the\x20dry_run:true\x20simulation\x20of\x20THIS\x20exact\x20payload\x20PASSED\x20and\x20registered\x20the\x20session\x20ledger;\x20the\x20formal\x20face\x20follows.';}const G=await b['execute'](B,C,D);if(G['outcome']!=='executed'){i['push']({'stepId':t['id'],'status':'failed',...G['digest']!==undefined?{'digest':G['digest']}:{},'error':G['error']??G['outcome']}),o=!![];continue;}i['push']({'stepId':t['id'],'status':'executed','digest':G['digest'],'address':A,...F!==undefined?{'error':F}:{}});continue;}const v=isRef(t['params'])?m(t['params']):Object['fromEntries'](Object['entries'](t['params'])['map'](([I,J])=>[I,m(J)]));if(t['op']==='create'){const I=adaptCreateData(t,v),J=await b['execute'](t['object'],I,n(t));if(J['outcome']!=='executed'){i['push']({'stepId':t['id'],'status':'failed',...J['digest']!==undefined?{'digest':J['digest']}:{},'error':J['error']??J['outcome']}),o=!![];continue;}const K=matchCreated(J,CREATABLE_OBJECTS[t['object']]);if(K===undefined){i['push']({'stepId':t['id'],'status':'failed',...J['digest']!==undefined?{'digest':J['digest']}:{},'error':'created\x20'+t['object']+'\x20not\x20found\x20in\x20transaction\x20result'}),o=!![];continue;}g['set'](t['id'],K),i['push']({'stepId':t['id'],'status':'executed','digest':J['digest'],'address':K});continue;}const w=m(t['target']),x=l['get'](isRef(t['target'])?t['target']['$ref']:'')??'';if(x===''){i['push']({'stepId':t['id'],'status':'failed','error':'PLAN_TARGET_REF_REQUIRED:\x20step\x20\x27'+t['id']+'\x27\x20target\x20does\x20not\x20trace\x20to\x20a\x20create\x20step\x20in\x20this\x20plan\x20—\x20'+'configure\x20targets\x20must\x20be\x20{\x22$ref\x22:\x20\x22<create_step_id>\x22}\x20(a\x20bare\x20name\x20binds\x20the\x20global\x20mark\x20namespace\x20across\x20runs,\x20W5-05)'}),o=!![];continue;}const y=await b['execute'](x,{'object':w,[t['method']]:adaptConfigureParams(t['method'],v)},n(t));if(y['outcome']!=='executed'){i['push']({'stepId':t['id'],'status':'failed',...y['digest']!==undefined?{'digest':y['digest']}:{},'error':y['error']??y['outcome']}),o=!![];continue;}i['push']({'stepId':t['id'],'status':'executed','digest':y['digest'],'address':w});}catch(L){const M=L?.['digest'];i['push']({'stepId':t['id'],'status':'failed',...typeof M==='string'&&M?{'digest':M}:{},'error':L instanceof Error?L['message']:String(L)}),o=!![];}}const s=await verifyMaterialization(d,g,b);return{'steps':i,'outputs':Object['fromEntries'](g),'completed':i['every'](N=>N['status']==='executed'),'budgetExhausted':r,'preflight':f,'readback':s};}function planAllocatorRows(a){const b=[],c=d=>{if(typeof d==='object'&&d!==null&&!Array['isArray'](d)){const e=d;if(Array['isArray'](e['allocators']))d=e['allocators'];}if(!Array['isArray'](d))return;for(const f of d){if(typeof f==='object'&&f!==null)b['push'](f);}};for(const d of a['steps']){if(d['op']==='create'&&d['object']==='service')c(d['params']['order_allocators']);if(d['op']==='configure'&&d['method']==='order_allocators')c(d['params']['allocators']);}return b;}export function conservationCheck(a){const b=planAllocatorRows(a);if(b['length']===0x0)return[{'name':'allocator_conservation','ok':![],'detail':'no\x20allocator\x20rows\x20(PLAN-ALLOC-01)'}];const c=[];return b['forEach']((d,e)=>{const f=d['track']??'settlement',g=typeof d['guard']==='object'&&d['guard']!==null?String(d['guard']['$ref']??JSON['stringify'](d['guard'])['slice'](0x0,0x28)):String(d['guard']??'?'),h='conservation:'+f+'['+e+']'+(g!=='?'?'('+g+')':''),i=(d['sharing']??[])['map'](l=>l['mode']);if(i['some'](l=>l==='Amount')){c['push']({'name':h,'ok':!![],'detail':'contains\x20Amount-mode\x20row(s)\x20—\x20fixed\x20payouts\x20are\x20not\x20statically\x20verifiable\x20against\x20the\x20escrow\x20total'});return;}let j=0x0;for(const l of d['sharing']??[]){if(l['mode']==='Rate'||l['mode']==='RateGross')j+=Number(l['sharing']??0x0);}const k=i['some'](n=>n==='Surplus');if(j>0x2710)c['push']({'name':h,'ok':![],'detail':'rate\x20sum\x20'+j+'\x20>\x2010000\x20—\x20row\x20pays\x20out\x20MORE\x20than\x20it\x20holds'});else j<0x2710&&!k?c['push']({'name':h,'ok':![],'detail':'rate\x20sum\x20'+j+'\x20<\x2010000\x20and\x20no\x20Surplus\x20row\x20—\x20the\x20remainder\x20has\x20no\x20fund\x20exit'}):c['push']({'name':h,'ok':!![],'detail':k?'rate\x20sum\x20'+j+'\x20+\x20Surplus\x20row\x20absorbs\x20the\x20remainder':'rate\x20sum\x20'+j+'\x20==\x2010000'});}),c;}async function verifyMaterialization(a,b,c){const d=[...conservationCheck(a)];if(c['read']!==undefined)for(const f of createsOf(a,'service')){const g=b['get'](f['id']);if(g===undefined)continue;try{const h=await c['read'](g,'service',c['env']);if(h===undefined||h===null){d['push']({'name':'readback:'+f['id'],'ok':![],'detail':'service\x20'+g+'\x20not\x20readable\x20after\x20creation'});continue;}const i=planAllocatorRows(a)['length'],j=h['order_allocators']?.['allocators']?.['length']??(Array['isArray'](h['order_allocators'])?h['order_allocators']['length']:undefined);j!==undefined&&d['push']({'name':'readback:'+f['id']+':allocators','ok':j>=i,'detail':'on-chain\x20allocator\x20rows\x20'+j+'\x20vs\x20plan\x20'+i});}catch(k){d['push']({'name':'readback:'+f['id'],'ok':![],'detail':k instanceof Error?k['message']:String(k)});}}return{'ok':d['every'](l=>l['ok']),'checks':d};}