From ac296ee3a4400985061398d35bb204896aac6edb Mon Sep 17 00:00:00 2001 From: Marius Ciepluch <11855163+norandom@users.noreply.github.com> Date: Tue, 29 Sep 2026 19:19:11 +0200 Subject: [PATCH] spec(ai-service-plane): start signal through the router; credentials only in the start request The live cluster ran the task command twice: in the actor and in Substrate's golden-snapshot boot, which gets the same image and task env. Requirement 4.5 gates the command on a router-addressed start request; 4.6 carries provider credentials only in that request. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo --- .kiro/specs/ai-service-plane/requirements.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.kiro/specs/ai-service-plane/requirements.md b/.kiro/specs/ai-service-plane/requirements.md index 579842b..3c7c8bb 100644 --- a/.kiro/specs/ai-service-plane/requirements.md +++ b/.kiro/specs/ai-service-plane/requirements.md @@ -98,6 +98,13 @@ later. 4. Because ax has no artifact channel, the runner delivers the task's output directory (including `summary.json` and `units.jsonl`) to the reconciler's artifact endpoint named in `OUSAST_ARTIFACT_URL` before it reports completion; a delivery failure is reported as `failed`, never as done. +5. The command never runs in Agent Substrate's golden-snapshot boot, which executes the same image with the same + task environment (observed on the live cluster, 2026-09-29): the runner prepares workspaces, reports ready and + waits; the reconciler starts the command with one request to the task's actor through Substrate's router + (`ate-target-actor: /`), which never addresses the golden actor. A second start request for + the same task is refused. +6. Provider credentials reach a task only in that start request, held in the runner's memory and passed to the + command's environment; they never appear in a manifest, a rendered Task, an ax template or any file. ### Requirement 5: `repo-facts` is the memory layer