Components
Components
Section titled “Components”One file per buildable unit. Each component file is self-contained: vision context + spec + acceptance criteria + dependencies. A subagent dispatched to "implement X" opens its component file and finds everything it needs in one place.
Three views, same components
Section titled “Three views, same components”- This file (Question view) — components nested by the architecture-doc question they answer. Best when you own a user-facing concern ("I own compliance authoring").
- SYSTEMS.md — components grouped by engine/subsystem (Policy engine, Tool governance, Sandbox runtime, Sync system, Operator surfaces, Evaluation, Reference impls, Trust & compliance). Best when you own a technical engine ("I own the policy compiler").
- DATA-OBJECTS.md — components organized around the eight first-class data objects (Policy, Sandbox, Keyring, Tool, Audit, Probe, Identity, Authoring sub-objects), with the engines that operate on each plus the quick-start templates. Best when you own a noun ("I own everything that touches Policy").
Pick whichever cut matches your scope. All three point at the same files.
How to use this folder
Section titled “How to use this folder”You are a subagent who owns a component.
- Open
<question-folder>/<component>.md. You'll find frontmatter at the top and six sections below. - Read your frontmatter.
parent_concept+parent_questiongive you the strategic context.depends_onandblocksgive you the coordination context. - Read your component's body. §1 is the vision. §2 is the contract. §3 is the design. §4 is the checklist. §5 is who else's work touches yours.
- Click into the parent concept's section if you need full vision context.
- Update the frontmatter as you progress:
status,last_updated,spec_status,implementation_status.
You are an operator surveying current state.
The table below is the honest current snapshot of every component. To regenerate this from the frontmatter (when a script exists): tappass-components index --output README.md.
Index — current status
Section titled “Index — current status”Components are nested by the architecture-doc question they answer. Each entry shows: id, status, size, owner, blockers (if any).
Q3 — What interactions do we govern?
Section titled “Q3 — What interactions do we govern?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| upstream-tool-proxy | concept | M | platform | policy-to-sandbox-config-builder |
| approved-tool-server-list | concept | S | platform | upstream-tool-proxy |
| resource-access-checker | concept | S | platform | upstream-tool-proxy |
| runaway-agent-stopper | concept | S | platform | upstream-tool-proxy |
Q4 — How is policy written, and how do regulations map?
Section titled “Q4 — How is policy written, and how do regulations map?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| eu-ai-act-bundle | concept | M | compliance | policy-to-sandbox-config-builder |
| owasp-llm-bundle | concept | M | compliance | policy-to-sandbox-config-builder |
Q5 — How do business users actually use this?
Section titled “Q5 — How do business users actually use this?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| onboarding-wizard | concept | S | frontend | operator-cli |
Q6 — How does policy scale across an org with multiple teams?
Section titled “Q6 — How does policy scale across an org with multiple teams?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| cascade-merge-engine | concept | M | platform | projects-teams substrate |
Q8 — How do we know the agent obeys policy before we deploy it?
Section titled “Q8 — How do we know the agent obeys policy before we deploy it?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| pre-deployment-evaluator | concept | L | platform | agent-client-sdk |
| owasp-llm-probe-library | concept | M | compliance | pre-deployment-evaluator |
Q9 — How do we enforce policy on the host? (3 rings + 2 cross-cutting layers)
Section titled “Q9 — How do we enforce policy on the host? (3 rings + 2 cross-cutting layers)”See q09-rings-and-cross-cutting/README.md for the layered model and how each catches what.
| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| ring-kernel | concept | M | platform | host-runtime-cli |
| ring-harness | concept | S | platform | host-runtime-cli |
| ring-interpreter | concept | S | platform | host-runtime-cli |
| cross-cutting-mcp-broker | (pointer) | — | — | (Q3 components) |
| cross-cutting-llm-gateway | shipped | — | — | (already in tappass/gateway/) |
Q10 — How do we unify one policy across every layer?
Section titled “Q10 — How do we unify one policy across every layer?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| policy-to-sandbox-config-builder | concept | L | platform | trust-engine-async, cascade-merge-engine |
Q12 — How do we keep sandboxes in sync, and detect drift?
Section titled “Q12 — How do we keep sandboxes in sync, and detect drift?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| live-policy-push-channel | concept | M | platform | policy-to-sandbox-config-builder |
| behavior-drift-monitor | concept | M | platform | live-policy-push-channel |
Q14 — How do we manage three CLIs without confusion?
Section titled “Q14 — How do we manage three CLIs without confusion?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| operator-cli | concept | M | cli | policy-to-sandbox-config-builder |
| host-runtime-cli | concept | M | cli | live-policy-push-channel, agent-client-sdk |
| agent-client-sdk | concept | S | cli | live-policy-push-channel |
Q15 — What does this look like for a real agent?
Section titled “Q15 — What does this look like for a real agent?”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| collibra-reference-agent | concept | M | platform | upstream-tool-proxy, agent-client-sdk, host-runtime-cli |
Operational (not a question — trust posture and audits)
Section titled “Operational (not a question — trust posture and audits)”| Component | Status | Size | Owner | Blocked by |
|---|---|---|---|---|
| soc2-type1-audit | concept | (calendar) | ops | public-trust-page |
| public-trust-page | concept | S | ops | (none) |
Status legend
Section titled “Status legend”- concept — we agree this needs to exist; nothing started
- spec — someone is writing the feature doc
- impl — someone is writing code
- shipped — running in production
- deferred — decided not to do this quarter
- (pointer) — this layer/component delegates to another existing component
- (shipped) — capability already exists in TapPass codebase
Adding a new component
Section titled “Adding a new component”- Copy
_template.mdto the rightq<NN>-<name>/folder. - Fill in frontmatter completely. Do not skip
depends_on,blocks,acceptance_criteria. - Write §1 (vision context, ~100 words) immediately. The other sections can fill in as the component matures.
- Add an entry to the index above.
- If your component blocks/is-blocked-by another, edit that one's frontmatter too.