commit 9e7480fe3ae84d8b862eb1364cf6462dcc5cd31a Author: andres-gb10 Date: Wed Jul 1 19:12:53 2026 +0100 seed: ecosystem-metrics public artifact (STD-002) diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb2daaf --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# ecosystem-metrics (public) + +The safe, single source of truth for the Nextars ecosystem stat strips. Only aggregates: +no PII, no client names, no money. Published by **andres-engineering**'s aggregator (STD-002); +consumed at build time by andres.co, nextars.co, sliceops.org and any other ecosystem site. + +- `ecosystem-metrics.json` — the numbers + full provenance (strip, perVenture, decisionsByRepo) +- `ecosystem-metrics.ledger.md` — human-readable provenance ledger + +Do not hand-edit; the aggregator overwrites these. Safe to be public even though the source +repos are private (that is the whole design). diff --git a/ecosystem-metrics.json b/ecosystem-metrics.json new file mode 100644 index 0000000..201a2d8 --- /dev/null +++ b/ecosystem-metrics.json @@ -0,0 +1,353 @@ +{ + "version": "1.0.0", + "std": "STD-002@1.0.0", + "generatedAt": "2026-07-01T18:10:16.279Z", + "generator": "70-execution/scripts/aggregate-metrics.mjs", + "note": "Single source of truth for ecosystem stat strips. Safe to publish: only aggregates, no PII/clients/money. Every value carries provenance; see ecosystem-metrics.ledger.md. Each site shapes its own strip/velocity from strip + perVenture.", + "strip": { + "founder": { + "value": 1, + "unit": "count", + "source": "declared", + "method": "operator-declared constant: one founder", + "asOf": "2026-06-30", + "public": true, + "verification": 3 + }, + "companies": { + "value": 7, + "unit": "count", + "source": "declared:70-execution/scripts/metrics.ventures.json", + "method": "count of ventures on the record", + "asOf": "2026-07-01", + "public": true, + "verification": 1 + }, + "core": { + "value": 3, + "unit": "count", + "source": "declared", + "method": "operator-declared constant: core products carried as flagship", + "asOf": "2026-06-30", + "public": true, + "verification": 3 + }, + "people": { + "value": 990000, + "display": "990K+", + "unit": "people", + "source": "external:product-databases", + "method": "operator-declared aggregate of distinct people served across live platforms (Insttantt + Datta); a safe floor, '+' denotes at least", + "asOf": "2026-06-30", + "public": true, + "verification": 3 + }, + "data_points": { + "value": 54000000, + "display": "54M+", + "unit": "records", + "source": "external:product-databases", + "method": "operator-declared aggregate of records processed across live platforms; a safe floor, '+' denotes at least", + "asOf": "2026-06-30", + "public": true, + "verification": 3 + }, + "decisions": { + "value": 975, + "unit": "count", + "source": "git:andres.co (live) + declared:70-execution/scripts/metrics.ventures.json", + "method": "sum of per-repo DEC-record counts (find 10-decisions -name 'DEC-*.md' | wc -l per repo): Datta:774, Insttantt:90, SliceOps:42, andres.co:30, RootBlocks:18, ApiFusion:11, Resolvi:10, Nextars:0", + "asOf": "2026-07-01", + "public": true, + "verification": 2 + }, + "x_faster": { + "value": 124, + "unit": "ratio", + "source": "declared:70-execution/scripts/metrics.ventures.json (DEC-019)", + "method": "baseline (Insttantt) hours-per-complexity-point over RootBlocks's, at comparable complexity (index within 2 of baseline 19)", + "asOf": "2026-07-01", + "public": true, + "verification": 2 + } + }, + "decisionsByRepo": [ + { + "venture": "Datta", + "repo": "datta-engineering", + "branch": "develop", + "decisions": 774, + "source": "operator-confirmed (Datta STD-002 slice, origin/develop)", + "method": "find 10-decisions -name 'DEC-*.md' | wc -l on origin/develop (770 accepted + 4 superseded); counter 841, ~67 ID gaps; canonical develop is a superset of stale main(589) and the chore snapshot(749). Becomes 775 when Datta's DEC-841 merges", + "asOf": "2026-07-01" + }, + { + "venture": "Insttantt", + "repo": "insttantt-v2/insttantt-engineering", + "branch": "main", + "decisions": 90, + "source": "local-clone (to confirm)", + "method": "find 10-decisions -name 'DEC-*.md' | wc -l on local main", + "asOf": "2026-07-01" + }, + { + "venture": "SliceOps", + "repo": "sliceops-website", + "branch": "main", + "decisions": 42, + "source": "operator-confirmed (SliceOps STD-002 slice, origin/main)", + "method": "find 10-decisions -name 'DEC-*.md' | wc -l on origin/main (41 accepted + 1 superseded); ids 001-042 contiguous, no counter/gaps; local clone was 34 (stale-low). Becomes 43 when SliceOps DEC-043 merges", + "asOf": "2026-07-01" + }, + { + "venture": "andres.co", + "repo": "andres-co", + "branch": "main", + "decisions": 30, + "source": "git:andres.co (live)", + "method": "overridden by the live emitter (tools/metrics.mjs)", + "asOf": "2026-07-01T18:10:16.227Z" + }, + { + "venture": "RootBlocks", + "repo": "rootblocks-engineering", + "branch": "main", + "decisions": 18, + "source": "operator-confirmed (RootBlocks STD-002 slice, origin/main)", + "method": "find 10-decisions -name 'DEC-*.md' | wc -l on origin/main (16 accepted + 2 rfcs); declared 21 conflated highest id DEC-021 with the count. Becomes 19 when RootBlocks DEC-024 merges", + "asOf": "2026-07-01" + }, + { + "venture": "ApiFusion", + "repo": "apifusion-engineering", + "branch": "main", + "decisions": 11, + "source": "operator-confirmed (ApiFusion STD-002 slice, gitea/main)", + "method": "find 10-decisions -name 'DEC-*.md' | wc -l on gitea/main (DEC-001..011 contiguous, counter next=12, no gaps); matched the declared 11. Becomes 12 when ApiFusion DEC-012 merges", + "asOf": "2026-07-01" + }, + { + "venture": "Resolvi", + "repo": "resolvi-engineering", + "branch": "develop", + "decisions": 10, + "source": "operator-confirmed (Resolvi STD-002 slice, origin/develop)", + "method": "find 10-decisions -name 'DEC-*.md' | wc -l on origin/develop (DEC-001..010, counter 10, no gaps; no main branch). Becomes 11 when Resolvi DEC-011 merges", + "asOf": "2026-07-01" + }, + { + "venture": "Nextars", + "repo": "nextars-orchestrator", + "branch": "main", + "decisions": 0, + "source": "no-decisions-dir", + "method": "no 10-decisions/ in the repo yet", + "asOf": "2026-07-01" + } + ], + "perVenture": [ + { + "name": "SliceOps", + "status": "live", + "first_commit": "2026-05-14", + "launch": "2026-06-22", + "worked_hours": 52.8, + "loc": 9476, + "decisions": 42, + "complexity": { + "state": 1, + "concurrency": 1, + "integrations": 2, + "trust": 2, + "intelligence": 0, + "code": 3 + }, + "note": "One product across spec, toolkit, and website; complexity is the max of each axis across the three. The toolkit's code is real (lizard CCN ~7.3, a quarter of its functions over 10); the website carries three live integrations and email PII. Worked hours are an approximate sum.", + "note_es": "Un solo producto entre spec, toolkit y website; la complejidad es el máximo de cada eje entre los tres. El código del toolkit es real (lizard CCN ~7.3, un cuarto de sus funciones sobre 10); el website carga tres integraciones en vivo y PII de email. Las horas trabajadas son una suma aproximada." + }, + { + "name": "andres.co", + "status": "live", + "first_commit": "2026-06-20", + "launch": "2026-06-20", + "worked_hours": 51, + "loc": 3184, + "decisions": 30, + "tier": "T2", + "complexity": { + "state": 0, + "concurrency": 0, + "integrations": 2, + "trust": 1, + "intelligence": 0, + "code": 1 + }, + "note": "This site. First commit to a live, governed v1 the same day.", + "note_es": "Este sitio. Del primer commit a una v1 viva y gobernada el mismo día.", + "commits": 93 + }, + { + "name": "Insttantt", + "status": "baseline", + "baseline": true, + "worked_hours": 19766, + "commits": 52340, + "repos": 35, + "tier": "T3", + "complexity": { + "state": 3, + "concurrency": 3, + "integrations": 4, + "trust": 4, + "intelligence": 2, + "code": 3 + }, + "note": "The before: a T3 platform built the old way, no framework and no AI, across dozens of repos over years. An approximate sum; its decisions live outside git.", + "note_es": "El antes: una plataforma T3 construida a la vieja usanza, sin framework y sin AI, a lo largo de docenas de repos durante años. Una suma aproximada; sus decisiones viven fuera del git." + }, + { + "name": "RootBlocks", + "status": "live", + "first_commit": "2026-04-25", + "launch": "2026-06-10", + "worked_hours": 167.7, + "loc": 219110, + "decisions": 18, + "repos": 10, + "complexity": { + "state": 3, + "concurrency": 3, + "integrations": 4, + "trust": 4, + "intelligence": 3, + "code": 3 + }, + "note": "10 repos: a security, identity, and fraud platform plus an agentic build engine. It reaches past Insttantt's complexity, built on the framework with AI. An approximate sum; the platform is largely still in progress, the website is live.", + "note_es": "10 repos: una plataforma de seguridad, identidad y fraude más un motor de build agéntico. Supera la complejidad de Insttantt, construida sobre el framework y con AI. Una suma aproximada; la plataforma está en gran parte en progreso, el website está en vivo." + }, + { + "name": "Datta", + "status": "in-progress", + "first_commit": "2026-04-01", + "launch": null, + "worked_hours": 269.3, + "loc": 328730, + "decisions": 774, + "complexity": { + "state": 4, + "concurrency": 3, + "integrations": 2, + "trust": 4, + "intelligence": 2, + "code": 3 + }, + "note": "8 repos: a data-ownership platform with a vault, a Flutter app, workers, and an MCP gateway. Insttantt-class complexity, still in progress.", + "note_es": "8 repos: una plataforma de propiedad de datos con un vault, una app Flutter, workers y un gateway MCP. Complejidad clase-Insttantt, aún en progreso." + }, + { + "name": "Resolvi", + "status": "in-progress", + "first_commit": "2026-05-22", + "launch": null, + "worked_hours": 131.5, + "loc": 42672, + "decisions": 10, + "repos": 3, + "complexity": { + "state": 2, + "concurrency": 2, + "integrations": 2, + "trust": 3, + "intelligence": 3, + "code": 2 + }, + "note": "3 repos: customer service driven by the structured context of the company and the customer. Still in progress; complexity is a provisional score.", + "note_es": "3 repos: atención al cliente movida por el contexto estructurado de la empresa y del cliente. Aún en progreso; la complejidad es una puntuación provisional." + }, + { + "name": "ApiFusion", + "status": "in-progress", + "first_commit": "2026-06-02", + "launch": null, + "worked_hours": 34, + "loc": 4790, + "decisions": 11, + "repos": 2, + "complexity": { + "state": 1, + "concurrency": 2, + "integrations": 4, + "trust": 2, + "intelligence": 0, + "code": 1 + }, + "note": "2 repos: an integration gateway normalizing dozens of providers behind one API. Integrations-heavy, still in progress; complexity is a provisional score.", + "note_es": "2 repos: un gateway de integración que normaliza docenas de proveedores tras una sola API. Cargada de integraciones, aún en progreso; la complejidad es una puntuación provisional." + } + ], + "provenance": [ + { + "key": "founder", + "value": 1, + "unit": "count", + "source": "declared", + "method": "operator-declared constant: one founder", + "asOf": "2026-06-30", + "verification": 3 + }, + { + "key": "companies", + "value": 7, + "unit": "count", + "source": "declared:70-execution/scripts/metrics.ventures.json", + "method": "count of ventures on the record", + "asOf": "2026-07-01", + "verification": 1 + }, + { + "key": "core", + "value": 3, + "unit": "count", + "source": "declared", + "method": "operator-declared constant: core products carried as flagship", + "asOf": "2026-06-30", + "verification": 3 + }, + { + "key": "people", + "value": 990000, + "unit": "people", + "source": "external:product-databases", + "method": "operator-declared aggregate of distinct people served across live platforms (Insttantt + Datta); a safe floor, '+' denotes at least", + "asOf": "2026-06-30", + "verification": 3 + }, + { + "key": "data_points", + "value": 54000000, + "unit": "records", + "source": "external:product-databases", + "method": "operator-declared aggregate of records processed across live platforms; a safe floor, '+' denotes at least", + "asOf": "2026-06-30", + "verification": 3 + }, + { + "key": "decisions", + "value": 975, + "unit": "count", + "source": "git:andres.co (live) + declared:70-execution/scripts/metrics.ventures.json", + "method": "sum of per-repo DEC-record counts (find 10-decisions -name 'DEC-*.md' | wc -l per repo): Datta:774, Insttantt:90, SliceOps:42, andres.co:30, RootBlocks:18, ApiFusion:11, Resolvi:10, Nextars:0", + "asOf": "2026-07-01", + "verification": 2 + }, + { + "key": "x_faster", + "value": 124, + "unit": "ratio", + "source": "declared:70-execution/scripts/metrics.ventures.json (DEC-019)", + "method": "baseline (Insttantt) hours-per-complexity-point over RootBlocks's, at comparable complexity (index within 2 of baseline 19)", + "asOf": "2026-07-01", + "verification": 2 + } + ] +} diff --git a/ecosystem-metrics.ledger.md b/ecosystem-metrics.ledger.md new file mode 100644 index 0000000..bbed5a5 --- /dev/null +++ b/ecosystem-metrics.ledger.md @@ -0,0 +1,33 @@ +# Ecosystem metrics provenance ledger + +Generated 2026-07-01T18:10:16.279Z by 70-execution/scripts/aggregate-metrics.mjs (STD-002). Every published number and its source. + +## Strip numbers + +| Number | Value | Source | Method | asOf | V | +|---|---|---|---|---|---| +| founder | 1 | declared | operator-declared constant: one founder | 2026-06-30 | 3 | +| companies | 7 | declared:70-execution/scripts/metrics.ventures.json | count of ventures on the record | 2026-07-01 | 1 | +| core | 3 | declared | operator-declared constant: core products carried as flagship | 2026-06-30 | 3 | +| people | 990000 | external:product-databases | operator-declared aggregate of distinct people served across live platforms (Insttantt + Datta); a safe floor, '+' denotes at least | 2026-06-30 | 3 | +| data_points | 54000000 | external:product-databases | operator-declared aggregate of records processed across live platforms; a safe floor, '+' denotes at least | 2026-06-30 | 3 | +| decisions | 975 | git:andres.co (live) + declared:70-execution/scripts/metrics.ventures.json | sum of per-repo DEC-record counts (find 10-decisions -name 'DEC-*.md' \| wc -l per repo): Datta:774, Insttantt:90, SliceOps:42, andres.co:30, RootBlocks:18, ApiFusion:11, Resolvi:10, Nextars:0 | 2026-07-01 | 2 | +| x_faster | 124 | declared:70-execution/scripts/metrics.ventures.json (DEC-019) | baseline (Insttantt) hours-per-complexity-point over RootBlocks's, at comparable complexity (index within 2 of baseline 19) | 2026-07-01 | 2 | + +## Decisions by repo + +| Venture | Repo | Branch | DECs | Source | asOf | +|---|---|---|---|---|---| +| Datta | datta-engineering | develop | 774 | operator-confirmed (Datta STD-002 slice, origin/develop) | 2026-07-01 | +| Insttantt | insttantt-v2/insttantt-engineering | main | 90 | local-clone (to confirm) | 2026-07-01 | +| SliceOps | sliceops-website | main | 42 | operator-confirmed (SliceOps STD-002 slice, origin/main) | 2026-07-01 | +| andres.co | andres-co | main | 30 | git:andres.co (live) | 2026-07-01T18:10:16.227Z | +| RootBlocks | rootblocks-engineering | main | 18 | operator-confirmed (RootBlocks STD-002 slice, origin/main) | 2026-07-01 | +| ApiFusion | apifusion-engineering | main | 11 | operator-confirmed (ApiFusion STD-002 slice, gitea/main) | 2026-07-01 | +| Resolvi | resolvi-engineering | develop | 10 | operator-confirmed (Resolvi STD-002 slice, origin/develop) | 2026-07-01 | +| Nextars | nextars-orchestrator | main | 0 | no-decisions-dir | 2026-07-01 | + +**Total decisions: 975** + +V = verification: 1 git-auto, 2 human-verified (DEC-019 rubric), 3 external/declared. +