@wowok/agent-mcp 3.4.0 → 3.4.1

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 (405) hide show
  1. package/README.md +8 -0
  2. package/dist/chain-semantics/composition-truth.d.ts +102 -0
  3. package/dist/chain-semantics/composition-truth.js +1 -0
  4. package/dist/chain-semantics/eval-order.js +1 -1
  5. package/dist/chain-semantics/fund-flow.js +1 -1
  6. package/dist/chain-semantics/index.d.ts +1 -0
  7. package/dist/chain-semantics/index.js +1 -1
  8. package/dist/composition/audit.js +1 -1
  9. package/dist/composition/blueprint-view.d.ts +3 -3
  10. package/dist/composition/blueprint-view.js +1 -1
  11. package/dist/composition/compile.d.ts +24 -3
  12. package/dist/composition/compile.js +1 -1
  13. package/dist/composition/emit-phases.d.ts +206 -0
  14. package/dist/composition/emit-phases.js +1 -0
  15. package/dist/composition/generate.d.ts +40 -0
  16. package/dist/composition/generate.js +1 -0
  17. package/dist/composition/guard-fill.d.ts +44 -0
  18. package/dist/composition/guard-fill.js +1 -0
  19. package/dist/composition/inflight.d.ts +20 -2
  20. package/dist/composition/inflight.js +1 -1
  21. package/dist/composition/input-normalize.d.ts +15 -0
  22. package/dist/composition/input-normalize.js +1 -0
  23. package/dist/composition/materialize.d.ts +18 -13
  24. package/dist/composition/materialize.js +1 -1
  25. package/dist/composition/mode-gates.d.ts +35 -0
  26. package/dist/composition/mode-gates.js +1 -0
  27. package/dist/composition/param-disclosure.js +1 -1
  28. package/dist/composition/plan-retry-ledger.d.ts +21 -0
  29. package/dist/composition/plan-retry-ledger.js +1 -0
  30. package/dist/composition/plan.d.ts +7 -2
  31. package/dist/composition/plan.js +1 -1
  32. package/dist/composition/product-card.d.ts +94 -0
  33. package/dist/composition/product-card.js +1 -0
  34. package/dist/composition/supply-chain-emit.d.ts +46 -0
  35. package/dist/composition/supply-chain-emit.js +1 -0
  36. package/dist/config/config-audit.spec.js +1 -1
  37. package/dist/config/config-warnings.d.ts +2 -0
  38. package/dist/config/config-warnings.js +1 -0
  39. package/dist/config/exposure.d.ts +2 -2
  40. package/dist/config/judgment.d.ts +31 -5
  41. package/dist/config/judgment.js +1 -1
  42. package/dist/config/judgment.spec.js +1 -1
  43. package/dist/config/match-policy-file.d.ts +34 -0
  44. package/dist/config/match-policy-file.js +1 -0
  45. package/dist/config/match-policy-file.spec.d.ts +1 -0
  46. package/dist/config/match-policy-file.spec.js +1 -0
  47. package/dist/config/rule-engine.d.ts +5 -5
  48. package/dist/config/rule-engine.js +1 -1
  49. package/dist/config/runtime.d.ts +0 -1
  50. package/dist/config/runtime.js +1 -1
  51. package/dist/config/severity.d.ts +0 -2
  52. package/dist/config/severity.js +1 -1
  53. package/dist/config/store-policy.spec.js +1 -1
  54. package/dist/config/template-params.d.ts +42 -0
  55. package/dist/config/template-params.js +1 -0
  56. package/dist/config/template-params.spec.d.ts +1 -0
  57. package/dist/config/template-params.spec.js +1 -0
  58. package/dist/data/api/api.spec.js +1 -1
  59. package/dist/data/api/server.js +1 -1
  60. package/dist/data/projection/store.d.ts +2 -1
  61. package/dist/data/projection/store.js +1 -1
  62. package/dist/data/projection/types.d.ts +22 -0
  63. package/dist/data/sync/cdc.d.ts +1 -2
  64. package/dist/data/sync/cdc.js +1 -1
  65. package/dist/evaluation/acceptance.d.ts +8 -0
  66. package/dist/evaluation/acceptance.js +1 -1
  67. package/dist/evaluation/builtins/demand-match.js +1 -1
  68. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  69. package/dist/evaluation/capability.d.ts +2 -0
  70. package/dist/evaluation/category-match-rules.d.ts +0 -1
  71. package/dist/evaluation/category-match-rules.js +1 -1
  72. package/dist/evaluation/composer.d.ts +25 -0
  73. package/dist/evaluation/composer.js +1 -1
  74. package/dist/evaluation/engine.js +1 -1
  75. package/dist/evaluation/extract.d.ts +7 -0
  76. package/dist/evaluation/extract.js +1 -1
  77. package/dist/evaluation/game-strategy.d.ts +0 -3
  78. package/dist/evaluation/game-strategy.js +1 -1
  79. package/dist/evaluation/match-operation.d.ts +9 -0
  80. package/dist/evaluation/match-operation.js +1 -1
  81. package/dist/evaluation/match-policy-resolver.d.ts +9 -0
  82. package/dist/evaluation/match-policy-resolver.js +1 -0
  83. package/dist/evaluation/match-policy.d.ts +3 -1
  84. package/dist/evaluation/match-policy.js +1 -1
  85. package/dist/evaluation/region.d.ts +0 -6
  86. package/dist/evaluation/region.js +1 -1
  87. package/dist/evaluation/standards.d.ts +2 -1
  88. package/dist/evaluation/standards.js +1 -1
  89. package/dist/evaluation/structured-lines.d.ts +8 -0
  90. package/dist/evaluation/structured-lines.js +1 -0
  91. package/dist/evaluation/types.d.ts +6 -0
  92. package/dist/experience/realtime-feedback.js +1 -1
  93. package/dist/extensions/capability-manifest.d.ts +1 -0
  94. package/dist/extensions/capability-manifest.js +1 -1
  95. package/dist/extensions/capability.d.ts +91 -0
  96. package/dist/extensions/capability.js +1 -0
  97. package/dist/extensions/industry-audit.spec.js +1 -1
  98. package/dist/extensions/industry-pack.d.ts +13 -0
  99. package/dist/extensions/industry-pack.js +1 -1
  100. package/dist/extensions/modes.js +1 -1
  101. package/dist/extensions/registry.d.ts +0 -2
  102. package/dist/extensions/registry.js +1 -1
  103. package/dist/goal/GoalEngine.js +1 -1
  104. package/dist/graph/onchain/analyze.js +1 -1
  105. package/dist/graph/onchain/expand.js +1 -1
  106. package/dist/graph/onchain/exposure.js +1 -1
  107. package/dist/graph/onchain/facts.js +1 -1
  108. package/dist/graph/onchain/order-status.d.ts +0 -1
  109. package/dist/graph/onchain/order-status.js +1 -1
  110. package/dist/harness/recover.js +1 -1
  111. package/dist/harness/verify.d.ts +0 -3
  112. package/dist/harness/verify.js +1 -1
  113. package/dist/intent/types.d.ts +0 -1
  114. package/dist/intent/types.js +1 -1
  115. package/dist/keeper/detectors.js +1 -1
  116. package/dist/keeper/types.d.ts +0 -1
  117. package/dist/keeper/types.js +1 -1
  118. package/dist/knowledge/allocation-risk.d.ts +1 -0
  119. package/dist/knowledge/allocation-risk.js +1 -1
  120. package/dist/knowledge/allocator-rail-verifier.d.ts +6 -1
  121. package/dist/knowledge/allocator-rail-verifier.js +1 -1
  122. package/dist/knowledge/arbitration-ledger.js +1 -1
  123. package/dist/knowledge/arbitration-puzzle.js +1 -1
  124. package/dist/knowledge/audit-rules.d.ts +2 -2
  125. package/dist/knowledge/audit-rules.js +1 -1
  126. package/dist/knowledge/baselines/judgment-baselines.json +21 -2
  127. package/dist/knowledge/baselines/rules/oracle.json +120 -0
  128. package/dist/knowledge/baselines/rules/plan.json +384 -17
  129. package/dist/knowledge/baselines/rules/progress.json +20 -2
  130. package/dist/knowledge/builtin-templates.d.ts +12 -1
  131. package/dist/knowledge/builtin-templates.js +1 -1
  132. package/dist/knowledge/component-schema.js +1 -1
  133. package/dist/knowledge/contact-templates.d.ts +0 -1
  134. package/dist/knowledge/contact-templates.js +1 -1
  135. package/dist/knowledge/dynamic-pricing.js +1 -1
  136. package/dist/knowledge/fee-param-bindings.js +1 -1
  137. package/dist/knowledge/fund-layer.d.ts +1 -0
  138. package/dist/knowledge/fund-layer.js +1 -1
  139. package/dist/knowledge/game-scenarios.js +1 -1
  140. package/dist/knowledge/getting-started.js +1 -1
  141. package/dist/knowledge/guard-binding-table.d.ts +52 -0
  142. package/dist/knowledge/guard-binding-table.js +1 -0
  143. package/dist/knowledge/guard-binding-verifier.d.ts +30 -0
  144. package/dist/knowledge/guard-binding-verifier.js +1 -0
  145. package/dist/knowledge/guard-bindings.js +1 -1
  146. package/dist/knowledge/guard-blueprint.d.ts +68 -0
  147. package/dist/knowledge/guard-blueprint.js +1 -0
  148. package/dist/knowledge/guard-design-patterns.d.ts +1 -1
  149. package/dist/knowledge/guard-design-patterns.js +1 -1
  150. package/dist/knowledge/guard-field-cognition.js +1 -1
  151. package/dist/knowledge/guard-host-context.d.ts +24 -0
  152. package/dist/knowledge/guard-host-context.js +1 -0
  153. package/dist/knowledge/guard-lint.js +1 -1
  154. package/dist/knowledge/guard-node-gates.d.ts +3 -0
  155. package/dist/knowledge/guard-node-gates.js +1 -1
  156. package/dist/knowledge/guard-puzzle.js +1 -1
  157. package/dist/knowledge/guard-render.js +1 -1
  158. package/dist/knowledge/guard-risk.js +1 -1
  159. package/dist/knowledge/guard-submission-prompt.d.ts +11 -0
  160. package/dist/knowledge/guard-submission-prompt.js +1 -1
  161. package/dist/knowledge/guard-templates.d.ts +1 -1
  162. package/dist/knowledge/guard-templates.js +1 -1
  163. package/dist/knowledge/guard-translation.js +1 -1
  164. package/dist/knowledge/index.d.ts +1 -1
  165. package/dist/knowledge/index.js +1 -1
  166. package/dist/knowledge/industry-generalizer.d.ts +6 -1
  167. package/dist/knowledge/industry-generalizer.js +1 -1
  168. package/dist/knowledge/industry-registry.js +1 -1
  169. package/dist/knowledge/jsonrpc-enum.d.ts +38 -0
  170. package/dist/knowledge/jsonrpc-enum.js +1 -1
  171. package/dist/knowledge/machine-topology.js +1 -1
  172. package/dist/knowledge/machine-translation.js +1 -1
  173. package/dist/knowledge/object-dependency.d.ts +31 -0
  174. package/dist/knowledge/object-dependency.js +1 -0
  175. package/dist/knowledge/onchain-constants.d.ts +2 -0
  176. package/dist/knowledge/onchain-constants.js +1 -1
  177. package/dist/knowledge/param-schema.d.ts +23 -0
  178. package/dist/knowledge/param-schema.js +1 -1
  179. package/dist/knowledge/param-tiers.js +1 -1
  180. package/dist/knowledge/passport-ledger.js +1 -1
  181. package/dist/knowledge/path-oracle/coverage.d.ts +16 -0
  182. package/dist/knowledge/path-oracle/coverage.js +1 -0
  183. package/dist/knowledge/path-oracle/index.d.ts +5 -0
  184. package/dist/knowledge/path-oracle/index.js +1 -0
  185. package/dist/knowledge/path-oracle/products/food-delivery.d.ts +2 -0
  186. package/dist/knowledge/path-oracle/products/food-delivery.js +1 -0
  187. package/dist/knowledge/path-oracle/schema.d.ts +188 -0
  188. package/dist/knowledge/path-oracle/schema.js +1 -0
  189. package/dist/knowledge/pattern-resolutions.d.ts +2 -0
  190. package/dist/knowledge/pattern-resolutions.js +1 -1
  191. package/dist/knowledge/progress-ledger.js +1 -1
  192. package/dist/knowledge/progress-risk.js +1 -1
  193. package/dist/knowledge/projection.spec.js +1 -1
  194. package/dist/knowledge/protocol-facts.js +1 -1
  195. package/dist/knowledge/requirement-families.d.ts +13 -0
  196. package/dist/knowledge/requirement-families.js +1 -0
  197. package/dist/knowledge/reward-ledger.js +1 -1
  198. package/dist/knowledge/scenario-modes.d.ts +1 -0
  199. package/dist/knowledge/scenario-modes.js +1 -1
  200. package/dist/knowledge/semantic-ir.d.ts +4 -0
  201. package/dist/knowledge/semantic-ir.js +1 -1
  202. package/dist/knowledge/service-ledger.d.ts +1 -1
  203. package/dist/knowledge/service-ledger.js +1 -1
  204. package/dist/knowledge/sku-name-gate.d.ts +17 -0
  205. package/dist/knowledge/sku-name-gate.js +1 -0
  206. package/dist/knowledge/supply-chain.d.ts +9 -0
  207. package/dist/knowledge/supply-chain.js +1 -1
  208. package/dist/knowledge/template-loader.d.ts +14 -6
  209. package/dist/knowledge/template-loader.js +1 -1
  210. package/dist/knowledge/template-nav.d.ts +3 -1
  211. package/dist/knowledge/template-nav.js +1 -1
  212. package/dist/knowledge/template-prose.d.ts +1 -1
  213. package/dist/knowledge/template-registry.js +1 -1
  214. package/dist/knowledge/template-scanner.d.ts +62 -0
  215. package/dist/knowledge/template-scanner.js +1 -1
  216. package/dist/knowledge/template-test-profiles.js +1 -1
  217. package/dist/knowledge/tools-reference.js +1 -1
  218. package/dist/knowledge/workflow-guidance.d.ts +5 -0
  219. package/dist/knowledge/workflow-guidance.js +1 -1
  220. package/dist/monitor/MonitorLoop.js +1 -1
  221. package/dist/participation/radar-core.js +1 -1
  222. package/dist/participation/time-window.js +1 -1
  223. package/dist/persona/address-format.d.ts +0 -1
  224. package/dist/persona/address-format.js +1 -1
  225. package/dist/persona/bridge.js +1 -1
  226. package/dist/persona/index.d.ts +0 -2
  227. package/dist/persona/index.js +1 -1
  228. package/dist/persona/model.js +1 -1
  229. package/dist/persona/persona-audit.spec.js +1 -1
  230. package/dist/persona/types.d.ts +6 -0
  231. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  232. package/dist/playbooks/service-build/game-theory.d.ts +2 -2
  233. package/dist/playbooks/service-build/intent-analyzer.js +1 -1
  234. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  235. package/dist/playbooks/service-build/merchant-guide.d.ts +50 -23
  236. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  237. package/dist/playbooks/service-build/migration-planner.d.ts +2 -0
  238. package/dist/playbooks/service-build/migration-planner.js +1 -1
  239. package/dist/playbooks/service-build/mode-actions.js +1 -1
  240. package/dist/playbooks/service-build/object-panorama.d.ts +8 -0
  241. package/dist/playbooks/service-build/object-panorama.js +1 -1
  242. package/dist/playbooks/service-build/participation-radar.js +1 -1
  243. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  244. package/dist/playbooks/service-build/reverse-mapping.d.ts +6 -0
  245. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  246. package/dist/playbooks/service-build/service-panorama.d.ts +1 -0
  247. package/dist/playbooks/service-build/service-panorama.js +1 -1
  248. package/dist/playbooks/service-build/service-quote.js +1 -1
  249. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  250. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +10 -1
  251. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  252. package/dist/review/index.js +1 -1
  253. package/dist/review/repository.js +1 -1
  254. package/dist/safety/confirm-gate.js +1 -1
  255. package/dist/schema/benchmark-migration/index.d.ts +104 -0
  256. package/dist/schema/benchmark-migration/index.js +1 -1
  257. package/dist/schema/call/allocation.d.ts +15 -6
  258. package/dist/schema/call/allocation.js +1 -1
  259. package/dist/schema/call/base.d.ts +256 -0
  260. package/dist/schema/call/base.js +1 -1
  261. package/dist/schema/call/bridge.d.ts +32 -6
  262. package/dist/schema/call/demand.d.ts +15 -6
  263. package/dist/schema/call/demand.js +1 -1
  264. package/dist/schema/call/guard.d.ts +8 -8
  265. package/dist/schema/call/guard.js +1 -1
  266. package/dist/schema/call/handler.d.ts +3 -0
  267. package/dist/schema/call/handler.js +1 -1
  268. package/dist/schema/call/machine.d.ts +32 -8
  269. package/dist/schema/call/machine.js +1 -1
  270. package/dist/schema/call/order.d.ts +26 -8
  271. package/dist/schema/call/order.js +1 -1
  272. package/dist/schema/call/payment.d.ts +20 -8
  273. package/dist/schema/call/payment.js +1 -1
  274. package/dist/schema/call/permission-handler.js +1 -1
  275. package/dist/schema/call/permission.d.ts +330 -114
  276. package/dist/schema/call/permission.js +1 -1
  277. package/dist/schema/call/personal.d.ts +10 -4
  278. package/dist/schema/call/personal.js +1 -1
  279. package/dist/schema/call/progress.d.ts +16 -4
  280. package/dist/schema/call/reward.d.ts +10 -4
  281. package/dist/schema/call/reward.js +1 -1
  282. package/dist/schema/call/semantic.d.ts +1 -0
  283. package/dist/schema/call/semantic.js +1 -1
  284. package/dist/schema/call/service.d.ts +128 -40
  285. package/dist/schema/call/service.js +1 -1
  286. package/dist/schema/call/treasury.d.ts +15 -6
  287. package/dist/schema/call/treasury.js +1 -1
  288. package/dist/schema/common/index.js +1 -1
  289. package/dist/schema/config/index.d.ts +61 -0
  290. package/dist/schema/config/index.js +1 -1
  291. package/dist/schema/envelope-unify.d.ts +4 -0
  292. package/dist/schema/envelope-unify.js +1 -0
  293. package/dist/schema/evaluation/index.d.ts +216 -19
  294. package/dist/schema/evaluation/index.js +1 -1
  295. package/dist/schema/goal/index.d.ts +47 -0
  296. package/dist/schema/goal/planning.d.ts +115 -1
  297. package/dist/schema/goal/planning.js +1 -1
  298. package/dist/schema/industry-pack/index.d.ts +137 -6
  299. package/dist/schema/industry-pack/index.js +1 -1
  300. package/dist/schema/industry-pack/modes.d.ts +6 -6
  301. package/dist/schema/keeper/index.d.ts +26 -0
  302. package/dist/schema/local/index.d.ts +137 -0
  303. package/dist/schema/local/index.js +1 -1
  304. package/dist/schema/local/wip.d.ts +6 -0
  305. package/dist/schema/local/wip.js +1 -1
  306. package/dist/schema/messenger/index.d.ts +26 -0
  307. package/dist/schema/operations.d.ts +342 -83
  308. package/dist/schema/operations.js +1 -1
  309. package/dist/schema/persona/index.d.ts +2907 -640
  310. package/dist/schema/persona/index.js +1 -1
  311. package/dist/schema/query/bi.d.ts +145 -4
  312. package/dist/schema/query/bi.js +1 -1
  313. package/dist/schema/query/index.d.ts +266 -73
  314. package/dist/schema/query/index.js +1 -1
  315. package/dist/schema/schema-query/index.d.ts +1 -1
  316. package/dist/schema/schema-query/index.js +1 -1
  317. package/dist/schema/schema-version.js +1 -1
  318. package/dist/schema/utils/permission-machine-check.d.ts +2 -0
  319. package/dist/schema/utils/permission-machine-check.js +1 -1
  320. package/dist/schema/watch/index.d.ts +16 -0
  321. package/dist/schema/watch/index.js +1 -1
  322. package/dist/schema/workflow/index.d.ts +2 -2
  323. package/dist/schema/workflow/index.js +1 -1
  324. package/dist/schema-query-impl/index.d.ts +1 -1
  325. package/dist/schema-query-impl/index.js +1 -1
  326. package/dist/schemas/account_operation.output.json +94 -0
  327. package/dist/schemas/benchmark_migration_operation.output.json +338 -9
  328. package/dist/schemas/benchmark_migration_operation.schema.json +26 -1
  329. package/dist/schemas/bridge_operation.output.json +94 -0
  330. package/dist/schemas/config_operation.output.json +352 -0
  331. package/dist/schemas/config_operation.schema.json +20 -2
  332. package/dist/schemas/evaluation_operation.output.json +570 -4
  333. package/dist/schemas/evaluation_operation.schema.json +194 -3
  334. package/dist/schemas/goal_operation.schema.json +183 -0
  335. package/dist/schemas/index.json +1 -1
  336. package/dist/schemas/industry_pack_operation.output.json +621 -0
  337. package/dist/schemas/industry_pack_operation.schema.json +20 -2
  338. package/dist/schemas/keeper_operation.output.json +94 -0
  339. package/dist/schemas/local_cache_operation.output.json +94 -0
  340. package/dist/schemas/local_history_operation.output.json +94 -0
  341. package/dist/schemas/local_info_operation.output.json +94 -0
  342. package/dist/schemas/local_mark_operation.output.json +94 -0
  343. package/dist/schemas/messenger_operation.output.json +94 -0
  344. package/dist/schemas/monitor_events.output.json +94 -0
  345. package/dist/schemas/monitor_subscription.output.json +94 -0
  346. package/dist/schemas/onchain_events.output.json +94 -0
  347. package/dist/schemas/onchain_operations.output.json +313 -1
  348. package/dist/schemas/onchain_operations.schema.json +1248 -664
  349. package/dist/schemas/onchain_operations_allocation.schema.json +30 -15
  350. package/dist/schemas/onchain_operations_arbitration.schema.json +9 -2
  351. package/dist/schemas/onchain_operations_contact.schema.json +8 -1
  352. package/dist/schemas/onchain_operations_demand.schema.json +29 -14
  353. package/dist/schemas/onchain_operations_gen_passport.schema.json +8 -1
  354. package/dist/schemas/onchain_operations_guard.schema.json +290 -105
  355. package/dist/schemas/onchain_operations_machine.schema.json +49 -34
  356. package/dist/schemas/onchain_operations_order.schema.json +63 -40
  357. package/dist/schemas/onchain_operations_payment.schema.json +26 -11
  358. package/dist/schemas/onchain_operations_permission.schema.json +362 -235
  359. package/dist/schemas/onchain_operations_personal.schema.json +27 -15
  360. package/dist/schemas/onchain_operations_progress.schema.json +45 -30
  361. package/dist/schemas/onchain_operations_proof.schema.json +8 -1
  362. package/dist/schemas/onchain_operations_repository.schema.json +8 -1
  363. package/dist/schemas/onchain_operations_reward.schema.json +32 -17
  364. package/dist/schemas/onchain_operations_service.schema.json +221 -124
  365. package/dist/schemas/onchain_operations_treasury.schema.json +32 -17
  366. package/dist/schemas/onchain_table_data.output.json +258 -6
  367. package/dist/schemas/onchain_table_data.schema.json +92 -52
  368. package/dist/schemas/persona_operation.output.json +7752 -0
  369. package/dist/schemas/persona_operation.schema.json +1232 -4
  370. package/dist/schemas/query_toolkit.output.json +756 -116
  371. package/dist/schemas/query_toolkit.schema.json +138 -7
  372. package/dist/schemas/schema_query.schema.json +1 -1
  373. package/dist/schemas/watch_operation.output.json +83 -0
  374. package/dist/schemas/wip_file.output.json +8 -0
  375. package/dist/schemas/workflow_operation.schema.json +2 -2
  376. package/dist/tools/handlers/benchmark-migration.d.ts +11 -3
  377. package/dist/tools/handlers/benchmark-migration.js +1 -1
  378. package/dist/tools/handlers/config.js +1 -1
  379. package/dist/tools/handlers/evaluation.js +1 -1
  380. package/dist/tools/handlers/evaluation.spec.js +1 -1
  381. package/dist/tools/handlers/industry-pack.js +1 -1
  382. package/dist/tools/handlers/onchain.d.ts +20 -0
  383. package/dist/tools/handlers/onchain.js +1 -1
  384. package/dist/tools/handlers/persona.js +1 -1
  385. package/dist/tools/handlers/query.d.ts +8 -0
  386. package/dist/tools/handlers/query.js +1 -1
  387. package/dist/tools/handlers/winner-derivation.d.ts +20 -0
  388. package/dist/tools/handlers/winner-derivation.js +1 -0
  389. package/dist/tools/handlers/wip-upload.js +1 -1
  390. package/dist/tools/index.d.ts +1 -0
  391. package/dist/tools/index.js +1 -1
  392. package/dist/tools/registry/business.js +1 -1
  393. package/dist/tools/registry/config.js +1 -1
  394. package/dist/tools/registry/evaluation.js +1 -1
  395. package/dist/tools/registry/identity.js +1 -1
  396. package/dist/tools/registry/query.js +1 -1
  397. package/dist/tools/transport-integrity.d.ts +7 -0
  398. package/dist/tools/transport-integrity.js +1 -0
  399. package/dist/tools/upgrade-check.js +1 -1
  400. package/dist/tools/wrap.d.ts +5 -0
  401. package/dist/tools/wrap.js +1 -1
  402. package/package.json +2 -2
  403. package/dist/extensions/business-modules.d.ts +0 -54
  404. package/dist/extensions/business-modules.js +0 -1
  405. package/dist/schemas/guard-templates.json +0 -379
