naive-framework 0.1.0 → 0.3.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 (281) hide show
  1. package/AGENTS.md +2 -1
  2. package/docs/decisions/decisions.json +42 -0
  3. package/docs/reference/ROUTES.md +36 -37
  4. package/evidence/skills/fidelity-ladder-audit/ladder-census.mjs +2 -1
  5. package/governance/layer.json +2 -1
  6. package/governance/venture-template/roles/venture-roles.json +62 -0
  7. package/interface/acting.mjs +83 -0
  8. package/interface/adapters/claude-code.json +16 -0
  9. package/interface/adapters/codex.json +14 -0
  10. package/interface/adapters/cursor.json +16 -0
  11. package/interface/adapters.mjs +183 -0
  12. package/interface/api/server.mjs +4 -2
  13. package/interface/boundaries.mjs +219 -0
  14. package/interface/brand.mjs +215 -0
  15. package/interface/cli/freshness.mjs +59 -0
  16. package/interface/cli/guard.mjs +6 -0
  17. package/interface/cli/mentura.mjs +82 -11
  18. package/interface/cli/naive.mjs +44 -14
  19. package/interface/context.mjs +525 -0
  20. package/interface/demo/board.mjs +9 -8
  21. package/interface/demo/decision-harness.mjs +4 -3
  22. package/interface/dev/setup.mjs +84 -0
  23. package/interface/gate-hooks.mjs +37 -0
  24. package/interface/harness/evals.mjs +10 -9
  25. package/interface/harness/run.mjs +16 -15
  26. package/interface/instrumentation.mjs +87 -0
  27. package/interface/kit-boundary.mjs +73 -0
  28. package/interface/layer.json +8 -2
  29. package/interface/mcp/server.mjs +47 -7
  30. package/interface/package-routes.mjs +197 -0
  31. package/interface/provenance.mjs +28 -4
  32. package/interface/reads.mjs +174 -0
  33. package/interface/release-card.mjs +43 -0
  34. package/interface/router.mjs +110 -36
  35. package/interface/skills/naive-setup/SKILL.md +71 -0
  36. package/interface/skills/naive-setup/artifact.html +83 -0
  37. package/interface/vitals.mjs +116 -0
  38. package/interface/writes.mjs +190 -0
  39. package/knowledge/connectors/catalog.mjs +3 -2
  40. package/knowledge/connectors/filesystem.mjs +10 -5
  41. package/knowledge/connectors/index.mjs +3 -2
  42. package/knowledge/freshness.json +85 -0
  43. package/knowledge/layer.json +11 -3
  44. package/knowledge/templates/glossary.md +23 -0
  45. package/operations/layer.json +10 -3
  46. package/operations/marketing/check-public.mjs +7 -6
  47. package/operations/marketing/site/plan.mjs +4 -3
  48. package/operations/marketing/site/presence.mjs +4 -3
  49. package/operations/templates/marketing-brand.md +46 -0
  50. package/operations/templates/public-assets.md +39 -0
  51. package/package.json +3 -1
  52. package/packages/catalog.json +8 -0
  53. package/packages/customers/package.json +21 -1
  54. package/packages/deals/package.json +27 -0
  55. package/packages/decisions/package.json +12 -1
  56. package/packages/finance/frames/fund-without-ceding-control.frame.json +177 -0
  57. package/packages/foundation/package.json +8 -1
  58. package/packages/fund/package.json +48 -0
  59. package/packages/marketing/package.json +10 -4
  60. package/packages/money/package.json +24 -3
  61. package/packages/validation/package.json +13 -0
  62. package/platform/README.md +6 -0
  63. package/platform/adapter.json +15 -0
  64. package/platform/integrations/remote-image.mjs +79 -0
  65. package/platform/integrations/rho.mjs +9 -7
  66. package/platform/kits/README.md +8 -1
  67. package/platform/kits/agent-upgrade/kit.json +15 -0
  68. package/platform/kits/agent-upgrade/run.mjs +82 -0
  69. package/platform/kits/agent-upgrade/stand-in-agent.mjs +32 -0
  70. package/platform/kits/validation-kickoff/kit.json +29 -0
  71. package/platform/webhooks/server.mjs +70 -0
  72. package/purpose/frameworks/idea-map/ideamap.mjs +4 -2
  73. package/purpose/frameworks/idea-map/route.mjs +5 -4
  74. package/purpose/frameworks/product-anatomy/anatomy.mjs +2 -1
  75. package/schema/README.md +1 -0
  76. package/schema/access.mjs +58 -0
  77. package/schema/adapter.schema.json +33 -0
  78. package/schema/add-department.mjs +3 -2
  79. package/schema/assess-problem.mjs +3 -2
  80. package/schema/assets.mjs +213 -0
  81. package/schema/brand.mjs +374 -0
  82. package/schema/build-release.mjs +61 -0
  83. package/schema/caching.mjs +506 -0
  84. package/schema/check-assets.mjs +24 -0
  85. package/schema/check-brand.mjs +24 -0
  86. package/schema/check-config.mjs +111 -0
  87. package/schema/check-data-model.mjs +2 -1
  88. package/schema/check-data-packages.mjs +5 -4
  89. package/schema/check-execution.mjs +4 -3
  90. package/schema/check-nextjs-status.mjs +3 -1
  91. package/schema/check-people.mjs +84 -0
  92. package/schema/check-private.mjs +2 -1
  93. package/schema/check-ready.mjs +6 -5
  94. package/schema/check-sources.mjs +11 -2
  95. package/schema/check-where-used.mjs +4 -3
  96. package/schema/data-model.json +334 -8
  97. package/schema/deal.schema.json +80 -0
  98. package/schema/decision-analytics.mjs +2 -1
  99. package/schema/decisions.mjs +21 -12
  100. package/schema/examples/frames/judge.mjs +10 -0
  101. package/schema/examples/venture-type/jev.mjs +12 -0
  102. package/schema/examples/workspace/ventures/acme-labs/AGENTS.md +17 -0
  103. package/schema/examples/workspace/ventures/acme-labs/accounts/.gitkeep +0 -0
  104. package/schema/examples/workspace/ventures/acme-labs/decisions/discovery-goal.decision.json +23 -0
  105. package/schema/examples/workspace/ventures/acme-labs/decisions/statement-icp.decision.json +22 -0
  106. package/schema/examples/workspace/ventures/acme-labs/decisions/statement-problem.decision.json +22 -0
  107. package/schema/examples/workspace/ventures/acme-labs/decisions/venture.team.decision.json +37 -0
  108. package/schema/examples/workspace/ventures/acme-labs/knowledge/README.md +3 -0
  109. package/schema/examples/workspace/ventures/acme-labs/knowledge/sources.json +46 -0
  110. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000001.json +12 -0
  111. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000002.json +12 -0
  112. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000003.json +12 -0
  113. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000004.json +12 -0
  114. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000005.json +12 -0
  115. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000006.json +12 -0
  116. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000007.json +12 -0
  117. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000008.json +12 -0
  118. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000009.json +12 -0
  119. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000010.json +12 -0
  120. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000011.json +12 -0
  121. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000012.json +12 -0
  122. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000013.json +12 -0
  123. package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000014.json +12 -0
  124. package/schema/examples/workspace/ventures/acme-labs/money/_streams/transactions/stream.json +5 -0
  125. package/schema/examples/workspace/ventures/acme-labs/money/_summary.json +30 -0
  126. package/schema/examples/workspace/ventures/acme-labs/operations/departments/customer-service/README.md +5 -0
  127. package/schema/examples/workspace/ventures/acme-labs/operations/departments/customer-service/department.json +5 -0
  128. package/schema/examples/workspace/ventures/acme-labs/operations/departments/finance/README.md +5 -0
  129. package/schema/examples/workspace/ventures/acme-labs/operations/departments/finance/department.json +5 -0
  130. package/schema/examples/workspace/ventures/acme-labs/operations/departments/human-capital/README.md +5 -0
  131. package/schema/examples/workspace/ventures/acme-labs/operations/departments/human-capital/department.json +5 -0
  132. package/schema/examples/workspace/ventures/acme-labs/operations/departments/it/README.md +5 -0
  133. package/schema/examples/workspace/ventures/acme-labs/operations/departments/it/department.json +5 -0
  134. package/schema/examples/workspace/ventures/acme-labs/operations/departments/marketing-and-sales/README.md +5 -0
  135. package/schema/examples/workspace/ventures/acme-labs/operations/departments/marketing-and-sales/department.json +5 -0
  136. package/schema/examples/workspace/ventures/acme-labs/operations/departments/products/README.md +5 -0
  137. package/schema/examples/workspace/ventures/acme-labs/operations/departments/products/department.json +5 -0
  138. package/schema/examples/workspace/ventures/acme-labs/operations/departments/strategy/README.md +5 -0
  139. package/schema/examples/workspace/ventures/acme-labs/operations/departments/strategy/department.json +5 -0
  140. package/schema/examples/workspace/ventures/acme-labs/people/founders/maya-chen.json +15 -0
  141. package/schema/examples/workspace/ventures/acme-labs/people/people.json +22 -0
  142. package/schema/examples/workspace/ventures/acme-labs/pillars/brand.md +5 -0
  143. package/schema/examples/workspace/ventures/acme-labs/pillars/business.md +5 -0
  144. package/schema/examples/workspace/ventures/acme-labs/pillars/product.md +5 -0
  145. package/schema/examples/workspace/ventures/acme-labs/products/.gitkeep +0 -0
  146. package/schema/examples/workspace/ventures/acme-labs/products/decisions/product.core-product.decision.json +28 -0
  147. package/schema/examples/workspace/ventures/acme-labs/products/decisions/product.exists.decision.json +38 -0
  148. package/schema/examples/workspace/ventures/acme-labs/products/decisions/product.flagship.decision.json +27 -0
  149. package/schema/examples/workspace/ventures/acme-labs/profile.md +12 -0
  150. package/schema/examples/workspace/ventures/acme-labs/provenance.jsonl +12 -0
  151. package/schema/examples/workspace/ventures/acme-labs/raw/dump.md +6 -0
  152. package/schema/examples/workspace/ventures/acme-labs/venture.json +27 -0
  153. package/schema/examples/workspace/ventures/northstar/AGENTS.md +17 -0
  154. package/schema/examples/workspace/ventures/northstar/accounts/.gitkeep +0 -0
  155. package/schema/examples/workspace/ventures/northstar/deals/ductline.json +8 -0
  156. package/schema/examples/workspace/ventures/northstar/deals/kilnworks.json +14 -0
  157. package/schema/examples/workspace/ventures/northstar/decisions/venture.team.decision.json +31 -0
  158. package/schema/examples/workspace/ventures/northstar/evidence/README.md +3 -0
  159. package/schema/examples/workspace/ventures/northstar/fund/decisions/terms.decision.json +27 -0
  160. package/schema/examples/workspace/ventures/northstar/fund/decisions/terms.first-close.decision.json +27 -0
  161. package/schema/examples/workspace/ventures/northstar/fund/decisions/thesis.decision.json +26 -0
  162. package/schema/examples/workspace/ventures/northstar/fund/terms.json +22 -0
  163. package/schema/examples/workspace/ventures/northstar/fund/thesis.json +22 -0
  164. package/schema/examples/workspace/ventures/northstar/governance/README.md +3 -0
  165. package/schema/examples/workspace/ventures/northstar/governance/departments/external-relationships/charter.md +5 -0
  166. package/schema/examples/workspace/ventures/northstar/governance/departments/external-relationships/department.json +5 -0
  167. package/schema/examples/workspace/ventures/northstar/governance/departments/finance/charter.md +5 -0
  168. package/schema/examples/workspace/ventures/northstar/governance/departments/finance/department.json +5 -0
  169. package/schema/examples/workspace/ventures/northstar/governance/departments/human-capital/charter.md +5 -0
  170. package/schema/examples/workspace/ventures/northstar/governance/departments/human-capital/department.json +5 -0
  171. package/schema/examples/workspace/ventures/northstar/governance/departments/risk-and-compliance/charter.md +5 -0
  172. package/schema/examples/workspace/ventures/northstar/governance/departments/risk-and-compliance/department.json +5 -0
  173. package/schema/examples/workspace/ventures/northstar/governance/departments/strategy/charter.md +5 -0
  174. package/schema/examples/workspace/ventures/northstar/governance/departments/strategy/department.json +5 -0
  175. package/schema/examples/workspace/ventures/northstar/knowledge/README.md +3 -0
  176. package/schema/examples/workspace/ventures/northstar/operations/README.md +3 -0
  177. package/schema/examples/workspace/ventures/northstar/operations/departments/external-relationships/README.md +5 -0
  178. package/schema/examples/workspace/ventures/northstar/operations/departments/external-relationships/department.json +5 -0
  179. package/schema/examples/workspace/ventures/northstar/operations/departments/finance/README.md +5 -0
  180. package/schema/examples/workspace/ventures/northstar/operations/departments/finance/department.json +5 -0
  181. package/schema/examples/workspace/ventures/northstar/operations/departments/human-capital/README.md +5 -0
  182. package/schema/examples/workspace/ventures/northstar/operations/departments/human-capital/department.json +5 -0
  183. package/schema/examples/workspace/ventures/northstar/operations/departments/risk-and-compliance/README.md +5 -0
  184. package/schema/examples/workspace/ventures/northstar/operations/departments/risk-and-compliance/department.json +5 -0
  185. package/schema/examples/workspace/ventures/northstar/operations/departments/strategy/README.md +5 -0
  186. package/schema/examples/workspace/ventures/northstar/operations/departments/strategy/department.json +5 -0
  187. package/schema/examples/workspace/ventures/northstar/people/founders/ana-ruiz.json +13 -0
  188. package/schema/examples/workspace/ventures/northstar/people/founders/ben-okafor.json +7 -0
  189. package/schema/examples/workspace/ventures/northstar/people/people.json +27 -0
  190. package/schema/examples/workspace/ventures/northstar/pillars/brand.md +5 -0
  191. package/schema/examples/workspace/ventures/northstar/pillars/business.md +5 -0
  192. package/schema/examples/workspace/ventures/northstar/pillars/product.md +5 -0
  193. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/AGENTS.md +17 -0
  194. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/accounts/.gitkeep +0 -0
  195. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/decisions/venture.team.decision.json +31 -0
  196. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/knowledge/README.md +3 -0
  197. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/customer-service/README.md +5 -0
  198. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/customer-service/department.json +5 -0
  199. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/finance/README.md +5 -0
  200. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/finance/department.json +5 -0
  201. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/human-capital/README.md +5 -0
  202. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/human-capital/department.json +5 -0
  203. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/it/README.md +5 -0
  204. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/it/department.json +5 -0
  205. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/marketing-and-sales/README.md +5 -0
  206. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/marketing-and-sales/department.json +5 -0
  207. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/products/README.md +5 -0
  208. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/products/department.json +5 -0
  209. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/strategy/README.md +5 -0
  210. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/strategy/department.json +5 -0
  211. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/pillars/brand.md +5 -0
  212. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/pillars/business.md +5 -0
  213. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/pillars/product.md +5 -0
  214. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/products/.gitkeep +0 -0
  215. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/products/decisions/product.core-product.decision.json +28 -0
  216. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/products/decisions/product.exists.decision.json +32 -0
  217. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/products/decisions/product.flagship.decision.json +27 -0
  218. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/profile.md +5 -0
  219. package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/venture.json +27 -0
  220. package/schema/examples/workspace/ventures/northstar/products/.gitkeep +0 -0
  221. package/schema/examples/workspace/ventures/northstar/profile.md +5 -0
  222. package/schema/examples/workspace/ventures/northstar/provenance.jsonl +3 -0
  223. package/schema/examples/workspace/ventures/northstar/purpose/README.md +3 -0
  224. package/schema/examples/workspace/ventures/northstar/venture.json +49 -0
  225. package/schema/foundation.mjs +8 -7
  226. package/schema/founder.schema.json +72 -0
  227. package/schema/frame.schema.json +240 -0
  228. package/schema/frames.mjs +229 -0
  229. package/schema/freshness-log.schema.json +40 -0
  230. package/schema/freshness-profiles.schema.json +44 -0
  231. package/schema/freshness.mjs +474 -0
  232. package/schema/fund-terms.schema.json +107 -0
  233. package/schema/fund-thesis.schema.json +87 -0
  234. package/schema/gate-drafts.mjs +131 -0
  235. package/schema/gate.mjs +105 -11
  236. package/schema/glossary.schema.json +25 -0
  237. package/schema/init-venture.mjs +69 -21
  238. package/schema/judgment.schema.json +38 -0
  239. package/schema/kit.schema.json +47 -0
  240. package/schema/kits.mjs +24 -0
  241. package/schema/knowledge-sources.schema.json +145 -15
  242. package/schema/layer.json +16 -3
  243. package/schema/marketing-brand.schema.json +116 -0
  244. package/schema/migrate-venture.mjs +8 -7
  245. package/schema/migrations/kit-to-package.mjs +95 -0
  246. package/schema/migrations/package-layout.mjs +90 -0
  247. package/schema/model-steps.mjs +718 -0
  248. package/schema/money-summary.schema.json +138 -0
  249. package/schema/naive-config.mjs +166 -0
  250. package/schema/naive-config.schema.json +268 -0
  251. package/schema/need-now.json +171 -0
  252. package/schema/need-now.mjs +8 -6
  253. package/schema/packages.mjs +21 -15
  254. package/schema/payouts.mjs +3 -2
  255. package/schema/people.schema.json +85 -0
  256. package/schema/port-venture.mjs +206 -132
  257. package/schema/public-assets.schema.json +76 -0
  258. package/schema/release-read.mjs +112 -0
  259. package/schema/releases.mjs +498 -0
  260. package/schema/run-handoff.mjs +5 -4
  261. package/schema/setup.mjs +165 -0
  262. package/schema/stale.mjs +112 -0
  263. package/schema/start-release.mjs +41 -0
  264. package/schema/structure.mjs +187 -0
  265. package/schema/systems-catalog.json +126 -0
  266. package/schema/systems-catalog.schema.json +78 -0
  267. package/schema/time-to-ready.mjs +7 -6
  268. package/schema/trigger.schema.json +44 -0
  269. package/schema/triggers.mjs +238 -0
  270. package/schema/upgrade-registry.schema.json +60 -0
  271. package/schema/upgrade-venture.mjs +96 -118
  272. package/schema/upgrades.json +69 -0
  273. package/schema/upgrades.mjs +386 -0
  274. package/schema/validate.py +19 -10
  275. package/schema/venture-paths.mjs +85 -0
  276. package/schema/venture-role.schema.json +64 -0
  277. package/schema/venture-type.mjs +62 -0
  278. package/schema/venture-types.json +346 -0
  279. package/schema/venture-types.schema.json +129 -0
  280. package/schema/venture.schema.json +61 -0
  281. package/schema/workspace.schema.json +5 -1
