You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
2.18.0 — Council opinions v2, claim heartbeats, base sets, docs audit
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.