Skip to content

sdd-execute cannot add a covering CI check — .github/ is barred by protect_top_level_dot_folders, so proof-artifact gaps that need CI are an unbreakable needs-human #220

@norrietaylor

Description

@norrietaylor

Summary

When a task's proof artifact can only be covered by a CI/workflow change, sdd-execute cannot satisfy it: the agent's create_pull_request / push_to_pull_request_branch safe-outputs run with protect_top_level_dot_folders: true, which strips any change under a top-level dot-folder — including .github/workflows/. So the one remediation sdd-validate itself offers ("a human must verify the proof or add a covering check") is structurally impossible for the agent. The result is a guaranteed needs-human with no autonomous path, even via /revise.

Evidence (E2E tracker gominimal/minimal#311, task #326 / PR #339)

  • sdd-validate flagged the R2.4 boot proof as a Blocker: "a proof artifact blocked by an infrastructure limit and covered by no consumer required status check is a Blocker — a human must verify the proof or add a covering check." → applied needs-human.
  • A /revise was posted instructing the agent to add a ci-macos.yml step that fetches the kernel and runs boot_e2e (i.e., add the covering check sdd-validate asked for).
  • The agent ran (agent:success) but could not touch .github/. Its safe-output config (from the run log):
    "push_to_pull_request_branch": { ... "protect_top_level_dot_folders": true ... },
    "create_pull_request":        { ... "protect_top_level_dot_folders": true ... }
    It instead made an unrelated in-scope source edit (crates/minvmd/src/cmd/boot.rs) and pushed that. The CI coverage was never added.

Root cause

protect_top_level_dot_folders: true is a blanket guard that blocks all .github/ edits. CI-coverage remediation lives in .github/workflows/. So sdd-validate can demand a covering check, and /revise can instruct one, but sdd-execute can never produce one. Unbreakable loop.

Fix (options)

  • Allow sdd-execute to modify .github/workflows/ under a scoped exception (e.g., when the task is explicitly a CI-coverage task), instead of the blanket dot-folder block; or
  • Have sdd-validate recognize that "add a covering check" is not an agent-actionable remediation and route such proof-artifact gaps to an explicit human-CI lane (distinct label/instruction) rather than a needs-human the agent will silently fail to clear; or
  • Provide a dedicated safe-output for workflow edits with its own review/guard, so CI coverage can be added without lifting the general dot-folder protection.

Acceptance

  • A task whose only remediation is a CI/workflow change either (a) is completed by the agent editing .github/workflows/ under a scoped allowance, or (b) is routed to a clearly-labeled human-CI task — never left as a needs-human the agent provably cannot clear.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestseverity:highBlocks a path; workaround possible

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions