01-projects/phdata

CAF Restructure — Organizing Brief (vision + capability unbundling + high-level architecture)

2026-06-14·strategic-brief·status: draft-for-founder-refinement

CAF Restructure — Organizing Brief

Source: founder brain-dump 2026-06-14 (iMessage). Purpose: organize the dump into three aligned artifacts the team can divide work against — (1) strategic vision, (2) capability unbundling, (3) high-level architecture components — and push back where the thinking needs a sharper edge.

This brief reconciles the dump with the June 9 four-move proposal (plugin packaging / on-disk manifest / two orchestrators / 106→~20 objective-skill collapse). Most of the dump is additive to that proposal, but two things in the dump force an evolution of it (multi-collaborator state, and the demo-site as a real product) — flagged inline as ⚠️ EVOLVES.


0. The one reframe (read this first)

The catalog is the asset. Everything else is I/O around it. And the catalog is your fixed-bid actuarial table.

You're selling fixed bid, not T&M. Fixed bid is only profitable when three things are true: you can (a) scope accurately, (b) know your delivery cost, and (c) reuse aggressively. All three are downstream of one object: a use-case/agent catalog where each entry carries its proven deployment recipes, sandbox-proven status, and actual delivery effort/outcomes. That object is what lets a sales rep quote a number and a delivery lead hit it.

So I'd stop treating your five deliverables as peers. Center the catalog; the other four orbit it:

            CLIENT INTELLIGENCE  (input: who is this company)
                      │
                      ▼
   CATALOG  ◄────►  TAILORING  ────►  DEMO SITE   (output: what we pitch them)
  (the asset)        (catalog × intel)   (presentation layer)
      ▲                                      
      │ generalize-back loop (3× → promote)  
      │                                      
  DELIVERY ACCELERATION  =  the catalog's "how we build it" face
  (not a separate system — see §2)

This single reframe resolves half the architecture questions, because it tells you what must be durable, shared, and schema-governed (the catalog + its provenance) vs what is ephemeral (a given conversation's reasoning).


1. Strategic vision

CAF is the machine that makes fixed-bid agent engagements profitable by industrializing reuse across the sales→delivery seam.

North-star test for every design debate: does this drive marginal delivery cost down or scoping accuracy up? If a proposed feature does neither, it's not CAF's job.

What CAF stops being: a 106-skill linear monolith you run end-to-end in one context window. What it becomes: a graph of separable capabilities over a shared catalog, runnable piecemeal or orchestrated, consumed from any harness.


2. Capability unbundling (for alignment + work division)

Six capabilities. Five are yours; I've added Orchestration as an explicit cross-cutting seventh concern because "it's a monolith / judges never fire" is really an orchestration gap, not a per-deliverable gap. Each is specified as purpose / inputs / outputs / can-run-standalone? / owner-candidate.

A. Client Intelligence

B. Use-Case / Agent Catalog ← the asset

C. Use-Case Tailoring

D. Sales Demo Site (the "321GO" surface)

E. Delivery Acceleration = the catalog's delivery face (⚠️ do not build twice)

F. Orchestration (cross-cutting)

Suggested work-division seams: A (research/DSA) · B+E (catalog+delivery, owned together so they never fork) · C (tailoring, the "AI core") · D (web/platform) · F (orchestration/platform). These are clean ownership lines because the artifact contracts between them are explicit.


3. High-level architecture components (outline only — detail in the next step)

Five components. This is the skeleton to align on before we draw the ERD or pick the host.

(1) Separate the data plane from the agent plane — this dissolves 3 of your concerns at once

Your collaboration + state + multi-harness concerns are really one concern: state is in the context window, and it shouldn't be. Split:

(2) ONE remote MCP server over the datastore → solves "same tools in every harness"

You don't get cross-harness tool parity by copying skills into Desktop/Code/Cowork. You get it by exposing the data-plane operations (read/write catalog, intel, tailored portfolio, manifest) as a remote MCP server that every harness connects to as a client.

(3) Contracts become enforced schemas at the write boundary — not prose

Your "contracts.md isn't consistently followed" is a symptom. Cause: contracts are advisory prose that gets evicted from context. Cure: each deliverable's output is written via an MCP tool that validates against the contract schema — it cannot be silently violated. This is exactly RDCO's multi-agent pipeline pattern (StructuredOutput tool, schema-validated). Contracts 0–6 move from "YAML blobs in conversation" to "typed rows the store enforces."

(4) Orchestration = a DAG of deliverable nodes with artifact handoffs, not monolith-vs-skills

The binary is false. Model it as a dependency graph: each node runs standalone if its input artifacts exist, or under the orchestrator (which resolves the graph and dispatches ready nodes). Client-intel is a node whose output feeds tailoring — exactly your "capture phase -1 as context for other deliverables." Judges are first-class nodes (gate state transitions, per F).

(5) Demo site = static shell + data-driven content + gated host (the quick-sites pattern, ported)


4. Pushback / refinements summary

  1. Center the catalog; demote the site. The site is presentation; the catalog (with provenance) is the moat and the fixed-bid actuarial table. Your list had them as peers — they aren't.
  2. Unify "catalog" (B) and "delivery acceleration" (E). Stack-qualification + proven-status + effort are attributes of a catalog entry, not a second system. Build once or they'll fork and rot.
  3. Data plane vs agent plane. "Sync to a DB" undersells it — the real move is making harnesses stateless clients of one store, which dissolves collaboration + state + multi-harness together.
  4. One remote MCP server, not skills-copied-everywhere. This is how you get cross-harness parity and stay consistent with the June 9 "plugin = Code only" decision.
  5. Contracts → enforced schema, not better prose. Discipline won't fix it; a validating write tool will.
  6. Judges fire because the orchestrator requires a validated state transition — that's why they're dead today (nothing enforces the gate).
  7. The 3×-generalize reverse loop needs a curator gate + dedup, or the catalog fills with near-duplicates. "Independent recurrence" is a clustering judgment + a human promotion approval, not an auto-write. The catalog needs a librarian owner.
  8. Make fixed-bid the explicit forcing function in the vision doc, so the team has one yardstick to settle design arguments.

5. Where I need expanded detail (your homework / next-step inputs)

Ranked by how much they block architecture:

  1. Data governance / tenancy (biggest). Public 10-Ks are fine to pool, but call transcripts + D&B/ PitchBook are sensitive and phData clients are often regulated. Can intel live in a shared multi-tenant store, or does each client need isolation + retention rules? This can force per-client partitioning and changes the datastore choice.
  2. Collaborator personas + harness + technical level. How many sales reps vs engineers? Are reps on Desktop/Cowork only (non-technical) or can some use Code? This sets how thin the MCP/admin layer must be.
  3. Scale numbers. Clients/year, catalog size at maturity, concurrent collaborators → Postgres vs Snowflake vs object-store-plus-search.
  4. 321GO — existing phData product/brand or net-new? What's locked vs greenfield, and who owns it today?
  5. The actual Contracts 0–6 + one phase's skills — I need the real artifact shapes to draw the schema/ERD. (Still gated on the standing blocker below.)
  6. Partner politics for the demo-site host — mandate to feature Snowflake (or another partner), or free choice? Where does the client's delivery data already sit?
  7. Meta-Council / judge intended trigger points — per-phase or per-deliverable? Determines where gates slot into the DAG.
  8. Delivery-acceleration sandbox — do we have standing Anthropic/AWS/Snowflake sandbox envs to prove use cases turnkey, or is that to-be-built?

Standing blocker (unchanged from June 9/11)

The CAF repo is still not on this machine. I can outline architecture from your dump, but I cannot finalize the schema/ERD, the skill-collapse map, or the contract typing without the actual repo (contracts.md, the 106 skills, manifest example). This is the gate to the "next step" you described.


6. How this maps onto the June 9 proposal (the delta, for the team)

June 9 move Status after this dump
Move 1 — plugin packaging (Code) Confirmed, but clarified: plugin carries skills; data tools go in a separate remote MCP server for cross-harness reach.
Move 2 — on-disk manifest/memory ⚠️ Evolves: artifact model right; backend graduates from local YAML to a shared multi-collaborator store.
Move 3 — two orchestrators Confirmed + sharpened: reframe from linear phases 1→7 to a DAG of deliverable nodes; orchestrator resolves deps + enforces gate state-transitions.
Move 4 — 106→~20 objective skills Confirmed; still gated on repo access to finalize the collapse map + DO-NOT-COLLAPSE list.
NET-NEW from today's dump Deliverable decomposition (the 6 capabilities), the catalog-as-asset reframe, the bidirectional generalize-back loop, the data-plane/agent-plane split + remote MCP, contracts-as-enforced-schema, and the demo-site-as-product (321GO).

Suggested next step

Lock §1–§2 with the team (cheap, no repo needed — it's vision + ownership lines). Then, the moment I have repo access + your answers to Q1/Q2/Q5, I draft the datastore ERD + contract schemas + the demo-site content model as the promised "next step" architecture detail.


Addendum 2026-06-14 (live session) — harness portability + the Glean integration

Two refinements surfaced in the founder thread same day. Both reinforce §3's data-plane/agent-plane split.

Three swappable layers on one durable loop

Nadella's "swap the model without losing the company veteran" ([[2026-06-14-satya-nadella-frontier-ecosystem-learning-loop]]) has a layer above it the founder named: the client/harness. Generalize: there are three swappable layers sitting on one durable loop:

  1. Model (generalist swap).
  2. Client/harness (Claude Code ↔ Cowork ↔ Desktop/Web).
  3. Connector source (Glean vs direct — below). The "company veteran" you never lose = the loop underneath: catalog + datastore + the MCP tool layer. Founder's own framing: porting the skills (the company expert) is useless without portable tools (the potter's turntable). Tool portability across harnesses = the remote MCP server. That is the unlock.

Code vs Cowork — a floor and a ceiling, not either/or

Glean — consume it, don't fight it (flips the internal objection into the integration)

Internal pushback: "can't connect Claude Code to GDrive/Slack/email, Glean already owns those." IT is partly right (duplicating governed connectors = permission/governance mess). But Glean can't be CAF's build substrate. Resolution, confirmed via web check 2026-06-14: Glean now ships a secure MCP endpoint explicitly built to connect "any agent" (Claude included) to enterprise context, permission-aware (users only see what they're allowed to); 275+ connectors; Glean agents exposable as MCP tools. So:


Addendum 2026-06-15 — Verified harness mechanics: plugin can bundle a REMOTE MCP server

Founder asked (iMessage 2026-06-15): can Claude Code plugins ship tools as well as skills? Verified against current docs (code.claude.com/docs/en/{plugins,mcp,plugins-reference}.md) via two claude-code-guide passes — NOT from memory:

CAF implication (confirms the data-plane/agent-plane split): the Code plugin ships the skills + a one-step pointer to the shared remote MCP server; the data tools live on that one remote server. This is exactly the June-14 "skills in the Code plugin, data tools in the MCP server" call, now mechanically confirmed. Caveat for the multi-harness goal: the plugin only turnkeys the Code side — Claude Desktop and Cowork connect to the same remote URL via their own MCP config. The remote server is the shared data plane all three harnesses hit; the plugin just makes Code install-and-go.