Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
docs: fix capability-count drift + add docs-stats CI guardrail (#3965)
* docs: fix capability-count drift + add docs-stats CI guardrail Capability counts were hand-maintained across README, ARCHITECTURE.md, and docs/*.mdx and had drifted independently — map layers appeared as 45/49/20+ (actual 56), services as 22/24/30+ (actual 34), 92 protos (actual 275), 21 languages (actual 23), 31 freshness sources (actual 35), 6 CI workflows (actual 14). Guardrail (the durable fix): - scripts/docs-stats.mjs derives every quoted count from code sources of truth and writes docs/generated/stats.json; --check verifies each registered doc claim still matches (21 claims) and that every workflow is documented in ARCHITECTURE.md. - npm run docs:stats / docs:check; always-on docs-stats job in test.yml (docs-only PRs skip `unit`, so it must not gate on changes.code). Doc fixes: - README, architecture.mdx, map-engine.mdx, features.mdx, agent-discovery, api-reference, data-sources, overview: corrected to code-derived numbers. - architecture.mdx domain table completed to all 34 server domains. - ARCHITECTURE.md: rewrote stale "api/ is self-contained JS" section (domain gateways generated from server/** + hand-written operational endpoints), rebuilt CI table (14 workflows), replaced stale verification stamp with a pointer to the CI guardrail. - "every API endpoint starts as proto" scoped to domain intelligence APIs. - getting-started.mdx: three setup tracks (app-only / contributor codegen / Docker), Node 18 -> 22, replaced dead flat api/*.js tree with the domain-based structure. - Data-source metrics relabeled into distinct meanings (providers vs feeds vs freshness groups). Energy variant promoted to stable parity with tech/finance: - added dev:energy + build:energy scripts and README energy badge; documented energy across README, overview, documentation, desktop-app, architecture (six variants). * chore(docs-stats): drop unused statSync import Addresses Greptile P2 on #3965. * ci(docs-stats): fail when stats.json is untracked or deleted git diff --exit-code ignores untracked paths, so a PR that deletes the committed docs/generated/stats.json would regenerate it untracked and still pass. Switch to git status --porcelain, which reports stale, deleted, and untracked states alike. Addresses Greptile P2 on #3965.
E
Elie Habib committed
491cdb27d44aec615371418702d101d73c0f975f
Parent: 4c86e7a
Committed by GitHub <noreply@github.com>
on 5/29/2026, 11:56:07 AM