agentic-sdlc

Intent · CHG-2026-014905

Stage artifact from intent/CHG-2026-014905-runtime-substitution.md, header and all.

View intent/CHG-2026-014905-runtime-substitution.md on GitHub ↗
change_id: CHG-2026-014905
risk_class: R3
autonomy_tier: A2
controls: ['TPR-05', 'CHG-04', 'TRC-01', 'HUM-14']
data_classification: internal
originator: olaf@freundcloud.com
agent_identity: svc-agent-platform
model_route: gateway/tier-frontier
supersedes: None

Problem

The repository claims the agent runtime is its most replaceable component, and scores itself 12/12 on the Substitution Test partly on that basis. But the claim is only inspectable: a reader has to read two workflow files and take on trust that swapping vendor would not ripple further.

That is the weakest kind of evidence this repository accepts anywhere else. Every other claim here is executed — the gates are proven by being made to refuse, the eval suite is run rather than described, the Substitution Test is scored from the tree rather than self-assessed. Portability is the one claim still resting on a paragraph.

It is also the claim that matters most commercially. “What happens when we want to move off this vendor” is the first question a bank’s third-party risk function asks, and DORA Ch. V makes it a regulatory one rather than a preference. An answer of “look at these two files and you’ll see it would be fine” is not an answer.

There is a second, quieter problem. Copilot is invoked by assignment to a bot identity in the VCS; every other runtime worth considering is invoked as a workflow step with a credential. Those are different shapes. A design that has only ever hosted the first shape has not been tested against the abstraction it claims to have.

Who is affected

Success criteria

  1. The agent runtime is declared as configuration, and switching vendor is a single command whose entire diff is one line.
  2. At least one runtime of each invocation shape is supported — an identity in the VCS, and a hosted step taking its credential from the gateway.
  3. Switching prints the blast radius: what the swap wrote, and the count of skills, policy tables, gates, eval cases and chain artifacts it did not touch.
  4. The repository re-scores itself under every runtime — gates, evals and the Substitution Test — and the scores are identical. A score that moves is a portability debt, not a refactor.
  5. A stage that wires a vendor identifier directly fails Stage 0, so the abstraction cannot quietly rot back into a hard-coded vendor.
  6. No runtime names a model. Which model serves a route stays the gateway’s decision.

Out of scope

Constraints