naive-framework 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/AGENTS.md +61 -0
  2. package/LICENSE +21 -0
  3. package/README.md +37 -2
  4. package/docs/decisions/decisions.json +861 -0
  5. package/docs/ontology.json +796 -0
  6. package/docs/ontology.md +163 -0
  7. package/docs/reference/ROUTES.md +125 -0
  8. package/evidence/benchmarks/2026-10-27-golden.jev.after-catalog-fix.json +558 -0
  9. package/evidence/benchmarks/2026-10-27-golden.jev.json +501 -0
  10. package/evidence/benchmarks/2026-10-27-golden.reasoning-answers.json +177 -0
  11. package/evidence/benchmarks/JEV_VS_REASONING_MODEL_2026-10-27.md +68 -0
  12. package/evidence/capabilities/agent-capabilities.json +86 -0
  13. package/evidence/design-documents.registry.json +2896 -0
  14. package/evidence/evals/evals.json +25 -0
  15. package/evidence/evals/harness-evals.json +140 -0
  16. package/evidence/layer.json +51 -0
  17. package/evidence/skills/agent-capabilities/SKILL.md +35 -0
  18. package/evidence/skills/design-coverage/SKILL.md +57 -0
  19. package/evidence/skills/design-coverage/check.mjs +192 -0
  20. package/evidence/skills/design-coverage/scan.mjs +45 -0
  21. package/evidence/skills/fidelity-ladder-audit/SKILL.md +121 -0
  22. package/evidence/skills/fidelity-ladder-audit/ladder-census.mjs +180 -0
  23. package/evidence/skills/findability/SKILL.md +32 -0
  24. package/evidence/skills/findability/inventory.rb +41 -0
  25. package/evidence/skills/foreshadowing-audit/SKILL.md +183 -0
  26. package/evidence/skills/metrics-review/SKILL.md +177 -0
  27. package/evidence/tooling/integrations.json +153 -0
  28. package/governance/layer.json +101 -0
  29. package/governance/references/references.json +26 -0
  30. package/governance/skills/board-design/SKILL.md +68 -0
  31. package/governance/skills/brand-pillar/SKILL.md +90 -0
  32. package/governance/skills/business-pillar/SKILL.md +96 -0
  33. package/governance/skills/chief-of-staff/SKILL.md +45 -0
  34. package/governance/skills/cofounder-structure/SKILL.md +64 -0
  35. package/governance/skills/cross-pillar-tradeoff/SKILL.md +168 -0
  36. package/governance/skills/equity-and-share-classes/SKILL.md +68 -0
  37. package/governance/skills/executive-roles/SKILL.md +95 -0
  38. package/governance/skills/exit-planning/SKILL.md +66 -0
  39. package/governance/skills/financing-and-investor-rights/SKILL.md +73 -0
  40. package/governance/skills/office-hours-mode/SKILL.md +113 -0
  41. package/governance/skills/product-pillar/SKILL.md +81 -0
  42. package/governance/skills/publication-policy/SKILL.md +63 -0
  43. package/governance/skills/role-and-candidate-authoring/SKILL.md +198 -0
  44. package/governance/skills/stakeholder-update/SKILL.md +177 -0
  45. package/governance/tooling/integrations.json +37 -0
  46. package/governance/venture-template/AGENT_ROLES_AND_DECISION_RIGHTS.md +58 -0
  47. package/governance/venture-template/COMPANY_VAULT_DEFINITION_2026-10-25.md +204 -0
  48. package/governance/venture-template/README.md +74 -0
  49. package/governance/venture-template/decision-rights.json +186 -0
  50. package/governance/venture-template/index.md +151 -0
  51. package/governance/venture-template/pillars/brand.md +209 -0
  52. package/governance/venture-template/pillars/business.md +255 -0
  53. package/governance/venture-template/pillars/product.md +254 -0
  54. package/governance/venture-template/render-roles.py +11 -0
  55. package/governance/venture-template/roles/README.md +85 -0
  56. package/governance/venture-template/roles/agent-roles.json +202 -0
  57. package/governance/venture-template/roles/ceo.md +163 -0
  58. package/governance/venture-template/roles/chief-of-staff.md +153 -0
  59. package/governance/venture-template/roles/cmo.md +165 -0
  60. package/governance/venture-template/roles/coo.md +189 -0
  61. package/governance/venture-template/roles/cto.md +158 -0
  62. package/governance/venture-template/roles/department-head.md +47 -0
  63. package/governance/venture-template/roles/forward-deployed-engineer.md +51 -0
  64. package/governance/venture-template/roles/founder.md +173 -0
  65. package/governance/venture-template/roles/hr-manager.md +49 -0
  66. package/governance/venture-template/roles/talent-acquisition-manager.md +50 -0
  67. package/interface/api/server.mjs +69 -0
  68. package/interface/cli/find-venture.mjs +15 -0
  69. package/interface/cli/mentura.mjs +271 -0
  70. package/interface/cli/naive.mjs +169 -0
  71. package/interface/demo/board.mjs +581 -0
  72. package/interface/demo/decision-harness.mjs +91 -0
  73. package/interface/demo/live-agent.mjs +47 -0
  74. package/interface/harness/evals.mjs +90 -0
  75. package/interface/harness/examples/pt-no-shows.dump.md +19 -0
  76. package/interface/harness/run.mjs +313 -0
  77. package/interface/harness/site.mjs +59 -0
  78. package/interface/layer.json +31 -0
  79. package/interface/mcp/server.mjs +122 -0
  80. package/interface/operator-console/README.md +58 -0
  81. package/interface/provenance.mjs +42 -0
  82. package/interface/references/references.json +28 -0
  83. package/interface/route-aliases.json +32 -0
  84. package/interface/router.mjs +580 -0
  85. package/interface/skills/install-mentura/SKILL.md +88 -0
  86. package/interface/tooling/integrations.json +112 -0
  87. package/knowledge/connectors/README.md +54 -0
  88. package/knowledge/connectors/catalog.mjs +118 -0
  89. package/knowledge/connectors/contract.mjs +56 -0
  90. package/knowledge/connectors/eval.mjs +176 -0
  91. package/knowledge/connectors/filesystem.mjs +79 -0
  92. package/knowledge/connectors/index.mjs +102 -0
  93. package/knowledge/connectors/resolve.mjs +44 -0
  94. package/knowledge/connectors/suite.mjs +80 -0
  95. package/knowledge/layer.json +42 -0
  96. package/knowledge/skills/find-reference/SKILL.md +38 -0
  97. package/knowledge/skills/industry-awareness/SKILL.md +277 -0
  98. package/knowledge/tooling/integrations.json +127 -0
  99. package/knowledge/tooling/questions.md +46 -0
  100. package/operations/FOUNDER_OPERATING_MODEL_CAMPAIGN_2026-10-14.md +16 -0
  101. package/operations/departments.json +162 -0
  102. package/operations/handoff-v2.md +93 -0
  103. package/operations/layer.json +60 -0
  104. package/operations/marketing/check-public.mjs +68 -0
  105. package/operations/marketing/site/README.md +86 -0
  106. package/operations/marketing/site/matrix.json +731 -0
  107. package/operations/marketing/site/plan.mjs +117 -0
  108. package/operations/marketing/site/presence.mjs +252 -0
  109. package/operations/references/references.json +45 -0
  110. package/operations/skills/recruiting/SKILL.md +32 -0
  111. package/operations/skills/team-design/SKILL.md +36 -0
  112. package/operations/skills/tool-selection/SKILL.md +46 -0
  113. package/operations/templates/recruiting-brief.md +35 -0
  114. package/operations/tooling/integrations.json +158 -0
  115. package/package.json +57 -4
  116. package/packages/catalog.json +272 -0
  117. package/packages/cofounder/package.json +42 -0
  118. package/packages/counsel/package.json +47 -0
  119. package/packages/customers/package.json +21 -0
  120. package/packages/decisions/package.json +17 -0
  121. package/packages/engineering/package.json +41 -0
  122. package/packages/evidence/package.json +17 -0
  123. package/packages/finance/package.json +48 -0
  124. package/packages/foundation/package.json +52 -0
  125. package/packages/investor/package.json +57 -0
  126. package/packages/investors/package.json +21 -0
  127. package/packages/legal/package.json +73 -0
  128. package/packages/marketing/package.json +57 -0
  129. package/packages/money/package.json +21 -0
  130. package/packages/operations/package.json +74 -0
  131. package/packages/partner/package.json +38 -0
  132. package/packages/people/package.json +64 -0
  133. package/packages/product/package.json +49 -0
  134. package/packages/raw/package.json +19 -0
  135. package/packages/relationships/package.json +52 -0
  136. package/packages/validation/package.json +99 -0
  137. package/platform/README.md +45 -0
  138. package/platform/connectors/eval.mjs +154 -0
  139. package/platform/connectors/fake-github.mjs +91 -0
  140. package/platform/connectors/github.mjs +105 -0
  141. package/platform/integrations/jev.mjs +30 -0
  142. package/platform/integrations/langsmith-docket.mjs +53 -0
  143. package/platform/integrations/langsmith-setup.mjs +115 -0
  144. package/platform/integrations/langsmith.mjs +47 -0
  145. package/platform/integrations/rho.mjs +145 -0
  146. package/platform/integrations/site.mjs +75 -0
  147. package/platform/kits/README.md +7 -0
  148. package/platform/mcp/research.mjs +64 -0
  149. package/purpose/checklists/vault-and-tooling-consultancy-setup.md +216 -0
  150. package/purpose/frameworks/business-discovery-framework-amendments-2026-05-20.md +181 -0
  151. package/purpose/frameworks/business-discovery-framework.html +938 -0
  152. package/purpose/frameworks/business-discovery-framework.md +326 -0
  153. package/purpose/frameworks/idea-map/README.md +74 -0
  154. package/purpose/frameworks/idea-map/conventions.json +146 -0
  155. package/purpose/frameworks/idea-map/graph.mjs +182 -0
  156. package/purpose/frameworks/idea-map/ideamap.mjs +179 -0
  157. package/purpose/frameworks/idea-map/route.mjs +140 -0
  158. package/purpose/frameworks/onboarding-handoff-framework.md +269 -0
  159. package/purpose/frameworks/post-discovery-deliverable-playbook.md +274 -0
  160. package/purpose/frameworks/product-anatomy/README.md +63 -0
  161. package/purpose/frameworks/product-anatomy/anatomy.mjs +195 -0
  162. package/purpose/frameworks/product-anatomy/examples/polity.answers.reasoned.json +11 -0
  163. package/purpose/frameworks/product-anatomy/examples/polity.json +89 -0
  164. package/purpose/frameworks/product-anatomy/phases.json +107 -0
  165. package/purpose/frameworks/product-anatomy/questions.json +74 -0
  166. package/purpose/kits/validation/README.md +14 -0
  167. package/purpose/kits/validation/references/references.json +122 -0
  168. package/purpose/kits/validation/skills/problem-validation/SKILL.md +43 -0
  169. package/purpose/kits/validation/skills/validation-score/SKILL.md +35 -0
  170. package/purpose/kits/validation/templates/go-to-market.md +19 -0
  171. package/purpose/kits/validation/templates/operations-readiness.md +20 -0
  172. package/purpose/kits/validation/templates/pricing.md +22 -0
  173. package/purpose/kits/validation/templates/problem-interview.md +36 -0
  174. package/purpose/kits/validation/templates/problem.md +45 -0
  175. package/purpose/kits/validation/templates/product-market-fit.md +23 -0
  176. package/purpose/kits/validation/templates/solution.md +18 -0
  177. package/purpose/kits/validation/templates/team.md +19 -0
  178. package/purpose/kits/validation/weights.json +22 -0
  179. package/purpose/layer.json +53 -0
  180. package/purpose/references/references.json +324 -0
  181. package/purpose/skills/ambition-tier/SKILL.md +205 -0
  182. package/purpose/skills/telos/SKILL.md +52 -0
  183. package/purpose/strategic-foundation.json +133 -0
  184. package/purpose/templates/telos-based-smart.md +39 -0
  185. package/purpose/tooling/integrations.json +48 -0
  186. package/schema/README.md +61 -0
  187. package/schema/VERSION +1 -0
  188. package/schema/account.schema.json +79 -0
  189. package/schema/add-department.mjs +41 -0
  190. package/schema/agent-capability.schema.json +94 -0
  191. package/schema/alignment.schema.json +61 -0
  192. package/schema/assess-problem.mjs +131 -0
  193. package/schema/bdd.mjs +56 -0
  194. package/schema/board.schema.json +101 -0
  195. package/schema/check-boundary.mjs +54 -0
  196. package/schema/check-data-model.mjs +170 -0
  197. package/schema/check-data-packages.mjs +83 -0
  198. package/schema/check-departments.mjs +45 -0
  199. package/schema/check-execution.mjs +85 -0
  200. package/schema/check-governance.mjs +98 -0
  201. package/schema/check-integrations.mjs +33 -0
  202. package/schema/check-nextjs-status.mjs +77 -0
  203. package/schema/check-nouns.mjs +49 -0
  204. package/schema/check-private.mjs +61 -0
  205. package/schema/check-provenance.mjs +55 -0
  206. package/schema/check-publication.mjs +96 -0
  207. package/schema/check-ready.mjs +89 -0
  208. package/schema/check-sources.mjs +66 -0
  209. package/schema/check-team.mjs +94 -0
  210. package/schema/check-telos.mjs +59 -0
  211. package/schema/check-validation.mjs +165 -0
  212. package/schema/check-ventures.mjs +81 -0
  213. package/schema/check-where-used.mjs +58 -0
  214. package/schema/data-master.schema.json +14 -0
  215. package/schema/data-model.json +1258 -0
  216. package/schema/data-model.schema.json +152 -0
  217. package/schema/decision-analytics.mjs +77 -0
  218. package/schema/decision-record.schema.json +290 -0
  219. package/schema/decision-rights.schema.json +34 -0
  220. package/schema/decision.schema.json +30 -0
  221. package/schema/decisions.mjs +321 -0
  222. package/schema/department-catalog.schema.json +55 -0
  223. package/schema/department.schema.json +15 -0
  224. package/schema/departments.mjs +32 -0
  225. package/schema/docket-eval.mjs +89 -0
  226. package/schema/docket.mjs +135 -0
  227. package/schema/eval-suite.schema.json +45 -0
  228. package/schema/evidence.schema.json +110 -0
  229. package/schema/examples/migrate/agent.mjs +12 -0
  230. package/schema/examples/workspace/ventures/studio/accounts/bakery/account.json +18 -0
  231. package/schema/examples/workspace/ventures/studio/evidence/.gitkeep +0 -0
  232. package/schema/examples/workspace/ventures/studio/governance/.gitkeep +0 -0
  233. package/schema/examples/workspace/ventures/studio/knowledge/.gitkeep +0 -0
  234. package/schema/examples/workspace/ventures/studio/operations/.gitkeep +0 -0
  235. package/schema/examples/workspace/ventures/studio/print/knowledge/.gitkeep +0 -0
  236. package/schema/examples/workspace/ventures/studio/print/purpose/.gitkeep +0 -0
  237. package/schema/examples/workspace/ventures/studio/print/venture.json +37 -0
  238. package/schema/examples/workspace/ventures/studio/products/brand-care.json +19 -0
  239. package/schema/examples/workspace/ventures/studio/products/brand-kit.json +23 -0
  240. package/schema/examples/workspace/ventures/studio/provenance.jsonl +3 -0
  241. package/schema/examples/workspace/ventures/studio/purpose/.gitkeep +0 -0
  242. package/schema/examples/workspace/ventures/studio/venture.json +43 -0
  243. package/schema/examples/workspace/ventures/tandem/accounts/.gitkeep +0 -0
  244. package/schema/examples/workspace/ventures/tandem/evidence/README.md +3 -0
  245. package/schema/examples/workspace/ventures/tandem/governance/README.md +3 -0
  246. package/schema/examples/workspace/ventures/tandem/governance/agreements/dee-fast.md +3 -0
  247. package/schema/examples/workspace/ventures/tandem/governance/board.json +51 -0
  248. package/schema/examples/workspace/ventures/tandem/governance/departments/finance/charter.md +5 -0
  249. package/schema/examples/workspace/ventures/tandem/governance/departments/finance/department.json +5 -0
  250. package/schema/examples/workspace/ventures/tandem/governance/departments/primary/marketing-and-sales/charter.md +5 -0
  251. package/schema/examples/workspace/ventures/tandem/governance/departments/primary/marketing-and-sales/department.json +5 -0
  252. package/schema/examples/workspace/ventures/tandem/governance/exit.json +33 -0
  253. package/schema/examples/workspace/ventures/tandem/governance/founder-agreement.json +24 -0
  254. package/schema/examples/workspace/ventures/tandem/governance/founder-agreement.md +3 -0
  255. package/schema/examples/workspace/ventures/tandem/governance/ownership.json +131 -0
  256. package/schema/examples/workspace/ventures/tandem/governance/publication-policy.json +171 -0
  257. package/schema/examples/workspace/ventures/tandem/knowledge/README.md +3 -0
  258. package/schema/examples/workspace/ventures/tandem/knowledge/research/friends-feedback-2026-08.md +3 -0
  259. package/schema/examples/workspace/ventures/tandem/knowledge/research/pilot-2026-10.md +3 -0
  260. package/schema/examples/workspace/ventures/tandem/knowledge/research/problem-interviews-2026-09.md +20 -0
  261. package/schema/examples/workspace/ventures/tandem/knowledge/sources.json +8 -0
  262. package/schema/examples/workspace/ventures/tandem/knowledge/where-used.json +13 -0
  263. package/schema/examples/workspace/ventures/tandem/operations/README.md +3 -0
  264. package/schema/examples/workspace/ventures/tandem/operations/departments/finance/README.md +5 -0
  265. package/schema/examples/workspace/ventures/tandem/operations/departments/finance/department.json +5 -0
  266. package/schema/examples/workspace/ventures/tandem/operations/departments/primary/marketing-and-sales/README.md +5 -0
  267. package/schema/examples/workspace/ventures/tandem/operations/departments/primary/marketing-and-sales/department.json +5 -0
  268. package/schema/examples/workspace/ventures/tandem/pillars/brand.md +5 -0
  269. package/schema/examples/workspace/ventures/tandem/pillars/business.md +5 -0
  270. package/schema/examples/workspace/ventures/tandem/pillars/product.md +5 -0
  271. package/schema/examples/workspace/ventures/tandem/products/.gitkeep +0 -0
  272. package/schema/examples/workspace/ventures/tandem/products/shop-app.json +22 -0
  273. package/schema/examples/workspace/ventures/tandem/profile.md +5 -0
  274. package/schema/examples/workspace/ventures/tandem/provenance.jsonl +13 -0
  275. package/schema/examples/workspace/ventures/tandem/purpose/README.md +3 -0
  276. package/schema/examples/workspace/ventures/tandem/purpose/telos.json +78 -0
  277. package/schema/examples/workspace/ventures/tandem/purpose/validation/go-to-market.json +35 -0
  278. package/schema/examples/workspace/ventures/tandem/purpose/validation/pricing.json +37 -0
  279. package/schema/examples/workspace/ventures/tandem/purpose/validation/problem.json +74 -0
  280. package/schema/examples/workspace/ventures/tandem/purpose/validation/product-market-fit.json +66 -0
  281. package/schema/examples/workspace/ventures/tandem/purpose/validation/solution.json +33 -0
  282. package/schema/examples/workspace/ventures/tandem/purpose/validation/team.json +52 -0
  283. package/schema/examples/workspace/ventures/tandem/venture.json +79 -0
  284. package/schema/examples/workspace/ventures/woodworking/knowledge/.gitkeep +0 -0
  285. package/schema/examples/workspace/ventures/woodworking/venture.json +21 -0
  286. package/schema/examples/workspace/workspace.json +8 -0
  287. package/schema/exit.schema.json +74 -0
  288. package/schema/foundation.mjs +118 -0
  289. package/schema/founder-agreement.schema.json +83 -0
  290. package/schema/gate.mjs +39 -0
  291. package/schema/handoff.schema.json +239 -0
  292. package/schema/icp.schema.json +136 -0
  293. package/schema/idea-graph.schema.json +61 -0
  294. package/schema/init-venture.mjs +98 -0
  295. package/schema/integration.schema.json +143 -0
  296. package/schema/knowledge-sources.schema.json +130 -0
  297. package/schema/layer.json +46 -0
  298. package/schema/layer.schema.json +119 -0
  299. package/schema/load-packages.mjs +26 -0
  300. package/schema/marketing-sitemap.schema.json +232 -0
  301. package/schema/migrate-venture.mjs +192 -0
  302. package/schema/need-now.json +601 -0
  303. package/schema/need-now.mjs +107 -0
  304. package/schema/nextjs-status.schema.json +29 -0
  305. package/schema/ownership.schema.json +282 -0
  306. package/schema/packages.json +4 -0
  307. package/schema/packages.mjs +247 -0
  308. package/schema/payouts.mjs +91 -0
  309. package/schema/port-venture.mjs +161 -0
  310. package/schema/product.schema.json +223 -0
  311. package/schema/provenance-entry.schema.json +154 -0
  312. package/schema/publication-policy.schema.json +293 -0
  313. package/schema/raw-source.schema.json +15 -0
  314. package/schema/reference.schema.json +115 -0
  315. package/schema/route-aliases.schema.json +25 -0
  316. package/schema/run-handoff.mjs +51 -0
  317. package/schema/scaffold/defaults.json +54 -0
  318. package/schema/site-presence.schema.json +337 -0
  319. package/schema/strategic-foundation.schema.json +74 -0
  320. package/schema/stream.schema.json +14 -0
  321. package/schema/team-plan.schema.json +157 -0
  322. package/schema/telos.schema.json +197 -0
  323. package/schema/time-to-ready.mjs +93 -0
  324. package/schema/upgrade-venture.mjs +129 -0
  325. package/schema/use-model.mjs +10 -0
  326. package/schema/validate.py +49 -0
  327. package/schema/validation-evidence.schema.json +123 -0
  328. package/schema/validation-go-to-market.schema.json +110 -0
  329. package/schema/validation-operations-readiness.schema.json +91 -0
  330. package/schema/validation-pricing.schema.json +114 -0
  331. package/schema/validation-problem.schema.json +118 -0
  332. package/schema/validation-product-market-fit.schema.json +135 -0
  333. package/schema/validation-solution.schema.json +79 -0
  334. package/schema/validation-team.schema.json +116 -0
  335. package/schema/venture.schema.json +407 -0
  336. package/schema/vocab/business-models.json +298 -0
  337. package/schema/where-used.schema.json +56 -0
  338. package/schema/workspace.schema.json +38 -0
