Agent Guardrails and Secure Development

Keep release evidence attached to its build

The report belongs to the previous build

The dashboard’s green report predates the artifact Botie wants to release. Preserve what the checks actually inspected.

BOTIE

Every check says pass, but the report names r1/a1 while the candidate is r2/a2. Can it be released from this evidence?
The inputs we are comparing

Current candidate

Same in both cases

{
  "revision": "r2",
  "artifact": "a2"
}

Verified build evidence

The candidate has complete evidence

{
  "revision": "r2",
  "artifact": "a2",
  "trustedRunner": true,
  "checks": {
    "tests": "pass",
    "dependencies": "pass"
  }
}

The passing report predates the patch

{
  "revision": "r1",
  "artifact": "a1",
  "trustedRunner": true,
  "checks": {
    "tests": "pass",
    "dependencies": "pass"
  }
}

Required check names

Same in both cases

  1. 0tests
  2. 1dependencies
Result for the candidate has complete evidence
ready for release review
Choose an explanation to test
The same revision produced different bytes

This check uses the pieces from “Require matching evidence and complete checks”.

BOTIE

Revision r9 matches, but the candidate artifact is a-new while the report inspected a-old. All required check results pass. Predict the release route.
Current candidate
{
  "revision": "r9",
  "artifact": "a-new"
}
Verified build evidence
{
  "revision": "r9",
  "artifact": "a-old",
  "trustedRunner": true,
  "checks": {
    "tests": "pass"
  }
}
Required check names
  1. 0tests

Use a number, text, or an array matching the requested result. For a matrix, put each row in brackets. Saving your prediction runs your current construction on these inputs and checks the earlier examples too.

Build a construction in the workspace above first. This case will test those pieces.

Who can write the evidence consumed by your release controller?

Verify the evidence source and candidate binding independently of candidate-controlled files.

These are invented records and deterministic policy checks. The browser runs no agent, shell command, MCP server or network request. Passing these fixtures establishes only the stated policy behaviour.

Work through the Python challenges →
Continue the courseWhat Did We Actually Trust When We Connected the MCP Server? →