Skip to content

[FEAT] Production receipt sink: bridge RAMPART regression evidence to runtime audit trail #80

Description

@arian-gogani

Problem

RAMPART closes the testing loop: it proves an agent failed or passed a safety probe in CI. The missing piece is a bridge to the runtime record — what the agent actually did in production, verifiable by a third party without trusting the operator's infrastructure.

Teams need both:

  • RAMPART regression receipt: test-time evidence (agent failed the prompt-injection probe at commit abc123)
  • Production receipt: runtime evidence (agent called send_email with scope user@example.com at a given timestamp, Ed25519 signed, hash-chained, independently verifiable)

Without the production layer, RAMPART proves the mitigation held in test but can't prove it held in the field.

Proposed: ProductionReceiptSink

A RAMPART reporting sink that, on test completion, emits a signed production receipt alongside the regression artifact. The receipt uses the action_ref content address to link the test artifact to the runtime evidence format:

from nobulex import Agent
# ProductionReceiptSink observes tool calls during RAMPART probes,
# signs each one with Ed25519 over JCS-canonical JSON,
# and emits the hash-chained receipt alongside the regression JSON.

The sink derives action_ref = SHA-256(JCS({agent_id, action_type, scope, timestamp_ms})) for each tool call observed during the RAMPART probe, producing an artifact that is both a RAMPART regression record AND a cryptographically verifiable runtime receipt.

Relevance

EU AI Act Article 12 (enforcement August 2, 2026) requires tamper-evident automatic logging for high-risk AI systems. RAMPART + a production receipt sink provides the complete evidence package: CI proof that safety tests pass AND independently verifiable runtime records.

pip install nobulex ships the receipt layer. Happy to contribute a ProductionReceiptSink adapter as a draft PR if there's appetite.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions