Data pipeline core: Ingestion framework with parsers, entity resolution, graph construction, signal detection, and brief generation
Next.js web app: Full-featured dashboard with timeline view, entity graph (D3.js), signal cards, source linking, ⌘K command palette, boot animation, ticker with signal headlines
Real Canadian government data: Initial sourcing from official government APIs — committees, lobbyists, Gazette, procurement, GIC appointments
K3s deployment: Containerized deployment with Podman to K3s cluster on nexus, Nginx reverse proxy, README documentation
pretext-civic: React component library with chart components, geospatial map, and a 24-feature social & monitoring app specification
Nix development environment: devenv configuration with flakes for reproducible builds across teams
⚠️ Breaking change: Ticker (scrolling text bar) removed from all pages. Navigation and layout adjusted to compensate. Dead ticker CSS purged.
Web3 wallet authentication: SIWE/EIP-4361 implementation with /v1/auth/web3/challenge and /v1/auth/web3/login endpoints, viem integration
Passkey/FIDO2 (WebAuthn): Cross-platform passkey support with residentKey=required and userVerification=required — works with Bitwarden, Android, iOS iCloud Keychain, Windows Hello. @simplewebauthn/server integration
Generic OAuth 2.0 framework: Configurable via MAPLESPIKE_OAUTH_{NAME}_CLIENT_ID env vars — GitHub built-in, any OIDC provider via env overrides for authorize/token/user-info URLs and scopes
JIT zero-knowledge key rotation: Auto-rotation within 7 days of expiry, response header delivery (X-Key-Rotated, X-New-Key, X-New-Key-Id, X-New-Key-Expires), storage-backed auth with SQLite fallback chain
Real citation verification: SHA-256 hash lookup against pipeline data — returns verified citation with source URL, license, and shell verify command. Replaced hardcoded SAMPLE_CITATIONS
Workspace page: Auth panel with OAuth login buttons, session info display, passkey/web3 placeholders, auto-login detection via session cookie, API key management wired to live endpoints (/v1/keys, /v1/usage)
⚠️ Breaking changes: e2e test renamed to .skip.ts (requires live API). provincial-orgs type renamed ProvincialRecord → ProvincialOrgRecord. MCP tool index rebuilt — stale imports removed.
Dual Docker + Nix flake build system: All images building and pushing to registry with pnpm deploy + injectWorkspacePackages
Tests added: Pipeline-core test suite (46 tests — registry, constants, RSS, CKAN, citations), MCP tool tests, API server tests, SDK tests. Fixed pre-existing bugs found during testing
CI harmonization: 3 workflows (ci, deploy, publish), all 5 testable packages (pipeline-core, sdk, mcp-server, engine, api-server) with type-checking before build, pnpm lock sync
OpenAPI spec: 79 endpoints, 27 agents — full auto-generated specification
Engine rebuild with better-sqlite3: 133/133 tests passing
Python SDK PyPI package with README
llms.txt + llms-full.txt updated with MapleSpike branding and current endpoints
Grafana dashboard deployed, Prometheus server configured
Cleanup: stale e2e tests removed, old MCP tool files purged, outdated stub comments removed
⚠️ Breaking changes: All -deep and -long-tail suffixes dropped from module directories (e.g. municipal-long-tail/ → municipal/). All civint references purged from code, docs, DNS, and K8s — pure MapleSpike branding. Server-side mock-data.ts (422 lines) and pipeline-data.json (37KB) deleted — all data now live. 15 generated .d.ts files removed from engine/src. 6 stale docs files (MRD, MVP-SCOPE, PRD, Katzilla GAPs, etc.) deleted.
22 live MCP tools — immigration, science, tribunals, LODE geospatial, AI analysis, semantic search, system health all returning real data. SSE transport built into cli.ts (PORT=3001). Deployed on K3s at port 32537
Module inventory expansion (9 net-new modules in this release):
• A2AJ legal corpus — 116K+ decisions, 5K+ statutes via api.a2aj.ca (no auth)
Attestation system: Unified Citation envelope, Merkle tree root hashing, Ed25519 signatures, content-addressable store, update frequency map (60 modules). Rich citation envelope with citation_text, citation_footnote, original_format fields matching Katzilla parity
Live AI:/v1/ai_ask endpoint routing through AI Inference Gateway with CKAN fallback chain — 3 AI tools registered: ai_analyze, ai_ask, ai_search_semantic
MCP data unification: All 22 tools proxy through api-client.ts → API server → pipeline-data.json, pipeline-data.ts reduced 340→60 lines as thin re-export
Cross-reference engine: Entity search across lobbying registry, GIC appointments, committees, elections, contracts, and CKAN datasets with unified timeline
Portal (13 pages): Blog with RSS feed, Contact with FAQ, changelog, agents.json (27 agents, 79 actions), live data generator script. Bracket-style nav standardized across ALL pages
Anti-grid brutalism landing page: Terminal-style API code demo replaces bento-card grid — the code IS the illustration. SDK tabstrip (curl/TypeScript/Python/JSON), MCP config showcase with copy-to-clipboard
Dashboard glass sidebar: Quick-glance metrics with backdrop-filter blur, frosted glass effect, scroll-reveal animations on 8 sections (29 data-reveal attributes)
Pricing page: Annual/monthly billing toggle (Save 17%), Pro "BEST VALUE" card with scale(1.02) glow, gold gradient border, FAQ
VitePress documentation: 23 pages covering all MCP tools, APIs, and modules with 141→14 CSS class refactor
Test coverage: 179/179 passing across 4 packages (engine 133, pipeline-core 46, SDK 7, MCP server 38). Test:coverage scripts for all 5 testable packages