@@ -1 +1 @@
1
- import{MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT}from'@wowok/wowok';export{MAX_GUARD_COUNT_PASSPORT};export{MAX_SUBMISSION_SIZE_PASSPORT};export const PASSPORT_ERROR_CODES={'E_GUARD_COUNT_EXCEEDED':0x1,'E_RELIES_GUARD_NOT_ADDED':0x2,'E_SUBMISSION_SIZE_EXCEEDED':0x3,'E_HAS_VERIFIED':0x4,'E_NOT_VERIFIED':0x5,'E_NOT_IMPACK_GUARD':0x6,'E_VERIFY_FAILED':0x7,'E_TX_NOT_MATCH':0x8,'E_IMPACK_GUARD_NOT_FOUND':0x9,'E_SUBMISSION_NOT_FOUND':0xa,'E_DIGEST_NOT_MATCH':0xb};export const PASSPORT_VERIFY_MODES={'verify':{'sdk_entry':'verify\x20(passport\x20verification\x20entry)','on_false':'returns\x20false\x20—\x20no\x20abort;\x20the\x20evidence\x20card\x20is\x20still\x20minted\x20and\x20the\x20result\x20recorded','use_when':'the\x20false\x20branch\x20is\x20handled\x20downstream\x20(guard\x20rails\x20read\x20the\x20recorded\x20result)'},'verify_strict':{'sdk_entry':'verify_strict\x20(SDK\x20public\x20API)','on_false':'aborts\x20E_VERIFY_FAILED\x20=\x207\x20and\x20the\x20transaction\x20rolls\x20back','use_when':'the\x20transaction\x20must\x20NOT\x20succeed\x20on\x20a\x20failed\x20verification'}};export const PASSPORT_SCENARIOS=[{'id':'passport_service_buy','name':'Service\x20buy\x20with\x20Passport\x20(verify\x20buy_guard)','consumer_object':'Service','sdk_entry':'passport-verified\x20buy','passport_purpose':'Verify\x20customer\x27s\x20eligibility\x20to\x20buy\x20(buy_guard)','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['tx_hash\x20binding\x20requires\x20Passport\x20creation\x20+\x20buy\x20in\x20the\x20same\x20transaction','Service.buy_guard\x20is\x20typically\x20configured\x20as\x20impack=true'],'dependencies':['Service','Guard']},{'id':'passport_arbitration_compensation','name':'Order\x20arbitration\x20compensation\x20(verify\x20arb\x20permission)','consumer_object':'Order','sdk_entry':'arb_claim_compensation_with_passport','passport_purpose':'Verify\x20customer\x27s\x20right\x20to\x20claim\x20arbitration\x20compensation','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','arbitrator'],'risk_notes':['Compensation\x20is\x20one-shot\x20—\x20Passport.tx_hash\x20prevents\x20replay','The\x20impack\x20Guard\x20is\x20hard-verified\x20(E_VERIFY_FAILED\x20if\x20mismatch)'],'dependencies':['Order','Arbitration','Guard']},{'id':'passport_progress_next','name':'Progress\x20advance\x20(verify\x20Forward.guard)','consumer_object':'Progress','sdk_entry':'passport-verified\x20node\x20advance','passport_purpose':'Verify\x20that\x20the\x20next\x20node\x27s\x20Forward.guard\x20passes\x20before\x20advancing','typical_impack':'impack','uses_relies':!![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Forward.guard\x20may\x20have\x20relies\x20on\x20previous\x20node\x20Guards\x20(AND/OR\x20logic)','Relies\x20Guards\x20MUST\x20be\x20added\x20in\x20topological\x20order\x20(E_RELIES_GUARD_NOT_ADDED)'],'dependencies':['Progress','Machine','Guard']},{'id':'passport_arbitration_dispute','name':'Arbitration\x20dispute\x20(verify\x20usage_guard)','consumer_object':'Arbitration','sdk_entry':'passport-verified\x20dispute','passport_purpose':'Verify\x20usage_guard\x20before\x20opening\x20a\x20dispute\x20case','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','arbitrator'],'risk_notes':['Arbitration.usage_guard\x20determines\x20who\x20may\x20open\x20disputes','Dispute\x20must\x20be\x20filed\x20within\x20the\x20same\x20transaction\x20that\x20created\x20the\x20Passport'],'dependencies':['Arbitration','Guard']},{'id':'passport_arbitration_vote','name':'Arbitration\x20vote\x20(resolve\x20VoteValue::GuardIdentifier\x20weight)','consumer_object':'Arbitration','sdk_entry':'passport-verified\x20vote','passport_purpose':'Resolve\x20voting\x20weight\x20from\x20Passport\x20submission\x20(GuardIdentifier)','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['arbitrator'],'risk_notes':['Voting\x20weight\x20is\x20read\x20from\x20the\x20Passport\x20submission\x20for\x20the\x20(guard,\x20identifier)\x20pair','Identifier\x20type\x20must\x20match\x20the\x20voting_guard\x27s\x20expected\x20type'],'dependencies':['Arbitration','Guard']},{'id':'passport_reward_claim','name':'Reward\x20claim\x20(verify\x20Guard\x20+\x20resolve\x20recipient/amount)','consumer_object':'Reward','sdk_entry':'claim_with_passport','passport_purpose':'Verify\x20claim\x20eligibility\x20and\x20resolve\x20dynamic\x20recipient/amount\x20from\x20submission','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer'],'risk_notes':['Guard\x20may\x20use\x20GuardIdentifier\x20to\x20dynamically\x20resolve\x20recipient\x20address','Claim\x20is\x20one-shot\x20per\x20Passport\x20(tx_hash\x20binding\x20prevents\x20replay)'],'dependencies':['Reward','Guard']},{'id':'passport_permission_assert','name':'Permission\x20assert\x20(Guard\x20verification\x20replaces\x20owner\x20check)','consumer_object':'Permission','sdk_entry':'passport-verified\x20assert','passport_purpose':'Use\x20Guard\x20verification\x20as\x20a\x20dynamic\x20substitute\x20for\x20static\x20owner/admin\x20check','typical_impack':'impack','uses_relies':!![],'lifecycle_stage':'use','participants':['customer','platform'],'risk_notes':['Allows\x20composing\x20multi-factor\x20authorization\x20via\x20relies\x20logic','Permission\x20assert\x20bypass\x20requires\x20the\x20Passport\x20to\x20be\x20verified\x20in\x20the\x20same\x20tx'],'dependencies':['Permission','Guard']},{'id':'passport_allocation_alloc','name':'Allocation\x20distribute\x20(verify\x20alloc\x20permission\x20via\x20Guard)','consumer_object':'Allocation','sdk_entry':'alloc_with_passport','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20trigger\x20allocation\x20distribution','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Caller-specified\x20guard:\x20Passport\x20must\x20contain\x20the\x20specific\x20Guard\x20referenced\x20by\x20alloc_by_guard','Hard\x20verification\x20applies\x20(E_VERIFY_FAILED\x20if\x20the\x20impack\x20Guard\x20fails)'],'dependencies':['Allocation','Guard']},{'id':'passport_treasury_withdraw','name':'Treasury\x20withdraw\x20(verify\x20withdraw\x20permission)','consumer_object':'Treasury','sdk_entry':'passport-verified\x20withdraw','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20withdraw\x20funds\x20from\x20Treasury','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','platform'],'risk_notes':['Treasury\x20withdraw\x20is\x20high-value\x20—\x20strongly\x20recommend\x20multi-Guard\x20relies\x20(AND)','Guard\x20should\x20bind\x20Signer\x20to\x20prevent\x20unauthorized\x20withdraw'],'dependencies':['Treasury','Guard']},{'id':'passport_repository_query','name':'Repository\x20query\x20(verify\x20read\x20permission\x20+\x20extract\x20data)','consumer_object':'Repository','sdk_entry':'query_with_passport','passport_purpose':'Verify\x20read\x20permission\x20and\x20extract\x20submission\x20data\x20for\x20repository\x20write','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Repository\x20policies\x20may\x20extract\x20data\x20from\x20Passport\x20submission\x20(quote_guard\x20pattern)','Submitted\x20data\x20must\x20be\x20≤\x20256\x20bytes\x20per\x20submission\x20entry'],'dependencies':['Repository','Guard']},{'id':'passport_demand_submit','name':'Demand\x20submit\x20(verify\x20demand\x20permission)','consumer_object':'Demand','sdk_entry':'demand_with_passport','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20submit\x20or\x20match\x20a\x20Demand','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Demand.guard\x20may\x20filter\x20which\x20submissions\x20are\x20eligible\x20for\x20matching','Demand\x20uses\x20MAX_GUARD_COUNT_DEMAND=20\x20(separate\x20constant,\x20do\x20not\x20confuse)'],'dependencies':['Demand','Guard']}];export const PASSPORT_LEDGER_VERSION='1.0.0';export function getAllScenarios(){return[...PASSPORT_SCENARIOS];}export function getScenariosCount(){return PASSPORT_SCENARIOS['length'];}export function findScenarioById(a){return PASSPORT_SCENARIOS['find'](b=>b['id']===a);}export function getScenariosByConsumer(a){return PASSPORT_SCENARIOS['filter'](b=>b['consumer_object']===a);}export function getScenariosUsingRelies(){return PASSPORT_SCENARIOS['filter'](a=>a['uses_relies']);}export function inferScenarioFromIntent(a){const b=a['toLowerCase']();if(b['includes']('buy')||b['includes']('purchase')||b['includes']('service'))return findScenarioById('passport_service_buy');if(b['includes']('compensation')||b['includes']('compensate')||b['includes']('arb_claim'))return findScenarioById('passport_arbitration_compensation');if(b['includes']('progress')||b['includes']('advance')||b['includes']('next'))return findScenarioById('passport_progress_next');if(b['includes']('dispute')||b['includes']('grievance'))return findScenarioById('passport_arbitration_dispute');if(b['includes']('vote')||b['includes']('ballot')||b['includes']('voting'))return findScenarioById('passport_arbitration_vote');if(b['includes']('reward')||b['includes']('claim')||b['includes']('redeem')||b['includes']('bonus'))return findScenarioById('passport_reward_claim');if(b['includes']('permission')||b['includes']('assert')||b['includes']('authorize'))return findScenarioById('passport_permission_assert');if(b['includes']('alloc')||b['includes']('distribute')||b['includes']('distribution'))return findScenarioById('passport_allocation_alloc');if(b['includes']('withdraw')||b['includes']('extract')||b['includes']('treasury'))return findScenarioById('passport_treasury_withdraw');if(b['includes']('repository')||b['includes']('query')||b['includes']('lookup'))return findScenarioById('passport_repository_query');if(b['includes']('demand')||b['includes']('requirement'))return findScenarioById('passport_demand_submit');return undefined;}export function impackRoleFromBoolean(a){return a?'impack':'non_impack';}export function impackRoleToBoolean(a){return a==='impack';}export function reliesLogicFromBoolean(a){return a?'AND':'OR';}export function reliesLogicToBoolean(a){return a==='AND';}export function getErrorName(a){for(const [b,d]of Object['entries'](PASSPORT_ERROR_CODES)){if(d===a)return b;}return undefined;}export function getErrorDescription(a){const b={0x1:'Guard\x20count\x20exceeds\x20MAX_GUARD_COUNT_PASSPORT\x20(20)',0x2:'Relied\x20Guard\x20not\x20yet\x20added\x20to\x20Passport\x20(topological\x20order\x20required)',0x3:'Submission\x20serialized\x20size\x20exceeds\x20MAX_SUBMISSION_SIZE_PASSPORT\x20(256\x20bytes)',0x4:'Passport\x20already\x20verified\x20—\x20verify\x20is\x20one-time,\x20configuration\x20is\x20now\x20immutable',0x5:'result()\x20called\x20before\x20verify()\x20—\x20Passport\x20has\x20not\x20been\x20verified\x20yet',0x6:'Hard\x20verification\x20called\x20on\x20a\x20non-impack\x20Guard\x20—\x20only\x20impack\x20Guards\x20can\x20be\x20hard-verified',0x7:'Guard\x20/\x20Permission\x20hard-verification\x20called\x20when\x20the\x20overall\x20result=false',0x8:'result()\x20called\x20from\x20a\x20different\x20transaction\x20—\x20tx_hash\x20does\x20not\x20match\x20current\x20tx',0x9:'verify()\x20found\x20no\x20impack\x20Guard\x20—\x20at\x20least\x201\x20impack=true\x20Guard\x20is\x20required',0xa:'No\x20submission\x20entry\x20found\x20for\x20the\x20(guard,\x20identifier)\x20pair',0xb:'Guard\x20add\x20/\x20verify\x20/\x20Guard\x20clear\x20called\x20from\x20a\x20different\x20transaction\x20—\x20tx_hash\x20mismatch'};return b[a];}
1
+ import{MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT}from'@wowok/wowok';export{MAX_GUARD_COUNT_PASSPORT};export{MAX_SUBMISSION_SIZE_PASSPORT};export const PASSPORT_ERROR_CODES={'E_GUARD_COUNT_EXCEEDED':0x1,'E_RELIES_GUARD_NOT_ADDED':0x2,'E_SUBMISSION_SIZE_EXCEEDED':0x3,'E_HAS_VERIFIED':0x4,'E_NOT_VERIFIED':0x5,'E_NOT_IMPACK_GUARD':0x6,'E_VERIFY_FAILED':0x7,'E_TX_NOT_MATCH':0x8,'E_IMPACK_GUARD_NOT_FOUND':0x9,'E_SUBMISSION_NOT_FOUND':0xa,'E_DIGEST_NOT_MATCH':0xb};export const PASSPORT_VERIFY_MODES={'verify':{'sdk_entry':'verify\x20(passport\x20verification\x20entry)','on_false':'returns\x20false\x20—\x20no\x20abort;\x20the\x20evidence\x20card\x20is\x20still\x20minted\x20and\x20the\x20result\x20recorded','use_when':'the\x20false\x20branch\x20is\x20handled\x20downstream\x20(guard\x20rails\x20read\x20the\x20recorded\x20result)'},'verify_strict':{'sdk_entry':'verify_strict\x20(SDK\x20public\x20API)','on_false':'aborts\x20E_VERIFY_FAILED\x20=\x207\x20and\x20the\x20transaction\x20rolls\x20back','use_when':'the\x20transaction\x20must\x20NOT\x20succeed\x20on\x20a\x20failed\x20verification'}};export const PASSPORT_SCENARIOS=[{'id':'passport_service_buy','name':'Service\x20buy\x20with\x20Passport\x20(verify\x20buy_guard)','consumer_object':'Service','sdk_entry':'passport-verified\x20buy','passport_purpose':'Verify\x20customer\x27s\x20eligibility\x20to\x20buy\x20(buy_guard)','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['tx_hash\x20binding\x20requires\x20Passport\x20creation\x20+\x20buy\x20in\x20the\x20same\x20transaction','Service.buy_guard\x20is\x20typically\x20configured\x20as\x20impack=true'],'dependencies':['Service','Guard']},{'id':'passport_arbitration_compensation','name':'Order\x20arbitration\x20compensation\x20(verify\x20arb\x20permission)','consumer_object':'Order','sdk_entry':'arb_claim_compensation_with_passport','passport_purpose':'Verify\x20customer\x27s\x20right\x20to\x20claim\x20arbitration\x20compensation','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','arbitrator'],'risk_notes':['Compensation\x20is\x20one-shot\x20—\x20Passport.tx_hash\x20prevents\x20replay','The\x20impack\x20Guard\x20is\x20hard-verified\x20(E_VERIFY_FAILED\x20if\x20mismatch)'],'dependencies':['Order','Arbitration','Guard']},{'id':'passport_progress_next','name':'Progress\x20advance\x20(verify\x20Forward.guard)','consumer_object':'Progress','sdk_entry':'passport-verified\x20node\x20advance','passport_purpose':'Verify\x20that\x20the\x20next\x20node\x27s\x20Forward.guard\x20passes\x20before\x20advancing','typical_impack':'impack','uses_relies':!![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Forward.guard\x20may\x20have\x20relies\x20on\x20previous\x20node\x20Guards\x20(AND/OR\x20logic)','Relies\x20Guards\x20MUST\x20be\x20added\x20in\x20topological\x20order\x20(E_RELIES_GUARD_NOT_ADDED)'],'dependencies':['Progress','Machine','Guard']},{'id':'passport_arbitration_dispute','name':'Arbitration\x20dispute\x20(verify\x20usage_guard)','consumer_object':'Arbitration','sdk_entry':'passport-verified\x20dispute','passport_purpose':'Verify\x20usage_guard\x20before\x20opening\x20a\x20dispute\x20case','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','arbitrator'],'risk_notes':['Arbitration.usage_guard\x20determines\x20who\x20may\x20open\x20disputes','Dispute\x20must\x20be\x20filed\x20within\x20the\x20same\x20transaction\x20that\x20created\x20the\x20Passport'],'dependencies':['Arbitration','Guard']},{'id':'passport_arbitration_vote','name':'Arbitration\x20vote\x20(resolve\x20VoteValue::GuardIdentifier\x20weight)','consumer_object':'Arbitration','sdk_entry':'passport-verified\x20vote','passport_purpose':'Resolve\x20voting\x20weight\x20from\x20Passport\x20submission\x20(GuardIdentifier)','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['arbitrator'],'risk_notes':['Voting\x20weight\x20is\x20read\x20from\x20the\x20Passport\x20submission\x20for\x20the\x20(guard,\x20identifier)\x20pair','Identifier\x20type\x20must\x20match\x20the\x20voting_guard\x27s\x20expected\x20type'],'dependencies':['Arbitration','Guard']},{'id':'passport_reward_claim','name':'Reward\x20claim\x20(verify\x20Guard\x20+\x20resolve\x20recipient/amount)','consumer_object':'Reward','sdk_entry':'claim_with_passport','passport_purpose':'Verify\x20claim\x20eligibility\x20and\x20resolve\x20dynamic\x20recipient/amount\x20from\x20submission','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer'],'risk_notes':['Guard\x20may\x20use\x20GuardIdentifier\x20to\x20dynamically\x20resolve\x20recipient\x20address','Claim\x20is\x20one-shot\x20per\x20Passport\x20(tx_hash\x20binding\x20prevents\x20replay)'],'dependencies':['Reward','Guard']},{'id':'passport_permission_assert','name':'Permission\x20assert\x20(Guard\x20verification\x20replaces\x20owner\x20check)','consumer_object':'Permission','sdk_entry':'passport-verified\x20assert','passport_purpose':'Use\x20Guard\x20verification\x20as\x20a\x20dynamic\x20substitute\x20for\x20static\x20owner/admin\x20check','typical_impack':'impack','uses_relies':!![],'lifecycle_stage':'use','participants':['customer','platform'],'risk_notes':['Allows\x20composing\x20multi-factor\x20authorization\x20via\x20relies\x20logic','Permission\x20assert\x20bypass\x20requires\x20the\x20Passport\x20to\x20be\x20verified\x20in\x20the\x20same\x20tx'],'dependencies':['Permission','Guard']},{'id':'passport_allocation_alloc','name':'Allocation\x20distribute\x20(verify\x20alloc\x20permission\x20via\x20Guard)','consumer_object':'Allocation','sdk_entry':'alloc_with_passport','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20trigger\x20allocation\x20distribution','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Caller-specified\x20guard:\x20Passport\x20must\x20contain\x20the\x20specific\x20Guard\x20referenced\x20by\x20alloc_by_guard','Hard\x20verification\x20applies\x20(E_VERIFY_FAILED\x20if\x20the\x20impack\x20Guard\x20fails)'],'dependencies':['Allocation','Guard']},{'id':'passport_treasury_withdraw','name':'Treasury\x20withdraw\x20(verify\x20withdraw\x20permission)','consumer_object':'Treasury','sdk_entry':'passport-verified\x20withdraw','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20withdraw\x20funds\x20from\x20Treasury','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','platform'],'risk_notes':['Treasury\x20withdraw\x20is\x20high-value\x20—\x20strongly\x20recommend\x20multi-Guard\x20relies\x20(AND)','Guard\x20should\x20bind\x20Signer\x20to\x20prevent\x20unauthorized\x20withdraw'],'dependencies':['Treasury','Guard']},{'id':'passport_repository_query','name':'Repository\x20query\x20(verify\x20read\x20permission\x20+\x20extract\x20data)','consumer_object':'Repository','sdk_entry':'query_with_passport','passport_purpose':'Verify\x20read\x20permission\x20and\x20extract\x20submission\x20data\x20for\x20repository\x20write','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Repository\x20policies\x20may\x20extract\x20data\x20from\x20Passport\x20submission\x20(quote_guard\x20pattern)','Submitted\x20data\x20must\x20be\x20≤\x204096\x20bytes\x20per\x20submission\x20entry\x20(fits\x20a\x20100-address\x20roster\x20witness)'],'dependencies':['Repository','Guard']},{'id':'passport_demand_submit','name':'Demand\x20submit\x20(verify\x20demand\x20permission)','consumer_object':'Demand','sdk_entry':'demand_with_passport','passport_purpose':'Verify\x20the\x20caller\x27s\x20right\x20to\x20submit\x20or\x20match\x20a\x20Demand','typical_impack':'impack','uses_relies':![],'lifecycle_stage':'use','participants':['customer','merchant'],'risk_notes':['Demand.guard\x20may\x20filter\x20which\x20submissions\x20are\x20eligible\x20for\x20matching','Demand\x20uses\x20MAX_GUARD_COUNT_DEMAND=20\x20(separate\x20constant,\x20do\x20not\x20confuse)'],'dependencies':['Demand','Guard']}];export const PASSPORT_LEDGER_VERSION='1.0.0';export function getAllScenarios(){return[...PASSPORT_SCENARIOS];}export function getScenariosCount(){return PASSPORT_SCENARIOS['length'];}export function findScenarioById(a){return PASSPORT_SCENARIOS['find'](b=>b['id']===a);}export function getScenariosByConsumer(a){return PASSPORT_SCENARIOS['filter'](b=>b['consumer_object']===a);}export function getScenariosUsingRelies(){return PASSPORT_SCENARIOS['filter'](a=>a['uses_relies']);}export function inferScenarioFromIntent(a){const b=a['toLowerCase']();if(b['includes']('buy')||b['includes']('purchase')||b['includes']('service'))return findScenarioById('passport_service_buy');if(b['includes']('compensation')||b['includes']('compensate')||b['includes']('arb_claim'))return findScenarioById('passport_arbitration_compensation');if(b['includes']('progress')||b['includes']('advance')||b['includes']('next'))return findScenarioById('passport_progress_next');if(b['includes']('dispute')||b['includes']('grievance'))return findScenarioById('passport_arbitration_dispute');if(b['includes']('vote')||b['includes']('ballot')||b['includes']('voting'))return findScenarioById('passport_arbitration_vote');if(b['includes']('reward')||b['includes']('claim')||b['includes']('redeem')||b['includes']('bonus'))return findScenarioById('passport_reward_claim');if(b['includes']('permission')||b['includes']('assert')||b['includes']('authorize'))return findScenarioById('passport_permission_assert');if(b['includes']('alloc')||b['includes']('distribute')||b['includes']('distribution'))return findScenarioById('passport_allocation_alloc');if(b['includes']('withdraw')||b['includes']('extract')||b['includes']('treasury'))return findScenarioById('passport_treasury_withdraw');if(b['includes']('repository')||b['includes']('query')||b['includes']('lookup'))return findScenarioById('passport_repository_query');if(b['includes']('demand')||b['includes']('requirement'))return findScenarioById('passport_demand_submit');return undefined;}export function impackRoleFromBoolean(a){return a?'impack':'non_impack';}export function impackRoleToBoolean(a){return a==='impack';}export function reliesLogicFromBoolean(a){return a?'AND':'OR';}export function reliesLogicToBoolean(a){return a==='AND';}export function getErrorName(a){for(const [b,d]of Object['entries'](PASSPORT_ERROR_CODES)){if(d===a)return b;}return undefined;}export function getErrorDescription(a){const b={0x1:'Guard\x20count\x20exceeds\x20MAX_GUARD_COUNT_PASSPORT\x20(20)',0x2:'Relied\x20Guard\x20not\x20yet\x20added\x20to\x20Passport\x20(topological\x20order\x20required)',0x3:'Submission\x20serialized\x20size\x20exceeds\x20MAX_SUBMISSION_SIZE_PASSPORT\x20(4096\x20bytes)',0x4:'Passport\x20already\x20verified\x20—\x20verify\x20is\x20one-time,\x20configuration\x20is\x20now\x20immutable',0x5:'result()\x20called\x20before\x20verify()\x20—\x20Passport\x20has\x20not\x20been\x20verified\x20yet',0x6:'Hard\x20verification\x20called\x20on\x20a\x20non-impack\x20Guard\x20—\x20only\x20impack\x20Guards\x20can\x20be\x20hard-verified',0x7:'Guard\x20/\x20Permission\x20hard-verification\x20called\x20when\x20the\x20overall\x20result=false',0x8:'result()\x20called\x20from\x20a\x20different\x20transaction\x20—\x20tx_hash\x20does\x20not\x20match\x20current\x20tx',0x9:'verify()\x20found\x20no\x20impack\x20Guard\x20—\x20at\x20least\x201\x20impack=true\x20Guard\x20is\x20required',0xa:'No\x20submission\x20entry\x20found\x20for\x20the\x20(guard,\x20identifier)\x20pair',0xb:'Guard\x20add\x20/\x20verify\x20/\x20Guard\x20clear\x20called\x20from\x20a\x20different\x20transaction\x20—\x20tx_hash\x20mismatch'};return b[a];}
@@ -0,0 +1,16 @@
1
+ import type { Severity } from "../../config/severity.js";
2
+ import { type IndustryTemplate } from "../template-loader.js";
3
+ import type { OracleCoverage, OracleInvariant, OracleStep } from "./schema.js";
4
+ export declare function computeOracleCoverage(t: IndustryTemplate, oracleSteps: OracleStep[], oracleInvariants: OracleInvariant[], oracleVersion: string): OracleCoverage;
5
+ export declare function oracleDisclosureBlockersFor(templateId: string): string[];
6
+ export interface OracleFinding {
7
+ rule_id: string;
8
+ severity: Severity;
9
+ title: string;
10
+ detail: string;
11
+ suggestion: string;
12
+ }
13
+ export declare function oracleCoverageFindings(t: IndustryTemplate): {
14
+ findings: OracleFinding[];
15
+ coverage?: OracleCoverage;
16
+ };
@@ -0,0 +1 @@
1
+ import{getJudgmentDoc}from'../../config/judgment.js';import{evaluateRuleBook}from'../../config/rule-engine.js';import{getTemplate}from'../template-loader.js';import{oracleFor}from'./index.js';function disclosureCorpus(a){return JSON['stringify']([a['build_notes'],a['trust_mechanisms'],a['keeper_dependencies'],a['keeper_duty']??[],a['user_inputs'],a['user_input_specs']?.['map'](b=>b['question']+'\x20'+b['param_key']+'\x20'+(b['note']??''))??[],a['differences'],a['key_risk']]);}function probeHits(a,b){try{return new RegExp(a,'i')['test'](b);}catch{return![];}}function readShape(a){return a['machine_shape']['map'](b=>({'name':b['name'],'from':(b['from']??[])['map'](c=>{if(typeof c==='string')return{'prev':'','forward':c,'guardKey':''};const d=c;return{'prev':typeof d['prev']==='string'?d['prev']:'','forward':typeof d['forward']==='string'?d['forward']:'','guardKey':typeof d['guard_key']==='string'?d['guard_key']:''};})}));}function matchFootprint(a,b){const c=b['chainFootprint'];if(!c||c['node']===undefined&&c['forward']===undefined)return{'matched':![],'guardKeys':''};if(c['node']!==undefined&&c['forward']!==undefined){const e=a['find'](g=>g['name']===c['node']),f=(e?.['from']??[])['filter'](g=>g['forward']===c['forward']&&(c['prev']===undefined||g['prev']===c['prev']));return{'matched':f['length']>0x0,'guardKeys':f['map'](g=>g['guardKey'])['join']('\x20')};}if(c['node']!==undefined){const g=a['find'](i=>i['name']===c['node']),h=g?.['from']??[];return{'matched':g!==undefined,'guardKeys':h['map'](i=>i['guardKey'])['join']('\x20')};}const d=a['flatMap'](i=>i['from'])['filter'](i=>i['forward']===c['forward']);return{'matched':d['length']>0x0,'guardKeys':d['map'](i=>i['guardKey'])['join']('\x20')};}function templateHasForward(a,b){return a['some'](c=>c['from']['some'](d=>d['forward']===b));}function invariantViolated(a,b,c){const d=c['violation'];if(!d)return![];if(d['requiresFeeParamNonZero']!==undefined){const e=a['fee_params'][d['requiresFeeParamNonZero']];if(typeof e!=='number'||!(e>0x0))return![];}if(d['whileMissingForward']!==undefined&&templateHasForward(b,d['whileMissingForward']))return![];return!![];}export function computeOracleCoverage(a,b,c,d){const e=readShape(a),f=disclosureCorpus(a),g=[],h=[];let i=0x0,j=0x0,k=0x0,l=0x0,n=0x0,o=0x0,p=0x0,q=0x0;const r=(w,x,y)=>{const z={'step_id':w['id'],'status':x,'reason':y};g['push'](z);const A=w['class']!=='offchain'&&w['onchain']!=='not_applicable';A&&(i+=0x1,x==='covered'||x==='partial'||x==='disclosed'?j+=0x1:h['push'](z));if(w['guardKeyProbe']!==undefined&&(x==='covered'||x==='partial')){if(w['guardProbeKind']==='feature'){n+=0x1;if(x==='covered')o+=0x1;}else{k+=0x1;if(x==='covered')l+=0x1;}}if(w['disclosureProbe']!==undefined||w['onchain']==='disclosure_only'||w['onchain']==='unresolvable'){p+=0x1;if(x==='disclosed')q+=0x1;}};for(const w of b){if(w['class']==='offchain'){r(w,'excluded','offchain\x20step\x20—\x20outside\x20every\x20chain-coverage\x20number');continue;}if(w['onchain']==='not_applicable'){if(w['disclosureProbe']!==undefined){const y=probeHits(w['disclosureProbe'],f);r(w,y?'disclosed':'disclosure_missing',y?'semantics-inverted\x20step\x20—\x20the\x20difference\x20is\x20disclosed':'semantics-inverted\x20step\x20—\x20the\x20on-chain\x20difference\x20is\x20NOT\x20disclosed');}else w['chainFootprint']?.['forward']!==undefined&&templateHasForward(e,w['chainFootprint']['forward'])?r(w,'na_redundant','marked\x20not_applicable\x20yet\x20the\x20template\x20ships\x20the\x20footprint\x20anyway'):r(w,'excluded','not\x20applicable\x20—\x20chain\x20semantics\x20eliminate\x20the\x20step');continue;}if(w['onchain']==='disclosure_only'||w['onchain']==='unresolvable'){const z=w['disclosureProbe'],A=z!==undefined?probeHits(z,f):![];r(w,A?'disclosed':'disclosure_missing',A?'not\x20chain-enforceable\x20—\x20disclosed\x20in\x20the\x20template\x20text':z===undefined?'not\x20chain-enforceable\x20—\x20the\x20oracle\x20declares\x20no\x20disclosure\x20probe':'not\x20chain-enforceable\x20and\x20NOT\x20disclosed\x20(probe\x20miss)');continue;}const x=matchFootprint(e,w);if(!x['matched']){r(w,'missing','no\x20chain\x20footprint\x20in\x20the\x20machine\x20shape');continue;}if(w['gapPredicate']?.['probe']!==undefined&&!probeHits(w['gapPredicate']['probe'],f)){r(w,'gap_undisclosed','the\x20path\x20exists\x20but\x20its\x20known\x20semantic\x20gap\x20is\x20NOT\x20disclosed');continue;}if(w['guardKeyProbe']!==undefined&&!probeHits(w['guardKeyProbe'],x['guardKeys'])){r(w,'partial','path\x20exists\x20but\x20the\x20guard\x20surface\x20misses\x20(guard-key\x20probe\x20miss)');continue;}r(w,'covered','chain\x20footprint\x20matches\x20the\x20machine\x20shape');}const u=c['filter'](B=>invariantViolated(a,e,B))['map'](B=>B['id']),v=(B,C)=>C===0x0?0x1:B/C;return{'product_ref':a['product_ref']??'','oracle_version':d,'chain_relevant':i,'path_coverage':v(j,i),'guard_coverage':v(l,k),'feature_guard_coverage':v(o,n),'disclosure_coverage':v(q,p),'invariant_hits':u,'steps':g,'uncovered':h};}export function oracleDisclosureBlockersFor(a){let b;try{b=getTemplate(a);}catch{return[];}if(!b?.['product_ref'])return[];const c=oracleFor(b['product_ref']);if(!c)return[];const d=computeOracleCoverage(b,c['steps'],c['invariants'],c['oracleVersion']);return d['steps']['filter'](e=>e['status']==='disclosure_missing')['map'](e=>e['step_id']);}function oracleRuleBook(){const a=getJudgmentDoc()['rules']['domains']['oracle'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27oracle\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function oracleFacts(a){return{'product_ref':a['product_ref'],'oracle_version':a['oracle_version'],'path_coverage':a['path_coverage'],'guard_coverage':a['guard_coverage'],'feature_guard_coverage':a['feature_guard_coverage'],'disclosure_coverage':a['disclosure_coverage'],'invariant_hit_count':a['invariant_hits']['length'],'invariant_hits':a['invariant_hits']['join'](',\x20'),'na_redundant_count':a['steps']['filter'](b=>b['status']==='na_redundant')['length'],'uncovered_count':a['uncovered']['length'],'uncovered_step_ids':a['uncovered']['map'](b=>b['step_id'])['join'](',\x20')};}export function oracleCoverageFindings(a){if(!a['product_ref'])return{'findings':[]};const b=oracleFor(a['product_ref']);if(!b)return{'findings':[]};const c=computeOracleCoverage(a,b['steps'],b['invariants'],b['oracleVersion']),{findings:d}=evaluateRuleBook(oracleRuleBook(),oracleFacts(c));return{'findings':d['map'](e=>({'rule_id':e['rule_id'],'severity':e['level'],'title':e['title'],'detail':e['description'],'suggestion':e['mitigation']??''})),'coverage':c};}
@@ -0,0 +1,5 @@
1
+ import { type ProductOracle } from "./schema.js";
2
+ export * from "./schema.js";
3
+ export { computeOracleCoverage, oracleCoverageFindings, oracleDisclosureBlockersFor, type OracleFinding, } from "./coverage.js";
4
+ export declare function oracleFor(productRef: string): ProductOracle | undefined;
5
+ export declare function allProductOracles(): ProductOracle[];
@@ -0,0 +1 @@
1
+ import{ProductOracleSchema}from'./schema.js';import{FOOD_DELIVERY_ORACLE}from'./products/food-delivery.js';export*from'./schema.js';export{computeOracleCoverage,oracleCoverageFindings,oracleDisclosureBlockersFor}from'./coverage.js';const REGISTRY=Object['freeze'](Object['fromEntries']([FOOD_DELIVERY_ORACLE]['map'](a=>{const b=ProductOracleSchema['parse'](a);return[b['productRef'],b];})));export function oracleFor(a){return REGISTRY[a];}export function allProductOracles(){return Object['values'](REGISTRY);}
@@ -0,0 +1,2 @@
1
+ import type { ProductOracle } from "../schema.js";
2
+ export declare const FOOD_DELIVERY_ORACLE: ProductOracle;
@@ -0,0 +1 @@
1
+ export const FOOD_DELIVERY_ORACLE={'productRef':'meituan-waimai','products':['meituan-waimai','uber-eats','doordash'],'oracleVersion':'1.1.0','steps':[{'id':'M1','class':'offchain','name':'Browse\x20and\x20search\x20restaurants','actor':'buyer','precondition':[],'onchain':'not_applicable','commercialSemantics':'Storefront\x20discovery\x20is\x20a\x20pure\x20off-chain\x20concern;\x20the\x20chain\x20holds\x20no\x20catalog.','evidence':[]},{'id':'M2','class':'offchain','name':'Cart\x20assembly','actor':'buyer','precondition':['M1'],'onchain':'not_applicable','commercialSemantics':'Item\x20selection\x20and\x20quantity\x20edits\x20happen\x20in\x20the\x20client;\x20the\x20chain\x20sees\x20only\x20the\x20final\x20total.','evidence':[]},{'id':'M3','class':'offchain','name':'Promotion\x20/\x20coupon\x20application','actor':'platform','precondition':['M2'],'onchain':'not_applicable','commercialSemantics':'Discounts\x20are\x20priced\x20into\x20the\x20payable\x20total\x20before\x20escrow;\x20see\x20E28\x20for\x20the\x20mispricing\x20remedy.','evidence':[]},{'id':'M4','class':'offchain','name':'Delivery\x20address\x20entry','actor':'buyer','precondition':['M2'],'onchain':'not_applicable','commercialSemantics':'Address\x20privacy\x20is\x20an\x20off-chain\x20concern\x20on\x20this\x20template\x20(Service.customer_required\x20is\x20declarative-only;\x20no\x20required_info\x20surface\x20ships).','evidence':[]},{'id':'M5','class':'offchain','name':'Delivery\x20option\x20selection','actor':'buyer','precondition':['M4'],'onchain':'not_applicable','commercialSemantics':'Delivery\x20mode\x20(courier\x20vs\x20pickup)\x20is\x20chosen\x20off-chain;\x20this\x20template\x27s\x20shape\x20is\x20courier.','evidence':[]},{'id':'M6','class':'main','name':'Pay\x20and\x20escrow\x20(meal\x20+\x20packaging\x20+\x20delivery\x20fee\x20in\x20one\x20total)','actor':'buyer','precondition':['M5'],'onchain':'expressible','chainFootprint':{'node':'paid','forward':'Enter','prev':'','moneyEffect':'escrow_in'},'commercialSemantics':'One\x20atomic\x20buy:\x20quote\x20+\x20payment\x20+\x20escrow\x20in\x20a\x20single\x20transaction;\x20the\x20delivery\x20fee\x20rides\x20the\x20order\x20total.','evidence':[]},{'id':'M7','class':'main','name':'Restaurant\x20accepts\x20the\x20order\x20(prep\x20slot)','actor':'merchant','precondition':['M6'],'onchain':'expressible','chainFootprint':{'node':'accepted','forward':'AcceptOrder','prev':'paid','identity':'permission_index','moneyEffect':'none'},'commercialSemantics':'Merchant\x20acceptance\x20commits\x20the\x20order;\x20after\x20it\x20a\x20buyer\x20cancel\x20is\x20a\x20fee-bearing\x20kill\x20(E5)\x20and\x20a\x20merchant\x20reject\x20is\x20a\x20full\x20refund\x20(E2).','evidence':[{'file':'machine.move','line':0x5f,'pattern':'namedOperator,\x20permissionIndex,\x20and\x20guard\x20participate'}]},{'id':'M8','class':'main','name':'Meal\x20packed\x20and\x20sealed\x20(handover\x20evidence\x20row)','actor':'merchant','precondition':['M7'],'onchain':'expressible','chainFootprint':{'node':'ready','forward':'MarkReady','prev':'accepted','moneyEffect':'none'},'commercialSemantics':'Kitchen\x20readiness\x20is\x20attested\x20by\x20a\x20merchant-staff\x20evidence\x20row\x20(bag-seal\x20code)\x20keyed\x20to\x20the\x20order\x20before\x20the\x20order\x20is\x20offered\x20to\x20riders.','guardKeyProbe':'ready_evidence','evidence':[]},{'id':'M9','class':'main','name':'Platform\x20dispatches\x20the\x20order\x20to\x20a\x20rider','actor':'platform','precondition':['M8'],'onchain':'disclosure_only','chainFootprint':{'moneyEffect':'none'},'commercialSemantics':'Dispatch\x20is\x20an\x20off-chain\x20keeper\x20decision;\x20its\x20only\x20chain\x20footprint\x20is\x20the\x20per-order\x20namedOperator\x20roster\x20(permission\x20index\x20221).','disclosureProbe':'DISPATCH\x20IS\x20OFF-CHAIN','evidence':[]},{'id':'M10','class':'main','name':'Rider\x20arrives\x20at\x20the\x20restaurant','actor':'fulfiller','precondition':['M9'],'onchain':'expressible','chainFootprint':{'node':'picked_up'},'commercialSemantics':'Rider\x20arrival\x20has\x20no\x20independent\x20node;\x20it\x20is\x20implicit\x20in\x20the\x20pickup\x20handover\x20(acceptable\x20modeling).','evidence':[]},{'id':'M11','class':'main','name':'Rider\x20picks\x20up\x20with\x20handover\x20verification','actor':'fulfiller','precondition':['M10'],'onchain':'expressible','chainFootprint':{'node':'picked_up','forward':'PickupOrder','prev':'ready','identity':'named_operator','moneyEffect':'none'},'commercialSemantics':'Only\x20a\x20rostered\x20rider\x20may\x20advance\x20the\x20pickup;\x20the\x20guard\x20re-asserts\x20the\x20roster\x20predicate\x20and\x20requires\x20the\x20merchant\x20staff\x27s\x20handover\x20row.','guardKeyProbe':'pickup_evidence','evidence':[{'file':'progress.move','line':0x10a,'pattern':'fun\x20IsNamedOperator'}]},{'id':'M12','class':'main','name':'In-transit\x20real-time\x20location','actor':'platform','precondition':['M11'],'onchain':'unresolvable','commercialSemantics':'Live\x20rider\x20location\x20and\x20ETA\x20are\x20app\x20features;\x20the\x20chain\x20has\x20no\x20location/ETA\x20oracle.','unresolvableRef':'S7','disclosureProbe':'ETA\x20\x5c/\x20ROUTE|DISTANCE\x20ORACLE','evidence':[]},{'id':'M13','class':'main','name':'Rider\x20delivers\x20the\x20order\x20(drop-off\x20attested)','actor':'fulfiller','precondition':['M11'],'onchain':'expressible_with_gap','chainFootprint':{'node':'delivered','forward':'DeliverOrder','prev':'picked_up','identity':'named_operator','moneyEffect':'none'},'commercialSemantics':'Delivery\x20is\x20attested\x20by\x20the\x20rostered\x20rider\x27s\x20forward\x20plus\x20a\x20merchant-staff\x20drop-off\x20evidence\x20row;\x20the\x20chain\x20has\x20no\x20parcel\x20oracle,\x20so\x20\x27delivered\x27\x20rests\x20on\x20these\x20two\x20credentials\x20(see\x20E18\x20for\x20the\x20fake-delivery\x20residual).','guardKeyProbe':'deliver_evidence','gapPredicate':{'probe':'parcel\x20oracle|handover\x20evidence'},'evidence':[{'file':'progress.move','line':0x10a,'pattern':'fun\x20IsNamedOperator'}]},{'id':'M14','class':'main','name':'Buyer\x20confirms\x20receipt\x20/\x20silence\x20fallback\x20opens\x20the\x20claim\x20window','actor':'buyer','precondition':['M13'],'onchain':'expressible','chainFootprint':{'node':'claim_window','forward':'ConfirmReceipt','prev':'delivered','identity':'order_holder','moneyEffect':'none'},'commercialSemantics':'Buyer-first\x20confirmation\x20with\x20a\x20keeper\x20silence\x20fallback\x20(auto_confirm_hours)\x20—\x20a\x20silent\x20buyer\x20can\x20never\x20strand\x20the\x20escrow\x20at\x20delivered.','evidence':[]},{'id':'M15','class':'post','name':'Buyer\x20reviews\x20the\x20order','actor':'buyer','precondition':['M16'],'onchain':'expressible','chainFootprint':{'node':'reviewed','forward':'SubmitReview','prev':'completed','identity':'order_holder','moneyEffect':'none'},'commercialSemantics':'Post-settlement\x20review\x20rail,\x20money-free\x20by\x20topology;\x20reward\x20cashback\x20is\x20an\x20explicit\x20opt-in,\x20off\x20by\x20default.','evidence':[]},{'id':'M16','class':'post','name':'Merchant\x20settlement\x20after\x20the\x20claim\x20window\x20elapses','actor':'platform','precondition':['M14'],'onchain':'expressible','chainFootprint':{'node':'completed','forward':'SettleAfterWindow','prev':'claim_window','moneyEffect':'release'},'commercialSemantics':'Serial\x20claim\x20window\x20(TPL-09):\x20settlement\x20opens\x20only\x20after\x20the\x20filing\x20window\x20closed;\x20the\x20goods\x20allocator\x20pays\x20the\x20restaurant\x20and\x20the\x20platform\x20legs.','guardKeyProbe':'settle_window_gate','evidence':[]},{'id':'M17','class':'post','name':'Rider\x20paid\x20per\x20order','actor':'platform','precondition':['M16'],'onchain':'expressible','chainFootprint':{'moneyEffect':'reward'},'commercialSemantics':'Per-order\x20rider\x20pay\x20IS\x20chain-expressible\x20(an\x20Entity\x20or\x20Signer\x20allocator\x20leg\x20bypasses\x20the\x20for_object\x20lock;\x20T-06\x20proven\x20live),\x20but\x20the\x20shipped\x20shape\x20keeps\x20rider\x20pay\x20as\x20OFF-CHAIN\x20platform\x20payroll\x20—\x20the\x20platform\x20Rate-0\x20leg\x20pays\x20nothing.\x20No\x20rider-pay\x20leg\x20or\x20Reward\x20claim\x20ships:\x20the\x20escrow\x20never\x20pays\x20the\x20courier.','evidence':[{'file':'allocation.move','line':0x274,'pattern':'tx_context::sender'}]},{'id':'E1','class':'exception','name':'Payment\x20timeout\x20/\x20failure','actor':'buyer','precondition':['M5'],'onchain':'not_applicable','commercialSemantics':'buy2\x20is\x20atomic\x20—\x20quote,\x20payment\x20and\x20escrow\x20commit\x20or\x20abort\x20together;\x20there\x20is\x20no\x20paid-but-unescrowed\x20state\x20to\x20time\x20out.','evidence':[]},{'id':'E2','class':'exception','name':'Merchant\x20rejects\x20the\x20order\x20before\x20acceptance\x20(full\x20refund)','actor':'merchant','precondition':['M6'],'onchain':'expressible','chainFootprint':{'node':'closed_cancel','forward':'RejectOrder','prev':'paid','identity':'permission_index','moneyEffect':'refund'},'commercialSemantics':'Sold-out\x20/\x20closing\x20merchant\x20rejects;\x20the\x20order-anchored\x20full-refund\x20rail\x20returns\x20the\x20whole\x20escrow.','evidence':[]},{'id':'E3','class':'exception','name':'Merchant\x20fails\x20to\x20accept\x20in\x20time\x20(auto-cancel\x20full\x20refund)','actor':'keeper','precondition':['M6'],'onchain':'expressible','chainFootprint':{'forward':'TimeoutAccept','moneyEffect':'refund'},'commercialSemantics':'Real\x20products\x20auto-cancel\x20and\x20fully\x20refund\x20when\x20no\x20merchant\x20accepts\x20within\x20a\x20deadline;\x20this\x20template\x20has\x20NO\x20accept-timeout\x20edge\x20(auto_confirm\x20only\x20guards\x20post-delivery\x20silence).','evidence':[]},{'id':'E4','class':'exception','name':'Buyer\x20cancels\x20before\x20acceptance\x20(free\x20full\x20refund)','actor':'buyer','precondition':['M6'],'onchain':'expressible','chainFootprint':{'node':'closed_cancel','forward':'CancelBeforeAccept','prev':'paid','identity':'order_holder','moneyEffect':'refund'},'commercialSemantics':'No-prep\x20cancel\x20is\x20free;\x20the\x20full\x20escrow\x20returns\x20order-anchored.','evidence':[]},{'id':'E5','class':'exception','name':'Buyer\x20cancels\x20after\x20acceptance\x20(fee-bearing\x20kill)','actor':'buyer','precondition':['M7'],'onchain':'expressible','chainFootprint':{'node':'closed_kill','forward':'CancelAfterAccept','prev':'accepted','identity':'order_holder','moneyEffect':'refund'},'commercialSemantics':'The\x20kitchen\x20already\x20started:\x20kill_fee_bps\x20(benchmark\x205%)\x20compensates\x20the\x20restaurant,\x20the\x20complement\x20returns\x20to\x20the\x20buyer.','evidence':[]},{'id':'E6','class':'exception','name':'Merchant\x20refuses\x20a\x20mid-prep\x20buyer\x20cancel','actor':'merchant','precondition':['E5'],'onchain':'expressible','chainFootprint':{'forward':'RejectCancel','moneyEffect':'none'},'commercialSemantics':'Some\x20products\x20let\x20the\x20merchant\x20decline\x20a\x20cancel\x20request\x20once\x20cooking\x20started\x20(consent-gated\x20cancel);\x20this\x20template\x20has\x20no\x20such\x20negotiation\x20edge\x20—\x20the\x20buyer\x27s\x20kill\x20always\x20executes.','evidence':[]},{'id':'E7','class':'exception','name':'Prep\x20timeout\x20(penalty-free\x20cancel\x20plus\x20lateness\x20compensation)','actor':'keeper','precondition':['M7'],'onchain':'expressible','chainFootprint':{'forward':'ReadyTimeoutCancel','moneyEffect':'refund'},'commercialSemantics':'If\x20the\x20restaurant\x20misses\x20its\x20prep\x20deadline\x20the\x20buyer\x20can\x20cancel\x20penalty-free\x20(and\x20real\x20products\x20add\x20a\x20lateness\x20voucher);\x20this\x20template\x20has\x20NO\x20ready-timeout\x20edge.','evidence':[]},{'id':'E8','class':'exception','name':'No\x20rider\x20accepts\x20(capacity\x20shortage)\x20—\x20buyer\x20cancels\x20penalty-free','actor':'platform','precondition':['M8'],'onchain':'expressible','chainFootprint':{'forward':'CancelForNoCapacity','moneyEffect':'refund'},'commercialSemantics':'Capacity\x20shortage\x20is\x20NOT\x20the\x20buyer\x27s\x20fault:\x20real\x20products\x20waive\x20the\x20cancel\x20fee\x20when\x20no\x20rider\x20picked\x20up\x20within\x20the\x20promised\x20dispatch\x20window.\x20CURED\x20(K3\x20Batch\x2010,\x20261031):\x20the\x20template\x20ships\x20CancelForNoCapacity\x20—\x20the\x20platform\x20(keeper\x20slot\x201002)\x20force-cancels\x20penalty-free\x20into\x20the\x20full-refund\x20terminal\x20once\x20dispatch_window_hours\x20elapse\x20on\x20the\x20ready\x20entry\x20with\x20no\x20rostered\x20pickup;\x20the\x205%\x20kill\x20stays\x20reserved\x20for\x20BUYER-initiated\x20post-acceptance\x20cancels.','evidence':[]},{'id':'E9','class':'exception','name':'Rider\x20cancels\x20/\x20is\x20reassigned\x20(re-dispatch)','actor':'platform','precondition':['M9'],'onchain':'disclosure_only','chainFootprint':{'moneyEffect':'none'},'commercialSemantics':'Re-dispatch\x20is\x20an\x20off-chain\x20keeper\x20duty;\x20the\x20chain\x20never\x20fabricates\x20delivery\x20state\x20to\x20cover\x20a\x20dead\x20rider.','disclosureProbe':'re-dispatch','evidence':[]},{'id':'E10','class':'exception','name':'Rider\x20arrives\x20but\x20food\x20is\x20not\x20ready\x20(wait\x20/\x20escalate\x20/\x20cancel)','actor':'fulfiller','precondition':['M10'],'onchain':'expressible','chainFootprint':{'forward':'ReportMerchantNotReady','moneyEffect':'none'},'commercialSemantics':'Rider-side\x20wait/escalation\x20when\x20the\x20merchant\x20misses\x20the\x20prep\x20slot;\x20this\x20template\x20expresses\x20no\x20rider-side\x20complaint\x20surface.','evidence':[]},{'id':'E11','class':'exception','name':'Partial\x20stock-out\x20(partial\x20refund\x20/\x20substitution\x20/\x20cancel)','actor':'merchant','precondition':['M7'],'onchain':'expressible','chainFootprint':{'forward':'PartialRefund','moneyEffect':'refund'},'commercialSemantics':'A\x20chain-enforced\x20partial-remedy\x20branch\x20IS\x20expressible\x20(consent\x20repository\x20+\x20byte-equality\x20acceptance\x20+\x20existence-verified\x20refund\x20leg)\x20but\x20ships\x20only\x20as\x20an\x20OPT-IN\x20build\x20note\x20—\x20no\x20default\x20partial-refund\x20rail\x20exists.','evidence':[]},{'id':'E12','class':'exception','name':'Spillage\x20/\x20damage\x20in\x20transit\x20(photo\x20evidence,\x20full\x20or\x20partial\x20refund)','actor':'fulfiller','precondition':['M11'],'onchain':'expressible','chainFootprint':{'node':'claim_filed','forward':'ReportTransitLoss','prev':'picked_up','identity':'order_holder','moneyEffect':'none'},'commercialSemantics':'In-transit\x20loss\x20routes\x20into\x20the\x20dispute\x20waypoint\x20(identity-only\x20by\x20design\x20mid-transit);\x20the\x20remedy\x20is\x20the\x20buyer\x27s\x20arbitration\x20case\x20into\x20the\x20full-refund\x20rail.','guardKeyProbe':'report_loss','evidence':[]},{'id':'E13','class':'exception','name':'Wrong\x20/\x20missing\x20items\x20(redelivery\x20or\x20refund)','actor':'merchant','precondition':['M13'],'onchain':'expressible','chainFootprint':{'forward':'Redeliver','moneyEffect':'none'},'commercialSemantics':'Redelivery\x20has\x20no\x20path\x20(machine\x20freeze\x20—\x20a\x20post-publish\x20re-delivery\x20rail\x20cannot\x20be\x20added);\x20the\x20buyer\x27s\x20only\x20remedies\x20are\x20dispute/arbitration\x20or\x20the\x20return\x20rail.','evidence':[]},{'id':'E14','class':'exception','name':'Food-safety\x20violation\x20(full\x20refund\x20plus\x20high-multiple\x20compensation)','actor':'merchant','precondition':['M13'],'onchain':'expressible_with_gap','chainFootprint':{'node':'claim_filed','moneyEffect':'compensate'},'commercialSemantics':'Statutory\x20food-safety\x20compensation\x20(price\x20x10\x20or\x20loss\x20x3,\x20floor\x201000\x20CNY)\x20routes\x20through\x20arbitration;\x20the\x20chain\x20caps\x20indemnity\x20at\x203x\x20the\x20order\x20amount\x20and\x20hard-binds\x20the\x20payee\x20to\x20order.owner\x20—\x20the\x20statutory\x20multiple\x20is\x20unreachable\x20on-chain.','gapPredicate':{'probe':'tenfold|10x|MAX_INDEMNITY|statutory|food.safety'},'evidence':[{'file':'arb.move','line':0x15,'pattern':'MAX_INDEMNITY_MULTIPLE:u64\x20=\x203'}]},{'id':'E15','class':'exception','name':'Late-delivery\x20compensation\x20(on-time\x20guarantee)','actor':'fulfiller','precondition':['M13'],'onchain':'expressible_with_gap','chainFootprint':{'node':'completed','forward':'SettleAfterWindow','prev':'claim_window','moneyEffect':'release','guardLegs':['payment.info.for\x20==\x20the\x20order\x20anchored\x20at\x20protocol\x20slot\x20254\x20(one\x20order)','payment.info.remark\x20==\x20the\x20versioned\x20clause\x20marker\x20(one\x20matter)','order.owner\x20==\x20the\x20submitted\x20beneficiary\x20address,\x20and\x20payment.recipient\x20has\x20that\x20address\x20(payee\x20closure)','payment.amount\x20>=\x20the\x20clause\x20penalty\x20(amount\x20closure)','protocol\x20slot\x20255\x20==\x20progress.history\x20count,\x20so\x20the\x20proof\x20burns\x20after\x20one\x20verification\x20(one\x20time)','settlement\x20leg\x20becomes\x20logic_or(on-time\x20evidence\x20row,\x20compensation\x20voucher)\x20—\x20a\x20late\x20order\x20rests\x20at\x20the\x20window\x20with\x20funds\x20intact\x20until\x20the\x20voucher\x20verifies']},'commercialSemantics':'Punctuality\x20products\x20pay\x20the\x20buyer\x20when\x20the\x20order\x20is\x20late.\x20Industry\x20equilibrium\x20is\x20a\x20small,\x20no-application-required,\x20proactive\x20payout:\x20SF\x20Express\x20since\x202025-12-01\x20self-pays\x2020-30%\x20of\x20the\x20shipping\x20fee\x20in\x20tiers\x20for\x20its\x20own\x20delays\x20with\x20zero\x20rider\x20pass-through,\x20and\x20JD\x20instant\x20delivery\x20auto-issues\x20a\x20voucher\x20past\x2010/20\x20minutes.\x20The\x20chain\x20cannot\x20DEDUCT\x20that\x20amount\x20from\x20anyone,\x20but\x20it\x20does\x20not\x20need\x20to:\x20Payment\x20is\x20immutable\x20and\x20self-authenticating,\x20so\x20a\x20forward\x20guard\x20can\x20verify\x20a\x20voluntarily\x20minted\x20compensation\x20voucher\x20and\x20refuse\x20to\x20settle\x20until\x20it\x20exists.\x20Non-payment\x20therefore\x20costs\x20the\x20liable\x20party\x20more\x20than\x20payment\x20—\x20the\x20order\x20rests\x20with\x20funds\x20intact\x20and\x20the\x20buyer\x20keeps\x20the\x20arbitration\x20rail\x20(up\x20to\x203x\x20plus\x20the\x20compensation\x20fund).','gapPredicate':{'probe':'voluntar(y|ily)[^\x22]{0,80}(payment|payout|compensat|mint)|compensation\x20voucher|payment\x20voucher|refus[^\x22]{0,40}settle|settlement[^\x22]{0,40}voucher'},'guardKeyProbe':'penalty_marker|sla_penalty|penalty_payment|on_time_gate','guardProbeKind':'feature','evidence':[{'file':'payment.move','line':0x72,'pattern':'public\x20fun\x20new_singleton'},{'file':'payment.move','line':0x42,'pattern':'public\x20struct\x20PaymentInfo\x20has\x20copy,\x20drop,\x20store\x20{'},{'file':'payment.move','line':0xb7,'pattern':'transfer::freeze_object(payment);'},{'file':'allocation.move','line':0x214,'pattern':'E_ONCE_TRIGGERED'}]},{'id':'E16','class':'exception','name':'Wrong\x20address\x20/\x20unreachable\x20buyer\x20(wait,\x20return,\x20partial\x20deduction)','actor':'buyer','precondition':['M11'],'onchain':'expressible','chainFootprint':{'forward':'ReturnToSender','moneyEffect':'refund'},'commercialSemantics':'Failed-contact\x20flows\x20end\x20in\x20a\x20return-to-sender\x20with\x20a\x20partial\x20deduction;\x20this\x20template\x20has\x20no\x20such\x20path\x20—\x20a\x20buyer\x20unreachable\x20at\x20the\x20door\x20strands\x20the\x20order\x20at\x20delivered\x20until\x20the\x20silence\x20fallback.','evidence':[]},{'id':'E17','class':'exception','name':'Buyer\x20rejects\x20at\x20the\x20door\x20(refund\x20minus\x20delivery\x20fee)','actor':'buyer','precondition':['M13'],'onchain':'expressible','chainFootprint':{'node':'return_requested','forward':'RequestReturn','prev':'delivered','identity':'order_holder','moneyEffect':'none'},'commercialSemantics':'T-02\x20after-sales\x20rail:\x20a\x20buyer\x20rejects\x20the\x20delivered\x20order\x20inside\x20the\x20return\x20window;\x20the\x20merchant\x20confirms\x20(full\x20refund)\x20or\x20rejects\x20(resume),\x20and\x20the\x20buyer\x20can\x20self-withdraw.\x20The\x20fee\x20shape\x20is\x20a\x20Rate\x20split\x20(kill_fee_bps),\x20not\x20a\x20delivery-fee\x20deduction\x20—\x20semantically\x20adjacent,\x20disclosed.','evidence':[]},{'id':'E18','class':'exception','name':'Fake\x20delivery\x20(rider\x20marks\x20delivered\x20without\x20delivering)','actor':'fulfiller','precondition':['M11'],'onchain':'expressible_with_gap','chainFootprint':{'node':'delivered','forward':'DeliverOrder','prev':'picked_up','identity':'named_operator','moneyEffect':'none'},'commercialSemantics':'DM-P1\x20hardened\x20the\x20handover:\x20only\x20a\x20rostered\x20rider\x20can\x20advance,\x20and\x20the\x20guard\x20re-asserts\x20the\x20roster\x20predicate\x20plus\x20an\x20order-keyed\x20merchant-staff\x20drop-off\x20row.\x20The\x20chain\x20still\x20has\x20no\x20parcel\x20oracle\x20—\x20a\x20colluding\x20staff\x20writer\x20+\x20rostered\x20rider\x20can\x20still\x20fake\x20the\x20row;\x20the\x20residual\x20risk\x20is\x20disclosure-bounded.','guardKeyProbe':'deliver_evidence','gapPredicate':{'probe':'parcel\x20oracle|handover\x20evidence'},'evidence':[{'file':'progress.move','line':0x10a,'pattern':'fun\x20IsNamedOperator'}]},{'id':'E19','class':'exception','name':'Contactless-delivery\x20loss\x20(left\x20at\x20the\x20door,\x20buyer\x20never\x20received)','actor':'arbitrator','precondition':['M13'],'onchain':'expressible','chainFootprint':{'forward':'ReportContactlessLoss','moneyEffect':'none'},'commercialSemantics':'A\x20dedicated\x20non-receipt\x20declaration\x20after\x20a\x20contactless\x20drop-off;\x20this\x20template\x20routes\x20the\x20case\x20only\x20through\x20the\x20generic\x20dispute\x20filing\x20(FileDispute)\x20once\x20the\x20claim\x20window\x20opened\x20—\x20no\x20contactless-specific\x20surface.','evidence':[]},{'id':'E20','class':'remedy','name':'Refund\x20refused\x20(escalate\x20to\x20third-party\x20arbitration)','actor':'buyer','precondition':['M14'],'onchain':'expressible','chainFootprint':{'node':'claim_filed','forward':'FileDispute','prev':'claim_window','moneyEffect':'none'},'commercialSemantics':'Dispute\x20filing\x20is\x20alive\x20only\x20INSIDE\x20the\x20serial\x20claim\x20window;\x20the\x20venue\x20is\x20an\x20independent\x20third-party\x20Arbitration\x20object.','evidence':[]},{'id':'E21','class':'remedy','name':'Arbitrator\x20rules\x20for\x20the\x20buyer\x20(refund\x20executes)','actor':'arbitrator','precondition':['E20'],'onchain':'expressible','chainFootprint':{'node':'closed_cancel','forward':'ArbRefund','prev':'claim_filed','identity':'permission_index','moneyEffect':'refund'},'commercialSemantics':'A\x20buyer-won\x20ruling\x20with\x20non-zero\x20indemnity\x20re-routes\x20the\x20order\x20into\x20the\x20full-refund\x20rail.','guardKeyProbe':'arb_refund','evidence':[]},{'id':'E22','class':'remedy','name':'Arbitrator\x20dismisses\x20the\x20claim\x20(order\x20resumes)','actor':'arbitrator','precondition':['E20'],'onchain':'expressible','chainFootprint':{'node':'delivered','forward':'ResumeAfterDismissal','prev':'claim_filed','identity':'permission_index','moneyEffect':'none'},'commercialSemantics':'A\x20merchant-favor\x20ruling\x20resumes\x20the\x20order\x20at\x20delivered\x20with\x20re-anchored\x20silence\x20windows.','guardKeyProbe':'arb_dismissed_resume','evidence':[]},{'id':'E23','class':'remedy','name':'Arbitration\x20timeout\x20deemed\x20favorable\x20to\x20the\x20buyer','actor':'platform','precondition':['E20'],'onchain':'not_applicable','commercialSemantics':'Real\x20products\x20deem\x20an\x20unraveled\x20case\x20buyer-favorable;\x20on-chain\x20the\x20semantics\x20INVERT\x20—\x2030\x20days\x20of\x20arbitrator\x20silence\x20means\x20the\x20recorded\x20ruling\x20is\x20ACCEPTED\x20and\x20executes\x20as-is.\x20The\x20difference\x20must\x20be\x20disclosed.','disclosureProbe':'30.day|silence[^\x22]{0,80}(accept|arb)|ruling[^\x22]{0,80}silence','evidence':[]},{'id':'E24','class':'post','name':'Merchant\x20appeals\x20a\x20malicious\x20review\x20(removal)','actor':'merchant','precondition':['M15'],'onchain':'expressible_with_gap','chainFootprint':{'forward':'AppealReview','moneyEffect':'none'},'commercialSemantics':'Review\x20removal\x20on-chain\x20would\x20be\x20an\x20overwrite\x20of\x20a\x20kernel-owned\x20repository\x20row\x20—\x20constrained\x20by\x20write_once\x20policy;\x20no\x20appeal/removal\x20surface\x20exists\x20on\x20this\x20template.','gapPredicate':{'probe':'write_once|review[^\x22]{0,80}(edit|remov|appeal)|(edit|remov|appeal)[^\x22]{0,80}review'},'evidence':[]},{'id':'E25','class':'post','name':'Review\x20edit\x20window','actor':'buyer','precondition':['M15'],'onchain':'expressible_with_gap','chainFootprint':{'forward':'EditReview','moneyEffect':'none'},'commercialSemantics':'Whether\x20a\x20review\x20may\x20be\x20edited\x20depends\x20on\x20the\x20review\x20repository\x27s\x20write_once\x20policy;\x20no\x20explicit\x20edit\x20window\x20is\x20declared\x20on\x20this\x20template.','gapPredicate':{'probe':'write_once|review[^\x22]{0,80}(edit|remov|appeal)|(edit|remov|appeal)[^\x22]{0,80}review'},'evidence':[]},{'id':'E26','class':'exception','name':'Store\x20delisted\x20while\x20orders\x20are\x20open\x20(mass\x20refund)','actor':'platform','precondition':['M6'],'onchain':'expressible','chainFootprint':{'forward':'DelistRefund','moneyEffect':'refund'},'commercialSemantics':'A\x20delisting\x20refund\x20rail\x20is\x20expressible\x20(B-1/F-2\x20family)\x20but\x20this\x20template\x20ships\x20none\x20—\x20open\x20orders\x20ride\x20only\x20their\x20per-order\x20rails.','evidence':[]},{'id':'E27','class':'exception','name':'Duplicate\x20order\x20(cancel\x20one\x20of\x20two\x20identical\x20orders)','actor':'buyer','precondition':['M6'],'onchain':'not_applicable','commercialSemantics':'Orders\x20are\x20independent\x20objects;\x20the\x20buyer\x20cancels\x20the\x20duplicate\x20through\x20the\x20normal\x20cancel\x20rails\x20(E4/E5).','evidence':[]},{'id':'E28','class':'exception','name':'Mispriced\x20promotion\x20(price-difference\x20refund)','actor':'platform','precondition':['M3'],'onchain':'expressible_with_gap','chainFootprint':{'forward':'RefundPriceDiff','moneyEffect':'refund'},'commercialSemantics':'No\x20price-difference\x20rail;\x20known\x20chain\x20defect\x20A-4\x20makes\x20it\x20worse\x20—\x20a\x20coupon\x20below\x20benchmark\x20changes\x20no\x20price\x20yet\x20the\x20voucher\x20is\x20still\x20burned.','gapPredicate':{'probe':'price.?difference|coupon[^\x22]{0,80}(burn|wasted)|burned[^\x22]{0,80}coupon'},'evidence':[]},{'id':'E29','class':'exception','name':'Scheduled-order\x20tiered\x20cancellation\x20fees','actor':'buyer','precondition':['M6'],'onchain':'expressible_with_gap','chainFootprint':{'forward':'ScheduledKill','moneyEffect':'refund'},'commercialSemantics':'Scheduled\x20(pre-order)\x20meals\x20use\x20time-graded\x20cancel\x20fees;\x20kill_fee_bps\x20is\x20a\x20single\x20flat\x20rate\x20—\x20no\x20tiers,\x20no\x20scheduled-order\x20shape.','gapPredicate':{'probe':'tiered|scheduled|appointment'},'evidence':[]},{'id':'E30','class':'exception','name':'Rider\x20accident\x20/\x20personal-injury\x20insurance','actor':'platform','precondition':['M9'],'onchain':'unresolvable','commercialSemantics':'Rider\x20injury\x20coverage\x20is\x20an\x20insurance\x20product;\x20the\x20chain\x20has\x20no\x20insurance\x20primitive\x20—\x20coverage\x20is\x20an\x20off-chain\x20policy\x20under\x20platform-work\x20and\x20traffic\x20law.','unresolvableRef':'S10','disclosureProbe':'accident[^\x22]{0,80}insurance|insurance[^\x22]{0,80}rider|injury','evidence':[]},{'id':'E31','class':'post','name':'Post-delivery\x20tip\x20top-up','actor':'buyer','precondition':['M16'],'onchain':'expressible','chainFootprint':{'forward':'AddTip','moneyEffect':'reward'},'commercialSemantics':'A\x20post-delivery\x20tip\x20is\x20expressible\x20(Reward\x20claim,\x20P6),\x20but\x20courier_tip_bps\x20is\x20DISCLOSURE-ONLY\x20and\x20rides\x20the\x20order\x20total\x20—\x20no\x20independent\x20post-delivery\x20tip\x20funding\x20path\x20ships.','evidence':[]},{'id':'E32','class':'exception','name':'Membership\x20free-delivery\x20not\x20applied\x20(delivery-fee\x20rebate)','actor':'platform','precondition':['M6'],'onchain':'expressible','chainFootprint':{'forward':'DeliveryFeeRebate','moneyEffect':'refund'},'commercialSemantics':'Cross-template\x20membership\x20linkage\x20(subscription/delivery-membership)\x20has\x20no\x20on-chain\x20grouping\x20(S2)\x20—\x20the\x20rebate\x20must\x20be\x20an\x20independent\x20order-level\x20remedy.','evidence':[]}],'invariants':[{'id':'INV-FD-1','statement':'Food-safety\x20compensation\x20must\x20reach\x20price\x20x10\x20or\x20loss\x20x3\x20with\x20a\x201000\x20CNY\x20floor\x20(China\x20Food\x20Safety\x20Law\x20art.\x20148).','jurisdiction':'CN','chainConflict':'The\x20chain\x20caps\x20arbitration\x20indemnity\x20at\x203x\x20the\x20order\x20amount\x20(the\x20MAX_INDEMNITY_MULTIPLE\x20constant)\x20and\x20hard-binds\x20the\x20payee\x20to\x20order.owner\x20—\x20the\x20statutory\x20multiple\x20and\x20the\x20small-claim\x20floor\x20are\x20unreachable\x20on-chain.\x20Options:\x20disclose\x20the\x203x\x20cap\x20and\x20pursue\x20the\x20statutory\x20remainder\x20off-chain;\x20pre-fund\x20a\x20Reward\x20pool\x20for\x20the\x20difference;\x20or\x20raise\x20the\x20chain\x20cap\x20(protocol\x20upgrade,\x20affects\x20every\x20published\x20Service\x27s\x20exposure).','evidence':[{'file':'arb.move','line':0x15,'pattern':'MAX_INDEMNITY_MULTIPLE:u64\x20=\x203'}]},{'id':'INV-FD-2','statement':'A\x20cancel\x20caused\x20by\x20capacity\x20shortage\x20(no\x20rider\x20accepted)\x20must\x20be\x20free\x20for\x20the\x20buyer\x20—\x20the\x20fulfillment\x20failure\x20is\x20not\x20the\x20buyer\x27s\x20fault.','chainConflict':'None\x20—\x20this\x20is\x20pure\x20business\x20semantics\x20and\x20the\x20fix\x20is\x20zero-chain-change:\x20add\x20a\x20CancelForNoCapacity\x20edge\x20into\x20the\x20full-refund\x20terminal,\x20guarded\x20on\x20\x27still\x20pre-pickup\x27\x20plus\x20a\x20clock\x20past\x20the\x20promised\x20dispatch\x20window.','violation':{'requiresFeeParamNonZero':'kill_fee_bps','whileMissingForward':'CancelForNoCapacity'}},{'id':'INV-FD-3','statement':'Rider\x20pay\x20is\x20off-chain\x20platform\x20payroll\x20in\x20the\x20shipped\x20shape;\x20nothing\x20on\x20chain\x20pays\x20the\x20courier\x20per\x20order.','chainConflict':'The\x20platform\x20Rate-0\x20allocator\x20leg\x20pays\x20nothing\x20(it\x20shares\x20the\x20settlement\x20rail\x20as\x20an\x20order\x20anchor).\x20Builders\x20who\x20misread\x20it\x20as\x20\x27the\x20platform\x20pays\x20riders\x20from\x20escrow\x27\x20are\x20wrong:\x20direct\x20per-order\x20rider\x20pay\x20requires\x20an\x20explicit\x20Entity/Signer\x20leg\x20(the\x20on-chain\x20allocation\x20Entity/Signer\x20payout\x20path)\x20or\x20a\x20Reward\x20claim.\x20EU\x20note:\x20platform-set\x20pay\x20+\x20dispatch\x20roster\x20+\x20electronic\x20monitoring\x20hit\x20the\x20Platform\x20Work\x20Directive\x20presumptive-employment\x20criteria\x20—\x20in\x20EU\x20builds\x20riders\x20must\x20quote\x20their\x20own\x20price\x20or\x20the\x20merchant_managed\x20variant\x20is\x20used.'}]};
@@ -0,0 +1,188 @@
1
+ import { z } from "zod";
2
+ import type { SourceAnchor } from "../../chain-semantics/index.js";
3
+ export type PathClass = "main" | "exception" | "remedy" | "post" | "offchain";
4
+ export type OnchainStatus = "expressible" | "expressible_with_gap" | "disclosure_only" | "not_applicable" | "unresolvable";
5
+ export type OracleActor = "buyer" | "merchant" | "fulfiller" | "platform" | "arbitrator" | "keeper";
6
+ export declare const OracleStepSchema: z.ZodObject<{
7
+ id: z.ZodString;
8
+ class: z.ZodEnum<{
9
+ exception: "exception";
10
+ remedy: "remedy";
11
+ main: "main";
12
+ post: "post";
13
+ offchain: "offchain";
14
+ }>;
15
+ name: z.ZodString;
16
+ actor: z.ZodEnum<{
17
+ merchant: "merchant";
18
+ arbitrator: "arbitrator";
19
+ buyer: "buyer";
20
+ platform: "platform";
21
+ fulfiller: "fulfiller";
22
+ keeper: "keeper";
23
+ }>;
24
+ precondition: z.ZodArray<z.ZodString>;
25
+ onchain: z.ZodEnum<{
26
+ not_applicable: "not_applicable";
27
+ expressible: "expressible";
28
+ expressible_with_gap: "expressible_with_gap";
29
+ disclosure_only: "disclosure_only";
30
+ unresolvable: "unresolvable";
31
+ }>;
32
+ chainFootprint: z.ZodOptional<z.ZodObject<{
33
+ node: z.ZodOptional<z.ZodString>;
34
+ forward: z.ZodOptional<z.ZodString>;
35
+ prev: z.ZodOptional<z.ZodString>;
36
+ identity: z.ZodOptional<z.ZodEnum<{
37
+ order_holder: "order_holder";
38
+ permission_index: "permission_index";
39
+ named_operator: "named_operator";
40
+ signer: "signer";
41
+ }>>;
42
+ guardLegs: z.ZodOptional<z.ZodArray<z.ZodString>>;
43
+ moneyEffect: z.ZodOptional<z.ZodEnum<{
44
+ refund: "refund";
45
+ reward: "reward";
46
+ release: "release";
47
+ none: "none";
48
+ compensate: "compensate";
49
+ escrow_in: "escrow_in";
50
+ }>>;
51
+ }, z.core.$strict>>;
52
+ commercialSemantics: z.ZodString;
53
+ unresolvableRef: z.ZodOptional<z.ZodString>;
54
+ disclosureProbe: z.ZodOptional<z.ZodString>;
55
+ guardKeyProbe: z.ZodOptional<z.ZodString>;
56
+ guardProbeKind: z.ZodOptional<z.ZodEnum<{
57
+ safety: "safety";
58
+ feature: "feature";
59
+ }>>;
60
+ gapPredicate: z.ZodOptional<z.ZodObject<{
61
+ probe: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strict>>;
63
+ evidence: z.ZodArray<z.ZodObject<{
64
+ file: z.ZodString;
65
+ line: z.ZodNumber;
66
+ pattern: z.ZodString;
67
+ }, z.core.$strip>>;
68
+ }, z.core.$strict>;
69
+ export type OracleStep = z.infer<typeof OracleStepSchema>;
70
+ export declare const OracleInvariantSchema: z.ZodObject<{
71
+ id: z.ZodString;
72
+ statement: z.ZodString;
73
+ jurisdiction: z.ZodOptional<z.ZodString>;
74
+ chainConflict: z.ZodOptional<z.ZodString>;
75
+ evidence: z.ZodOptional<z.ZodArray<z.ZodObject<{
76
+ file: z.ZodString;
77
+ line: z.ZodNumber;
78
+ pattern: z.ZodString;
79
+ }, z.core.$strip>>>;
80
+ violation: z.ZodOptional<z.ZodObject<{
81
+ requiresFeeParamNonZero: z.ZodOptional<z.ZodString>;
82
+ whileMissingForward: z.ZodOptional<z.ZodString>;
83
+ }, z.core.$strict>>;
84
+ }, z.core.$strict>;
85
+ export type OracleInvariant = z.infer<typeof OracleInvariantSchema>;
86
+ export declare const ProductOracleSchema: z.ZodObject<{
87
+ productRef: z.ZodString;
88
+ products: z.ZodArray<z.ZodString>;
89
+ oracleVersion: z.ZodString;
90
+ steps: z.ZodArray<z.ZodObject<{
91
+ id: z.ZodString;
92
+ class: z.ZodEnum<{
93
+ exception: "exception";
94
+ remedy: "remedy";
95
+ main: "main";
96
+ post: "post";
97
+ offchain: "offchain";
98
+ }>;
99
+ name: z.ZodString;
100
+ actor: z.ZodEnum<{
101
+ merchant: "merchant";
102
+ arbitrator: "arbitrator";
103
+ buyer: "buyer";
104
+ platform: "platform";
105
+ fulfiller: "fulfiller";
106
+ keeper: "keeper";
107
+ }>;
108
+ precondition: z.ZodArray<z.ZodString>;
109
+ onchain: z.ZodEnum<{
110
+ not_applicable: "not_applicable";
111
+ expressible: "expressible";
112
+ expressible_with_gap: "expressible_with_gap";
113
+ disclosure_only: "disclosure_only";
114
+ unresolvable: "unresolvable";
115
+ }>;
116
+ chainFootprint: z.ZodOptional<z.ZodObject<{
117
+ node: z.ZodOptional<z.ZodString>;
118
+ forward: z.ZodOptional<z.ZodString>;
119
+ prev: z.ZodOptional<z.ZodString>;
120
+ identity: z.ZodOptional<z.ZodEnum<{
121
+ order_holder: "order_holder";
122
+ permission_index: "permission_index";
123
+ named_operator: "named_operator";
124
+ signer: "signer";
125
+ }>>;
126
+ guardLegs: z.ZodOptional<z.ZodArray<z.ZodString>>;
127
+ moneyEffect: z.ZodOptional<z.ZodEnum<{
128
+ refund: "refund";
129
+ reward: "reward";
130
+ release: "release";
131
+ none: "none";
132
+ compensate: "compensate";
133
+ escrow_in: "escrow_in";
134
+ }>>;
135
+ }, z.core.$strict>>;
136
+ commercialSemantics: z.ZodString;
137
+ unresolvableRef: z.ZodOptional<z.ZodString>;
138
+ disclosureProbe: z.ZodOptional<z.ZodString>;
139
+ guardKeyProbe: z.ZodOptional<z.ZodString>;
140
+ guardProbeKind: z.ZodOptional<z.ZodEnum<{
141
+ safety: "safety";
142
+ feature: "feature";
143
+ }>>;
144
+ gapPredicate: z.ZodOptional<z.ZodObject<{
145
+ probe: z.ZodOptional<z.ZodString>;
146
+ }, z.core.$strict>>;
147
+ evidence: z.ZodArray<z.ZodObject<{
148
+ file: z.ZodString;
149
+ line: z.ZodNumber;
150
+ pattern: z.ZodString;
151
+ }, z.core.$strip>>;
152
+ }, z.core.$strict>>;
153
+ invariants: z.ZodArray<z.ZodObject<{
154
+ id: z.ZodString;
155
+ statement: z.ZodString;
156
+ jurisdiction: z.ZodOptional<z.ZodString>;
157
+ chainConflict: z.ZodOptional<z.ZodString>;
158
+ evidence: z.ZodOptional<z.ZodArray<z.ZodObject<{
159
+ file: z.ZodString;
160
+ line: z.ZodNumber;
161
+ pattern: z.ZodString;
162
+ }, z.core.$strip>>>;
163
+ violation: z.ZodOptional<z.ZodObject<{
164
+ requiresFeeParamNonZero: z.ZodOptional<z.ZodString>;
165
+ whileMissingForward: z.ZodOptional<z.ZodString>;
166
+ }, z.core.$strict>>;
167
+ }, z.core.$strict>>;
168
+ }, z.core.$strict>;
169
+ export type ProductOracle = z.infer<typeof ProductOracleSchema>;
170
+ export type StepCoverageStatus = "covered" | "partial" | "missing" | "disclosed" | "disclosure_missing" | "gap_undisclosed" | "excluded" | "na_redundant";
171
+ export interface StepCoverage {
172
+ step_id: string;
173
+ status: StepCoverageStatus;
174
+ reason: string;
175
+ }
176
+ export interface OracleCoverage {
177
+ product_ref: string;
178
+ oracle_version: string;
179
+ chain_relevant: number;
180
+ path_coverage: number;
181
+ guard_coverage: number;
182
+ feature_guard_coverage: number;
183
+ disclosure_coverage: number;
184
+ invariant_hits: string[];
185
+ steps: StepCoverage[];
186
+ uncovered: StepCoverage[];
187
+ }
188
+ export type { SourceAnchor };
@@ -0,0 +1 @@
1
+ import{z}from'zod';export const OracleStepSchema=z['object']({'id':z['string']()['min'](0x1),'class':z['enum'](['main','exception','remedy','post','offchain']),'name':z['string']()['min'](0x1),'actor':z['enum'](['buyer','merchant','fulfiller','platform','arbitrator','keeper']),'precondition':z['array'](z['string']()),'onchain':z['enum'](['expressible','expressible_with_gap','disclosure_only','not_applicable','unresolvable']),'chainFootprint':z['object']({'node':z['string']()['optional'](),'forward':z['string']()['optional'](),'prev':z['string']()['optional'](),'identity':z['enum'](['permission_index','named_operator','order_holder','signer'])['optional'](),'guardLegs':z['array'](z['string']())['optional'](),'moneyEffect':z['enum'](['escrow_in','release','refund','compensate','reward','none'])['optional']()})['strict']()['optional'](),'commercialSemantics':z['string']()['min'](0x1),'unresolvableRef':z['string']()['optional'](),'disclosureProbe':z['string']()['optional'](),'guardKeyProbe':z['string']()['optional'](),'guardProbeKind':z['enum'](['safety','feature'])['optional'](),'gapPredicate':z['object']({'probe':z['string']()['optional']()})['strict']()['optional'](),'evidence':z['array'](z['object']({'file':z['string'](),'line':z['number']()['int']()['positive'](),'pattern':z['string']()}))})['strict']();export const OracleInvariantSchema=z['object']({'id':z['string']()['min'](0x1),'statement':z['string']()['min'](0x1),'jurisdiction':z['string']()['optional'](),'chainConflict':z['string']()['optional'](),'evidence':z['array'](z['object']({'file':z['string'](),'line':z['number']()['int']()['positive'](),'pattern':z['string']()}))['optional'](),'violation':z['object']({'requiresFeeParamNonZero':z['string']()['optional'](),'whileMissingForward':z['string']()['optional']()})['strict']()['optional']()})['strict']();export const ProductOracleSchema=z['object']({'productRef':z['string']()['min'](0x1),'products':z['array'](z['string']()['min'](0x1))['min'](0x1),'oracleVersion':z['string']()['min'](0x1),'steps':z['array'](OracleStepSchema)['min'](0x1),'invariants':z['array'](OracleInvariantSchema)})['strict']();
@@ -10,6 +10,8 @@ export interface TimeGuardInstantiation {
10
10
  plus_days?: string | readonly string[];
11
11
  note: string;
12
12
  }
13
+ export declare const MS_PER_DAY = 86400000;
14
+ export declare const MS_PER_HOUR = 3600000;
13
15
  export declare const TIME_GUARD_INSTANTIATIONS: readonly TimeGuardInstantiation[];
14
16
  export declare const TWIN_PARAM: {
15
17
  readonly days: "claim_window_days";
@@ -1 +1 @@
1
- const D=0x5265c00,H=0x36ee80;export const TIME_GUARD_INSTANTIATIONS=[{'template':'retail/scale-marketplace','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'retail/scale-marketplace','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/scale-marketplace','guard_key':'return_window','direction':'upper','anchor':'delivered','days':'return_window_days','note':'return\x20request\x20inside\x20the\x20policy\x20window'},{'template':'retail/scale-marketplace','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/warehouse-club','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'retail/warehouse-club','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/warehouse-club','guard_key':'return_window','direction':'upper','anchor':'delivered','days':'return_window_days','note':'return\x20request\x20inside\x20the\x20policy\x20window'},{'template':'retail/warehouse-club','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/preorder-deposit','guard_key':'balance_window_open','direction':'lower','anchor':'deposit_paid','days':'production_lead_days','note':'balance\x20window\x20opens\x20after\x20the\x20production\x20lead'},{'template':'retail/preorder-deposit','guard_key':'balance_deadline','direction':'lower','anchor':'balance_due','days':'balance_window_days','note':'balance-window\x20timeout'},{'template':'retail/preorder-deposit','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/preorder-deposit','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/restock-supply','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/restock-supply','guard_key':'restock_confirm_timeout','direction':'lower','anchor':'delivered','days':'restock_confirm_days','note':'restock\x20confirmation\x20timeout'},{'template':'retail/vertical-handmade','guard_key':'ship_timeout','direction':'lower','anchor':'confirmed','days':'processing_time_days','note':'unshipped\x20order\x20cancels\x20after\x20the\x20processing\x20time'},{'template':'retail/vertical-handmade','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'freelance/enterprise-talent-market','guard_key':'review_settle_clock','direction':'lower','anchor':'reviewed','days':'settlement_delay_days','note':'settle\x20N\x20days\x20after\x20review'},{'template':'freelance/enterprise-talent-market','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','days':'escrow_release_days','note':'keeper\x20auto-accepts\x20the\x20delivery\x20N\x20days\x20after\x20submission\x20(the\x20timeout\x20branch\x20of\x20the\x20dual-branch\x20acceptance)'},{'template':'freelance/enterprise-talent-market','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/catalog-tiers','guard_key':'requirements_timeout_48h','direction':'lower','anchor':'in_progress','hours':'requirements_timeout_hours','note':'requirements\x20timeout'},{'template':'freelance/catalog-tiers','guard_key':'cancel_response_timeout','direction':'lower','anchor':'cancel_requested','hours':'response_timeout_hours','note':'keeper\x20auto-cancel\x20after\x20the\x20seller\x27s\x20silence'},{'template':'freelance/catalog-tiers','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','days':'escrow_release_days','note':'auto-accept\x20N\x20days\x20after\x20delivery\x20(buyer\x20silence)'},{'template':'freelance/catalog-tiers','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/catalog-tiers','guard_key':'review_settle_clock','direction':'lower','anchor':'reviewed','days':'settlement_delay_days','note':'settle\x20N\x20days\x20after\x20review'},{'template':'freelance/creator-zero-commission','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','hours':'acceptance_timeout_hours','note':'delivery\x20acceptance\x20timeout'},{'template':'freelance/creator-zero-commission','guard_key':'defect_report_window','direction':'upper','anchor':'delivered','hours':'defect_report_window_hours','note':'defect\x20report\x20window\x20after\x20delivery'},{'template':'freelance/creator-zero-commission','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/design-contest','guard_key':'submission_window','direction':'lower','anchor':'funded','days':'submission_window_days','note':'submissions\x20close\x20N\x20days\x20after\x20funding'},{'template':'freelance/design-contest','guard_key':'appeal_window','direction':'lower','anchor':'placement_provisional','days':'appeal_window_days','note':'placement\x20finalizes\x20after\x20the\x20appeal\x20window'},{'template':'freelance/design-contest','guard_key':'delivery_window','direction':'lower','anchor':'final_delivery','days':'delivery_window_days','note':'final\x20delivery\x20acceptance\x20timeout'},{'template':'rental/p2p-shortstay','guard_key':'confirm_expire','direction':'lower','anchor':'reserved','hours':'confirm_window_hours','note':'unconfirmed\x20booking\x20expires'},{'template':'rental/p2p-shortstay','guard_key':'claim_window_closed','direction':'lower','anchor':'claim_window','days':'claim_window_days','note':'no-claim\x20release\x20after\x20the\x20claim\x20window'},{'template':'rental/p2p-shortstay','guard_key':'guest_claim_window_open','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'guest\x20files\x20a\x20claim\x20inside\x20the\x20claim\x20window'},{'template':'rental/institutional-longstay','guard_key':'return_notice','direction':'lower','anchor':'in_use','days':'return_notice_days','note':'return\x20notice\x20lead\x20time'},{'template':'rental/institutional-longstay','guard_key':'nofault_window','direction':'upper','anchor':'deposit_paid','multimount':!![],'days':'no_fault_exit_days','note':'no-fault\x20exit\x20within\x20no_fault_exit_days\x20of\x20signing,\x20on\x20both\x20buyer\x20exits\x20into\x20closed_cancel\x20(pre-handover\x20and\x20mid-lease\x20—\x20in_use\x20is\x20only\x20entered\x20from\x20deposit_paid,\x20whose\x20entry\x20IS\x20the\x20signing)'},{'template':'rental/institutional-longstay','guard_key':'review_window','direction':'upper','anchor':'inspected','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20the\x20passing\x20inspection'},{'template':'travel/destination-experience','guard_key':'free_cancel','direction':'upper','anchor':'paid','hours':'free_cancel_hours','note':'free\x20cancellation\x20window'},{'template':'travel/destination-experience','guard_key':'poststay_claim_window','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'post-stay\x20claim\x20window'},{'template':'travel/destination-experience','guard_key':'release_no_claim_clock','direction':'lower','anchor':'claim_window','days':'claim_window_days','note':'no-claim\x20release\x20after\x20the\x20claim\x20window'},{'template':'delivery/on-demand-errand','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'delivered','hours':'auto_confirm_hours','note':'auto-confirm\x20N\x20hours\x20after\x20delivery'},{'template':'delivery/on-demand-errand','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','hours':'claim_window_hours','note':'claim\x20window'},{'template':'group_buy/leader-sourced-community','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','hours':'claim_window_hours','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'subscription/delivery-membership','guard_key':'period_end','direction':'lower','anchor':'active','days':'period_days','note':'membership\x20period\x20clock:\x20active\x20entry\x20+\x20period_days\x20before\x20the\x20keeper\x20may\x20complete'},{'template':'subscription/creator-membership','guard_key':'period_expiry','direction':'lower','anchor':'delivered','multimount':!![],'days':'period_days','plus_days':'grace_days','note':'period\x20expiry\x20=\x20delivery\x20+\x20period_days\x20+\x20grace_days,\x20on\x20every\x20keeper\x20lapse'},{'template':'subscription/direct-fan-subscription','guard_key':'period_expiry','direction':'lower','anchor':'delivered','multimount':!![],'days':'period_days','plus_days':'grace_days','note':'period\x20expiry\x20=\x20delivery\x20+\x20period_days\x20+\x20grace_days,\x20on\x20every\x20keeper\x20lapse'},{'template':'education/live-class-cohort','guard_key':'review_window','direction':'upper','anchor':'completed_ready','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20completion\x20readiness'},{'template':'education/mooc-single-course','guard_key':'review_window','direction':'upper','anchor':'certified','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20certification'},{'template':'subscription/creator-membership','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20period\x20delivery'},{'template':'subscription/direct-fan-subscription','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20period\x20delivery\x20—\x20keep\x20period_days\x20+\x20grace_days\x20>\x20review_window_days\x20or\x20the\x20keeper\x20expire\x20kills\x20the\x20open\x20window'},{'template':'retail/preorder-deposit','guard_key':'return_window_presale','direction':'upper','anchor':'delivered','multimount':!![],'days':'return_window_days','note':'return\x20requested\x20within\x20N\x20days\x20of\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'rental/p2p-shortstay','guard_key':'review_window','direction':'upper','anchor':'checked_out','multimount':!![],'days':'review_window_days','note':'review\x20within\x20N\x20days\x20of\x20checkout,\x20including\x20once\x20the\x20claim\x20window\x20has\x20opened'},{'template':'education/mooc-single-course','guard_key':'return_window','direction':'upper','anchor':'paid','multimount':!![],'days':'refund_window_days','note':'refund\x20requested\x20within\x20N\x20days\x20of\x20purchase,\x20from\x20any\x20pre-delivery\x20stage'},{'template':'retail/scale-marketplace','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','days':'settlement_days','plus_days':['reserve_days','return_window_days'],'note':'settlement\x20opens\x20after\x20the\x20MERGED\x20lock:\x20settlement_days\x20+\x20reserve_days\x20+\x20return_window_days\x20(the\x20declaration\x20settlement_window_merge;\x2014\x20+\x207\x20+\x2030\x20=\x2051\x20days\x20by\x20default)\x20—\x20the\x20release\x20cannot\x20fire\x20while\x20the\x20return\x20window\x20can\x20still\x20draw\x20the\x20escrow'},{'template':'retail/warehouse-club','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','days':'settlement_delay_days','note':'settlement\x20opens\x20N\x20days\x20after\x20the\x20claim\x20window\x20(coupled\x20to\x20the\x20return\x20window)'},{'template':'retail/preorder-deposit','guard_key':'settle_window_gate','direction':'lower','anchor':'delivered','multimount':!![],'days':'settlement_days','note':'balance\x20settlement\x20opens\x20N\x20days\x20after\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'retail/vertical-handmade','guard_key':'settle_clock','direction':'lower','anchor':'delivered','multimount':!![],'days':'settlement_delay_days','note':'settlement\x20opens\x20N\x20days\x20after\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'delivery/on-demand-errand','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','hours':'settle_hours','note':'settlement\x20opens\x20N\x20hours\x20after\x20the\x20claim\x20window'},{'template':'group_buy/leader-sourced-community','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','hours':'settle_hours','note':'settlement\x20opens\x20N\x20hours\x20after\x20the\x20claim\x20window,\x20past\x20the\x20after-sales\x20track'}];export const TWIN_PARAM={'days':'claim_window_days','hours':'duration_ms'};export function twinFor(a,b){if(b==='days')return a==='upper'?'tpl_time_window_upper_progress_days':'tpl_time_lock_progress_days';return a==='upper'?'tpl_time_window_upper':'tpl_time_lock_progress';}export const MULTI_MOUNT_TWIN='tpl_time_window_upper_history_days';export const MULTI_MOUNT_OPENING_TWIN='tpl_time_lock_history_days';export function multiMountTwin(a){return a==='upper'?MULTI_MOUNT_TWIN:MULTI_MOUNT_OPENING_TWIN;}export function unitScale(a){return a==='days'?0x1:H;}const BY_SPEC=new Map();for(const row of TIME_GUARD_INSTANTIATIONS)BY_SPEC['set'](row['template']+'\x00'+row['guard_key'],row);export function timeInstantiationFor(a,b){return BY_SPEC['get'](a+'\x00'+b);}export function patternDefaultResolution(a,b){const c=timeInstantiationFor(a,b);if(c===undefined)return undefined;const d=c['days']!==undefined?'days':'hours';if(c['multimount']===!![])return{'kind':'template','template_id':multiMountTwin(c['direction']),'params':{'anchor_node':c['anchor']}};return{'kind':'template','template_id':twinFor(c['direction'],d),'params':{'expected_node':c['anchor']}};}function mountInfo(a,b){const c=[];for(const d of a['machine_shape']??[]){const f=d['from']??[];for(const g of f){const h=typeof g==='string'?{'prev':g}:g;if(h['guard_key']!==b)continue;const i=h['operator']??d['operator']??(h['prev']===''?'order_payer':'merchant');c['push']({'prev':h['prev']??'','operator':i});}}return c;}export const IDENTITY_PATTERN='pattern.identity_check_order_holder';export const IDENTITY_TWIN='tpl_forward_order_holder';export const IDENTITY_RECOVER_RAIL_TWIN='tpl_allocator_node_gate_recover';export const IDENTITY_REFUND_RAIL_TWIN='tpl_allocator_identity_set_order_holder';function railTracks(a,b){return(a['allocator']?.['rows']??[])['filter'](c=>c['guard_key']===b)['map'](c=>c['track']??'');}function hasAwardRailSibling(a,b){return a['guards']['some'](c=>{if(c['template_id']===IDENTITY_RECOVER_RAIL_TWIN)return!![];const d=c['key'];if(d===undefined||d===b)return![];if(!/recover|award/i['test'](d))return![];if(!/pattern\./i['test'](c['template_id']))return![];return edgeMounts(a,d)['length']===0x0&&railTracks(a,d)['length']>0x0;});}function edgeMounts(a,b){return mountInfo(a,b);}export function identitySkipReason(a,b){if(b['template_id']!==IDENTITY_PATTERN)return'not\x20an\x20identity\x20design';if(b['key']===undefined)return'declared\x20without\x20a\x20key:\x20it\x20names\x20a\x20policy,\x20not\x20a\x20rail';const c=b['key'],d=railTracks(a,c),e=edgeMounts(a,c);if(e['length']===0x0){if(d['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';if(/recover|award/i['test'](c))return undefined;if(/refund/i['test'](c)&&d['every'](g=>/refund/i['test'](g))){if(hasAwardRailSibling(a,c))return'rail-bound\x20refund\x20next\x20to\x20an\x20award-polarity\x20rail:\x20the\x20order-holder\x20refund\x20set\x20is\x20polarity-blind\x20(no\x20claimed_by\x20==\x20false\x20leg),\x20so\x20instantiating\x20both\x20reads\x20as\x20a\x20double-pay\x20shape\x20(RAIL-03)\x20—\x20resolve\x20the\x20refund\x20rail\x20explicitly';return undefined;}return'bound\x20to\x20an\x20allocator\x20row\x20only:\x20no\x20executable\x20twin\x20matches\x20this\x20key/track\x20pair\x20(a\x20settlement\x20rail\x20asks\x20a\x20different\x20question)';}if(d['length']>0x0)return'also\x20bound\x20to\x20an\x20allocator\x20row:\x20one\x20design\x20cannot\x20serve\x20a\x20forward\x20and\x20a\x20rail';const f=e['filter'](g=>g['operator']!=='order_payer');if(f['length']>0x0)return'mounted\x20on\x20'+f['length']+'\x20non-buyer\x20forward(s)\x20('+[...new Set(f['map'](g=>g['operator']))]['join']('/')+'):\x20'+'an\x20order-holder\x20leg\x20is\x20unsatisfiable\x20on\x20a\x20permission-index\x20rail';return undefined;}export function identityDefaultResolution(a,b){if(identitySkipReason(a,b)!==undefined)return undefined;const c=b['key'];if(edgeMounts(a,c)['length']===0x0){if(/recover|award/i['test'](c))return{'kind':'template','template_id':IDENTITY_RECOVER_RAIL_TWIN,'params':{}};return{'kind':'template','template_id':IDENTITY_REFUND_RAIL_TWIN,'params':{}};}return{'kind':'template','template_id':IDENTITY_TWIN,'params':{}};}export function identityCensus(a){const b=[];for(const c of a){c['guards']['forEach']((d,e)=>{if(d['template_id']!==IDENTITY_PATTERN)return;const f=d['key']??d['template_id']+'#'+e,h=identitySkipReason(c,d);b['push']({'template':c['id'],'key':f,...h!==undefined?{'skipped':h}:{}});});}return b;}export const PROGRESS_PATTERN='pattern.progress_state_check';export const PROGRESS_NODE_CHECK_TWIN='tpl_forward_node_check';export const PROGRESS_RECOVER_RAIL_TWIN='tpl_allocator_node_gate_recover';export function progressSkipReason(a,b){if(b['template_id']!==PROGRESS_PATTERN)return'not\x20a\x20progress-state\x20design';if(b['key']===undefined)return'declared\x20without\x20a\x20key:\x20it\x20names\x20a\x20policy,\x20not\x20a\x20rail';const c=b['key'],d=railTracks(a,c),e=edgeMounts(a,c);if(/recover|award/i['test'](c)){if(e['length']===0x0&&d['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';return undefined;}if(d['length']>0x0)return e['length']>0x0?'bound\x20to\x20BOTH\x20a\x20forward\x20and\x20an\x20allocator\x20rail:\x20a\x20node-gated\x20twin\x20cannot\x20serve\x20the\x20pre-advance\x20forward\x20and\x20the\x20post-advance\x20allocator\x20(D8)':'rail-bound\x20with\x20no\x20forward\x20mount:\x20the\x20graph\x20cannot\x20say\x20which\x20node\x20the\x20order\x20occupies\x20when\x20the\x20rail\x20fires\x20(pinning\x20one\x20strands\x20the\x20escrow\x20below\x20it\x20—\x20UPWC-K1)';if(e['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';const f=[...new Set(e['map'](g=>g['prev']))];if(f['length']>0x1)return'mounted\x20on\x20'+e['length']+'\x20forwards\x20from\x20DIFFERENT\x20prev\x20nodes\x20('+f['join']('/')+'):\x20one\x20expected_node\x20cannot\x20serve\x20them';return undefined;}export function progressStateDefaultResolution(a,b){if(progressSkipReason(a,b)!==undefined)return undefined;if(/recover|award/i['test'](b['key']))return{'kind':'template','template_id':PROGRESS_RECOVER_RAIL_TWIN,'params':{}};return{'kind':'template','template_id':PROGRESS_NODE_CHECK_TWIN,'params':{'expected_node':edgeMounts(a,b['key'])[0x0]['prev']}};}export function progressCensus(a){const b=[];for(const c of a){c['guards']['forEach']((d,e)=>{if(d['template_id']!==PROGRESS_PATTERN)return;const f=d['key']??d['template_id']+'#'+e,h=progressSkipReason(c,d);b['push']({'template':c['id'],'key':f,...h!==undefined?{'skipped':h}:{}});});}return b;}export function timeInstantiationIssues(a,b){const c=[],d=new Map(a['map'](f=>[f['id'],f])),e=new Set();for(const f of TIME_GUARD_INSTANTIATIONS){const h=f['template']+'\x00'+f['guard_key'];if(e['has'](h))c['push']({'row':f,'problem':'duplicate\x20row'});e['add'](h);const i=d['get'](f['template']);if(i===undefined){c['push']({'row':f,'problem':'template\x20\x27'+f['template']+'\x27\x20does\x20not\x20exist'});continue;}const j=i['guards']['find'](u=>u['key']===f['guard_key']);if(j===undefined){c['push']({'row':f,'problem':'guard\x20\x27'+f['guard_key']+'\x27\x20is\x20not\x20declared\x20by\x20'+f['template']});continue;}const k=f['direction']==='upper'?'pattern.time_window_upper_bound':'pattern.time_lock_progress';j['template_id']!==k&&c['push']({'row':f,'problem':'guard\x20declares\x20\x27'+j['template_id']+'\x27,\x20expected\x20\x27'+k+'\x27\x20for\x20a\x20'+f['direction']+'\x20window'});const l=(i['allocator']?.['rows']??[])['filter'](u=>u['guard_key']===f['guard_key'])['length'];if(l>0x0){c['push']({'row':f,'problem':'guard\x20is\x20also\x20bound\x20to\x20'+l+'\x20allocator\x20row(s):\x20a\x20node-gated\x20twin\x20cannot\x20serve\x20the\x20'+'pre-advance\x20forward\x20and\x20the\x20post-advance\x20allocator\x20(and\x20a\x20second\x20mount\x20would\x20double\x20the\x20wait)'});continue;}const m=mountInfo(i,f['guard_key']);if(f['multimount']!==!![]){if(m['length']!==0x1){c['push']({'row':f,'problem':'guard\x20has\x20'+m['length']+'\x20mounts;\x20a\x20shared\x20expected_node\x20needs\x20exactly\x20one'});continue;}m[0x0]['prev']!==f['anchor']&&c['push']({'row':f,'problem':'anchor\x20\x27'+f['anchor']+'\x27\x20!=\x20mount\x20prev\x20\x27'+m[0x0]['prev']+'\x27'});const u=f['direction']==='upper'?'order_payer':'merchant';m[0x0]['operator']!==u&&c['push']({'row':f,'problem':'mount\x20operator\x20\x27'+m[0x0]['operator']+'\x27\x20!=\x20\x27'+u+'\x27:\x20an\x20'+f['direction']+'\x20window\x20on\x20the\x20wrong\x20'+'signer\x20set\x20is\x20either\x20callable\x20by\x20anyone\x20(upper)\x20or\x20unsatisfiable\x20(identity\x20leg\x20over\x20a\x20permission-index\x20rail)'});}else{(f['days']===undefined||f['hours']!==undefined)&&c['push']({'row':f,'problem':'the\x20pin-free\x20twin\x20takes\x20a\x20day\x20window;\x20declare\x20days\x20and\x20no\x20hours'});m['length']===0x0&&c['push']({'row':f,'problem':'guard\x20is\x20bound\x20to\x20no\x20forward\x20—\x20a\x20window\x20nobody\x20mounts\x20is\x20not\x20a\x20rail'});const v=f['direction']==='upper'?'order_payer':'merchant',w=m['filter'](x=>x['operator']!==v);w['length']>0x0&&c['push']({'row':f,'problem':w['length']+'\x20mount(s)\x20ride\x20\x27'+[...new Set(w['map'](x=>x['operator']))]['join']('/')+'\x27\x20but\x20a\x20'+f['direction']+'\x20'+('multi-mount\x20twin\x20needs\x20\x27'+v+'\x27\x20')+(f['direction']==='upper'?'(the\x20twin\x27s\x20order-holder\x20leg\x20is\x20unsatisfiable\x20on\x20a\x20permission-index\x20rail)':'(the\x20opening\x20twin\x20ships\x20no\x20signer\x20leg,\x20so\x20a\x20buyer\x20rail\x20would\x20be\x20left\x20unauthenticated)')}),m['length']>0x0&&!m['some'](x=>x['prev']===f['anchor'])&&c['push']({'row':f,'problem':'no\x20mount\x20starts\x20at\x20anchor\x20\x27'+f['anchor']+'\x27\x20(mounts:\x20'+m['map'](x=>x['prev'])['join'](',\x20')+'):\x20'+'the\x20anchor\x20must\x20be\x20the\x20entry\x20that\x20opens\x20the\x20window\x20on\x20at\x20least\x20one\x20path'});}const n=f['days']!==undefined?'days':f['hours']!==undefined?'hours':undefined;if(n===undefined||f['days']!==undefined&&f['hours']!==undefined){c['push']({'row':f,'problem':'exactly\x20one\x20of\x20days/hours\x20must\x20be\x20declared'});continue;}const o=f['days']??f['hours'];i['fee_params'][o]===undefined&&c['push']({'row':f,'problem':'fee_param\x20\x27'+o+'\x27\x20is\x20not\x20declared\x20by\x20'+f['template']});for(const x of f['plus_days']===undefined?[]:typeof f['plus_days']==='string'?[f['plus_days']]:f['plus_days']){i['fee_params'][x]===undefined&&c['push']({'row':f,'problem':'fee_param\x20\x27'+x+'\x27\x20(plus_days)\x20is\x20not\x20declared\x20by\x20'+f['template']});}const p=f['multimount']===!![]?multiMountTwin(f['direction']):twinFor(f['direction'],n),q=b['get'](p);if(q===undefined){c['push']({'row':f,'problem':'twin\x20template\x20\x27'+p+'\x27\x20is\x20not\x20in\x20the\x20guard-template\x20registry'});continue;}const r=new Set(q['map'](y=>y['name'])),s=f['multimount']===!![]?'anchor_node':'expected_node';for(const y of[s,TWIN_PARAM[n]]){if(!r['has'](y))c['push']({'row':f,'problem':'twin\x20\x27'+p+'\x27\x20declares\x20no\x20param\x20\x27'+y+'\x27'});}}return c;}
1
+ export const MS_PER_DAY=0x5265c00;export const MS_PER_HOUR=0x36ee80;export const TIME_GUARD_INSTANTIATIONS=[{'template':'retail/scale-marketplace','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'retail/scale-marketplace','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/scale-marketplace','guard_key':'return_window','direction':'upper','anchor':'delivered','days':'return_window_days','note':'return\x20request\x20inside\x20the\x20policy\x20window'},{'template':'retail/scale-marketplace','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/warehouse-club','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'retail/warehouse-club','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/warehouse-club','guard_key':'return_window','direction':'upper','anchor':'delivered','days':'return_window_days','note':'return\x20request\x20inside\x20the\x20policy\x20window'},{'template':'retail/warehouse-club','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/preorder-deposit','guard_key':'balance_window_open','direction':'lower','anchor':'deposit_paid','days':'production_lead_days','note':'balance\x20window\x20opens\x20after\x20the\x20production\x20lead'},{'template':'retail/preorder-deposit','guard_key':'balance_deadline','direction':'lower','anchor':'balance_due','days':'balance_window_days','note':'balance-window\x20timeout'},{'template':'retail/preorder-deposit','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20delivery'},{'template':'retail/preorder-deposit','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/restock-supply','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'retail/restock-supply','guard_key':'restock_confirm_timeout','direction':'lower','anchor':'delivered','days':'restock_confirm_days','note':'restock\x20confirmation\x20timeout'},{'template':'retail/vertical-handmade','guard_key':'ship_timeout','direction':'lower','anchor':'confirmed','days':'processing_time_days','note':'unshipped\x20order\x20cancels\x20after\x20the\x20processing\x20time'},{'template':'retail/vertical-handmade','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'shipped','days':'auto_confirm_days','note':'auto-confirm\x20N\x20days\x20after\x20shipment'},{'template':'freelance/enterprise-talent-market','guard_key':'review_settle_clock','direction':'lower','anchor':'reviewed','days':'settlement_delay_days','note':'settle\x20N\x20days\x20after\x20review'},{'template':'freelance/enterprise-talent-market','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','days':'escrow_release_days','note':'keeper\x20auto-accepts\x20the\x20delivery\x20N\x20days\x20after\x20submission\x20(the\x20timeout\x20branch\x20of\x20the\x20dual-branch\x20acceptance)'},{'template':'freelance/enterprise-talent-market','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/catalog-tiers','guard_key':'requirements_timeout_48h','direction':'lower','anchor':'in_progress','hours':'requirements_timeout_hours','note':'requirements\x20timeout'},{'template':'freelance/catalog-tiers','guard_key':'cancel_response_timeout','direction':'lower','anchor':'cancel_requested','hours':'response_timeout_hours','note':'keeper\x20auto-cancel\x20after\x20the\x20seller\x27s\x20silence'},{'template':'freelance/catalog-tiers','guard_key':'refund_response_timeout','direction':'lower','anchor':'refund_requested','hours':'refund_response_hours','note':'keeper\x20auto-cancel\x20after\x20the\x20seller\x27s\x20silence\x20on\x20a\x20refund\x20request'},{'template':'freelance/catalog-tiers','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','days':'escrow_release_days','note':'auto-accept\x20N\x20days\x20after\x20delivery\x20(buyer\x20silence)'},{'template':'freelance/catalog-tiers','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/catalog-tiers','guard_key':'review_settle_clock','direction':'lower','anchor':'reviewed','days':'settlement_delay_days','note':'settle\x20N\x20days\x20after\x20review'},{'template':'freelance/creator-zero-commission','guard_key':'accept_timeout','direction':'lower','anchor':'delivered','hours':'acceptance_timeout_hours','note':'delivery\x20acceptance\x20timeout'},{'template':'freelance/creator-zero-commission','guard_key':'defect_report_window','direction':'upper','anchor':'delivered','hours':'defect_report_window_hours','note':'defect\x20report\x20window\x20after\x20delivery'},{'template':'freelance/creator-zero-commission','guard_key':'review_window','direction':'upper','anchor':'accepted','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20acceptance'},{'template':'freelance/design-contest','guard_key':'submission_window','direction':'lower','anchor':'funded','days':'submission_window_days','note':'submissions\x20close\x20N\x20days\x20after\x20funding'},{'template':'freelance/design-contest','guard_key':'appeal_window','direction':'lower','anchor':'placement_provisional','days':'appeal_window_days','note':'placement\x20finalizes\x20after\x20the\x20appeal\x20window'},{'template':'freelance/design-contest','guard_key':'delivery_window','direction':'lower','anchor':'final_delivery','days':'delivery_window_days','note':'final\x20delivery\x20acceptance\x20timeout'},{'template':'rental/p2p-shortstay','guard_key':'confirm_expire','direction':'lower','anchor':'reserved','hours':'confirm_window_hours','note':'unconfirmed\x20booking\x20expires'},{'template':'rental/p2p-shortstay','guard_key':'claim_window_closed','direction':'lower','anchor':'claim_window','days':'claim_window_days','note':'no-claim\x20release\x20after\x20the\x20claim\x20window'},{'template':'rental/p2p-shortstay','guard_key':'guest_claim_window_open','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'guest\x20files\x20a\x20claim\x20inside\x20the\x20claim\x20window'},{'template':'rental/institutional-longstay','guard_key':'return_notice','direction':'lower','anchor':'in_use','days':'return_notice_days','note':'return\x20notice\x20lead\x20time'},{'template':'rental/institutional-longstay','guard_key':'nofault_window','direction':'upper','anchor':'deposit_paid','multimount':!![],'days':'no_fault_exit_days','note':'no-fault\x20exit\x20within\x20no_fault_exit_days\x20of\x20signing,\x20on\x20both\x20buyer\x20exits\x20into\x20closed_cancel\x20(pre-handover\x20and\x20mid-lease\x20—\x20in_use\x20is\x20only\x20entered\x20from\x20deposit_paid,\x20whose\x20entry\x20IS\x20the\x20signing)'},{'template':'rental/institutional-longstay','guard_key':'review_window','direction':'upper','anchor':'inspected','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20the\x20passing\x20inspection'},{'template':'travel/destination-experience','guard_key':'free_cancel','direction':'upper','anchor':'paid','hours':'free_cancel_hours','note':'free\x20cancellation\x20window'},{'template':'travel/destination-experience','guard_key':'poststay_claim_window','direction':'upper','anchor':'claim_window','days':'claim_window_days','note':'post-stay\x20claim\x20window'},{'template':'travel/destination-experience','guard_key':'release_no_claim_clock','direction':'lower','anchor':'claim_window','days':'claim_window_days','note':'no-claim\x20release\x20after\x20the\x20claim\x20window'},{'template':'delivery/on-demand-errand','guard_key':'deliver_confirm_timeout','direction':'lower','anchor':'delivered','hours':'auto_confirm_hours','note':'auto-confirm\x20N\x20hours\x20after\x20delivery'},{'template':'delivery/on-demand-errand','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','hours':'claim_window_hours','note':'claim\x20window'},{'template':'delivery/on-demand-errand','guard_key':'return_request','direction':'upper','anchor':'delivered','hours':'return_window_hours','note':'after-sales\x20return\x20request\x20closes\x20N\x20hours\x20after\x20the\x20delivered\x20FIRST\x20entry'},{'template':'delivery/restaurant-marketplace','guard_key':'return_request','direction':'upper','anchor':'delivered','hours':'return_window_hours','note':'after-sales\x20return\x20request\x20closes\x20N\x20hours\x20after\x20the\x20delivered\x20FIRST\x20entry'},{'template':'group_buy/leader-sourced-community','guard_key':'claim_filed','direction':'upper','anchor':'claim_window','hours':'claim_window_hours','note':'buyer\x20files\x20a\x20claim\x20only\x20inside\x20the\x20claim\x20window'},{'template':'subscription/delivery-membership','guard_key':'period_end','direction':'lower','anchor':'active','days':'period_days','note':'membership\x20period\x20clock:\x20active\x20entry\x20+\x20period_days\x20before\x20the\x20keeper\x20may\x20complete'},{'template':'subscription/creator-membership','guard_key':'period_expiry','direction':'lower','anchor':'delivered','multimount':!![],'days':'period_days','plus_days':'grace_days','note':'period\x20expiry\x20=\x20delivery\x20+\x20period_days\x20+\x20grace_days,\x20on\x20every\x20keeper\x20lapse'},{'template':'subscription/direct-fan-subscription','guard_key':'period_expiry','direction':'lower','anchor':'delivered','multimount':!![],'days':'period_days','plus_days':'grace_days','note':'period\x20expiry\x20=\x20delivery\x20+\x20period_days\x20+\x20grace_days,\x20on\x20every\x20keeper\x20lapse'},{'template':'education/live-class-cohort','guard_key':'review_window','direction':'upper','anchor':'completed_ready','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20completion\x20readiness'},{'template':'education/mooc-single-course','guard_key':'review_window','direction':'upper','anchor':'certified','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20certification'},{'template':'subscription/creator-membership','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20period\x20delivery'},{'template':'subscription/direct-fan-subscription','guard_key':'review_window','direction':'upper','anchor':'delivered','days':'review_window_days','note':'review\x20closes\x20N\x20days\x20after\x20period\x20delivery\x20—\x20keep\x20period_days\x20+\x20grace_days\x20>\x20review_window_days\x20or\x20the\x20keeper\x20expire\x20kills\x20the\x20open\x20window'},{'template':'retail/preorder-deposit','guard_key':'return_window_presale','direction':'upper','anchor':'delivered','multimount':!![],'days':'return_window_days','note':'return\x20requested\x20within\x20N\x20days\x20of\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'rental/p2p-shortstay','guard_key':'review_window','direction':'upper','anchor':'checked_out','multimount':!![],'days':'review_window_days','note':'review\x20within\x20N\x20days\x20of\x20checkout,\x20including\x20once\x20the\x20claim\x20window\x20has\x20opened'},{'template':'education/mooc-single-course','guard_key':'return_window','direction':'upper','anchor':'paid','multimount':!![],'days':'refund_window_days','note':'refund\x20requested\x20within\x20N\x20days\x20of\x20purchase,\x20from\x20any\x20pre-delivery\x20stage'},{'template':'retail/scale-marketplace','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','days':'settlement_days','plus_days':['reserve_days','return_window_days'],'note':'settlement\x20opens\x20after\x20the\x20MERGED\x20lock:\x20settlement_days\x20+\x20reserve_days\x20+\x20return_window_days\x20(the\x20declaration\x20settlement_window_merge;\x2014\x20+\x207\x20+\x2030\x20=\x2051\x20days\x20by\x20default)\x20—\x20the\x20release\x20cannot\x20fire\x20while\x20the\x20return\x20window\x20can\x20still\x20draw\x20the\x20escrow'},{'template':'retail/warehouse-club','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','days':'settlement_delay_days','note':'settlement\x20opens\x20N\x20days\x20after\x20the\x20claim\x20window\x20(coupled\x20to\x20the\x20return\x20window)'},{'template':'retail/preorder-deposit','guard_key':'settle_window_gate','direction':'lower','anchor':'delivered','multimount':!![],'days':'settlement_days','note':'balance\x20settlement\x20opens\x20N\x20days\x20after\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'retail/vertical-handmade','guard_key':'settle_clock','direction':'lower','anchor':'delivered','multimount':!![],'days':'settlement_delay_days','note':'settlement\x20opens\x20N\x20days\x20after\x20delivery,\x20from\x20delivered\x20or\x20from\x20reviewed'},{'template':'delivery/on-demand-errand','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','hours':'settle_hours','note':'settlement\x20opens\x20N\x20hours\x20after\x20the\x20claim\x20window'},{'template':'group_buy/leader-sourced-community','guard_key':'settle_window_gate','direction':'lower','anchor':'claim_window','hours':'settle_hours','note':'settlement\x20opens\x20N\x20hours\x20after\x20the\x20claim\x20window,\x20past\x20the\x20after-sales\x20track'},{'template':'group_buy/leader-sourced-community','guard_key':'claim_window_open','direction':'lower','anchor':'delivered','hours':'claim_window_open_min_hold_hours','note':'claim\x20window\x20opens\x20N\x20hours\x20after\x20delivery\x20(the\x20buyer\x27s\x20dispute\x20clock\x20cannot\x20start\x20at\x20the\x20delivery\x20instant)'}];export const TWIN_PARAM={'days':'claim_window_days','hours':'duration_ms'};export function twinFor(a,b){if(b==='days')return a==='upper'?'tpl_time_window_upper_progress_days':'tpl_time_lock_progress_days';return a==='upper'?'tpl_time_window_upper':'tpl_time_lock_progress';}export const MULTI_MOUNT_TWIN='tpl_time_window_upper_history_days';export const MULTI_MOUNT_OPENING_TWIN='tpl_time_lock_history_days';export function multiMountTwin(a){return a==='upper'?MULTI_MOUNT_TWIN:MULTI_MOUNT_OPENING_TWIN;}export function unitScale(a){return a==='days'?0x1:MS_PER_HOUR;}const BY_SPEC=new Map();for(const row of TIME_GUARD_INSTANTIATIONS)BY_SPEC['set'](row['template']+'\x00'+row['guard_key'],row);export function timeInstantiationFor(a,b){return BY_SPEC['get'](a+'\x00'+b);}export function patternDefaultResolution(a,b){const c=timeInstantiationFor(a,b);if(c===undefined)return undefined;const d=c['days']!==undefined?'days':'hours';if(c['multimount']===!![])return{'kind':'template','template_id':multiMountTwin(c['direction']),'params':{'anchor_node':c['anchor']}};return{'kind':'template','template_id':twinFor(c['direction'],d),'params':{'expected_node':c['anchor']}};}function mountInfo(a,b){const c=[];for(const d of a['machine_shape']??[]){const f=d['from']??[];for(const g of f){const h=typeof g==='string'?{'prev':g}:g;if(h['guard_key']!==b)continue;const i=h['operator']??d['operator']??(h['prev']===''?'order_payer':'merchant');c['push']({'prev':h['prev']??'','operator':i});}}return c;}export const IDENTITY_PATTERN='pattern.identity_check_order_holder';export const IDENTITY_TWIN='tpl_forward_order_holder';export const IDENTITY_RECOVER_RAIL_TWIN='tpl_allocator_node_gate_recover';export const IDENTITY_REFUND_RAIL_TWIN='tpl_allocator_identity_set_order_holder';function railTracks(a,b){return(a['allocator']?.['rows']??[])['filter'](c=>c['guard_key']===b)['map'](c=>c['track']??'');}function hasAwardRailSibling(a,b){return a['guards']['some'](c=>{if(c['template_id']===IDENTITY_RECOVER_RAIL_TWIN)return!![];const d=c['key'];if(d===undefined||d===b)return![];if(!/recover|award/i['test'](d))return![];if(!/pattern\./i['test'](c['template_id']))return![];return edgeMounts(a,d)['length']===0x0&&railTracks(a,d)['length']>0x0;});}function edgeMounts(a,b){return mountInfo(a,b);}export function identitySkipReason(a,b){if(b['template_id']!==IDENTITY_PATTERN)return'not\x20an\x20identity\x20design';if(b['key']===undefined)return'declared\x20without\x20a\x20key:\x20it\x20names\x20a\x20policy,\x20not\x20a\x20rail';const c=b['key'],d=railTracks(a,c),e=edgeMounts(a,c);if(e['length']===0x0){if(d['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';if(/recover|award/i['test'](c))return undefined;if(/refund/i['test'](c)&&d['every'](g=>/refund/i['test'](g))){if(hasAwardRailSibling(a,c))return'rail-bound\x20refund\x20next\x20to\x20an\x20award/recover\x20rail:\x20the\x20order-holder\x20refund\x20set\x20is\x20node-free,\x20so\x20instantiating\x20both\x20gives\x20one\x20escrow\x20two\x20live\x20fund\x20exits\x20(RAIL-03)\x20—\x20legal\x20but\x20a\x20merchant\x20choice\x20(disclosed\x20double\x20collection),\x20resolve\x20the\x20refund\x20rail\x20explicitly';return undefined;}return'bound\x20to\x20an\x20allocator\x20row\x20only:\x20no\x20executable\x20twin\x20matches\x20this\x20key/track\x20pair\x20(a\x20settlement\x20rail\x20asks\x20a\x20different\x20question)';}if(d['length']>0x0)return'also\x20bound\x20to\x20an\x20allocator\x20row:\x20one\x20design\x20cannot\x20serve\x20a\x20forward\x20and\x20a\x20rail';const f=e['filter'](g=>g['operator']!=='order_payer');if(f['length']>0x0)return'mounted\x20on\x20'+f['length']+'\x20non-buyer\x20forward(s)\x20('+[...new Set(f['map'](g=>g['operator']))]['join']('/')+'):\x20'+'an\x20order-holder\x20leg\x20is\x20unsatisfiable\x20on\x20a\x20permission-index\x20rail';return undefined;}export function identityDefaultResolution(a,b){if(identitySkipReason(a,b)!==undefined)return undefined;const c=b['key'];if(edgeMounts(a,c)['length']===0x0){if(/recover|award/i['test'](c))return{'kind':'template','template_id':IDENTITY_RECOVER_RAIL_TWIN,'params':{}};return{'kind':'template','template_id':IDENTITY_REFUND_RAIL_TWIN,'params':{}};}return{'kind':'template','template_id':IDENTITY_TWIN,'params':{}};}export function identityCensus(a){const b=[];for(const c of a){c['guards']['forEach']((d,e)=>{if(d['template_id']!==IDENTITY_PATTERN)return;const f=d['key']??d['template_id']+'#'+e,h=identitySkipReason(c,d);b['push']({'template':c['id'],'key':f,...h!==undefined?{'skipped':h}:{}});});}return b;}export const PROGRESS_PATTERN='pattern.progress_state_check';export const PROGRESS_NODE_CHECK_TWIN='tpl_forward_node_check';export const PROGRESS_RECOVER_RAIL_TWIN='tpl_allocator_node_gate_recover';export function progressSkipReason(a,b){if(b['template_id']!==PROGRESS_PATTERN)return'not\x20a\x20progress-state\x20design';if(b['key']===undefined)return'declared\x20without\x20a\x20key:\x20it\x20names\x20a\x20policy,\x20not\x20a\x20rail';const c=b['key'],d=railTracks(a,c),e=edgeMounts(a,c);if(/recover|award/i['test'](c)){if(e['length']===0x0&&d['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';return undefined;}if(d['length']>0x0)return e['length']>0x0?'bound\x20to\x20BOTH\x20a\x20forward\x20and\x20an\x20allocator\x20rail:\x20a\x20node-gated\x20twin\x20cannot\x20serve\x20the\x20pre-advance\x20forward\x20and\x20the\x20post-advance\x20allocator\x20(D8)':'rail-bound\x20with\x20no\x20forward\x20mount:\x20the\x20graph\x20cannot\x20say\x20which\x20node\x20the\x20order\x20occupies\x20when\x20the\x20rail\x20fires\x20(pinning\x20one\x20strands\x20the\x20escrow\x20below\x20it\x20—\x20UPWC-K1)';if(e['length']===0x0)return'no\x20mount\x20in\x20the\x20declared\x20graph';const f=[...new Set(e['map'](g=>g['prev']))];if(f['length']>0x1)return'mounted\x20on\x20'+e['length']+'\x20forwards\x20from\x20DIFFERENT\x20prev\x20nodes\x20('+f['join']('/')+'):\x20one\x20expected_node\x20cannot\x20serve\x20them';return undefined;}export function progressStateDefaultResolution(a,b){if(progressSkipReason(a,b)!==undefined)return undefined;if(/recover|award/i['test'](b['key']))return{'kind':'template','template_id':PROGRESS_RECOVER_RAIL_TWIN,'params':{}};return{'kind':'template','template_id':PROGRESS_NODE_CHECK_TWIN,'params':{'expected_node':edgeMounts(a,b['key'])[0x0]['prev']}};}export function progressCensus(a){const b=[];for(const c of a){c['guards']['forEach']((d,e)=>{if(d['template_id']!==PROGRESS_PATTERN)return;const f=d['key']??d['template_id']+'#'+e,h=progressSkipReason(c,d);b['push']({'template':c['id'],'key':f,...h!==undefined?{'skipped':h}:{}});});}return b;}export function timeInstantiationIssues(a,b){const c=[],d=new Map(a['map'](f=>[f['id'],f])),e=new Set();for(const f of TIME_GUARD_INSTANTIATIONS){const h=f['template']+'\x00'+f['guard_key'];if(e['has'](h))c['push']({'row':f,'problem':'duplicate\x20row'});e['add'](h);const i=d['get'](f['template']);if(i===undefined){c['push']({'row':f,'problem':'template\x20\x27'+f['template']+'\x27\x20does\x20not\x20exist'});continue;}const j=i['guards']['find'](u=>u['key']===f['guard_key']);if(j===undefined){c['push']({'row':f,'problem':'guard\x20\x27'+f['guard_key']+'\x27\x20is\x20not\x20declared\x20by\x20'+f['template']});continue;}const k=f['direction']==='upper'?'pattern.time_window_upper_bound':'pattern.time_lock_progress';j['template_id']!==k&&c['push']({'row':f,'problem':'guard\x20declares\x20\x27'+j['template_id']+'\x27,\x20expected\x20\x27'+k+'\x27\x20for\x20a\x20'+f['direction']+'\x20window'});const l=(i['allocator']?.['rows']??[])['filter'](u=>u['guard_key']===f['guard_key'])['length'];if(l>0x0){c['push']({'row':f,'problem':'guard\x20is\x20also\x20bound\x20to\x20'+l+'\x20allocator\x20row(s):\x20a\x20node-gated\x20twin\x20cannot\x20serve\x20the\x20'+'pre-advance\x20forward\x20and\x20the\x20post-advance\x20allocator\x20(and\x20a\x20second\x20mount\x20would\x20double\x20the\x20wait)'});continue;}const m=mountInfo(i,f['guard_key']);if(f['multimount']!==!![]){if(m['length']!==0x1){c['push']({'row':f,'problem':'guard\x20has\x20'+m['length']+'\x20mounts;\x20a\x20shared\x20expected_node\x20needs\x20exactly\x20one'});continue;}m[0x0]['prev']!==f['anchor']&&c['push']({'row':f,'problem':'anchor\x20\x27'+f['anchor']+'\x27\x20!=\x20mount\x20prev\x20\x27'+m[0x0]['prev']+'\x27'});const u=f['direction']==='upper'?'order_payer':'merchant';m[0x0]['operator']!==u&&c['push']({'row':f,'problem':'mount\x20operator\x20\x27'+m[0x0]['operator']+'\x27\x20!=\x20\x27'+u+'\x27:\x20an\x20'+f['direction']+'\x20window\x20on\x20the\x20wrong\x20'+'signer\x20set\x20is\x20either\x20callable\x20by\x20anyone\x20(upper)\x20or\x20unsatisfiable\x20(identity\x20leg\x20over\x20a\x20permission-index\x20rail)'});}else{(f['days']===undefined||f['hours']!==undefined)&&c['push']({'row':f,'problem':'the\x20pin-free\x20twin\x20takes\x20a\x20day\x20window;\x20declare\x20days\x20and\x20no\x20hours'});m['length']===0x0&&c['push']({'row':f,'problem':'guard\x20is\x20bound\x20to\x20no\x20forward\x20—\x20a\x20window\x20nobody\x20mounts\x20is\x20not\x20a\x20rail'});const v=f['direction']==='upper'?'order_payer':'merchant',w=m['filter'](x=>x['operator']!==v);w['length']>0x0&&c['push']({'row':f,'problem':w['length']+'\x20mount(s)\x20ride\x20\x27'+[...new Set(w['map'](x=>x['operator']))]['join']('/')+'\x27\x20but\x20a\x20'+f['direction']+'\x20'+('multi-mount\x20twin\x20needs\x20\x27'+v+'\x27\x20')+(f['direction']==='upper'?'(the\x20twin\x27s\x20order-holder\x20leg\x20is\x20unsatisfiable\x20on\x20a\x20permission-index\x20rail)':'(the\x20opening\x20twin\x20ships\x20no\x20signer\x20leg,\x20so\x20a\x20buyer\x20rail\x20would\x20be\x20left\x20unauthenticated)')}),m['length']>0x0&&!m['some'](x=>x['prev']===f['anchor'])&&c['push']({'row':f,'problem':'no\x20mount\x20starts\x20at\x20anchor\x20\x27'+f['anchor']+'\x27\x20(mounts:\x20'+m['map'](x=>x['prev'])['join'](',\x20')+'):\x20'+'the\x20anchor\x20must\x20be\x20the\x20entry\x20that\x20opens\x20the\x20window\x20on\x20at\x20least\x20one\x20path'});}const n=f['days']!==undefined?'days':f['hours']!==undefined?'hours':undefined;if(n===undefined||f['days']!==undefined&&f['hours']!==undefined){c['push']({'row':f,'problem':'exactly\x20one\x20of\x20days/hours\x20must\x20be\x20declared'});continue;}const o=f['days']??f['hours'];i['fee_params'][o]===undefined&&c['push']({'row':f,'problem':'fee_param\x20\x27'+o+'\x27\x20is\x20not\x20declared\x20by\x20'+f['template']});for(const x of f['plus_days']===undefined?[]:typeof f['plus_days']==='string'?[f['plus_days']]:f['plus_days']){i['fee_params'][x]===undefined&&c['push']({'row':f,'problem':'fee_param\x20\x27'+x+'\x27\x20(plus_days)\x20is\x20not\x20declared\x20by\x20'+f['template']});}const p=f['multimount']===!![]?multiMountTwin(f['direction']):twinFor(f['direction'],n),q=b['get'](p);if(q===undefined){c['push']({'row':f,'problem':'twin\x20template\x20\x27'+p+'\x27\x20is\x20not\x20in\x20the\x20guard-template\x20registry'});continue;}const r=new Set(q['map'](y=>y['name'])),s=f['multimount']===!![]?'anchor_node':'expected_node';for(const y of[s,TWIN_PARAM[n]]){if(!r['has'](y))c['push']({'row':f,'problem':'twin\x20\x27'+p+'\x27\x20declares\x20no\x20param\x20\x27'+y+'\x27'});}}return c;}