Files
state-hub/dashboard/observablehq.config.js
tegwick afac54ec09 feat(state-hub): v0.3 MCP tools + dashboard pages for contributions and SBOM
MCP server additions (5 tools + 3 resources):
- register_contribution(), update_contribution_status(), get_contributions()
- ingest_sbom_tool(repo_slug, lockfile_path) — shells out to ingest_sbom.py
- get_licence_report()
- state://contributions, state://sbom/aggregated, state://sbom/{repo_slug}

Dashboard pages:
- contributions.md — live-polled Kanban by status (draft→merged), filter bar
  (type/status/repo), KPI grid (total + per type), follow-up banner, full table
- sbom.md — licence distribution bar chart (Plot), copyleft risk section,
  package table with ecosystem/direct/dev filters, repo-slug resolution
- data/contributions.json.py, data/sbom.json.py — Observable data loaders
- index.md — added Contribution & SBOM Health KPI row (total, follow-up count,
  copyleft risk indicator; sourced from state summary fields)
- observablehq.config.js — added Contributions + SBOM to nav

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 17:28:41 +01:00

31 lines
1.3 KiB
JavaScript

export default {
root: "src",
title: "Custodian State Hub",
pages: [
{ name: "Overview", path: "/" },
{ name: "Workstreams", path: "/workstreams" },
{ name: "Tasks", path: "/tasks" },
{ name: "Decisions", path: "/decisions" },
{ name: "Progress", path: "/progress" },
{ name: "Domains", path: "/domains" },
{ name: "Extension Points", path: "/extensions" },
{ name: "Technical Debt", path: "/techdept" },
{ name: "Contributions", path: "/contributions" },
{ name: "SBOM", path: "/sbom" },
{
name: "Reference",
pages: [
{ name: "Live Data", path: "/docs/live-data" },
{ name: "Workstreams", path: "/docs/workstreams" },
{ name: "Workstream Health", path: "/docs/workstream-health-index" },
{ name: "Decisions", path: "/docs/decisions" },
{ name: "Decision Health", path: "/docs/decisions-kpi" },
{ name: "Progress Log", path: "/docs/progress-log" },
],
},
],
theme: ["air", "near-midnight"],
head: `<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🗄️</text></svg>">`,
footer: "Custodian State Hub — local-first, append-only, sovereignty-preserving.",
};