UAPI GLM 5.2 Mock Provider Adapter Fixture Pack 2026-06-22
GLM 5.2 mock ProviderAdapter behavior and fixture pack for first-wedge tests.
Promotion Metadata
- Source feedback id:
135 - Source feedback ids:
135 - Promotion request id:
66 - Feedback category:
beneficial - Feedback source:
[REDACTED:high-entropy] - Feedback created at:
2026-06-22T18:32:59.184868+00:00 - Target slug:
[REDACTED:high-entropy] - Review state:
review - Reviewer note: AI lane auto-promoted redacted feedback into internal catalog context.
Source Feedback Body
Feedback 135
- Product:
uapi - Category:
beneficial - Related slug:
[REDACTED:high-entropy] - Source:
[REDACTED:high-entropy] - Created at:
2026-06-22T18:32:59.184868+00:00
GLM 5.2 — Mock ProviderAdapter Fixture Pack
Date: 2026-06-22 Lane: Interpreter/Conductor/Foundry first wedge Sources: agent-work-queue-v2-unblocked, codex-contract-decisions-v0-2, adapter-boundary-and-demo-plan, event-threading-and-result-lineage (all same date). Assumptions: Codex v0.2 field names are stable for first wedge. Mock adapter is sole result producer.
Mock Adapter Behavior
MockProviderAdapter is a deterministic, no-network scaffold. No real model, no weights, no GPU/NPU.
capabilities()
Returns static list: ["embedding", "light-inference"]. Used by Placement Gate for lane matching.
health_probe()
Returns { "status": "healthy", "detail": null }. Never fails in first wedge. A second instance MockProviderAdapterUnhealthy returns { "status": "unhealthy", "detail": "forced-fail" } for negative Placement Gate tests.
submit(job)
Returns synthetic ResultPacket:
- adapter_id: "mock-adapter-001" (or "mock-adapter-unhealthy" for fail path).
- route_candidate_id: "mock-route-001".
- gate_decision_id: copied from Placement pass GateRecord.
- correlation_id: copied from job.
- submit_timestamp: ISO 8601, set to now() at call time (after Placement).
- Payload: fixed 8-element float vector [0.1, -0.2, 0.3, -0.4, 0.5, -0.6, 0.7, -0.8] for embedding jobs; ack string "ok" for light-inference.
Timeout: 30s per Codex v0.2. Mock returns within 50ms.
Fixture Inputs
FIXTURE-M1: embedding-job-valid
job_id: "job-0001"
session_ref: "sess-0001"
correlation_id: "corr-0001"
lane: "embedding"
payload: { "text": "hello" }
Expected: ResultPacket with 8-element vector, all lineage fields non-empty.
FIXTURE-M2: light-inference-valid
job_id: "job-0002"
lane: "light-inference"
payload: { "prompt": "ping" }
Expected: ResultPacket with "ok" payload, lineage fields non-empty.
FIXTURE-M3: wrong-lane
job_id: "job-0003"
lane: "foundry-demo"
payload: {}
Expected: Placement Gate denies — mock adapter capabilities do not include foundry-demo. No submit call.
Pass/Fail Expectations
| Fixture | Gate | Expected Decision | Reason |
|---|---|---|---|
| M1 | Placement | pass | capabilities match, health ok |
| M1 | Acceptance | accepted | lineage complete |
| M2 | Placement | pass | capabilities match |
| M2 | Acceptance | accepted | lineage complete |
| M3 | Placement | deny | no adapter for foundry-demo |
| M1 + unhealthy adapter | Placement | deny | health_probe unhealthy |
Negative Adapter Tests
NEG-ADAPT-1: tampered adapter_id
Mock variant returns adapter_id="wrong-adapter". Acceptance Gate check #2 fails (adapter_id does not match Placement-selected). Expected: denied.
NEG-ADAPT-2: empty route_candidate_id
Mock variant returns route_candidate_id="". Acceptance Gate check #5 fails. Expected: denied.
NEG-ADAPT-3: timestamp-before-placement
Mock variant sets submit_timestamp earlier than Placement GateRecord. Acceptance Gate check #4 fails. Expected: denied.
Boundary
- GLM owns mock adapter and these fixtures.
- Codex owns schema validation rules.
- No real adapter activation in this pack.
Blockers
gate_decision_idformat (UUID vs sequential) undecided — fixtures use placeholder"placement-pass-0001".- EventEnvelope delivery mechanism still Codex-owned.
Next Handoff
→ Codex: confirm gate_decision_id format so fixtures can lock. → GLM: implement mock adapter and run fixtures against gate scaffolding.