@@ -0,0 +1,239 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "handoff.schema.json",
4
+ "title": "Handoff",
5
+ "description": "One unit of delegated work, stored at <venture>/operations/handoffs/<id>.json (EE-017). It is the machine half of handoff contract v2 (operations/handoff-v2.md): who holds it, which decision rights it carries, how it is checked, and where it stands. The brief (outcome, work, context) is prose in a Markdown file beside it. schema/check-ready.mjs checks it is ready before work starts; schema/check-execution.mjs checks it against the venture's decision rights and evidence.",
6
+ "type": "object",
7
+ "required": [
8
+ "id",
9
+ "title",
10
+ "venture",
11
+ "role",
12
+ "brief",
13
+ "decision_classes",
14
+ "done_criteria",
15
+ "status",
16
+ "attempts",
17
+ "max_attempts",
18
+ "run_cap"
19
+ ],
20
+ "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "pattern": "^[a-z0-9-]+$"
24
+ },
25
+ "title": {
26
+ "type": "string"
27
+ },
28
+ "venture": {
29
+ "type": "string",
30
+ "description": "Venture id"
31
+ },
32
+ "products": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "string"
36
+ },
37
+ "description": "Product ids the work serves"
38
+ },
39
+ "governed_by": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string"
43
+ },
44
+ "description": "Decision ids this executes (EE-NNN, G-NNN, D-NNN or an ADR path)"
45
+ },
46
+ "assignment": {
47
+ "type": "string",
48
+ "pattern": "^(A-[0-9]{3}|none)$",
49
+ "description": "Optional: the build-method assignment the work runs under, such as a MAD A-NNN, or none. MAD is a separate product, so Mentura records the reference and does not check it (EE-019, EE-038)"
50
+ },
51
+ "inputs": {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "string"
55
+ },
56
+ "description": "Files the work needs before it can start, from the repo root; check-ready.mjs makes sure they exist"
57
+ },
58
+ "role": {
59
+ "type": "string",
60
+ "description": "Role id from the roles register that holds it (builder, architect and so on)"
61
+ },
62
+ "brief": {
63
+ "type": "string",
64
+ "description": "Path to the Markdown brief, relative to this file"
65
+ },
66
+ "decision_classes": {
67
+ "type": "array",
68
+ "minItems": 1,
69
+ "uniqueItems": true,
70
+ "items": {
71
+ "type": "string"
72
+ },
73
+ "description": "Decision-rights class ids the holder may use without reporting back. Anything outside them is escalated."
74
+ },
75
+ "done_criteria": {
76
+ "type": "array",
77
+ "minItems": 1,
78
+ "items": {
79
+ "type": "object",
80
+ "required": [
81
+ "id",
82
+ "kind",
83
+ "check"
84
+ ],
85
+ "properties": {
86
+ "id": {
87
+ "type": "string",
88
+ "pattern": "^[a-z0-9-]+$"
89
+ },
90
+ "kind": {
91
+ "enum": [
92
+ "conformance",
93
+ "self-proof",
94
+ "review"
95
+ ],
96
+ "description": "conformance: an objective check run as a command, with no model and no reviewer. self-proof: the change exercised for real, with evidence attached (EE-006). review: fit to intent, judged by the named role."
97
+ },
98
+ "check": {
99
+ "type": "string",
100
+ "description": "The command to run, or for review the question the reviewer answers"
101
+ },
102
+ "reviewer": {
103
+ "type": "string",
104
+ "description": "Role id, for review criteria"
105
+ }
106
+ },
107
+ "additionalProperties": false
108
+ }
109
+ },
110
+ "status": {
111
+ "enum": [
112
+ "draft",
113
+ "ready",
114
+ "in-progress",
115
+ "escalated",
116
+ "done"
117
+ ],
118
+ "description": "draft until schema/check-ready.mjs passes and is recorded; then ready, in-progress, escalated or done"
119
+ },
120
+ "ready_check": {
121
+ "type": "object",
122
+ "required": [
123
+ "at",
124
+ "by",
125
+ "version",
126
+ "items"
127
+ ],
128
+ "properties": {
129
+ "at": {
130
+ "type": "string",
131
+ "format": "date-time"
132
+ },
133
+ "by": {
134
+ "type": "string"
135
+ },
136
+ "version": {
137
+ "type": "string"
138
+ },
139
+ "items": {
140
+ "type": "integer"
141
+ }
142
+ },
143
+ "description": "Written by check-ready.mjs --record when every readiness item passed, before execution started"
144
+ },
145
+ "claimed_by": {
146
+ "type": "string",
147
+ "description": "Session or run id of the holder"
148
+ },
149
+ "session_id": {
150
+ "type": "string",
151
+ "description": "Session that wrote the handoff"
152
+ },
153
+ "parent_session_id": {
154
+ "type": "string",
155
+ "description": "Session that assigned it, for lineage"
156
+ },
157
+ "attempts": {
158
+ "type": "integer",
159
+ "minimum": 0
160
+ },
161
+ "max_attempts": {
162
+ "type": "integer",
163
+ "minimum": 1,
164
+ "default": 3
165
+ },
166
+ "run_cap": {
167
+ "type": "string",
168
+ "pattern": "^([0-9]+(m|h)|\\$[0-9]+)$",
169
+ "description": "Wall-clock or spend cap per run, such as 2h or $20"
170
+ },
171
+ "pr": {
172
+ "type": "string",
173
+ "description": "Pull request link once opened"
174
+ },
175
+ "evidence": {
176
+ "type": "array",
177
+ "items": {
178
+ "type": "string"
179
+ },
180
+ "description": "Paths to eval or check results (evidence.schema.json) that prove the done-criteria"
181
+ },
182
+ "escalations": {
183
+ "type": "array",
184
+ "items": {
185
+ "type": "object",
186
+ "required": [
187
+ "class",
188
+ "question",
189
+ "to"
190
+ ],
191
+ "properties": {
192
+ "class": {
193
+ "type": "string",
194
+ "description": "The decision-rights class, or attempts or run-cap"
195
+ },
196
+ "question": {
197
+ "type": "string"
198
+ },
199
+ "to": {
200
+ "type": "string",
201
+ "description": "Role id"
202
+ },
203
+ "blocks": {
204
+ "type": "string"
205
+ },
206
+ "continued": {
207
+ "type": "string"
208
+ },
209
+ "answer": {
210
+ "type": "string"
211
+ }
212
+ },
213
+ "additionalProperties": false
214
+ }
215
+ },
216
+ "lesson": {
217
+ "type": "string",
218
+ "description": "A failure that could recur, and the check one rung higher that would catch it (prose, skill, rule, static analysis, code)"
219
+ },
220
+ "publication": {
221
+ "type": "object",
222
+ "description": "Required when the handoff publishes (public-commitment in decision_classes or escalations): the channel and content rule in the venture's publication policy (EE-025)",
223
+ "required": [
224
+ "channel",
225
+ "content"
226
+ ],
227
+ "additionalProperties": false,
228
+ "properties": {
229
+ "channel": {
230
+ "type": "string"
231
+ },
232
+ "content": {
233
+ "type": "string"
234
+ }
235
+ }
236
+ }
237
+ },
238
+ "additionalProperties": false
239
+ }
@@ -0,0 +1,136 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "icp.schema.json",
4
+ "title": "Ideal customer profile",
5
+ "description": "Who the venture serves (EE-051), at <venture>/purpose/icp.json: the 'who' foundation statement. One or more profiles, one primary, each specific enough to go and find ten of them, with what they are trying to do, what gets in the way and who is out of scope. Gated like the telos: an agent's write is a draft the founder accepts.",
6
+ "type": "object",
7
+ "required": [
8
+ "venture",
9
+ "profiles"
10
+ ],
11
+ "additionalProperties": false,
12
+ "properties": {
13
+ "venture": {
14
+ "type": "string"
15
+ },
16
+ "updated": {
17
+ "type": "string",
18
+ "format": "date"
19
+ },
20
+ "decision": {
21
+ "type": "string",
22
+ "description": "The decision that set it, such as EE-045"
23
+ },
24
+ "profiles": {
25
+ "type": "array",
26
+ "minItems": 1,
27
+ "items": {
28
+ "type": "object",
29
+ "required": [
30
+ "id",
31
+ "who"
32
+ ],
33
+ "additionalProperties": false,
34
+ "properties": {
35
+ "id": {
36
+ "type": "string",
37
+ "pattern": "^[a-z0-9-]+$"
38
+ },
39
+ "who": {
40
+ "type": "string",
41
+ "description": "Who they are, specifically enough to find ten of them"
42
+ },
43
+ "short": {
44
+ "type": "string",
45
+ "description": "One line naming who they are; the venture's promised-to statement shows it (EE-052)"
46
+ },
47
+ "primary": {
48
+ "type": "boolean",
49
+ "description": "Exactly one profile is primary"
50
+ },
51
+ "customer": {
52
+ "enum": [
53
+ "b2b",
54
+ "b2c",
55
+ "b2g"
56
+ ]
57
+ },
58
+ "phases": {
59
+ "type": "array",
60
+ "items": {
61
+ "enum": [
62
+ "discovery",
63
+ "validation",
64
+ "beachhead",
65
+ "scale",
66
+ "platform"
67
+ ]
68
+ },
69
+ "description": "The phases of their own venture they are in, when they are founders"
70
+ },
71
+ "traits": {
72
+ "type": "array",
73
+ "items": {
74
+ "type": "string"
75
+ },
76
+ "description": "What must be true of them"
77
+ },
78
+ "jobs": {
79
+ "type": "array",
80
+ "items": {
81
+ "type": "string"
82
+ },
83
+ "description": "What they are trying to get done (jobs to be done)"
84
+ },
85
+ "problem_forms": {
86
+ "type": "array",
87
+ "items": {
88
+ "type": "string",
89
+ "pattern": "^[a-z0-9-]+$"
90
+ },
91
+ "description": "Ids of the problem record's forms they have"
92
+ },
93
+ "where_to_find": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "string"
97
+ },
98
+ "description": "Where to reach them: communities, channels, events"
99
+ },
100
+ "not": {
101
+ "type": "array",
102
+ "items": {
103
+ "type": "string"
104
+ },
105
+ "description": "Who is out of scope, and why"
106
+ },
107
+ "buying_roles": {
108
+ "type": "array",
109
+ "items": {
110
+ "enum": [
111
+ "initiator",
112
+ "user",
113
+ "influencer",
114
+ "decider",
115
+ "buyer",
116
+ "gatekeeper"
117
+ ]
118
+ },
119
+ "description": "The parts this profile plays in a purchase (the buying center: Webster and Wind 1972; initiator added by Bonoma 1982). One person may hold several; a solo founder or a consumer usually holds them all."
120
+ },
121
+ "reached_through": {
122
+ "type": "array",
123
+ "items": {
124
+ "type": "string"
125
+ },
126
+ "description": "Other profiles (ids) through whom the venture reaches this one, such as a channel partner in a B2B2C venture (EE-064)"
127
+ },
128
+ "customer_type": {
129
+ "type": "string",
130
+ "description": "The customer type from the marketing matrix (operations/marketing/site/matrix.json customer_types), when the founder sets it; otherwise it is judged from who (EE-063)"
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "idea-graph.schema.json",
4
+ "title": "Idea graph",
5
+ "description": "The structured form of a founder's idea map (EE-060): a Merkle DAG. Each idea's hash covers its text and the hashes of the ideas it builds on, so a change upstream changes every hash downstream. Written by purpose/frameworks/idea-map/graph.mjs; it holds no decisions.",
6
+ "type": "object",
7
+ "required": ["version", "venture", "phase", "root", "judged_by", "nodes", "edges", "lanes", "next"],
8
+ "properties": {
9
+ "version": { "type": "string" },
10
+ "venture": { "type": "string" },
11
+ "phase": { "enum": ["discovery", "validation", "beachhead", "scale", "platform"] },
12
+ "created": { "type": "string" },
13
+ "source": { "type": "string", "description": "The idea map it was built from, with that file's hash" },
14
+ "root": { "type": "string", "description": "Hash over the hashes of the ideas nothing builds on: one value for the whole graph" },
15
+ "judged_by": { "enum": ["jev", "convention"], "description": "Who judged the dependencies: Jev's typed answers, or Naive's convention of which records build on which" },
16
+ "weights": { "type": "object", "additionalProperties": { "type": "number" } },
17
+ "nodes": {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "object",
21
+ "required": ["id", "hash", "text", "depth", "builds_on", "signal", "lane"],
22
+ "properties": {
23
+ "id": { "type": "string", "pattern": "^i-\\d+$" },
24
+ "hash": { "type": "string", "pattern": "^[0-9a-f]{16}$" },
25
+ "text": { "type": "string", "description": "The founder's words, unchanged" },
26
+ "section": { "type": "string" },
27
+ "pillar": { "type": ["string", "null"] },
28
+ "departments": { "type": "array", "items": { "type": "string" } },
29
+ "records": { "type": "array", "items": { "type": "string" } },
30
+ "exists": { "type": "boolean" },
31
+ "depth": { "type": "integer", "minimum": 0, "description": "Longest chain of ideas before it: its column, left to right" },
32
+ "builds_on": { "type": "array", "items": { "type": "string" } },
33
+ "signal": { "type": "number", "minimum": 0, "maximum": 1 },
34
+ "parts": { "type": "object", "additionalProperties": { "type": "number" } },
35
+ "lane": { "type": "string" }
36
+ }
37
+ }
38
+ },
39
+ "edges": {
40
+ "type": "array",
41
+ "items": { "type": "object", "required": ["from", "to", "p"], "properties": { "from": { "type": "string" }, "to": { "type": "string" }, "p": { "type": "number" }, "by": { "type": "string" } } }
42
+ },
43
+ "dropped": { "type": "array", "description": "Dependencies left out because they would have closed a cycle" },
44
+ "lanes": {
45
+ "type": "array",
46
+ "items": {
47
+ "type": "object",
48
+ "required": ["id", "mode", "ideas"],
49
+ "properties": {
50
+ "id": { "type": "string" },
51
+ "mode": { "enum": ["sync", "async"], "description": "sync: its ideas build on each other and move in order; async: it moves on its own, beside the other lanes" },
52
+ "ideas": { "type": "array", "items": { "type": "string" } },
53
+ "department": { "type": ["string", "null"] },
54
+ "signal": { "type": "number" },
55
+ "why": { "type": "string" }
56
+ }
57
+ }
58
+ },
59
+ "next": { "type": "array", "items": { "type": "string" }, "description": "The highest-signal ideas that build on nothing: what to develop next" }
60
+ }
61
+ }
@@ -0,0 +1,98 @@
1
+ // Creates an empty venture: its folder, one folder per starting layer, products/,
2
+ // accounts/, the three pillars as stubs pointing to their guides (EE-010), a venture profile and a venture.json to fill in
3
+ // (EE-011). Starting layers come from scaffold/defaults.json, by phase (EE-012).
4
+ //
5
+ // node schema/init-venture.mjs <dir> <id> [--phase discovery] [--parent <id>] [--legal-form llc] [--layers purpose,governance]
6
+ //
7
+ // --layers turns on only the layers named, for a builder adopting part of the system (EE-030);
8
+ // without it the phase's defaults apply.
9
+ //
10
+ // Creates new ventures only, like create-next-app: it refuses a directory that exists and is not empty,
11
+ // so it can never overwrite a founder's files. An existing project comes in through naive port (EE-076).
12
+
13
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
14
+ import { dirname, join, relative } from "node:path";
15
+ import { fileURLToPath } from "node:url";
16
+
17
+ const here = dirname(fileURLToPath(import.meta.url));
18
+ const repo = join(here, "..");
19
+ const { layers, formalized, pillars, readme } = JSON.parse(readFileSync(join(here, "scaffold/defaults.json"), "utf8"));
20
+ const args = process.argv.slice(2);
21
+ const flag = (name) => { const i = args.indexOf(`--${name}`); return i < 0 ? null : args.splice(i, 2)[1]; };
22
+ const phase = flag("phase") ?? "discovery", parent = flag("parent"), legalForm = flag("legal-form"), only = flag("layers");
23
+ const [dir, id] = args;
24
+ if (!dir || !id) { console.error("usage: node schema/init-venture.mjs <dir> <id> [--phase discovery] [--parent <id>] [--legal-form llc]"); process.exit(2); }
25
+ if (!layers[phase]) { console.error(`unknown phase ${phase}: one of ${Object.keys(layers).join(", ")}`); process.exit(2); }
26
+ if (existsSync(dir) && readdirSync(dir).length) { console.error(`${dir} already exists and is not empty: init creates new ventures only, and never writes into an existing project`); process.exit(1); }
27
+
28
+ const ALL = ["purpose", "knowledge", "operations", "evidence", "governance", "interface"];
29
+ const on = only !== null ? only.split(",").filter(Boolean) : [...layers[phase], ...(legalForm && legalForm !== "none" ? formalized : [])];
30
+ const unknown = on.filter((l) => !ALL.includes(l));
31
+ if (unknown.length) { console.error(`unknown layers: ${unknown.join(", ")}; one of ${ALL.join(", ")}`); process.exit(2); }
32
+ mkdirSync(dir, { recursive: true });
33
+ const venture = { id, name: id, parent: parent ?? null, phase };
34
+ if (legalForm) venture.form = { legal_form: legalForm };
35
+ if (phase !== "discovery") venture.core = { promise: "", promised_to: "", must_not: "", competence: "" };
36
+ Object.assign(venture, { owner: "self", status: "active", profile: "profile.md", layers: {} });
37
+ for (const layer of ALL) {
38
+ if (!on.includes(layer)) { if (only !== null || !["governance", "interface"].includes(layer)) venture.layers[layer] = false; continue; }
39
+ mkdirSync(join(dir, layer), { recursive: true });
40
+ writeFileSync(join(dir, layer, "README.md"), `# ${layer}\n\n${readme[layer]}\n`);
41
+ venture.layers[layer] = { location: `${layer}/` };
42
+ }
43
+ for (const sub of ["products", "accounts"]) { mkdirSync(join(dir, sub), { recursive: true }); writeFileSync(join(dir, sub, ".gitkeep"), ""); }
44
+ // The package folder layout (EE-070). Old layer folders above stay for one release.
45
+ for (const sub of ["raw/dump", "raw/sources", "ideas", "foundation", "validation", "product", "marketing", "finance", "people", "customers", "investors", "money", "decisions", "evidence", "public", "_private", "_drafts", ".release"]) {
46
+ mkdirSync(join(dir, sub), { recursive: true });
47
+ }
48
+ mkdirSync(join(dir, "pillars"), { recursive: true });
49
+ for (const [name, what] of Object.entries(pillars.stubs)) {
50
+ const guide = relative(join(dir, "pillars"), join(repo, pillars.guides, `${name}.md`));
51
+ writeFileSync(join(dir, "pillars", `${name}.md`), `# ${name[0].toUpperCase() + name.slice(1)} pillar\n\n${what}\n\nGuide: [${name} pillar](${guide})\n`);
52
+ }
53
+ writeFileSync(join(dir, "profile.md"), `# ${id}\n\nWhat this venture is, in a few sentences. Its machine fields are in venture.json (EE-011).\n\n## Changelog\n`);
54
+ writeFileSync(join(dir, "venture.json"), JSON.stringify(venture, null, 2) + "\n");
55
+ // The venture's root layout (EE-072, I-4): every route's layout chain starts here. Lines shaped
56
+ // "key: value" are instructions the router hands an agent with the layout.
57
+ writeFileSync(join(dir, "AGENTS.md"), `# AGENTS.md: ${id}
58
+
59
+ The map of this venture for agents. Read it, then a route's layout, before writing anything here.
60
+
61
+ ## How to work here
62
+
63
+ - List the routes with \`mentura routes\`. Read a route's \`layout\` and \`template\` before you write to it.
64
+ - Write through the router (the CLI or the MCP server), not by editing files. Every write is checked against its schema and recorded in provenance.jsonl.
65
+ - A write that fails closed comes back as a draft in \`_drafts/\`. A person accepts it with \`mentura accept\`.
66
+ - Never read or send anything under \`_private/\` to a model.
67
+ - A deeper AGENTS.md (for example \`marketing/AGENTS.md\`) adds to this one for the routes under it; the nearer one wins.
68
+
69
+ ## Instructions
70
+
71
+ phase: ${venture.phase}
72
+ voice: plain words, in the founder's own terms
73
+ private: _private/
74
+ `);
75
+ // The product foundation (EE-059): Naive's own questions about products, asked first and failing
76
+ // closed. Does a product exist already, what is the core product, which product is the flagship.
77
+ // Each waits on the one before it; agents may not write product cards until the first is answered.
78
+ const framework = { drafted_by: { kind: "framework", id: "naive" } };
79
+ const productFoundation = [
80
+ { id: "product-exists", question: "Does a product already exist (in use, for sale, a prototype or a pilot), or is the venture still an idea?", decides: { record: "product", path: "products/" }, statement: "products",
81
+ options: ["Yes: one or more products exist", "Partly: a prototype or pilot exists", "No: it is still an idea"],
82
+ unlocks: [{ activity: "Write product cards for what exists or is planned", routes: ["purpose/product/*"] }] },
83
+ { id: "core-product", parent: "product-exists", question: "What is the core product: what anyone can claim from this venture, who it is promised to, what it must never deliver, and the competence that makes it deliverable?", decides: { record: "venture", path: "venture.json" },
84
+ unlocks: [{ activity: "Judge the products against the core (Product Anatomy)", routes: ["purpose/anatomy-input/*", "purpose/anatomy-answers"] }] },
85
+ { id: "flagship", parent: "core-product", question: "Which product is the flagship now: the one that best delivers the core promise?", decides: { record: "product", path: "products/" },
86
+ unlocks: [{ activity: "Plan how to validate the flagship", routes: ["purpose/validation/solution"] }] },
87
+ ];
88
+ // The team question (EE-060): asked in Discovery, failing open, so validation never waits on it. A
89
+ // founding team, or a founder looking for one, gets the founder-agreement kit beside validation.
90
+ mkdirSync(join(dir, "decisions"), { recursive: true });
91
+ writeFileSync(join(dir, "decisions/venture.team.decision.json"), JSON.stringify({ id: "founding-team", question: "Who is founding this venture: you alone, you with cofounders, or you looking for cofounders?",
92
+ decides: { record: "founder-agreement", path: "governance/founder-agreement.json" }, layer: "governance", boundary: "fail-open", needed_in: phase, status: "open",
93
+ options: ["Solo: I am founding it alone", "Cofounders: we are founding it together", "Looking: I want cofounders"],
94
+ unlocks: [{ activity: "Draft the founder agreement with the founding-agreement kit", routes: ["governance/founder-agreement"] }], provenance: framework }, null, 2) + "\n");
95
+ mkdirSync(join(dir, "products/decisions"), { recursive: true });
96
+ for (const d of productFoundation) writeFileSync(join(dir, "products/decisions", `product.${d.id.replace(/^product-/, "")}.decision.json`),
97
+ JSON.stringify({ ...d, layer: "purpose", boundary: "fail-closed", needed_in: phase, status: "open", provenance: framework }, null, 2) + "\n");
98
+ console.log(`created venture ${id} (${phase}) in ${dir} with ${on.join(", ") || "no layers"}, products/, accounts/ and the three pillars.${venture.core ? " Fill in the core product before ranking products." : ""}`);