Files
claudetools/.claude/harness/CHANGELOG.md
Mike Swanson 07744d46c7 feat(self-check): command-restates-standard lint (consistency category, VERSION 1.4.2)
Task 3 leftover. Adds a 'consistency' category to /self-check that catches a standard
drifting back into restating/contradicting the command that owns the rule -- the Syncro
timers failure mode (standard said 'always timer' while /syncro said 'outlier only').

Deterministic half: each manifest.command_standard_links pair's standard must still carry
its defer-to-SSOT pointer (must_reference regex). Lost pointer = WARN. Seeded with
syncro-billing (time-entry-protocol.md -> /syncro). Semantic contradiction pass delegated
to the model in SKILL.md, mirroring check_memory. Verified PASS; negative-tested.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 08:29:58 -07:00

4.8 KiB

Harness CHANGELOG

The ClaudeTools harness version marker (.claude/harness/VERSION). Bump on every fleet-visible behavioral change so a session can detect whether it is running the new or old harness during a heterogeneous rollout. See specs/claudetools-harness-optimization/.

1.0.0 — 2026-06-08

  • Task 0.5: VERSION marker established (this file).
  • Task 0.6: out-of-band recovery script .claude/scripts/force-pull-raw.sh added.
  • (Earlier) Syncro billing SSOT resolved: add_line_item is normal billing; timers are outlier-only (explicit request).

1.1.0 — 2026-06-08

  • Task 1: submodule-safe sync — sync.sh now unstages submodule gitlinks (unless --with-submodules), eliminating the manual detach-to-pin dance before /save.
  • Task 4: harness-guard.sh wired into sync.sh pre-commit, WARN-ONLY (logs conflict markers / unencrypted sops / private keys to .claude/harness/guard.log; does not block unless HARNESS_GUARD_FATAL=1; SKIP_HARNESS_GUARD=1 bypasses).

1.2.0 — 2026-06-08

  • Task 2: wiki synthesis DECOUPLED from /save (the concurrent-recompile conflict source). /save now only writes the log + syncs and emits the exact /wiki-compile command to run. /wiki-compile is now SERIALIZED (per-article coord lock, TTL orphan-evict, coord-down = warn+proceed) and STAGED (writes .claude/wiki_staging/-.md -> review diff -> apply to live -> commit -> release lock). No blind background auto-merge.

1.3.0 — 2026-06-08

  • Task 6: CLAUDE.md split into lean CORE (1.2k tokens, always loaded) + CLAUDE_EXTENDED.md (full manual, on-demand). Saves ~3.7k tokens per CLAUDE.md injection; nothing lost.
  • Task 9 (P2): delegation re-tuned in CORE — act directly by default; delegate only for high-volume output, blast radius >3 files/layers, domain shift, or parallel work.

1.4.0 — 2026-06-08 (P1+P2+P3 complete)

  • Task 5: one-line registry descriptions on the 8 biggest skills (remediation-tool, gc-audit, packetdial, memory-dream, human-flow, self-check, impeccable, mailprotector). Skill-description injection ~3320 -> ~2123 tokens (~36% cut); keyword triggers preserved; frontmatter valid.
  • Task 7: thinned /save + /sync bodies — they point to sync.sh as the single source instead of re-documenting its internals; load-bearing LLM-judgment parts (Phase 0 save-vs-sync, cross-user note display, exit-75 reporting) kept verbatim. The mechanical sync never depends on an LLM step.
  • Task 10 (P3): session-logs/YYYY-MM/ adopted as a FORWARD convention for new logs (recall = scoped grep over month folders, no monolithic index); existing flat logs untouched (grep covers both). Recall order (wiki -> CONTEXT/log -> coord) already lives in CORE.
  • Deterministic Bash fix: now-phoenix.sh helper added — fixed UTC-7 epoch math, replaces the unreliable TZ=America/Phoenix date (silently returns UTC on Git-Bash). --iso/--date/--datetime/ --fmt formats. post-bot-alert.sh already uses jq -nc --arg (verified, no change needed).
  • Deferred (unchanged): full Python port = separate spec; Task 8 shard command bodies; promote guard to FATAL after a clean warn window; schedule memory-dream --apply-safe per-machine.

1.4.1 — 2026-06-08 (Task 12: self-check smoke tests)

  • /self-check gained a harness category that locks in the 1.4.0 invariants (all read-only): VERSION present + not older than manifest min_version; skill-registry description budget (sum of all SKILL.md description: fields under manifest.harness.registry_desc_budget_chars — WARN on regrowth, the metric that would catch Task 5 bloating back); global deploy targets ~/.claude/skills + ~/.claude/commands populated (the Mac-wipe failure); harness-guard.sh wired into sync.sh; core scripts parse (bash -n on sync/guard/now-phoenix); now-phoenix.sh emits a valid date. Tunables live in baseline/manifest.json harness block. Verified: 9/9 PASS on this machine; budget WARN trips correctly on a synthetic over-budget value.
  • Also reconciled the remaining "GrepAI first" docs (standard + CODING_GUIDELINES) with the wiki-first recall hierarchy (started in CLAUDE_EXTENDED).

1.4.2 — 2026-06-08 (Task 3 leftover: command-restates-standard lint)

  • /self-check gained a consistency category — the command-restates-standard lint. Deterministic half: for each manifest.command_standard_links pair, the standard must still carry its defer-to-SSOT pointer to the owning command; a lost pointer WARNs (the standard likely drifted back into restating the command — the Syncro-timers failure mode). Seeded with the syncro-billing link (time-entry-protocol.md -> /syncro). Semantic contradiction pass (read both, judge actual conflict) delegated to the model in SKILL.md, mirroring the memory pass. Verified PASS; negative- tested (WARN fires when the pointer is removed). New pairs: add to manifest.command_standard_links.