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,115 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "reference.schema.json",
4
+ "title": "References",
5
+ "description": "A layer's references (EE-014): the sources behind its opinionated defaults and the alternatives it considered. One file per layer at <layer>/references/references.json. A URL is recorded when one exists and re-checked; the find-reference skill fills gaps from title, authors and year.",
6
+ "type": "object",
7
+ "required": [
8
+ "layer",
9
+ "references"
10
+ ],
11
+ "properties": {
12
+ "layer": {
13
+ "enum": [
14
+ "purpose",
15
+ "knowledge",
16
+ "operations",
17
+ "evidence",
18
+ "governance",
19
+ "interface"
20
+ ]
21
+ },
22
+ "references": {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "object",
26
+ "required": [
27
+ "id",
28
+ "title",
29
+ "authors",
30
+ "year",
31
+ "kind",
32
+ "summary",
33
+ "informs",
34
+ "stance"
35
+ ],
36
+ "properties": {
37
+ "id": {
38
+ "type": "string",
39
+ "pattern": "^[a-z0-9-]+$"
40
+ },
41
+ "title": {
42
+ "type": "string"
43
+ },
44
+ "authors": {
45
+ "type": "array",
46
+ "items": {
47
+ "type": "string"
48
+ }
49
+ },
50
+ "year": {
51
+ "type": "integer"
52
+ },
53
+ "kind": {
54
+ "enum": [
55
+ "book",
56
+ "article",
57
+ "paper",
58
+ "standard",
59
+ "law",
60
+ "dataset",
61
+ "conversation"
62
+ ]
63
+ },
64
+ "summary": {
65
+ "type": "string"
66
+ },
67
+ "url": {
68
+ "type": "string",
69
+ "format": "uri"
70
+ },
71
+ "checked": {
72
+ "type": "string",
73
+ "format": "date",
74
+ "description": "When the url last resolved"
75
+ },
76
+ "informs": {
77
+ "type": "array",
78
+ "items": {
79
+ "type": "string",
80
+ "pattern": "^(noun|phase|gate|rule|field):[a-z0-9-_.]+$"
81
+ }
82
+ },
83
+ "stance": {
84
+ "type": "object",
85
+ "required": [
86
+ "is",
87
+ "why"
88
+ ],
89
+ "properties": {
90
+ "is": {
91
+ "enum": [
92
+ "adopted",
93
+ "adapted",
94
+ "alternative",
95
+ "rejected"
96
+ ]
97
+ },
98
+ "why": {
99
+ "type": "string"
100
+ }
101
+ },
102
+ "additionalProperties": false
103
+ }
104
+ },
105
+ "dependentRequired": {
106
+ "checked": [
107
+ "url"
108
+ ]
109
+ },
110
+ "additionalProperties": false
111
+ }
112
+ }
113
+ },
114
+ "additionalProperties": false
115
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "route-aliases.schema.json",
4
+ "title": "Route aliases",
5
+ "description": "Renamed routes (EE-032). Routes are an API that agents and scripts depend on, so a renamed record keeps its old route as an alias: the router follows it and answers with a deprecation note. Remove an alias only after the version it was deprecated in has been out for a release. interface/test.mjs checks that every alias points at a route that exists.",
6
+ "type": "object",
7
+ "required": ["aliases"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "aliases": {
11
+ "type": "array",
12
+ "items": {
13
+ "type": "object",
14
+ "required": ["from", "to", "since"],
15
+ "additionalProperties": false,
16
+ "properties": {
17
+ "from": { "type": "string", "description": "The old route" },
18
+ "to": { "type": "string", "description": "The route it became" },
19
+ "since": { "type": "string", "format": "date" },
20
+ "note": { "type": "string", "description": "Why it moved, cited by decision id" }
21
+ }
22
+ }
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,51 @@
1
+ // Runs a handoff's done-criteria and writes the result as evidence (EE-017).
2
+ //
3
+ // node schema/run-handoff.mjs <venture dir> <handoff id> [--runner <session or job id>]
4
+ //
5
+ // Each conformance and self-proof criterion's `check` is run as a shell command from the
6
+ // repository root; exit code 0 passes. A review criterion is recorded only when its reviewer
7
+ // gives a verdict: --review <criterion>=pass|fail --by <role> --note "<what was judged>". The
8
+ // result goes to <venture>/evidence/results/<handoff>-<timestamp>.json and is appended to
9
+ // the handoff's `evidence`; nothing else in the handoff changes, so its status stays the
10
+ // holder's call (and check-execution.mjs holds them to it).
11
+
12
+ import { execSync, spawnSync } from "node:child_process";
13
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
14
+ import { join, relative } from "node:path";
15
+
16
+ const [dir, id] = process.argv.slice(2);
17
+ if (!dir || !id) { console.error("usage: node schema/run-handoff.mjs <venture dir> <handoff id> [--runner <id>]"); process.exit(2); }
18
+ const opt = (k) => process.argv.includes(k) ? process.argv[process.argv.indexOf(k) + 1] : undefined;
19
+ const runner = opt("--runner") ?? "local";
20
+ const [reviewId, verdict] = (opt("--review") ?? "").split("=");
21
+ const root = new URL("..", import.meta.url).pathname;
22
+ const hPath = join(dir, "operations/handoffs", `${id}.json`);
23
+ const h = JSON.parse(readFileSync(hPath, "utf8"));
24
+ const dirty = execSync("git status --porcelain", { cwd: root, encoding: "utf8" }).trim() ? "+uncommitted" : "";
25
+ const version = execSync("git rev-parse --short HEAD", { cwd: root, encoding: "utf8" }).trim() + dirty;
26
+ const trim = (s) => s.trim().split("\n").slice(-12).join("\n");
27
+
28
+ const results = [];
29
+ for (const c of h.done_criteria.filter((d) => d.kind === "review" && d.id === reviewId)) {
30
+ if (!["pass", "fail"].includes(verdict) || !opt("--by") || !opt("--note")) { console.error("a review needs --review <id>=pass|fail, --by <role> and --note"); process.exit(2); }
31
+ results.push({ criterion: c.id, kind: "review", passed: verdict === "pass", by: opt("--by"), command: c.check, output: opt("--note") });
32
+ console.log(`${verdict === "pass" ? "pass" : "FAIL"} ${c.id} (review by ${opt("--by")})`);
33
+ }
34
+ for (const c of h.done_criteria.filter((d) => d.kind !== "review")) {
35
+ const run = spawnSync("/bin/bash", ["-c", c.check], { cwd: root, encoding: "utf8" });
36
+ const passed = run.status === 0, output = `${run.stdout}${run.stderr}`;
37
+ results.push({ criterion: c.id, kind: c.kind, passed, command: c.check, output: trim(output) });
38
+ console.log(`${passed ? "pass" : "FAIL"} ${c.id}`);
39
+ }
40
+
41
+ const at = new Date().toISOString().replace(/\.\d+Z$/, "Z");
42
+ const eid = `${h.id}-${at.replace(/[-:TZ]/g, "").slice(0, 14)}`;
43
+ const ev = { id: eid, subject: { kind: "handoff", id: h.id, version }, ran_at: at, runner, results, passed: results.every((r) => r.passed) };
44
+ mkdirSync(join(dir, "evidence/results"), { recursive: true });
45
+ const ePath = join(dir, "evidence/results", `${eid}.json`);
46
+ writeFileSync(ePath, JSON.stringify(ev, null, 2) + "\n");
47
+ h.evidence = [...(h.evidence ?? []), relative(join(dir, "operations/handoffs"), ePath)];
48
+ writeFileSync(hPath, JSON.stringify(h, null, 2) + "\n");
49
+ const pending = h.done_criteria.filter((d) => d.kind === "review" && d.id !== reviewId).map((d) => `${d.id} (${d.reviewer})`);
50
+ console.log(`${ev.passed ? "every criterion run passed" : "some criteria failed"}${pending.length ? `; review still owed: ${pending.join(", ")}` : ""}: ${relative(process.cwd(), ePath)}`);
51
+ process.exit(ev.passed ? 0 : 1);
@@ -0,0 +1,54 @@
1
+ {
2
+ "version": "0.3.0",
3
+ "note": "Which layers a new venture starts with, by phase (EE-012). Every venture has every layer; a layer not listed starts as false and is switched on when the venture needs it. Folder names are the layer names. Every venture also gets the three pillars, as short stubs that point to the full guides, and a venture profile (EE-010, EE-011). Governance is added when the venture is formalized: a legal form other than none, or other members.",
4
+ "layers": {
5
+ "discovery": [
6
+ "knowledge"
7
+ ],
8
+ "validation": [
9
+ "purpose",
10
+ "knowledge",
11
+ "operations",
12
+ "evidence"
13
+ ],
14
+ "beachhead": [
15
+ "purpose",
16
+ "knowledge",
17
+ "operations",
18
+ "evidence"
19
+ ],
20
+ "scale": [
21
+ "purpose",
22
+ "knowledge",
23
+ "operations",
24
+ "evidence",
25
+ "interface"
26
+ ],
27
+ "platform": [
28
+ "purpose",
29
+ "knowledge",
30
+ "operations",
31
+ "evidence",
32
+ "interface"
33
+ ]
34
+ },
35
+ "formalized": [
36
+ "governance"
37
+ ],
38
+ "pillars": {
39
+ "guides": "governance/venture-template/pillars/",
40
+ "stubs": {
41
+ "product": "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.",
42
+ "brand": "How the venture is known: its name, voice, promise wording and visual identity.",
43
+ "business": "How the venture sustains itself: business models, pricing, costs, legal form and funding."
44
+ }
45
+ },
46
+ "readme": {
47
+ "purpose": "Why this venture exists: its core product, products and the Product Anatomy matrix.",
48
+ "knowledge": "Memory: every record the venture keeps, including notes, specs, decisions and references.",
49
+ "operations": "How work is run here: the MAD record (.mad/) and chosen methods, and handoffs of work to people and agents.",
50
+ "evidence": "Did it work: reviews, evals and metrics.",
51
+ "governance": "Who may decide what: roles and decision rights.",
52
+ "interface": "How people and agents see this venture: consoles and dashboards."
53
+ }
54
+ }
@@ -0,0 +1,337 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "site-presence.schema.json",
4
+ "title": "Site presence",
5
+ "description": "How present a venture's public records are on its marketing site, weighed by who the site must speak to now (EE-062, EE-063). Written by operations/marketing/site/presence.mjs from a read of the site; version 0.x, ours and unevaluated.",
6
+ "type": "object",
7
+ "required": [
8
+ "version",
9
+ "site",
10
+ "judged_by",
11
+ "facts",
12
+ "score",
13
+ "audiences",
14
+ "pages",
15
+ "items",
16
+ "fix_first",
17
+ "icp",
18
+ "sitemap"
19
+ ],
20
+ "properties": {
21
+ "version": {
22
+ "type": "string"
23
+ },
24
+ "site": {
25
+ "type": "string"
26
+ },
27
+ "venture": {
28
+ "type": [
29
+ "string",
30
+ "null"
31
+ ]
32
+ },
33
+ "read_via": {
34
+ "enum": [
35
+ "firecrawl",
36
+ "fetch"
37
+ ]
38
+ },
39
+ "read_at": {
40
+ "type": "string"
41
+ },
42
+ "judged_by": {
43
+ "enum": [
44
+ "jev",
45
+ "keywords"
46
+ ]
47
+ },
48
+ "facts": {
49
+ "type": "object"
50
+ },
51
+ "score": {
52
+ "type": "integer",
53
+ "minimum": 0,
54
+ "maximum": 100
55
+ },
56
+ "audiences": {
57
+ "type": "object",
58
+ "additionalProperties": {
59
+ "type": "object",
60
+ "required": [
61
+ "weight"
62
+ ],
63
+ "properties": {
64
+ "weight": {
65
+ "type": "number"
66
+ },
67
+ "score": {
68
+ "type": [
69
+ "integer",
70
+ "null"
71
+ ]
72
+ }
73
+ }
74
+ }
75
+ },
76
+ "pages": {
77
+ "type": "array",
78
+ "items": {
79
+ "type": "object",
80
+ "required": [
81
+ "path",
82
+ "type",
83
+ "level"
84
+ ],
85
+ "properties": {
86
+ "path": {
87
+ "type": "string"
88
+ },
89
+ "title": {
90
+ "type": "string"
91
+ },
92
+ "type": {
93
+ "type": "string"
94
+ },
95
+ "level": {
96
+ "enum": [
97
+ "home",
98
+ "nav",
99
+ "linked",
100
+ "anywhere"
101
+ ]
102
+ }
103
+ }
104
+ }
105
+ },
106
+ "items": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "object",
110
+ "required": [
111
+ "id",
112
+ "label",
113
+ "record",
114
+ "need",
115
+ "required",
116
+ "score",
117
+ "note"
118
+ ],
119
+ "properties": {
120
+ "id": {
121
+ "type": "string"
122
+ },
123
+ "label": {
124
+ "type": "string"
125
+ },
126
+ "record": {
127
+ "type": "string"
128
+ },
129
+ "need": {
130
+ "type": "number"
131
+ },
132
+ "required": {
133
+ "enum": [
134
+ "home",
135
+ "nav",
136
+ "linked",
137
+ "anywhere"
138
+ ]
139
+ },
140
+ "for": {
141
+ "type": "array",
142
+ "items": {
143
+ "type": "string"
144
+ }
145
+ },
146
+ "at": {
147
+ "enum": [
148
+ "home",
149
+ "nav",
150
+ "linked",
151
+ "anywhere",
152
+ null
153
+ ]
154
+ },
155
+ "score": {
156
+ "enum": [
157
+ 0,
158
+ 0.5,
159
+ 1
160
+ ]
161
+ },
162
+ "found": {
163
+ "type": "array"
164
+ },
165
+ "note": {
166
+ "type": "string"
167
+ },
168
+ "evidence": {
169
+ "type": "array",
170
+ "description": "Who needs the item and why: each audience's weight, the item's importance to it, and the reason (for customers, from the customer types)",
171
+ "items": {
172
+ "type": "object",
173
+ "required": [
174
+ "audience",
175
+ "need",
176
+ "why",
177
+ "source"
178
+ ],
179
+ "properties": {
180
+ "audience": {
181
+ "type": "string"
182
+ },
183
+ "weight": {
184
+ "type": "number"
185
+ },
186
+ "importance": {
187
+ "type": "number"
188
+ },
189
+ "need": {
190
+ "type": "number"
191
+ },
192
+ "why": {
193
+ "type": "string"
194
+ },
195
+ "source": {
196
+ "enum": [
197
+ "customer types",
198
+ "matrix"
199
+ ]
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ },
207
+ "fix_first": {
208
+ "type": "array",
209
+ "items": {
210
+ "type": "string"
211
+ }
212
+ },
213
+ "icp": {
214
+ "type": "object",
215
+ "required": [
216
+ "text",
217
+ "source",
218
+ "cite",
219
+ "types"
220
+ ],
221
+ "description": "Who the site is for and where that comes from: the founder's words, the venture's ICP record, or inferred from the home page; and the customer types Jev placed it in",
222
+ "properties": {
223
+ "text": {
224
+ "type": "string"
225
+ },
226
+ "source": {
227
+ "enum": [
228
+ "founder",
229
+ "record",
230
+ "inferred"
231
+ ]
232
+ },
233
+ "cite": {
234
+ "type": "string"
235
+ },
236
+ "types": {
237
+ "type": "array",
238
+ "items": {
239
+ "type": "object",
240
+ "required": [
241
+ "id",
242
+ "label"
243
+ ],
244
+ "properties": {
245
+ "id": {
246
+ "type": "string"
247
+ },
248
+ "label": {
249
+ "type": "string"
250
+ },
251
+ "p": {
252
+ "type": [
253
+ "number",
254
+ "null"
255
+ ]
256
+ }
257
+ }
258
+ }
259
+ }
260
+ }
261
+ },
262
+ "sitemap": {
263
+ "type": "array",
264
+ "description": "The site's routes as a tree from the home page, each rated on the items that belong there; ghost routes are pages the venture's priorities call for that the site lacks",
265
+ "items": {
266
+ "type": "object",
267
+ "required": [
268
+ "path",
269
+ "parent",
270
+ "label",
271
+ "type",
272
+ "level",
273
+ "read",
274
+ "rating",
275
+ "expected",
276
+ "found",
277
+ "missing"
278
+ ],
279
+ "properties": {
280
+ "path": {
281
+ "type": "string"
282
+ },
283
+ "parent": {
284
+ "type": [
285
+ "string",
286
+ "null"
287
+ ]
288
+ },
289
+ "label": {
290
+ "type": "string"
291
+ },
292
+ "type": {
293
+ "type": "string"
294
+ },
295
+ "level": {
296
+ "enum": [
297
+ "home",
298
+ "nav",
299
+ "linked",
300
+ "anywhere"
301
+ ]
302
+ },
303
+ "read": {
304
+ "type": "boolean"
305
+ },
306
+ "rating": {
307
+ "type": [
308
+ "integer",
309
+ "null"
310
+ ]
311
+ },
312
+ "expected": {
313
+ "type": "array",
314
+ "items": {
315
+ "type": "string"
316
+ }
317
+ },
318
+ "found": {
319
+ "type": "array",
320
+ "items": {
321
+ "type": "string"
322
+ }
323
+ },
324
+ "missing": {
325
+ "type": "array",
326
+ "items": {
327
+ "type": "string"
328
+ }
329
+ },
330
+ "ghost": {
331
+ "type": "boolean"
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "strategic-foundation.schema.json",
4
+ "title": "Strategic foundation frame",
5
+ "description": "The framework's map of strategic foundation (EE-051): per question of the Five Ws and How plus whether, the record attributes that answer it.",
6
+ "type": "object",
7
+ "required": [
8
+ "version",
9
+ "questions"
10
+ ],
11
+ "properties": {
12
+ "version": {
13
+ "type": "string"
14
+ },
15
+ "note": {
16
+ "type": "string"
17
+ },
18
+ "questions": {
19
+ "type": "array",
20
+ "items": {
21
+ "type": "object",
22
+ "required": [
23
+ "id",
24
+ "ask",
25
+ "statements"
26
+ ],
27
+ "properties": {
28
+ "id": {
29
+ "type": "string"
30
+ },
31
+ "ask": {
32
+ "type": "string"
33
+ },
34
+ "statements": {
35
+ "type": "array",
36
+ "items": {
37
+ "type": "object",
38
+ "required": [
39
+ "id",
40
+ "record",
41
+ "attribute"
42
+ ],
43
+ "properties": {
44
+ "id": {
45
+ "type": "string",
46
+ "pattern": "^[a-z0-9-]+$"
47
+ },
48
+ "record": {
49
+ "type": [
50
+ "string",
51
+ "null"
52
+ ]
53
+ },
54
+ "attribute": {
55
+ "type": [
56
+ "string",
57
+ "null"
58
+ ]
59
+ },
60
+ "derived_from": {
61
+ "type": "string",
62
+ "description": "The id of another statement this one is derived from; it takes that statement's status and value"
63
+ },
64
+ "note": {
65
+ "type": "string"
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "stream.schema.json",
4
+ "title": "Data stream",
5
+ "description": "Declares one append-only stream under a data package's _streams/<id>/ (EE-070). sensitive true means the stream's events stay out of git and only summary.md is versioned.",
6
+ "type": "object",
7
+ "required": ["id", "sensitive"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
11
+ "sensitive": { "type": "boolean" },
12
+ "summary": { "type": "string", "description": "What the versioned summary.md covers, when sensitive is true" }
13
+ }
14
+ }