@wowok/agent-mcp 3.1.2 → 3.1.4

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 (544) hide show
  1. package/dist/config/config-audit.spec.d.ts +1 -0
  2. package/dist/config/config-audit.spec.js +1 -0
  3. package/dist/config/exposure.d.ts +108 -0
  4. package/dist/config/exposure.js +1 -0
  5. package/dist/config/index.d.ts +2 -0
  6. package/dist/config/index.js +1 -1
  7. package/dist/config/judgment.d.ts +1228 -0
  8. package/dist/config/judgment.js +1 -0
  9. package/dist/config/judgment.spec.d.ts +1 -0
  10. package/dist/config/judgment.spec.js +1 -0
  11. package/dist/config/rule-engine.d.ts +299 -0
  12. package/dist/config/rule-engine.js +1 -0
  13. package/dist/config/rule-engine.spec.d.ts +1 -0
  14. package/dist/config/rule-engine.spec.js +1 -0
  15. package/dist/config/runtime.js +1 -1
  16. package/dist/config/severity.d.ts +7 -0
  17. package/dist/config/severity.js +1 -0
  18. package/dist/customer/index.d.ts +3 -9
  19. package/dist/customer/index.js +1 -1
  20. package/dist/customer/industry-risks.d.ts +3 -17
  21. package/dist/customer/industry-risks.js +1 -1
  22. package/dist/customer/order-monitor.d.ts +3 -1
  23. package/dist/customer/order-monitor.js +1 -1
  24. package/dist/customer/types.d.ts +1 -165
  25. package/dist/customer/types.js +1 -1
  26. package/dist/customer/user-preferences.d.ts +0 -49
  27. package/dist/customer/user-preferences.js +1 -1
  28. package/dist/evaluation/acceptance.d.ts +1 -0
  29. package/dist/evaluation/acceptance.js +1 -1
  30. package/dist/evaluation/arbitration-game.js +1 -1
  31. package/dist/evaluation/architecture.spec.d.ts +1 -0
  32. package/dist/evaluation/architecture.spec.js +1 -0
  33. package/dist/evaluation/builtins/demand-match.js +1 -1
  34. package/dist/evaluation/builtins/graph-service.d.ts +16 -0
  35. package/dist/evaluation/builtins/graph-service.js +1 -0
  36. package/dist/evaluation/builtins/graph-service.spec.d.ts +1 -0
  37. package/dist/evaluation/builtins/graph-service.spec.js +1 -0
  38. package/dist/evaluation/builtins/index.d.ts +1 -1
  39. package/dist/evaluation/builtins/index.js +1 -1
  40. package/dist/evaluation/builtins/purity.spec.d.ts +1 -0
  41. package/dist/evaluation/builtins/purity.spec.js +1 -0
  42. package/dist/evaluation/engine.js +1 -1
  43. package/dist/evaluation/facets/catalog.d.ts +19 -0
  44. package/dist/evaluation/facets/catalog.js +1 -0
  45. package/dist/evaluation/game-strategy.d.ts +2 -2
  46. package/dist/evaluation/game-strategy.js +1 -1
  47. package/dist/evaluation/guard-scan.d.ts +10 -0
  48. package/dist/evaluation/guard-scan.js +1 -0
  49. package/dist/evaluation/match-operation.d.ts +2 -2
  50. package/dist/evaluation/match-operation.js +1 -1
  51. package/dist/evaluation/standards.d.ts +9 -0
  52. package/dist/evaluation/standards.js +1 -0
  53. package/dist/evaluation/standards.spec.d.ts +1 -0
  54. package/dist/evaluation/standards.spec.js +1 -0
  55. package/dist/evaluation/types.d.ts +11 -1
  56. package/dist/experience/realtime-feedback.js +1 -1
  57. package/dist/extensions/business-modules.js +1 -1
  58. package/dist/extensions/custom-registry-file.js +1 -1
  59. package/dist/extensions/index.d.ts +1 -1
  60. package/dist/extensions/index.js +1 -1
  61. package/dist/extensions/industry-audit.spec.d.ts +1 -0
  62. package/dist/extensions/industry-audit.spec.js +1 -0
  63. package/dist/extensions/industry-layers.d.ts +14 -5
  64. package/dist/extensions/industry-layers.js +1 -1
  65. package/dist/extensions/industry-pack.d.ts +2 -0
  66. package/dist/extensions/industry-pack.js +1 -1
  67. package/dist/extensions/mode-evaluator.js +1 -1
  68. package/dist/extensions/modes.js +1 -1
  69. package/dist/graph/onchain/analyze.d.ts +16 -1
  70. package/dist/graph/onchain/analyze.js +1 -1
  71. package/dist/graph/onchain/analyze.spec.js +1 -1
  72. package/dist/graph/onchain/dataplane.d.ts +1 -1
  73. package/dist/graph/onchain/dataplane.js +1 -1
  74. package/dist/graph/onchain/edge-batch.spec.d.ts +1 -0
  75. package/dist/graph/onchain/edge-batch.spec.js +1 -0
  76. package/dist/graph/onchain/edge-schema.d.ts +11 -2
  77. package/dist/graph/onchain/edge-schema.js +1 -1
  78. package/dist/graph/onchain/entity-profile.spec.d.ts +1 -0
  79. package/dist/graph/onchain/entity-profile.spec.js +1 -0
  80. package/dist/graph/onchain/event-history.spec.d.ts +1 -0
  81. package/dist/graph/onchain/event-history.spec.js +1 -0
  82. package/dist/graph/onchain/expand.js +1 -1
  83. package/dist/graph/onchain/exploration.d.ts +28 -0
  84. package/dist/graph/onchain/exploration.js +1 -0
  85. package/dist/graph/onchain/exploration.spec.d.ts +1 -0
  86. package/dist/graph/onchain/exploration.spec.js +1 -0
  87. package/dist/graph/onchain/exposure.d.ts +18 -0
  88. package/dist/graph/onchain/exposure.js +1 -0
  89. package/dist/graph/onchain/exposure.spec.d.ts +1 -0
  90. package/dist/graph/onchain/exposure.spec.js +1 -0
  91. package/dist/graph/onchain/extract-deep.spec.d.ts +1 -0
  92. package/dist/graph/onchain/extract-deep.spec.js +1 -0
  93. package/dist/graph/onchain/extract.d.ts +11 -3
  94. package/dist/graph/onchain/extract.js +1 -1
  95. package/dist/graph/onchain/facet-projection.d.ts +99 -0
  96. package/dist/graph/onchain/facet-projection.js +1 -0
  97. package/dist/graph/onchain/facet-projection.spec.d.ts +1 -0
  98. package/dist/graph/onchain/facet-projection.spec.js +1 -0
  99. package/dist/graph/onchain/facts.d.ts +103 -0
  100. package/dist/graph/onchain/facts.js +1 -0
  101. package/dist/graph/onchain/facts.spec.d.ts +1 -0
  102. package/dist/graph/onchain/facts.spec.js +1 -0
  103. package/dist/graph/onchain/field-manifest.d.ts +29 -0
  104. package/dist/graph/onchain/field-manifest.js +1 -0
  105. package/dist/graph/onchain/field-manifest.spec.d.ts +1 -0
  106. package/dist/graph/onchain/field-manifest.spec.js +1 -0
  107. package/dist/graph/onchain/fixtures.d.ts +80 -0
  108. package/dist/graph/onchain/fixtures.js +1 -0
  109. package/dist/graph/onchain/fixtures.spec.d.ts +1 -0
  110. package/dist/graph/onchain/fixtures.spec.js +1 -0
  111. package/dist/graph/onchain/graph-policy.spec.d.ts +1 -0
  112. package/dist/graph/onchain/graph-policy.spec.js +1 -0
  113. package/dist/graph/onchain/index.d.ts +14 -2
  114. package/dist/graph/onchain/index.js +1 -1
  115. package/dist/graph/onchain/interest.js +1 -1
  116. package/dist/graph/onchain/interest.spec.js +1 -1
  117. package/dist/graph/onchain/label-lint.spec.d.ts +1 -0
  118. package/dist/graph/onchain/label-lint.spec.js +1 -0
  119. package/dist/graph/onchain/names.d.ts +23 -0
  120. package/dist/graph/onchain/names.js +1 -0
  121. package/dist/graph/onchain/names.spec.d.ts +1 -0
  122. package/dist/graph/onchain/names.spec.js +1 -0
  123. package/dist/graph/onchain/onchain.spec.js +1 -1
  124. package/dist/graph/onchain/policy.d.ts +8 -0
  125. package/dist/graph/onchain/policy.js +1 -0
  126. package/dist/graph/onchain/proposal-graph.d.ts +11 -0
  127. package/dist/graph/onchain/proposal-graph.js +1 -0
  128. package/dist/graph/onchain/proposal-graph.spec.d.ts +1 -0
  129. package/dist/graph/onchain/proposal-graph.spec.js +1 -0
  130. package/dist/graph/onchain/sdk-batch.d.ts +5 -1
  131. package/dist/graph/onchain/sdk-batch.js +1 -1
  132. package/dist/graph/onchain/strategy.d.ts +16 -0
  133. package/dist/graph/onchain/strategy.js +1 -1
  134. package/dist/graph/onchain/strategy.spec.js +1 -1
  135. package/dist/graph/onchain/synthesis.d.ts +20 -0
  136. package/dist/graph/onchain/synthesis.js +1 -0
  137. package/dist/graph/onchain/synthesis.spec.d.ts +1 -0
  138. package/dist/graph/onchain/synthesis.spec.js +1 -0
  139. package/dist/graph/onchain/table-ledger.spec.d.ts +1 -0
  140. package/dist/graph/onchain/table-ledger.spec.js +1 -0
  141. package/dist/graph/onchain/types.d.ts +57 -7
  142. package/dist/graph/onchain/viewport.d.ts +1 -0
  143. package/dist/graph/onchain/viewport.js +1 -1
  144. package/dist/harness/index.d.ts +1 -5
  145. package/dist/harness/index.js +1 -1
  146. package/dist/harness/verify.d.ts +6 -1
  147. package/dist/harness/verify.js +1 -1
  148. package/dist/index.js +1 -1
  149. package/dist/keeper/keeper.spec.js +1 -1
  150. package/dist/knowledge/alloc-audit-policy.spec.d.ts +1 -0
  151. package/dist/knowledge/alloc-audit-policy.spec.js +1 -0
  152. package/dist/knowledge/allocation-ledger.js +1 -1
  153. package/dist/knowledge/allocation-puzzle.d.ts +1 -1
  154. package/dist/knowledge/allocation-puzzle.js +1 -1
  155. package/dist/knowledge/allocation-risk.d.ts +4 -3
  156. package/dist/knowledge/allocation-risk.js +1 -1
  157. package/dist/knowledge/allocation-templates.js +1 -1
  158. package/dist/knowledge/arb-risk.d.ts +6 -6
  159. package/dist/knowledge/arb-risk.js +1 -1
  160. package/dist/knowledge/arbitration-ledger.d.ts +4 -4
  161. package/dist/knowledge/arbitration-ledger.js +1 -1
  162. package/dist/knowledge/arbitration-puzzle.d.ts +1 -1
  163. package/dist/knowledge/arbitration-puzzle.js +1 -1
  164. package/dist/knowledge/arbitration-risk.d.ts +4 -3
  165. package/dist/knowledge/arbitration-risk.js +1 -1
  166. package/dist/knowledge/arbitration-templates.js +1 -1
  167. package/dist/knowledge/baselines/guard-lint-baseline.spec.d.ts +1 -0
  168. package/dist/knowledge/baselines/guard-lint-baseline.spec.js +1 -0
  169. package/dist/knowledge/baselines/judgment-baselines.json +289 -0
  170. package/dist/knowledge/baselines/risk-baselines.spec.d.ts +1 -0
  171. package/dist/knowledge/baselines/risk-baselines.spec.js +1 -0
  172. package/dist/knowledge/baselines/risk-cases.d.ts +8 -0
  173. package/dist/knowledge/baselines/risk-cases.js +1 -0
  174. package/dist/knowledge/baselines/rules/alloc_audit.json +290 -0
  175. package/dist/knowledge/baselines/rules/allocation.json +492 -0
  176. package/dist/knowledge/baselines/rules/arb.json +155 -0
  177. package/dist/knowledge/baselines/rules/arbitration.json +366 -0
  178. package/dist/knowledge/baselines/rules/bridge.json +197 -0
  179. package/dist/knowledge/baselines/rules/contact.json +152 -0
  180. package/dist/knowledge/baselines/rules/demand.json +158 -0
  181. package/dist/knowledge/baselines/rules/graph.json +453 -0
  182. package/dist/knowledge/baselines/rules/guard.json +981 -0
  183. package/dist/knowledge/baselines/rules/machine.json +706 -0
  184. package/dist/knowledge/baselines/rules/order.json +549 -0
  185. package/dist/knowledge/baselines/rules/payment.json +205 -0
  186. package/dist/knowledge/baselines/rules/permission.json +330 -0
  187. package/dist/knowledge/baselines/rules/personal.json +139 -0
  188. package/dist/knowledge/baselines/rules/progress.json +346 -0
  189. package/dist/knowledge/baselines/rules/proof.json +158 -0
  190. package/dist/knowledge/baselines/rules/registrar.json +159 -0
  191. package/dist/knowledge/baselines/rules/repository.json +244 -0
  192. package/dist/knowledge/baselines/rules/resource.json +117 -0
  193. package/dist/knowledge/baselines/rules/reward.json +471 -0
  194. package/dist/knowledge/baselines/rules/service.json +595 -0
  195. package/dist/knowledge/baselines/rules/treasury.json +440 -0
  196. package/dist/knowledge/baselines/rules/util.json +101 -0
  197. package/dist/knowledge/bridge-risk.d.ts +6 -6
  198. package/dist/knowledge/bridge-risk.js +1 -1
  199. package/dist/knowledge/builtin-templates.d.ts +26 -0
  200. package/dist/knowledge/builtin-templates.js +1 -0
  201. package/dist/knowledge/contact-risk.d.ts +6 -6
  202. package/dist/knowledge/contact-risk.js +1 -1
  203. package/dist/knowledge/contract-invariants.d.ts +1 -0
  204. package/dist/knowledge/contract-invariants.js +1 -1
  205. package/dist/knowledge/demand-risk.d.ts +6 -6
  206. package/dist/knowledge/demand-risk.js +1 -1
  207. package/dist/knowledge/event-semantics.js +1 -1
  208. package/dist/knowledge/facts-sync.spec.d.ts +1 -0
  209. package/dist/knowledge/facts-sync.spec.js +1 -0
  210. package/dist/knowledge/getting-started.js +1 -1
  211. package/dist/knowledge/guard-design-patterns.js +1 -1
  212. package/dist/knowledge/guard-eval.d.ts +15 -0
  213. package/dist/knowledge/guard-eval.js +1 -0
  214. package/dist/knowledge/guard-eval.spec.d.ts +1 -0
  215. package/dist/knowledge/guard-eval.spec.js +1 -0
  216. package/dist/knowledge/guard-field-cognition.d.ts +1 -1
  217. package/dist/knowledge/guard-field-cognition.js +1 -1
  218. package/dist/knowledge/guard-ledger.js +1 -1
  219. package/dist/knowledge/guard-lint.d.ts +1 -1
  220. package/dist/knowledge/guard-lint.js +1 -1
  221. package/dist/knowledge/guard-risk.d.ts +7 -19
  222. package/dist/knowledge/guard-risk.js +1 -1
  223. package/dist/knowledge/guard-templates.js +1 -1
  224. package/dist/knowledge/guard-translation.js +1 -1
  225. package/dist/knowledge/index.d.ts +51 -45
  226. package/dist/knowledge/index.js +1 -1
  227. package/dist/knowledge/industry-registry.js +1 -1
  228. package/dist/knowledge/industry-rule-node.d.ts +7 -0
  229. package/dist/knowledge/industry-rule-node.js +1 -0
  230. package/dist/knowledge/industry-strategy.js +1 -1
  231. package/dist/knowledge/jsonrpc-enum.js +1 -1
  232. package/dist/knowledge/machine-ledger.js +1 -1
  233. package/dist/knowledge/machine-risk.d.ts +4 -7
  234. package/dist/knowledge/machine-risk.js +1 -1
  235. package/dist/knowledge/machine-templates.js +1 -1
  236. package/dist/knowledge/machine-translation.js +1 -1
  237. package/dist/knowledge/migration-preflight.js +1 -1
  238. package/dist/knowledge/operation-dictionary.js +1 -1
  239. package/dist/knowledge/order-ledger.js +1 -1
  240. package/dist/knowledge/order-puzzle.d.ts +3 -3
  241. package/dist/knowledge/order-puzzle.js +1 -1
  242. package/dist/knowledge/order-risk.d.ts +7 -12
  243. package/dist/knowledge/order-risk.js +1 -1
  244. package/dist/knowledge/order-templates.js +1 -1
  245. package/dist/knowledge/passport-ledger.js +1 -1
  246. package/dist/knowledge/passport-templates.js +1 -1
  247. package/dist/knowledge/payment-risk.d.ts +8 -7
  248. package/dist/knowledge/payment-risk.js +1 -1
  249. package/dist/knowledge/payment-tracker.js +1 -1
  250. package/dist/knowledge/permission-ledger.js +1 -1
  251. package/dist/knowledge/permission-puzzle.d.ts +12 -12
  252. package/dist/knowledge/permission-puzzle.js +1 -1
  253. package/dist/knowledge/permission-risk.d.ts +4 -10
  254. package/dist/knowledge/permission-risk.js +1 -1
  255. package/dist/knowledge/permission-templates.js +1 -1
  256. package/dist/knowledge/personal-risk.d.ts +6 -6
  257. package/dist/knowledge/personal-risk.js +1 -1
  258. package/dist/knowledge/progress-ledger.js +1 -1
  259. package/dist/knowledge/progress-puzzle.d.ts +2 -2
  260. package/dist/knowledge/progress-puzzle.js +1 -1
  261. package/dist/knowledge/progress-risk.d.ts +4 -3
  262. package/dist/knowledge/progress-risk.js +1 -1
  263. package/dist/knowledge/progress-templates.js +1 -1
  264. package/dist/knowledge/proof-risk.d.ts +6 -6
  265. package/dist/knowledge/proof-risk.js +1 -1
  266. package/dist/knowledge/puzzle-projections.d.ts +11 -0
  267. package/dist/knowledge/puzzle-projections.js +1 -0
  268. package/dist/knowledge/recipient-constraint.d.ts +20 -1
  269. package/dist/knowledge/recipient-constraint.js +1 -1
  270. package/dist/knowledge/registrar-risk.d.ts +6 -6
  271. package/dist/knowledge/registrar-risk.js +1 -1
  272. package/dist/knowledge/repository-risk.d.ts +7 -7
  273. package/dist/knowledge/repository-risk.js +1 -1
  274. package/dist/knowledge/resource-risk.d.ts +6 -6
  275. package/dist/knowledge/resource-risk.js +1 -1
  276. package/dist/knowledge/reward-ledger.d.ts +1 -1
  277. package/dist/knowledge/reward-ledger.js +1 -1
  278. package/dist/knowledge/reward-puzzle.d.ts +2 -2
  279. package/dist/knowledge/reward-puzzle.js +1 -1
  280. package/dist/knowledge/reward-risk.d.ts +5 -6
  281. package/dist/knowledge/reward-risk.js +1 -1
  282. package/dist/knowledge/rule-node-analyzers.d.ts +43 -0
  283. package/dist/knowledge/rule-node-analyzers.js +1 -0
  284. package/dist/knowledge/rule-node-analyzers.spec.d.ts +1 -0
  285. package/dist/knowledge/rule-node-analyzers.spec.js +1 -0
  286. package/dist/knowledge/rule-outcome.d.ts +5 -0
  287. package/dist/knowledge/rule-outcome.js +1 -0
  288. package/dist/knowledge/safety-rules.js +1 -1
  289. package/dist/knowledge/scenario-modes.d.ts +2 -2
  290. package/dist/knowledge/scenario-modes.js +1 -1
  291. package/dist/knowledge/scenario-topology.js +1 -1
  292. package/dist/knowledge/service-allocator-audit-node.js +1 -1
  293. package/dist/knowledge/service-ledger.js +1 -1
  294. package/dist/knowledge/service-puzzle.d.ts +2 -2
  295. package/dist/knowledge/service-puzzle.js +1 -1
  296. package/dist/knowledge/service-risk-node.js +1 -1
  297. package/dist/knowledge/service-risk.d.ts +4 -4
  298. package/dist/knowledge/service-risk.js +1 -1
  299. package/dist/knowledge/service-templates.js +1 -1
  300. package/dist/knowledge/strategy-manuals.d.ts +1 -1
  301. package/dist/knowledge/strategy-manuals.js +1 -1
  302. package/dist/knowledge/template-loader.d.ts +84 -0
  303. package/dist/knowledge/template-loader.js +1 -0
  304. package/dist/knowledge/template-loader.spec.d.ts +1 -0
  305. package/dist/knowledge/template-loader.spec.js +1 -0
  306. package/dist/knowledge/template-registry.js +1 -1
  307. package/dist/knowledge/template-scanner.d.ts +17 -0
  308. package/dist/knowledge/template-scanner.js +1 -0
  309. package/dist/knowledge/template-scanner.spec.d.ts +1 -0
  310. package/dist/knowledge/template-scanner.spec.js +1 -0
  311. package/dist/knowledge/tools-reference.js +1 -1
  312. package/dist/knowledge/treasury-ledger.d.ts +1 -1
  313. package/dist/knowledge/treasury-ledger.js +1 -1
  314. package/dist/knowledge/treasury-puzzle.d.ts +3 -3
  315. package/dist/knowledge/treasury-puzzle.js +1 -1
  316. package/dist/knowledge/treasury-risk.d.ts +6 -4
  317. package/dist/knowledge/treasury-risk.js +1 -1
  318. package/dist/knowledge/treasury-templates.js +1 -1
  319. package/dist/knowledge/util-risk.d.ts +6 -6
  320. package/dist/knowledge/util-risk.js +1 -1
  321. package/dist/knowledge/workflow-guidance.d.ts +4 -0
  322. package/dist/knowledge/workflow-guidance.js +1 -1
  323. package/dist/knowledge/workspace-lists.js +1 -1
  324. package/dist/monitor/MonitorLoop.js +1 -1
  325. package/dist/participation/arbitrator-interest.js +1 -1
  326. package/dist/participation/radar-core.js +1 -1
  327. package/dist/persona/analyzer.js +1 -1
  328. package/dist/persona/bridge.js +1 -1
  329. package/dist/persona/facet-profile.d.ts +33 -0
  330. package/dist/persona/facet-profile.js +1 -0
  331. package/dist/persona/index.js +1 -1
  332. package/dist/persona/model.d.ts +2 -1
  333. package/dist/persona/model.js +1 -1
  334. package/dist/persona/persona-audit.spec.d.ts +1 -0
  335. package/dist/persona/persona-audit.spec.js +1 -0
  336. package/dist/persona/topology-focus.d.ts +2 -2
  337. package/dist/persona/topology-focus.js +1 -1
  338. package/dist/persona/types.d.ts +14 -0
  339. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  340. package/dist/playbooks/service-build/facet-money.d.ts +33 -0
  341. package/dist/playbooks/service-build/facet-money.js +1 -0
  342. package/dist/playbooks/service-build/facet-money.spec.d.ts +1 -0
  343. package/dist/playbooks/service-build/facet-money.spec.js +1 -0
  344. package/dist/playbooks/service-build/machine-panorama.d.ts +20 -0
  345. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  346. package/dist/playbooks/service-build/merchant-guide.d.ts +2 -2
  347. package/dist/playbooks/service-build/migration-planner.d.ts +43 -0
  348. package/dist/playbooks/service-build/migration-planner.js +1 -0
  349. package/dist/playbooks/service-build/object-panorama.d.ts +65 -24
  350. package/dist/playbooks/service-build/object-panorama.js +1 -1
  351. package/dist/playbooks/service-build/participation-radar.js +1 -1
  352. package/dist/playbooks/service-build/pipeline-actions.d.ts +3 -3
  353. package/dist/playbooks/service-build/pipeline-actions.js +1 -1
  354. package/dist/playbooks/service-build/reverse-mapping.d.ts +1 -0
  355. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  356. package/dist/playbooks/service-build/risk-aggregator.d.ts +4 -2
  357. package/dist/playbooks/service-build/risk-aggregator.js +1 -1
  358. package/dist/playbooks/service-build/semantic-graph.js +1 -1
  359. package/dist/playbooks/service-build/service-panorama.d.ts +56 -9
  360. package/dist/playbooks/service-build/service-panorama.js +1 -1
  361. package/dist/playbooks/service-build/topology-evaluation.spec.d.ts +1 -0
  362. package/dist/playbooks/service-build/topology-evaluation.spec.js +1 -0
  363. package/dist/playbooks/service-build/topology-query.d.ts +13 -2
  364. package/dist/playbooks/service-build/topology-query.js +1 -1
  365. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +2 -2
  366. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  367. package/dist/relationship/registry.js +1 -1
  368. package/dist/review/arb.d.ts +0 -2
  369. package/dist/review/arb.js +1 -1
  370. package/dist/review/machine.js +1 -1
  371. package/dist/review/order.d.ts +0 -1
  372. package/dist/review/order.js +1 -1
  373. package/dist/review/service.js +1 -1
  374. package/dist/review/types.d.ts +7 -0
  375. package/dist/role/profiles.js +1 -1
  376. package/dist/rules.d.ts +1 -2
  377. package/dist/rules.js +1 -1
  378. package/dist/safety/confirm-gate.js +1 -1
  379. package/dist/schema/benchmark-migration/index.d.ts +207 -0
  380. package/dist/schema/benchmark-migration/index.js +1 -0
  381. package/dist/schema/call/allocation.d.ts +1 -1
  382. package/dist/schema/call/allocation.js +1 -1
  383. package/dist/schema/call/arbitration.d.ts +1 -1
  384. package/dist/schema/call/arbitration.js +1 -1
  385. package/dist/schema/call/base.d.ts +3374 -670
  386. package/dist/schema/call/base.js +1 -1
  387. package/dist/schema/call/contact.d.ts +1 -1
  388. package/dist/schema/call/demand.d.ts +1 -1
  389. package/dist/schema/call/guard.d.ts +3 -3
  390. package/dist/schema/call/handler.js +1 -1
  391. package/dist/schema/call/machine.d.ts +5 -5
  392. package/dist/schema/call/order.d.ts +3 -3
  393. package/dist/schema/call/payment.js +1 -1
  394. package/dist/schema/call/permission-handler.d.ts +1 -1
  395. package/dist/schema/call/permission-handler.js +1 -1
  396. package/dist/schema/call/permission.d.ts +16 -16
  397. package/dist/schema/call/permission.js +1 -1
  398. package/dist/schema/call/personal.d.ts +8 -8
  399. package/dist/schema/call/personal.js +1 -1
  400. package/dist/schema/call/progress.d.ts +3 -3
  401. package/dist/schema/call/receipt.d.ts +28 -0
  402. package/dist/schema/call/receipt.js +1 -0
  403. package/dist/schema/call/repository.d.ts +11 -11
  404. package/dist/schema/call/repository.js +1 -1
  405. package/dist/schema/call/reward.d.ts +1 -1
  406. package/dist/schema/call/semantic-customer-advice.spec.d.ts +1 -0
  407. package/dist/schema/call/semantic-customer-advice.spec.js +1 -0
  408. package/dist/schema/call/semantic.d.ts +5 -2
  409. package/dist/schema/call/semantic.js +1 -1
  410. package/dist/schema/call/service.d.ts +7 -7
  411. package/dist/schema/call/service.js +1 -1
  412. package/dist/schema/call/treasury.d.ts +1 -1
  413. package/dist/schema/call/treasury.js +1 -1
  414. package/dist/schema/common/index.d.ts +6 -6
  415. package/dist/schema/common/index.js +1 -1
  416. package/dist/schema/config/index.d.ts +50 -1
  417. package/dist/schema/config/index.js +1 -1
  418. package/dist/schema/evaluation/index.d.ts +307 -213
  419. package/dist/schema/evaluation/index.js +1 -1
  420. package/dist/schema/goal/index.d.ts +6 -6
  421. package/dist/schema/goal/planning.d.ts +17 -17
  422. package/dist/schema/goal/planning.js +1 -1
  423. package/dist/schema/index.d.ts +1 -1
  424. package/dist/schema/index.js +1 -1
  425. package/dist/schema/industry-pack/index.d.ts +1 -1
  426. package/dist/schema/interaction/index.d.ts +1 -1
  427. package/dist/schema/keeper/index.d.ts +1 -1
  428. package/dist/schema/local/index.js +1 -1
  429. package/dist/schema/messenger/index.d.ts +26 -26
  430. package/dist/schema/operations.d.ts +59 -43
  431. package/dist/schema/operations.js +1 -1
  432. package/dist/schema/persona/index.d.ts +4732 -24
  433. package/dist/schema/persona/index.js +1 -1
  434. package/dist/schema/query/bi.d.ts +830 -10
  435. package/dist/schema/query/bi.js +1 -1
  436. package/dist/schema/query/index.d.ts +44 -44
  437. package/dist/schema/query/index.js +1 -1
  438. package/dist/schema/schema-version.js +1 -1
  439. package/dist/schema/workflow/index.d.ts +1 -1
  440. package/dist/schema/workspace/index.d.ts +2 -2
  441. package/dist/schema-query-impl/index.d.ts +9 -0
  442. package/dist/schema-query-impl/index.js +1 -1
  443. package/dist/schemas/account_operation.output.json +1 -1
  444. package/dist/schemas/benchmark_migration_operation.output.json +793 -0
  445. package/dist/schemas/benchmark_migration_operation.schema.json +83 -0
  446. package/dist/schemas/bridge_operation.output.json +1 -1
  447. package/dist/schemas/bridge_operation.schema.json +5 -5
  448. package/dist/schemas/config_operation.output.json +252 -0
  449. package/dist/schemas/config_operation.schema.json +21 -1
  450. package/dist/schemas/evaluation_operation.output.json +702 -162
  451. package/dist/schemas/evaluation_operation.schema.json +0 -429
  452. package/dist/schemas/goal_operation.schema.json +8 -8
  453. package/dist/schemas/guard2file.schema.json +1 -1
  454. package/dist/schemas/index.json +7 -7
  455. package/dist/schemas/keeper_operation.output.json +1 -1
  456. package/dist/schemas/local_history_operation.output.json +1 -1
  457. package/dist/schemas/local_info_operation.output.json +1 -1
  458. package/dist/schemas/local_mark_operation.output.json +1 -1
  459. package/dist/schemas/machineNode2file.schema.json +1 -1
  460. package/dist/schemas/messenger_operation.output.json +1 -1
  461. package/dist/schemas/messenger_operation.schema.json +24 -12
  462. package/dist/schemas/monitor_events.output.json +1 -1
  463. package/dist/schemas/monitor_subscription.output.json +1 -1
  464. package/dist/schemas/onchain_events.output.json +2 -2
  465. package/dist/schemas/onchain_operations.output.json +6359 -3724
  466. package/dist/schemas/onchain_operations.schema.json +191 -141
  467. package/dist/schemas/onchain_operations_allocation.schema.json +13 -11
  468. package/dist/schemas/onchain_operations_arbitration.schema.json +10 -8
  469. package/dist/schemas/onchain_operations_contact.schema.json +7 -5
  470. package/dist/schemas/onchain_operations_demand.schema.json +7 -5
  471. package/dist/schemas/onchain_operations_gen_passport.schema.json +5 -3
  472. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  473. package/dist/schemas/onchain_operations_guard.schema.json +5 -3
  474. package/dist/schemas/onchain_operations_machine.schema.json +22 -18
  475. package/dist/schemas/onchain_operations_order.schema.json +11 -7
  476. package/dist/schemas/onchain_operations_payment.schema.json +3 -3
  477. package/dist/schemas/onchain_operations_permission.schema.json +19 -11
  478. package/dist/schemas/onchain_operations_personal.schema.json +16 -10
  479. package/dist/schemas/onchain_operations_progress.schema.json +11 -7
  480. package/dist/schemas/onchain_operations_proof.schema.json +5 -3
  481. package/dist/schemas/onchain_operations_repository.schema.json +12 -8
  482. package/dist/schemas/onchain_operations_reward.schema.json +11 -9
  483. package/dist/schemas/onchain_operations_service.schema.json +28 -22
  484. package/dist/schemas/onchain_operations_treasury.schema.json +13 -11
  485. package/dist/schemas/onchain_table_data.output.json +88 -88
  486. package/dist/schemas/persona_operation.output.json +15875 -1
  487. package/dist/schemas/persona_operation.schema.json +3056 -478
  488. package/dist/schemas/query_toolkit.output.json +1325 -212
  489. package/dist/schemas/query_toolkit.schema.json +60 -2
  490. package/dist/schemas/workflow_operation.schema.json +4 -2
  491. package/dist/strategy/metrics.js +1 -1
  492. package/dist/strategy/scorecard.js +1 -1
  493. package/dist/tools/handlers/benchmark-migration.d.ts +2 -0
  494. package/dist/tools/handlers/benchmark-migration.js +1 -0
  495. package/dist/tools/handlers/bridge.js +1 -1
  496. package/dist/tools/handlers/config.js +1 -1
  497. package/dist/tools/handlers/dispatch-expectations.d.ts +3 -0
  498. package/dist/tools/handlers/dispatch-expectations.js +1 -0
  499. package/dist/tools/handlers/evaluation.js +1 -1
  500. package/dist/tools/handlers/industry-pack.js +1 -1
  501. package/dist/tools/handlers/onchain.js +1 -1
  502. package/dist/tools/handlers/query.js +1 -1
  503. package/dist/tools/handlers/schema-query.js +1 -1
  504. package/dist/tools/index.js +1 -1
  505. package/dist/tools/move-fn-index.gen.d.ts +3 -0
  506. package/dist/tools/move-fn-index.gen.js +1 -0
  507. package/dist/tools/registry/business.js +1 -1
  508. package/dist/tools/registry/config.js +1 -1
  509. package/dist/tools/registry/evaluation.d.ts +2 -0
  510. package/dist/tools/registry/evaluation.js +1 -0
  511. package/dist/tools/registry/onchain.js +1 -1
  512. package/dist/tools/registry/query.js +1 -1
  513. package/dist/tools/sanitize-output.d.ts +3 -0
  514. package/dist/tools/sanitize-output.js +1 -0
  515. package/dist/tools/sanitize-output.spec.d.ts +1 -0
  516. package/dist/tools/sanitize-output.spec.js +1 -0
  517. package/dist/tools/shared.d.ts +0 -1
  518. package/dist/tools/shared.js +1 -1
  519. package/dist/tools/wrap.js +1 -1
  520. package/package.json +9 -3
  521. package/dist/customer/customer-advice.d.ts +0 -32
  522. package/dist/customer/customer-advice.js +0 -1
  523. package/dist/customer/info-puzzle.d.ts +0 -146
  524. package/dist/customer/info-puzzle.js +0 -1
  525. package/dist/customer/order-strategy.d.ts +0 -17
  526. package/dist/customer/order-strategy.js +0 -1
  527. package/dist/customer/preorder-compare.d.ts +0 -24
  528. package/dist/customer/preorder-compare.js +0 -1
  529. package/dist/customer/reminder-system.d.ts +0 -42
  530. package/dist/customer/reminder-system.js +0 -1
  531. package/dist/customer/risk-assessment.d.ts +0 -13
  532. package/dist/customer/risk-assessment.js +0 -1
  533. package/dist/evaluation/builtins/service-risk.d.ts +0 -7
  534. package/dist/evaluation/builtins/service-risk.js +0 -1
  535. package/dist/knowledge/trust-metrics.d.ts +0 -66
  536. package/dist/knowledge/trust-metrics.js +0 -1
  537. package/dist/schema/trust/index.d.ts +0 -334
  538. package/dist/schema/trust/index.js +0 -1
  539. package/dist/schemas/trust_score.output.json +0 -847
  540. package/dist/schemas/trust_score.schema.json +0 -364
  541. package/dist/tools/handlers/trust.d.ts +0 -16
  542. package/dist/tools/handlers/trust.js +0 -1
  543. package/dist/tools/registry/trust.d.ts +0 -2
  544. package/dist/tools/registry/trust.js +0 -1
