Skip to content

Separate evidence status from ACTION outcome reporting #144

Description

@Bashirloyan

Context
In #36, I suggested separating evidence status from action outcomes. The maintainer called the idea reasonable and requested a separate issue because it changes reporting design.
This issue focuses on ACTION conformance reporting. It does not take over ACTION-014/015, change replay behavior, or add self-contained fixture bundles.
This issue proposes reporting evidence validity separately from authorization decisions or execution outcomes. Evidence of a denied or rejected action can remain valid when it passes the required verification checks.

Problem
The ACTION helper returns _ActionEvidenceResult with classification and code. These values already distinguish between provenance failures, authorization failures, and valid negative outcomes.
Today, readers and reporting tools must infer both evidence status and action outcome from those classifications. I propose making two separate questions explicit:

  1. Did the evidence pass the required checks?
  2. What decision or outcome does that evidence support?
    A denial can show that a control worked correctly. Evidence can pass its checks while policy denies the request or the controller rejects the action.

Proposal
Add an explicit evidence_status alongside the action decision or outcome. Define which evidence-verification checks it covers, separately from authorization decisions and execution outcomes. Retain existing classification and code values where possible, subject to compatibility review.

Case What the report should show
Evidence passes its checks, but local policy denies the request Report the evidence check result separately from the policy denial.
Evidence passes its checks, but the controller rejects the action Preserve valid evidence of the negative outcome.
Evidence fails its checks, but the input claims the action was allowed Flag the evidence failure. Do not present the claimed outcome as verified.

If evidence fails, the report could retain the claimed outcome separately while marking the verified outcome as unknown or not evaluated.
“Allowed” should describe an explicit authorization decision, not merely the absence of a block. The report must not present that decision as proof of successful execution.
Likewise, a passing conformance test means the system behaved as expected—not that the sample action succeeded.
The design should distinguish failed checks, missing required evidence, and checks the verifier did not perform. Each state carries a different meaning for readers and reporting tools. I leave the exact fields and values open for discussion.

Scope
Limit the initial change to the ACTION conformance reporting helper and related documentation.
The change should:
• Define which checks evidence_status covers.
• Preserve security checks, failure ordering, and reason codes.
• Never treat invalid evidence as permission to act.
• Review compatibility and document any required migration.

Questions for maintainers

  1. Should the initial change stay within conformance reporting, or should it also expose evidence_status through the public verifier API?
  2. Should we use separate fields for authorization decisions and controller outcomes, or would one shared outcome field suffice?
  3. How should we distinguish invalid evidence, missing required evidence, and checks the verifier did not perform?
  4. Can we add reporting fields while retaining existing classifications and reason codes for compatibility?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions