Skip to content

2.18.0 — Council opinions v2, claim heartbeats, base sets, docs audit

Choose a tag to compare

@chekh chekh released this 14 Oct 20:04
· 5 commits to main since this release

[2.18.0] - 2026-10-14

Added — Council opinions v2, claim heartbeats, base-set finalization, public docs audit

  • Council opinions and syntheses get a v2 schema (REQ-01, A9): council-opinion and synthesis carry a richer structure with auditable claims, evidence, assumptions, risks, failure conditions, counterexamples and a confidence level (low | medium | high). Legacy notes read as claims: [] and confidence: 'medium' so nothing old breaks. Analytics surfaces audited_count and unresolved_dissent_total. A new procedural rule — “isolation of opinion formation” — lands in .wolf/SKILL.md §7 and the wolf-brainstorm template: each council member states their view before any reveal, so the set of opinions is itself a first-class object.
  • Single-writer claims gain a heartbeat (REQ-03, A11): a <slug>.heartbeat file next to the claim keeps long-running operations alive past the PID/TTL check. Default heartbeat window is 10 minutes; the absolute TTL stays at 24h; isStale is PID dead OR (now - written_at > 10 min) OR (now - acquired_at > 24h). The writer is the owner from WOLF_ACTOR (debug, not auth). A new wolf claim heartbeat <artifact> command drives the refresh; legacy 2.17.1 claim files (no .heartbeat) keep the 2.17.1 rules — readHeartbeat returns null and the heartbeat branch is skipped. Atomic replace uses a unique tmp (hrtime.bigint() + Math.random() — pid-sharing between worker_threads on macOS is handled) plus rename, so parallel writers never corrupt the JSON.
  • Base sets polished for publication (REQ-04, B0): templates/base/agents/*.md stay in lock-step with the shipped .opencode/agent/*.md; init-project and scaffold-agent enforce face_owner_skill === agent_id; sync-base-set no longer overwrites a local mutation, divergence is reported. Re-wolf init on a 2.17.x project preserves steward-touched faces; nothing in the base set is overwritten.
  • Public docs audited for removed commands (REQ-02, A10): tests/e2e/docs-audit.test.ts greps docs/, README.md and README.ru.md for wolf learn, wolf run, Sandbox Replay, STOP-гейт, sandbox-replay and learn --from-session and fails CI if any non-historical file references them. Specs that describe the removed learn/run surfaces are kept readable but marked historical: true in the frontmatter. The same files now state “8 core memory types + extensions” instead of a stale “7 types” count.

Fixed

  • docs/reference/cli.md is regenerated by npm run docs:build; the new wolf claim heartbeat subcommand is in the registry from this release.
  • The English-surface gate now runs first in npm run check and surfaces leftover placeholders before any test.

Upgrade notes

  • For users on 2.17.x: npm i -g mister-wolf@2.18.0 (or local npm i). No forced migration. Run wolf sync after upgrading to align templates.
  • Claim files written by 2.17.1 keep working; 2.18.0 readers see them without heartbeats. The first heartbeat write creates the new file atomically; no re-acquire needed.
  • Council opinions and syntheses written before 2.18.0 are still readable; v2 fields default to empty arrays and confidence: 'medium'. The persist-path for v2 opinions is a follow-up (T-A9 outstanding); read and analytics work today, write requires a separate 2.19.x task.
  • The STOP-гейт / Sandbox Replay / wolf learn surfaces are removed commands and historical text. If your hooks or scripts still call them, they will simply 404 — replace with wolf add --type lesson, wolf task-eval --campaign <id> and the active claim workflow.
  • A F-03 waiver for REQ-02 AC-2 (“Действующий контракт версии” section in every ≥5KB public doc) is in effect for 2.18.0: the docs-audit gate plus historical: true markings carry the load. A future release can reintroduce the per-doc section if a reader-facing gap is found.