From 3491c7511e1bd924f16b5b82d5a1e654ca582a36 Mon Sep 17 00:00:00 2001 From: Jarek Potiuk Date: Mon, 28 Sep 2026 12:29:43 +0200 Subject: [PATCH] docs(spec-loop): sync specs with #1453 Back-fill the specs for the one commit merged since the last sync: workflow-security-audit takes zizmor's token from the environment instead of a sandboxed `$(gh auth token)`, security-issue-invalidate runs its last redirected `gh` call as a plain command, and the pre-PR adversarial-review block also covers skills that verify or import someone else's PR. Advance .last-sync to the current main. Generated-by: Claude Opus 5 --- tools/spec-loop/.last-sync | 2 +- tools/spec-loop/specs/adversarial-review.md | 6 ++++++ tools/spec-loop/specs/repo-health-family.md | 7 +++++++ tools/spec-loop/specs/security-issue-lifecycle.md | 4 +++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/tools/spec-loop/.last-sync b/tools/spec-loop/.last-sync index f97ccffa7..28dcb4456 100644 --- a/tools/spec-loop/.last-sync +++ b/tools/spec-loop/.last-sync @@ -1 +1 @@ -da660f14e69670145e6096aa27626845ae910327 +77884f5c54d01e4b535051b8dc16d8fd50166223 diff --git a/tools/spec-loop/specs/adversarial-review.md b/tools/spec-loop/specs/adversarial-review.md index 480ad37be..7e3aaf457 100644 --- a/tools/spec-loop/specs/adversarial-review.md +++ b/tools/spec-loop/specs/adversarial-review.md @@ -96,6 +96,12 @@ before the PR is created, through one shared block. `security-issue-import-from-scan`, `security-model-prepare`, `security-model-verify`, `setup-override-upstream`, and `setup-upstream-fix`. + The block covers two shapes of host: a skill that opens a PR runs the + reviewers once the PR's title and body are final, before the push where + the flow allows it; a skill that works from a PR someone else proposed + (verifying it, or importing it into the tracker, as + `security-issue-import-from-pr` does) runs them over that PR before + reporting on it or acting on it (#1453). - `validate_pre_pr_review_block` in `tools/skill-and-tool-validator/src/skill_and_tool_validator/__init__.py` — HARD check, category `pre-pr-review-block`. diff --git a/tools/spec-loop/specs/repo-health-family.md b/tools/spec-loop/specs/repo-health-family.md index 616df9f4f..cab88ede6 100644 --- a/tools/spec-loop/specs/repo-health-family.md +++ b/tools/spec-loop/specs/repo-health-family.md @@ -112,6 +112,13 @@ grouped, prioritised report → wait for confirmation before any write. A repository whose own run exits outside 0 and 11–14, or that the batch's stderr names in a collection warning, is the scan failure listed in the report. +- **No `gh` inside command substitution.** `workflow-security-audit` never + passes `--gh-token "$(gh auth token)"` to zizmor: under the secure setup + a `gh` inside `$(…)` stays sandboxed and cannot read its credentials. + zizmor reads its token from `GH_TOKEN`, `GITHUB_TOKEN` or + `ZIZMOR_GITHUB_TOKEN`; with none set, the skill scans a shallow clone + made by a plain `gh repo clone`, or asks the user to run the remote scan + from their own terminal (#1453). ## Out of scope diff --git a/tools/spec-loop/specs/security-issue-lifecycle.md b/tools/spec-loop/specs/security-issue-lifecycle.md index d33e54b87..1bde44c64 100644 --- a/tools/spec-loop/specs/security-issue-lifecycle.md +++ b/tools/spec-loop/specs/security-issue-lifecycle.md @@ -190,7 +190,9 @@ publication, with a human gate and an audit-log entry at every step. and a message matches an enabled adapter's sender or preamble pattern, a strict subset of the sub-skill's own *not a relay* outcome. `gh` calls that were wrapped in `$(…)` or piped are now plain commands, - which the secure setup needs. + which the secure setup needs; #1453 made the last one plain too + (`security-issue-invalidate` Step 1 no longer redirects `gh issue view` + into a file, it reads the JSON the plain command prints). - **Small always-on footprint (#1447).** Each security skill's `description` and `when_to_use`, which load in every session, state only its purpose, main trigger phrases and where