Summary
Extend the EU AI Act interaction log (#722, PR #784) to the bigger compliance surface: agent/node prompts and outputs from pipeline runs.
The mechanism already exists and should be reused as-is:
dap_engine.redaction.redact() — exact-value scrub (decrypted instance env vars) + pattern scrub
persistence/interaction_log.record_interaction(surface="run"|"node", ...) — the table, admin API (GET /interactions?surface=...), retention purge and config all already handle non-assistant surfaces
Scope
Non-goals
Mechanism from #722; this issue is the "Follow-up: agent/node prompts + outputs" item from its acceptance criteria.
Summary
Extend the EU AI Act interaction log (#722, PR #784) to the bigger compliance surface: agent/node prompts and outputs from pipeline runs.
The mechanism already exists and should be reused as-is:
dap_engine.redaction.redact()— exact-value scrub (decrypted instance env vars) + pattern scrubpersistence/interaction_log.record_interaction(surface="run"|"node", ...)— the table, admin API (GET /interactions?surface=...), retention purge and config all already handle non-assistant surfacesScope
redacted_request) and the raw model output (redacted_response), withprovider/model/tokens_usedfrom the adapter resultexecution/node_executor.py(has the prompt + output + adapter metadata) vs. the adapter base (closer to the wire, catches CLI runtimes too)known_secretsresolution inside the run context — runs resolve instance env vars already; thread the decrypted mapping to the redaction callnode_output_chunksexists for streaming) — decide truncation policy for the interaction record (e.g. cap at N KB with an explicit[TRUNCATED]marker inextra)Non-goals
Mechanism from #722; this issue is the "Follow-up: agent/node prompts + outputs" item from its acceptance criteria.