Skip to main content

TASKSET 8 — what landed

Cosmetic spec-compliance, intentionally last in the campaign.
  • lore/src/app/overview/page.tsx — new landing. Hero stats (Total / Pending Review / Success Rate / Active Agents), recent decisions table (top 10, links to /search), decisions-by-type list (top 8 sorted), governance summary card with a one-click jump to /governance. All three fetches go through the Result<T> seam; failures surface via DegradedBanner, never fake-empty.
  • lore/src/app/page.tsx — root now redirects to /overview instead of /search.
  • lore/src/components/knowledge/collapsible-card.tsx — small client component disclosure. Default-open; chevron + button header; aria-expanded for screen readers.
  • lore/src/app/governance/page.tsx — Roles & Permissions card converted to CollapsibleCard; the existing “Edit on GitHub” link (added back in TASKSET 2) remains.
  • lore/src/components/layout/sidebar.tsx — leading Overview entry using a LayoutDashboard icon. Existing entries unchanged.

Decisions worth noting

  • Overview is read-only and link-driven. No new mutations. Every action goes via existing pages (/search, /governance, /decisions/:id). Keeps the surface coherent — one page, one job.
  • Collapsible default-open. Repeat visitors get the affordance; first-timers never miss the matrix. The opposite default would punish discovery.
  • No “favourite repo” persistence yet. The page reads repo from searchParams and falls back to devarno-cloud/kb. Persisted preference (cookie or airlock metadata) is a follow-up; not in this campaign.

Verification done

  • npx tsc --noEmit clean.
  • npx next build clean. New /overview route at 1.77 kB; existing /governance grew 845 B → 1.19 kB for the collapsible client chunk.
  • All four Result failure modes covered on /overview via the shared DegradedBanner.
  • Governance page still links to https://github.com/<owner>/blob/main/.agents/COUNCIL.yaml (no change to that link).

What does NOT exist yet

  • No favourite-repo persistence.
  • No “your recent activity” panel — would need a per-user index that doesn’t exist server-side.
  • No CAIRN cross-link on /overview (graduation backlinks live on decision detail; surfacing aggregate cairn signal here is a separate decision).

Campaign-level note

TASKSETs 1–8 of atlas/campaigns/2026-04-25-cairnet-lore-coupling.md are now closed. Open follow-ups, captured across earlier learnings:
  • Live pebble seam smoke run (TASKSET 2 punch list).
  • Upstream tool_args typo fix in KnowledgeProvider._handle_log_decision (TASKSET 7 inline comment); when fixed, swap the direct GitHub call in cairn_graduation_service.py for a ToolCall invocation.
  • Reconciliation worker for the GitHub-write / DB-commit window (TASKSET 7).
  • NATS audit emission for graduations (TASKSET 7).
  • Decline-graduation reverse path (TASKSET 7).
  • Decay worker (TASKSET 4 — currently query-time filter only).
  • Workspace linking for @devarno/sdk-charts to retire the duplicated graph-primitive.tsx (TASKSETs 3 & 6).