Files
clawmates/templates/workflows/security_hardening.toml
T
Omar SobhandClaude Opus 5 285d0c82f2 chore: delete dead scaffolding and stop fabricating claw capability cards
Tier 0 of the prompt-ablation pass -- subtraction only, none of this
reached a model.

- cm-brain: drop ClawBrain::export_markdown (zero callers).
- workflows: drop the `task_preamble` keys. No Rust code ever read them --
  WorkflowPhase.config is an opaque serde_json::Value -- so the comment
  calling the preamble "the belt, the skill the suspenders" described a belt
  that was never implemented. (`commit_policy` is unread for the same reason;
  left in place as documentation pending a decision.)
- mcp_door: derive the unknown-tool error from EXPOSED_TOOLS. The literal had
  drifted to naming one of the three tools the door exposes.
- Dashboard.tsx: drop TEAM_TEMPLATES/COMPANY_TEMPLATES, defined and never
  referenced, and disconnected from the real templates/teams/*.toml.

The substantive one: GET /api/claws/{id}/compartments returned hardcoded
strings for tools/capabilities/safety, identical for every claw. Every card
read "Network: none" and "Shell . blocked" regardless of the claw's real
risk_profile -- which is the actual capability boundary, so the card was
most wrong exactly where it mattered, on a coding_readwrite claw that does
have shell. Now derived from the claw's effective risk_profile (its team's
setting, else the same role-derived default the provisioner applies), with
the allowlists mirroring [risk_profiles.*] in the runtime config.

Note: cm-topology/src/heuristics.rs was slated for deletion here as unused.
It is not -- routes/topology.rs:43 serves it and p0_endpoints.rs:302 asserts
it. Left alone.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-07-30 10:44:33 -07:00

34 lines
1.1 KiB
TOML

key = "security_hardening"
title = "Security Hardening"
blurb = "Scan the repo for vulnerabilities, research patches, then apply + verify."
requires_repo = true
[[phases]]
kind = "security_scan"
order_idx = 0
[phases.config]
# Slice 8 wires these tools as an MCP bundle. Each finding becomes
# a mission_task with external_id = CVE/RUSTSEC/gitleaks fingerprint.
tools = ["cargo_audit", "gitleaks", "trivy_fs", "semgrep"]
[[phases]]
kind = "research"
order_idx = 1
[phases.config]
produces = ["md", "pdf"]
default_topology = "hub_spoke"
# The research phase reads the security_scan phase's findings from
# mission_tasks and produces a patch strategy per finding.
input_from_phase = "security_scan"
[[phases]]
kind = "coding"
order_idx = 2
[phases.config]
loop = "until_all_findings_closed"
# Security requires reviewer approval on top of green tests.
commit_policy = "on_reviewer_approval"
mcp_bundles = ["clawmates_door", "clawmates_skills", "gitea_forge", "security_scan"]
default_team_template = "rust_sdlc"