Skip to content

refactor(sanitization): call the canonical gate - #3

Merged
juniperbevensee merged 4 commits into
mainfrom
dev/juniper/canonical-sanitization-gate
Oct 20, 2026
Merged

juniperbevensee merged 4 commits into
mainfrom
dev/juniper/canonical-sanitization-gate

Conversation

@juniperbevensee

Copy link
Copy Markdown
Collaborator

What

  • CI calls the canonical gate: uses: cyborg-garden/swarm-map/.github/workflows/sanitization-gate.yml@sanitization-gate-v1.0.0 instead of a vendored script.
  • scripts/check_sanitization.py becomes a ~50-line launcher that fetches the canonical script at the same tag (local runs and docs keep working); the gate's self-tests move to swarm-map and tests/test_sanitization_pin.py keeps the workflow pin and launcher tag in step.
  • Moves the semantic layer from the old Anthropic-SDK copy to OpenRouter and makes it mandatory in CI; SETUP.md §2/§3/§7, README, CONTRIBUTING and the promotion doc updated. New packages made from this template inherit the caller, not a copy.

Why

Every agent repo carried its own copy of the gate and the copies had drifted, each missing a protection another had. One canonical gate (cyborg-garden/swarm-map#265), per-repo sanitize.config.json only.

Verification

  • Template tests: 4 passed (the pin test is its only test now).
  • tests/test_sanitization_pin.py: 4 passed. Launcher with SANITIZE_GATE_PATH pointed at the canonical branch: --check-config valid; --all --deterministic-only clean.
  • actionlint clean.

Risk

  • Merge order: feat(sanitization): make the gate canonical and reusable cyborg-garden/swarm-map#265 first, then tag its merge commit sanitization-gate-v1.0.0. Until that tag exists this PR's sanitization check fails (it cannot resolve the pinned workflow) — re-run it after tagging.
  • This repo has ANTHROPIC_API_KEY but no OPENROUTER_API_KEY; its own same-repo PRs fail closed at the semantic step until one is set.
  • The canonical gate lives in cyborg-garden, not NimbleCoAI: this template now depends on a repo in another org (public, so that is allowed).

🤖 Generated with Claude Code

The vendored check_sanitization.py had drifted from the other repos'
copies. CI now calls the canonical reusable workflow in
cyborg-garden/swarm-map, pinned to sanitization-gate-v1.0.0, and this
repo keeps only its sanitize.config.json. scripts/check_sanitization.py
becomes a launcher that fetches the canonical script at the same tag,
so local runs and docs keep working. The gate's self-tests move to
swarm-map; a thin test here keeps the two pins in step.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
juniperbevensee and others added 3 commits October 20, 2026 16:28
A pin to a missing sanitization-gate tag makes the caller job fail
before it starts, with no check on the PR, so the PR can look green.
Say so beside the pin and ask for the check to be required.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The canonical gate now matches allow entries exactly, refuses config
that disables or narrows layer 1, and scans every PR with the base
branch's config. Update the config comments and docs to match; in
osint-engine, replace the '+1555' prefix entry with
allow_fiction_phones, since prefixes no longer excuse anything.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Route changes to .github/, sanitize.config.json and the gate launcher
to the owner for review. Advisory only: no branch protection requires
code-owner review today, so this blocks nothing.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@juniperbevensee
juniperbevensee merged commit ac87493 into main Oct 20, 2026
1 check failed
@juniperbevensee
juniperbevensee deleted the dev/juniper/canonical-sanitization-gate branch October 20, 2026 04:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant