New Capability: Unified Canonical Architecture
Date: April 13, 2026 Origin: April 3 eight-agent audit revealed 70/71 presentation mismatches, 66/70 framework book mismatches, and 77 logos invisible to agents. Director couldn't find a show logo during live setup. Every new piece of content created was adding drift because no canonical source enforced consistency. Impact: Every agent and every human can find the right asset, methodology content, or documentation in one query. 24 entity types across 4 Unified Views, 10 canonical query tools, 52/52 methodology entities aligned across 5 systems. Zero hardcoded methodology content in the codebase.
What Was Built
The Unified Canonical Architecture is the data backbone for the entire Value-First operations system. It establishes one answer for where everything lives across 16 systems (Sanity CMS, Content Vault, HubSpot, Obsidian, filesystem, Google Drive, Mux, and more). Before UCA, agents guessed at file paths, presentations hardcoded methodology content that drifted from canonical articles, and 77 logos existed on disk that no agent could find.
The architecture follows a 9-layer build: inventory everything (Layer 1), design the data model through the Four Unified Views (Layer 2), map storage with write ownership per system (Layer 3), implement schemas and populate records (Layer 4), build query interfaces (Layer 5), wire consumers (Layer 6), clean up hardcoded sources (Layer 7), validate end-to-end (Layer 8), and design drift detection (Layer 9). All 9 layers are complete.
The system is designed from the decisions it serves, not from the inventory of what exists. Every entity earns its place through one of the Four Unified Views: Customer Health, Company Health, Context Health, or Community Health. An entity that doesn't help someone see a customer more clearly, understand the flow of value more honestly, access context at a decision point, or enable the team more effectively doesn't belong in the model.
Infrastructure Changes
| Change | Before | After |
|---|---|---|
| Methodology content | Hardcoded in 23+ TypeScript files, 4 divergent sources | Canonical in Sanity CMS, queried at build time via methodology.ts |
| Content Vault | 18 tables, ~2,500 records | 42 tables, ~3,100 records (incl. 51 projects, 22 assets, 52 methodology) |
| Canonical query tools | 0 | 10 (show-query.js, episode-query.js, article-query.js, friend-query.js, methodology-query.js, organization-query.js, customer-health-query.js, company-health-query.js, project-query.js, unified-audit.js) |
| Data model | Undefined | 24 entity types across 4 Unified Views, system-independent |
| Write ownership | Ad hoc | 12 systems, 12 designated write agents (Ledger, Canon, Vault, Scrivener, etc.) |
| Obsidian knowledge graph | 58 notes, no operational connection | 87 notes, standardized frontmatter, cross-referenced to Vault/Sanity/monorepo |
| Website methodology surfaces | Hardcoded inline arrays in 19+ components | Canonical imports from Sanity queries or shared sync modules |
| Show data in components | Hardcoded arrays | Sanity getActiveShows() queries |
| Sanity methodology schemas | trap, valuePathStage, unifiedGoal, frameworkConcept, valueReality | + coreBelief (5 documents created) |
| Website routes | No Core Beliefs or Three-Org pages | /learn/foundation/core-beliefs/ (index + detail) + /learn/foundation/three-org/ |
| Cross-system alignment | 24/52 entities at 5/5 (46%) | 52/52 entities at 5/5 (100%) |
| Agent certification | Manual, inconsistent | /certify command covering agents, commands, skills, scripts, hooks |
| Drift detection | None | Tiered design (daily/weekly/on-demand) embedded in operational rhythm |
Implementation
| File | Purpose |
|---|---|
docs/plans/unified-canonical-architecture-5p-plan.md |
5P plan (Purpose, People, Process, Platform, Performance) |
docs/plans/unified-canonical-architecture-prd.md |
Product Requirements Document (8 Functional Requirements) |
docs/plans/unified-canonical-data-model.md |
24 entity types, attributes, relationships, lifecycle |
docs/plans/canonical-architecture-remaining-scope.md |
Living scope tracker with change log |
docs/plans/canonical-drift-detection-design.md |
Tiered detection approach |
scripts/canonical/show-query.js |
Show entity query (43 shows, broadcast metadata) |
scripts/canonical/episode-query.js |
Episode entity query (1,289 episodes, lifecycle) |
scripts/canonical/article-query.js |
Article entity query (143 articles, authorship) |
scripts/canonical/friend-query.js |
Friend entity query (145 contributors, HubSpot live) |
scripts/canonical/methodology-query.js |
Methodology entity query (52 records, drift check) |
scripts/canonical/organization-query.js |
Organization entity query (34 orgs, Value Path) |
scripts/canonical/customer-health-query.js |
Session + Signal + Event combined audit |
scripts/canonical/company-health-query.js |
Engagement + Investment + Offering + Deliverable audit |
scripts/canonical/project-query.js |
Project entity query (51 projects, plan doc linkage) |
scripts/canonical/unified-audit.js |
Full 24-entity census across all systems |
skills/canonical/canonical-query-reference.md |
Query tool usage patterns and when-to-use guide |
apps/website/src/lib/sanity/methodology.ts |
Typed Sanity query functions for all methodology content |
apps/website/src/data/value-path-stages.ts |
Canonical sync cache for React components (8 VP stages) |
apps/website/src/data/trap-metadata.ts |
Canonical sync cache for React components (12 traps) |
apps/website/studio/schemas/coreBelief.ts |
Sanity schema for Core Belief documents |
apps/website/src/pages/learn/foundation/core-beliefs/ |
Core Beliefs website pages (index + [slug] detail) |
apps/website/src/pages/learn/foundation/three-org/index.astro |
Three-Org Model website page |
.claude/commands/certify.md |
Agent/command/skill/script/hook certification |
.claude/commands/project-management.md |
Marshal project coordination (includes Change Order process) |
/mnt/d/Leadership/assessments/2026-04-07-unified-canonical-data-model.html |
Interactive visualization (Tron:Ares, 11 tabs) |
/mnt/d/Obsidian/value-first/ |
87 notes with standardized frontmatter across 13 directories |
Usage
Canonical Queries (any agent or human)
# Find a show and its cross-system presence
node scripts/canonical/show-query.js "AI Daily"
# Check methodology drift across 5 systems
node scripts/canonical/methodology-query.js --drift
# Full 24-entity census
node scripts/canonical/unified-audit.js
# Project portfolio with plan doc linkage
node scripts/canonical/project-query.js --all
# Sync projects from HubSpot + filesystem
node scripts/canonical/project-query.js --sync
Agent Certification
/certify agent director # Certify Director through constructive show setup
/certify command daily-ops # Verify all references resolve, execute
/certify skill vf-platform-context # Verify methodology accuracy
/certify script project-query.js # Execute and verify output
/certify hook build-check # Verify trigger fires correctly
Project Management with Change Orders
/project-management UCA # Open project session
/project-management index # Portfolio dashboard (51 projects)
/project-management change order UCA # Formal scope change process
Website Methodology (developers)
// Astro pages — direct Sanity query
import { getAllTraps, getTrapBySlug } from '@/lib/sanity/methodology';
const traps = await getAllTraps();
// React components — canonical sync cache
import { VALUE_PATH_STAGES } from '@/data/value-path-stages';
import { TRAPS, getTrapBySlug } from '@/data/trap-metadata';
Leader Applications
V (Operations)
UCA is V's primary architectural achievement. V uses canonical queries in every operational rhythm: /daily-ops runs unified-audit.js for system health, /weekly-review uses project-query.js for portfolio tracking, and /media-prep uses show-query.js and episode-query.js for production readiness. The /certify command is V's tool for ensuring every agent, command, skill, script, and hook in the system actually works. The data model document and interactive HTML visualization are V's architectural reference for all design decisions.
Sage (Customer)
Sage uses customer-health-query.js for session, signal, and event intelligence across the portfolio. friend-query.js powers relationship intelligence with live HubSpot data for any person (human or AI). organization-query.js provides cross-system client views. The methodology queries ensure Sage's relationship briefs and session preparations reference canonical content, not stale copies.
Pax (Finance)
Pax uses company-health-query.js for engagement, investment, offering, and deliverable health across the revenue view. project-query.js provides visibility into project pipeline state with plan doc linkage. The canonical data model ensures Pax's revenue briefs and capacity assessments reference consistent entity definitions.
Dependencies
| Dependency | Status | Notes |
|---|---|---|
| Sanity CMS | Confirmed | 43+ schema types, write token in apps/website/.env |
| Content Vault (SQLite) | Confirmed | /mnt/d/data/content-vault.db, 42 tables, 3,100+ records |
| HubSpot VF Team Portal | Confirmed | Portal 40810431, property index cached |
| Obsidian Vault | Confirmed | /mnt/d/Obsidian/value-first/, 87 notes |
scripts/sanity/query.js |
Confirmed | Read operations, auto-loads token |
scripts/sanity/patch.js |
Confirmed | Write operations via Canon |
scripts/hubspot/api.js |
Confirmed | Universal HubSpot CLI |
| Node.js 18+ | Confirmed | Required for all canonical query tools |
Verification
- Methodology alignment:
node scripts/canonical/methodology-query.js --driftreturns zero discrepancies for the 24 in-scope entity types (traps, VP stages, unified views) - Full census:
node scripts/canonical/unified-audit.jsreturns 3,100+ records across 24 entity types - Website build:
pnpm buildcompletes with zero methodology-related errors (all surfaces pull from Sanity) - Obsidian graph: Open
/mnt/d/Obsidian/value-first/in Obsidian, verify 87 notes visible with connected graph - Project query:
node scripts/canonical/project-query.js "Unified Canonical"returns full cross-system view with 3 plan docs linked - Visual verification: Open
file:///D:/Leadership/assessments/2026-04-07-unified-canonical-data-model.htmland confirm all 9 layers show "Complete"
Key Decisions Made During the Build
- Intentional data, not clean data. Every entity earns its place through a Unified View. Data that exists but doesn't serve a decision doesn't belong in the model.
- Friend replaces Person/Contact. One entity for anyone in the constellation -- human or AI.
- System-as-source-of-truth. No single source. Each system owns what it's best at. Agents coordinate writes through designated gateways.
- Learn, update, and certify by doing. Agent certification comes from constructive outcomes, not documentation. Audits are work orders, not deliverables.
- Canonical queries are READ intelligence. Pipeline scripts and gateway agents handle WRITES.
- Drift detection embedded in rhythm. Daily checks in
/daily-ops, weekly comprehensive scans in/weekly-review, on-demand via--driftflags.
Session Evidence
| Commit | Description |
|---|---|
68803953 |
UCA Phase 2: entity broadening + validation (52/52 at 5/5) |
0af5eeff |
Change Order: Project as 24th entity type + project-query.js |
e4a69544 |
Layer 7: 19 components refactored from hardcoded to canonical |
ccab3c8a7 |
/certify extended to 5 artifact types |
4 capability reports written: Content Vault, Canonical Query Layer, Rendered Surface Canonical Queries, Obsidian Knowledge Graph.
4 FR-11 audit reports: Visual QA (pass), Link Health (pass after fix), Director Show Setup (fail then fixed), Pixel Dedup (fail then fixed), Cross-system Drift (resolved to 52/52).