naive-framework 0.1.0 → 0.2.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.
- package/AGENTS.md +2 -1
- package/docs/decisions/decisions.json +27 -0
- package/docs/reference/ROUTES.md +36 -37
- package/governance/layer.json +2 -1
- package/governance/venture-template/roles/venture-roles.json +62 -0
- package/interface/acting.mjs +83 -0
- package/interface/adapters/claude-code.json +16 -0
- package/interface/adapters/codex.json +14 -0
- package/interface/adapters/cursor.json +16 -0
- package/interface/adapters.mjs +182 -0
- package/interface/api/server.mjs +4 -2
- package/interface/boundaries.mjs +218 -0
- package/interface/brand.mjs +214 -0
- package/interface/cli/freshness.mjs +59 -0
- package/interface/cli/guard.mjs +6 -0
- package/interface/cli/mentura.mjs +78 -8
- package/interface/cli/naive.mjs +33 -8
- package/interface/context.mjs +524 -0
- package/interface/demo/board.mjs +1 -1
- package/interface/dev/setup.mjs +84 -0
- package/interface/gate-hooks.mjs +36 -0
- package/interface/harness/evals.mjs +3 -3
- package/interface/harness/run.mjs +4 -4
- package/interface/instrumentation.mjs +86 -0
- package/interface/kit-boundary.mjs +73 -0
- package/interface/layer.json +8 -2
- package/interface/mcp/server.mjs +47 -7
- package/interface/package-routes.mjs +196 -0
- package/interface/provenance.mjs +24 -1
- package/interface/reads.mjs +173 -0
- package/interface/release-card.mjs +42 -0
- package/interface/router.mjs +101 -28
- package/interface/skills/naive-setup/SKILL.md +71 -0
- package/interface/skills/naive-setup/artifact.html +83 -0
- package/interface/vitals.mjs +115 -0
- package/interface/writes.mjs +190 -0
- package/knowledge/freshness.json +85 -0
- package/knowledge/layer.json +11 -3
- package/knowledge/templates/glossary.md +23 -0
- package/operations/layer.json +10 -3
- package/operations/templates/marketing-brand.md +46 -0
- package/operations/templates/public-assets.md +39 -0
- package/package.json +3 -1
- package/packages/catalog.json +8 -0
- package/packages/customers/package.json +21 -1
- package/packages/deals/package.json +27 -0
- package/packages/decisions/package.json +12 -1
- package/packages/finance/frames/fund-without-ceding-control.frame.json +177 -0
- package/packages/foundation/package.json +8 -1
- package/packages/fund/package.json +48 -0
- package/packages/marketing/package.json +10 -4
- package/packages/money/package.json +24 -3
- package/packages/validation/package.json +13 -0
- package/platform/README.md +6 -0
- package/platform/adapter.json +15 -0
- package/platform/integrations/remote-image.mjs +79 -0
- package/platform/integrations/rho.mjs +7 -6
- package/platform/kits/README.md +8 -1
- package/platform/kits/agent-upgrade/kit.json +15 -0
- package/platform/kits/agent-upgrade/run.mjs +82 -0
- package/platform/kits/agent-upgrade/stand-in-agent.mjs +32 -0
- package/platform/kits/validation-kickoff/kit.json +29 -0
- package/platform/webhooks/server.mjs +70 -0
- package/purpose/frameworks/idea-map/ideamap.mjs +4 -2
- package/schema/README.md +1 -0
- package/schema/access.mjs +57 -0
- package/schema/adapter.schema.json +33 -0
- package/schema/assets.mjs +212 -0
- package/schema/brand.mjs +373 -0
- package/schema/build-release.mjs +61 -0
- package/schema/caching.mjs +505 -0
- package/schema/check-assets.mjs +24 -0
- package/schema/check-brand.mjs +24 -0
- package/schema/check-config.mjs +110 -0
- package/schema/check-nextjs-status.mjs +3 -1
- package/schema/check-people.mjs +70 -0
- package/schema/check-sources.mjs +9 -1
- package/schema/data-model.json +334 -8
- package/schema/deal.schema.json +80 -0
- package/schema/decisions.mjs +7 -1
- package/schema/examples/frames/judge.mjs +10 -0
- package/schema/examples/venture-type/jev.mjs +12 -0
- package/schema/examples/workspace/ventures/acme-labs/AGENTS.md +17 -0
- package/schema/examples/workspace/ventures/acme-labs/accounts/.gitkeep +0 -0
- package/schema/examples/workspace/ventures/acme-labs/decisions/discovery-goal.decision.json +23 -0
- package/schema/examples/workspace/ventures/acme-labs/decisions/statement-icp.decision.json +22 -0
- package/schema/examples/workspace/ventures/acme-labs/decisions/statement-problem.decision.json +22 -0
- package/schema/examples/workspace/ventures/acme-labs/decisions/venture.team.decision.json +37 -0
- package/schema/examples/workspace/ventures/acme-labs/knowledge/README.md +3 -0
- package/schema/examples/workspace/ventures/acme-labs/knowledge/sources.json +46 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000001.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000002.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000003.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000004.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000005.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000006.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000007.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000008.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000009.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000010.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000011.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000012.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000013.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/30000000-0000-4000-8000-000000000014.json +12 -0
- package/schema/examples/workspace/ventures/acme-labs/money/_streams/transactions/stream.json +5 -0
- package/schema/examples/workspace/ventures/acme-labs/money/_summary.json +30 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/customer-service/README.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/customer-service/department.json +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/finance/README.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/finance/department.json +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/human-capital/README.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/human-capital/department.json +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/it/README.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/it/department.json +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/marketing-and-sales/README.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/marketing-and-sales/department.json +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/products/README.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/products/department.json +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/strategy/README.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/operations/departments/strategy/department.json +5 -0
- package/schema/examples/workspace/ventures/acme-labs/people/founders/maya-chen.json +15 -0
- package/schema/examples/workspace/ventures/acme-labs/people/people.json +22 -0
- package/schema/examples/workspace/ventures/acme-labs/pillars/brand.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/pillars/business.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/pillars/product.md +5 -0
- package/schema/examples/workspace/ventures/acme-labs/products/.gitkeep +0 -0
- package/schema/examples/workspace/ventures/acme-labs/products/decisions/product.core-product.decision.json +28 -0
- package/schema/examples/workspace/ventures/acme-labs/products/decisions/product.exists.decision.json +38 -0
- package/schema/examples/workspace/ventures/acme-labs/products/decisions/product.flagship.decision.json +27 -0
- package/schema/examples/workspace/ventures/acme-labs/profile.md +12 -0
- package/schema/examples/workspace/ventures/acme-labs/provenance.jsonl +12 -0
- package/schema/examples/workspace/ventures/acme-labs/raw/dump.md +6 -0
- package/schema/examples/workspace/ventures/acme-labs/venture.json +27 -0
- package/schema/examples/workspace/ventures/northstar/AGENTS.md +17 -0
- package/schema/examples/workspace/ventures/northstar/accounts/.gitkeep +0 -0
- package/schema/examples/workspace/ventures/northstar/deals/ductline.json +8 -0
- package/schema/examples/workspace/ventures/northstar/deals/kilnworks.json +14 -0
- package/schema/examples/workspace/ventures/northstar/decisions/venture.team.decision.json +31 -0
- package/schema/examples/workspace/ventures/northstar/evidence/README.md +3 -0
- package/schema/examples/workspace/ventures/northstar/fund/decisions/terms.decision.json +27 -0
- package/schema/examples/workspace/ventures/northstar/fund/decisions/terms.first-close.decision.json +27 -0
- package/schema/examples/workspace/ventures/northstar/fund/decisions/thesis.decision.json +26 -0
- package/schema/examples/workspace/ventures/northstar/fund/terms.json +22 -0
- package/schema/examples/workspace/ventures/northstar/fund/thesis.json +22 -0
- package/schema/examples/workspace/ventures/northstar/governance/README.md +3 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/external-relationships/charter.md +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/external-relationships/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/finance/charter.md +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/finance/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/human-capital/charter.md +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/human-capital/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/risk-and-compliance/charter.md +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/risk-and-compliance/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/strategy/charter.md +5 -0
- package/schema/examples/workspace/ventures/northstar/governance/departments/strategy/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/knowledge/README.md +3 -0
- package/schema/examples/workspace/ventures/northstar/operations/README.md +3 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/external-relationships/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/external-relationships/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/finance/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/finance/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/human-capital/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/human-capital/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/risk-and-compliance/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/risk-and-compliance/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/strategy/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/operations/departments/strategy/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/people/founders/ana-ruiz.json +13 -0
- package/schema/examples/workspace/ventures/northstar/people/founders/ben-okafor.json +7 -0
- package/schema/examples/workspace/ventures/northstar/people/people.json +27 -0
- package/schema/examples/workspace/ventures/northstar/pillars/brand.md +5 -0
- package/schema/examples/workspace/ventures/northstar/pillars/business.md +5 -0
- package/schema/examples/workspace/ventures/northstar/pillars/product.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/AGENTS.md +17 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/accounts/.gitkeep +0 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/decisions/venture.team.decision.json +31 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/knowledge/README.md +3 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/customer-service/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/customer-service/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/finance/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/finance/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/human-capital/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/human-capital/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/it/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/it/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/marketing-and-sales/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/marketing-and-sales/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/products/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/products/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/strategy/README.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/operations/departments/strategy/department.json +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/pillars/brand.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/pillars/business.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/pillars/product.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/products/.gitkeep +0 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/products/decisions/product.core-product.decision.json +28 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/products/decisions/product.exists.decision.json +32 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/products/decisions/product.flagship.decision.json +27 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/profile.md +5 -0
- package/schema/examples/workspace/ventures/northstar/portfolio/kilnworks/venture.json +27 -0
- package/schema/examples/workspace/ventures/northstar/products/.gitkeep +0 -0
- package/schema/examples/workspace/ventures/northstar/profile.md +5 -0
- package/schema/examples/workspace/ventures/northstar/provenance.jsonl +3 -0
- package/schema/examples/workspace/ventures/northstar/purpose/README.md +3 -0
- package/schema/examples/workspace/ventures/northstar/venture.json +49 -0
- package/schema/founder.schema.json +72 -0
- package/schema/frame.schema.json +240 -0
- package/schema/frames.mjs +228 -0
- package/schema/freshness-log.schema.json +40 -0
- package/schema/freshness-profiles.schema.json +44 -0
- package/schema/freshness.mjs +473 -0
- package/schema/fund-terms.schema.json +107 -0
- package/schema/fund-thesis.schema.json +87 -0
- package/schema/gate-drafts.mjs +130 -0
- package/schema/gate.mjs +105 -11
- package/schema/glossary.schema.json +25 -0
- package/schema/init-venture.mjs +38 -8
- package/schema/judgment.schema.json +38 -0
- package/schema/kit.schema.json +47 -0
- package/schema/kits.mjs +24 -0
- package/schema/knowledge-sources.schema.json +145 -15
- package/schema/layer.json +16 -3
- package/schema/marketing-brand.schema.json +116 -0
- package/schema/migrations/kit-to-package.mjs +94 -0
- package/schema/migrations/package-layout.mjs +86 -0
- package/schema/model-steps.mjs +717 -0
- package/schema/money-summary.schema.json +138 -0
- package/schema/naive-config.mjs +165 -0
- package/schema/naive-config.schema.json +268 -0
- package/schema/need-now.json +171 -0
- package/schema/need-now.mjs +3 -2
- package/schema/packages.mjs +10 -5
- package/schema/people.schema.json +86 -0
- package/schema/public-assets.schema.json +76 -0
- package/schema/release-read.mjs +111 -0
- package/schema/releases.mjs +497 -0
- package/schema/setup.mjs +164 -0
- package/schema/stale.mjs +111 -0
- package/schema/start-release.mjs +41 -0
- package/schema/structure.mjs +186 -0
- package/schema/systems-catalog.json +126 -0
- package/schema/systems-catalog.schema.json +78 -0
- package/schema/trigger.schema.json +44 -0
- package/schema/triggers.mjs +237 -0
- package/schema/upgrade-registry.schema.json +60 -0
- package/schema/upgrade-venture.mjs +96 -118
- package/schema/upgrades.json +69 -0
- package/schema/upgrades.mjs +385 -0
- package/schema/validate.py +19 -10
- package/schema/venture-role.schema.json +64 -0
- package/schema/venture-type.mjs +62 -0
- package/schema/venture-types.json +346 -0
- package/schema/venture-types.schema.json +129 -0
- package/schema/venture.schema.json +53 -0
package/operations/layer.json
CHANGED
|
@@ -23,7 +23,11 @@
|
|
|
23
23
|
"marketing-matrix",
|
|
24
24
|
"site-presence",
|
|
25
25
|
"marketing-sitemap",
|
|
26
|
-
"marketing-content"
|
|
26
|
+
"marketing-content",
|
|
27
|
+
"people",
|
|
28
|
+
"founder",
|
|
29
|
+
"marketing-brand",
|
|
30
|
+
"public-assets"
|
|
27
31
|
],
|
|
28
32
|
"reads": [
|
|
29
33
|
"agent-capability",
|
|
@@ -37,7 +41,8 @@
|
|
|
37
41
|
"publication-policy",
|
|
38
42
|
"role",
|
|
39
43
|
"telos",
|
|
40
|
-
"venture"
|
|
44
|
+
"venture",
|
|
45
|
+
"raw-source"
|
|
41
46
|
],
|
|
42
47
|
"writes": [
|
|
43
48
|
"evidence"
|
|
@@ -50,7 +55,9 @@
|
|
|
50
55
|
"schema/check-departments.mjs",
|
|
51
56
|
"operations/marketing/site/presence.mjs",
|
|
52
57
|
"operations/marketing/site/plan.mjs",
|
|
53
|
-
"operations/marketing/check-public.mjs"
|
|
58
|
+
"operations/marketing/check-public.mjs",
|
|
59
|
+
"schema/check-brand.mjs",
|
|
60
|
+
"schema/check-assets.mjs"
|
|
54
61
|
],
|
|
55
62
|
"gaps": [
|
|
56
63
|
"No run-handoff skill: the handoff contract is prose (operations/handoff-v2.md) beside three scripts in schema/ (check-ready, run-handoff, check-execution)",
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: template
|
|
3
|
+
tags: [everything-ecosystem, operations, marketing, brand, template]
|
|
4
|
+
ai-model: claude-opus-5.5
|
|
5
|
+
created: 2026-10-29T06:04:07Z
|
|
6
|
+
source: hybrid
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Template: brand
|
|
10
|
+
|
|
11
|
+
Fills `<venture>/marketing/brand.json` (`schema/marketing-brand.schema.json`). The brand is the venture's global stylesheet: every agent's layout carries its voice and fonts, and `marketing/brand/tokens` renders it as design tokens and CSS for any interface. Check it with `mentura marketing/brand check`.
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"version": "0.1.0",
|
|
16
|
+
"venture": "<venture id>",
|
|
17
|
+
"name": "<the name as the brand writes it>",
|
|
18
|
+
"colors": { "accent": "#1d4e89", "ink": "#111111", "paper": "#ffffff" },
|
|
19
|
+
"typefaces": [
|
|
20
|
+
{ "id": "inter", "family": "Inter", "source": "self-hosted", "license": "OFL-1.1", "files": ["public/fonts/inter.woff2"], "fallback": ["system-ui", "sans-serif"] }
|
|
21
|
+
],
|
|
22
|
+
"fonts": { "body": "inter", "heading": "inter" },
|
|
23
|
+
"voice": {
|
|
24
|
+
"tone": ["plain", "warm"],
|
|
25
|
+
"rules": [{ "id": "no-jargon", "avoid": ["synergy", "leverage"], "use": "work with", "why": "our customers do not talk like this" }]
|
|
26
|
+
},
|
|
27
|
+
"marks": [
|
|
28
|
+
{ "kind": "logo", "asset": "public/logo.svg" },
|
|
29
|
+
{ "kind": "icon", "asset": "public/icon.svg" },
|
|
30
|
+
{ "kind": "apple-icon", "asset": "public/apple-icon.png" },
|
|
31
|
+
{ "kind": "favicon", "asset": "public/favicon.ico" }
|
|
32
|
+
],
|
|
33
|
+
"design_systems": [{ "id": "radix", "name": "Radix Colors", "url": "https://www.radix-ui.com/colors", "version": "3.0.0", "license": "MIT", "uses": ["the blue scale"] }],
|
|
34
|
+
"scopes": [{ "for": "investors", "colors": { "accent": "#000000" }, "voice": { "tone": ["direct"] } }]
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## What each part means
|
|
39
|
+
|
|
40
|
+
- **Colors** are hex values by token name.
|
|
41
|
+
- **Typefaces** are defined once, each with its license. A self-hosted face names its files in `public/`, each registered in `public/assets.json` under the same license. A remote face fails the check: every reader's browser would call another host.
|
|
42
|
+
- **Fonts** assign a typeface to a role everywhere. A scope can assign a different one under a route prefix.
|
|
43
|
+
- **Voice** is the stylesheet for words: the tone, and phrases the venture never uses, with what to use instead.
|
|
44
|
+
- **Marks** are the logo and icons. An apple-icon is a 180x180 PNG, an icon is square, a favicon is an ICO.
|
|
45
|
+
- **Design systems** are linked, never copied in.
|
|
46
|
+
- **Scopes** override the brand for a route prefix. The nearer scope wins.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: template
|
|
3
|
+
tags: [everything-ecosystem, operations, marketing, assets, template]
|
|
4
|
+
ai-model: claude-opus-5.5
|
|
5
|
+
created: 2026-10-29T06:04:07Z
|
|
6
|
+
source: hybrid
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Template: public assets
|
|
10
|
+
|
|
11
|
+
Fills `<venture>/public/assets.json` (`schema/public-assets.schema.json`), the register of what the venture ships as it is. Do not write it by hand: `mentura assets add` registers a file and code fills its facts; `mentura assets fill` refreshes them. Check it with `mentura public/assets check`.
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"version": "0.1.0",
|
|
16
|
+
"remote_hosts": ["images.example.com"],
|
|
17
|
+
"assets": [
|
|
18
|
+
{
|
|
19
|
+
"path": "public/logo.svg",
|
|
20
|
+
"source": "Acme design",
|
|
21
|
+
"license": "owned",
|
|
22
|
+
"credit": "Acme",
|
|
23
|
+
"alt": { "text": "Acme wordmark", "by": "agent" },
|
|
24
|
+
"facts": { "type": "svg", "width": 200, "height": 60, "bytes": 812, "sha256": "<filled by code>" }
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"remote": [
|
|
28
|
+
{ "id": "images-example-com-clinic", "url": "https://images.example.com/clinic.jpg", "license": "all-rights-reserved", "credit": "Ana Photo" }
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## The rules the check holds
|
|
34
|
+
|
|
35
|
+
- Every file in `public/` has an entry with a source, a license and a credit.
|
|
36
|
+
- Facts are read from the file by code. An entry whose facts differ from the file fails.
|
|
37
|
+
- An image needs alt text unless it is marked decorative. Alt text an agent wrote is pending until a person confirms it with `mentura assets confirm`.
|
|
38
|
+
- A remote image is a link with a note in `raw/sources/<id>/`. A full copy in `public/` needs a license that allows one.
|
|
39
|
+
- `remote_hosts` lists the hosts an agent may fetch from.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "naive-framework",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Naive, a venture development framework: conventions, routes, records, checks and an agent interface for building a venture.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -47,6 +47,8 @@
|
|
|
47
47
|
"!**/*.pem",
|
|
48
48
|
"!**/*.key",
|
|
49
49
|
"!**/_private/",
|
|
50
|
+
"!**/_internal/",
|
|
51
|
+
"!platform/agents/",
|
|
50
52
|
"!**/.DS_Store"
|
|
51
53
|
],
|
|
52
54
|
"keywords": [
|
package/packages/catalog.json
CHANGED
|
@@ -16,6 +16,26 @@
|
|
|
16
16
|
"templates": [],
|
|
17
17
|
"checks": ["schema/check-data-packages.mjs"],
|
|
18
18
|
"skill": null,
|
|
19
|
-
"use_model": [
|
|
19
|
+
"use_model": [
|
|
20
|
+
{
|
|
21
|
+
"step": "stage",
|
|
22
|
+
"kind": "choice",
|
|
23
|
+
"for_each": "customers",
|
|
24
|
+
"question": "Which buying stage do the notes {item.notes} put this customer at?",
|
|
25
|
+
"inputs": ["item.notes"],
|
|
26
|
+
"options": ["aware", "trying", "paying", "gone"],
|
|
27
|
+
"threshold": 0.7
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"step": "summary",
|
|
31
|
+
"kind": "draft",
|
|
32
|
+
"for_each": "customers",
|
|
33
|
+
"after": ["stage"],
|
|
34
|
+
"question": "Write one plain sentence about this customer from the notes {item.notes} and the stage {steps.stage}, with the seat count written as {{seats}}.",
|
|
35
|
+
"inputs": ["item.notes"],
|
|
36
|
+
"computed": { "seats": { "item": "seats" } },
|
|
37
|
+
"keep": ["seats"]
|
|
38
|
+
}
|
|
39
|
+
],
|
|
20
40
|
"complete": false
|
|
21
41
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "deals",
|
|
3
|
+
"title": "Deals",
|
|
4
|
+
"kind": "data",
|
|
5
|
+
"purpose": "A fund's pipeline: one [id].json per company, from sourced to invested or passed (EE-082). An investment becomes a nested venture under portfolio/. Never complete.",
|
|
6
|
+
"required": [],
|
|
7
|
+
"optional": [],
|
|
8
|
+
"refs": [
|
|
9
|
+
"fund-thesis"
|
|
10
|
+
],
|
|
11
|
+
"gates": [
|
|
12
|
+
"coverage",
|
|
13
|
+
"freshness"
|
|
14
|
+
],
|
|
15
|
+
"layer": "purpose",
|
|
16
|
+
"records": [
|
|
17
|
+
"deal"
|
|
18
|
+
],
|
|
19
|
+
"schemas": [
|
|
20
|
+
"schema/deal.schema.json"
|
|
21
|
+
],
|
|
22
|
+
"templates": [],
|
|
23
|
+
"checks": [],
|
|
24
|
+
"skill": null,
|
|
25
|
+
"use_model": [],
|
|
26
|
+
"complete": false
|
|
27
|
+
}
|
|
@@ -13,5 +13,16 @@
|
|
|
13
13
|
"templates": [],
|
|
14
14
|
"checks": [],
|
|
15
15
|
"skill": null,
|
|
16
|
-
"use_model": []
|
|
16
|
+
"use_model": [],
|
|
17
|
+
"use_cache": [
|
|
18
|
+
{
|
|
19
|
+
"route": "governance/decisions",
|
|
20
|
+
"level": "record",
|
|
21
|
+
"life": "minutes",
|
|
22
|
+
"vary": [
|
|
23
|
+
"hour",
|
|
24
|
+
"env:DECISIONS_NOW"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
]
|
|
17
28
|
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "fund-without-ceding-control",
|
|
3
|
+
"title": "Fund growth without ceding control",
|
|
4
|
+
"functions": [
|
|
5
|
+
"finance",
|
|
6
|
+
"governance"
|
|
7
|
+
],
|
|
8
|
+
"triggers": [
|
|
9
|
+
"I need investors to scale but I don't want to give up control",
|
|
10
|
+
"I want to raise money without losing control of my company",
|
|
11
|
+
"I need funding but I don't want to give away equity",
|
|
12
|
+
"I don't want investors telling me what to do"
|
|
13
|
+
],
|
|
14
|
+
"goal": "{goal}",
|
|
15
|
+
"premises": [
|
|
16
|
+
{
|
|
17
|
+
"id": "needs-outside-money",
|
|
18
|
+
"claim": "Reaching the venture's goal needs outside money now, beyond what revenue, customers or partners can fund within the current runway.",
|
|
19
|
+
"attack": "test-the-goal",
|
|
20
|
+
"reads": [
|
|
21
|
+
"goal",
|
|
22
|
+
"phase",
|
|
23
|
+
"revenue",
|
|
24
|
+
"runway"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "money-means-ownership",
|
|
29
|
+
"claim": "For this venture, taking outside money means selling ownership.",
|
|
30
|
+
"attack": "split-the-dimension",
|
|
31
|
+
"reads": [
|
|
32
|
+
"phase",
|
|
33
|
+
"revenue",
|
|
34
|
+
"jurisdiction"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "ownership-means-control",
|
|
39
|
+
"claim": "For this venture, giving up ownership means giving up control.",
|
|
40
|
+
"attack": "split-the-dimension",
|
|
41
|
+
"reads": [
|
|
42
|
+
"cap_table",
|
|
43
|
+
"control_rights"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "control-is-one-thing",
|
|
48
|
+
"claim": "The control the founder wants to keep is one thing, not several separate rights.",
|
|
49
|
+
"attack": "name-the-control",
|
|
50
|
+
"reads": [
|
|
51
|
+
"control_rights"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"attacks": [
|
|
56
|
+
"test-the-goal",
|
|
57
|
+
"split-the-dimension",
|
|
58
|
+
"name-the-control",
|
|
59
|
+
"false-dichotomy",
|
|
60
|
+
"sequence-not-choose"
|
|
61
|
+
],
|
|
62
|
+
"dichotomy": "Take outside money and lose control, or keep control and grow more slowly.",
|
|
63
|
+
"reframe": "With the goal \"{goal}\", which ways of funding it keep the specific control rights the founder will not give up, in the {phase} phase?",
|
|
64
|
+
"composes": [
|
|
65
|
+
"which-control-matters",
|
|
66
|
+
"fund-growth-how"
|
|
67
|
+
],
|
|
68
|
+
"props": [
|
|
69
|
+
"phase",
|
|
70
|
+
"goal",
|
|
71
|
+
"revenue",
|
|
72
|
+
"runway",
|
|
73
|
+
"cap_table",
|
|
74
|
+
"control_rights",
|
|
75
|
+
"jurisdiction"
|
|
76
|
+
],
|
|
77
|
+
"freshness": {
|
|
78
|
+
"look_for": [
|
|
79
|
+
"funding structures that separate money from ownership",
|
|
80
|
+
"structures that separate ownership from votes, board seats or vetoes"
|
|
81
|
+
],
|
|
82
|
+
"filter_by": [
|
|
83
|
+
"jurisdiction",
|
|
84
|
+
"phase",
|
|
85
|
+
"revenue"
|
|
86
|
+
],
|
|
87
|
+
"max_age_days": 180,
|
|
88
|
+
"cite": true
|
|
89
|
+
},
|
|
90
|
+
"reasoning": [
|
|
91
|
+
"Restate the goal and the decisions hidden in the founder's sentence before proposing anything.",
|
|
92
|
+
"Test each premise as a yes/no proposition against the venture's facts; say unknown when the facts do not settle it.",
|
|
93
|
+
"Say whether the trade is false, a real trade-off, or a sequence.",
|
|
94
|
+
"Draw funding options only from a dated, cited lookup, never from memory.",
|
|
95
|
+
"Return decisions with open options. Do not pick one."
|
|
96
|
+
],
|
|
97
|
+
"emits": [
|
|
98
|
+
{
|
|
99
|
+
"id": "which-control-matters",
|
|
100
|
+
"question": "Which control rights will the founder not give up?",
|
|
101
|
+
"options": [
|
|
102
|
+
"the product's direction",
|
|
103
|
+
"votes on major decisions",
|
|
104
|
+
"board seats",
|
|
105
|
+
"vetoes over a sale or new money",
|
|
106
|
+
"day-to-day authority to run the venture",
|
|
107
|
+
"the mission"
|
|
108
|
+
],
|
|
109
|
+
"layer": "governance",
|
|
110
|
+
"needed_in": "discovery"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"id": "fund-growth-how",
|
|
114
|
+
"question": "Which way of funding the goal keeps the control rights the founder will not give up?",
|
|
115
|
+
"options_from": "lookup",
|
|
116
|
+
"layer": "governance",
|
|
117
|
+
"needed_in": "validation"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"cases": [
|
|
121
|
+
{
|
|
122
|
+
"id": "solo-saas-pre-revenue",
|
|
123
|
+
"facts": {
|
|
124
|
+
"phase": "discovery",
|
|
125
|
+
"goal": "ten paying clinics by June",
|
|
126
|
+
"revenue": "none",
|
|
127
|
+
"runway": "4 months of the founder's savings",
|
|
128
|
+
"cap_table": "the founder owns 100%",
|
|
129
|
+
"control_rights": "the product's direction",
|
|
130
|
+
"jurisdiction": "Texas, USA"
|
|
131
|
+
},
|
|
132
|
+
"expect": {
|
|
133
|
+
"needs-outside-money": "unknown",
|
|
134
|
+
"money-means-ownership": "unknown",
|
|
135
|
+
"ownership-means-control": "no",
|
|
136
|
+
"control-is-one-thing": "yes",
|
|
137
|
+
"dichotomy": "sequence"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "services-firm-profitable",
|
|
142
|
+
"facts": {
|
|
143
|
+
"phase": "beachhead",
|
|
144
|
+
"goal": "open a second office",
|
|
145
|
+
"revenue": "profitable, 30% margins",
|
|
146
|
+
"runway": "18 months from cash flow",
|
|
147
|
+
"cap_table": "two founders, 50/50",
|
|
148
|
+
"control_rights": "day-to-day authority and the timing of a sale",
|
|
149
|
+
"jurisdiction": "Ontario, Canada"
|
|
150
|
+
},
|
|
151
|
+
"expect": {
|
|
152
|
+
"needs-outside-money": "no",
|
|
153
|
+
"money-means-ownership": "unknown",
|
|
154
|
+
"ownership-means-control": "no",
|
|
155
|
+
"control-is-one-thing": "no",
|
|
156
|
+
"dichotomy": "false"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "hardware-pre-revenue-board",
|
|
161
|
+
"facts": {
|
|
162
|
+
"phase": "validation",
|
|
163
|
+
"goal": "ship 500 units of a medical device through regulatory approval by 2028",
|
|
164
|
+
"revenue": "none",
|
|
165
|
+
"runway": "2 months",
|
|
166
|
+
"cap_table": "the founder owns 100%",
|
|
167
|
+
"control_rights": "a majority of the board and votes on every major decision",
|
|
168
|
+
"jurisdiction": "Delaware, USA"
|
|
169
|
+
},
|
|
170
|
+
"expect": {
|
|
171
|
+
"needs-outside-money": "yes",
|
|
172
|
+
"control-is-one-thing": "no",
|
|
173
|
+
"dichotomy": "trade-off"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "fund",
|
|
3
|
+
"title": "Fund",
|
|
4
|
+
"kind": "core",
|
|
5
|
+
"purpose": "A fund's foundation: the thesis it invests on and the terms it raises under (EE-082). The VC fund venture type starts with it; a startup never needs it.",
|
|
6
|
+
"department": "finance",
|
|
7
|
+
"layer": "purpose",
|
|
8
|
+
"records": [
|
|
9
|
+
"fund-thesis",
|
|
10
|
+
"fund-terms"
|
|
11
|
+
],
|
|
12
|
+
"required": [
|
|
13
|
+
"fund-thesis",
|
|
14
|
+
"fund-terms"
|
|
15
|
+
],
|
|
16
|
+
"optional": [],
|
|
17
|
+
"refs": [],
|
|
18
|
+
"planned": [],
|
|
19
|
+
"base": {
|
|
20
|
+
"discovery": 0.0,
|
|
21
|
+
"validation": 0.0,
|
|
22
|
+
"beachhead": 0.0,
|
|
23
|
+
"scale": 0.0,
|
|
24
|
+
"platform": 0.0
|
|
25
|
+
},
|
|
26
|
+
"when": [
|
|
27
|
+
{
|
|
28
|
+
"if": "type:vc-fund",
|
|
29
|
+
"at_least": 0.9
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"why": "Only a fund or firm raises on a thesis and terms",
|
|
33
|
+
"unlocks": [
|
|
34
|
+
"raising from limited partners",
|
|
35
|
+
"screening deals against the thesis"
|
|
36
|
+
],
|
|
37
|
+
"gates": [
|
|
38
|
+
"a person has confirmed the thesis and the terms"
|
|
39
|
+
],
|
|
40
|
+
"schemas": [
|
|
41
|
+
"schema/fund-thesis.schema.json",
|
|
42
|
+
"schema/fund-terms.schema.json"
|
|
43
|
+
],
|
|
44
|
+
"templates": [],
|
|
45
|
+
"checks": [],
|
|
46
|
+
"skill": null,
|
|
47
|
+
"use_model": []
|
|
48
|
+
}
|
|
@@ -9,14 +9,15 @@
|
|
|
9
9
|
],
|
|
10
10
|
"optional": [
|
|
11
11
|
"marketing-content",
|
|
12
|
-
"site-presence"
|
|
12
|
+
"site-presence",
|
|
13
|
+
"marketing-brand",
|
|
14
|
+
"public-assets"
|
|
13
15
|
],
|
|
14
16
|
"refs": [
|
|
15
17
|
"icp",
|
|
16
18
|
"product"
|
|
17
19
|
],
|
|
18
20
|
"planned": [
|
|
19
|
-
"brand voice and guidelines",
|
|
20
21
|
"campaigns",
|
|
21
22
|
"sales pipeline"
|
|
22
23
|
],
|
|
@@ -48,10 +49,15 @@
|
|
|
48
49
|
],
|
|
49
50
|
"schemas": [
|
|
50
51
|
"schema/marketing-sitemap.schema.json",
|
|
51
|
-
"schema/site-presence.schema.json"
|
|
52
|
+
"schema/site-presence.schema.json",
|
|
53
|
+
"schema/marketing-brand.schema.json",
|
|
54
|
+
"schema/public-assets.schema.json"
|
|
52
55
|
],
|
|
53
56
|
"templates": [],
|
|
54
|
-
"checks": [
|
|
57
|
+
"checks": [
|
|
58
|
+
"schema/check-brand.mjs",
|
|
59
|
+
"schema/check-assets.mjs"
|
|
60
|
+
],
|
|
55
61
|
"skill": null,
|
|
56
62
|
"use_model": []
|
|
57
63
|
}
|
|
@@ -10,11 +10,32 @@
|
|
|
10
10
|
"coverage",
|
|
11
11
|
"freshness"
|
|
12
12
|
],
|
|
13
|
+
"gate_rules": [
|
|
14
|
+
{
|
|
15
|
+
"id": "money-to-finance",
|
|
16
|
+
"routes": [
|
|
17
|
+
"money/[id]"
|
|
18
|
+
],
|
|
19
|
+
"actors": [
|
|
20
|
+
"agent"
|
|
21
|
+
],
|
|
22
|
+
"then": "owner",
|
|
23
|
+
"note": "Money master data an agent writes goes to the finance function's owner before it is the record"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
13
26
|
"layer": "purpose",
|
|
14
|
-
"records": [
|
|
15
|
-
|
|
27
|
+
"records": [
|
|
28
|
+
"money-account",
|
|
29
|
+
"money-summary"
|
|
30
|
+
],
|
|
31
|
+
"schemas": [
|
|
32
|
+
"schema/data-master.schema.json",
|
|
33
|
+
"schema/money-summary.schema.json"
|
|
34
|
+
],
|
|
16
35
|
"templates": [],
|
|
17
|
-
"checks": [
|
|
36
|
+
"checks": [
|
|
37
|
+
"schema/check-data-packages.mjs"
|
|
38
|
+
],
|
|
18
39
|
"skill": null,
|
|
19
40
|
"use_model": [],
|
|
20
41
|
"complete": false
|
|
@@ -42,6 +42,9 @@
|
|
|
42
42
|
"gates": [
|
|
43
43
|
"a person has confirmed every required record and every record this package reads"
|
|
44
44
|
],
|
|
45
|
+
"gate_rules": [
|
|
46
|
+
{ "id": "validation-low-confidence", "routes": ["validation/**", "foundation/problem", "people/team"], "actors": ["agent"], "when": { "confidence_below": "confidence" }, "then": "owner", "note": "A validation record an agent is not confident in goes to its function owner" }
|
|
47
|
+
],
|
|
45
48
|
"schemas": [
|
|
46
49
|
"schema/validation-problem.schema.json",
|
|
47
50
|
"schema/validation-solution.schema.json",
|
|
@@ -72,6 +75,16 @@
|
|
|
72
75
|
"path": "purpose/kits/validation/skills/problem-validation/SKILL.md"
|
|
73
76
|
},
|
|
74
77
|
"use_model": [],
|
|
78
|
+
"use_cache": [
|
|
79
|
+
{
|
|
80
|
+
"route": "purpose/validation/assess",
|
|
81
|
+
"level": "record",
|
|
82
|
+
"life": "hours",
|
|
83
|
+
"vary": [
|
|
84
|
+
"day"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
],
|
|
75
88
|
"layer": "purpose",
|
|
76
89
|
"records": [
|
|
77
90
|
"validation-problem",
|
package/platform/README.md
CHANGED
|
@@ -39,6 +39,12 @@ The framework can still load a platform connector by the module path in `knowled
|
|
|
39
39
|
| `integrations/langsmith-docket.mjs` | The docket's evidence as a LangSmith experiment: the scenario states as a dataset, and one scored run of the docket and the judge (Jev) as an experiment over it (EE-075). Needs `LANGSMITH_API_KEY` |
|
|
40
40
|
| `integrations/rho.mjs` | Rho, the founder's bank and spend suite, as the venture's money source: syncs `money/` (accounts, a sensitive append-only transactions stream, and a summary) over Rho's MCP server, calling only read-only tools (EE-070). Rho's sandbox by default; `--live` needs `RHO_API_TOKEN` |
|
|
41
41
|
| `integrations/site.mjs` | Reads a venture's website: the home page and the pages it links to, as text, with where each sits (EE-062). Uses `FIRECRAWL_API_KEY` when set, a plain fetch otherwise |
|
|
42
|
+
| `adapter.json` | Mentura as Naive's first adapter, as Vercel is for Next.js: `mentura adapters verify mentura` runs the connector contract suite, the webhooks and the kits (Z-4) |
|
|
43
|
+
| `kits/agent-upgrade/` | The agent-run upgrade behind `naive upgrade --agent`: an agent does the guides' by-hand steps on a staged copy, and the framework's checks decide (U-3). `stand-in-agent.mjs` runs offline |
|
|
44
|
+
| `kits/validation-kickoff/` | An automation over the validation package: once the foundation is complete, it proposes the decision to start validating (M-12) |
|
|
45
|
+
| `kits/test.mjs` | Tests for the kits, with the stand-in agent |
|
|
46
|
+
| `webhooks/server.mjs` | Signed webhooks from systems of record: a change marks the summaries that read it stale (V-9). Secrets come from `NAIVE_WEBHOOK_SECRET_<SOURCE>` |
|
|
47
|
+
| `webhooks/test.mjs` | Tests for the webhooks, offline |
|
|
42
48
|
|
|
43
49
|
## Not yet moved
|
|
44
50
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mentura",
|
|
3
|
+
"title": "Mentura",
|
|
4
|
+
"kind": "platform",
|
|
5
|
+
"reads": ["knowledge/sources.json", "naive.config.json"],
|
|
6
|
+
"files": [],
|
|
7
|
+
"skills": null,
|
|
8
|
+
"verify": [
|
|
9
|
+
"platform/connectors/eval.mjs",
|
|
10
|
+
"platform/webhooks/test.mjs",
|
|
11
|
+
"platform/kits/test.mjs"
|
|
12
|
+
],
|
|
13
|
+
"sources": [],
|
|
14
|
+
"note": "Mentura is Naive's first adapter, as Vercel is for Next.js (Z-4): it runs the framework's record contract over vendor sources (GitHub), receives systems of record's change notifications (webhooks) and holds the kits. It is verified when it passes the framework's tests: the connector contract suite (knowledge/connectors/suite.mjs) and the router over a GitHub source, both run by platform/connectors/eval.mjs, and the platform's tests of the framework hooks it implements."
|
|
15
|
+
}
|