@@ -0,0 +1,5 @@
1
+ # Marketing and sales: operations
2
+
3
+ Holds: The marketing website (EE-044), campaigns, marketing assets, the sales pipeline.
4
+
5
+ APQC 3.0 Market and Sell Products and Services; value chain: primary (marketing and sales).
@@ -0,0 +1,5 @@
1
+ {
2
+ "department": "marketing-and-sales",
3
+ "value_chain": "primary",
4
+ "apqc": "3.0"
5
+ }
@@ -0,0 +1,5 @@
1
+ # Products and services: operations
2
+
3
+ Holds: Specs, roadmaps and the work of building (MAD, for software).
4
+
5
+ APQC 2.0 Develop and Manage Products and Services; value chain: primary (technology development).
@@ -0,0 +1,5 @@
1
+ {
2
+ "department": "products",
3
+ "value_chain": "primary",
4
+ "apqc": "2.0"
5
+ }
@@ -0,0 +1,5 @@
1
+ # Strategy: operations
2
+
3
+ Holds: Planning cadence, market research.
4
+
5
+ APQC 1.0 Develop Vision and Strategy; value chain: support (firm infrastructure).
@@ -0,0 +1,5 @@
1
+ {
2
+ "department": "strategy",
3
+ "value_chain": "support",
4
+ "apqc": "1.0"
5
+ }
@@ -0,0 +1,5 @@
1
+ # Brand pillar
2
+
3
+ How the venture is known: its name, voice, promise wording and visual identity.
4
+
5
+ Guide: [brand pillar](../../../../../../../../governance/venture-template/pillars/brand.md)
@@ -0,0 +1,5 @@
1
+ # Business pillar
2
+
3
+ How the venture sustains itself: business models, pricing, costs, legal form and funding.
4
+
5
+ Guide: [business pillar](../../../../../../../../governance/venture-template/pillars/business.md)
@@ -0,0 +1,5 @@
1
+ # Product pillar
2
+
3
+ What the venture makes: its core product (in venture.json), its products (in products/), and what each needs to be specified, built, shipped and operated.
4
+
5
+ Guide: [product pillar](../../../../../../../../governance/venture-template/pillars/product.md)
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "core-product",
3
+ "parent": "product-exists",
4
+ "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?",
5
+ "decides": {
6
+ "record": "venture",
7
+ "path": "venture.json"
8
+ },
9
+ "unlocks": [
10
+ {
11
+ "activity": "Judge the products against the core (Product Anatomy)",
12
+ "routes": [
13
+ "purpose/anatomy-input/*",
14
+ "purpose/anatomy-answers"
15
+ ]
16
+ }
17
+ ],
18
+ "layer": "purpose",
19
+ "boundary": "fail-closed",
20
+ "needed_in": "discovery",
21
+ "status": "open",
22
+ "provenance": {
23
+ "drafted_by": {
24
+ "kind": "framework",
25
+ "id": "naive"
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "id": "product-exists",
3
+ "question": "Does a product already exist (in use, for sale, a prototype or a pilot), or is the venture still an idea?",
4
+ "decides": {
5
+ "record": "product",
6
+ "path": "products/"
7
+ },
8
+ "statement": "products",
9
+ "options": [
10
+ "Yes: one or more products exist",
11
+ "Partly: a prototype or pilot exists",
12
+ "No: it is still an idea"
13
+ ],
14
+ "unlocks": [
15
+ {
16
+ "activity": "Write product cards for what exists or is planned",
17
+ "routes": [
18
+ "purpose/product/*"
19
+ ]
20
+ }
21
+ ],
22
+ "layer": "purpose",
23
+ "boundary": "fail-closed",
24
+ "needed_in": "discovery",
25
+ "status": "open",
26
+ "provenance": {
27
+ "drafted_by": {
28
+ "kind": "framework",
29
+ "id": "naive"
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": "flagship",
3
+ "parent": "core-product",
4
+ "question": "Which product is the flagship now: the one that best delivers the core promise?",
5
+ "decides": {
6
+ "record": "product",
7
+ "path": "products/"
8
+ },
9
+ "unlocks": [
10
+ {
11
+ "activity": "Plan how to validate the flagship",
12
+ "routes": [
13
+ "purpose/validation/solution"
14
+ ]
15
+ }
16
+ ],
17
+ "layer": "purpose",
18
+ "boundary": "fail-closed",
19
+ "needed_in": "discovery",
20
+ "status": "open",
21
+ "provenance": {
22
+ "drafted_by": {
23
+ "kind": "framework",
24
+ "id": "naive"
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,5 @@
1
+ # kilnworks
2
+
3
+ What this venture is, in a few sentences. Its machine fields are in venture.json (EE-011).
4
+
5
+ ## Changelog
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": "kilnworks",
3
+ "name": "kilnworks",
4
+ "type": "software-startup",
5
+ "parent": "northstar",
6
+ "phase": "discovery",
7
+ "owner": "self",
8
+ "status": "active",
9
+ "profile": "profile.md",
10
+ "layers": {
11
+ "purpose": false,
12
+ "knowledge": {
13
+ "location": "knowledge/"
14
+ },
15
+ "operations": false,
16
+ "evidence": false
17
+ },
18
+ "departments": [
19
+ "strategy",
20
+ "products",
21
+ "marketing-and-sales",
22
+ "customer-service",
23
+ "human-capital",
24
+ "it",
25
+ "finance"
26
+ ]
27
+ }
@@ -0,0 +1,5 @@
1
+ # northstar
2
+
3
+ What this venture is, in a few sentences. Its machine fields are in venture.json (EE-011).
4
+
5
+ ## Changelog
@@ -0,0 +1,3 @@
1
+ {"at":"2026-10-29T05:51:45.173Z","entity":"people/founders/ana-ruiz.json","route":"people/founders/ana-ruiz","activity":"write","agent":{"kind":"person","via":"cli","id":"ana-ruiz"},"note":"Ana Ruiz, general-partner, as answered at create-venture","sha256":"d7c4f1ba5608dc88a46a08c6a65efe7de090cf41875fbe990a8ea4974a13ef7d","prev":"genesis","hash":"da61087eaffa48394c6c4aa1bf22492c66f618fc088be798c05732e1e42a5e4b"}
2
+ {"at":"2026-10-29T05:51:45.174Z","entity":"people/founders/ben-okafor.json","route":"people/founders/ben-okafor","activity":"write","agent":{"kind":"person","via":"cli","id":"ana-ruiz"},"note":"Ben Okafor, general-partner, as answered at create-venture","sha256":"f7a91c21c45ed11b0f2444d9cbdef6b63d2078ed59808e00c0797097d4a0d631","prev":"da61087eaffa48394c6c4aa1bf22492c66f618fc088be798c05732e1e42a5e4b","hash":"04db571364b36d0d2b1a9dda24145e1718688106f3ed8f94d681efb60c398f6d"}
3
+ {"at":"2026-10-29T05:51:45.174Z","entity":"people/people.json","route":"people","activity":"write","agent":{"kind":"person","via":"cli","id":"ana-ruiz"},"note":"team: Ana Ruiz (general-partner), Ben Okafor (general-partner)","sha256":"55b93788772996b7c077d62e23c0c3adde60f8d999dafb559c0c2602709d9a13","prev":"04db571364b36d0d2b1a9dda24145e1718688106f3ed8f94d681efb60c398f6d","hash":"4acf7b3e96494b22e222bd9dd4b0b021103c0aab2432a122db0b926f478a279b"}
@@ -0,0 +1,3 @@
1
+ # purpose
2
+
3
+ Why this venture exists: its core product, products and the Product Anatomy matrix.
@@ -0,0 +1,49 @@
1
+ {
2
+ "id": "northstar",
3
+ "name": "Northstar Climate Fund",
4
+ "type": "vc-fund",
5
+ "parent": null,
6
+ "phase": "validation",
7
+ "form": {
8
+ "funding": "mixed"
9
+ },
10
+ "core": {
11
+ "promise": "",
12
+ "promised_to": "",
13
+ "must_not": "",
14
+ "competence": ""
15
+ },
16
+ "owner": "self",
17
+ "status": "active",
18
+ "profile": "profile.md",
19
+ "layers": {
20
+ "purpose": {
21
+ "location": "purpose/"
22
+ },
23
+ "knowledge": {
24
+ "location": "knowledge/"
25
+ },
26
+ "operations": {
27
+ "location": "operations/"
28
+ },
29
+ "evidence": {
30
+ "location": "evidence/"
31
+ },
32
+ "governance": {
33
+ "location": "governance/"
34
+ }
35
+ },
36
+ "departments": [
37
+ "strategy",
38
+ "finance",
39
+ "external-relationships",
40
+ "risk-and-compliance",
41
+ "human-capital"
42
+ ],
43
+ "members": [
44
+ {
45
+ "role": "partner",
46
+ "kind": "person"
47
+ }
48
+ ]
49
+ }
@@ -15,6 +15,7 @@
15
15
 
16
16
  import { existsSync, readdirSync, readFileSync } from "node:fs";
17
17
  import { join } from "node:path";
18
+ import { ventureFile } from "./venture-paths.mjs";
18
19
 
19
20
  const repo = new URL("..", import.meta.url).pathname;
20
21
  const load = (f) => JSON.parse(readFileSync(f, "utf8"));
@@ -30,15 +31,15 @@ export function filesOf(dir, type) {
30
31
  const gs = (r?.paths ?? []).filter((p) => p.startsWith("instance/**/")).map((p) => p.slice("instance/**/".length));
31
32
  const found = [];
32
33
  for (const g of gs) {
33
- if (!g.includes("*")) { if (existsSync(join(dir, g))) found.push(g); continue; }
34
+ if (!g.includes("*")) { if (existsSync(ventureFile(dir, g))) found.push(g); continue; }
34
35
  const star = g.indexOf("*");
35
36
  const folder = g.slice(0, star), rest = g.slice(star + 1);
36
37
  if (rest.includes("*")) continue;
37
- const d = join(dir, folder);
38
+ const d = ventureFile(dir, folder);
38
39
  if (existsSync(d)) for (const f of readdirSync(d)) if (f.endsWith(rest)) found.push(folder + f);
39
40
  }
40
41
  if (found.length) return found;
41
- const drafted = gs.filter((g) => !g.includes("*") && existsSync(join(dir, `_drafts/${g.replace(/\//g, "__")}.draft`)));
42
+ const drafted = gs.filter((g) => !g.includes("*") && existsSync(ventureFile(dir, `_drafts/${g.replace(/\//g, "__")}.draft`)));
42
43
  return drafted.length ? drafted : gs.slice(0, 1);
43
44
  }
44
45
 
@@ -47,7 +48,7 @@ export function filesOf(dir, type) {
47
48
  export function confirmedIn(dir, file, id, seen = new Set()) {
48
49
  if (seen.has(file)) return false;
49
50
  seen.add(file);
50
- const log = join(dir, "provenance.jsonl");
51
+ const log = join(ventureFile(dir, "provenance.jsonl"));
51
52
  if (!existsSync(log)) return false;
52
53
  const draft = `_drafts/${file.replace(/\//g, "__")}.draft`;
53
54
  const es = readFileSync(log, "utf8").split("\n").filter(Boolean).map((l) => JSON.parse(l)).filter((e) => e.entity === file || e.entity === draft);
@@ -64,8 +65,8 @@ export function foundation(dir) {
64
65
  if (!s.record) return { id: s.id, status: "planned", note: s.note ?? null };
65
66
  const files = filesOf(dir, s.record);
66
67
  // A retired product no longer answers for the venture.
67
- const values = files.filter((f) => existsSync(join(dir, f)) && load(join(dir, f)).status !== "retired").map((f) => ({ f, v: get(load(join(dir, f)), s.attribute) })).filter((x) => filled(x.v));
68
- const drafts = files.filter((f) => existsSync(join(dir, `_drafts/${f.replace(/\//g, "__")}.draft`)));
68
+ const values = files.filter((f) => existsSync(ventureFile(dir, f)) && load(ventureFile(dir, f)).status !== "retired").map((f) => ({ f, v: get(load(ventureFile(dir, f)), s.attribute) })).filter((x) => filled(x.v));
69
+ const drafts = files.filter((f) => existsSync(ventureFile(dir, `_drafts/${f.replace(/\//g, "__")}.draft`)));
69
70
  if (!values.length) return { id: s.id, record: s.record, attribute: s.attribute, status: drafts.length ? "draft" : "missing" };
70
71
  // A record with no log entry existed before the log; a person's baseline or write confirms it.
71
72
  const confirmed = values.every(({ f }) => confirmedIn(dir, f, s.id));
@@ -87,7 +88,7 @@ export function foundation(dir) {
87
88
 
88
89
  export function problems(dir) {
89
90
  const out = FRAME.questions.flatMap((q) => q.statements).filter((s) => s.record && !MODEL.records.some((r) => r.id === s.record)).map((s) => `frame: ${s.id} names record type ${s.record}, which the data model lacks`);
90
- const there = (...fs) => fs.map((f) => join(dir, f)).find((p) => existsSync(p));
91
+ const there = (...fs) => fs.map((f) => ventureFile(dir, f)).find((p) => existsSync(p));
91
92
  const icp = there("foundation/icp.json", "purpose/icp.json"), prob = there("foundation/problem.json", "purpose/validation/problem.json");
92
93
  if (icp) {
93
94
  const forms = new Set(existsSync(prob) ? (load(prob).forms ?? []).map((f) => f.id) : []);
@@ -0,0 +1,72 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "founder.schema.json",
4
+ "title": "Founder",
5
+ "description": "One founder of the venture (people/founders/<id>.json): role, the functions they own, when they joined, and where their founder agreement is. One file per founder, so each founder's record changes on its own.",
6
+ "type": "object",
7
+ "required": [
8
+ "id",
9
+ "name",
10
+ "role",
11
+ "joined"
12
+ ],
13
+ "additionalProperties": false,
14
+ "properties": {
15
+ "id": {
16
+ "type": "string",
17
+ "pattern": "^[a-z0-9-]+$"
18
+ },
19
+ "name": {
20
+ "type": "string"
21
+ },
22
+ "role": {
23
+ "enum": [
24
+ "founder",
25
+ "co-founder",
26
+ "general-partner"
27
+ ]
28
+ },
29
+ "hats": {
30
+ "type": "array",
31
+ "items": {
32
+ "enum": [
33
+ "strategy",
34
+ "products",
35
+ "marketing-and-sales",
36
+ "supply-chain",
37
+ "service-delivery",
38
+ "customer-service",
39
+ "human-capital",
40
+ "it",
41
+ "finance",
42
+ "assets",
43
+ "risk-and-compliance",
44
+ "external-relationships",
45
+ "capabilities"
46
+ ]
47
+ },
48
+ "uniqueItems": true,
49
+ "description": "The functions this founder owns, in the flat layout. In the structured layout (EE-086) they are read from venture.json"
50
+ },
51
+ "joined": {
52
+ "type": "string",
53
+ "format": "date"
54
+ },
55
+ "agreement": {
56
+ "type": "object",
57
+ "required": [
58
+ "path",
59
+ "signed"
60
+ ],
61
+ "additionalProperties": false,
62
+ "properties": {
63
+ "path": {
64
+ "type": "string"
65
+ },
66
+ "signed": {
67
+ "type": "boolean"
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,240 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "frame.schema.json",
4
+ "title": "Frame (decision library)",
5
+ "description": "One recurring venture problem, as a shape, at packages/<function>/frames/<id>.frame.json. A frame is to Naive what a component is to a React component library. It holds the goal, the decisions hidden in the founder's sentence, the premises that sentence assumes and the moves to attack them, and what current information a lookup must supply. It never holds an answer: no instrument, vendor, term or market norm, because those go stale and can be wrong. schema/frames.mjs matches a frame to the founder's words, reads the props from the venture's records, has a model judge each premise yes, no or unknown, and proposes the frame's decisions with open options for the founder to decide.",
6
+ "type": "object",
7
+ "required": [
8
+ "id",
9
+ "title",
10
+ "functions",
11
+ "triggers",
12
+ "goal",
13
+ "premises",
14
+ "attacks",
15
+ "reframe",
16
+ "props",
17
+ "freshness",
18
+ "reasoning",
19
+ "emits"
20
+ ],
21
+ "additionalProperties": false,
22
+ "properties": {
23
+ "id": {
24
+ "type": "string",
25
+ "pattern": "^[a-z0-9-]+$"
26
+ },
27
+ "title": {
28
+ "type": "string"
29
+ },
30
+ "functions": {
31
+ "type": "array",
32
+ "minItems": 1,
33
+ "items": {
34
+ "type": "string",
35
+ "pattern": "^[a-z0-9-]+$"
36
+ },
37
+ "description": "The venture functions the problem belongs to; the first is the package the frame lives in"
38
+ },
39
+ "triggers": {
40
+ "type": "array",
41
+ "minItems": 1,
42
+ "items": {
43
+ "type": "string"
44
+ },
45
+ "description": "Sentences a founder says when they have this problem, in a founder's words"
46
+ },
47
+ "goal": {
48
+ "type": "string",
49
+ "description": "The end the decisions serve; {prop} placeholders are filled from the venture"
50
+ },
51
+ "premises": {
52
+ "type": "array",
53
+ "minItems": 1,
54
+ "items": {
55
+ "type": "object",
56
+ "required": [
57
+ "id",
58
+ "claim",
59
+ "attack"
60
+ ],
61
+ "additionalProperties": false,
62
+ "properties": {
63
+ "id": {
64
+ "type": "string",
65
+ "pattern": "^[a-z0-9-]+$"
66
+ },
67
+ "claim": {
68
+ "type": "string",
69
+ "description": "What the founder's sentence assumes, as a yes/no proposition about this venture"
70
+ },
71
+ "attack": {
72
+ "type": "string",
73
+ "description": "The premise attack applied to it, one of schema/frames.mjs ATTACKS"
74
+ },
75
+ "reads": {
76
+ "type": "array",
77
+ "items": {
78
+ "type": "string"
79
+ },
80
+ "description": "The props the judgment of this premise needs"
81
+ }
82
+ }
83
+ },
84
+ "description": "The chain the founder's sentence assumes, in order"
85
+ },
86
+ "attacks": {
87
+ "type": "array",
88
+ "minItems": 1,
89
+ "items": {
90
+ "type": "string"
91
+ },
92
+ "description": "The premise attacks the frame uses (the hooks of the library)"
93
+ },
94
+ "dichotomy": {
95
+ "type": "string",
96
+ "description": "The trade the founder's sentence forces, asked as: is it false, a real trade-off, or a sequence?"
97
+ },
98
+ "reframe": {
99
+ "type": "string",
100
+ "description": "The better question the frame leaves the founder with; {prop} placeholders are filled from the venture"
101
+ },
102
+ "composes": {
103
+ "type": "array",
104
+ "items": {
105
+ "type": "string"
106
+ },
107
+ "description": "Smaller frames this one is built from"
108
+ },
109
+ "props": {
110
+ "type": "array",
111
+ "items": {
112
+ "type": "string"
113
+ },
114
+ "description": "The venture facts the frame reads, never stores: phase, goal, runway, revenue, cap_table, jurisdiction, control_rights"
115
+ },
116
+ "freshness": {
117
+ "type": "object",
118
+ "required": [
119
+ "look_for",
120
+ "max_age_days",
121
+ "cite"
122
+ ],
123
+ "additionalProperties": false,
124
+ "properties": {
125
+ "look_for": {
126
+ "type": "array",
127
+ "minItems": 1,
128
+ "items": {
129
+ "type": "string"
130
+ },
131
+ "description": "What a lookup must find, described as a problem, never as a named answer"
132
+ },
133
+ "filter_by": {
134
+ "type": "array",
135
+ "items": {
136
+ "type": "string"
137
+ }
138
+ },
139
+ "max_age_days": {
140
+ "type": "integer",
141
+ "minimum": 1
142
+ },
143
+ "cite": {
144
+ "type": "boolean",
145
+ "const": true
146
+ }
147
+ },
148
+ "description": "What current information the frame needs and how fresh it must be. The lookup itself is a kit's skill; the frame says only what to look for."
149
+ },
150
+ "reasoning": {
151
+ "type": "array",
152
+ "minItems": 1,
153
+ "items": {
154
+ "type": "string"
155
+ },
156
+ "description": "What a model that fetches the frame must do, in order"
157
+ },
158
+ "emits": {
159
+ "type": "array",
160
+ "minItems": 1,
161
+ "items": {
162
+ "type": "object",
163
+ "required": [
164
+ "id",
165
+ "question"
166
+ ],
167
+ "additionalProperties": false,
168
+ "properties": {
169
+ "id": {
170
+ "type": "string",
171
+ "pattern": "^[a-z0-9-]+$"
172
+ },
173
+ "question": {
174
+ "type": "string"
175
+ },
176
+ "options": {
177
+ "type": "array",
178
+ "items": {
179
+ "type": "string"
180
+ },
181
+ "description": "Options that describe the problem's own parts, never a named answer; options from a lookup are added at run time with their date and source"
182
+ },
183
+ "options_from": {
184
+ "enum": [
185
+ "frame",
186
+ "lookup"
187
+ ],
188
+ "default": "frame"
189
+ },
190
+ "layer": {
191
+ "enum": [
192
+ "purpose",
193
+ "knowledge",
194
+ "operations",
195
+ "evidence",
196
+ "governance",
197
+ "interface"
198
+ ]
199
+ },
200
+ "needed_in": {
201
+ "enum": [
202
+ "discovery",
203
+ "validation",
204
+ "beachhead",
205
+ "scale",
206
+ "platform"
207
+ ]
208
+ }
209
+ }
210
+ },
211
+ "description": "The decisions the frame proposes, each open for the founder to decide"
212
+ },
213
+ "cases": {
214
+ "type": "array",
215
+ "items": {
216
+ "type": "object",
217
+ "required": [
218
+ "id",
219
+ "facts",
220
+ "expect"
221
+ ],
222
+ "additionalProperties": false,
223
+ "properties": {
224
+ "id": {
225
+ "type": "string"
226
+ },
227
+ "facts": {
228
+ "type": "object",
229
+ "description": "The props of a worked venture"
230
+ },
231
+ "expect": {
232
+ "type": "object",
233
+ "description": "The premise verdicts and dichotomy a good judgment reaches for these facts"
234
+ }
235
+ }
236
+ },
237
+ "description": "Worked cases, to evaluate a model's judgments against"
238
+ }
239
+ }
240
+ }