Normalize Glas execution evidence
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Container Image / build-and-push (push) Successful in 20s

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a028de-e2c8-7732-8521-46a7fc5db82f
This commit is contained in:
tegwick 2026-08-22 23:11:52 +02:00
parent b933cf52c8
commit 7e81545b24
13 changed files with 528 additions and 33 deletions

View file

@ -198,7 +198,7 @@ the local integration stack. Python compilation and `git diff --check` passed.
```task
id: ACTIVITY-WP-0032-T04
status: wait
status: done
priority: medium
state_hub_task_id: "48ff9bca-6251-59ff-8b6f-6b0d79252624"
```
@ -209,6 +209,23 @@ Depends on T02. Glas emits normalized, non-secret execution evidence. Land it in
rein. Keep the field allowlist discipline from ACTIVITY-WP-0031: no provider
blobs, no credential material in run artefacts.
Done 2026-08-22 against Glas contract 1.0. Both queue completion and failure
normalize the returned `GatewayResult` before persistence. Activity Core keeps
the declared `ExecutionEvidence` constellation, outcome/failure stage, bounded
measurements, commit/artifact references, and allowlisted organizational refs
under `ops_runs.result.execution_evidence`. It preserves meaningful zero values
and explicit `unavailable`, while dropping direct `tool_output`, `tool_error`,
prompts, messages, provider responses, unknown nested blobs, and undeclared
refs. Historic results are normalized again at read time.
The per-run API/UI projection now includes `execution_evidence`, so operators
can see profile, rein, resolved model, sandbox, outcome, duration, tokens, and
artifact facts without provider payloads. Tests cover success, failure,
redaction, invalid enums/measurements, unknown-versus-zero semantics, legacy
artifact compatibility, and the run summary. Verification: 71 focused tests
and 433 repository tests passed; the live NATS-to-Temporal bridge test remained
deselected because it requires the local integration stack.
## Prove on one definition
```task