All notable changes to Correctless are documented here.
/cchoresprotected-file affordance with explicit-issue authorization (#255) —/cchores <N>can now fix an# affordance-tagged SFG-protected infra file under a branch- and file-scoped authorization marker minted by the sanctioned sole-writerscripts/chores-authorize.sh(ABS-049), gated by a post-cdebug diff checkscripts/cchores-diff-check.sh. The no-arg auto-select lane still degrades to v1 and never lifts protection;# secret-floor/# other-floortargets stay non-auto-fixable even with explicit authorization. See.correctless/specs/cchores-protected-affordance.md.- Design Contract Checker lens registry (#261) — the 8 documented Design Contract Checker lenses (DCL-001…DCL-008, derived from PMB-013…PMB-020) are wired into a structural registry TSV (
agents/design-contract-lenses.tsv) bound to the review agent by set-equality, closing the DA-001/AP-036 "corrective-action documented but not implemented" class (ABS-050). See.correctless/specs/design-contract-lens-sync.md. - Sanctioned sole-writer for SFG-protected meta artifacts (#246) —
scripts/meta-record.shis the sole cooperative-loop write path for.correctless/meta/*.json, closing the AP-037 "protected asset is the deliverable" class with a kernelflocklock and a fail-loud stdout contract (ABS-047). - InstructionsLoaded hook for PAT-001 rule-load observability (#221) — a direct runtime signal that a path-scoped rule loaded into agent context, registered in project settings.
- Generated test-count artifact (#253) — breaks the #219
/cchoresdeadlock by deriving the AGENT_CONTEXT.md test count from a generated artifact instead of a hand-edited figure. - Real single-file MultiEdit audit-trail events (#248) —
hooks/audit-trail.shlogs the actual edited file for single-file MultiEdit calls.
/cchoresaffordance capability probe self-defeated on a relative hook path (#264, closes #263) —do_check_capabilityinscripts/chores-authorize.shvalidated the hook at repo-root cwd but ran it inside a subshell thatcds into a temp probe dir, so the relative hook path the v2 skill passes failed exit 127 and the whole affordance silently degraded to v1. The hook path is now resolved to absolute before the probe subshell. Regression testINV-012-dexercises the relative path (the absolute-path fixture had masked the bug — AP-031).- audit-trail attributes events to the edited file's own git repo, not the shell's cwd (#244) —
hooks/audit-trail.sh(PostToolUse, fail-open telemetry) previously derived the artifacts dir, slug, state/trail/config paths, recordbranch, and adherence file from the hook's cwd. When the harness edited a file in a sibling git repo/worktree while cwd was a different repo, the event was logged under the wrong repo's trail or dropped entirely — the silent-telemetry-failure class. The hook now resolves each edited file to its own git repo (a local_resolve_file_repowalk-up +git -C <dir> rev-parse --show-toplevel, memoized per nearest-existing directory) and attributes every derivation to that repo. A file in no git repo, or in a repo with no active workflow state, is a clean no-op (never wrongly logged under cwd). Cross-repo metrics may show a one-time attribution discontinuity after upgrade; single-repo projects are unaffected (the common cwd==repo case writes to the same trail as before). Nested repos/submodules attribute to the innermost repo. Fail-open posture preserved; no security hardening added (telemetry, not a boundary). Narrowed from the original #244 (workflow-gate already fixed by #242; the sensitive-file-guardcustom_patternsresidual is left as-is). See.correctless/specs/hook-repo-root-for.md. - workflow-gate resolves repo root from the edited file's path, not cwd (#243) — the sibling-worktree class fix matching #244, applied to the workflow-gate hook.
- Mixed-shape audit-trail time field normalized in
compute-session-cost(#229) — phase attribution coalesces(.ts // .timestamp)sots-shaped hook-edit entries are no longer nulled. build-caudit-prompt.shdropped the finding-description fence on object-shaped artifacts (#218).- Intermittent GREEN-gate flake under output-capture (#220, closes #186).
setupmigration guarded against deleting tracked source files (#213, closes #197).- ARG_MAX overflow in
build-dashboard.shread_file_json(#212, closes #144) — large artifacts pass via--rawfileinstead of argv. - ARG_MAX overflow in
cchores-select-candidates.sh(#211, closes #209). workflow-gate.shfail-open on non-scalartool_name(#208, closes #207).
- ARCHITECTURE.md fragmented into a root index + per-section body files (#223) — keeps the architecture doc under size thresholds; body files load into editing context per section.
- README positioning revised (#259).
- Recorded the DA-001/AP-036 convention learning in CLAUDE.md (#262) — prose-documented enforcement additions must ship with a structural registry + set-equality test.
- Bumped
github/codeql-action/upload-sarif(#224).
- Corrected the plugin description's skill count in
marketplace.json(32 → 33).
- sensitive-file-guard reduced to the Edit/Write tool-path only — Bash writes are no longer guarded (security downgrade, not a simplification) —
hooks/sensitive-file-guard.shno longer inspects ANY Bash command. The entire Bash write-target detection path was deleted; fortool_name == "Bash"the hook now fast-pathsexit 0before reading any config. SFG no longer guards ANY Bash write to a protected file — a directecho x > .env,tee .env,cp x .env,sed -i … .env, an interpreter write (bash -c '… > .env'), or a git restore (git checkout -- .env) is allowed. The guard now catches ONLY the agent's naive Edit/Write tool call (Edit/Write/MultiEdit/NotebookEdit/CreateFileagainsttool_input.file_path). This is a deliberate, documented security downgrade: per PMB-020/AP-040, a cooperative-loop PreToolUse hook is a guardrail/speedbump, the Bash-redirect leg was always trivially evadable via an interpreter, and removing it eliminates ~550 lines of fragile extraction code and its false-positive friction. Files whose only structural Bash leg this removes (nocmd_*content gate behind them):.correctless/meta/harness-fingerprint.json,.correctless/meta/model-baselines.json,.correctless/preferences.md(plus the wider non-cmd_*-gated DEFAULTS set — see ABS-045 Security Residual). Existing-user note: yourcustom_patternscontinue to guard the Edit/Write tool-path; they no longer guard Bash redirects/writer commands. The protected-file DEFAULTS/custom_patternslist is unchanged. See.correctless/specs/sfg-edit-write-only.mdand ABS-045.
/cauto— Semi-auto pipeline orchestrator: runs /ctdd through PR creation with flexible phase resume, tiered decision architecture, and spec-to-PR orchestration/carchitect— Structured architecture definition: reverse-engineer from existing code or greenfield directed discovery, produces machine-referenceable entrypoints YAML
- Intensity calibration — Removed dead active/hybrid calibration modes and 200K token auto-raise threshold from
/cspec. Calibration is now always advisory: historical data displayed as read-only context for the human, no automated intensity decisions. Data collection by/cverifyunchanged. Net -238 LOC
/cspec— Migrated inline research agent prompt to dedicatedagents/cspec-research.mdplugin agent file (M-4). First network-read class agent (WebSearch, WebFetch, Read, Grep). Adds TB-007 (external web content ingestion trust boundary), untrusted data treatment, and network unavailability self-diagnostic. Resolves AP-013 for /cspec/ctdd— Migrated inline RED and GREEN phase agent prompts to dedicatedagents/ctdd-red.mdandagents/ctdd-green.mdplugin agent files (M-1, M-2). Agents now have tool pinning and namespaced dispatch. Resolves AP-013 for /ctdd/creview-spec— Migrated 6 inline adversarial agent prompts to dedicatedagents/*.mdplugin agent files (M-3). Agents now have tool pinning (Read/Grep/Glob only), harness-prior suppression, and namespaced dispatch. Resolves AP-013 for /creview-spec
- Merged Lite and Full distributions into a single 27-skill plugin
- Retired "Lite mode" / "Full mode" terminology in favor of intensity levels (standard, high, critical)
- Intensity gates control which features activate — standard (~10-15 min/feature), high/critical (~1-2 hr/feature)
- Per-feature intensity override via
workflow-advance.sh set-intensity
/cquick— Lightweight TDD without full spec ceremony/crelease— Versioning, changelog management, and release workflow/cexplain— Guided codebase exploration with structured question flow
- Intensity detection from spec signals (STRIDE, invariants, compliance keywords)
- Per-feature intensity stored in workflow state, computed as
max(project, feature)(PAT-005) - Intensity Configuration tables in all 6 pipeline skills (cspec, creview, ctdd, cverify, cdocs, cstatus)
- Verbatim Effective Intensity section (R-022) across all pipeline skills
- 32 test files with ~2,000 assertions (up from 57 in v2.0.0)
- Calm reset prompts in /ctdd and /caudit orchestrators
- Spec template files (spec-lite.md, spec-full.md) for intensity-aware spec generation
- Hacker Olympics audit: 22 findings fixed (gate bypass, config protection, CI pinning)
- CODEOWNERS for security-sensitive files (workflow config, CI, pre-commit)
- Pre-commit hooks pinned to commit SHAs (not mutable tags)
- Gitleaks baseline for secret scanning
- Performance Olympics audit: 37 findings fixed across 3 convergence rounds
- Hook subprocess spawns reduced from ~18-19 to ~5-6 per invocation (~30-72s saved per session)
- Bulk eval+jq parsing, bash builtin replacements, batched I/O operations
- QA Olympics audit: 24 findings fixed across hooks, gate, statusline, and documentation
- Gate phase enforcement for project source files (pattern delimiter fix)
- Override statusline display (correct state field path)
- Atomic state writes (single write_state per command, trap cleanup for temp files)
- Stale .claude/ path references in skill docs
- Marketplace source path resolution
Core Workflow (Lite)
/csetup— Project health check with 17 checks, convention mining, existing project discovery/cspec— Feature spec with testable rules, research subagent, Socratic brainstorm/creview— Skeptical review with OWASP security checklist (18 check categories)/ctdd— Enforced TDD with agent separation (RED/GREEN/QA), test audit, /simplify integration/cverify— Post-implementation verification with rule coverage, drift detection/cdocs— Documentation updates from verification report
Code Quality
/crefactor— Structured refactoring with characterization tests and behavioral equivalence enforcement/cdebug— 6-phase bug investigation with git bisect and escalation after 3 failures/cpr-review— Multi-lens PR review with auto dep-bump detection
Open Source
/ccontribute— Learn project conventions first, match patterns, pre-flight checks, generate PR/cmaintain— Maintainer review with scope check, maintenance burden assessment, pre-written comments
Observability
/cstatus— Workflow status with stale detection, empty docs warning, override abuse tracking/chelp— Quick reference with mode-aware command listing/csummary— Per-feature "what the workflow caught" report/cmetrics— Token ROI, session analytics from Claude Code data, Correctless vs Freeform comparison/cwtf— Workflow accountability: did agents follow instructions? THOROUGH/ADEQUATE/INCOMPLETE/SHORTCUT verdict
Full Mode Only
/cmodel— Alloy formal modeling/creview-spec— 4-agent adversarial spec review/caudit— Olympics convergence audit (QA/Hacker/Performance presets)/cupdate-arch— Maintain ARCHITECTURE.md/cpostmortem— Post-merge bug analysis with class fixes/cdevadv— Devil's advocate (theme/signals/layers modes)/credteam— Live red team assessment with isolation verification
- Statusline — Live workflow phase, cost, context %, lines delta
- PostToolUse audit trail — Records every file modification with phase context
- Real-time adherence feedback — Phase violation alerts (Lite) + coverage tracking (Full)
- Session analytics — Reads Claude Code session-meta + facets for exact tokens and outcome rates
- CLAUDE.md compounding learning — Postmortem, convention, and audit learnings auto-appended
- Git trailers (opt-in) — Spec, Rules-covered, Verified-by in commit messages
- Git notes (opt-in) — Verification summary on commits
- Git bisect in /cdebug — Automated regression finding
- Token tracking — 12 subagent-spawning skills log per-agent token usage
- Checkpoint resume — 4 long-running skills resume after context compaction
- Monorepo support — Per-package config, longest-prefix-match resolution, cached
- Compliance hooks — Custom check scripts at spec/review/verify phases
- Output redaction — Paths, credentials, hostnames sanitized for external-facing skills
- Evidence-before-claims — ctdd/cverify/crefactor must run commands, not assume results
- No-auto-invoke — Skills tell human what comes next, never auto-start the next skill
- Context enforcement — 70% warn, 85% stop for long-running skills
- Defense in depth — Gate (bash, blocking) → audit trail (bash, observing) → skill instructions (prompt, advisory)
- 23 per-skill documentation pages with examples, reads/writes tables, common issues
- README rewritten with categorized skill tables and Platform Integration section
- SECURITY.md with vulnerability reporting process
- CONTRIBUTING.md with skill creation guide
- Glossary with 12 terms
- 4 hooks: workflow-gate.sh, workflow-advance.sh, statusline.sh, audit-trail.sh
- 57 automated tests
- CI with test suite + ShellCheck
- Dependabot for GitHub Actions
- Branch protection on main
- OpenSSF Scorecard badge
Initial release. 10 Lite skills, 17 Full skills, setup script, state machine, workflow gate.