Acceptance Tests
The 10 canonical acceptance tests for the triage system. All must pass for triage to be considered active.Test 1: AI-Generated Candidate Is Visible in Staging
Given: An AI generates a knowledge item through MCP, conversation, or agent When: The item passes through triage Then: The candidate is visible intriage_results with approval_status = 'pending'
And: It appears in the Triage Inbox (GET /v1/knowledge/inbox)
Test 2: Candidate Is Not Visible to Governed Org Memory Queries While Pending
Given: A triage candidate exists withapproval_status = 'pending'
When: Queried through organizational memory endpoints
Then: The candidate is NOT returned
And: Only approval_status = 'approved' items appear in org memory
Test 3: Reject Leaves No Published Memory
Given: A triage candidate exists When: A human rejects it (PATCH /v1/knowledge/triage/:id with action: "discard")
Then: approval_status changes to 'discarded'
And: No org_memory row is created
And: No AI Search index entry exists
And: The rejection is audit-logged
Test 4: Defer Leaves No Published Memory and Can Return to Review
Given: A triage candidate exists When: A human defers it (action: "defer")
Then: approval_status changes to 'deferred'
And: No org_memory row is created
And: The item reappears in the Triage Inbox
And: It can later be approved or discarded
Test 5: Approve Records Approver Identity/Time and Triggers Exactly One Promotion
Given: A triage candidate exists withapproval_status = 'pending'
When: A human approves it (action: "approve")
Then: approval_status changes to 'approved'
And: approved_by records the approver’s identity
And: approved_at records the approval timestamp
And: Exactly one consolidation queue message is sent
And: The approval is audit-logged with full context
Test 6: Promotion Creates Provenance/Lineage and an Outbox Event
Given: An approved triage item is processed by the Memory Consolidator When: The Pipeline promotion engine scores and promotes it Then: Anorg_memory row is created with:
lineage_reflinking to the source entitymetadatacontaining source, signals, and classificationgovernance_stateset to ‘staging’ or ‘approved’ And: Amemory_promotion_auditrow records the decision And: An outbox event is emitted for downstream consumers
Test 7: Search/Index Receives Only Published Memory
Given: Both pending and approved triage items exist When: AI Search is queried Then: Onlygovernance_state = 'approved' items are returned
And: Pending items are NOT in the search index
And: Rejected items are NOT in the search index
Test 8: Twin Reads Published Memory Through Bounded Context Projection
Given: Approved organizational memory exists When: The Twin reasons about a work item Then: It receives memory through the AI Operational Sandbox And: The sandbox is bounded by tenant, user, role, and task And: The Twin never queries canonical storage directly And: Freshness, completeness, and authority markers are presentTest 9: Canonical Direct Writes from Triage Are Impossible Through Runtime Credentials/Bindings
Given: The triage runtime is deployed When: Attempted to write directly toorg_memory from triage context
Then: The write fails or is rejected
And: Triage bindings do not include write access to canonical storage
And: The only path to org_memory is through the Pipeline promotion engine
Test 10: Reconciliation Confirms the Published Record Is Retrievable After Promotion
Given: A triage item has been approved and promoted When: Theorg_memory table is queried directly
Then: The row exists with correct:
id,tenant_id,topic,category,contentgovernance_state = 'approved'confidencescorelineage_reflinking to sourcecreated_atandupdated_attimestamps And: The AI Search index contains the corresponding document And: The memory is retrievable through search with matching metadata