Inventory Record
Operating · Inventory · Obligation map →
Every in-production agent, copilot, or model-backed workflow gets a row before it can cause a side effect. The row is the approve step on the control path. It is not the route table and not the PEP.
No inventory, no owner, no go-live. Ethics slides and a policy PDF do not substitute for a named use case with an accountable owner.
What the row owns
| Owns | Does not own |
|---|---|
| Use-case id, name, owner, sponsor | Route route_id (Agents) |
| Autonomy pattern (0-3), data class, region | Tool schemas (manifests) |
| Go-live state: proposed / approved / live / retired | ALLOW / DENY / STEP_UP (Runtime) |
| Link to obligation map and evidence pack | PEP implementation |
Minimum fields
| Field | Why |
|---|---|
use_case_id | Stable id for audit and KRIs |
name | Human label (refund agent, contract review) |
owner | Named accountable human or team |
exec_sponsor | Who accepted residual risk |
pattern | 0-3 from the Agents Blueprint |
data_class | What the runtime and model gateway may see |
region / residency | Where inference and logs may live |
status | proposed / approved / live / retired |
runtime_profile | Pointer to policy profile / PEP surface |
evidence_pack_id | Link to the go-live pack |
Do not store entitlements per user here. Claims stay on the IdP. Do not store tool lists here. Those live on the manifest.
Worked examples
Two rows. Same register. Different risk, so different pattern, data class, and runtime profile. Do not clone the refund row onto a read-only FAQ.
Example row: bank refund agent (YAML)
Write path. Pattern 3 from the Agents Blueprint. Status stays approved until the evidence pack exists.
use_case_id: uc-refund-agent
name: Customer refund agent
owner: Priya Shah (Payments Operations)
exec_sponsor: James Cole (CRO)
pattern: 3
data_class: customer_financial
region: AU
status: approved
runtime_profile: pdp-refund-write-v4
evidence_pack_id: ev-refund-agent-2026-03
approved_at: 2026-03-12
Example row: staff HR policy FAQ (YAML)
Read path. Pattern 0: one LLM call, no tool loop. Still needs a row before it sees staff documents.
use_case_id: uc-hr-policy-faq
name: Staff HR policy FAQ
owner: Minh Tran (People Systems)
exec_sponsor: Ana Ruiz (CHRO)
pattern: 0
data_class: internal_unclassified
region: AU
status: live
runtime_profile: pdp-hr-faq-read-v1
evidence_pack_id: ev-hr-policy-faq-2026-01
approved_at: 2026-01-20
| Field | Refund agent | HR policy FAQ |
|---|---|---|
pattern | 3 (model may pick tools inside a fixed refund stage) | 0 (no tools) |
data_class | customer_financial | internal_unclassified |
runtime_profile | Write PEP, STEP_UP above the fraud band | Read-only retrieval scope |
owner | Named human in Payments, not payments-ops@ | Named human in People Systems |
Good vs bad row
| Bad | Why it fails | Good |
|---|---|---|
owner: [email protected] | Mailbox cannot accept residual risk | owner: Priya Shah (Payments Operations) |
status: live and empty evidence_pack_id | Gate skipped | approved until ev-refund-agent-2026-03 exists |
pattern: 1 on a refund write path | Open loop on money movement | pattern: 3 (or 2) with PEP on issue_refund |
data_class blank | Runtime and hosting have no scope | customer_financial + region: AU |
| Tools listed on this row | Wrong register | Pointer to the manifest only |
Failure classes
- Agent in production with no row: refund bot in a business-unit Slack, no
use_case_id - Owner is a shared mailbox with no named human:
ai-coe@as owner - Status
livewith empty evidence pack: row ticked "approved" in a spreadsheet - Row exists; route table and PEP never linked:
runtime_profileis a comment, not a profile id
Trace / register fields
use_case_id, owner, status, pattern, data_class, evidence_pack_id, approved_at
Blueprint: Operating. Runtime after approve: Runtime playbooks.