@@ -1 +1 @@
1
- import{ROLE_MOVE_MECHANISMS}from'../role/profiles.js';import{SUPPORTED_INDUSTRIES}from'../persona/types.js';const LEVER_WHITELIST=new Set(ROLE_MOVE_MECHANISMS);export const INDUSTRY_STRATEGIES=[{'industry':'education','benchmark':'Coursera\x20/\x20Outschool','priority_tier':0x1,'launch_window':'M1–M3','pricing':{'default_model_id':'per_lesson_escrow','models':[{'id':'per_lesson_escrow','name':'Per-lesson\x20escrow\x20release','applicable_when':'Attendance-based\x20tutoring/courses\x20delivered\x20in\x20N\x20lessons\x20(the\x20core\x20education\x20fit).','upside':'Prepaid\x20tuition\x20never\x20lands\x20with\x20the\x20institution;\x20each\x20lesson\x20fee\x20releases\x20on\x20the\x20parent\x27s\x20attendance\x20signature\x20in\x20seconds;\x20withdrawal\x20refunds\x20unearned\x20lessons\x20in\x20one\x20transaction.','risks':'Requires\x20an\x20attendance-confirmable\x20scenario;\x20purely\x20recorded/self-paced\x20courses\x20are\x20a\x20mismatch\x20(route\x20to\x20subscription).','wowok_levers':['Allocator','Guard','Machine','Order'],'recommended':!![]},{'id':'package_prepaid_raterelease','name':'Package\x20price\x20with\x20rate-based\x20release','applicable_when':'30-lesson\x20packages\x20/\x20term\x20packages\x20where\x20the\x20family\x20pays\x20once\x20up\x20front.','upside':'High\x20AOV\x20(~¥3,000\x20anchor)\x20while\x20funds\x20release\x201/N\x20per\x20completed\x20lesson\x20—\x20the\x20\x27unearned\x20tuition\x20can\x20never\x20be\x20embezzled\x27\x20guarantee\x20is\x20verifiable\x20on-chain.','risks':'Must\x20declare\x20refund\x20policy\x20up\x20front;\x20setting_lock_duration\x20should\x20lock\x20the\x20fee\x20schedule\x20(default\x2030\x20days).','wowok_levers':['Allocator','Guard','CompensationFund','Arbitration']},{'id':'trial_then_enroll','name':'Trial-class\x20conversion\x20price','applicable_when':'Cold-start\x20acquisition\x20of\x20parents\x20via\x20a\x20single\x20low-commitment\x20trial\x20lesson.','upside':'Trial\x20class\x20in\x20escrow,\x20remainder\x20only\x20after\x20the\x20parent\x20signs\x20enrollment;\x20pairs\x20with\x20referral\x20reward.','risks':'Trial\x20discount\x20must\x20stay\x20above\x20hard\x20delivery\x20cost;\x20not\x20a\x20perpetual\x20loss\x20leader.','wowok_levers':['Reward','Allocator','Guard']}]},'postures':{'volume':{'posture':'volume','thesis':'Maximize\x20enrolled\x20families\x20via\x20group-buy\x20/\x20early-bird\x20and\x20KOC\x20parent\x20communities;\x20trust\x20transparency\x20is\x20the\x20conversion\x20weapon.','tradeoffs':'Lower\x20per-seat\x20margin;\x20heavier\x20campaign/operations\x20load\x20in\x20M1–M2.','guardrails':['Never\x20discount\x20below\x20per-lesson\x20delivery\x20cost','Keep\x20arbitration\x20bound\x20and\x20compensation\x20fund\x20covered\x20at\x20every\x20promo\x20tier','Per-lesson\x20escrow\x20release\x20is\x20mandatory\x20even\x20on\x20discounted\x20packages']},'balanced':{'posture':'balanced','thesis':'Mix\x20institutional\x20direct\x20sales\x20(high-AOV\x20compliance\x20positioning)\x20with\x20parent-community\x20KOC\x20growth.','tradeoffs':'Slower\x20than\x20pure\x20volume,\x20lower\x20margin\x20ceiling\x20than\x20premium\x20small-class.','guardrails':['Per-lesson\x20escrow\x20release\x20mandatory','Refund\x20policy\x20declared\x20before\x20payment','Recorded-only\x20products\x20routed\x20to\x20subscription,\x20not\x20sold\x20as\x20attendance\x20courses']},'margin':{'posture':'margin','thesis':'Sell\x20compliance\x20itself\x20to\x20mid-size\x20institutions:\x20on-chain\x20custody\x20as\x20a\x20competitive\x20moat,\x20premium\x20positioning\x20to\x20burned-by-failure\x20parents.','tradeoffs':'Long\x20BD\x20cycles\x20(¥1,500–3,000\x20cost\x20per\x20signed\x20institution),\x20few\x20but\x20large\x20accounts.','guardrails':['Do\x20not\x20soften\x20escrow/fund\x20requirements\x20to\x20win\x20a\x20large\x20account','\x27Protocol\x20custody\x27\x20claims\x20need\x20the\x20locked\x20fee\x20schedule\x20to\x20back\x20them']}},'competitor_watch':{'dimensions':['headline\x20price\x20vs\x20escrow\x20structure','arbitration\x20availability','compensation\x20fund\x20coverage','per-lesson\x20release\x20granularity','refund-window\x20terms'],'cadence':'weekly','cadence_days':0x7,'differentiation':['Compete\x20on\x20verifiable\x20fund\x20safety\x20(parents\x20can\x20read\x20the\x20Allocation\x20themselves),\x20never\x20on\x20headline\x20discount','Lead\x20with\x20\x27teacher\x20settlement\x20in\x20seconds\x27\x20to\x20attract\x20teachers\x20as\x20well\x20as\x20parents']},'acquisition':{'channels':[{'channel':'Parent-rights\x20/\x20local\x20parent\x20KOC\x20communities','priority':0x1,'rationale':'The\x20angry\x20stock\x20from\x20tuition-failure\x20cases\x20concentrates\x20here;\x20trust\x20products\x20sell\x20through\x20trusted\x20channels\x20(¥30–80\x20per\x20paying\x20parent).'},{'channel':'Institutional\x20direct\x20BD\x20(1:1)','priority':0x2,'rationale':'Supply\x20side\x20decides\x20the\x20two-sided\x20cold\x20start;\x20one\x20institution\x20brings\x20its\x20whole\x20parent\x20base.'},{'channel':'Industry\x20media\x20/\x20policy\x20white-papers','priority':0x3,'rationale':'Zero-ad\x20spend\x20endorsement\x20during\x20the\x20next\x20regulatory\x20news\x20cycle.'},{'channel':'Paid\x20ads','priority':0x4,'rationale':'Conflicts\x20with\x20the\x20trust\x20narrative;\x20do\x20not\x20use\x20within\x20the\x20first\x2090\x20days.'}],'campaign_paradigm':'Two\x2090-day\x20campaigns:\x20(A)\x20\x27tuition\x20transparency\x20experiment\x27\x20—\x20two\x20parallel\x20classes,\x20traditional\x20vs\x20escrow,\x20open\x20on-chain\x20comparison,\x20parent\x20open-day\x20live\x20withdrawal\x20refund\x20demo;\x20(B)\x20\x27regulatory\x20answer\x27\x20white-paper\x20on\x20protocol\x20custody,\x20no\x20ads.','reward_orientation':'Milestone\x20(course\x20completion)\x20reward\x20+\x20referral\x20cashback;\x20trial-class\x20discount\x20as\x20the\x20cold-start\x20hook.','discount_orientation':'Early-bird\x20and\x20group-buy\x20only\x20during\x20campaign\x20windows;\x20student-aid\x20discount\x20as\x20targeted,\x20not\x20blanket,\x20price\x20cuts.'},'conversion_retention':['Show\x20the\x20escrow\x20contract\x20balance\x20and\x20per-lesson\x20release\x20records\x20before\x20payment\x20(on-chain\x20verification\x20page).','Convert\x20trial\x20families\x20with\x20the\x20live\x20\x27unearned\x20funds\x20are\x20still\x20yours\x27\x20demonstration.','Renew\x20via\x20per-lesson\x20release\x20history\x20+\x20attendance\x20record;\x20sibling/referral\x20reward\x20beats\x20discounting.'],'unit_economics':{'formula':'extra\x20per\x20order\x20=\x20legacy\x20platform\x20fee\x20rate\x20×\x20AOV\x20−\x20(WoW\x20gas\x20+\x20keeper\x20amortization\x20+\x20one-time\x20migration\x20cost)','anchors':[{'metric':'AOV\x20anchor\x20(30-lesson\x20package)','value':'¥3,000'},{'metric':'Legacy\x20combined\x20fee','value':'Outschool\x2030%\x20≈\x20¥900/order'},{'metric':'WoW\x20per-order\x20cost\x20(N+2\x20txns)','value':'gas\x20≈\x20$0.05–2.5'},{'metric':'Extra\x20earnings\x20per\x20order','value':'≈\x20¥890'}],'target_margin_pct_min':0x19,'cost_floor':'Never\x20price\x20a\x20package\x20below\x20total\x20teacher-cost-per-lesson\x20×\x20lessons;\x20compensation\x20fund\x20must\x20stay\x20covered.','breakeven_note':'Migration/setup\x20cost\x20amortizes\x20over\x20the\x20first\x20package;\x20gas\x20is\x20negligible\x20vs\x20¥900\x20saved.'},'success_patterns':[{'pattern':'Run\x20the\x20parallel-class\x20transparency\x20experiment\x20with\x20one\x20anchor\x20institution\x20and\x20open\x20all\x20escrow\x20data.','evidence':'KPI:\x201\x20anchor,\x20≥30\x20escrow\x20orders,\x20verifiable\x20case\x20piece,\x20parent\x20NPS\x20≥60.'},{'pattern':'Sign\x20institutions\x20through\x20direct\x20BD\x20and\x20let\x20each\x20bring\x20its\x20parent\x20base.','evidence':'90-day\x20gate:\x20≥10\x20institutions\x20beyond\x20the\x20seed;\x20BD\x20cost\x20¥1,500–3,000\x20each.'},{'pattern':'Ship\x20the\x20≤10-dialogue\x20templated\x20onboarding\x20(attendance\x20guard\x20+\x20rate\x20release\x20+\x20lock\x20duration).','evidence':'K1/04\x20validated\x20education\x20shop\x20build\x20in\x2011\x20dialogues.'},{'pattern':'Hold\x20the\x2090-day\x20quality\x20gate\x20before\x20scaling\x20spend.','evidence':'Gate:\x20≥20\x20published\x20Services\x20across\x20tier-1\x20industries,\x20>25%\x20first-to-repeat\x20rate,\x20100%\x20on-chain\x20dispute\x20closure.'}],'red_lines':['Route\x20recorded/self-paced\x20courses\x20to\x20subscription\x20—\x20never\x20sell\x20them\x20as\x20attendance\x20escrow.','Never\x20imply\x20the\x20structure\x20prevents\x20bad\x20teaching;\x20it\x20prevents\x20fund\x20embezzlement\x20(honest\x20boundary).','Marketing\x20figures\x20are\x20fiat-denominated;\x20carry\x20the\x20testnet/estimate/WOW-price\x20disclaimers.'],'sources':['wiki/market/K1/05-商业化/02-六行业商业模式深度论证与落地执行手册.md\x20§3','wiki/market/K1/01-行业分析/教育-Coursera.md']},{'industry':'rental','benchmark':'Airbnb\x20/\x20Turo\x20/\x20Getaround','priority_tier':0x1,'launch_window':'M1–M3','pricing':{'default_model_id':'rent_deposit_bundled_escrow','models':[{'id':'rent_deposit_bundled_escrow','name':'Rent\x20+\x20deposit\x20bundled\x20escrow,\x20three-path\x20settlement','applicable_when':'High-value\x20low-frequency\x20rentals\x20(camera\x20gear,\x20machinery,\x20outdoor\x20equipment)\x20and\x20P2P\x20stays\x20with\x20damage\x20disputes.','upside':'Rent\x20and\x20real\x20deposit\x20(not\x20a\x20card\x20auth)\x20are\x20escrowed;\x20three\x20mutually\x20exclusive\x20Allocator\x20paths\x20(clean\x20return\x20/\x20cancellation\x20/\x20graded\x20damage)\x20settle\x20in\x20one\x20~3-second\x20transaction.','risks':'Pre-rental\x20WIP\x20baseline\x20is\x20mandatory\x20—\x20without\x20it\x20the\x20damage\x20guard\x20cannot\x20pass\x20and\x20the\x20value\x20proposition\x20collapses.','wowok_levers':['Allocator','Guard','Machine','WIP','Arbitration'],'recommended':!![]},{'id':'graded_damage_allocator','name':'Pre-agreed\x20graded\x20damage\x20deduction','applicable_when':'Continuous\x20damage\x20amounts\x20(e.g.\x20$347.50\x20claims)\x20need\x20fairness\x20ex\x20ante.','upside':'Light\x2020%\x20/\x20heavy\x2050%\x20/\x20total\x20100%\x20brackets\x20fixed\x20before\x20rental;\x20micro-arbitration\x20only\x20for\x20bracket\x20assignment.','risks':'Brackets\x20must\x20be\x20disclosed\x20and\x20accepted\x20at\x20order\x20time.','wowok_levers':['Allocator','Guard','Arbitration']},{'id':'duration_discount','name':'Long-duration\x20discount\x20ladder','applicable_when':'Idle\x20inventory\x20with\x20low\x20marginal\x20wear\x20cost.','upside':'Monthly\x2010%\x20/\x20quarterly\x2020%\x20/\x20annual\x2030%\x20ladder\x20raises\x20utilization\x20without\x20touching\x20deposit\x20safety.','risks':'Discount\x20must\x20remain\x20above\x20maintenance+depreciation\x20cost\x20per\x20period.','wowok_levers':['Reward','Allocator']}]},'postures':{'volume':{'posture':'volume','thesis':'Win\x20utilization\x20and\x20repeat\x20rentals\x20via\x20credit-accumulation\x20rewards\x20and\x20long-duration\x20discounts;\x20lead\x20supply-side\x20signup\x20with\x20deposit\x20escrow\x20as\x20the\x20filter.','tradeoffs':'Thinner\x20per-rental\x20margin;\x20keeper\x20subsidy\x20in\x20seed\x20months.','guardrails':['Pre-rental\x20WIP\x20baseline\x20guard\x20never\x20skipped\x20even\x20for\x20promo\x20rentals','Deposit\x20must\x20be\x20really\x20funded\x20(no\x20zero-deposit\x20waivers\x20in\x20volume\x20mode)']},'balanced':{'posture':'balanced','thesis':'Seed\x20~10\x20vertical\x20merchants\x20with\x20templated\x20builds;\x20balance\x20utilization\x20promos\x20against\x20the\x20verified-case\x20marketing\x20asset.','tradeoffs':'Moderate\x20growth,\x20moderate\x20subsidy\x20($20/mo\x20keeper\x20per\x20seed\x20merchant).','guardrails':['All\x20three\x20settlement\x20paths\x20configured\x20on\x20every\x20published\x20service','Independent\x20arbitration\x20bound']},'margin':{'posture':'margin','thesis':'Premium\x20positioning\x20for\x20high-value\x20equipment:\x20renters\x20pay\x20for\x20real,\x20on-chain-verifiable\x20deposit\x20safety\x20and\x203-second\x20returns.','tradeoffs':'Smaller\x20renter\x20pool;\x20longer\x20trust-building\x20cycle.','guardrails':['Never\x20shorten\x20evidence\x20requirements\x20to\x20speed\x20up\x20a\x20premium\x20rental','Damage\x20brackets\x20stay\x20pre-agreed\x20—\x20no\x20discretionary\x20deductions']}},'competitor_watch':{'dimensions':['rent\x20price','whether\x20deposit\x20is\x20actually\x20held\x20(vs\x20card\x20auth)','pre-rental\x20evidence\x20requirement','refund\x20speed','arbitration\x20independence'],'cadence':'biweekly','cadence_days':0xe,'differentiation':['The\x20three\x20k1rent\x20Payment\x20transactions\x20are\x20the\x20marketing:\x20anyone\x20can\x20audit\x20them','Damage\x20claims\x20cannot\x20be\x20weaponized\x20via\x20reviews\x20—\x20settlement\x20is\x20independent\x20of\x20the\x20rating\x20system']},'acquisition':{'channels':[{'channel':'Vertical\x20communities\x20(photography\x20/\x20machinery\x20/\x20outdoor\x20KOC\x20groups)','priority':0x1,'rationale':'Damage-dispute\x20pain\x20is\x20concentrated\x20here\x20(¥50–120\x20per\x20renter-side\x20user).'},{'channel':'Competitors\x27\x20official\x20documents','priority':0x2,'rationale':'Cite\x20Airbnb\x27s\x202026\x20AI-image\x20claim\x20ban\x20and\x20Getaround\x27s\x20shutdown\x20—\x20opponent\x20copy\x20is\x20the\x20best\x20copy.'},{'channel':'On-chain\x20case\x20marketing\x20(auditable\x20rental\x20page)','priority':0x3,'rationale':'\x27Audit\x20this\x20rental\x20yourself\x27\x20open\x20day.'},{'channel':'Second-hand\x20marketplace\x20dispute\x20threads','priority':0x4,'rationale':'Intercept\x20existing\x20pain\x20(\x27this\x20dispute\x20could\x20not\x20happen\x20on\x20WoW\x27).'}],'campaign_paradigm':'(A)\x20\x27Audit\x20this\x20ledger\x20yourself\x27\x20open\x20day\x20around\x20the\x20k1rent\x2010-node\x20machine\x20+\x20three\x20payments;\x20(B)\x20recruit\x2010\x20seed\x20merchants,\x20keeper\x20+\x20first-order\x20gas\x20subsidy\x20for\x203\x20months.','reward_orientation':'Credit\x20accumulation\x20across\x20rentals\x20+\x20referral\x20cashback;\x20rewards\x20tied\x20to\x20verified\x20completed\x20rentals,\x20not\x20signups.','discount_orientation':'Duration\x20ladder\x20(monthly/quarterly/annual);\x20no\x20blanket\x20price\x20cuts.'},'conversion_retention':['Make\x20pre-rental\x20WIP\x20capture\x20a\x20guided,\x20frictionless\x20step\x20—\x20it\x20is\x20the\x20trust\x20moment,\x20not\x20paperwork.','Show\x20historical\x20settlement\x20transactions\x20to\x20first-time\x20renters\x20before\x20they\x20fund.','Re-rental\x20via\x20accumulated\x20credit;\x20long-duration\x20discount\x20ladder\x20for\x20inventory\x20utilization.'],'unit_economics':{'formula':'extra\x20per\x20order\x20=\x20legacy\x20commission\x20rate\x20×\x20rental\x20value\x20−\x20(WoW\x20gas\x20+\x20keeper\x20$5–20/mo\x20amortization)','anchors':[{'metric':'AOV\x20anchor\x20(camera,\x203\x20days)','value':'$200'},{'metric':'Legacy\x20host-side\x20commission','value':'15.5%\x20≈\x20$31/order'},{'metric':'WoW\x20full-cycle\x20cost\x20(k1rent\x20empirical)','value':'≈\x200.05\x20WOW\x20≈\x20¥0.35\x20(5–7\x20txns)'},{'metric':'Deposit\x20refund\x20speed','value':'7–15\x20business\x20days\x20→\x20≈3\x20seconds'}],'target_margin_pct_min':0x1e,'cost_floor':'Rental\x20price\x20must\x20cover\x20maintenance\x20+\x20depreciation\x20+\x20bracket-expected\x20damage;\x20deposit\x20never\x20lent\x20against.','breakeven_note':'At\x20$200\x20AOV\x20the\x20saved\x20$31\x20commission\x20dwarfs\x20gas\x20and\x20keeper\x20cost\x20from\x20the\x20first\x20order.'},'success_patterns':[{'pattern':'Publish\x20the\x20three\x20immutable\x20settlement\x20Payments\x20(clean\x20/\x20cancel\x20/\x20damage)\x20as\x20an\x20interactive\x20audit\x20page.','evidence':'KPI:\x20≥5,000\x20audit-page\x20UV,\x203\x20inbound\x20merchants,\x201\x20organic\x20KOC\x20retelling.'},{'pattern':'Onboard\x2010\x20equipment-rental\x20merchants\x20from\x20the\x20vertical\x20template\x20within\x203\x20months.','evidence':'Gate:\x2010\x20published\x20Services,\x20≥100\x20cumulative\x20orders,\x20zero\x20escalated\x20disputes\x20(all\x20closed\x20via\x20guard\x20or\x20micro-arbitration).'},{'pattern':'Enforce\x20pre-rental\x20WIP\x20baseline\x20as\x20a\x20hard\x20node,\x20turning\x20the\x2020%→70%\x20claim\x20rejection\x20curve\x20upside\x20down.','evidence':'Without\x20baseline\x20evidence\x20traditional\x20platforms\x20reject\x2020%;\x20with\x20missing-date\x20evidence\x20they\x20reject\x2070%.'},{'pattern':'Make\x20keeper\x20auto-return\x20reminders\x20standard\x20onboarding,\x20priced\x20transparently\x20at\x20$5–20/mo.','evidence':'Honest-boundary\x20requirement\x20from\x20k1rent\x20rollout.'}],'red_lines':['Never\x20claim\x20\x27contract-enforced\x27\x20arbitration\x20independence\x20without\x20negative-test\x20backing\x20(P-5\x20lesson).','Damage\x20deduction\x20without\x20pre-rental\x20baseline\x20is\x20forbidden\x20(guard\x20must\x20fail).','Never\x20hide\x20the\x20keeper\x20subscription\x20cost.'],'sources':['wiki/market/K1/05-商业化/02-六行业商业模式深度论证与落地执行手册.md\x20§4','wiki/market/K1/01-行业分析/租赁-Airbnb.md']},{'industry':'freelance','benchmark':'Upwork','priority_tier':0x2,'launch_window':'M2–M4','pricing':{'default_model_id':'milestone_escrow_accept','models':[{'id':'milestone_escrow_accept','name':'Milestone\x20escrow\x20with\x20acceptance\x20signature','applicable_when':'Project-based\x20design/translation/dev/copy\x20work\x20deliverable\x20in\x20milestones.','upside':'Funds\x20escrowed\x20at\x20signing;\x20deliver_guard_wip\x20anchors\x20each\x20delivery;\x20client\x20acceptance\x20signature\x20releases\x20in\x20seconds;\x2014-day\x20silence\x20auto-accepts\x20via\x20time\x20guard\x20+\x20keeper.','risks':'Milestones\x20must\x20be\x20objectively\x20verifiable;\x20vague\x20acceptance\x20criteria\x20invite\x20disputes.','wowok_levers':['Allocator','Guard','Machine','WIP','Progress'],'recommended':!![]},{'id':'fixed_deliverable','name':'Fixed-price\x20deliverable\x20with\x20revision\x20loops','applicable_when':'Single-deliverable\x20jobs\x20(logo,\x20translation,\x20article).','upside':'Revision\x20rounds\x20modeled\x20as\x20machine\x20loops;\x20micro-arbitration\x20available\x20at\x20ANY\x20amount.','risks':'Cap\x20revision\x20rounds\x20up\x20front\x20to\x20avoid\x20scope\x20creep.','wowok_levers':['Machine','Guard','Arbitration']},{'id':'demand_reverse_match','name':'Demand-based\x20reverse\x20bidding','applicable_when':'Client\x20posts\x20a\x20Demand\x20and\x20freelancers\x20present;\x20discovery\x20without\x20connect\x20fees.','upside':'Zero\x20bid-entry\x20cost\x20(vs\x20$48–120\x20first-order\x20Connects\x20burn)\x20and\x20~60%\x20zero-reply\x20proposals\x20avoided.','risks':'Presenter\x20quality\x20gating\x20via\x20passport/trust\x20evidence.','wowok_levers':['Demand','DemandPresenter','Passport','Guard']}]},'postures':{'volume':{'posture':'volume','thesis':'Win\x20order\x20count\x20through\x20Demand\x20participation\x20and\x20first-order\x20speed;\x20carry\x20portable\x20Passport\x20reputation\x20across\x20clients.','tradeoffs':'Smaller\x20milestones,\x20more\x20concurrent\x20clients.','guardrails':['Every\x20milestone\x20escrowed\x20before\x20work\x20starts','Never\x20start\x20work\x20on\x20an\x20unescrowed\x20\x27trusted\x20client\x27\x20promise']},'balanced':{'posture':'balanced','thesis':'Mix\x20Demand\x20bidding\x20with\x20referral\x20clients;\x20standardize\x20milestone\x20templates\x20to\x20cut\x20admin\x20time.','tradeoffs':'Moderate\x20pipeline;\x20time\x20invested\x20in\x20WIP\x20evidence\x20discipline.','guardrails':['Auto-accept\x20time\x20guard\x20configured','Arbitration\x20bound\x20even\x20on\x20small\x20jobs\x20(cost\x20is\x20trivial)']},'margin':{'posture':'margin','thesis':'Premium\x20positioning\x20via\x20public\x20on-chain\x20delivery\x20history\x20and\x20WIP\x20quality;\x20refuse\x20hourly-monitoring\x20clients.','tradeoffs':'Fewer,\x20larger\x20projects;\x20longer\x20sales\x20conversation.','guardrails':['Never\x20accept\x20work\x20that\x20requires\x20process\x20surveillance\x20(philosophy\x20mismatch)','Milestone\x20granularity\x20protects\x20margin\x20—\x20no\x20all-or-nothing\x20delivery']}},'competitor_watch':{'dimensions':['effective\x20fee\x20after\x20tiered\x20cuts','escrow\x20availability','settlement\x20speed','arbitration\x20fee\x20floor','reputation\x20portability'],'cadence':'biweekly','cadence_days':0xe,'differentiation':['Portable\x20Passport\x20credentials\x20vs\x20locked\x20JSS','Arbitration\x20at\x20sub-$700\x20values\x20—\x20the\x20exact\x20segment\x20incumbents\x20structurally\x20abandon','Outcome\x20verification\x20(WIP)\x20instead\x20of\x20screen\x20monitoring']},'acquisition':{'channels':[{'channel':'r/freelance,\x20Indie\x20Hackers,\x20nomad\x20communities','priority':0x1,'rationale':'Fee-fatigued\x20mid/long-tail\x20freelancers;\x20est.\x20$3–8\x20per\x20registered\x20freelancer.'},{'channel':'Design/translation\x20vertical\x20communities','priority':0x2,'rationale':'High\x20milestone-delivery\x20fit.'},{'channel':'Demand\x20reverse-match\x20events','priority':0x3,'rationale':'Crack\x20the\x20demand\x20side\x20with\x20real\x20bounties.'},{'channel':'KOC\x20income-transparency\x20program','priority':0x4,'rationale':'5–8\x20mid-tier\x20creators\x20publishing\x20Upwork\x20vs\x20WoW\x20income\x20with\x20auditable\x20addresses\x20after\x20≥20\x20merchants\x20exist.'}],'campaign_paradigm':'\x27$699\x20Arbitration\x20Clinic\x27\x20(M2–M3,\x20only\x20after\x20≥20\x20merchants):\x20publicly\x20resolve\x20sub-$700\x20disputes\x20on-chain,\x20weekly\x20micro-arbitration\x20documentary;\x20KOC\x20transparent-income\x20program\x20with\x20on-chain\x20settlement.','reward_orientation':'Referral\x20and\x20repeat-client\x20rewards;\x20KOC\x20payouts\x20auto-split\x20via\x20Allocation\x20after\x20verified\x20first-order\x20conversion.','discount_orientation':'No\x20fee-discounting\x20narrative\x20—\x20the\x20platform\x20fee\x20is\x20already\x20~0;\x20compete\x20on\x20escrow/arbitration\x20value.'},'conversion_retention':['Convert\x20prospects\x20by\x20showing\x20WIP\x20hashes\x20of\x20similar\x20completed\x20milestones.','Propose\x203–5\x20milestone\x20splits\x20in\x20the\x20first\x20proposal\x20—\x20it\x20signals\x20professionalism\x20and\x20de-risks\x20the\x20client.','Retain\x20via\x20Passport:\x20every\x20clean\x20completion\x20is\x20a\x20portable\x20credential,\x20explicitly\x20say\x20so\x20at\x20delivery.'],'unit_economics':{'formula':'extra\x20per\x20order\x20=\x20legacy\x20fee\x20rate\x20×\x20contract\x20value\x20+\x20avoided\x20connect/arbitration\x20fees\x20−\x20WoW\x20gas','anchors':[{'metric':'AOV\x20anchor\x20(milestone\x20contract)','value':'$1,000'},{'metric':'Legacy\x20take\x20rate','value':'Upwork\x2015.4%\x20≈\x20$154\x20(+\x20client\x203–7.99%)'},{'metric':'Bid\x20entry\x20cost','value':'Connects\x20$48–120\x20first-order;\x20~60%\x20of\x20proposals\x20get\x20no\x20reply'},{'metric':'WoW\x20cost\x20(4–8\x20txns)','value':'gas\x20≈\x20$0.01–0.6;\x20arbitration\x20≈\x20$0.01\x20vs\x20$337.50/party'},{'metric':'Settlement\x20speed','value':'up\x20to\x2027\x20days\x20→\x20seconds\x20on\x20acceptance\x20signature'}],'target_margin_pct_min':0x28,'cost_floor':'Milestone\x20price\x20must\x20cover\x20the\x20quoted\x20hours\x20at\x20the\x20freelancer\x27s\x20minimum\x20hourly\x20rate;\x20no\x20unpaid\x20spec\x20work\x20beyond\x20one\x20proposal.','breakeven_note':'One\x20$1,000\x20contract\x20saves\x20≈$153\x20—\x20adoption\x20pays\x20on\x20the\x20first\x20escrowed\x20job.'},'success_patterns':[{'pattern':'Run\x20the\x20\x27$699\x20Arbitration\x20Clinic\x27\x20with\x20≥10\x20closed\x20micro-arbitrations\x20and\x20publish\x20weekly\x20documentaries.','evidence':'KPI:\x20avg\x20read\x20≥3,000/episode;\x20arbitrator\x20pool\x20≥15.'},{'pattern':'Sign\x205–8\x20mid-tier\x20KOCs\x20with\x20income-guarantee\x20top-ups,\x20settled\x20on-chain\x20after\x20conversion.','evidence':'KPI:\x20≥30\x20registered\x20freelancers\x20per\x20KOC;\x20on-chain\x20conversion\x20≥8%.'},{'pattern':'Standardize\x20the\x2014-day\x20silence\x20auto-acceptance\x20guard\x20on\x20every\x20service.','evidence':'Eliminates\x20the\x20\x27client\x20disappears,\x20funds\x20locked\x27\x20failure\x20mode\x20without\x20weakening\x20buyer\x20protection.'},{'pattern':'Turn\x20down\x20hourly-surveillance\x20clients\x20explicitly.','evidence':'Outcome\x20verification\x20philosophy\x20is\x20the\x20differentiation\x20against\x20Work\x20Diary\x20monitoring.'}],'red_lines':['Do\x20not\x20start\x20work\x20before\x20the\x20milestone\x20is\x20escrowed.','Do\x20not\x20promote\x20reputation\x20portability\x20(Passport)\x20before\x20the\x20issuance\x20UX\x20is\x20production-ready.','Never\x20bid\x20below\x20minimum-rate\x20floor\x20to\x20win\x20volume.'],'sources':['wiki/market/K1/05-商业化/02-六行业商业模式深度论证与落地执行手册.md\x20§5','wiki/market/K1/01-行业分析/自由职业-Upwork.md']},{'industry':'travel','benchmark':'Booking\x20/\x20TUI','priority_tier':0x3,'launch_window':'M4+','pricing':{'default_model_id':'multi_segment_release','models':[{'id':'multi_segment_release','name':'Multi-leg\x20itinerary\x20with\x20per-segment\x20release','applicable_when':'Custom/multi-segment\x20packaged\x20trips\x20by\x20small\x20studios\x20(TUI-fit\x2010/10).','upside':'segment_D1..DN\x20machine;\x20each\x20segment\x27s\x20WIP\x20releases\x20its\x20fee;\x20interrupted\x20segments\x20refund\x20in\x20one\x20transaction;\x20fund\x20waterfall\x20fully\x20auditable.','risks':'Sub-providers\x20(hotels/drivers)\x20need\x20not\x20be\x20on-chain\x20initially\x20—\x20the\x20agent\x20is\x20the\x20single\x20on-chain\x20counterparty;\x20adoption\x20bottleneck\x20is\x20why\x20travel\x20is\x20tier\x203.','wowok_levers':['Machine','Allocator','Treasury','Guard','WIP'],'recommended':!![]},{'id':'agent_single_custody','name':'Agent\x20single-counterparty\x20custody','applicable_when':'Downstream\x20suppliers\x20are\x20not\x20on-chain\x20yet.','upside':'Agent↔client\x20escrow\x20closes\x20the\x20trust\x20loop\x20alone;\x20supplier\x20participation\x20grows\x20with\x20network\x20effects.','risks':'Agent\x20must\x20hold\x20correct\x20licensing\x20and\x20fund\x20the\x20compensation\x20coverage.','wowok_levers':['Allocator','Treasury','CompensationFund','Arbitration']},{'id':'weather_guarantee','name':'Weather/condition-guarded\x20pricing','applicable_when':'Weather-sensitive\x20segments\x20can\x20reference\x20an\x20evidence\x20repository.','upside':'Auto-refund\x20triggers\x20via\x20quoted\x20guard\x20+\x20repository\x20oracle\x20—\x20a\x20feature\x20no\x20OTA\x20offers.','risks':'Guard\x20trigger\x20source\x20must\x20be\x20specified\x20and\x20tested\x20before\x20sale.','wowok_levers':['Guard','Allocator','Repository']}]},'postures':{'volume':{'posture':'volume','thesis':'Postpone;\x20volume\x20play\x20only\x20after\x20tier-1/2\x20Passport\x20network\x20lowers\x20cold-start\x20cost.','tradeoffs':'High\x20coordination\x20cost\x20across\x20sub-providers.','guardrails':['Never\x20sell\x20standard\x20standalone\x20flights/hotels\x20(weak\x20WoW\x20value)','Undelivered\x20segments\x20always\x20refundable\x20via\x20the\x20interrupted\x20path']},'balanced':{'posture':'balanced','thesis':'Pilot\x20with\x202–3\x20custom-trip\x20studios\x20on\x20single-counterparty\x20custody;\x20prove\x20the\x20waterfall\x20story.','tradeoffs':'Few\x20pilots,\x20heavy\x20case-building\x20effort\x20($10–15K\x20pilot\x20budget).','guardrails':['Fund\x20waterfall\x20visible\x20to\x20the\x20buyer\x20before\x20payment','Cancellation\x20policy\x20per\x20leg\x20declared\x20up\x20front']},'margin':{'posture':'margin','thesis':'Premium\x20bespoke\x20itineraries\x20priced\x20on\x20trust\x20architecture\x20and\x20transparent\x20waterfall,\x20not\x20OTA\x20discounting.','tradeoffs':'Small\x20high-AOV\x20audience.','guardrails':['Refundable\x20vs\x20non-refundable\x20legs\x20separated\x20explicitly','Never\x20commingle\x20undelivered-segment\x20funds\x20with\x20operating\x20cash']}},'competitor_watch':{'dimensions':['effective\x20commission\x20after\x20Preferred/Genius','waterfall\x20transparency','cancellation\x20terms\x20per\x20leg','downstream\x20refund\x20handling\x20(e.g.\x20EU261\x20gaps)','settlement\x20speed'],'cadence':'monthly','cadence_days':0x1e,'differentiation':['The\x20$2,000\x20waterfall\x20split\x20across\x20hotel/guide/agent\x20is\x20inspectable\x20before\x20purchase','Pre-event\x20isolation\x20vs\x20Thomas-Cook-style\x20post-hoc\x20relief']},'acquisition':{'channels':[{'channel':'Custom-trip\x20studio\x20direct\x20partnerships','priority':0x1,'rationale':'Only\x20segment\x20with\x2010/10\x20fit;\x202–3\x20pilot\x20studios.'},{'channel':'Travel-industry\x20failure\x20news\x20cycles','priority':0x2,'rationale':'Thomas\x20Cook\x20£400M\x20/\x20pandemic\x20$35B\x20refund\x20stories\x20anchor\x20pre-isolation\x20demand.'},{'channel':'Waterfall/weather\x20demo\x20content','priority':0x3,'rationale':'Interactive\x20fund-split\x20and\x20auto-refund\x20demos.'}],'campaign_paradigm':'\x27Transparent\x20waterfall\x27\x20demo\x20($2,000\x20split\x20readable\x20on-chain)\x20+\x20weather-guard\x20auto-refund\x20demo;\x20$10–15K\x20for\x202–3\x20studio\x20pilots,\x20M4–M6.','reward_orientation':'Referral\x20commission\x20for\x20repeat/referral\x20custom\x20trips;\x20flash-sale\x20rewards\x20only\x20for\x20off-peak\x20clearance.','discount_orientation':'Early-bird\x20/\x20group\x20/\x20member\x20pricing\x20within\x20seasons;\x20never\x20discount\x20by\x20hiding\x20non-refundable\x20legs.'},'conversion_retention':['Sell\x20the\x20pre-trip\x20inspection\x20of\x20the\x20entire\x20fund\x20waterfall\x20as\x20the\x20core\x20asset.','Convert\x20with\x20the\x20interrupted-segment\x20one-transaction\x20refund\x20demo.','Re-book\x20via\x20itinerary\x20history\x20and\x20per-leg\x20transparency,\x20not\x20loyalty\x20points.'],'unit_economics':{'formula':'extra\x20per\x20trip\x20=\x20effective\x20OTA\x20commission\x20×\x20trip\x20value\x20−\x20(WoW\x20gas\x20across\x202×segments+3\x20txns)','anchors':[{'metric':'AOV\x20anchor\x20(5-segment\x20custom\x20trip)','value':'$2,000'},{'metric':'Effective\x20legacy\x20commission','value':'25–36%\x20≈\x20$350–720/trip'},{'metric':'WoW\x20cost','value':'gas\x20≈\x20$0.02–1'},{'metric':'Settlement\x20speed','value':'VCC\x202–6\x20weeks\x20→\x20per-segment\x20seconds'}],'target_margin_pct_min':0x23,'cost_floor':'Never\x20collect\x20funds\x20for\x20unbooked\x20legs\x20without\x20the\x20interrupted\x20refund\x20path;\x20compensation\x20coverage\x20sized\x20for\x20max\x20single-segment\x20value.','breakeven_note':'Gas\x20is\x20noise\x20against\x20$350–700\x20saved\x20per\x20trip;\x20the\x20binding\x20constraint\x20is\x20supplier\x20adoption,\x20not\x20economics.'},'success_patterns':[{'pattern':'Pilot\x202–3\x20custom-trip\x20studios\x20with\x20agent-only\x20custody\x20first.','evidence':'Avoids\x20the\x20sub-provider\x20on-chain\x20bottleneck\x20that\x20justifies\x20tier-3\x20timing.'},{'pattern':'Ship\x20the\x20interactive\x20$2,000\x20waterfall\x20visualization\x20as\x20the\x20sales\x20asset.','evidence':'Buys\x20on\x20chain-visible\x20split\x20—\x20unique\x20vs\x20every\x20OTA.'},{'pattern':'Use\x20a\x20weather\x20repository\x20guard\x20for\x20automatic\x20segment\x20refund\x20in\x20one\x20marketed\x20demo.','evidence':'Converts\x20an\x20abstract\x20\x27escrow\x27\x20claim\x20into\x20a\x20visible\x20guarantee.'}],'red_lines':['Do\x20not\x20enter\x20standard\x20flight/hotel\x20resale\x20—\x20WoW\x20value\x20is\x20weak\x20there.','Never\x20market\x20large\x20cross-period\x20custody\x20before\x20stablecoin\x20bridging\x20is\x20ready.','Cross-leg\x20responsibility\x20must\x20be\x20disclosed,\x20not\x20blurred.'],'sources':['wiki/market/K1/05-商业化/02-六行业商业模式深度论证与落地执行手册.md\x20§7','wiki/market/K1/01-行业分析/旅游-Booking.md']},{'industry':'retail','benchmark':'Amazon\x20/\x20Etsy','priority_tier':0x3,'launch_window':'M4+','pricing':{'default_model_id':'receipt_confirmed_escrow','models':[{'id':'receipt_confirmed_escrow','name':'Escrow\x20released\x20on\x20confirmed\x20receipt','applicable_when':'Private-traffic\x20sellers\x20(DTC\x20site\x20/\x20community\x20commerce)\x20who\x20already\x20own\x20demand.','upside':'Funds\x20release\x20seconds\x20after\x20receipt\x20guard;\x20return_auth_guard\x20gates\x20fraudulent\x20returns;\x20provenance\x20via\x20repository\x20chain.','risks':'Zero-traffic\x20sellers\x20are\x20a\x20deliberate\x20mismatch\x20—\x20WoW\x20does\x20not\x20replace\x20marketplace\x20demand\x20generation.','wowok_levers':['Allocator','Guard','Repository','Arbitration','CompensationFund'],'recommended':!![]},{'id':'member_bundle_pricing','name':'Member/bundle\x20pricing\x20for\x20private\x20communities','applicable_when':'Community-commerce\x20sellers\x20with\x20repeat\x20purchase\x20cadence.','upside':'Spend-threshold\x20and\x20member\x20pricing\x20via\x20rewards\x20instead\x20of\x20platform\x20TACoS.','risks':'Bundles\x20must\x20still\x20be\x20escrowed\x20per\x20deliverable;\x20no\x20pre-shipment\x20release.','wowok_levers':['Reward','Allocator']}]},'postures':{'volume':{'posture':'volume','thesis':'Turn\x20existing\x20private-traffic\x20flow\x20into\x20escrow\x20GMV;\x20first-order\x20and\x20spend-threshold\x20rewards\x20maximize\x20repeat.','tradeoffs':'Thin\x20unit\x20margin\x20—\x20viable\x20only\x20because\x20gas\x20is\x20<$1\x20per\x20$1,000\x20GMV.','guardrails':['Receipt\x20confirmation\x20guard\x20never\x20bypassed','Compensation\x20fund\x20coverage\x20ratio\x20default\x205×\x20max\x20single\x20order']},'balanced':{'posture':'balanced','thesis':'Pilot\x205–8\x20private-domain\x20sellers;\x20use\x20the\x20gas-bill\x20livestream\x20as\x20the\x20core\x20proof\x20asset.','tradeoffs':'Moderate\x20growth\x20gated\x20by\x20existing\x20audience\x20size.','guardrails':['Return-auth\x20evidence\x20(dual\x20signature\x20/\x20logistics\x20repository)\x20required','Configurable\x20arbitration\x20voting\x20period']},'margin':{'posture':'margin','thesis':'Premium\x20provenance/proven-authenticity\x20selling:\x20repository\x20chain\x20+\x20escrow\x20as\x20anti-counterfeit\x20proof.','tradeoffs':'Niche\x20audience;\x20authenticity\x20verification\x20operations\x20cost.','guardrails':['Never\x20claim\x20authenticity\x20beyond\x20what\x20repository\x20evidence\x20proves','No\x20reserve-period\x20exposure\x20of\x20funds\x20to\x20the\x20seller\x20pre-receipt']}},'competitor_watch':{'dimensions':['headline\x20price','settlement\x20reserve\x20policy','return-fraud\x20handling','arbitration\x20default\x20rulings','provenance\x20evidence'],'cadence':'weekly','cadence_days':0x7,'differentiation':['Settlement\x20in\x20seconds\x20vs\x2014\x20days\x20+\x20DD+90\x20reserve\x20risk','Return\x20fraud\x20requires\x20dual-signed/logistics\x20evidence\x20instead\x20of\x20A-to-z\x20default\x20buyer\x20wins','\x27You\x20pay\x2030%\x20for\x20traffic\x20or\x20trust\x20—\x20we\x20provide\x20trust,\x20you\x20bring\x20traffic\x27']},'acquisition':{'channels':[{'channel':'Existing\x20private-traffic\x20sellers\x20(DTC,\x20community,\x20We-commerce)','priority':0x1,'rationale':'\x27Have\x20traffic,\x20trust\x20is\x20expensive\x27\x20is\x20the\x20filter;\x20zero-traffic\x20sellers\x20are\x20turned\x20away\x20at\x20intake.'},{'channel':'Etsy-refugee\x20targeting','priority':0x2,'rationale':'24.2%\x20fee-increase\x20victim\x20communities.'},{'channel':'Live\x20gas-bill\x20comparison\x20events','priority':0x3,'rationale':'\x27$1,000\x20GMV\x20cost\x20teardown\x27:\x20same\x20shop,\x20WoW\x20vs\x20Amazon\x20$300–350.'}],'campaign_paradigm':'\x27$1,000\x20GMV\x20cost\x27\x20livestream\x20with\x20public\x20full-cycle\x20gas\x20accounting;\x20targeted\x20Etsy-refugee\x20recruitment;\x20$6–10K\x20pilot\x20for\x205–8\x20sellers,\x20M4–M6.','reward_orientation':'First-order\x20discount\x20+\x20spend\x20cashback\x20+\x20spend-threshold\x20rewards\x20inside\x20the\x20owned\x20community.','discount_orientation':'Threshold/limited/member\x20discounts\x20only;\x20no\x20marketplace-style\x20bidding\x20wars.'},'conversion_retention':['Make\x20receipt-confirmation\x20the\x20one-tap\x20trust\x20moment;\x20show\x20release\x20seconds\x20later.','Re-purchase\x20via\x20spend\x20cashback\x20and\x20provenance\x20certificates.','Convert\x20return-averse\x20buyers\x20with\x20the\x20return-auth\x20evidence\x20flow\x20up\x20front.'],'unit_economics':{'formula':'extra\x20per\x20$1,000\x20GMV\x20=\x20legacy\x20combined\x20burden\x20−\x20WoW\x20gas\x20(4–6\x20txns)','anchors':[{'metric':'AOV\x20anchor\x20(private\x20domain)','value':'$50'},{'metric':'Legacy\x20combined\x20burden','value':'Amazon\x2030–35%\x20≈\x20$300–350\x20per\x20$1,000\x20GMV'},{'metric':'WoW\x20cost\x20per\x20$1,000\x20GMV','value':'gas\x20≈\x20$0.01–0.5\x20(<\x20$1)'},{'metric':'Return\x20rate\x20/\x20fraud\x20share','value':'19.3%\x20returns\x20/\x209%\x20fraudulent\x20under\x20incumbent\x20flow'}],'target_margin_pct_min':0x14,'cost_floor':'Never\x20price\x20below\x20COGS\x20+\x20shipping\x20+\x20expected-return-provision;\x20fund\x20coverage\x205×\x20max\x20single\x20order.','breakeven_note':'Economics\x20work\x20at\x20almost\x20any\x20AOV;\x20traffic\x20availability\x20is\x20the\x20only\x20admission\x20criterion.'},'success_patterns':[{'pattern':'Use\x20the\x20honest-boundary\x20intake\x20questionnaire\x20to\x20reject\x20zero-traffic\x20sellers.','evidence':'Raises\x20conversion\x20quality;\x20WoW\x20does\x20not\x20sell\x20traffic\x20(40.5%\x20share\x20value\x20stays\x20with\x20Amazon).\x20'},{'pattern':'Run\x20the\x20public\x20\x27$1,000\x20GMV\x20gas\x20bill\x27\x20livestream\x20with\x20the\x20same\x20shop\x27s\x20orders.','evidence':'Contrasts\x20$300–350\x20incumbent\x20burden\x20vs\x20<$1\x20on-chain\x20cost.'},{'pattern':'Enforce\x20dual-signature/logistics\x20return\x20evidence\x20to\x20structurally\x20raise\x20fraud\x20cost.','evidence':'Targets\x20the\x209%\x20fraudulent\x20share\x20of\x20the\x2019.3%\x20return\x20rate.'},{'pattern':'Recruit\x20Etsy\x20fee-hike\x20refugees\x20directly\x20from\x20victim\x20communities.','evidence':'24.2%\x20unilateral\x20fee\x20increase\x20is\x20the\x20triggering\x20event.'}],'red_lines':['Never\x20promise\x20traffic\x20—\x20WoW\x20is\x20trust\x20infrastructure,\x20not\x20a\x20marketplace\x20demand\x20source.','No\x20auto-default\x20buyer-win\x20rulings;\x20arbitration\x20voting\x20period\x20must\x20be\x20configured.','Physical\x20authenticity\x20claims\x20require\x20repository\x20evidence.'],'sources':['wiki/market/K1/05-商业化/02-六行业商业模式深度论证与落地执行手册.md\x20§8','wiki/market/K1/01-行业分析/零售-Amazon.md']},{'industry':'subscription','benchmark':'Patreon\x20/\x20OnlyFans\x20/\x20Apple\x20IAP','priority_tier':0x2,'launch_window':'M2–M4','pricing':{'default_model_id':'per_period_signed_charge','models':[{'id':'per_period_signed_charge','name':'Per-period\x20signed\x20charge\x20with\x20delivery\x20gate','applicable_when':'Creator\x20memberships,\x20newsletters,\x20indie\x20software\x20—\x20recurring\x20digital\x20value.','upside':'charge_guard_signer\x20requires\x20explicit\x20signature\x20every\x20period;\x20deliver_guard_wip\x20blocks\x20the\x20charge\x20when\x20no\x20value\x20was\x20delivered;\x20cancel\x20is\x20one\x20signature;\x20100%\x20Allocation\x20to\x20creator.','risks':'The\x20per-period\x20signature\x20is\x20deliberate\x20friction\x20—\x20sell\x20it\x20as\x20the\x20feature;\x20do\x20not\x20sneak\x20in\x20any\x20auto-renewal\x20path.','wowok_levers':['Guard','Allocator','Machine','Reward'],'recommended':!![]},{'id':'annual_prepaid_period_release','name':'Annual\x20prepay\x20released\x20per\x20period','applicable_when':'Loyal\x20fans\x20wanting\x20a\x20yearly\x20plan;\x20creator\x20wants\x20upfront\x20cash.','upside':'Annual\x20funds\x20escrow\x20and\x20release\x20monthly\x20to\x20the\x20creator\x20—\x20prepaid\x20but\x20protected\x20if\x20the\x20creator\x20stops.','risks':'Stoppage\x20refunds\x20for\x20undelivered\x20months\x20must\x20be\x20structurally\x20guaranteed.','wowok_levers':['Allocator','Guard']},{'id':'tiered_membership','name':'Tiered\x20membership\x20with\x20escalating\x20deliverables','applicable_when':'Creators\x20with\x20multiple\x20value\x20tiers\x20(Patreon-style).','upside':'Each\x20tier\x20maps\x20to\x20its\x20own\x20delivery\x20guard;\x20upgrades/downgrades\x20take\x20effect\x20next\x20period\x20only.','risks':'Tier\x20deliverables\x20must\x20be\x20concrete\x20enough\x20for\x20the\x20delivery\x20guard\x20to\x20evaluate.','wowok_levers':['Machine','Guard','WIP']}]},'postures':{'volume':{'posture':'volume','thesis':'Subscriber\x20count\x20first\x20via\x20the\x20\x27signing\x20movement\x27\x20consumer\x20tool\x20and\x20first-month\x20pricing;\x20keep\x20100%\x20pass-through\x20as\x20the\x20wedge.','tradeoffs':'Conversion\x20funnel\x20includes\x20the\x20signature\x20friction\x20—\x20lean\x20into\x20it\x20as\x20qualification.','guardrails':['Never\x20reintroduce\x20auto-renewal\x20to\x20optimize\x20conversion','Delivery\x20gate\x20on\x20every\x20charge']},'balanced':{'posture':'balanced','thesis':'Balance\x20acquisition\x20(subscription\x20checkup\x20tool)\x20with\x20retention\x20(100%\x20arrival\x20day\x20rituals).','tradeoffs':'Moderate\x20growth;\x20investment\x20in\x20per-period\x20value\x20proof.','guardrails':['Fee\x20schedule\x20frozen\x20at\x20publish','Cancellation\x20one\x20signature,\x20no\x20retention\x20dark\x20patterns']},'margin':{'posture':'margin','thesis':'Fewer,\x20higher-paying\x20true\x20fans;\x20per-period\x20signing\x20filters\x20for\x20committed\x20members\x20and\x20supports\x20premium\x20tiers.','tradeoffs':'Smaller\x20list,\x20higher\x20ARPU.','guardrails':['No\x20IAP-style\x2030%\x20channel\x20accepted\x20—\x20direct\x20settlement\x20is\x20the\x20product','Stoppage\x20protection\x20advertised\x20and\x20enforced']}},'competitor_watch':{'dimensions':['take\x20rate\x20and\x20unilateral\x20change\x20history','charge\x20transparency','cancellation\x20click\x20count','stopped-creator\x20policy','time-to-payout'],'cadence':'weekly','cadence_days':0x7,'differentiation':['13\x20years\x20/\x20three\x20unilateral\x20Patreon\x20price\x20rises\x20are\x20structurally\x20impossible\x20(published\x20allocation\x20is\x20frozen)','Charge\x20without\x20delivery\x20cannot\x20pass\x20—\x20an\x20industry\x20blank','15-option\x20cancel\x20maze\x20→\x20one\x20signature\x20(FTC\x20$2.5B\x20settlement\x20context)']},'acquisition':{'channels':[{'channel':'Creator\x20communities\x20(Discord,\x20Patreon\x20forums)','priority':0x1,'rationale':'Survival-line\x20creators\x20($131–180\x20median\x20monthly)\x20feel\x20the\x2010–20%\x20fee\x20directly\x20($2–5\x20per\x20subscriber).'},{'channel':'Newsletter\x20/\x20indie-dev\x20circles','priority':0x2,'rationale':'Apple\x20IAP\x2030%\x20+\x2075-day\x20payout\x20float\x20pain.'},{'channel':'Hacker\x20News\x20/\x20anti-dark-pattern\x20audience','priority':0x3,'rationale':'Values\x20alignment\x20beats\x20ad\x20spend.'}],'campaign_paradigm':'\x27Signing\x20Movement\x27\x20(M2–M4):\x20consumer-side\x20subscription\x20checkup\x20widget\x20(2.5×\x20spend\x20underestimate\x20/\x2042%\x20unused\x20data)\x20+\x20creator\x20\x27100%\x20arrival\x20day\x27\x20monthly\x20chain-receipt\x20posts;\x20$4–7K,\x20keyed\x20to\x20FTC/price-hike\x20news\x20cycles.','reward_orientation':'Loyalty\x20+\x20referral\x20rewards\x20only;\x20first-month\x20price\x20as\x20the\x20single\x20acquisition\x20discount.','discount_orientation':'Annual\x20/\x20team\x20/\x20upgrade\x20discounts\x20—\x20never\x20discount\x20by\x20hiding\x20renewal\x20terms.'},'conversion_retention':['Onboard\x20creators\x20by\x20migrating\x20one\x20tier\x20first\x20and\x20showing\x20the\x20per-period\x20release\x20receipts.','Retain\x20with\x20the\x20\x27unused\x20month\x27\x20guarantee:\x20no\x20delivery\x20→\x20no\x20charge.','Convert\x20fans\x20with\x20the\x20cancellation\x20demo\x20(15\x20options\x20→\x201\x20signature).'],'unit_economics':{'formula':'extra\x20per\x20year\x20=\x20legacy\x20take\x20rate\x20×\x20annual\x20subscription\x20revenue\x20−\x20WoW\x20gas\x20(2\x20txns/period)','anchors':[{'metric':'Monthly\x20anchor','value':'$100/month\x20($1,200/year)'},{'metric':'Legacy\x20take','value':'Patreon\x2010%\x20≈\x20$10/month;\x20iOS\x20IAP\x2030%'},{'metric':'WoW\x20annual\x20cost\x20(12\x20periods)','value':'gas\x20≈\x20$0.03–2/year'},{'metric':'Payout\x20speed','value':'IAP\x20up\x20to\x2075-day\x20float\x20→\x20seconds\x20each\x20period'}],'target_margin_pct_min':0x3c,'cost_floor':'Creator\x20must\x20keep\x20delivering\x20per-period\x20value;\x20no\x20charge\x20passes\x20without\x20delivery\x20evidence.','breakeven_note':'≈$120/year\x20extra\x20on\x20a\x20single\x20$100/month\x20membership.'},'success_patterns':[{'pattern':'Ship\x20the\x20subscription-checkup\x20widget\x20before\x20creator\x20outreach.','evidence':'KPI:\x20≥20,000\x20checkups;\x20consumer\x20demand\x20pulls\x20creators.'},{'pattern':'Run\x20monthly\x20\x27100%\x20arrival\x20day\x27\x20with\x20public\x20chain\x20receipts.','evidence':'30\x20creators\x20onboard\x20target;\x20turns\x20payout\x20into\x20recurring\x20proof.'},{'pattern':'Publish\x20the\x20one-signature\x20cancellation\x20video.','evidence':'KPI:\x20≥100K\x20views\x20—\x20contrast\x20with\x20the\x204-page/6-click/15-option\x20incumbent\x20flow.'},{'pattern':'Capture\x20education\x20recorded-course\x20overflow\x20traffic.','evidence':'Routing\x20rule:\x20recorded\x20courses\x20→\x20subscription,\x20keeping\x20both\x20fits\x20clean.'}],'red_lines':['Never\x20implement\x20or\x20imply\x20auto-renewal\x20—\x20every\x20period\x20is\x20signed.','Never\x20charge\x20a\x20period\x20without\x20delivery\x20evidence.','No\x20rate\x20lock\x20claims\x20except\x20through\x20published\x20frozen\x20Allocation.'],'sources':['wiki/market/K1/05-商业化/02-六行业商业模式深度论证与落地执行手册.md\x20§6','wiki/market/K1/01-行业分析/订阅-Patreon.md']}];const STRATEGY_BY_INDUSTRY=new Map(INDUSTRY_STRATEGIES['map'](a=>[a['industry'],a]));export function registerIndustryStrategy(a){STRATEGY_BY_INDUSTRY['set'](a['industry'],a);}export function unregisterIndustryStrategy(a){const b=INDUSTRY_STRATEGIES['find'](c=>c['industry']===a);if(b)return STRATEGY_BY_INDUSTRY['set'](a,b),!![];return STRATEGY_BY_INDUSTRY['delete'](a);}export function getIndustryStrategy(a){return STRATEGY_BY_INDUSTRY['get'](a['toLowerCase']());}export function listIndustryStrategies(){return SUPPORTED_INDUSTRIES['map'](a=>STRATEGY_BY_INDUSTRY['get'](a))['filter'](a=>a!==undefined);}export function stageFromOrderCount(a){if(a>=0x32)return'optimization';if(a>=0x14)return'mature';if(a>=0x5)return'growing';return'cold_start';}export function recommendStrategy(a,b='balanced',c,d){const e=getIndustryStrategy(a);if(!e||e['pricing']['models']['length']===0x0)return null;const f=c??(d?.['order_count']!==undefined?stageFromOrderCount(d['order_count']):'cold_start');let g=e['pricing']['models']['find'](j=>j['id']===e['pricing']['default_model_id'])??e['pricing']['models'][0x0];if(b==='volume'){const j=e['pricing']['models']['find'](k=>/(?:^|_)(discount|trial|first|bundle|member)(?:_|$)/i['test'](k['id']))??g;g=j;}else{if(b==='margin'&&e['pricing']['models']['length']>0x1){const k=e['pricing']['models']['find'](l=>/premium|graded|tiered|guarantee|prepaid/i['test'](l['id']));if(k)g=k;}}const h=[],i=(l,m)=>{if(l&&h['length']<0x3)h['push'](m);};return i(f==='cold_start','Cold\x20start:\x20publish\x20the\x20service\x20with\x20the\x20\x22'+g['name']+'\x22\x20model\x20and\x20bound\x20Arbitration\x20+\x20compensation\x20fund\x20first;\x20seed\x20the\x20anchor\x20trust\x20case\x20before\x20discounting.'),d?.['dispute_rate']!==undefined&&i(d['dispute_rate']>0.05,'Dispute\x20rate\x20'+(d['dispute_rate']*0x64)['toFixed'](0x1)+'%\x20exceeds\x205%:\x20tighten\x20pre-delivery\x20evidence\x20guards\x20and\x20pause\x20promotions\x20until\x20closure\x20is\x20back\x20on-chain.'),d?.['repeat_customer_rate']!==undefined&&i(d['repeat_customer_rate']<0.25&&f!=='cold_start','Repeat\x20rate\x20'+(d['repeat_customer_rate']*0x64)['toFixed'](0x0)+'%\x20is\x20below\x20the\x2025%\x20K1\x20gate:\x20add\x20a\x20repeat/referral\x20reward\x20and\x20review\x20post-delivery\x20follow-up\x20rather\x20than\x20cutting\x20price.'),d?.['order_count']!==undefined&&i(b==='volume'&&d['order_count']>=0x5&&d['order_count']<0x32,'Growing\x20stage\x20under\x20volume\x20posture:\x20run\x20the\x20cataloged\x20acquisition\x20campaign\x20('+(e['acquisition']['channels'][0x0]?.['channel']??'top\x20channel')+')\x20with\x20reward—not\x20blanket\x20discount—orientation.'),i(h['length']===0x0,b+'\x20posture:\x20hold\x20the\x20\x22'+g['name']+'\x22\x20model,\x20run\x20the\x20'+e['competitor_watch']['cadence']+'\x20competitor\x20watch\x20('+e['competitor_watch']['dimensions']['slice'](0x0,0x3)['join'](',\x20')+'),\x20and\x20keep\x20all\x20guardrails:\x20'+e['postures'][b]['guardrails'][0x0]),{'industry':e['industry'],'posture':b,'stage':f,'pricing_model_id':g['id'],'pricing_model_name':g['name'],'actions':h['slice'](0x0,0x3)};}export function validateStrategyLevers(a){const b=[];for(const c of a['pricing']['models']){for(const d of c['wowok_levers']){!LEVER_WHITELIST['has'](d)&&b['push'](a['industry']+'.'+c['id']+':\x20unknown\x20WoW\x20lever\x20\x27'+d+'\x27');}}return b;}
1
+ import{ROLE_MOVE_MECHANISMS}from'../role/profiles.js';import{SUPPORTED_INDUSTRIES}from'../persona/types.js';const LEVER_WHITELIST=new Set(ROLE_MOVE_MECHANISMS);export const INDUSTRY_STRATEGIES=[{'industry':'education','benchmark':'MOOC\x20/\x20live-class\x20incumbents','priority_tier':0x1,'launch_window':'M1–M3','pricing':{'default_model_id':'per_lesson_escrow','models':[{'id':'per_lesson_escrow','name':'Per-lesson\x20escrow\x20release','applicable_when':'Attendance-based\x20tutoring/courses\x20delivered\x20in\x20N\x20lessons\x20(the\x20core\x20education\x20fit).','upside':'Prepaid\x20tuition\x20never\x20lands\x20with\x20the\x20institution;\x20each\x20lesson\x20fee\x20releases\x20on\x20the\x20parent\x27s\x20attendance\x20signature\x20in\x20seconds;\x20withdrawal\x20refunds\x20unearned\x20lessons\x20in\x20one\x20transaction.','risks':'Requires\x20an\x20attendance-confirmable\x20scenario;\x20purely\x20recorded/self-paced\x20courses\x20are\x20a\x20mismatch\x20(route\x20to\x20subscription).','wowok_levers':['Allocator','Guard','Machine','Order'],'recommended':!![]},{'id':'package_prepaid_raterelease','name':'Package\x20price\x20with\x20rate-based\x20release','applicable_when':'30-lesson\x20packages\x20/\x20term\x20packages\x20where\x20the\x20family\x20pays\x20once\x20up\x20front.','upside':'High\x20AOV\x20(~¥3,000\x20anchor)\x20while\x20funds\x20release\x201/N\x20per\x20completed\x20lesson\x20—\x20the\x20\x27unearned\x20tuition\x20can\x20never\x20be\x20embezzled\x27\x20guarantee\x20is\x20verifiable\x20on-chain.','risks':'Must\x20declare\x20refund\x20policy\x20up\x20front;\x20setting_lock_duration\x20should\x20lock\x20the\x20fee\x20schedule\x20(default\x2030\x20days).','wowok_levers':['Allocator','Guard','CompensationFund','Arbitration']},{'id':'trial_then_enroll','name':'Trial-class\x20conversion\x20price','applicable_when':'Cold-start\x20acquisition\x20of\x20parents\x20via\x20a\x20single\x20low-commitment\x20trial\x20lesson.','upside':'Trial\x20class\x20in\x20escrow,\x20remainder\x20only\x20after\x20the\x20parent\x20signs\x20enrollment;\x20pairs\x20with\x20referral\x20reward.','risks':'Trial\x20discount\x20must\x20stay\x20above\x20hard\x20delivery\x20cost;\x20not\x20a\x20perpetual\x20loss\x20leader.','wowok_levers':['Reward','Allocator','Guard']}]},'postures':{'volume':{'posture':'volume','thesis':'Maximize\x20enrolled\x20families\x20via\x20group-buy\x20/\x20early-bird\x20and\x20KOC\x20parent\x20communities;\x20trust\x20transparency\x20is\x20the\x20conversion\x20weapon.','tradeoffs':'Lower\x20per-seat\x20margin;\x20heavier\x20campaign/operations\x20load\x20in\x20M1–M2.','guardrails':['Never\x20discount\x20below\x20per-lesson\x20delivery\x20cost','Keep\x20arbitration\x20bound\x20and\x20compensation\x20fund\x20covered\x20at\x20every\x20promo\x20tier','Per-lesson\x20escrow\x20release\x20is\x20mandatory\x20even\x20on\x20discounted\x20packages']},'balanced':{'posture':'balanced','thesis':'Mix\x20institutional\x20direct\x20sales\x20(high-AOV\x20compliance\x20positioning)\x20with\x20parent-community\x20KOC\x20growth.','tradeoffs':'Slower\x20than\x20pure\x20volume,\x20lower\x20margin\x20ceiling\x20than\x20premium\x20small-class.','guardrails':['Per-lesson\x20escrow\x20release\x20mandatory','Refund\x20policy\x20declared\x20before\x20payment','Recorded-only\x20products\x20routed\x20to\x20subscription,\x20not\x20sold\x20as\x20attendance\x20courses']},'margin':{'posture':'margin','thesis':'Sell\x20compliance\x20itself\x20to\x20mid-size\x20institutions:\x20on-chain\x20custody\x20as\x20a\x20competitive\x20moat,\x20premium\x20positioning\x20to\x20burned-by-failure\x20parents.','tradeoffs':'Long\x20BD\x20cycles\x20(¥1,500–3,000\x20cost\x20per\x20signed\x20institution),\x20few\x20but\x20large\x20accounts.','guardrails':['Do\x20not\x20soften\x20escrow/fund\x20requirements\x20to\x20win\x20a\x20large\x20account','\x27Protocol\x20custody\x27\x20claims\x20need\x20the\x20locked\x20fee\x20schedule\x20to\x20back\x20them']}},'competitor_watch':{'dimensions':['headline\x20price\x20vs\x20escrow\x20structure','arbitration\x20availability','compensation\x20fund\x20coverage','per-lesson\x20release\x20granularity','refund-window\x20terms'],'cadence':'weekly','cadence_days':0x7,'differentiation':['Compete\x20on\x20verifiable\x20fund\x20safety\x20(parents\x20can\x20read\x20the\x20Allocation\x20themselves),\x20never\x20on\x20headline\x20discount','Lead\x20with\x20\x27teacher\x20settlement\x20in\x20seconds\x27\x20to\x20attract\x20teachers\x20as\x20well\x20as\x20parents']},'acquisition':{'channels':[{'channel':'Parent-rights\x20/\x20local\x20parent\x20KOC\x20communities','priority':0x1,'rationale':'The\x20angry\x20stock\x20from\x20tuition-failure\x20cases\x20concentrates\x20here;\x20trust\x20products\x20sell\x20through\x20trusted\x20channels\x20(¥30–80\x20per\x20paying\x20parent).'},{'channel':'Institutional\x20direct\x20BD\x20(1:1)','priority':0x2,'rationale':'Supply\x20side\x20decides\x20the\x20two-sided\x20cold\x20start;\x20one\x20institution\x20brings\x20its\x20whole\x20parent\x20base.'},{'channel':'Industry\x20media\x20/\x20policy\x20white-papers','priority':0x3,'rationale':'Zero-ad\x20spend\x20endorsement\x20during\x20the\x20next\x20regulatory\x20news\x20cycle.'},{'channel':'Paid\x20ads','priority':0x4,'rationale':'Conflicts\x20with\x20the\x20trust\x20narrative;\x20do\x20not\x20use\x20within\x20the\x20first\x2090\x20days.'}],'campaign_paradigm':'Two\x2090-day\x20campaigns:\x20(A)\x20\x27tuition\x20transparency\x20experiment\x27\x20—\x20two\x20parallel\x20classes,\x20traditional\x20vs\x20escrow,\x20open\x20on-chain\x20comparison,\x20parent\x20open-day\x20live\x20withdrawal\x20refund\x20demo;\x20(B)\x20\x27regulatory\x20answer\x27\x20white-paper\x20on\x20protocol\x20custody,\x20no\x20ads.','reward_orientation':'Milestone\x20(course\x20completion)\x20reward\x20+\x20referral\x20cashback;\x20trial-class\x20discount\x20as\x20the\x20cold-start\x20hook.','discount_orientation':'Early-bird\x20and\x20group-buy\x20only\x20during\x20campaign\x20windows;\x20student-aid\x20discount\x20as\x20targeted,\x20not\x20blanket,\x20price\x20cuts.'},'conversion_retention':['Show\x20the\x20escrow\x20contract\x20balance\x20and\x20per-lesson\x20release\x20records\x20before\x20payment\x20(on-chain\x20verification\x20page).','Convert\x20trial\x20families\x20with\x20the\x20live\x20\x27unearned\x20funds\x20are\x20still\x20yours\x27\x20demonstration.','Renew\x20via\x20per-lesson\x20release\x20history\x20+\x20attendance\x20record;\x20sibling/referral\x20reward\x20beats\x20discounting.'],'unit_economics':{'formula':'extra\x20per\x20order\x20=\x20legacy\x20platform\x20fee\x20rate\x20×\x20AOV\x20−\x20(WoW\x20gas\x20+\x20keeper\x20amortization\x20+\x20one-time\x20migration\x20cost)','anchors':[{'metric':'AOV\x20anchor\x20(30-lesson\x20package)','value':'¥3,000'},{'metric':'Legacy\x20combined\x20fee','value':'Incumbent\x20live-class\x20platform\x2030%\x20≈\x20¥900/order'},{'metric':'WoW\x20per-order\x20cost\x20(N+2\x20txns)','value':'gas\x20≈\x20$0.05–2.5'},{'metric':'Extra\x20earnings\x20per\x20order','value':'≈\x20¥890'}],'target_margin_pct_min':0x19,'cost_floor':'Never\x20price\x20a\x20package\x20below\x20total\x20teacher-cost-per-lesson\x20×\x20lessons;\x20compensation\x20fund\x20must\x20stay\x20covered.','breakeven_note':'Migration/setup\x20cost\x20amortizes\x20over\x20the\x20first\x20package;\x20gas\x20is\x20negligible\x20vs\x20¥900\x20saved.'},'success_patterns':[{'pattern':'Run\x20the\x20parallel-class\x20transparency\x20experiment\x20with\x20one\x20anchor\x20institution\x20and\x20open\x20all\x20escrow\x20data.','evidence':'KPI:\x201\x20anchor,\x20≥30\x20escrow\x20orders,\x20verifiable\x20case\x20piece,\x20parent\x20NPS\x20≥60.'},{'pattern':'Sign\x20institutions\x20through\x20direct\x20BD\x20and\x20let\x20each\x20bring\x20its\x20parent\x20base.','evidence':'90-day\x20gate:\x20≥10\x20institutions\x20beyond\x20the\x20seed;\x20BD\x20cost\x20¥1,500–3,000\x20each.'},{'pattern':'Ship\x20the\x20≤10-dialogue\x20templated\x20onboarding\x20(attendance\x20guard\x20+\x20rate\x20release\x20+\x20lock\x20duration).','evidence':'K1/04\x20validated\x20education\x20shop\x20build\x20in\x2011\x20dialogues.'},{'pattern':'Hold\x20the\x2090-day\x20quality\x20gate\x20before\x20scaling\x20spend.','evidence':'Gate:\x20≥20\x20published\x20Services\x20across\x20tier-1\x20industries,\x20>25%\x20first-to-repeat\x20rate,\x20100%\x20on-chain\x20dispute\x20closure.'}],'red_lines':['Route\x20recorded/self-paced\x20courses\x20to\x20subscription\x20—\x20never\x20sell\x20them\x20as\x20attendance\x20escrow.','Never\x20imply\x20the\x20structure\x20prevents\x20bad\x20teaching;\x20it\x20prevents\x20fund\x20embezzlement\x20(honest\x20boundary).','Marketing\x20figures\x20are\x20fiat-denominated;\x20carry\x20the\x20testnet/estimate/WOW-price\x20disclaimers.'],'sources':['wiki/market/K1/05\x20(six-industry\x20commercialization\x20handbook)\x20§3','wiki/market/K1/01\x20(education\x20industry\x20analysis)']},{'industry':'rental','benchmark':'Short-stay\x20/\x20vehicle-rental\x20incumbents','priority_tier':0x1,'launch_window':'M1–M3','pricing':{'default_model_id':'rent_deposit_bundled_escrow','models':[{'id':'rent_deposit_bundled_escrow','name':'Rent\x20+\x20deposit\x20bundled\x20escrow,\x20three-path\x20settlement','applicable_when':'High-value\x20low-frequency\x20rentals\x20(camera\x20gear,\x20machinery,\x20outdoor\x20equipment)\x20and\x20P2P\x20stays\x20with\x20damage\x20disputes.','upside':'Rent\x20and\x20real\x20deposit\x20(not\x20a\x20card\x20auth)\x20are\x20escrowed;\x20three\x20mutually\x20exclusive\x20Allocator\x20paths\x20(clean\x20return\x20/\x20cancellation\x20/\x20graded\x20damage)\x20settle\x20in\x20one\x20~3-second\x20transaction.','risks':'Pre-rental\x20WIP\x20baseline\x20is\x20mandatory\x20—\x20without\x20it\x20the\x20damage\x20guard\x20cannot\x20pass\x20and\x20the\x20value\x20proposition\x20collapses.','wowok_levers':['Allocator','Guard','Machine','WIP','Arbitration'],'recommended':!![]},{'id':'graded_damage_allocator','name':'Pre-agreed\x20graded\x20damage\x20deduction','applicable_when':'Continuous\x20damage\x20amounts\x20(e.g.\x20$347.50\x20claims)\x20need\x20fairness\x20ex\x20ante.','upside':'Light\x2020%\x20/\x20heavy\x2050%\x20/\x20total\x20100%\x20brackets\x20fixed\x20before\x20rental;\x20micro-arbitration\x20only\x20for\x20bracket\x20assignment.','risks':'Brackets\x20must\x20be\x20disclosed\x20and\x20accepted\x20at\x20order\x20time.','wowok_levers':['Allocator','Guard','Arbitration']},{'id':'duration_discount','name':'Long-duration\x20discount\x20ladder','applicable_when':'Idle\x20inventory\x20with\x20low\x20marginal\x20wear\x20cost.','upside':'Monthly\x2010%\x20/\x20quarterly\x2020%\x20/\x20annual\x2030%\x20ladder\x20raises\x20utilization\x20without\x20touching\x20deposit\x20safety.','risks':'Discount\x20must\x20remain\x20above\x20maintenance+depreciation\x20cost\x20per\x20period.','wowok_levers':['Reward','Allocator']}]},'postures':{'volume':{'posture':'volume','thesis':'Win\x20utilization\x20and\x20repeat\x20rentals\x20via\x20credit-accumulation\x20rewards\x20and\x20long-duration\x20discounts;\x20lead\x20supply-side\x20signup\x20with\x20deposit\x20escrow\x20as\x20the\x20filter.','tradeoffs':'Thinner\x20per-rental\x20margin;\x20keeper\x20subsidy\x20in\x20seed\x20months.','guardrails':['Pre-rental\x20WIP\x20baseline\x20guard\x20never\x20skipped\x20even\x20for\x20promo\x20rentals','Deposit\x20must\x20be\x20really\x20funded\x20(no\x20zero-deposit\x20waivers\x20in\x20volume\x20mode)']},'balanced':{'posture':'balanced','thesis':'Seed\x20~10\x20vertical\x20merchants\x20with\x20templated\x20builds;\x20balance\x20utilization\x20promos\x20against\x20the\x20verified-case\x20marketing\x20asset.','tradeoffs':'Moderate\x20growth,\x20moderate\x20subsidy\x20($20/mo\x20keeper\x20per\x20seed\x20merchant).','guardrails':['All\x20three\x20settlement\x20paths\x20configured\x20on\x20every\x20published\x20service','Independent\x20arbitration\x20bound']},'margin':{'posture':'margin','thesis':'Premium\x20positioning\x20for\x20high-value\x20equipment:\x20renters\x20pay\x20for\x20real,\x20on-chain-verifiable\x20deposit\x20safety\x20and\x203-second\x20returns.','tradeoffs':'Smaller\x20renter\x20pool;\x20longer\x20trust-building\x20cycle.','guardrails':['Never\x20shorten\x20evidence\x20requirements\x20to\x20speed\x20up\x20a\x20premium\x20rental','Damage\x20brackets\x20stay\x20pre-agreed\x20—\x20no\x20discretionary\x20deductions']}},'competitor_watch':{'dimensions':['rent\x20price','whether\x20deposit\x20is\x20actually\x20held\x20(vs\x20card\x20auth)','pre-rental\x20evidence\x20requirement','refund\x20speed','arbitration\x20independence'],'cadence':'biweekly','cadence_days':0xe,'differentiation':['The\x20three\x20k1rent\x20Payment\x20transactions\x20are\x20the\x20marketing:\x20anyone\x20can\x20audit\x20them','Damage\x20claims\x20cannot\x20be\x20weaponized\x20via\x20reviews\x20—\x20settlement\x20is\x20independent\x20of\x20the\x20rating\x20system']},'acquisition':{'channels':[{'channel':'Vertical\x20communities\x20(photography\x20/\x20machinery\x20/\x20outdoor\x20KOC\x20groups)','priority':0x1,'rationale':'Damage-dispute\x20pain\x20is\x20concentrated\x20here\x20(¥50–120\x20per\x20renter-side\x20user).'},{'channel':'Competitors\x27\x20official\x20documents','priority':0x2,'rationale':'Cite\x20incumbent\x20policy\x20reversals\x20(e.g.\x20AI-image\x20claim\x20bans)\x20and\x20shutdowns\x20—\x20opponent\x20copy\x20is\x20the\x20best\x20copy.'},{'channel':'On-chain\x20case\x20marketing\x20(auditable\x20rental\x20page)','priority':0x3,'rationale':'\x27Audit\x20this\x20rental\x20yourself\x27\x20open\x20day.'},{'channel':'Second-hand\x20marketplace\x20dispute\x20threads','priority':0x4,'rationale':'Intercept\x20existing\x20pain\x20(\x27this\x20dispute\x20could\x20not\x20happen\x20on\x20WoW\x27).'}],'campaign_paradigm':'(A)\x20\x27Audit\x20this\x20ledger\x20yourself\x27\x20open\x20day\x20around\x20the\x20k1rent\x2010-node\x20machine\x20+\x20three\x20payments;\x20(B)\x20recruit\x2010\x20seed\x20merchants,\x20keeper\x20+\x20first-order\x20gas\x20subsidy\x20for\x203\x20months.','reward_orientation':'Credit\x20accumulation\x20across\x20rentals\x20+\x20referral\x20cashback;\x20rewards\x20tied\x20to\x20verified\x20completed\x20rentals,\x20not\x20signups.','discount_orientation':'Duration\x20ladder\x20(monthly/quarterly/annual);\x20no\x20blanket\x20price\x20cuts.'},'conversion_retention':['Make\x20pre-rental\x20WIP\x20capture\x20a\x20guided,\x20frictionless\x20step\x20—\x20it\x20is\x20the\x20trust\x20moment,\x20not\x20paperwork.','Show\x20historical\x20settlement\x20transactions\x20to\x20first-time\x20renters\x20before\x20they\x20fund.','Re-rental\x20via\x20accumulated\x20credit;\x20long-duration\x20discount\x20ladder\x20for\x20inventory\x20utilization.'],'unit_economics':{'formula':'extra\x20per\x20order\x20=\x20legacy\x20commission\x20rate\x20×\x20rental\x20value\x20−\x20(WoW\x20gas\x20+\x20keeper\x20$5–20/mo\x20amortization)','anchors':[{'metric':'AOV\x20anchor\x20(camera,\x203\x20days)','value':'$200'},{'metric':'Legacy\x20host-side\x20commission','value':'15.5%\x20≈\x20$31/order'},{'metric':'WoW\x20full-cycle\x20cost\x20(k1rent\x20empirical)','value':'≈\x200.05\x20WOW\x20≈\x20¥0.35\x20(5–7\x20txns)'},{'metric':'Deposit\x20refund\x20speed','value':'7–15\x20business\x20days\x20→\x20≈3\x20seconds'}],'target_margin_pct_min':0x1e,'cost_floor':'Rental\x20price\x20must\x20cover\x20maintenance\x20+\x20depreciation\x20+\x20bracket-expected\x20damage;\x20deposit\x20never\x20lent\x20against.','breakeven_note':'At\x20$200\x20AOV\x20the\x20saved\x20$31\x20commission\x20dwarfs\x20gas\x20and\x20keeper\x20cost\x20from\x20the\x20first\x20order.'},'success_patterns':[{'pattern':'Publish\x20the\x20three\x20immutable\x20settlement\x20Payments\x20(clean\x20/\x20cancel\x20/\x20damage)\x20as\x20an\x20interactive\x20audit\x20page.','evidence':'KPI:\x20≥5,000\x20audit-page\x20UV,\x203\x20inbound\x20merchants,\x201\x20organic\x20KOC\x20retelling.'},{'pattern':'Onboard\x2010\x20equipment-rental\x20merchants\x20from\x20the\x20vertical\x20template\x20within\x203\x20months.','evidence':'Gate:\x2010\x20published\x20Services,\x20≥100\x20cumulative\x20orders,\x20zero\x20escalated\x20disputes\x20(all\x20closed\x20via\x20guard\x20or\x20micro-arbitration).'},{'pattern':'Enforce\x20pre-rental\x20WIP\x20baseline\x20as\x20a\x20hard\x20node,\x20turning\x20the\x2020%→70%\x20claim\x20rejection\x20curve\x20upside\x20down.','evidence':'Without\x20baseline\x20evidence\x20traditional\x20platforms\x20reject\x2020%;\x20with\x20missing-date\x20evidence\x20they\x20reject\x2070%.'},{'pattern':'Make\x20keeper\x20auto-return\x20reminders\x20standard\x20onboarding,\x20priced\x20transparently\x20at\x20$5–20/mo.','evidence':'Honest-boundary\x20requirement\x20from\x20k1rent\x20rollout.'}],'red_lines':['Never\x20claim\x20\x27contract-enforced\x27\x20arbitration\x20independence\x20without\x20negative-test\x20backing\x20(P-5\x20lesson).','Damage\x20deduction\x20without\x20pre-rental\x20baseline\x20is\x20forbidden\x20(guard\x20must\x20fail).','Never\x20hide\x20the\x20keeper\x20subscription\x20cost.'],'sources':['wiki/market/K1/05\x20(six-industry\x20commercialization\x20handbook)\x20§4','wiki/market/K1/01\x20(rental\x20industry\x20analysis)']},{'industry':'freelance','benchmark':'Enterprise\x20talent-marketplace\x20incumbent','priority_tier':0x2,'launch_window':'M2–M4','pricing':{'default_model_id':'milestone_escrow_accept','models':[{'id':'milestone_escrow_accept','name':'Milestone\x20escrow\x20with\x20acceptance\x20signature','applicable_when':'Project-based\x20design/translation/dev/copy\x20work\x20deliverable\x20in\x20milestones.','upside':'Funds\x20escrowed\x20at\x20signing;\x20deliver_guard_wip\x20anchors\x20each\x20delivery;\x20client\x20acceptance\x20signature\x20releases\x20in\x20seconds;\x2014-day\x20silence\x20auto-accepts\x20via\x20time\x20guard\x20+\x20keeper.','risks':'Milestones\x20must\x20be\x20objectively\x20verifiable;\x20vague\x20acceptance\x20criteria\x20invite\x20disputes.','wowok_levers':['Allocator','Guard','Machine','WIP','Progress'],'recommended':!![]},{'id':'fixed_deliverable','name':'Fixed-price\x20deliverable\x20with\x20revision\x20loops','applicable_when':'Single-deliverable\x20jobs\x20(logo,\x20translation,\x20article).','upside':'Revision\x20rounds\x20modeled\x20as\x20machine\x20loops;\x20micro-arbitration\x20available\x20at\x20ANY\x20amount.','risks':'Cap\x20revision\x20rounds\x20up\x20front\x20to\x20avoid\x20scope\x20creep.','wowok_levers':['Machine','Guard','Arbitration']},{'id':'demand_reverse_match','name':'Demand-based\x20reverse\x20bidding','applicable_when':'Client\x20posts\x20a\x20Demand\x20and\x20freelancers\x20present;\x20discovery\x20without\x20connect\x20fees.','upside':'Zero\x20bid-entry\x20cost\x20(vs\x20$48–120\x20first-order\x20Connects\x20burn)\x20and\x20~60%\x20zero-reply\x20proposals\x20avoided.','risks':'Presenter\x20quality\x20gating\x20via\x20passport/trust\x20evidence.','wowok_levers':['Demand','DemandPresenter','Passport','Guard']}]},'postures':{'volume':{'posture':'volume','thesis':'Win\x20order\x20count\x20through\x20Demand\x20participation\x20and\x20first-order\x20speed;\x20carry\x20portable\x20Passport\x20reputation\x20across\x20clients.','tradeoffs':'Smaller\x20milestones,\x20more\x20concurrent\x20clients.','guardrails':['Every\x20milestone\x20escrowed\x20before\x20work\x20starts','Never\x20start\x20work\x20on\x20an\x20unescrowed\x20\x27trusted\x20client\x27\x20promise']},'balanced':{'posture':'balanced','thesis':'Mix\x20Demand\x20bidding\x20with\x20referral\x20clients;\x20standardize\x20milestone\x20templates\x20to\x20cut\x20admin\x20time.','tradeoffs':'Moderate\x20pipeline;\x20time\x20invested\x20in\x20WIP\x20evidence\x20discipline.','guardrails':['Auto-accept\x20time\x20guard\x20configured','Arbitration\x20bound\x20even\x20on\x20small\x20jobs\x20(cost\x20is\x20trivial)']},'margin':{'posture':'margin','thesis':'Premium\x20positioning\x20via\x20public\x20on-chain\x20delivery\x20history\x20and\x20WIP\x20quality;\x20refuse\x20hourly-monitoring\x20clients.','tradeoffs':'Fewer,\x20larger\x20projects;\x20longer\x20sales\x20conversation.','guardrails':['Never\x20accept\x20work\x20that\x20requires\x20process\x20surveillance\x20(philosophy\x20mismatch)','Milestone\x20granularity\x20protects\x20margin\x20—\x20no\x20all-or-nothing\x20delivery']}},'competitor_watch':{'dimensions':['effective\x20fee\x20after\x20tiered\x20cuts','escrow\x20availability','settlement\x20speed','arbitration\x20fee\x20floor','reputation\x20portability'],'cadence':'biweekly','cadence_days':0xe,'differentiation':['Portable\x20Passport\x20credentials\x20vs\x20locked\x20JSS','Arbitration\x20at\x20sub-$700\x20values\x20—\x20the\x20exact\x20segment\x20incumbents\x20structurally\x20abandon','Outcome\x20verification\x20(WIP)\x20instead\x20of\x20screen\x20monitoring']},'acquisition':{'channels':[{'channel':'r/freelance,\x20Indie\x20Hackers,\x20nomad\x20communities','priority':0x1,'rationale':'Fee-fatigued\x20mid/long-tail\x20freelancers;\x20est.\x20$3–8\x20per\x20registered\x20freelancer.'},{'channel':'Design/translation\x20vertical\x20communities','priority':0x2,'rationale':'High\x20milestone-delivery\x20fit.'},{'channel':'Demand\x20reverse-match\x20events','priority':0x3,'rationale':'Crack\x20the\x20demand\x20side\x20with\x20real\x20bounties.'},{'channel':'KOC\x20income-transparency\x20program','priority':0x4,'rationale':'5–8\x20mid-tier\x20creators\x20publishing\x20incumbent-platform\x20vs\x20WoW\x20income\x20with\x20auditable\x20addresses\x20after\x20≥20\x20merchants\x20exist.'}],'campaign_paradigm':'\x27$699\x20Arbitration\x20Clinic\x27\x20(M2–M3,\x20only\x20after\x20≥20\x20merchants):\x20publicly\x20resolve\x20sub-$700\x20disputes\x20on-chain,\x20weekly\x20micro-arbitration\x20documentary;\x20KOC\x20transparent-income\x20program\x20with\x20on-chain\x20settlement.','reward_orientation':'Referral\x20and\x20repeat-client\x20rewards;\x20KOC\x20payouts\x20auto-split\x20via\x20Allocation\x20after\x20verified\x20first-order\x20conversion.','discount_orientation':'No\x20fee-discounting\x20narrative\x20—\x20the\x20platform\x20fee\x20is\x20already\x20~0;\x20compete\x20on\x20escrow/arbitration\x20value.'},'conversion_retention':['Convert\x20prospects\x20by\x20showing\x20WIP\x20hashes\x20of\x20similar\x20completed\x20milestones.','Propose\x203–5\x20milestone\x20splits\x20in\x20the\x20first\x20proposal\x20—\x20it\x20signals\x20professionalism\x20and\x20de-risks\x20the\x20client.','Retain\x20via\x20Passport:\x20every\x20clean\x20completion\x20is\x20a\x20portable\x20credential,\x20explicitly\x20say\x20so\x20at\x20delivery.'],'unit_economics':{'formula':'extra\x20per\x20order\x20=\x20legacy\x20fee\x20rate\x20×\x20contract\x20value\x20+\x20avoided\x20connect/arbitration\x20fees\x20−\x20WoW\x20gas','anchors':[{'metric':'AOV\x20anchor\x20(milestone\x20contract)','value':'$1,000'},{'metric':'Legacy\x20take\x20rate','value':'Incumbent\x20talent\x20marketplace\x2015.4%\x20≈\x20$154\x20(+\x20client\x203–7.99%)'},{'metric':'Bid\x20entry\x20cost','value':'Connects\x20$48–120\x20first-order;\x20~60%\x20of\x20proposals\x20get\x20no\x20reply'},{'metric':'WoW\x20cost\x20(4–8\x20txns)','value':'gas\x20≈\x20$0.01–0.6;\x20arbitration\x20≈\x20$0.01\x20vs\x20$337.50/party'},{'metric':'Settlement\x20speed','value':'up\x20to\x2027\x20days\x20→\x20seconds\x20on\x20acceptance\x20signature'}],'target_margin_pct_min':0x28,'cost_floor':'Milestone\x20price\x20must\x20cover\x20the\x20quoted\x20hours\x20at\x20the\x20freelancer\x27s\x20minimum\x20hourly\x20rate;\x20no\x20unpaid\x20spec\x20work\x20beyond\x20one\x20proposal.','breakeven_note':'One\x20$1,000\x20contract\x20saves\x20≈$153\x20—\x20adoption\x20pays\x20on\x20the\x20first\x20escrowed\x20job.'},'success_patterns':[{'pattern':'Run\x20the\x20\x27$699\x20Arbitration\x20Clinic\x27\x20with\x20≥10\x20closed\x20micro-arbitrations\x20and\x20publish\x20weekly\x20documentaries.','evidence':'KPI:\x20avg\x20read\x20≥3,000/episode;\x20arbitrator\x20pool\x20≥15.'},{'pattern':'Sign\x205–8\x20mid-tier\x20KOCs\x20with\x20income-guarantee\x20top-ups,\x20settled\x20on-chain\x20after\x20conversion.','evidence':'KPI:\x20≥30\x20registered\x20freelancers\x20per\x20KOC;\x20on-chain\x20conversion\x20≥8%.'},{'pattern':'Standardize\x20the\x2014-day\x20silence\x20auto-acceptance\x20guard\x20on\x20every\x20service.','evidence':'Eliminates\x20the\x20\x27client\x20disappears,\x20funds\x20locked\x27\x20failure\x20mode\x20without\x20weakening\x20buyer\x20protection.'},{'pattern':'Turn\x20down\x20hourly-surveillance\x20clients\x20explicitly.','evidence':'Outcome\x20verification\x20philosophy\x20is\x20the\x20differentiation\x20against\x20Work\x20Diary\x20monitoring.'}],'red_lines':['Do\x20not\x20start\x20work\x20before\x20the\x20milestone\x20is\x20escrowed.','Do\x20not\x20promote\x20reputation\x20portability\x20(Passport)\x20before\x20the\x20issuance\x20UX\x20is\x20production-ready.','Never\x20bid\x20below\x20minimum-rate\x20floor\x20to\x20win\x20volume.'],'sources':['wiki/market/K1/05\x20(six-industry\x20commercialization\x20handbook)\x20§5','wiki/market/K1/01\x20(freelance\x20industry\x20analysis)']},{'industry':'travel','benchmark':'Global\x20OTA\x20/\x20package-tour\x20incumbents','priority_tier':0x3,'launch_window':'M4+','pricing':{'default_model_id':'multi_segment_release','models':[{'id':'multi_segment_release','name':'Multi-leg\x20itinerary\x20with\x20per-segment\x20release','applicable_when':'Custom/multi-segment\x20packaged\x20trips\x20by\x20small\x20studios\x20(package-tour\x20archetype\x20fit\x2010/10).','upside':'segment_D1..DN\x20machine;\x20each\x20segment\x27s\x20WIP\x20releases\x20its\x20fee;\x20interrupted\x20segments\x20refund\x20in\x20one\x20transaction;\x20fund\x20waterfall\x20fully\x20auditable.','risks':'Sub-providers\x20(hotels/drivers)\x20need\x20not\x20be\x20on-chain\x20initially\x20—\x20the\x20agent\x20is\x20the\x20single\x20on-chain\x20counterparty;\x20adoption\x20bottleneck\x20is\x20why\x20travel\x20is\x20tier\x203.','wowok_levers':['Machine','Allocator','Treasury','Guard','WIP'],'recommended':!![]},{'id':'agent_single_custody','name':'Agent\x20single-counterparty\x20custody','applicable_when':'Downstream\x20suppliers\x20are\x20not\x20on-chain\x20yet.','upside':'Agent↔client\x20escrow\x20closes\x20the\x20trust\x20loop\x20alone;\x20supplier\x20participation\x20grows\x20with\x20network\x20effects.','risks':'Agent\x20must\x20hold\x20correct\x20licensing\x20and\x20fund\x20the\x20compensation\x20coverage.','wowok_levers':['Allocator','Treasury','CompensationFund','Arbitration']},{'id':'weather_guarantee','name':'Weather/condition-guarded\x20pricing','applicable_when':'Weather-sensitive\x20segments\x20can\x20reference\x20an\x20evidence\x20repository.','upside':'Auto-refund\x20triggers\x20via\x20quoted\x20guard\x20+\x20repository\x20oracle\x20—\x20a\x20feature\x20no\x20OTA\x20offers.','risks':'Guard\x20trigger\x20source\x20must\x20be\x20specified\x20and\x20tested\x20before\x20sale.','wowok_levers':['Guard','Allocator','Repository']}]},'postures':{'volume':{'posture':'volume','thesis':'Postpone;\x20volume\x20play\x20only\x20after\x20tier-1/2\x20Passport\x20network\x20lowers\x20cold-start\x20cost.','tradeoffs':'High\x20coordination\x20cost\x20across\x20sub-providers.','guardrails':['Never\x20sell\x20standard\x20standalone\x20flights/hotels\x20(weak\x20WoW\x20value)','Undelivered\x20segments\x20always\x20refundable\x20via\x20the\x20interrupted\x20path']},'balanced':{'posture':'balanced','thesis':'Pilot\x20with\x202–3\x20custom-trip\x20studios\x20on\x20single-counterparty\x20custody;\x20prove\x20the\x20waterfall\x20story.','tradeoffs':'Few\x20pilots,\x20heavy\x20case-building\x20effort\x20($10–15K\x20pilot\x20budget).','guardrails':['Fund\x20waterfall\x20visible\x20to\x20the\x20buyer\x20before\x20payment','Cancellation\x20policy\x20per\x20leg\x20declared\x20up\x20front']},'margin':{'posture':'margin','thesis':'Premium\x20bespoke\x20itineraries\x20priced\x20on\x20trust\x20architecture\x20and\x20transparent\x20waterfall,\x20not\x20OTA\x20discounting.','tradeoffs':'Small\x20high-AOV\x20audience.','guardrails':['Refundable\x20vs\x20non-refundable\x20legs\x20separated\x20explicitly','Never\x20commingle\x20undelivered-segment\x20funds\x20with\x20operating\x20cash']}},'competitor_watch':{'dimensions':['effective\x20commission\x20after\x20Preferred/Genius','waterfall\x20transparency','cancellation\x20terms\x20per\x20leg','downstream\x20refund\x20handling\x20(e.g.\x20EU261\x20gaps)','settlement\x20speed'],'cadence':'monthly','cadence_days':0x1e,'differentiation':['The\x20$2,000\x20waterfall\x20split\x20across\x20hotel/guide/agent\x20is\x20inspectable\x20before\x20purchase','Pre-event\x20isolation\x20vs\x20Thomas-Cook-style\x20post-hoc\x20relief']},'acquisition':{'channels':[{'channel':'Custom-trip\x20studio\x20direct\x20partnerships','priority':0x1,'rationale':'Only\x20segment\x20with\x2010/10\x20fit;\x202–3\x20pilot\x20studios.'},{'channel':'Travel-industry\x20failure\x20news\x20cycles','priority':0x2,'rationale':'Collapsed\x20tour\x20operators\x20/\x20pandemic\x20refund\x20stories\x20anchor\x20pre-isolation\x20demand.'},{'channel':'Waterfall/weather\x20demo\x20content','priority':0x3,'rationale':'Interactive\x20fund-split\x20and\x20auto-refund\x20demos.'}],'campaign_paradigm':'\x27Transparent\x20waterfall\x27\x20demo\x20($2,000\x20split\x20readable\x20on-chain)\x20+\x20weather-guard\x20auto-refund\x20demo;\x20$10–15K\x20for\x202–3\x20studio\x20pilots,\x20M4–M6.','reward_orientation':'Referral\x20commission\x20for\x20repeat/referral\x20custom\x20trips;\x20flash-sale\x20rewards\x20only\x20for\x20off-peak\x20clearance.','discount_orientation':'Early-bird\x20/\x20group\x20/\x20member\x20pricing\x20within\x20seasons;\x20never\x20discount\x20by\x20hiding\x20non-refundable\x20legs.'},'conversion_retention':['Sell\x20the\x20pre-trip\x20inspection\x20of\x20the\x20entire\x20fund\x20waterfall\x20as\x20the\x20core\x20asset.','Convert\x20with\x20the\x20interrupted-segment\x20one-transaction\x20refund\x20demo.','Re-book\x20via\x20itinerary\x20history\x20and\x20per-leg\x20transparency,\x20not\x20loyalty\x20points.'],'unit_economics':{'formula':'extra\x20per\x20trip\x20=\x20effective\x20OTA\x20commission\x20×\x20trip\x20value\x20−\x20(WoW\x20gas\x20across\x202×segments+3\x20txns)','anchors':[{'metric':'AOV\x20anchor\x20(5-segment\x20custom\x20trip)','value':'$2,000'},{'metric':'Effective\x20legacy\x20commission','value':'25–36%\x20≈\x20$350–720/trip'},{'metric':'WoW\x20cost','value':'gas\x20≈\x20$0.02–1'},{'metric':'Settlement\x20speed','value':'VCC\x202–6\x20weeks\x20→\x20per-segment\x20seconds'}],'target_margin_pct_min':0x23,'cost_floor':'Never\x20collect\x20funds\x20for\x20unbooked\x20legs\x20without\x20the\x20interrupted\x20refund\x20path;\x20compensation\x20coverage\x20sized\x20for\x20max\x20single-segment\x20value.','breakeven_note':'Gas\x20is\x20noise\x20against\x20$350–700\x20saved\x20per\x20trip;\x20the\x20binding\x20constraint\x20is\x20supplier\x20adoption,\x20not\x20economics.'},'success_patterns':[{'pattern':'Pilot\x202–3\x20custom-trip\x20studios\x20with\x20agent-only\x20custody\x20first.','evidence':'Avoids\x20the\x20sub-provider\x20on-chain\x20bottleneck\x20that\x20justifies\x20tier-3\x20timing.'},{'pattern':'Ship\x20the\x20interactive\x20$2,000\x20waterfall\x20visualization\x20as\x20the\x20sales\x20asset.','evidence':'Buys\x20on\x20chain-visible\x20split\x20—\x20unique\x20vs\x20every\x20OTA.'},{'pattern':'Use\x20a\x20weather\x20repository\x20guard\x20for\x20automatic\x20segment\x20refund\x20in\x20one\x20marketed\x20demo.','evidence':'Converts\x20an\x20abstract\x20\x27escrow\x27\x20claim\x20into\x20a\x20visible\x20guarantee.'}],'red_lines':['Do\x20not\x20enter\x20standard\x20flight/hotel\x20resale\x20—\x20WoW\x20value\x20is\x20weak\x20there.','Never\x20market\x20large\x20cross-period\x20custody\x20before\x20stablecoin\x20bridging\x20is\x20ready.','Cross-leg\x20responsibility\x20must\x20be\x20disclosed,\x20not\x20blurred.'],'sources':['wiki/market/K1/05\x20(six-industry\x20commercialization\x20handbook)\x20§7','wiki/market/K1/01\x20(travel\x20industry\x20analysis)']},{'industry':'retail','benchmark':'Scale\x20marketplace\x20/\x20vertical\x20handmade\x20incumbents','priority_tier':0x3,'launch_window':'M4+','pricing':{'default_model_id':'receipt_confirmed_escrow','models':[{'id':'receipt_confirmed_escrow','name':'Escrow\x20released\x20on\x20confirmed\x20receipt','applicable_when':'Private-traffic\x20sellers\x20(DTC\x20site\x20/\x20community\x20commerce)\x20who\x20already\x20own\x20demand.','upside':'Funds\x20release\x20seconds\x20after\x20receipt\x20guard;\x20return_auth_guard\x20gates\x20fraudulent\x20returns;\x20provenance\x20via\x20repository\x20chain.','risks':'Zero-traffic\x20sellers\x20are\x20a\x20deliberate\x20mismatch\x20—\x20WoW\x20does\x20not\x20replace\x20marketplace\x20demand\x20generation.','wowok_levers':['Allocator','Guard','Repository','Arbitration','CompensationFund'],'recommended':!![]},{'id':'member_bundle_pricing','name':'Member/bundle\x20pricing\x20for\x20private\x20communities','applicable_when':'Community-commerce\x20sellers\x20with\x20repeat\x20purchase\x20cadence.','upside':'Spend-threshold\x20and\x20member\x20pricing\x20via\x20rewards\x20instead\x20of\x20platform\x20TACoS.','risks':'Bundles\x20must\x20still\x20be\x20escrowed\x20per\x20deliverable;\x20no\x20pre-shipment\x20release.','wowok_levers':['Reward','Allocator']}]},'postures':{'volume':{'posture':'volume','thesis':'Turn\x20existing\x20private-traffic\x20flow\x20into\x20escrow\x20GMV;\x20first-order\x20and\x20spend-threshold\x20rewards\x20maximize\x20repeat.','tradeoffs':'Thin\x20unit\x20margin\x20—\x20viable\x20only\x20because\x20gas\x20is\x20<$1\x20per\x20$1,000\x20GMV.','guardrails':['Receipt\x20confirmation\x20guard\x20never\x20bypassed','Compensation\x20fund\x20coverage\x20ratio\x20default\x205×\x20max\x20single\x20order']},'balanced':{'posture':'balanced','thesis':'Pilot\x205–8\x20private-domain\x20sellers;\x20use\x20the\x20gas-bill\x20livestream\x20as\x20the\x20core\x20proof\x20asset.','tradeoffs':'Moderate\x20growth\x20gated\x20by\x20existing\x20audience\x20size.','guardrails':['Return-auth\x20evidence\x20(dual\x20signature\x20/\x20logistics\x20repository)\x20required','Configurable\x20arbitration\x20voting\x20period']},'margin':{'posture':'margin','thesis':'Premium\x20provenance/proven-authenticity\x20selling:\x20repository\x20chain\x20+\x20escrow\x20as\x20anti-counterfeit\x20proof.','tradeoffs':'Niche\x20audience;\x20authenticity\x20verification\x20operations\x20cost.','guardrails':['Never\x20claim\x20authenticity\x20beyond\x20what\x20repository\x20evidence\x20proves','No\x20reserve-period\x20exposure\x20of\x20funds\x20to\x20the\x20seller\x20pre-receipt']}},'competitor_watch':{'dimensions':['headline\x20price','settlement\x20reserve\x20policy','return-fraud\x20handling','arbitration\x20default\x20rulings','provenance\x20evidence'],'cadence':'weekly','cadence_days':0x7,'differentiation':['Settlement\x20in\x20seconds\x20vs\x2014\x20days\x20+\x20DD+90\x20reserve\x20risk','Return\x20fraud\x20requires\x20dual-signed/logistics\x20evidence\x20instead\x20of\x20A-to-z\x20default\x20buyer\x20wins','\x27You\x20pay\x2030%\x20for\x20traffic\x20or\x20trust\x20—\x20we\x20provide\x20trust,\x20you\x20bring\x20traffic\x27']},'acquisition':{'channels':[{'channel':'Existing\x20private-traffic\x20sellers\x20(DTC,\x20community,\x20We-commerce)','priority':0x1,'rationale':'\x27Have\x20traffic,\x20trust\x20is\x20expensive\x27\x20is\x20the\x20filter;\x20zero-traffic\x20sellers\x20are\x20turned\x20away\x20at\x20intake.'},{'channel':'Fee-hike\x20refugee\x20targeting','priority':0x2,'rationale':'24.2%\x20fee-increase\x20victim\x20communities\x20on\x20incumbent\x20handmade\x20marketplaces.'},{'channel':'Live\x20gas-bill\x20comparison\x20events','priority':0x3,'rationale':'\x27$1,000\x20GMV\x20cost\x20teardown\x27:\x20same\x20shop,\x20WoW\x20vs\x20scale-marketplace\x20incumbent\x20$300–350.'}],'campaign_paradigm':'\x27$1,000\x20GMV\x20cost\x27\x20livestream\x20with\x20public\x20full-cycle\x20gas\x20accounting;\x20targeted\x20fee-hike\x20refugee\x20recruitment;\x20$6–10K\x20pilot\x20for\x205–8\x20sellers,\x20M4–M6.','reward_orientation':'First-order\x20discount\x20+\x20spend\x20cashback\x20+\x20spend-threshold\x20rewards\x20inside\x20the\x20owned\x20community.','discount_orientation':'Threshold/limited/member\x20discounts\x20only;\x20no\x20marketplace-style\x20bidding\x20wars.'},'conversion_retention':['Make\x20receipt-confirmation\x20the\x20one-tap\x20trust\x20moment;\x20show\x20release\x20seconds\x20later.','Re-purchase\x20via\x20spend\x20cashback\x20and\x20provenance\x20certificates.','Convert\x20return-averse\x20buyers\x20with\x20the\x20return-auth\x20evidence\x20flow\x20up\x20front.'],'unit_economics':{'formula':'extra\x20per\x20$1,000\x20GMV\x20=\x20legacy\x20combined\x20burden\x20−\x20WoW\x20gas\x20(4–6\x20txns)','anchors':[{'metric':'AOV\x20anchor\x20(private\x20domain)','value':'$50'},{'metric':'Legacy\x20combined\x20burden','value':'Scale-marketplace\x20incumbent\x2030–35%\x20≈\x20$300–350\x20per\x20$1,000\x20GMV'},{'metric':'WoW\x20cost\x20per\x20$1,000\x20GMV','value':'gas\x20≈\x20$0.01–0.5\x20(<\x20$1)'},{'metric':'Return\x20rate\x20/\x20fraud\x20share','value':'19.3%\x20returns\x20/\x209%\x20fraudulent\x20under\x20incumbent\x20flow'}],'target_margin_pct_min':0x14,'cost_floor':'Never\x20price\x20below\x20COGS\x20+\x20shipping\x20+\x20expected-return-provision;\x20fund\x20coverage\x205×\x20max\x20single\x20order.','breakeven_note':'Economics\x20work\x20at\x20almost\x20any\x20AOV;\x20traffic\x20availability\x20is\x20the\x20only\x20admission\x20criterion.'},'success_patterns':[{'pattern':'Use\x20the\x20honest-boundary\x20intake\x20questionnaire\x20to\x20reject\x20zero-traffic\x20sellers.','evidence':'Raises\x20conversion\x20quality;\x20WoW\x20does\x20not\x20sell\x20traffic\x20(the\x20incumbent\x27s\x20traffic-share\x20value\x20stays\x20with\x20the\x20incumbent).\x20'},{'pattern':'Run\x20the\x20public\x20\x27$1,000\x20GMV\x20gas\x20bill\x27\x20livestream\x20with\x20the\x20same\x20shop\x27s\x20orders.','evidence':'Contrasts\x20$300–350\x20incumbent\x20burden\x20vs\x20<$1\x20on-chain\x20cost.'},{'pattern':'Enforce\x20dual-signature/logistics\x20return\x20evidence\x20to\x20structurally\x20raise\x20fraud\x20cost.','evidence':'Targets\x20the\x209%\x20fraudulent\x20share\x20of\x20the\x2019.3%\x20return\x20rate.'},{'pattern':'Recruit\x20incumbent\x20fee-hike\x20refugees\x20directly\x20from\x20victim\x20communities.','evidence':'24.2%\x20unilateral\x20fee\x20increase\x20is\x20the\x20triggering\x20event.'}],'red_lines':['Never\x20promise\x20traffic\x20—\x20WoW\x20is\x20trust\x20infrastructure,\x20not\x20a\x20marketplace\x20demand\x20source.','No\x20auto-default\x20buyer-win\x20rulings;\x20arbitration\x20voting\x20period\x20must\x20be\x20configured.','Physical\x20authenticity\x20claims\x20require\x20repository\x20evidence.'],'sources':['wiki/market/K1/05\x20(six-industry\x20commercialization\x20handbook)\x20§8','wiki/market/K1/01\x20(retail\x20industry\x20analysis)']},{'industry':'subscription','benchmark':'Creator\x20membership\x20/\x20direct\x20fan-subscription\x20/\x20app-store\x20IAP\x20incumbents','priority_tier':0x2,'launch_window':'M2–M4','pricing':{'default_model_id':'per_period_signed_charge','models':[{'id':'per_period_signed_charge','name':'Per-period\x20signed\x20charge\x20with\x20delivery\x20gate','applicable_when':'Creator\x20memberships,\x20newsletters,\x20indie\x20software\x20—\x20recurring\x20digital\x20value.','upside':'charge_guard_signer\x20requires\x20explicit\x20signature\x20every\x20period;\x20deliver_guard_wip\x20blocks\x20the\x20charge\x20when\x20no\x20value\x20was\x20delivered;\x20cancel\x20is\x20one\x20signature;\x20100%\x20Allocation\x20to\x20creator.','risks':'The\x20per-period\x20signature\x20is\x20deliberate\x20friction\x20—\x20sell\x20it\x20as\x20the\x20feature;\x20do\x20not\x20sneak\x20in\x20any\x20auto-renewal\x20path.','wowok_levers':['Guard','Allocator','Machine','Reward'],'recommended':!![]},{'id':'annual_prepaid_period_release','name':'Annual\x20prepay\x20released\x20per\x20period','applicable_when':'Loyal\x20fans\x20wanting\x20a\x20yearly\x20plan;\x20creator\x20wants\x20upfront\x20cash.','upside':'Annual\x20funds\x20escrow\x20and\x20release\x20monthly\x20to\x20the\x20creator\x20—\x20prepaid\x20but\x20protected\x20if\x20the\x20creator\x20stops.','risks':'Stoppage\x20refunds\x20for\x20undelivered\x20months\x20must\x20be\x20structurally\x20guaranteed.','wowok_levers':['Allocator','Guard']},{'id':'tiered_membership','name':'Tiered\x20membership\x20with\x20escalating\x20deliverables','applicable_when':'Creators\x20with\x20multiple\x20value\x20tiers\x20(membership-tier\x20style).','upside':'Each\x20tier\x20maps\x20to\x20its\x20own\x20delivery\x20guard;\x20upgrades/downgrades\x20take\x20effect\x20next\x20period\x20only.','risks':'Tier\x20deliverables\x20must\x20be\x20concrete\x20enough\x20for\x20the\x20delivery\x20guard\x20to\x20evaluate.','wowok_levers':['Machine','Guard','WIP']}]},'postures':{'volume':{'posture':'volume','thesis':'Subscriber\x20count\x20first\x20via\x20the\x20\x27signing\x20movement\x27\x20consumer\x20tool\x20and\x20first-month\x20pricing;\x20keep\x20100%\x20pass-through\x20as\x20the\x20wedge.','tradeoffs':'Conversion\x20funnel\x20includes\x20the\x20signature\x20friction\x20—\x20lean\x20into\x20it\x20as\x20qualification.','guardrails':['Never\x20reintroduce\x20auto-renewal\x20to\x20optimize\x20conversion','Delivery\x20gate\x20on\x20every\x20charge']},'balanced':{'posture':'balanced','thesis':'Balance\x20acquisition\x20(subscription\x20checkup\x20tool)\x20with\x20retention\x20(100%\x20arrival\x20day\x20rituals).','tradeoffs':'Moderate\x20growth;\x20investment\x20in\x20per-period\x20value\x20proof.','guardrails':['Fee\x20schedule\x20frozen\x20at\x20publish','Cancellation\x20one\x20signature,\x20no\x20retention\x20dark\x20patterns']},'margin':{'posture':'margin','thesis':'Fewer,\x20higher-paying\x20true\x20fans;\x20per-period\x20signing\x20filters\x20for\x20committed\x20members\x20and\x20supports\x20premium\x20tiers.','tradeoffs':'Smaller\x20list,\x20higher\x20ARPU.','guardrails':['No\x20IAP-style\x2030%\x20channel\x20accepted\x20—\x20direct\x20settlement\x20is\x20the\x20product','Stoppage\x20protection\x20advertised\x20and\x20enforced']}},'competitor_watch':{'dimensions':['take\x20rate\x20and\x20unilateral\x20change\x20history','charge\x20transparency','cancellation\x20click\x20count','stopped-creator\x20policy','time-to-payout'],'cadence':'weekly','cadence_days':0x7,'differentiation':['13\x20years\x20/\x20three\x20unilateral\x20incumbent\x20price\x20rises\x20are\x20structurally\x20impossible\x20(published\x20allocation\x20is\x20frozen)','Charge\x20without\x20delivery\x20cannot\x20pass\x20—\x20an\x20industry\x20blank','15-option\x20cancel\x20maze\x20→\x20one\x20signature\x20(FTC\x20$2.5B\x20settlement\x20context)']},'acquisition':{'channels':[{'channel':'Creator\x20communities\x20(Discord,\x20membership-platform\x20forums)','priority':0x1,'rationale':'Survival-line\x20creators\x20($131–180\x20median\x20monthly)\x20feel\x20the\x2010–20%\x20fee\x20directly\x20($2–5\x20per\x20subscriber).'},{'channel':'Newsletter\x20/\x20indie-dev\x20circles','priority':0x2,'rationale':'App-store\x20IAP\x2030%\x20+\x2075-day\x20payout\x20float\x20pain.'},{'channel':'Hacker\x20News\x20/\x20anti-dark-pattern\x20audience','priority':0x3,'rationale':'Values\x20alignment\x20beats\x20ad\x20spend.'}],'campaign_paradigm':'\x27Signing\x20Movement\x27\x20(M2–M4):\x20consumer-side\x20subscription\x20checkup\x20widget\x20(2.5×\x20spend\x20underestimate\x20/\x2042%\x20unused\x20data)\x20+\x20creator\x20\x27100%\x20arrival\x20day\x27\x20monthly\x20chain-receipt\x20posts;\x20$4–7K,\x20keyed\x20to\x20FTC/price-hike\x20news\x20cycles.','reward_orientation':'Loyalty\x20+\x20referral\x20rewards\x20only;\x20first-month\x20price\x20as\x20the\x20single\x20acquisition\x20discount.','discount_orientation':'Annual\x20/\x20team\x20/\x20upgrade\x20discounts\x20—\x20never\x20discount\x20by\x20hiding\x20renewal\x20terms.'},'conversion_retention':['Onboard\x20creators\x20by\x20migrating\x20one\x20tier\x20first\x20and\x20showing\x20the\x20per-period\x20release\x20receipts.','Retain\x20with\x20the\x20\x27unused\x20month\x27\x20guarantee:\x20no\x20delivery\x20→\x20no\x20charge.','Convert\x20fans\x20with\x20the\x20cancellation\x20demo\x20(15\x20options\x20→\x201\x20signature).'],'unit_economics':{'formula':'extra\x20per\x20year\x20=\x20legacy\x20take\x20rate\x20×\x20annual\x20subscription\x20revenue\x20−\x20WoW\x20gas\x20(2\x20txns/period)','anchors':[{'metric':'Monthly\x20anchor','value':'$100/month\x20($1,200/year)'},{'metric':'Legacy\x20take','value':'Incumbent\x20membership\x20platform\x2010%\x20≈\x20$10/month;\x20mobile\x20app-store\x20IAP\x2030%'},{'metric':'WoW\x20annual\x20cost\x20(12\x20periods)','value':'gas\x20≈\x20$0.03–2/year'},{'metric':'Payout\x20speed','value':'IAP\x20up\x20to\x2075-day\x20float\x20→\x20seconds\x20each\x20period'}],'target_margin_pct_min':0x3c,'cost_floor':'Creator\x20must\x20keep\x20delivering\x20per-period\x20value;\x20no\x20charge\x20passes\x20without\x20delivery\x20evidence.','breakeven_note':'≈$120/year\x20extra\x20on\x20a\x20single\x20$100/month\x20membership.'},'success_patterns':[{'pattern':'Ship\x20the\x20subscription-checkup\x20widget\x20before\x20creator\x20outreach.','evidence':'KPI:\x20≥20,000\x20checkups;\x20consumer\x20demand\x20pulls\x20creators.'},{'pattern':'Run\x20monthly\x20\x27100%\x20arrival\x20day\x27\x20with\x20public\x20chain\x20receipts.','evidence':'30\x20creators\x20onboard\x20target;\x20turns\x20payout\x20into\x20recurring\x20proof.'},{'pattern':'Publish\x20the\x20one-signature\x20cancellation\x20video.','evidence':'KPI:\x20≥100K\x20views\x20—\x20contrast\x20with\x20the\x204-page/6-click/15-option\x20incumbent\x20flow.'},{'pattern':'Capture\x20education\x20recorded-course\x20overflow\x20traffic.','evidence':'Routing\x20rule:\x20recorded\x20courses\x20→\x20subscription,\x20keeping\x20both\x20fits\x20clean.'}],'red_lines':['Never\x20implement\x20or\x20imply\x20auto-renewal\x20—\x20every\x20period\x20is\x20signed.','Never\x20charge\x20a\x20period\x20without\x20delivery\x20evidence.','No\x20rate\x20lock\x20claims\x20except\x20through\x20published\x20frozen\x20Allocation.'],'sources':['wiki/market/K1/05\x20(six-industry\x20commercialization\x20handbook)\x20§6','wiki/market/K1/01\x20(subscription\x20industry\x20analysis)']}];const STRATEGY_BY_INDUSTRY=new Map(INDUSTRY_STRATEGIES['map'](a=>[a['industry'],a]));export function registerIndustryStrategy(a){STRATEGY_BY_INDUSTRY['set'](a['industry'],a);}export function unregisterIndustryStrategy(a){const b=INDUSTRY_STRATEGIES['find'](c=>c['industry']===a);if(b)return STRATEGY_BY_INDUSTRY['set'](a,b),!![];return STRATEGY_BY_INDUSTRY['delete'](a);}export function getIndustryStrategy(a){return STRATEGY_BY_INDUSTRY['get'](a['toLowerCase']());}export function listIndustryStrategies(){return SUPPORTED_INDUSTRIES['map'](a=>STRATEGY_BY_INDUSTRY['get'](a))['filter'](a=>a!==undefined);}export function stageFromOrderCount(a){if(a>=0x32)return'optimization';if(a>=0x14)return'mature';if(a>=0x5)return'growing';return'cold_start';}export function recommendStrategy(a,b='balanced',c,d){const e=getIndustryStrategy(a);if(!e||e['pricing']['models']['length']===0x0)return null;const f=c??(d?.['order_count']!==undefined?stageFromOrderCount(d['order_count']):'cold_start');let g=e['pricing']['models']['find'](j=>j['id']===e['pricing']['default_model_id'])??e['pricing']['models'][0x0];if(b==='volume'){const j=e['pricing']['models']['find'](k=>/(?:^|_)(discount|trial|first|bundle|member)(?:_|$)/i['test'](k['id']))??g;g=j;}else{if(b==='margin'&&e['pricing']['models']['length']>0x1){const k=e['pricing']['models']['find'](l=>/premium|graded|tiered|guarantee|prepaid/i['test'](l['id']));if(k)g=k;}}const h=[],i=(l,m)=>{if(l&&h['length']<0x3)h['push'](m);};return i(f==='cold_start','Cold\x20start:\x20publish\x20the\x20service\x20with\x20the\x20\x22'+g['name']+'\x22\x20model\x20and\x20bound\x20Arbitration\x20+\x20compensation\x20fund\x20first;\x20seed\x20the\x20anchor\x20trust\x20case\x20before\x20discounting.'),d?.['dispute_rate']!==undefined&&i(d['dispute_rate']>0.05,'Dispute\x20rate\x20'+(d['dispute_rate']*0x64)['toFixed'](0x1)+'%\x20exceeds\x205%:\x20tighten\x20pre-delivery\x20evidence\x20guards\x20and\x20pause\x20promotions\x20until\x20closure\x20is\x20back\x20on-chain.'),d?.['repeat_customer_rate']!==undefined&&i(d['repeat_customer_rate']<0.25&&f!=='cold_start','Repeat\x20rate\x20'+(d['repeat_customer_rate']*0x64)['toFixed'](0x0)+'%\x20is\x20below\x20the\x2025%\x20K1\x20gate:\x20add\x20a\x20repeat/referral\x20reward\x20and\x20review\x20post-delivery\x20follow-up\x20rather\x20than\x20cutting\x20price.'),d?.['order_count']!==undefined&&i(b==='volume'&&d['order_count']>=0x5&&d['order_count']<0x32,'Growing\x20stage\x20under\x20volume\x20posture:\x20run\x20the\x20cataloged\x20acquisition\x20campaign\x20('+(e['acquisition']['channels'][0x0]?.['channel']??'top\x20channel')+')\x20with\x20reward—not\x20blanket\x20discount—orientation.'),i(h['length']===0x0,b+'\x20posture:\x20hold\x20the\x20\x22'+g['name']+'\x22\x20model,\x20run\x20the\x20'+e['competitor_watch']['cadence']+'\x20competitor\x20watch\x20('+e['competitor_watch']['dimensions']['slice'](0x0,0x3)['join'](',\x20')+'),\x20and\x20keep\x20all\x20guardrails:\x20'+e['postures'][b]['guardrails'][0x0]),{'industry':e['industry'],'posture':b,'stage':f,'pricing_model_id':g['id'],'pricing_model_name':g['name'],'actions':h['slice'](0x0,0x3)};}export function validateStrategyLevers(a){const b=[];for(const c of a['pricing']['models']){for(const d of c['wowok_levers']){!LEVER_WHITELIST['has'](d)&&b['push'](a['industry']+'.'+c['id']+':\x20unknown\x20WoW\x20lever\x20\x27'+d+'\x27');}}return b;}
@@ -1 +1 @@
1
- import{query_events}from'@wowok/wowok';import{batchQueryObjectsByIds as a145a}from'../graph/onchain/sdk-batch.js';function toStr(a){if(typeof a==='string')return a;if(typeof a==='number'||typeof a==='bigint')return String(a);return undefined;}async function collectObjectIdsByEvent(a,b,c,d,e){const f=new Set();let g=null,h=![];while(f['size']<d){const i=await query_events({'type':a,'cursor':g,'limit':0x32,'order':'descending','no_cache':e,'network':c}),j=i?.['data']??[];if(j['length']===0x0)break;for(const k of j){const l=b(k);if(l)f['add'](l);}h=!!(i?.['hasNextPage']&&i?.['nextCursor']);if(!h)break;g=i?.['nextCursor']??null;}return{'ids':Array['from'](f)['slice'](0x0,d),'hasMore':h};}export async function enumerateServices(a,b={}){const c=b['max_objects']??0xc8,{ids:d,hasMore:e}=await collectObjectIdsByEvent('ServiceEvent',i=>typeof i?.['object']==='string'?i['object']:undefined,a,c,b['no_cache']),f=await a145a(d,a,b['no_cache']),g=(b['location_any']??[])['map'](i=>i['toLowerCase']()),h=f['filter'](i=>(i?.['type']??'')==='Service')['filter'](i=>{if(g['length']===0x0)return!![];const j=typeof i?.['location']==='string'?i['location']['toLowerCase']():'';return g['some'](k=>j['includes'](k));})['map'](i=>({'object':String(i['object']),'name':typeof i['name']==='string'?i['name']:undefined,'location':typeof i['location']==='string'?i['location']:'','json':{...i,'compensation_fund':toStr(i['compensation_fund']),'sales':Array['isArray'](i['sales'])?i['sales']['map'](j=>({...j,'price':toStr(j['price'])})):[]}}));return{'services':h,'total_enumerated':h['length'],'has_more':e};}export async function enumerateDemands(a,b={}){const c=b['max_objects']??0xc8,{ids:d,hasMore:e}=await collectObjectIdsByEvent('DemandChangedEvent',h=>typeof h?.['object']==='string'?h['object']:undefined,a,c,b['no_cache']),f=await a145a(d,a,b['no_cache']),g=f['filter'](h=>(h?.['type']??'')==='Demand')['map'](h=>h);return{'demands':g,'total_enumerated':g['length'],'has_more':e};}export async function enumerateArbs(a,b={}){const c=b['max_objects']??0xc8,{ids:d,hasMore:e}=await collectObjectIdsByEvent('ArbEvent',i=>typeof i?.['arb']==='string'?i['arb']:undefined,a,c,b['no_cache']),f=await a145a(d,a,b['no_cache']),g=b['status']===undefined?undefined:Array['isArray'](b['status'])?b['status']:[b['status']],h=f['filter'](i=>(i?.['type']??'')==='Arb')['map'](i=>i)['filter'](i=>b['arbitration']?i['arbitration']===b['arbitration']:!![])['filter'](i=>b['order']?i['order']===b['order']:!![])['filter'](i=>g?g['includes'](Number(i['status'])):!![]);return{'arbs':h,'total_enumerated':h['length'],'has_more':e};}
1
+ import{query_events}from'@wowok/wowok';import{batchQueryObjectsByIds as a189a}from'../graph/onchain/sdk-batch.js';function toStr(a){if(typeof a==='string')return a;if(typeof a==='number'||typeof a==='bigint')return String(a);return undefined;}async function collectObjectIdsByEvent(a,b,c,d,e){const f=new Set();let g=null,h=![];while(f['size']<d){const i=await query_events({'type':a,'cursor':g,'limit':0x32,'order':'descending','no_cache':e,'network':c}),j=i?.['data']??[];if(j['length']===0x0)break;for(const k of j){const l=b(k);if(l)f['add'](l);}h=!!(i?.['hasNextPage']&&i?.['nextCursor']);if(!h)break;g=i?.['nextCursor']??null;}return{'ids':Array['from'](f)['slice'](0x0,d),'hasMore':h};}export async function enumerateServices(a,b={}){const c=b['max_objects']??0xc8,{ids:d,hasMore:e}=await collectObjectIdsByEvent('ServiceEvent',i=>typeof i?.['object']==='string'?i['object']:undefined,a,c,b['no_cache']),f=await a189a(d,a,b['no_cache']),g=(b['location_any']??[])['map'](i=>i['toLowerCase']()),h=f['filter'](i=>(i?.['type']??'')==='Service')['filter'](i=>{if(g['length']===0x0)return!![];const j=typeof i?.['location']==='string'?i['location']['toLowerCase']():'';return g['some'](k=>j['includes'](k));})['map'](i=>({'object':String(i['object']),'name':typeof i['name']==='string'?i['name']:undefined,'location':typeof i['location']==='string'?i['location']:'','json':{...i,'compensation_fund':toStr(i['compensation_fund']),'sales':Array['isArray'](i['sales'])?i['sales']['map'](j=>({...j,'price':toStr(j['price'])})):[]}}));return{'services':h,'total_enumerated':h['length'],'has_more':e};}export async function enumerateDemands(a,b={}){const c=b['max_objects']??0xc8,{ids:d,hasMore:e}=await collectObjectIdsByEvent('DemandChangedEvent',h=>typeof h?.['object']==='string'?h['object']:undefined,a,c,b['no_cache']),f=await a189a(d,a,b['no_cache']),g=f['filter'](h=>(h?.['type']??'')==='Demand')['map'](h=>h);return{'demands':g,'total_enumerated':g['length'],'has_more':e};}export async function enumerateArbs(a,b={}){const c=b['max_objects']??0xc8,{ids:d,hasMore:e}=await collectObjectIdsByEvent('ArbEvent',i=>typeof i?.['arb']==='string'?i['arb']:undefined,a,c,b['no_cache']),f=await a189a(d,a,b['no_cache']),g=b['status']===undefined?undefined:Array['isArray'](b['status'])?b['status']:[b['status']],h=f['filter'](i=>(i?.['type']??'')==='Arb')['map'](i=>i)['filter'](i=>b['arbitration']?i['arbitration']===b['arbitration']:!![])['filter'](i=>b['order']?i['order']===b['order']:!![])['filter'](i=>g?g['includes'](Number(i['status'])):!![]);return{'arbs':h,'total_enumerated':h['length'],'has_more':e};}
@@ -1 +1 @@
1
- export const MACHINE_SCENES=[{'id':'ecommerce_standard','name':'Standard\x20E-commerce\x20Flow','industry':['ecommerce'],'scenario':'Paid\x20(entry)\x20→\x20Ship\x20→\x20Receive\x20→\x20Complete','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Receive']},{'role':'merchant','permission_type':'Permission','involved_in':['Ship']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Ship','scene':'machine_forward_guard','purpose':'Verify\x20order\x20is\x20paid\x20(post-buy\x20state)'},{'forward':'Receive','scene':'machine_forward_guard','purpose':'Verify\x20identity'}],'allocation_integration':'Complete\x20node\x20->\x20Allocator\x20distributes\x20funds\x20to\x20merchant','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Order\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','All\x20nodes\x20after\x20entry\x20represent\x20order\x20processing\x20(ship,\x20receive,\x20complete),\x20NOT\x20payment\x20actions','Receipt\x20auto-triggers\x20fund\x20allocation'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'ecommerce_with_exceptions','name':'E-commerce\x20Flow\x20with\x20Exception\x20Branches','industry':['ecommerce'],'scenario':'Paid\x20(entry)\x20→\x20Ship\x20→\x20{Receive\x20→\x20Complete\x20|\x20Lost\x20(terminal)\x20|\x20Return\x20→\x20Refund}','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Receive','Return','Lost']},{'role':'merchant','permission_type':'Permission','involved_in':['Ship','Refund','Lost']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Lost','scene':'machine_forward_guard','purpose':'Dual-sig\x20to\x20confirm\x20lost'}],'allocation_integration':'Complete->merchant\x20|\x20Refund->customer\x20|\x20Lost->escrow\x20or\x20partial\x20refund\x20(Allocator\x20only).\x20Disputes\x20are\x20NOT\x20modeled\x20here\x20—\x20they\x20flow\x20through\x20Order\x20+\x20Arbitration\x20object\x20off-Machine.','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Order\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Lost\x20node\x20threshold=2\x20(customer\x20+\x20merchant\x20dual-sig)\x20—\x20Lost\x20is\x20a\x20TERMINAL\x20node,\x20not\x20a\x20path\x20to\x20arbitration','Competing\x20Pair:\x20Receive\x20vs\x20Lost\x20vs\x20Return\x20(first-wins)','DISPUTE\x20INDEPENDENCE:\x20arbitration\x20is\x20NOT\x20a\x20Machine\x20node.\x20If\x20a\x20Lost-terminal\x20order\x20later\x20needs\x20dispute\x20resolution,\x20the\x20customer\x20files\x20arbitration::dispute(order,\x20arbitration)\x20against\x20the\x20Arbitration\x20object\x20bound\x20to\x20the\x20Service\x20—\x20completely\x20off-Machine.\x20Arbitrators\x20live\x20in\x20Arbitration.voting_guard,\x20never\x20in\x20Permission\x20or\x20NamedOperator.','Refund\x20Allocation\x20must\x20use\x20sharing.who=OrderHolder\x20(refund\x20to\x20customer,\x20NOT\x20merchant)'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M6','M8']},{'id':'rental_standard','name':'Equipment\x20Rental\x20Flow','industry':['rental'],'scenario':'DepositPaid\x20(entry)\x20→\x20Pickup\x20→\x20In\x20Use\x20→\x20Return\x20→\x20Refund\x20Deposit','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Pickup','Return']},{'role':'merchant','permission_type':'Permission','involved_in':['Deliver','Refund\x20Deposit']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Pickup','scene':'machine_forward_guard','purpose':'Verify\x20deposit\x20paid\x20(post-buy\x20state)'},{'forward':'Return','scene':'machine_forward_guard','purpose':'Verify\x20equipment\x20condition'}],'allocation_integration':'Return\x20complete\x20->\x20deposit\x20refund\x20+\x20rental\x20fee\x20allocation','special_constraints':['First\x20node\x20\x27DepositPaid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20deposit\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Reserve\x27\x20or\x20\x27PayDeposit\x27\x20nodes\x20needed\x20—\x20reservation\x20and\x20payment\x20are\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Deposit\x20and\x20rental\x20fee\x20separated\x20(two\x20Allocators)','Equipment\x20damage\x20verified\x20by\x20Guard\x20(retained_submission\x20stores\x20inspection\x20report)'],'first_node_semantics':'DepositPaid\x20—\x20deposit\x20has\x20been\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-deposit\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'dual_signature','name':'Dual-Signature\x20Consensus\x20Flow','industry':['ecommerce','service','logistics'],'scenario':'Critical\x20node\x20requires\x20customer\x20+\x20merchant\x20dual\x20confirmation\x20to\x20advance','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Confirm']},{'role':'merchant','permission_type':'Permission','involved_in':['Confirm']}],'recommended_patterns':['P-M-AND'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Both\x20Confirm','scene':'machine_forward_guard','purpose':'Verify\x20identity'}],'allocation_integration':'After\x20dual-sig\x20->\x20fund\x20allocation','special_constraints':['threshold=2,\x20two\x20Forwards\x20with\x20weight=1\x20each','Customer\x20Forward:\x20namedOperator=\x27\x27\x20(OrderHolder)','Merchant\x20Forward:\x20permissionIndex=2'],'first_node_semantics':'Initiated\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20dual-sig\x20confirmation','mutable_after_publish':![],'m_rounds_focus':['M3','M4','M5']},{'id':'weighted_voting','name':'Weighted\x20Voting\x20Flow','industry':['governance','arbitration'],'scenario':'Multi-party\x20voting\x20with\x20unequal\x20weights,\x20accumulate\x20to\x20threshold\x20to\x20advance','participants':[{'role':'chief','permission_type':'Permission','involved_in':['Vote']},{'role':'member','permission_type':'NamedOperator','involved_in':['Vote']}],'recommended_patterns':['P-M-VOTE'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Vote','scene':'arbitration_voting_guard','purpose':'Verify\x20voting\x20eligibility\x20+\x20weight\x20extraction'}],'allocation_integration':'After\x20voting\x20complete\x20->\x20result\x20execution','special_constraints':['threshold=100,\x20chief\x20weight=60,\x20member\x20weight=40','GuardIdentifier\x20must\x20be\x20numeric\x20type\x20(extracts\x20weight)','Prevent\x20double-voting\x20(Guard\x20queries\x20arb.voted\x20has)'],'first_node_semantics':'VoteOpened\x20—\x20dispute\x20has\x20been\x20submitted\x20(order\x20already\x20paid\x20via\x20Service.buy());\x20Machine\x20starts\x20at\x20post-payment\x20dispute\x20state','mutable_after_publish':![],'m_rounds_focus':['M3','M4','M5']},{'id':'cross_machine_supply_chain','name':'Cross-Machine\x20Supply\x20Chain','industry':['manufacturing','logistics','retail'],'scenario':'Supplier\x20→\x20Manufacturer\x20→\x20Retailer,\x20each\x20link\x20is\x20independent\x20Machine','participants':[{'role':'supplier','permission_type':'Permission','involved_in':['Machine\x20A']},{'role':'manufacturer','permission_type':'Permission','involved_in':['Machine\x20B']},{'role':'retailer','permission_type':'Permission','involved_in':['Machine\x20C']}],'recommended_patterns':['P-M-CROSS-MACHINE'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Start\x20Manufacturing','scene':'machine_forward_guard','purpose':'Verify\x20supplier\x20Progress\x20completed'},{'forward':'Start\x20Retail','scene':'machine_forward_guard','purpose':'Verify\x20manufacturer\x20Progress\x20completed'}],'allocation_integration':'Each\x20Machine\x20has\x20independent\x20allocation','special_constraints':['Machine\x20B\x27s\x20Guard\x20uses\x20convert_witness=100\x20to\x20query\x20Machine\x20A\x27s\x20Progress','Cross-Machine\x20dependency\x20is\x20one-way\x20(no\x20cycles)','Each\x20Machine\x20must\x20be\x20published\x20independently','Dependency\x20verification:\x20indirect\x20via\x20progress::new\x20->\x20assert_published\x20(see\x2006\x20§14.6)','Each\x20Machine\x20in\x20the\x20chain\x20starts\x20at\x20a\x20post-payment\x20state\x20(each\x20link\x27s\x20Service.buy()\x20handles\x20payment\x20independently)'],'first_node_semantics':'UpstreamVerified\x20—\x20order\x20has\x20been\x20paid\x20via\x20upstream\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20verifying\x20upstream\x20completion','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M8']},{'id':'privacy_delivery','name':'Privacy\x20Delivery\x20Flow','industry':['ecommerce','logistics'],'scenario':'Privacy\x20data\x20delivered\x20via\x20Messenger\x20(encrypted),\x20chain\x20stores\x20only\x20Proof','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Submit\x20Proof']},{'role':'merchant','permission_type':'Permission','involved_in':['Verify\x20Proof']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Submit\x20Proof','scene':'machine_forward_guard','purpose':'Verify\x20Proof\x20signature\x20+\x20timestamp'}],'allocation_integration':'After\x20Proof\x20verified\x20->\x20continue\x20flow','special_constraints':['Uses\x20tpl_forward_privacy_delivery_proof\x20template\x20(strict\x20mode)','retained_submission\x20preserves\x20Proof\x20address\x20for\x20arbitration\x20query','Proof\x20MUST\x20be\x20generated\x20by\x20messenger.submitChainProof','submitChainProof\x20about_address\x20=\x20peerAddress\x20(NOT\x20sessionId)','Guard\x20table\x20item\x20name\x20<64\x20BCS\x20bytes\x20(MAX_NAME_LENGTH=64)','First\x20node\x20represents\x20post-payment\x20state\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20proof\x20submission','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M7']},{'id':'reward_incentive','name':'Reward\x20Incentive\x20Flow','industry':['ecommerce','subscription','education'],'scenario':'Trigger\x20Reward\x20claim\x20after\x20completing\x20specific\x20node','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Claim\x20Reward']},{'role':'platform','permission_type':'Permission','involved_in':['Issue\x20Reward']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Claim','scene':'reward_guard','purpose':'Verify\x20claim\x20eligibility\x20+\x20prevent\x20double-claim'}],'allocation_integration':'Reward\x20is\x20independent\x20of\x20Allocation','special_constraints':['Reward\x20Guard\x20must\x20prevent\x20double-claim\x20(R-X1-14\x20CRITICAL)','Uses\x20query_reward_record_count\x20==\x200\x20for\x20anti-reentry','Reward\x20object\x20must\x20be\x20already\x20created'],'first_node_semantics':'Eligible\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20customer\x20is\x20eligible\x20to\x20claim\x20reward','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M8']},{'id':'wonder_feedback','name':'Wonder\x20Feedback\x20Flow\x20(Post-Completion\x20Rating)','industry':['ecommerce','service','rental','subscription','education'],'scenario':'Paid\x20(entry)\x20→\x20...\x20→\x20Completed\x20→\x20{Wonder\x20|\x20NoWonder}\x20(rating\x20terminals)','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Wonder','NoWonder']},{'role':'merchant','permission_type':'Permission','involved_in':['Completed']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Praise','scene':'machine_forward_guard','purpose':'Verify\x20Progress.current\x20==\x20\x27Completed\x27\x20(rating\x20only\x20after\x20completion)'},{'forward':'Complain','scene':'machine_forward_guard','purpose':'Verify\x20Progress.current\x20==\x20\x27Completed\x27\x20(rating\x20only\x20after\x20completion)'}],'allocation_integration':'Completed\x20->\x20merchant\x20allocation\x20(terminal);\x20Wonder/NoWonder\x20are\x20reputation\x20terminals\x20—\x20no\x20fund\x20allocation.\x20Reward\x20object\x20(independent)\x20claims\x20fire\x20when\x20Progress.current\x20==\x20\x27wonder\x27','special_constraints':['Dispute\x20MUST\x20NOT\x20be\x20modeled\x20as\x20machine\x20nodes\x20—\x20disputes\x20flow\x20through\x20Order\x20+\x20Arbitration\x20object,\x20independent\x20of\x20this\x20Machine','Wonder/NoWonder\x20are\x20POST-completion\x20terminals:\x20order\x20is\x20already\x20settled\x20when\x20customer\x20rates','Both\x20Wonder\x20and\x20NoWonder\x20forwards\x20have\x20named_operator=\x27\x27\x20(OrderHolder)\x20—\x20rating\x20is\x20a\x20customer-only\x20action','Reward\x20object\x20(if\x20bound)\x20MUST\x20use\x20a\x20Guard\x20verifying\x20Progress.current\x20==\x20\x27wonder\x27\x20AND\x20order.holder\x20==\x20signer\x20—\x20no\x20Permission\x20needed\x20for\x20reward\x20claim','Competing\x20Pair:\x20Praise\x20vs\x20Complain\x20(first-wins;\x20one\x20rating\x20per\x20order)','No\x20dispute/refund/arbitration\x20nodes\x20in\x20this\x20Machine\x20—\x20those\x20flows\x20live\x20off-Machine'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20same\x20as\x20e-commerce\x20baseline','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'subscription','name':'Subscription\x20/\x20Membership\x20Flow','industry':['subscription','service'],'scenario':'Paid\x20(entry)\x20→\x20Activate\x20→\x20[Renew\x20|\x20Expire]\x20→\x20Cancel/End','participants':[{'role':'subscriber','permission_type':'OrderHolder','involved_in':['Renew','Cancel']},{'role':'provider','permission_type':'Permission','involved_in':['Activate','Pause']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Renew','scene':'machine_forward_guard','purpose':'Time-lock\x20verification'},{'forward':'Cancel','scene':'machine_forward_guard','purpose':'Verify\x20subscription\x20status'}],'allocation_integration':'Renew\x20->\x20fund\x20allocation\x20|\x20Expire\x20->\x20stop\x20service','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20subscription\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Subscribe\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20subscription\x20and\x20payment\x20are\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Time-lock:\x20context(Clock)\x20>=\x20progress.entry_time\x20+\x20duration','Competing\x20Pair:\x20Renew\x20vs\x20Expire\x20(first-wins)','Repository\x20records\x20subscription\x20status','Note:\x20Machine.consensus_repositories\x20is\x20declarative-only\x20and\x20NOT\x20auto-passed\x20to\x20Progress\x20(see\x2006\x20§14.4)'],'first_node_semantics':'Paid\x20—\x20subscription\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20activation','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M6','M8']}];export const MACHINE_LEDGER_VERSION='1.0.0';export const MACHINE_SCENES_COUNT=MACHINE_SCENES['length'];export function findScene(a){return MACHINE_SCENES['find'](b=>b['id']===a);}export function getScenesByIndustry(a){return MACHINE_SCENES['filter'](b=>b['industry']['includes'](a));}export function getScenesByPattern(a){return MACHINE_SCENES['filter'](b=>b['recommended_patterns']['includes'](a));}export function getScenesByTopology(a){return MACHINE_SCENES['filter'](b=>b['recommended_topology']['includes'](a));}export function inferSceneFromFlow(a){const b=a['toLowerCase']();if(b['includes']('supply\x20chain')||b['includes']('cross-machine'))return findScene('cross_machine_supply_chain');if(b['includes']('wonder')||b['includes']('praise')||b['includes']('complain')||b['includes']('thumbs_up')||b['includes']('thumbs_down')||b['includes']('rating')||b['includes']('feedback')||b['includes']('praise')||b['includes']('complaint'))return findScene('wonder_feedback');if(b['includes']('reward')||b['includes']('incentive'))return findScene('reward_incentive');if(b['includes']('privacy')||b['includes']('messenger'))return findScene('privacy_delivery');if(b['includes']('vote')||b['includes']('weight'))return findScene('weighted_voting');if(b['includes']('dual-sig')||b['includes']('both\x20confirm'))return findScene('dual_signature');if(b['includes']('subscribe')||b['includes']('membership'))return findScene('subscription');if(b['includes']('rental')||b['includes']('deposit'))return findScene('rental_standard');if(b['includes']('lost')||b['includes']('return'))return findScene('ecommerce_with_exceptions');if(b['includes']('ecommerce')||b['includes']('order'))return findScene('ecommerce_standard');return undefined;}export function getImmutableScenes(){return MACHINE_SCENES['filter'](a=>!a['mutable_after_publish']);}export function getScenesWithGuardRequirements(){return MACHINE_SCENES['filter'](a=>a['guard_requirements']['length']>0x0);}export function getReferencedGuardSceneIds(){const a=new Set();for(const b of MACHINE_SCENES){for(const c of b['guard_requirements']){a['add'](c['scene']);}}return a;}export function listScenes(){return MACHINE_SCENES['map'](a=>({'id':a['id'],'name':a['name'],'scenario':a['scenario'],'patterns':a['recommended_patterns']}));}
1
+ export const MACHINE_SCENES=[{'id':'ecommerce_standard','name':'Standard\x20E-commerce\x20Flow','industry':['ecommerce'],'scenario':'Paid\x20(entry)\x20→\x20Ship\x20→\x20Receive\x20→\x20Complete','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Receive']},{'role':'merchant','permission_type':'Permission','involved_in':['Ship']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Ship','scene':'machine_forward_guard','purpose':'Verify\x20order\x20is\x20paid\x20(post-buy\x20state)'},{'forward':'Receive','scene':'machine_forward_guard','purpose':'Verify\x20identity'}],'allocation_integration':'Complete\x20node\x20->\x20Allocator\x20distributes\x20funds\x20to\x20merchant','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Order\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','All\x20nodes\x20after\x20entry\x20represent\x20order\x20processing\x20(ship,\x20receive,\x20complete),\x20NOT\x20payment\x20actions','Receipt\x20auto-triggers\x20fund\x20allocation'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'ecommerce_with_exceptions','name':'E-commerce\x20Flow\x20with\x20Exception\x20Branches','industry':['ecommerce'],'scenario':'Paid\x20(entry)\x20→\x20Ship\x20→\x20{Receive\x20→\x20Complete\x20|\x20Lost\x20(terminal)\x20|\x20Return\x20→\x20Refund}','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Receive','Return','Lost']},{'role':'merchant','permission_type':'Permission','involved_in':['Ship','Refund','Lost']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Lost','scene':'machine_forward_guard','purpose':'Dual-sig\x20to\x20confirm\x20lost'}],'allocation_integration':'Complete->merchant\x20|\x20Refund->customer\x20|\x20Lost->escrow\x20or\x20partial\x20refund\x20(Allocator\x20only).\x20Disputes\x20are\x20NOT\x20modeled\x20here\x20—\x20they\x20flow\x20through\x20Order\x20+\x20Arbitration\x20object\x20off-Machine.','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Order\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Lost\x20node\x20threshold=2\x20(customer\x20+\x20merchant\x20dual-sig)\x20—\x20Lost\x20is\x20a\x20TERMINAL\x20node,\x20not\x20a\x20path\x20to\x20arbitration','Competing\x20Pair:\x20Receive\x20vs\x20Lost\x20vs\x20Return\x20(first-wins)','DISPUTE\x20INDEPENDENCE:\x20arbitration\x20is\x20NOT\x20a\x20Machine\x20node.\x20If\x20a\x20Lost-terminal\x20order\x20later\x20needs\x20dispute\x20resolution,\x20the\x20customer\x20opens\x20a\x20dispute\x20on\x20the\x20Arbitration\x20object\x20bound\x20to\x20the\x20Service\x20—\x20completely\x20off-Machine.\x20Arbitrators\x20live\x20in\x20Arbitration.voting_guard,\x20never\x20in\x20Permission\x20or\x20NamedOperator.','Refund\x20Allocation\x20must\x20use\x20sharing.who=OrderHolder\x20(refund\x20to\x20customer,\x20NOT\x20merchant)'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M6','M8']},{'id':'rental_standard','name':'Equipment\x20Rental\x20Flow','industry':['rental'],'scenario':'DepositPaid\x20(entry)\x20→\x20Pickup\x20→\x20In\x20Use\x20→\x20Return\x20→\x20Refund\x20Deposit','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Pickup','Return']},{'role':'merchant','permission_type':'Permission','involved_in':['Deliver','Refund\x20Deposit']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Pickup','scene':'machine_forward_guard','purpose':'Verify\x20deposit\x20paid\x20(post-buy\x20state)'},{'forward':'Return','scene':'machine_forward_guard','purpose':'Verify\x20equipment\x20condition'}],'allocation_integration':'Return\x20complete\x20->\x20deposit\x20refund\x20+\x20rental\x20fee\x20allocation','special_constraints':['First\x20node\x20\x27DepositPaid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20deposit\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Reserve\x27\x20or\x20\x27PayDeposit\x27\x20nodes\x20needed\x20—\x20reservation\x20and\x20payment\x20are\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Deposit\x20and\x20rental\x20fee\x20separated\x20(two\x20Allocators)','Equipment\x20damage\x20verified\x20by\x20Guard\x20(retained_submission\x20stores\x20inspection\x20report)'],'first_node_semantics':'DepositPaid\x20—\x20deposit\x20has\x20been\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-deposit\x20state','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'dual_signature','name':'Dual-Signature\x20Consensus\x20Flow','industry':['ecommerce','service','logistics'],'scenario':'Critical\x20node\x20requires\x20customer\x20+\x20merchant\x20dual\x20confirmation\x20to\x20advance','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Confirm']},{'role':'merchant','permission_type':'Permission','involved_in':['Confirm']}],'recommended_patterns':['P-M-AND'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Both\x20Confirm','scene':'machine_forward_guard','purpose':'Verify\x20identity'}],'allocation_integration':'After\x20dual-sig\x20->\x20fund\x20allocation','special_constraints':['threshold=2,\x20two\x20Forwards\x20with\x20weight=1\x20each','Customer\x20Forward:\x20namedOperator=\x27\x27\x20(OrderHolder)','Merchant\x20Forward:\x20permissionIndex=2'],'first_node_semantics':'Initiated\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20dual-sig\x20confirmation','mutable_after_publish':![],'m_rounds_focus':['M3','M4','M5']},{'id':'weighted_voting','name':'Weighted\x20Voting\x20Flow','industry':['governance','arbitration'],'scenario':'Multi-party\x20voting\x20with\x20unequal\x20weights,\x20accumulate\x20to\x20threshold\x20to\x20advance','participants':[{'role':'chief','permission_type':'Permission','involved_in':['Vote']},{'role':'member','permission_type':'NamedOperator','involved_in':['Vote']}],'recommended_patterns':['P-M-VOTE'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Vote','scene':'arbitration_voting_guard','purpose':'Verify\x20voting\x20eligibility\x20+\x20weight\x20extraction'}],'allocation_integration':'After\x20voting\x20complete\x20->\x20result\x20execution','special_constraints':['threshold=100,\x20chief\x20weight=60,\x20member\x20weight=40','GuardIdentifier\x20must\x20be\x20numeric\x20type\x20(extracts\x20weight)','Prevent\x20double-voting\x20(Guard\x20queries\x20arb.voted\x20has)'],'first_node_semantics':'VoteOpened\x20—\x20dispute\x20has\x20been\x20submitted\x20(order\x20already\x20paid\x20via\x20Service.buy());\x20Machine\x20starts\x20at\x20post-payment\x20dispute\x20state','mutable_after_publish':![],'m_rounds_focus':['M3','M4','M5']},{'id':'cross_machine_supply_chain','name':'Cross-Machine\x20Supply\x20Chain','industry':['manufacturing','logistics','retail'],'scenario':'Supplier\x20→\x20Manufacturer\x20→\x20Retailer,\x20each\x20link\x20is\x20independent\x20Machine','participants':[{'role':'supplier','permission_type':'Permission','involved_in':['Machine\x20A']},{'role':'manufacturer','permission_type':'Permission','involved_in':['Machine\x20B']},{'role':'retailer','permission_type':'Permission','involved_in':['Machine\x20C']}],'recommended_patterns':['P-M-CROSS-MACHINE'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Start\x20Manufacturing','scene':'machine_forward_guard','purpose':'Verify\x20supplier\x20Progress\x20completed'},{'forward':'Start\x20Retail','scene':'machine_forward_guard','purpose':'Verify\x20manufacturer\x20Progress\x20completed'}],'allocation_integration':'Each\x20Machine\x20has\x20independent\x20allocation','special_constraints':['Machine\x20B\x27s\x20Guard\x20uses\x20convert_witness=100\x20to\x20query\x20Machine\x20A\x27s\x20Progress','Cross-Machine\x20dependency\x20is\x20one-way\x20(no\x20cycles)','Each\x20Machine\x20must\x20be\x20published\x20independently','Dependency\x20verification:\x20indirect\x20—\x20creating\x20the\x20downstream\x20Progress\x20asserts\x20the\x20upstream\x20Machine\x20is\x20already\x20published\x20(see\x2006\x20§14.6)','Each\x20Machine\x20in\x20the\x20chain\x20starts\x20at\x20a\x20post-payment\x20state\x20(each\x20link\x27s\x20Service.buy()\x20handles\x20payment\x20independently)'],'first_node_semantics':'UpstreamVerified\x20—\x20order\x20has\x20been\x20paid\x20via\x20upstream\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20verifying\x20upstream\x20completion','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M8']},{'id':'privacy_delivery','name':'Privacy\x20Delivery\x20Flow','industry':['ecommerce','logistics'],'scenario':'Privacy\x20data\x20delivered\x20via\x20Messenger\x20(encrypted),\x20chain\x20stores\x20only\x20Proof','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Submit\x20Proof']},{'role':'merchant','permission_type':'Permission','involved_in':['Verify\x20Proof']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Submit\x20Proof','scene':'machine_forward_guard','purpose':'Verify\x20Proof\x20signature\x20+\x20timestamp'}],'allocation_integration':'After\x20Proof\x20verified\x20->\x20continue\x20flow','special_constraints':['Uses\x20tpl_forward_privacy_delivery_proof\x20template\x20(strict\x20mode)','retained_submission\x20preserves\x20Proof\x20address\x20for\x20arbitration\x20query','Proof\x20MUST\x20be\x20generated\x20by\x20messenger.submitChainProof','submitChainProof\x20about_address\x20=\x20peerAddress\x20(NOT\x20sessionId)','Guard\x20table\x20item\x20name\x20<64\x20BCS\x20bytes\x20(MAX_NAME_LENGTH=64)','First\x20node\x20represents\x20post-payment\x20state\x20—\x20payment\x20is\x20handled\x20by\x20Service.buy(),\x20not\x20Machine'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20proof\x20submission','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M7']},{'id':'reward_incentive','name':'Reward\x20Incentive\x20Flow','industry':['ecommerce','subscription','education'],'scenario':'Trigger\x20Reward\x20claim\x20after\x20completing\x20specific\x20node','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Claim\x20Reward']},{'role':'platform','permission_type':'Permission','involved_in':['Issue\x20Reward']}],'recommended_patterns':['P-M-SEQ'],'recommended_topology':['P-M-LINEAR'],'guard_requirements':[{'forward':'Claim','scene':'reward_claim','purpose':'Verify\x20claim\x20eligibility\x20+\x20prevent\x20double-claim'}],'allocation_integration':'Reward\x20is\x20independent\x20of\x20Allocation','special_constraints':['Reward\x20Guard\x20must\x20prevent\x20double-claim\x20(R-X1-14\x20CRITICAL)','Uses\x20query_reward_record_count\x20==\x200\x20for\x20anti-reentry','Reward\x20object\x20must\x20be\x20already\x20created'],'first_node_semantics':'Eligible\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20customer\x20is\x20eligible\x20to\x20claim\x20reward','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M8']},{'id':'wonder_feedback','name':'Wonder\x20Feedback\x20Flow\x20(Post-Completion\x20Rating)','industry':['ecommerce','service','rental','subscription','education'],'scenario':'Paid\x20(entry)\x20→\x20...\x20→\x20Completed\x20→\x20{Wonder\x20|\x20NoWonder}\x20(rating\x20terminals)','participants':[{'role':'customer','permission_type':'OrderHolder','involved_in':['Wonder','NoWonder']},{'role':'merchant','permission_type':'Permission','involved_in':['Completed']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Praise','scene':'machine_forward_guard','purpose':'Verify\x20Progress.current\x20==\x20\x27Completed\x27\x20(rating\x20only\x20after\x20completion)'},{'forward':'Complain','scene':'machine_forward_guard','purpose':'Verify\x20Progress.current\x20==\x20\x27Completed\x27\x20(rating\x20only\x20after\x20completion)'}],'allocation_integration':'Completed\x20->\x20merchant\x20allocation\x20(terminal);\x20Wonder/NoWonder\x20are\x20reputation\x20terminals\x20—\x20no\x20fund\x20allocation.\x20Reward\x20object\x20(independent)\x20claims\x20fire\x20when\x20Progress.current\x20==\x20\x27wonder\x27','special_constraints':['Dispute\x20MUST\x20NOT\x20be\x20modeled\x20as\x20machine\x20nodes\x20—\x20disputes\x20flow\x20through\x20Order\x20+\x20Arbitration\x20object,\x20independent\x20of\x20this\x20Machine','Wonder/NoWonder\x20are\x20POST-completion\x20terminals:\x20order\x20is\x20already\x20settled\x20when\x20customer\x20rates','Both\x20Wonder\x20and\x20NoWonder\x20forwards\x20have\x20named_operator=\x27\x27\x20(OrderHolder)\x20—\x20rating\x20is\x20a\x20customer-only\x20action','Reward\x20object\x20(if\x20bound)\x20MUST\x20use\x20a\x20Guard\x20verifying\x20Progress.current\x20==\x20\x27wonder\x27\x20AND\x20order.holder\x20==\x20signer\x20—\x20no\x20Permission\x20needed\x20for\x20reward\x20claim','Competing\x20Pair:\x20Praise\x20vs\x20Complain\x20(first-wins;\x20one\x20rating\x20per\x20order)','No\x20dispute/refund/arbitration\x20nodes\x20in\x20this\x20Machine\x20—\x20those\x20flows\x20live\x20off-Machine'],'first_node_semantics':'Paid\x20—\x20order\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20same\x20as\x20e-commerce\x20baseline','mutable_after_publish':![],'m_rounds_focus':['M1','M2','M3','M5','M8']},{'id':'subscription','name':'Subscription\x20/\x20Membership\x20Flow','industry':['subscription','service'],'scenario':'Paid\x20(entry)\x20→\x20Activate\x20→\x20[Renew\x20|\x20Expire]\x20→\x20Cancel/End','participants':[{'role':'subscriber','permission_type':'OrderHolder','involved_in':['Renew','Cancel']},{'role':'provider','permission_type':'Permission','involved_in':['Activate','Pause']}],'recommended_patterns':['P-M-SEQ','P-M-COMPETING'],'recommended_topology':['P-M-LINEAR','P-M-COMPETING'],'guard_requirements':[{'forward':'Renew','scene':'machine_forward_guard','purpose':'Time-lock\x20verification'},{'forward':'Cancel','scene':'machine_forward_guard','purpose':'Verify\x20subscription\x20status'}],'allocation_integration':'Renew\x20->\x20fund\x20allocation\x20|\x20Expire\x20->\x20stop\x20service','special_constraints':['First\x20node\x20\x27Paid\x27\x20represents\x20post-payment\x20state\x20—\x20buy()\x20completes\x20subscription\x20payment\x20atomically\x20before\x20Progress\x20is\x20created','No\x20separate\x20\x27Subscribe\x27\x20or\x20\x27Pay\x27\x20nodes\x20needed\x20—\x20subscription\x20and\x20payment\x20are\x20handled\x20by\x20Service.buy(),\x20not\x20Machine','Time-lock:\x20context(Clock)\x20>=\x20progress.entry_time\x20+\x20duration','Competing\x20Pair:\x20Renew\x20vs\x20Expire\x20(first-wins)','Repository\x20records\x20subscription\x20status','Note:\x20Machine.consensus_repositories\x20is\x20declarative-only\x20and\x20NOT\x20auto-passed\x20to\x20Progress\x20(see\x2006\x20§14.4)'],'first_node_semantics':'Paid\x20—\x20subscription\x20has\x20been\x20created\x20and\x20paid\x20via\x20Service.buy();\x20Machine\x20starts\x20at\x20post-payment\x20state,\x20awaiting\x20activation','mutable_after_publish':![],'m_rounds_focus':['M1','M3','M6','M8']}];export const MACHINE_LEDGER_VERSION='1.0.0';export const MACHINE_SCENES_COUNT=MACHINE_SCENES['length'];export function findScene(a){return MACHINE_SCENES['find'](b=>b['id']===a);}export function getScenesByIndustry(a){return MACHINE_SCENES['filter'](b=>b['industry']['includes'](a));}export function getScenesByPattern(a){return MACHINE_SCENES['filter'](b=>b['recommended_patterns']['includes'](a));}export function getScenesByTopology(a){return MACHINE_SCENES['filter'](b=>b['recommended_topology']['includes'](a));}export function inferSceneFromFlow(a){const b=a['toLowerCase']();if(b['includes']('supply\x20chain')||b['includes']('cross-machine'))return findScene('cross_machine_supply_chain');if(b['includes']('wonder')||b['includes']('praise')||b['includes']('complain')||b['includes']('thumbs_up')||b['includes']('thumbs_down')||b['includes']('rating')||b['includes']('feedback')||b['includes']('praise')||b['includes']('complaint'))return findScene('wonder_feedback');if(b['includes']('reward')||b['includes']('incentive'))return findScene('reward_incentive');if(b['includes']('privacy')||b['includes']('messenger'))return findScene('privacy_delivery');if(b['includes']('vote')||b['includes']('weight'))return findScene('weighted_voting');if(b['includes']('dual-sig')||b['includes']('both\x20confirm'))return findScene('dual_signature');if(b['includes']('subscribe')||b['includes']('membership'))return findScene('subscription');if(b['includes']('rental')||b['includes']('deposit'))return findScene('rental_standard');if(b['includes']('lost')||b['includes']('return'))return findScene('ecommerce_with_exceptions');if(b['includes']('ecommerce')||b['includes']('order'))return findScene('ecommerce_standard');return undefined;}export function getImmutableScenes(){return MACHINE_SCENES['filter'](a=>!a['mutable_after_publish']);}export function getScenesWithGuardRequirements(){return MACHINE_SCENES['filter'](a=>a['guard_requirements']['length']>0x0);}export function getReferencedGuardSceneIds(){const a=new Set();for(const b of MACHINE_SCENES){for(const c of b['guard_requirements']){a['add'](c['scene']);}}return a;}export function listScenes(){return MACHINE_SCENES['map'](a=>({'id':a['id'],'name':a['name'],'scenario':a['scenario'],'patterns':a['recommended_patterns']}));}
@@ -1,3 +1,4 @@
1
+ import { type Facts, type FindingExposure } from "../config/rule-engine.js";
1
2
  export type MachineRiskLevel = "critical" | "high" | "medium" | "low";
2
3
  export type MachineRiskCategory = "structural" | "guard_integration" | "permission" | "immutability" | "environment";
3
4
  export interface MachineRiskRule {
@@ -18,6 +19,7 @@ export interface MachineRisk {
18
19
  detail: string;
19
20
  recommendation: string;
20
21
  auto_fixable: boolean;
22
+ exposure?: FindingExposure;
21
23
  }
22
24
  export interface MachineRiskAssessment {
23
25
  overall_level: MachineRiskLevel;
@@ -64,12 +66,7 @@ export interface ProjectContextForRisk {
64
66
  published_allocators: Set<string>;
65
67
  published_repositories: Set<string>;
66
68
  }
69
+ export declare function machineRiskFacts(machine: MachineJsonForRisk, context: ProjectContextForRisk): Facts;
70
+ export declare const MACHINE_RISK_VERSION = "1.0.0";
67
71
  export declare const MACHINE_RISK_RULES: MachineRiskRule[];
68
72
  export declare function assessMachineRisks(machine: MachineJsonForRisk, context: ProjectContextForRisk): MachineRiskAssessment;
69
- export declare function getRiskRulesByCategory(category: MachineRiskCategory): MachineRiskRule[];
70
- export declare function getRiskRuleById(id: string): MachineRiskRule | undefined;
71
- export declare function getRiskRulesBySeverity(severity: MachineRiskLevel): MachineRiskRule[];
72
- export declare function getAutoFixableRules(): MachineRiskRule[];
73
- export declare function getRiskSummary(assessment: MachineRiskAssessment): string;
74
- export declare const MACHINE_RISK_VERSION = "1.0.0";
75
- export declare const MACHINE_RISK_RULES_COUNT: number;
@@ -1 +1 @@
1
- import{USER_DEFINED_PERM_INDEX_START,MAX_NODE_COUNT}from'./onchain-constants.js';import{findUnachievableThresholds}from'./machine-topology.js';export const MACHINE_RISK_RULES=[{'id':'R-M1-01','name':'No\x20entry\x20point','category':'structural','severity':'critical','description':'Machine\x20has\x20no\x20Pair\x20with\x20prev_node=\x27\x27\x20(no\x20entry\x20point).\x20Workflow\x20cannot\x20start.','detection':'Check\x20if\x20any\x20pair\x20has\x20prev_node\x20===\x20\x27\x27','recommendation':'Add\x20at\x20least\x20one\x20Pair\x20with\x20prev_node=\x27\x27\x20to\x20serve\x20as\x20entry\x20point.','auto_fixable':![],'related_constraint':'MC-S-01'},{'id':'R-M1-02','name':'No\x20terminal\x20node','category':'structural','severity':'critical','description':'Machine\x20has\x20no\x20terminal\x20node\x20(all\x20nodes\x20have\x20outgoing\x20Pairs).\x20Workflow\x20never\x20completes.','detection':'Check\x20if\x20any\x20node\x20has\x20no\x20outgoing\x20Pair','recommendation':'Designate\x20at\x20least\x20one\x20node\x20as\x20terminal\x20(no\x20outgoing\x20Pair)\x20and\x20bind\x20Allocator\x20to\x20it.','auto_fixable':![],'related_constraint':'MC-S-02'},{'id':'R-M1-03','name':'Dead-end\x20node\x20(non-terminal)','category':'structural','severity':'medium','description':'Non-terminal\x20node\x20has\x20no\x20outgoing\x20Pair.\x20Workflow\x20stalls\x20at\x20this\x20node.','detection':'Find\x20nodes\x20with\x20no\x20outgoing\x20Pair\x20that\x20are\x20not\x20intended\x20terminals','recommendation':'Add\x20outgoing\x20Pair\x20or\x20designate\x20as\x20terminal\x20with\x20Allocator.','auto_fixable':![]},{'id':'R-M1-04','name':'Orphaned\x20node','category':'structural','severity':'high','description':'Node\x20has\x20no\x20incoming\x20Pair\x20(except\x20entry).\x20Unreachable.','detection':'Find\x20non-entry\x20nodes\x20with\x20no\x20incoming\x20Pair','recommendation':'Add\x20Pair\x20from\x20existing\x20node\x20to\x20this\x20orphaned\x20node,\x20or\x20remove\x20it.','auto_fixable':![],'related_constraint':'MC-S-03'},{'id':'R-M1-05','name':'Dead\x20branch\x20(competing\x20Pair\x20always\x20loses)','category':'structural','severity':'high','description':'A\x20competing\x20Pair\x27s\x20threshold\x20can\x20never\x20be\x20met\x20because\x20users\x20always\x20prefer\x20another\x20path.','detection':'Analyze\x20threshold\x20achievability\x20across\x20competing\x20Pairs','recommendation':'Make\x20thresholds\x20balanced,\x20or\x20remove\x20the\x20dead\x20branch.','auto_fixable':![],'related_constraint':'MC-S-04'},{'id':'R-M1-06','name':'Cycle\x20in\x20DAG','category':'structural','severity':'critical','description':'Workflow\x20has\x20a\x20cycle.\x20Nodes\x20reference\x20each\x20other\x20circularly.','detection':'DFS\x20cycle\x20detection','recommendation':'Break\x20the\x20cycle\x20by\x20removing\x20one\x20Pair.','auto_fixable':![],'related_constraint':'MC-S-05'},{'id':'R-M1-07','name':'Exceeds\x20MAX_NODE_COUNT\x20(100)','category':'structural','severity':'critical','description':'Node\x20count\x20exceeds\x20on-chain\x20limit.\x20Publish\x20will\x20fail.','detection':'nodes.length\x20>\x20'+MAX_NODE_COUNT,'recommendation':'Reduce\x20node\x20count\x20or\x20split\x20into\x20multiple\x20Machines.','auto_fixable':![],'related_constraint':'MC-C-01'},{'id':'R-M1-08','name':'Exceeds\x20MAX_NODE_PAIR_COUNT\x20(40)','category':'structural','severity':'high','description':'A\x20single\x20node\x27s\x20Pairs\x20exceed\x20on-chain\x20limit.\x20Publish\x20will\x20fail.','detection':'Find\x20node\x20where\x20pairs.length\x20>\x2040','recommendation':'Split\x20node\x20or\x20simplify\x20branches\x20to\x20reduce\x20Pair\x20count\x20per\x20node.','auto_fixable':![],'related_constraint':'MC-C-02'},{'id':'R-M1-09','name':'Exceeds\x20MAX_FORWARD_COUNT\x20(20)','category':'structural','severity':'high','description':'A\x20single\x20Pair\x27s\x20Forwards\x20exceed\x20on-chain\x20limit.\x20Publish\x20will\x20fail.','detection':'Find\x20Pair\x20where\x20forwards.length\x20>\x2020','recommendation':'Split\x20Pair\x20or\x20merge\x20Forwards\x20to\x20reduce\x20Forward\x20count\x20per\x20Pair.','auto_fixable':![],'related_constraint':'MC-C-03'},{'id':'R-M1-10','name':'Duplicate\x20node\x20name','category':'structural','severity':'critical','description':'Two\x20nodes\x20have\x20the\x20same\x20name.\x20On-chain\x20will\x20reject.','detection':'Find\x20duplicate\x20names\x20in\x20nodes\x20array','recommendation':'Rename\x20one\x20of\x20the\x20duplicates.','auto_fixable':![],'related_constraint':'MC-C-04'},{'id':'R-M1-11','name':'Dispute\x20anti-pattern\x20—\x20machine\x20illegally\x20models\x20dispute\x20flow','category':'structural','severity':'critical','description':'Machine\x20contains\x20nodes\x20named\x20\x27disputed\x27,\x20\x27refunded\x27,\x20\x27arb\x27,\x20\x27arbitration\x27,\x20'+'\x27dispute\x27,\x20or\x20\x27refund\x27.\x20This\x20is\x20a\x20CRITICAL\x20design\x20anti-pattern\x20because\x20'+'dispute\x20is\x20INDEPENDENT\x20of\x20the\x20machine\x20workflow.\x20Dispute\x20flows\x20through:\x20'+'Order\x20→\x20Arbitration.dispute()\x20→\x20Arb\x20object\x20→\x20arbitration()\x20ruling\x20→\x20'+'arb_withdraw\x20by\x20order\x20holder.\x20Arbitrators\x20are\x20configured\x20in\x20'+'Arbitration.voting_guard,\x20NOT\x20in\x20Permission.\x20Merchants\x20who\x20model\x20'+'dispute\x20in\x20the\x20machine\x20(e.g.,\x20\x27disputed\x20→\x20refunded\x27\x20forward\x20guarded\x20'+'by\x20Permission\x20index\x201500)\x20create\x20dead-end\x20paths\x20because\x20no\x20one\x20has\x20'+'Permission\x201500\x20—\x20arbitrators\x20are\x20NOT\x20Permission\x20holders.','detection':'Match\x20node\x20names\x20against\x20regex\x20/(^|_)(disputed?|refund(?:ed)?|arbitration|arb)(_|$)/i\x20'+'(catches\x20both\x20exact\x20names\x20like\x20\x27refunded\x27\x20and\x20compound\x20fund-flow\x20terminals\x20like\x20'+'\x27deposit_refunded\x27/\x27deposit_deducted\x27;\x20business\x20states\x20like\x20\x27return_approved\x27/'+'\x27damage_confirmed\x27/\x27cancelled\x27/\x27returned\x27\x20do\x20NOT\x20match)','recommendation':'Remove\x20all\x20dispute/refund\x20nodes\x20from\x20the\x20machine.\x20Instead:\x20(1)\x20bind\x20an\x20'+'Arbitration\x20object\x20to\x20the\x20Service\x20via\x20Service.arbitrations,\x20(2)\x20configure\x20'+'arbitrators\x20via\x20Arbitration.voting_guard_add,\x20(3)\x20deposit\x20compensation_fund\x20'+'to\x20the\x20Service.\x20Disputes\x20are\x20then\x20filed\x20via\x20arbitration::dispute(order,\x20'+'arbitration)\x20—\x20completely\x20independent\x20of\x20the\x20machine\x20workflow.','auto_fixable':![]},{'id':'R-M1-12','name':'Unreachable\x20threshold\x20—\x20Pair\x20can\x20never\x20migrate','category':'structural','severity':'critical','description':'A\x20Pair\x27s\x20threshold\x20exceeds\x20the\x20sum\x20of\x20its\x20forward\x20weights.\x20Each\x20forward\x20'+'contributes\x20its\x20weight\x20AT\x20MOST\x20ONCE:\x20it\x20is\x20locked\x20by\x20the\x20first\x20operator\x20that\x20'+'accomplishes\x20it\x20(progress.move\x20session_accomplish_imp),\x20and\x20a\x20second\x20operator\x20'+'re-executing\x20the\x20same\x20forward\x20aborts\x20E_NOT_THE_HOLDER.\x20The\x20maximum\x20achievable\x20'+'weight\x20of\x20a\x20Pair\x20is\x20therefore\x20the\x20sum\x20of\x20its\x20DISTINCT\x20forward\x20weights.\x20When\x20'+'that\x20sum\x20<\x20threshold,\x20the\x20transition\x20can\x20never\x20migrate\x20and\x20the\x20workflow\x20is\x20'+'permanently\x20stuck\x20at\x20this\x20node.','detection':'For\x20each\x20Pair\x20compute\x20sum(forward.weight)\x20and\x20compare\x20with\x20threshold;\x20flag\x20'+'Pairs\x20where\x20sum\x20<\x20threshold\x20(use\x20machine-topology\x20findUnachievableThresholds).','recommendation':'Raise\x20forward\x20weights\x20so\x20sum(weights)\x20>=\x20threshold,\x20or\x20lower\x20the\x20threshold.\x20'+'For\x20multi-operator\x20cooperation\x20add\x20one\x20DISTINCT\x20forward\x20per\x20contributing\x20'+'operator\x20(threshold\x20N\x20needs\x20N\x20distinct\x20forwards,\x20each\x20weight\x20≥\x201).','auto_fixable':![],'related_constraint':'MC-S-04'},{'id':'R-M1-13','name':'Single-forward\x20multi-operator\x20misuse\x20—\x20threshold\x20>\x201\x20with\x20too\x20few\x20forwards','category':'structural','severity':'high','description':'A\x20Pair\x20with\x20threshold\x20>\x201\x20has\x20fewer\x20distinct\x20forwards\x20than\x20the\x20threshold\x20'+'(with\x20weight-1\x20forwards,\x20or\x20a\x20single\x20forward\x20that\x20can\x20only\x20ever\x20be\x20accomplished\x20'+'by\x20ONE\x20operator).\x20Because\x20a\x20forward\x20is\x20single-operator-locked,\x20N\x20different\x20'+'people\x20cannot\x20all\x20\x27execute\x20the\x20same\x20forward\x27\x20—\x20each\x20contributor\x20needs\x20their\x20OWN\x20'+'forward\x20in\x20the\x20Pair.\x20This\x20either\x20makes\x20the\x20transition\x20unreachable\x20or\x20forces\x20a\x20'+'single\x20operator\x20to\x20control\x20multiple\x20forwards\x20(defeating\x20the\x20cooperation\x20design).','detection':'Flag\x20Pairs\x20where\x20threshold\x20>\x201\x20and\x20the\x20count\x20of\x20distinct\x20forwards\x20<\x20threshold\x20'+'(i.e.\x20threshold\x20cannot\x20be\x20met\x20by\x20that\x20many\x20different\x20operators).','recommendation':'Model\x20cooperation\x20with\x20parallel\x20forwards:\x20Pair\x20{\x20threshold:\x20N,\x20forwards:\x20['+'begin_a\x20(weight\x201,\x20operator\x20A),\x20begin_b\x20(weight\x201,\x20operator\x20B),\x20...]\x20}\x20—\x20one\x20'+'distinct\x20forward\x20per\x20contributing\x20operator.','auto_fixable':![],'related_constraint':'MC-S-04'},{'id':'R-M2-01','name':'Guard\x20not\x20created','category':'guard_integration','severity':'critical','description':'Forward\x20references\x20a\x20Guard\x20that\x20is\x20not\x20yet\x20created\x20on-chain.\x20Forward\x20execution\x20will\x20fail\x20Guard\x20verification.','detection':'Check\x20forward.guard\x20against\x20published_guards\x20set','recommendation':'Create\x20the\x20Guard\x20object\x20before\x20publishing\x20this\x20Machine.','auto_fixable':![],'related_constraint':'MC-C-09'},{'id':'R-M2-02','name':'Guard\x20not\x20tested\x20via\x20gen_passport','category':'guard_integration','severity':'high','description':'Guard\x20has\x20not\x20been\x20tested\x20via\x20gen_passport.\x20Guard\x20may\x20have\x20bugs,\x20cannot\x20be\x20fixed\x20after\x20publish.','detection':'Check\x20testnet\x20test\x20records\x20for\x20this\x20Guard','recommendation':'Run\x20gen_passport\x20on\x20testnet\x20before\x20binding\x20to\x20Machine.','auto_fixable':![]},{'id':'R-M2-03','name':'Guard\x20+\x20Machine\x20immutability\x20deadlock','category':'guard_integration','severity':'critical','description':'After\x20Machine\x20publish,\x20a\x20Guard\x20bug\x20is\x20discovered.\x20Guard\x20is\x20immutable\x20(cannot\x20be\x20fixed),\x20Machine\x20is\x20immutable\x20(cannot\x20be\x20rebound).','detection':'Verify\x20all\x20Guards\x20tested\x20before\x20Machine\x20publish','recommendation':'Keep\x20Machine\x20unpublished\x20until\x20all\x20Guards\x20are\x20verified.','auto_fixable':![]},{'id':'R-M2-04','name':'retained_submission\x20index\x20mismatch','category':'guard_integration','severity':'high','description':'Forward\x27s\x20retained_submission\x20key\x20does\x20not\x20correspond\x20to\x20Guard\x20table\x20b_submission=true\x20entry.\x20Retained\x20data\x20fails\x20or\x20is\x20incorrect.','detection':'Cross-check\x20forward.retained_submission\x20against\x20Guard\x20table\x20entries','recommendation':'Align\x20retained_submission\x20key\x20with\x20Guard\x20table\x20b_submission=true\x20identifier.','auto_fixable':!![],'related_constraint':'MC-C-11'},{'id':'R-M2-05','name':'Guard\x20reentry\x20risk','category':'guard_integration','severity':'high','description':'Guard\x20lacks\x20anti-reentry\x20mechanism\x20(see\x20Guard\x20R-X1-14).\x20Risk\x20of\x20duplicate\x20execution\x20or\x20vote\x20manipulation.','detection':'For\x20each\x20Guard\x20scene,\x20verify\x20anti-reentry\x20Guard\x20is\x20configured\x20(see\x20Guard\x20semantic\x20layer\x20R-X1-14)','recommendation':'Add\x20anti-reentry\x20Guard\x20for\x20each\x20scenario\x20(see\x20Guard\x20semantic\x20layer\x20R-X1-14).','auto_fixable':![]},{'id':'R-M2-06','name':'Guard\x20scene\x20mismatch','category':'guard_integration','severity':'medium','description':'Forward\x27s\x20bound\x20Guard\x20scene\x20does\x20not\x20match\x20Forward\x27s\x20business\x20(e.g.,\x20Forward\x20uses\x20reward_guard\x20instead\x20of\x20machine_forward_guard).','detection':'Cross-check\x20Guard\x20scene\x20against\x20Forward\x20business\x20purpose','recommendation':'Use\x20the\x20correct\x20Guard\x20scene\x20(machine_forward_guard).','auto_fixable':![]},{'id':'R-M2-07','name':'Cross-Machine\x20Guard\x20dependency\x20cycle','category':'guard_integration','severity':'critical','description':'Machine\x20A\x20depends\x20on\x20Machine\x20B\x20(via\x20Guard),\x20B\x20depends\x20on\x20A.\x20Circular\x20dependency.','detection':'Identify\x20cross-Machine\x20Guard\x20references\x20and\x20detect\x20cycles','recommendation':'Ensure\x20cross-Machine\x20dependencies\x20are\x20unidirectional.','auto_fixable':![]},{'id':'R-M2-08','name':'Guard\x20references\x20unpublished\x20object','category':'guard_integration','severity':'high','description':'Guard\x20table\x20references\x20an\x20object\x20(e.g.,\x20Service)\x20that\x20is\x20not\x20yet\x20published.','detection':'Cross-check\x20Guard\x20table\x20object\x20references\x20against\x20published\x20objects\x20set','recommendation':'Use\x20P16\x20circular\x20reference\x20pattern\x20(name\x20instead\x20of\x20address),\x20or\x20publish\x20referenced\x20objects\x20first.','auto_fixable':![]},{'id':'R-M3-01','name':'Forward\x20without\x20permission','category':'permission','severity':'critical','description':'Forward\x20has\x20neither\x20namedOperator\x20nor\x20permissionIndex.\x20Cannot\x20be\x20executed.','detection':'Check\x20each\x20forward\x20has\x20at\x20least\x20one\x20of\x20namedOperator\x20or\x20permissionIndex','recommendation':'Set\x20namedOperator=\x27\x27\x20for\x20OrderHolder,\x20or\x20set\x20permissionIndex.','auto_fixable':![],'related_constraint':'MC-C-07'},{'id':'R-M3-02','name':'permissionIndex\x20out\x20of\x20bounds','category':'permission','severity':'critical','description':'Forward\x27s\x20permissionIndex\x20>=\x20Permission.indices.length.\x20Execution\x20will\x20fail.','detection':'Check\x20permission_index\x20<\x20Permission.indices.length','recommendation':'Use\x20a\x20valid\x20permission\x20index\x20or\x20extend\x20Permission.indices.','auto_fixable':![],'related_constraint':'MC-C-08'},{'id':'R-M3-03','name':'Permission\x20rotation\x20failure','category':'permission','severity':'high','description':'Permission\x20object\x20updated,\x20indices\x20order\x20changed.\x20Original\x20permissionIndex\x20now\x20points\x20to\x20wrong\x20permission.','detection':'Detect\x20Permission\x20object\x20update\x20that\x20reorders\x20indices','recommendation':'Use\x20custom\x20Permission;\x20document\x20index\x20meanings;\x20avoid\x20frequent\x20Permission\x20updates.','auto_fixable':![]},{'id':'R-M3-04','name':'OrderHolder\x20misuse','category':'permission','severity':'medium','description':'namedOperator=\x27\x27\x20used\x20in\x20non-customer-operation\x20scenarios.\x20Non-intended\x20personnel\x20gain\x20operation\x20permission.','detection':'Find\x20Forwards\x20with\x20namedOperator=\x27\x27\x20on\x20non-customer-operation\x20nodes','recommendation':'Clarify\x20\x27\x27=OrderHolder\x20(customer),\x20not\x20\x27anyone\x27.\x20Use\x20namedOperator\x20for\x20specific\x20roles.','auto_fixable':![]},{'id':'R-M3-05','name':'NamedOperator\x20not\x20assigned\x20at\x20Progress\x20creation','category':'permission','severity':'high','description':'Forward\x20expects\x20namedOperator\x20role\x20but\x20Progress\x20doesn\x27t\x20have\x20it\x20assigned.\x20'+'Note:\x20MCP\x20API\x20layer\x20supports\x20progress_new.progress_namedOperator\x20(SDK\x20translates\x20to\x20namedOperator_add),\x20'+'but\x20Move\x20layer\x20progress::new\x20does\x20NOT\x20accept\x20it\x20(see\x2006\x20§14.5).','detection':'Verify\x20progress_namedOperator\x20is\x20provided\x20in\x20Progress\x20creation','recommendation':'Pass\x20progress_namedOperator\x20in\x20progress_new,\x20or\x20call\x20namedOperator_add\x20separately.','auto_fixable':![]},{'id':'R-M3-06','name':'Permission\x20game\x20imbalance','category':'permission','severity':'medium','description':'One\x20party\x20has\x20excessive\x20permission,\x20can\x20unilaterally\x20advance\x20workflow.\x20Game\x20theory\x20imbalance.','detection':'Analyze\x20permission\x20distribution\x20across\x20parties','recommendation':'Use\x20dual-signature\x20(threshold=2)\x20or\x20multi-signature\x20mechanism\x20to\x20balance\x20power.','auto_fixable':![]},{'id':'R-M3-07','name':'Permission\x20combination\x20OR\x20semantic\x20misuse','category':'permission','severity':'medium','description':'Both\x20namedOperator\x20and\x20permissionIndex\x20set,\x20but\x20OR\x20semantic\x20not\x20understood.\x20More\x20people\x20than\x20expected\x20can\x20execute\x20Forward.','detection':'Find\x20Forwards\x20with\x20both\x20namedOperator\x20and\x20permissionIndex\x20set','recommendation':'Clarify\x20that\x20when\x20both\x20permissions\x20are\x20non-null,\x20it\x20is\x20OR\x20relation\x20(either\x20can\x20execute).','auto_fixable':![]},{'id':'R-M3-08','name':'permissionIndex\x20below\x20USER_DEFINED_PERM_INDEX_START\x20(1000)','category':'permission','severity':'critical','description':'Forward\x27s\x20permissionIndex\x20<\x201000.\x20On-chain\x20constant\x20USER_DEFINED_PERM_INDEX_START\x20=\x201000\x20'+'in\x20permission.move\x20reserves\x20indexes\x200-999\x20for\x20built-in\x20permissions.\x20Using\x20index\x20<\x201000\x20'+'causes\x20confusion\x20with\x20built-in\x20permissions\x20and\x20is\x20a\x20hard\x20on-chain\x20constraint\x20(see\x20doc\x2006\x20§4.4).','detection':'Check\x20each\x20forward\x20with\x20permission_index\x20<\x201000','recommendation':'Use\x20permission_index\x20>=\x201000\x20(e.g.,\x201000,\x201001,\x201002,\x20...).\x20Reserve\x200-999\x20for\x20built-in\x20permissions.','auto_fixable':![],'related_constraint':'MC-C-08'},{'id':'R-M4-01','name':'No\x20backup\x20before\x20publish','category':'immutability','severity':'high','description':'machineNode2file\x20export\x20not\x20created\x20before\x20publish.\x20Cannot\x20restore\x20if\x20publish\x20fails.','detection':'Check\x20backup_created\x20flag','recommendation':'Run\x20machineNode2file\x20before\x20publish\x20to\x20create\x20backup.','auto_fixable':!![],'related_constraint':'MC-P-02'},{'id':'R-M4-02','name':'No\x20testnet\x20verification\x20before\x20mainnet','category':'immutability','severity':'medium','description':'Directly\x20publishing\x20to\x20mainnet\x20without\x20testnet\x20verification.\x20Potential\x20bugs\x20may\x20cause\x20fund\x20loss.','detection':'Check\x20network\x20===\x20\x27mainnet\x27\x20&&\x20!testnet_test_passed','recommendation':'Test\x20on\x20testnet\x20first.\x20Verify\x20Progress\x20runs\x20end-to-end.','auto_fixable':![],'related_constraint':'MC-P-03'},{'id':'R-M4-03','name':'Guards\x20not\x20all\x20created\x20before\x20publish','category':'immutability','severity':'critical','description':'Some\x20Forward.guard\x20is\x20still\x20null,\x20but\x20design\x20requires\x20Guard.\x20Cannot\x20add\x20Guard\x20after\x20publish\x20(immutability\x20deadlock).','detection':'Check\x20if\x20all\x20required\x20Guards\x20are\x20created\x20and\x20bound','recommendation':'Create\x20and\x20bind\x20all\x20Guards\x20before\x20publishing\x20Machine.','auto_fixable':![]},{'id':'R-M4-04','name':'Publish\x20order\x20incorrect','category':'immutability','severity':'critical','description':'Attempting\x20to\x20publish\x20Machine\x20before\x20creating\x20Guards.\x20Guards\x20cannot\x20bind\x20to\x20already-published\x20Machine.','detection':'Verify\x20dependency\x20order:\x20Permission\x20→\x20Machine(unpublished)\x20→\x20Guard\x20→\x20bind\x20→\x20publish','recommendation':'Follow\x20dependency\x20order:\x20Permission\x20→\x20Machine(unpublished)\x20→\x20Guard\x20→\x20bind\x20→\x20publish.','auto_fixable':![]},{'id':'R-M4-05','name':'Allocation\x20not\x20configured','category':'immutability','severity':'medium','description':'Terminal\x20node\x20not\x20mapped\x20to\x20Allocator.\x20Funds\x20cannot\x20be\x20distributed\x20after\x20workflow\x20completes.','detection':'Check\x20if\x20terminal\x20nodes\x20have\x20Allocator\x20mapping','recommendation':'Configure\x20Allocator\x20for\x20each\x20terminal\x20node.','auto_fixable':![]},{'id':'R-M4-06','name':'clear\x20operation\x20without\x20backup','category':'immutability','severity':'high','description':'Executing\x20node\x20clear\x20before\x20exporting\x20backup.\x20All\x20node\x20data\x20lost,\x20cannot\x20recover.','detection':'Check\x20if\x20machineNode2file\x20backup\x20created\x20before\x20clear\x20operation','recommendation':'Run\x20machineNode2file\x20backup\x20before\x20any\x20clear\x20operation.','auto_fixable':!![]},{'id':'R-M5-01','name':'Service\x20not\x20created','category':'environment','severity':'high','description':'Machine\x20design\x20complete\x20but\x20Service\x20not\x20created.\x20Machine\x20cannot\x20bind\x20to\x20Service.','detection':'Check\x20if\x20Service\x20object\x20is\x20in\x20published_services\x20set','recommendation':'Create\x20Service\x20first,\x20then\x20design/publish\x20Machine.','auto_fixable':![]},{'id':'R-M5-02','name':'Permission\x20object\x20mismatch','category':'environment','severity':'high','description':'Machine\x27s\x20Permission\x20differs\x20from\x20Service\x27s\x20Permission.\x20Permission\x20organization\x20inconsistent,\x20may\x20cause\x20operation\x20failure.','detection':'Cross-check\x20Machine\x27s\x20Permission\x20against\x20Service\x27s\x20Permission','recommendation':'Use\x20the\x20same\x20Permission\x20for\x20Machine\x20and\x20Service\x20(or\x20explicitly\x20document\x20different\x20organizations).','auto_fixable':![]},{'id':'R-M5-03','name':'Allocation\x20configuration\x20incomplete','category':'environment','severity':'high','description':'Service\x27s\x20order_allocators\x20not\x20configured\x20or\x20misconfigured.\x20Terminal\x20node\x20funds\x20cannot\x20be\x20distributed.','detection':'Check\x20if\x20Service.order_allocators\x20is\x20configured\x20for\x20each\x20terminal\x20node','recommendation':'Configure\x20Service.order_allocators,\x20one\x20Allocator\x20per\x20terminal\x20node.','auto_fixable':![]},{'id':'R-M5-04','name':'Reward\x20object\x20not\x20created','category':'environment','severity':'medium','description':'Reward\x20incentive\x20scenario\x20referenced\x20but\x20Reward\x20object\x20not\x20created.','detection':'Check\x20if\x20Reward\x20object\x20is\x20in\x20published_rewards\x20set','recommendation':'Create\x20Reward\x20object\x20first,\x20then\x20design\x20Guard.','auto_fixable':![]},{'id':'R-M5-05','name':'Arbitration\x20object\x20not\x20created','category':'environment','severity':'medium','description':'Arbitration\x20scenario\x20referenced\x20but\x20Arbitration\x20object\x20not\x20created.','detection':'Check\x20if\x20Arbitration\x20object\x20is\x20in\x20published_arbitrations\x20set','recommendation':'Create\x20Arbitration\x20object\x20first.','auto_fixable':![]},{'id':'R-M5-06','name':'Cross-Machine\x20dependency\x20not\x20published','category':'environment','severity':'critical','description':'Machine\x20A\x20depends\x20on\x20Machine\x20B,\x20but\x20B\x20is\x20not\x20published.\x20Guard\x20query\x20for\x20Machine\x20B\x27s\x20Progress\x20will\x20fail.\x20'+'Dependency\x20verification:\x20indirect\x20via\x20progress::new\x20->\x20assert_published\x20(see\x2006\x20§14.6).','detection':'Check\x20machine_ref\x20against\x20published_machines\x20set','recommendation':'Ensure\x20upstream\x20Machine\x20is\x20published\x20first.','auto_fixable':![]},{'id':'R-M5-07','name':'Repository\x20not\x20created','category':'environment','severity':'medium','description':'Guard\x20references\x20Repository\x20but\x20not\x20created.\x20Guard\x20query\x20will\x20fail.','detection':'Check\x20repository_ref\x20against\x20published\x20repositories\x20set','recommendation':'Create\x20and\x20publish\x20Repository\x20first.\x20Note:\x20consensus_repositories\x20is\x20declarative-only\x20(see\x2006\x20§14.4).','auto_fixable':![]},{'id':'R-M5-08','name':'Object\x20dependency\x20table\x20incomplete','category':'environment','severity':'low','description':'Project\x20object\x20dependency\x20table\x20missing\x20some\x20objects.\x20Design\x20decisions\x20based\x20on\x20incomplete\x20information.','detection':'Scan\x20project\x20environment\x20for\x20missing\x20object\x20references','recommendation':'Use\x20workflow-guidance.ts\x20to\x20scan\x20complete\x20project\x20environment.','auto_fixable':![]}];export function assessMachineRisks(a,b){const c=[];c['push'](...checkStructuralRisks(a)),c['push'](...checkGuardIntegrationRisks(a,b)),c['push'](...checkPermissionRisks(a)),c['push'](...checkImmutabilityRisks(a,b)),c['push'](...checkEnvironmentRisks(a,b));const d={'critical':c['filter'](g=>g['severity']==='critical')['length'],'high':c['filter'](g=>g['severity']==='high')['length'],'medium':c['filter'](g=>g['severity']==='medium')['length'],'low':c['filter'](g=>g['severity']==='low')['length']};let e='low';if(d['critical']>0x0)e='critical';else{if(d['high']>0x0)e='high';else{if(d['medium']>0x0)e='medium';else{if(d['low']>0x0)e='low';}}}let f;if(d['critical']>0x0)f='do_not_publish';else d['high']>0x2?f='fix_first':f='publish';return{'overall_level':e,'detected_risks':c,'summary':d,'recommendation':f};}function checkStructuralRisks(a){const b=[],c=a['pairs']['some'](m=>m['prev_node']==='');!c&&b['push'](makeRisk('R-M1-01','No\x20Pair\x20with\x20prev_node=\x27\x27\x20found.\x20Workflow\x20cannot\x20start.'));const d=new Set(a['pairs']['map'](m=>m['prev_node'])['filter'](m=>m!=='')),e=new Set(a['nodes']['map'](m=>m['name'])),f=[...e]['filter'](m=>!d['has'](m));f['length']===0x0&&b['push'](makeRisk('R-M1-02','No\x20terminal\x20node\x20found.\x20Workflow\x20never\x20completes.'));const g=new Set(a['pairs']['filter'](m=>m['prev_node']==='')['map'](m=>m['next_node'])),h=new Set(a['pairs']['map'](m=>m['prev_node'])['filter'](m=>m!==''));for(const m of a['nodes']){if(!g['has'](m['name'])&&!h['has'](m['name'])){const n=a['pairs']['some'](o=>o['next_node']===m['name']);!n&&b['push'](makeRisk('R-M1-04','Node\x20\x22'+m['name']+'\x22\x20is\x20orphaned\x20(no\x20incoming\x20Pair).'));}}a['nodes']['length']>MAX_NODE_COUNT&&b['push'](makeRisk('R-M1-07','Node\x20count\x20'+a['nodes']['length']+'\x20exceeds\x20MAX_NODE_COUNT\x20('+MAX_NODE_COUNT+').'));const i=new Map();for(const o of a['pairs']){i['set'](o['next_node'],(i['get'](o['next_node'])??0x0)+0x1);}for(const [q,r]of i){r>0x28&&b['push'](makeRisk('R-M1-08','Node\x20\x22'+q+'\x22\x20has\x20'+r+'\x20Pairs,\x20exceeds\x20MAX_NODE_PAIR_COUNT\x20(40).'));}for(const s of a['pairs']){s['forwards']['length']>0x14&&b['push'](makeRisk('R-M1-09','Pair\x20('+s['prev_node']+'\x20->\x20'+s['next_node']+')\x20has\x20'+s['forwards']['length']+'\x20Forwards,\x20exceeds\x20MAX_FORWARD_COUNT\x20(20).'));}const j=a['nodes']['map'](t=>t['name']),k=j['filter']((t,v)=>j['indexOf'](t)!==v);k['length']>0x0&&b['push'](makeRisk('R-M1-10','Duplicate\x20node\x20names:\x20'+[...new Set(k)]['join'](',\x20')));const l=findUnachievableThresholds(a['pairs']);for(const t of l){const v=t['threshold']>0x1&&t['distinct_forwards']<t['threshold'];b['push'](makeRisk(v?'R-M1-13':'R-M1-12','Pair\x20('+(t['prev_node']===''?'entry':t['prev_node'])+'\x20->\x20'+t['next_node']+'):\x20'+t['reason']));}return b;}function checkGuardIntegrationRisks(a,b){const c=[];for(const d of a['pairs']){for(const e of d['forwards']){e['guard']&&!b['published_guards']['has'](e['guard'])&&c['push'](makeRisk('R-M2-01','Forward\x20\x22'+e['name']+'\x22\x20references\x20Guard\x20\x22'+e['guard']+'\x22\x20not\x20in\x20published_guards.')),e['retained_submission']&&!e['guard']&&c['push'](makeRisk('R-M2-04','Forward\x20\x22'+e['name']+'\x22\x20has\x20retained_submission\x20but\x20no\x20Guard.\x20retained_submission\x20requires\x20a\x20Guard.'));}}return c;}function checkPermissionRisks(a){const b=[];for(const c of a['pairs']){for(const d of c['forwards']){const e=d['named_operator']!==undefined&&d['named_operator']!==null,f=d['permission_index']!==undefined&&d['permission_index']!==null;!e&&!f&&b['push'](makeRisk('R-M3-01','Forward\x20\x22'+d['name']+'\x22\x20in\x20Pair\x20('+c['prev_node']+'\x20->\x20'+c['next_node']+')\x20has\x20no\x20permission.'));}}for(const g of a['pairs']){for(const h of g['forwards']){const i=h['named_operator']!==undefined&&h['named_operator']!==null,j=h['permission_index']!==undefined&&h['permission_index']!==null;i&&j&&b['push'](makeRisk('R-M3-07','Forward\x20\x22'+h['name']+'\x22\x20in\x20Pair\x20('+g['prev_node']+'\x20->\x20'+g['next_node']+')\x20has\x20both\x20namedOperator\x20and\x20permissionIndex\x20(OR\x20semantic).'));}}for(const k of a['pairs']){for(const l of k['forwards']){l['permission_index']!==undefined&&l['permission_index']!==null&&l['permission_index']<USER_DEFINED_PERM_INDEX_START&&b['push'](makeRisk('R-M3-08','Forward\x20\x22'+l['name']+'\x22\x20in\x20Pair\x20('+k['prev_node']+'\x20->\x20'+k['next_node']+')\x20'+('has\x20permission_index='+l['permission_index']+'\x20<\x20'+USER_DEFINED_PERM_INDEX_START+'.\x20')+'Indexes\x200-999\x20are\x20reserved\x20for\x20built-in\x20permissions.'));}}return b;}function checkImmutabilityRisks(a,b){const c=[];b['network']==='mainnet'&&!b['testnet_test_passed']&&c['push'](makeRisk('R-M4-02','Mainnet\x20publish\x20attempted\x20without\x20testnet\x20test\x20passing.'));const d=new Set();for(const f of a['pairs']){for(const g of f['forwards']){if(g['guard'])d['add'](g['guard']);}}const e=[...d]['filter'](h=>!b['published_guards']['has'](h));return e['length']>0x0&&c['push'](makeRisk('R-M4-03','Guards\x20not\x20all\x20created\x20before\x20publish.\x20Missing:\x20'+e['join'](',\x20'))),c;}function checkEnvironmentRisks(a,b){const c=[],d=new Set();for(const f of a['pairs']){for(const g of f['forwards']){if(g['guard'])d['add'](g['guard']);}}const e=[...d]['filter'](h=>!b['published_guards']['has'](h));return e['length']>0x0&&c['push'](makeRisk('R-M5-08','Object\x20dependency\x20table\x20incomplete.\x20Missing\x20Guards:\x20'+e['join'](',\x20'))),c;}function makeRisk(a,b){const c=MACHINE_RISK_RULES['find'](d=>d['id']===a);if(!c)return{'rule_id':a,'name':'Unknown','severity':'low','detail':b,'recommendation':'Investigate\x20manually.','auto_fixable':![]};return{'rule_id':c['id'],'name':c['name'],'severity':c['severity'],'detail':b,'recommendation':c['recommendation'],'auto_fixable':c['auto_fixable']};}export function getRiskRulesByCategory(a){return MACHINE_RISK_RULES['filter'](b=>b['category']===a);}export function getRiskRuleById(a){return MACHINE_RISK_RULES['find'](b=>b['id']===a);}export function getRiskRulesBySeverity(a){return MACHINE_RISK_RULES['filter'](b=>b['severity']===a);}export function getAutoFixableRules(){return MACHINE_RISK_RULES['filter'](a=>a['auto_fixable']);}export function getRiskSummary(a){const b=['Overall\x20Risk\x20Level:\x20'+a['overall_level']['toUpperCase'](),'Recommendation:\x20'+a['recommendation'],'','Summary:','\x20\x20Critical:\x20'+a['summary']['critical'],'\x20\x20High:\x20\x20\x20\x20\x20'+a['summary']['high'],'\x20\x20Medium:\x20\x20\x20'+a['summary']['medium'],'\x20\x20Low:\x20\x20\x20\x20\x20\x20'+a['summary']['low'],'','Detected\x20Risks:'];for(const c of a['detected_risks']){b['push']('\x20\x20['+c['severity']['toUpperCase']()+']\x20'+c['rule_id']+':\x20'+c['name']),b['push']('\x20\x20\x20\x20Detail:\x20'+c['detail']),b['push']('\x20\x20\x20\x20Fix:\x20'+c['recommendation']);}return b['join']('\x0a');}export const MACHINE_RISK_VERSION='1.0.0';export const MACHINE_RISK_RULES_COUNT=MACHINE_RISK_RULES['length'];
1
+ import{getJudgmentDoc,factoryRulePack}from'../config/judgment.js';import{evaluateRuleBook,interpolate}from'../config/rule-engine.js';import{MAX_NODE_COUNT,USER_DEFINED_PERM_INDEX_START}from'./onchain-constants.js';import{findUnachievableThresholds}from'./machine-topology.js';const AUTO_FIXABLE=new Set(['R-M2-04','R-M4-01','R-M4-06']),RELATED_CONSTRAINT={'R-M1-01':'MC-S-01','R-M1-02':'MC-S-02','R-M1-04':'MC-S-03','R-M1-05':'MC-S-04','R-M1-06':'MC-S-05','R-M1-07':'MC-C-01','R-M1-08':'MC-C-02','R-M1-09':'MC-C-03','R-M1-10':'MC-C-04','R-M1-12':'MC-S-04','R-M1-13':'MC-S-04','R-M2-01':'MC-C-09','R-M2-04':'MC-C-11','R-M3-01':'MC-C-07','R-M3-02':'MC-C-08','R-M3-08':'MC-C-08','R-M4-01':'MC-P-02','R-M4-02':'MC-P-03'};export function machineRiskFacts(a,b){const c=a['pairs'],d=c['some'](Q=>Q['prev_node']===''),e=new Set(c['map'](Q=>Q['prev_node'])['filter'](Q=>Q!=='')),f=new Set(a['nodes']['map'](Q=>Q['name'])),g=[...f]['some'](Q=>e['has'](Q)),h=new Set(c['filter'](Q=>Q['prev_node']==='')['map'](Q=>Q['next_node'])),i=new Set(c['map'](Q=>Q['prev_node'])['filter'](Q=>Q!==''));let j;for(const Q of a['nodes']){if(!h['has'](Q['name'])&&!i['has'](Q['name'])){const R=c['some'](S=>S['next_node']===Q['name']);if(!R){j=Q['name'];break;}}}const k=a['nodes']['length'];let l,m;const n=new Map();for(const S of c){n['set'](S['next_node'],(n['get'](S['next_node'])??0x0)+0x1);}for(const [T,U]of n){if(U>0x28){l=T,m=U;break;}}let o,q,r;for(const V of c){if(V['forwards']['length']>0x14){o=V['prev_node'],q=V['next_node'],r=V['forwards']['length'];break;}}const s=a['nodes']['map'](W=>W['name']),t=s['filter']((W,X)=>s['indexOf'](W)!==X),u=[...new Set(t)]['join'](',\x20'),v=findUnachievableThresholds(c),w=v[0x0],x=w!=null&&w['threshold']>0x1&&w['distinct_forwards']<w['threshold'],y=w==null?'':'Pair\x20('+(w['prev_node']===''?'entry':w['prev_node'])+'\x20->\x20'+w['next_node']+'):\x20'+w['reason'],z=W=>b['published_guards']?b['published_guards']['has'](W):![];let A,B,C,D,E,F,G,H,I,J,K,L,M;const N=new Set();for(const W of c){for(const X of W['forwards']){if(X['guard'])N['add'](X['guard']);A===undefined&&X['guard']&&!z(X['guard'])&&(A=X['name'],B=X['guard']);C===undefined&&X['retained_submission']&&!X['guard']&&(C=X['name']);const Y=X['named_operator']!==undefined&&X['named_operator']!==null,Z=X['permission_index']!==undefined&&X['permission_index']!==null;D===undefined&&!Y&&!Z&&(D=X['name'],E=W['prev_node'],F=W['next_node']),G===undefined&&Y&&Z&&(G=X['name'],H=W['prev_node'],I=W['next_node']),J===undefined&&X['permission_index']!==undefined&&X['permission_index']!==null&&X['permission_index']<USER_DEFINED_PERM_INDEX_START&&(J=X['name'],K=W['prev_node'],L=W['next_node'],M=X['permission_index']);}}const O=[...N]['filter'](a0=>!z(a0)),P=O['join'](',\x20');return{'has_entry':d,'has_terminal':g,...j===undefined?{}:{'first_orphaned_node_name':j},'node_count':k,'node_count_over_limit':k>MAX_NODE_COUNT,'max_node_count':MAX_NODE_COUNT,...l===undefined?{}:{'first_overpair_node_name':l,'first_overpair_count':m},...r===undefined?{}:{'first_overforward_prev':o,'first_overforward_next':q,'first_overforward_count':r},'duplicate_names_display':u,'unachievable_present':v['length']>0x0,'first_unachievable_is_multi':x,...w==null?{}:{'first_unachievable_detail':y},...A===undefined?{}:{'first_missing_guard_forward_name':A,'first_missing_guard_guard':B},...C===undefined?{}:{'first_retained_no_guard_forward_name':C},...D===undefined?{}:{'first_noperm_forward_name':D,'first_noperm_prev':E,'first_noperm_next':F},...G===undefined?{}:{'first_both_forward_name':G,'first_both_prev':H,'first_both_next':I},...J===undefined?{}:{'first_lowperm_forward_name':J,'first_lowperm_prev':K,'first_lowperm_next':L,'first_lowperm_index':M},'min_perm_index':USER_DEFINED_PERM_INDEX_START,'mainnet_without_testnet':b['network']==='mainnet'&&!b['testnet_test_passed'],'missing_guards_display':P,'always_true':!![]};}function machineRuleBook(){const a=getJudgmentDoc()['rules']['domains']['machine'];if(!a)throw new Error('factory\x20rule\x20pack\x20\x27machine\x27\x20missing\x20—\x20broken\x20installation');return a['rules'];}function findingToMachineRisk(a){return{'rule_id':a['rule_id'],'name':a['title'],'severity':a['level'],'detail':a['evidence']??'','recommendation':a['mitigation']??'','auto_fixable':AUTO_FIXABLE['has'](a['rule_id']),...a['exposure']!=null?{'exposure':a['exposure']}:{}};}export const MACHINE_RISK_VERSION='1.0.0';export const MACHINE_RISK_RULES=((()=>{const a=factoryRulePack('machine');if(!a)return[];const b=machineRiskFacts({'nodes':[],'pairs':[]},{'network':'testnet','testnet_test_passed':!![],'published_services':new Set(),'published_guards':new Set(),'published_permissions':new Set(),'published_machines':new Set(),'published_arbitrations':new Set(),'published_rewards':new Set(),'published_allocators':new Set(),'published_repositories':new Set()});return a['rules']['map'](d=>{const e=d['cases'][0x0],f=RELATED_CONSTRAINT[d['rule_id']];return{'id':d['rule_id'],'name':e['title'],'category':d['dimension']??'structural','severity':e['level'],'description':interpolate(e['description'],b),'detection':d['trigger']===undefined?'':interpolate(d['trigger'],b),'recommendation':e['mitigation']??'','auto_fixable':AUTO_FIXABLE['has'](d['rule_id']),...f===undefined?{}:{'related_constraint':f}};});})());export function assessMachineRisks(a,b){const {findings:c}=evaluateRuleBook(machineRuleBook(),machineRiskFacts(a,b)),d=c['map'](findingToMachineRisk),e={'critical':d['filter'](h=>h['severity']==='critical')['length'],'high':d['filter'](h=>h['severity']==='high')['length'],'medium':d['filter'](h=>h['severity']==='medium')['length'],'low':d['filter'](h=>h['severity']==='low')['length']};let f='low';if(e['critical']>0x0)f='critical';else{if(e['high']>0x0)f='high';else{if(e['medium']>0x0)f='medium';else{if(e['low']>0x0)f='low';}}}let g;if(e['critical']>0x0)g='do_not_publish';else e['high']>0x2?g='fix_first':g='publish';return{'overall_level':f,'detected_risks':d,'summary':e,'recommendation':g};}