Changelog

История версий и заметки о релизах

v2.27.0

Latest 30 мая 2026
  • FEAT Anti-deferral gate. A new deterministic gate stops an agent from labelling its own unfinished work «out of scope / informational / not a blocker / I’ll fix later» and archiving anyway. New dev-tools/check-deferral-prose.sh scans QA and compliance reports for deferral-tell phrases and cross-checks each against the touched-file set (git merge-base..HEAD): a deferral phrase about a file the agent itself touched, with no verifiable follow-up / blocked_by artefact, is a hard block. A phrase about a genuinely foreign area, or one backed by a real follow-up ID that exists in the backlog, passes — keeping the false-positive rate low.
  • FEAT Override authorship. check-expectations-checklist.sh gains override_by / override_class / override_artifact. A partial/missed wish can no longer be waved through by an agent writing its own free-text override (the self-certification loophole): an agent override now needs an allowed deferral class plus a follow-up / blocked_by ID that exists in the knowledge base. Operator-authored overrides are accepted unconditionally.
  • FEAT Archive Step 0.4 + FB-5a. /dr-archive gains a mandatory Step 0.4 that re-validates expectations and re-runs the deferral scan before reflection — so reflection’s follow-up heuristic cannot launder a self-inflicted loose end into a backlog item ahead of the gate. /dr-qa runs the scan as an advisory; /dr-compliance runs it as a hard NON-COMPLIANT gate. A new operating rule FB-5a codifies the principle: complete reversible authorized work yourself, do not hand it back; defer only when time-dependent or hard-external-blocked, and only with a traceable artefact.
  • NOTES A legitimate deferral — results that need a 1+ day soak, or a hard external blocker — still clears every gate by citing a follow-up ID or blocked_by reference that exists in the KB. Scanners are fail-open on their own git-probe failure: an infrastructure hiccup never blocks an otherwise-clean archive. Four new regression suites cover the scanner, the override-authorship logic, the archive Step 0.4 surfaces, and the compliance gate.
  • CHANGE Repo↔site content parity. The framework README gained the naming-origin (the Latin datarium/dator root — «a store that gives»), a Website badge and reverse link to datarim.club, and a corrected component count (55 skills). The About page and bilingual content were realigned to the canonical 18 agents / 24 commands / 55 skills, and the repo VERSION was brought up to 2.27.0 to match the site. Pilot of the ecosystem repo↔site sync discipline; the drift detector reports the datarim product clean.

v2.26.0

Previous 29 мая 2026
  • FEAT KB data-loss resilience. Every overwrite of a critical knowledge-base file (backlog.md, backlog-archive.md, tasks.md, activeContext.md, progress.md) now triggers a fail-soft pre-overwrite backup to datarim/.backups/<file>.<timestamp>.bak (FIFO rotation, default 10). Enforced at the PreToolUse hook so it catches both the Write tool and awk/tee/> redirect overwrites — the exact incident class that once zeroed a live backlog. Backups are git- and sync-ignored host-local recovery ground-truth.
  • FEAT Unified path resolver. A single canonical resolve-datarim-root.sh replaces three divergent walk-up re-implementations. --root now means the repo-root everywhere (the doctor previously meant the datarim/ dir — the mismatch silently suppressed the docs→history migration through the pipeline). A nesting guard rejects an already-nested root, eliminating the datarim/datarim/ directory class. A one-release shim normalises the legacy datarim-dir argument and warns.
  • FEAT Recovery how-to. New docs/how-to/recover-datarim-files.md documents the per-file source-of-truth priority chain (backup → sync-conflict → task artefacts → archive frontmatter → transcripts) and the datarim-doctor --fix repair recipe.
  • CHANGE Consumer-KB log storage retired the misleading datarim/docs/ directory. Append-only ledgers now live in the honestly-named datarim/history/, committed to git via a .gitignore negation block. datarim-doctor.sh --fix (or --scope=history) migrates the ledgers, relocates any ADR to documentation/architecture/, rewrites the consumer .gitignore, and removes the empty docs/ — idempotently and losslessly. Auto-heals on /dr-init.
  • NOTES The framework source-tree code/datarim/docs/ is unchanged — only consumer knowledge bases migrate. Six new regression suites cover the resolver, backup primitive, nesting guard, doctor --root contract, hook backup, and the migration. Bash-redirect backup detection is best-effort (literal targets); obfuscated redirects are out of scope.

v2.23.0

Previous 28 мая 2026
  • FEAT Canonical Runtime Support Matrix. New § Runtime support in docs/use-cases.md documents the three supported runtimes with a 5-column matrix (Runtime / Install command / Hook integration / Bulk-read economy via RTK / Status). Claude Code stays primary; Codex CLI achieves parity through the coworker rtk shim; Cursor reaches parity through its native beforeShellExecution hook (rtk hook cursor in ~/.cursor/hooks.json). The earlier «no native hook / inherits via shared settings.json» framing was inaccurate and is replaced across all shipped surfaces. README.md, CLAUDE.md, docs/getting-started.md, and the Coworker README all link back to the canonical matrix as single source of truth.
  • FEAT RTK realities documented. templates/coworker-delegation-fragment.md § RTK plugin (opt-in) gains a paragraph on out-of-box rtk pitfalls — measured impact on macOS (git status +108%, git log --oneline -50 +6924%, lost git push completion marker on some repos) per upstream issue rtk-ai/rtk#2121 — and contrasts the raw binary with the coworker rtk plugin, which guards 13 signal-bearing git/gh commands via a default passthrough allowlist while still applying bulk-read economy to log dumps and file content reads. Multi-runtime parity preserved via the bundled Codex CLI shim.
  • CHANGE Skill / command counts corrected. CLAUDE.md and README.md updated from stale «45 skills, 23 commands core + 1 plugin» to live inventory «55 skills, 11 with supporting fragment directories; 24 commands core + 1 plugin». Drift accumulated across the TUNE-0304 universal skill-layout migration through v2.22.0.

    The data catalogues on this site (data/skills/, data/commands/, data/agents/) are also fully resynced to the live inventory under the same release.

  • CHANGE Multi-agent narrative honest. docs/getting-started.md § Choose your runtime rewritten to enumerate Claude Code / Codex CLI / Cursor with full 3-runtime RTK parity (Cursor via its native beforeShellExecution hook) and explicit guidance on picking a runtime. install.sh --with-cursor now appears in the install command block alongside --with-claude and --with-codex.
  • NOTES CHANGELOG.md gained both the v2.23.0 entry and a retroactive v2.22.0 entry (the latter was missed at v2.22.0 release time even though VERSION had been bumped). Verification: grep -c '2\.22\.0' CLAUDE.md README.md VERSION → 0 hits in any shipped file; scripts/check-doc-refs.sh --root . zero delta vs pre-task baseline.

v2.22.0

Previous 26 мая 2026
  • FEAT Outsider-friendly English instruction surface (TUNE-0308 epic: TUNE-0309 Wave 1 + TUNE-0310 Wave 2 + TUNE-0311 Wave 3). 164 files of shipped instruction surface (commands/ + skills/ + agents/ + framework root + plugin tree) rewritten from Russian-heavy jargon-dense prose to outsider-friendly English with first-use gloss for every framework term-of-art. The shipped surface now reads end-to-end for a developer who has never seen Datarim.
  • FEAT New validator: check-jargon-gloss.sh (V-AC-5). POSIX bash validator + manifest dev-tools/data/jargon-bank.txt (10 canonical terms — FB-1..8, Question Suppression Ladder, L1 Inline Resolution Rule, autonomous-ops, V-AC, AAL, Diátaxis, Class A/B gate, hard-gated, fail-soft). Enforces inline gloss or one-click link on first use per file. 7 bats cases, shellcheck clean.
  • CHANGE /dr-archive body-english gate: advisory → fail-hard. Step 0.5(e) now blocks archive with non-zero exit when Cyrillic appears in commands/ / skills/ / agents/ / plugins/ without an explicit allowlist marker (<!-- allow-non-ascii: <reason ≥10ch> --> per line or block-scope). Allowlist markers reserved for cases where the skill's meaning literally requires the foreign-language string (content-work skills, canonical schema names cited verbatim).
  • FEAT English-Only Shipped Instruction Surface mandate. Canonical text encoded in four CLAUDE.md surfaces (global, Arcanada ecosystem, Datarim project root, framework code/datarim/CLAUDE.md). Operator clarification «инструкции не могут содержать русские слова, если это не требует смысл скила» now lives as canonical rule, not just a feedback-memory note.
  • FEAT init-task Q&A round-trip: third disposition process-rule-artefact (TUNE-0319). dev-tools/append-init-task-qa.sh --decided-by process-rule-artefact captures mid-task operator clarifications that produce persisted rule documents (memory + CLAUDE.md additions) as first-class append-log entries. New Process-rule artefacts: sub-heading replaces the standard rationale block. Validation: rationale must contain at least one path-like token. 6 bats cases green, backwards compatible with operator and agent dispositions.
  • FEAT V-AC axis-split skill — Pattern 2: gate-activation axis dry-run. skills/v-ac-axis-split/SKILL.md grows a second pattern: validator-activation tasks must dry-run-size their gate --scope during /dr-plan Component Breakdown. PRD Out-of-Scope deferrals under the same scope are self-blocking at /dr-archive time and must be resolved as either in-task rewrite or documented --scope reduction.
  • NOTES Test coverage: 22 bats cases for body-english + jargon-gloss validators (15+7), 6 for the new Q&A disposition. shellcheck clean on new and modified scripts. check-body-english.sh --scope commands,skills,agents,plugins PASS over 162 files; check-jargon-gloss.sh PASS over 162 files.

v2.20.0

Previous 24 мая 2026
  • FEAT dr-orchestrate own bash HTTP server (TUNE-0295). Replaces adnanh/webhook with a pure-bash HTTP/1.1 server on 127.0.0.1:31415 (socat fork-per-conn). New scripts/dr_orchestrate_router.sh parses HTTP/1.1 request from stdin and dispatches to handler scripts via 4-arg uniform signature <method> <path> <body-file> <headers-file>. New scripts/dr_orchestrate_server.sh wraps socat with pre-flight port-collision probe and --check / --once subcommands. Tier 1 loopback exposure; net listener delta vs 8090 baseline = 0.
  • FEAT /hooks/tmux 5-op dispatcher. scripts/tmux_dispatcher.sh handles op=list|attach|new|kill|read on POST /hooks/tmux + async polling on GET /hooks/tmux/job/<uuid>. Backed by Redis job store (scripts/redis_job_store.sh, fail-soft on connect-refused). Defence-in-depth: whitelist full-match for cmd, pane regex ^%[0-9]+$, UUID v4 strict format on path-segment — all rejections fire BEFORE any tmux subprocess invocation (audit-sentinel verified).
  • FEAT tmux_manager.sh extension. Added list / attach / new per V-AC-2 + tmux_*_safe wrappers (probe command -v tmux; consumer fail-soft on environments without tmux).
  • CHANGE orchestrator-input-handler.sh dual-mode migration. Mode-detection shim: $1 starts with - → legacy named-arg, [A-Z]* → uniform 4-arg, else → legacy positional. Uniform mode emits handler-protocol envelope (<status>\r\n<headers>\r\n\r\n<body>) matching the router contract. Legacy 26 Phase 4 CLI bats stay green; sync-shortcut 6/6 green. Hooks.yaml deleted.
  • CHANGE CLI dual-mode toggle. 5 cli/tests/tmux-*.bats gain DATARIM_CLI_USE_REAL_DISPATCHER=1 env switch. Mock mode (default) preserves Phase 4 26/26 green; real mode skips fixture-bound assertions (Phase G PROD smoke covers).
  • NOTES Test coverage: 40 new bats cases (15 HTTP server contract + 12 tmux endpoint + 8 path-traversal + 5 redis store + 5 migration). Full plugin suite 147/147 green recursive; CLI bats 26/26 both modes. shellcheck -S warning clean on all new + modified scripts.

v2.18.0

Previous 23 мая 2026
  • FEAT Datarim CLI Phase 3 — HTTP client + slash-dispatch + AAL 3 mitigation scaffolding (TUNE-0271). Ships code/datarim/cli/ top-level tree: datarim dispatch binary, lib/ modules (http.sh sync/async, audit.sh portable flock via python3 fcntl, notify.sh pluggable backends, kill-switch.sh, agent-id.sh UUID v7, accepted-risk-check.sh with 1h cache, uuid7-gen.sh 3-step fallback chain), subcommands/ (run, audit), standalone install.sh + bilingual RU+EN install-warning.sh. External agents (Codex / Cursor / custom) can now drive the full /dr-* pipeline through HTTP webhook to /dr-orchestrate v2.5.0; AAL 3 opt-in via new accepted-risk-aal.yml entry tune-0268-aal3-cli (expires 2026-08-21).
  • FEAT 6 AAL 3 mitigations. Dual-channel notifier with greater-than-or-equal-1-success fail-closed contract (exit 18) reusing @ArcanadaAssistantBot; JSONL audit log schema_version 1 with 10 required keys and 90d retention; kill-switch sentinel ~/.config/datarim-cli/HALT with no-bypass first-line check (exit 17); accepted-risk-aal.yml invocation-time gate (exit 23) + 7-day pre-expiry stderr warning; 6 RU + 6 EN canonical install warning lines; UUID v7 agent identity ($DATARIM_CLI_AGENT_ID) with timestamp window validation (exit 22).
  • FEAT New validators. dev-tools/check-cli-audit-schema.sh validates JSONL schema (10 keys, enums) and drives retention purge. dev-tools/check-accepted-risk-aal.sh validates the orthogonal AAL register (separate from CVE-only templates/accepted-risk.yml), enforces expiry, emits 7-day warning.
  • CHANGE Sync/async classification is CLI-local. cli/lib/slash-classification.yaml mirrors the OpenAPI canonical sync whitelist (dr-status, dr-help); non-idempotent commands refuse the sync path with exit 26. The PRD draft said parsed from fb-rules.yaml hard_gated_actions — fixture capture surfaced those are action.kind tokens, not slash-command names; plan D-B corrected to CLI-local table.
  • NOTES 57/57 bats green across 7 test files (V-AC-4..6, V-AC-19..28). Gap discovered during /dr-do: macOS lacks flock(1); resolved via portable python3 fcntl.flock wrapper. Standalone cli/install.sh — framework install.sh stays untouched so consumers without AAL 3 acceptance are not auto-exposed (plan D-C). New top-level code/datarim/cli/ directory; code/datarim/accepted-risk-aal.yml at repo root.

v2.17.1

Previous 23 мая 2026
  • FIX Template path convention canon-correction. v2.16.1 standardised on bare $HOME/.claude/templates/<name>, which silently works only for the default symlink install. v2.16.2 migrates the canon to ${DATARIM_RUNTIME:-$HOME/.claude}/templates/<name> — the env-var form transparently supports the default symlink install AND non-default installs (./install.sh --project DIR, --copy with custom CLAUDE_DIR, plugin overlays) by reading the install location from $DATARIM_RUNTIME and falling back to $HOME/.claude/. 41 references across commands/*.md + skills/**/*.md + agents/*.md migrated in one pass.
  • CHANGE CLAUDE.md § Critical Rules #4 corollary rewritten. Recommended primary form is now the env-var fallback pattern; explicit $HOME/.claude/templates/X is documented as install-specific and discouraged for runtime markdown that consumer agents copy literally. datarim/templates/X still reserved for project-local overlay refs. Detector + bats unchanged (already accept all three prefix forms; 11/11 green).
  • NOTES Root motivation: operator review of v2.16.1 surfaced the install-topology blind spot — $HOME/.claude/templates/X resolves to the default install location only, missing project-local installs entirely. The env-var fallback pattern was already in canonical use for dev-tools/*.sh probes (see commands/dr-init.md:104,118 + docs/evolution-log.md:1694); v2.16.2 extends the same pattern to template refs. Closed in-cycle (no FU subtask).

v2.17.1

Previous 23 мая 2026
  • FEAT Mandatory per-goal verification — schema v2 + evidence_type per wish. tasks/{ID}-expectations.md теперь обязателен для всех уровней L1-L4 (раньше — soft-window для L1-L2); создаётся прямо на /dr-init Step 4.7 (раньше — на /dr-prd или /dr-plan); каждый wish обязан нести evidence_type: empirical|static|measurement. Валидатор dev-tools/check-expectations-checklist.sh отвергает v2-файлы без поля + принимает v1 как legacy с DEPRECATION stderr (12-month sunset до 2027-05-23).
  • FEAT Per-wish detailed QA report. /dr-qa Layer 3b теперь пишет per-wish расширенный блок в qa-report-{ID}.md с 4 sub-headings («Evidence type», «Что было сделано для проверки», «Команда + результат», «Verdict»). empirical требует runtime command + output; measurement — numeric value + comparison; static допускает grep/file-check. Контракт: каждая цель оператора получает отдельный отчётный блок 1-к-1 mapping, как просил оператор: «по каждому пункту отчёт о том что было сделано для тестирования и какой получен результат».
  • FEAT Validator advisory warn-all-static + legacy pivot. scan_all_tasks --all emits WARNING когда все wishes имеют evidence_type: static (для L1 single-wish skeleton — exemption). Legacy tasks (legacy: true в task-description ИЛИ captured_at < pivot date = 2026-05-23, env-overridable через DATARIM_TUNE_0266_PIVOT_DATE) автоматически пропускаются. Severity advisory (exit 0); /dr-compliance может upgrade к BLOCKED.
  • CHANGE /dr-init Step 4.7 «WRITE EXPECTATIONS SKELETON». LLM-driven wish extraction из operator brief; L1 — 1-wish skeleton, L2-L4 — 2-5 wishes; fallback skeleton при vague brief; validator probe fail-soft; skip-if-exists. /dr-prd Step 5.5b + /dr-plan Step 5b понижены до «append-merge expectations checklist» (PRD/plan-driven дополнения только).
  • CHANGE Schema v1 → v2 migration. schema_version: 2 с обязательным evidence_type per wish; awk parser в валидаторе ветвится по schema; v1 принимается как legacy с DEPRECATION stderr; schema_version: 99 и неизвестные — exit 1. Шаблон templates/expectations-template.md обновлён под v2.
  • NOTES 42 новых bats-кейсов (Phase 1: 6 schema-v2 + Phase 2: 16 init Step 4.7 + Phase 3: 14 qa per-wish + Phase 4: 6 validator warn-all-static). Совокупно — tests/test-tune-0266-*.bats. shellcheck clean на расширенном валидаторе. Self-verification: задача первой проходит через свой собственный контракт (dogfooding — /dr-qa emit per-wish blocks для каждого из 8 wishes). Operator goal: «изначально, на стадии /dr-init, фиксировать условия поставленных целей задачи; на /dr-qa проверять каждый пункт детально и писать отчёт о тестировании по каждому пункту».

v2.16.1

Previous 23 мая 2026
  • FIX Template path convention enforced in runtime markdown. 26 bare templates/<name>.<ext> references across commands/*.md and skills/**/*.md were absolute-qualified to $HOME/.claude/templates/<name>.<ext>. Bare relative refs resolved against the agent's cwd in consumer projects, breaking LLM-copied invocations such as coworker write --context templates/task-template.md with [Errno 2] No such file or directory. Root case: commands/dr-init.md § Reusable Templates bullet for task-template.md; 25 sibling hits surfaced by grep audit (same defect class, fixed in one pass per FB-4).
  • FEAT New detector dev-tools/check-template-path-convention.sh. Pure-bash + awk validator, locale-safe (LC_ALL=C), fence-aware (skips ``` ``` ``` blocks), markdown-link-aware (skips [`text`](../templates/X) renderer-side relative hrefs). Accepts $HOME/.claude/templates/, ${DATARIM_RUNTIME:-...}/templates/, and datarim/templates/ (intentional project-local overlay) as valid prefixes. Single --check mode: exit 0 clean / 1 offences / 2 usage. Regression: tests/check-template-path-convention.bats (11 cases). Per Datarim § Validation Discipline (orthogonal concerns get orthogonal tools), the detector ships standalone — not folded into datarim-doctor.sh.
  • CHANGE code/datarim/CLAUDE.md § Critical Rules #4 corollary. The «No absolute paths» rule now carries an explicit corollary for template references: bare templates/X in runtime markdown is forbidden; agent-facing refs MUST be $HOME/.claude/templates/X (or the env-var fallback in shell contexts); datarim/templates/X is reserved for project-local overlay refs. Detector + bats cited inline.
  • NOTES Bug origin: foreign consumer project (cwd outside Arcanada workspace) — agent read dr-init.md § Reusable Templates, copied templates/task-template.md verbatim into a coworker write --context invocation, path resolved to non-existent cwd/datarim/templates/task-template.md. Single-file root case bloomed into 26-hit pattern via grep audit; same regex-class defect across .md / .yml / .sh / .template extensions and subdir forms. Coworker behaviour itself is correct (generic file reader, exit 2 on missing context). Out of scope: coworker source, hook-guard, site explanation prose in data/commands/dr-archive.php (human-reader discoverability, not LLM-actionable).

v2.16.0

Previous 22 мая 2026
  • FEAT Empirical stage-probe harness. New dev-tools/datarim-stage-probe-init.sh / datarim-stage-probe-coworker-echo.sh / datarim-stage-probe-cleanup.sh + auto-detect journal hook in scripts/lib/snapshot-writer.sh. While /tmp/datarim-test-{ID}/ exists, every write_stage_snapshot call appends one journal line documenting whether the operator-visible response carried the Stage Header banner and CTA footer. Operator-facing how-to: docs/how-to/datarim-harness.md. Auto-detect by directory presence — zero cost when harness inactive, fail-soft per V-AC-7.
  • FIX Snapshot writer silent-fail under zsh-parent shells. scripts/lib/snapshot-writer.sh uses BASH_SOURCE[0] for sibling-script resolution; under zsh (default macOS user shell) the array is unset, the writer fails with command not found: write_stage_snapshot at exit 127, and no snapshot is written. Empirically detected in workspace: datarim/snapshots/ remained empty across multiple pipeline cycles. Fix: new dev-tools/snapshot-writer-wrapper.sh wrapper forces bash -c execution; skills/cta-format.md § Snapshot Emission recipe updated to use the wrapper.
  • FEAT Coworker context propagation. New skills/coworker-context.md — canonical Datarim conventions reference for external LLMs invoked via the datarim coworker profile. Stage Header, YAML byte-exact, append-log Q&A, expectations Option B, snapshot frontmatter, PRD ↔ archive mirror, Diátaxis, history-agnostic, Supreme Directive. ~/.config/coworker/profiles.yaml::datarim.system_prompt rewritten from 56 generic words to ~300 words carrying nine of ten mandate keywords explicit. External LLMs now receive convention instructions instead of generating plausible-but-non-compliant documents.
  • CHANGE Stage Snapshot Emission recipe shape. skills/cta-format.md § Snapshot Emission now invokes bash dev-tools/snapshot-writer-wrapper.sh instead of the previous direct source scripts/lib/snapshot-writer.sh && write_stage_snapshot pattern. Operator-visible warning string is also updated to mention the wrapper.
  • NOTES New regression test: tests/stage-probe-harness.bats (10 cases) — init / cleanup mode & regex & symlink, writer header/CTA detection in body, wrapper under bash. All 10 PASS locally. shellcheck -S warning clean on all four new scripts. scripts/stack-agnostic-gate.sh + scripts/task-id-gate.sh PASS on the new skill.

v2.14.0

Previous 22 мая 2026
  • FEAT Business-facing archive and compliance report contract (TUNE-0255). The archive and /dr-compliance report templates now answer the operator's question «что я просил и что вы сделали» in plain Russian, in four mandatory top-level sections in strict order — «Начальная задача», «Как решили», «Артефакты задачи», «Следующие шаги» — followed by an audit addendum under a --- horizontal rule that carries the technical surface (verification_outcome mirror, AC table, lessons learned, operator handoff, related).
  • FEAT «Как решили» bullet-list contract. Single-level bullet list. One bullet per item in the operator brief, in original order, with quoted item + Russian status word («выполнено» / «частично» / «не выполнено» / «неприменимо» — never the schema enum met/partial/missed/n-a) + one or two plain-language sentences. Expectations from tasks/{ID}-expectations.md fold into the same list with marker «(уточнение брифа)». The previous top-level ## Выполнение ожиданий оператора heading is retired.
  • FEAT New canonical templates/compliance-report-template.md. Mirror of the archive shape (four operator-facing top sections + audit addendum carrying the 7-step verdict table wrapped in <!-- gate:literal -->, remaining risks, related links). Frontmatter: task_id, date, verdict (COMPLIANT / COMPLIANT_WITH_NOTES / NON-COMPLIANT), optional scope.
  • FEAT New dev-tools/check-banlist-on-prose.sh validator. Bash wrapper does argparse + path-traversal regex (^[A-Za-z0-9._/-]+\.md$). Awk one-shot skips YAML frontmatter (first --- block) and honours <!-- gate:literal --> + <!-- gate:example-only --> fence markers; tokenises ASCII tokens of length ≥ 3, lowercases, looks up skills/human-summary/whitelist.txt then skills/human-summary/banlist.txt. Exit 0 clean / 1 offences (file:line:token) / 2 usage. shellcheck -S warning clean.
  • CHANGE Sync of commands/dr-archive.md Step 2, commands/dr-compliance.md Step 7, skills/compliance.md § Output, skills/human-summary.md § See also. The four-section + audit-addendum contract is the single source of truth across the command, the skill and the templates. The 7-step compliance verdict table is wrapped in <!-- gate:literal --> so English column headings bypass the banlist on the prose body. Existing archive documents under documentation/archive/ are grandfathered.
  • NOTES New: tests/tune-0255-archive-business-structure.bats (10 cases) + tests/tune-0255-compliance-template-shape.bats (4 cases). Retired: tests/tune-0210-archive-expectations-section.bats (T6–T10 ported into the TUNE-0255 suite, T1–T5 retired with the heading removal). Validator passes on both new templates. Regression bats (init-archive-structural-guards, archive-contract-lint) stay green. The pre-existing baseline task-id-gate + description-length + workflow-lint failures persist (not introduced by this release).

v2.13.0

Previous 21 мая 2026
  • FEAT Per-task stage snapshots (TUNE-0254). Every /dr-* command now persists its final operator-visible response (Summary + Gate Results + CTA) to datarim/snapshots/{TASK-ID}.snapshot.md with overwrite semantics, 8 KB hard cap, mkdir-based atomic lock and chmod 600. Producer side wired through a single touchpoint: skills/cta-format.md § Snapshot Emission — no per-command patches.
  • FEAT Snapshot-First context resume. /dr-next {TASK-ID} (formerly /dr-continue) Step 2.5 reads the snapshot before task-description / init-task / activeContext and emits a replay-prompt with the recommended CTA, a bilingual autonomy reminder (RU + EN), and a literal done before: body. /dr-orchestrate Snapshot-First Resume forwards recommended_next to subagent_resolver.sh as --hint. Missing or malformed snapshot → silent fallback to legacy behaviour.
  • FEAT Archive lifecycle. /dr-archive Step 0.95 moves the final snapshot from datarim/snapshots/ to documentation/archive/<subdir>/snapshots/{TASK-ID}-final-stage.md via the existing prefix_to_area() resolver — final stage stays grep-able in the long-term archive.
  • FEAT Two new skills + validator + how-to. skills/stage-snapshot-writer.md (producer contract) + skills/dr-next-snapshot-replay.md (formerly skills/dr-continue-snapshot-replay.md, consumer contract with ≥ 3 worked examples of the CTA-selection heuristic) + scripts/lib/snapshot-writer.sh + dev-tools/check-stage-snapshot-on-exit.sh + docs/how-to/stage-snapshots.md (Diátaxis how-to category bootstrapped). Kill switch: DATARIM_DISABLE_SNAPSHOT=1.
  • NOTES 44 new bats cases across 10 suites (exceeds the 22+ plan target): writer overwrite + size cap + frontmatter schema + shellcheck + flock race + cta-format integration + dr-continue / dr-orchestrate replay + cleanup-on-archive + prefix-to-subdir cross-check. cta-format.bats regression unchanged green. Stack-agnostic gate PASS; task-id gate PASS; shellcheck -S warning clean on both new shell artefacts.

v2.12.0

Previous 18 мая 2026
  • CHORE Removed copy-mode helper scripts. The pair of advisory drift-detection / curation scripts (DEPRECATED since v1.17 when the symlink-default operating model landed) are removed from the framework. Under symlink mode runtime IS the repo by inode — git diff is the canonical drift surface, so no parallel guard remained meaningful. Copy-mode users keep the documented resync recipe: git pull && ./install.sh --copy --force --yes. Three regression bats files that pinned the deprecated scripts (~146 LoC of tests) removed alongside.
  • CHORE Documentation cleanup, six surfaces. docs/getting-started.md § Updating and § Drift-between-repo-and-runtime rewritten to drop the deprecated tooling; docs/symlinks.md § How install.sh detects support / Migration from copy mode / Verification reworded; README.md § Drift check renamed to § Verifying the install with ./validate.sh as the canonical command; skills/datarim-system.md § Loading order copy-mode paragraph; skills/utilities/recovery.md Step 5 recovery recipe; skills/testing/bats-and-spec-lint.md static-grep exemplar and «Exemplar» reference.
  • CHORE Updater simplified. update.sh drops the post-install verify step and the dry-run drift listing — symlink mode exits early after git pull (unchanged contract), copy mode runs install.sh --copy --force --yes only. Help text + step-list synchronised. install.sh INSTALL_SCOPES comment now anchors the scope contract to tests/install.bats T34/T35/T36 (the canonical guard).
  • NOTES Stack-agnostic gate PASS; task-id gate PASS; bats suite green minus the three removed files (baseline 640 → ~634 expected after deletion); scripts/datarim-doctor.sh --quiet exit unchanged (pre-existing legacy-schema findings on workspace operational files, not introduced here). Re-allocated mid-flight from stale TUNE-0044 backlog reservation to TUNE-0251 to preserve grep -E 'TUNE-0044' audit-trail unambiguity (the historical TUNE-0044 archive of 2026-04-29 covers the multi-agent workspace archive semantics, not script removal).

v2.11.0

Previous 16 мая 2026
  • FEAT Agent autonomy restored on /dr-init and /dr-archive. Symmetric revert of the operator-only contract introduced in 2.10.0 per the FB-rules (Autonomous Agent Operating Rules) mandate. Removed the disable-model-invocation: true frontmatter flag, the 🔒 lock-emoji in command H1 and table rows, the Operator-only marker blockquotes (rewritten as neutral «Contract» blockquotes that name the in-code guards), the planner / compliance STOP-rule paragraphs, the cta-format § Operator-only commands section with its 🔒 badge convention, and the pipeline-routing Mermaid classDef operatorOnly styling on both lifecycle commands.
  • FEAT Structural guards stay enforced in code. The pre-archive-check.sh schema gate + staged-diff audit at /dr-archive Step 0.1, the datarim-doctor.sh --quiet probe at /dr-init Step 2.4, the blob-swap recipe for non-interactive shells, the prefix → archive-subdir routing, and the Operator Handoff section template in templates/archive-template.md are all unchanged. Relaxation touches only the discovery layer (Skill enumeration) and cosmetic surfaces — never the data-integrity protections.
  • FEAT Inverted regression bats. tests/operator-only-commands.bats renamed to tests/no-operator-only-on-init-archive.bats with all 13 assertions inverted from «marker present» to «marker absent». Preserves git-history signal that the contract once existed and fires red if it ever drifts back in. Continuity for CI artefact tracking (bats count stable).
  • FEAT New structural-guards regression bats. tests/init-archive-structural-guards.bats (9 invariants) locks the in-code guards listed above — pre-archive-check.sh ≥ 3 references in dr-archive.md, datarim-doctor.sh in dr-init.md, PRE-ARCHIVE CLEAN-GIT CHECK header, blob-swap recipe, Archive Area Mapping, Operator Handoff section reference, STRUCTURAL COMPLIANCE CHECK, WORKSPACE CROSS-TASK HYGIENE CHECK, and the Operator Handoff section template in archive-template.md.
  • NOTES Stack-agnostic gate PASS on touched files; task-id gate PASS; bats green (640/640 — baseline 631 + 9 new structural-guards invariants); scripts/datarim-doctor.sh --quiet exit 0. Supersedes TUNE-0184. Single-commit reversible via git revert.

v2.10.0

15 мая 2026
  • FEAT Arcanada Ecosystem Security Policy Mandate. Datarim ships the contract surface for the new ecosystem-wide security policy: canonical 10-section SECURITY.md template (Reporting / Disclosure SLA / Supported Versions / CI Gate Floor / Accepted Risks / Hardening Baseline / Standards Mapping / Embargo Policy / Hall of Fame / Scope) with consumer placeholders {{REPO_NAME}} / {{STACK}} / {{SUPPORTED_VERSIONS_TABLE}}; machine-readable accepted-risk.yml schema v1 (advisory-id regex, severity / scope / reviewed_by enums, reason minimum length, re-review window capped at last_review plus ninety days).
  • FEAT Reusable security-audit workflow. .github/workflows/reusable-security-audit.yml exposes a workflow_call with four stack profiles — typescript_pnpm, rust_cargo, python, framework. First step is the SECURITY.md presence-gate; second step validates the consumer's accepted-risk register when present; third step dispatches the stack-specific dependency audit. Final sentinel audit complete exposed for downstream verification.
  • FEAT Stale-trigger watcher. .github/workflows/security-stale-trigger.yml runs cron '0 9 * * 1' (Monday 09:00 UTC) plus manual workflow_dispatch, walks the configured ecosystem repo list, fetches each consumer's accepted-risk.yml, and POSTs warning / fatal events to the existing Ops Bot endpoint when an entry's re_review date has passed. Severity escalates from warning to fatal after 30 days overdue; fail-soft on Ops Bot non-2xx and on missing secret.
  • FEAT New gate tool dev-tools/check-security-policy.sh. Two orthogonal modes per the yaml-policy-loader-orthogonality contract: --check verifies SECURITY.md at repo root (defaults --repo to current directory), --validate-yaml <FILE> enforces schema v1 on the accepted-risk register. Pure bash plus awk, zero runtime dependencies; macOS BSD date and GNU date both supported via probe-and-fallback.
  • FEAT Cross-link section in framework CLAUDE.md. Datarim ships the contract surface only; the canonical mandate text is consumer-canonical per the rank-1 mandate canonical-text split. Reference consumer link recorded; conflict resolution with Supreme Directive Law 1 (Non-Harm) takes precedence over re-publish urgency.
  • NOTES Stack-agnostic gate PASS; public-surface lint PASS on shipped artefacts; bats green (15 new cases on top of the existing baseline); actionlint and zizmor zero on the two new workflows; shellcheck zero on the gate tool. Caller fixtures for act --dryrun drive each of the four stack profiles to the audit complete sentinel.

v2.9.0

Latest 14 мая 2026
  • FEAT Init-task Q&A auto-append. Every operator clarification round captured by a pipeline command now lands in tasks/{TASK-ID}-init-task.md § Append-log as a structured block — verbatim question, verbatim answer, one-line summary, and a Decided by: operator|agent marker. When the operator does not answer, the agent decides autonomously per the Autonomous Agent Operating Rules (FB-1..FB-5) and records a ≥ 50-character rationale in the same block. Six pipeline commands write the block via dev-tools/append-init-task-qa.sh at a new APPEND Q&A IF ANY step (/dr-prd, /dr-plan, /dr-design, /dr-do, /dr-qa, /dr-compliance). /dr-init and /dr-archive stay read-only by contract. Backwards-compatible: tasks without an init-task file are not blocked.
  • FEAT Extended skill init-task-persistence. New ## Q&A round-trip contract section defines the block format (five mandatory subheadings — Question, Answer, Decided by, Summary, Conflict with existing wish; sixth Decision rationale ≥ 50 chars when decided_by is agent), the operator|agent decision-author enum, conflict-routing rules (Conflict with existing wish → return task via /dr-do --focus-items <wish_id> or /dr-prd), and the legacy fallback for tasks without an init-task file.
  • FEAT New utility dev-tools/append-init-task-qa.sh. Atomic Q&A block append with mkdir-based per-task lock (macOS-portable, no flock assumption), temp-file + mv write, realpath boundary check (target MUST resolve inside datarim/tasks/), 100 KB per-file size cap (DATARIM_QA_MAX_INPUT_BYTES), and Security Mandate § S1 file-only free-form input contract (no operator text as literal CLI strings). Exit codes 0 / 1 / 2 (appended / IO / usage).
  • FEAT Extended validator dev-tools/check-init-task-presence.sh. New validate_qa_blocks awk pass detects ### <ISO> — Q&A by /dr-<stage> (round N) headings, asserts five mandatory subheadings, allowed Decided by enum, and ≥ 50-char Decision rationale body when Decided by: agent. Backwards-compatible: init-task files without Q&A blocks continue to pass.
  • FEAT /dr-qa Layer 3b gains a Q&A round-trip verification sub-section. Two checks: agent-decision implementation grep (every Decided by: agent block must be reflected in changed files / task description / archive draft — unreflected raises Layer 3b FAIL, operator-overridable) and Conflict closure verification (every Conflict with existing wish: <wish_id> block must have a matching closure entry — unclosed raises Layer 3b BLOCKED and routes the task back to /dr-do --focus-items <wish_id>). Both checks fail-soft when no Q&A blocks exist.
  • NOTES Stack-agnostic gate PASS; shellcheck zero on the new utility and the extended validator; bats green (18 new tune-0216-qa-roundtrip cases on top of the 570-case v2.8.0 baseline; legacy 13 init-task cases unchanged).

v2.8.0

14 мая 2026
  • FEAT Operator-memory pipeline upgrade. Seven related improvements ship under one umbrella: «remember what the operator asked for, across the full pipeline». Verbatim init-task persistence, operator wishlist with verification gate, browser-based frontend QA, plain-language operator recap across three commands, archive section that mirrors the wishlist outcome, refreshed visual maps, and a coherent docs/site fanout. Backwards-compatible for legacy tasks via a 30-day rolling soft window; new gates default to info-severity advisories that never block legacy pipelines.
  • FEAT Init-task persistence (F1). Every /dr-init writes a per-task init-task.md with closed-schema frontmatter and a verbatim ## Operator brief section. Every later pipeline command reads it at first step; divergences from operator intent land in the task-description Implementation Notes. New validator dev-tools/check-init-task-presence.sh with --task / --all modes and a 30-day rolling soft window (info < 30 d, warn ≥ 30 d, never blocker for legacy tasks). 13 bats cases.
  • FEAT Expectations checklist + verification gate (F2 + F3). /dr-prd (L3-L4) and /dr-plan (L2 without PRD) write an operator-readable wishlist in plain Russian — kebab-slug wish_id (cyrillic allowed), История статусов running log, Текущий статус enum, optional override line ≥ 10 chars. /dr-qa Layer 3b and /dr-compliance Step 5b verify the checklist; missed items without operator override route the task back to /dr-do --focus-items <wish_ids> via the FAIL-Routing CTA. New validator dev-tools/check-expectations-checklist.sh; cyrillic wish_ids round-trip through shell arguments safely. 16 + 8 bats cases.
  • FEAT Browser-based frontend QA (F4). When a task touches any frontend markup, /dr-qa Layer 4f resolves an available browser tool (CLI → MCP → env-browser → none), acquires a per-task lock, opens the local dev surface, and writes screenshot + trace + summary into datarim/qa/playwright-{TASK-ID}/run-<ISO-ts>/. Skipped silently for non-frontend tasks. Three headed modes: default headless, lenient --headed (no display ⇒ finding + fall through), strict --headed-strict (no display ⇒ exit 2). New detector dev-tools/detect-playwright-tooling.sh; mkdir-fallback lock; path-traversal guard. 15 bats cases.
  • FEAT Plain-language reports across all three operator-facing commands (F5, absorbs the standalone preview from v2.7.0). /dr-qa, /dr-compliance, and /dr-archive end with a four-sub-section recap («Что было сделано» / «Что получилось» / «Что не получилось / осталось открытым» / «Что дальше») between the technical block and the next-step block. Anglicism banlist (around 50 ASCII tokens) + universal-term whitelist (around 30 terms — JSON, OAuth, HTTP, CLI, RFC, CI/CD, …) + per-paragraph <!-- gate:literal --> escape hatch (≤ 2 fenced paragraphs per recap). Severity ladder: 1st offence ⇒ info, 3rd ⇒ warn, 5th ⇒ block. Archive documents written before this contract are grandfathered and never re-validated. 24 bats cases.
  • FEAT Archive expectations section (F6). Every archive document carries a new ## Выполнение ожиданий оператора section between Final Acceptance Criteria and Known Outstanding State / Operator Handoff. Each wish from the expectations checklist is rendered as a single-level bullet with the plain-language status word (выполнено / частично / не выполнено / неприменимо — never the raw schema enum) plus one or two sentences of comment sourced from the most recent История статусов reason. No tables; banlist applies; missing expectations file ⇒ explicit «Чек-лист ожиданий не заводился» line preserves the canonical archive shape. 10 bats cases.
  • FEAT Visual maps refreshed (F7). The fragment-index visual maps gain three new artefact nodes (init-task, expectations, playwright-run) in a new «Artifact Flow Across the Pipeline» Mermaid diagram, four new skill nodes (init-task-persistence, expectations-checklist, playwright-qa, human-summary) in the Agent ↔ Skill dependency graph, and Layer 3b + Layer 4f branches in the /dr-qa stage flow. 18 bats cases.
  • FEAT Skill count: 41 → 45. Four new operator-facing skills ship: init-task-persistence, expectations-checklist, playwright-qa, human-summary. All consumer surfaces (CLAUDE.md, README.md, docs/skills.md, public site) brought to the same count.
  • NOTES Stack-agnostic gate PASS; gate sweeps green; shellcheck zero on new shell tools; security gates green. Bats green (13 + 16 + 8 + 15 + 24 + 10 + 18 = 104 new cases, on top of 466 existing — 570 total, 565 passing with 5 pre-existing failures unrelated to this release).

v2.7.0

13 мая 2026
  • FEAT Topic-overlap advisory in /dr-init Step 2.5b. A non-blocking check compares the fresh task description against the pending backlog and surfaces any item that shares ≥2 keyword stems. RU + EN tokenisation, hand-curated stopwords, crude suffix stemmer — Python 3 stdlib only, no pip dependencies. Operator picks duplicate / refine-scope / orthogonal before committing to a new task ID. Exit 0 by contract — pipeline ordering unchanged.
  • FEAT dev-tools/check-topic-overlap.py — top-N significant stems against pending backlog titles; text (default) and json output formats; --include-status flag for pilots that need to scan in_progress items too.
  • FEAT dev-tools/data/stopwords-{en,ru}.txt — ≥200 entries per language, including Datarim domain noise.
  • FEAT commands/dr-init.md — Step 2.5b inserted after the workspace-hygiene check. Skips silently when python3 is absent, the backlog has no pending items, or the detector is missing on an older install.
  • FEAT tests/dr-init-topic-overlap.bats + ...-fp-budget.bats + ...-latency.bats — PRD cases a/b/c, FP rate <10%, TP rate ≥4/5, ≤300 ms on a 500-item synthetic backlog.
  • FEAT Human-readable operator summary at the end of /dr-compliance and /dr-archive. A new skill defines a 4-sub-section recap (what was done / what worked / what didn't work or is still open / what's next) that both operator-facing commands now emit between their technical block (verdict / archive write) and the CTA block. The recap follows the operator's most recent message language (Russian default for Arcanada consumers, English otherwise), bans tables and jargon, and is capped at 150–400 words. The technical output is unchanged.
  • FEAT skills/human-summary.md — contract: 4 fixed sub-headings, length budget 150–400 words, anti-patterns (tables, English loanwords in Russian text, bare task IDs, multi-level nested lists, acronyms without expansion, emoji, mixed-language summaries), RU and EN mini-examples.
  • FEAT commands/dr-compliance.md Step 8 — HUMAN SUMMARY. Runs on every verdict; on NON-COMPLIANT the «what didn't work» sub-section carries the failure detail in plain language and «what's next» mirrors the FAIL-Routing CTA without command syntax.
  • FEAT commands/dr-archive.md Step 8 — HUMAN SUMMARY. Sourced from the just-written archive document plus the reflection file. Chat-only — archive and reflection are not mutated.
  • FEAT tests/test-human-summary-contract.bats — 9 spec-regression tests guarding skill existence, four mandated sub-headings, RU+EN mini-examples, length budget declaration, and cross-references from both commands.
  • NOTES Stack-agnostic gate PASS; task-id gate PASS; bats green (topic-overlap 6/6 + human-summary 9/9).

v2.6.0

12 мая 2026
  • FEAT Autonomous Agent Operating Rules — new rank-1 ecosystem mandate spawned from TUNE-0185 Phase 4. Eight canonical rules (FB-1..FB-8) govern agent autonomy when operator briefs are incomplete, complex, or ambiguous. Conflict resolution: Supreme Directive Laws 1-5 > Autonomous Agent Operating Rules > AAL Mandate > project-specific mandates.
  • FEAT plugins/dr-orchestrate/rules/fb-rules.yaml — machine-readable policy block (8 rules with enforcement_layer / tier / default_action / reversibility_required / audit_required / conflicts_with_law) plus a hard_gated_actions: list (prod-deploy, secret-rotation, irreversible DB, public communication, finance, legal, force-push-main, git-history-delete, multi-user-visible action).
  • FEAT plugins/dr-orchestrate/scripts/rules_loader.sh — new load_fb_policy() and load_fb_hard_gates() entry points, orthogonal to the existing prompt-pattern load() stream (separate schema, separate consumers).
  • FEAT Framework CLAUDE.md § Autonomous Agent Operating Rules (cross-link) defines the contract surface; consumers mirror the canonical FB-rules text in their own ecosystem CLAUDE.md before enabling dr-orchestrate plugin.
  • DOCS Spawned 14-task ecosystem backlog under Source: PRD-TUNE-0185 across CONS / ARCA / MUN / LTM / SRCH / CONN / INFRA / SEC / AGENT / TUNE prefixes — Consilium production deploy, voice-reply escalation UX, dev-agent boundary, backlog import API, long-term memory layer, retrieval over reflections, structured-output for CLI agents, DEV-server tmux provisioning, Supreme-Directive safety review, council escalation endpoints, public-surface scan, AAL audit recap, mandate sync audit, consumer rollout tracker.
  • NOTES Stack-agnostic gate PASS; task-id gate PASS; shellcheck zero. Phase 4 ships the contract surface and ecosystem documentation; Phase 5 (first self-driving cycle on DEV) tracked separately under TUNE-0185 umbrella.

v2.5.0

12 мая 2026
  • FEAT /dr-orchestrate bot-interaction interface — OpenAPI 3.1 inbound contract (POST /orchestrator/input, Bearer auth, sync-shortcut whitelist dr-status/dr-help with X-Sync-Timeout ≤ 2000 ms, async 202 default).
  • FEAT Reference impl via adnanh/webhook v2.8.3 (Go single binary, MIT) + config/hooks.yaml trigger config + scripts/orchestrator-input-handler.sh shell adapter (atomic ULID-named file write into ~/.local/share/datarim-orchestrate/inbox/).
  • FEAT cmd_run.sh inbox-poll branch — dequeues oldest inbox JSON per cycle, injects .command as UNKNOWN_TEXT, falls through to the existing semantic-parser → resolver pipeline.
  • FEAT Outbound _emit_devbot emitter replaces the v0.2.x stub. Two backends: callback (default, HMAC-SHA256 sign via scripts/outbound-hmac-sign.sh with X-Timestamp + 300 s replay window) and redis (opt-in via DR_ORCH_OUTBOUND_BACKEND=redis, publishes to orchestrator-out:{session_id} via scripts/outbound-redis-publish.sh).
  • SECURITY Activation gated on DR_ORCH_ESCALATION_DEVBOT_URL env — unset ⇒ silent return 0 noop, never exit 99. Rollback = unset env, instant revert.
  • SECURITY Network exposure Tier 1 (loopback 127.0.0.1:8090). Bearer secret via Vault ref vault:secret/datarim/orchestrator/bearer; HMAC secret via Vault ref vault:secret/datarim/orchestrator/hmac_secret. Secrets never in argv or logs; _redact chain reused on bodies.
  • TEST 11 new bats suites (5 contract, 1 integration, 1 security, regression-clean against 68 pre-existing tests). Schemathesis contract suite + CI workflow (.github/workflows/dr-orchestrate-contract.yml) drives property-based fuzz against the live reference impl on an ephemeral port.
  • TEST dev-tools/check-agent0017-live.sh — manual pre-activation gate (curl /healthz + smoke POST /prompts) before operator sets DR_ORCH_ESCALATION_DEVBOT_URL in production.
  • DOCS Public-surface sync: plugins/dr-orchestrate/README.md, framework CLAUDE.md + README.md, data/commands/dr-orchestrate.php (Bot-Interaction Interface section, EN + RU), config.php version bump.
  • NOTES Plugin plugin.yaml bumped 0.2.1 → 0.3.0. Unblocks TUNE-0176 (user-config bot_interaction schema) and AGENT-0017 M3 (pipeline driver via this interface). Stack-agnostic gate PASS; task-id gate PASS; shellcheck/gitleaks zero.

v2.4.0

11 мая 2026
  • FEAT /dr-orchestrate Phase 2 — Subagent Inference Layer. On parser miss (confidence: 0), cmd_run.sh dispatches to subagent_resolver.sh, a multi-backend AI CLI chain (coworker-deepseekclaude --printcodex exec). Per-backend 15 s timeout, FD-3 close for bats-harness compatibility, missing-backend dedup via state-dir sentinel, lenient JSON extraction (raw / fenced / prose-wrapped). Caller (cmd_run.sh) gates resolver output on configurable subagent.confidence_threshold (default 0.80); below threshold → escalation, at/above → autonomous decision-cooldown.
  • FEAT Plugin autonomy bumped L1 → L2 (assisted). plugin.sh get_autonomy() now returns 2; new dispatch case on_unknown_prompt routes parser-miss prompts to the resolver chain.
  • FEAT scripts/escalation_backend.sh (NEW) — escalation sink with two backends: mock (JSONL writer to ~/.local/share/dr-orchestrate/escalation.jsonl) and dev-bot (stub exit 99 with WARN). Frozen JSONL schema documented in tasks/*-fixtures.md — locks the consumer contract for any future dev-bot consumer.
  • FEAT scripts/rules_loader.sh (NEW) + rules/default.yaml — 3-source rules merge (default → user override → learned-rules stub) with last-write-wins on match-key collisions. Bootstrap ships ~10 slash-command patterns; learned-rules write path is Phase 3 scope.
  • FEAT scripts/subagent_resolver.sh (NEW) + agents/dr-orchestrate-resolver.md (NEW) — multi-backend resolver implementation + declarative agent spec. Fail-closed semantics: parse failure / backend error / timeout / chain exhaustion → {action:"", confidence:0, reason:"chain_exhausted"}, never an autonomous send.
  • CHANGE scripts/security.shcheck_cooldown() now wraps the read-write window in flock -n on Linux hosts so concurrent contenders fall through to "blocked" rather than racing the timestamp file. macOS hosts emit a one-time WARN and operate at Phase-1 non-atomic semantics. Added regression for the decision-kind 60 s cooldown.
  • CHANGE scripts/audit_sink.sh — new make_event_v2 emitter with schema_version: 2 plus confidence, subagent_model, backend_used, escalation_backend, stage (parse / resolve / escalate), outcome (matched / resolved / escalated / blocked_decision_cooldown), and grep-redacted reason. Phase 1 make_event preserved as backward-compatible v1.
  • CHANGE scripts/semantic_parser.sh — miss path emits source: rule_phase2_miss to distinguish parse-miss from Phase 1 rule-hit. Hit path remains rule_phase1_stub.
  • FEAT dev-tools/measure-orchestrator-soak.sh (NEW, ~80 LoC) — V-AC-22 soak verdict gate. Computes false_escalate_rate = escalated / (resolved + escalated) over the configurable time window (default 48 h) from schema-v2 audit events; exit 0 if rate < --max-false-escalate threshold (default 0.15).
  • TEST 21 new bats tests (4 new files: test_rules_loader.bats, test_subagent_resolver.bats, test_escalation_backend.bats, test_cooldown_concurrent.bats) + extensions to test_audit_sink.bats, test_security.bats, test_plugin_register.bats. Full plugin suite: 63 tests, 100% pass on macOS dev host (5 tmux + 2 flock skipped on macOS by design).
  • DOCS Public-surface sync — plugin.yaml 0.1.0 → 0.2.0, user-config.template.yaml + subagent and escalation stanzas, plugin README.md Phase-2 rewrite, plugin commands/dr-orchestrate.md Phase-2 section, framework CLAUDE.md commands-table entry, framework README.md reference-plugin bullet + version badge, VERSION 2.3.0 → 2.4.0, site data/commands/dr-orchestrate.php EN+RU rewrite, config.php 2.2.0 → 2.4.0.
  • SECURITY Threat-model controls — fail-closed on all resolver paths (parse-fail / backend-error / timeout / confidence<threshold), least-privilege subprocess invocations (operator user only, no sudo), hash-only credentials invariant preserved, no eval / bash -c "$user_input" in resolver, FD-3 close on all backends (bats-harness deadlock fix), kernel-released flock cleanup (no stale-lock janitor needed).
  • NOTES v2.4.0 cumulative — Class B (operating-model addition: subagent inference, audit schema v2, autonomy bump). Phase 3 follow-ups (auto-learning rules, real dev-bot consumer, Telegram bridge) remain backlog. Phase 2 ships read-only loader for learned-rules.yaml; write path deferred.

v2.2.0

10 мая 2026
  • FEAT TUNE-0161 — skills/diataxis-docs.md (NEW). Documentation Taxonomy Mandate: 4 closed Diátaxis categories — tutorials/ (learning), how-to/ (problem-solving), reference/ (lookup), explanation/ (understanding). Closed mapping table covers architecture / testing / deployment / gotchas / api / cli / config / faq / glossary / troubleshooting / examples. 6 anti-patterns explicitly forbidden. Stack-agnostic (no SSG/CMS lock-in).
  • FEAT TUNE-0161 — templates/docs-diataxis/{tutorials,how-to,reference,explanation}/README.md (NEW, 4 stub files). Per-category onboarding stubs ("when to write here" / "when NOT to write here" / naming convention) used by /dr-init project scaffolding.
  • FEAT TUNE-0161 — /dr-optimize Step 6 docs-drift detector (commands/dr-optimize.md). Filesystem-presence + threshold ≥3 docs check (Bash, exemption-aware). On drift proposes INFRA-* — Diátaxis docs reorg для <repo> in backlog. Soft warning only; hard CI gate intentionally deferred to a separate backlog item, trigger: ≥3 live consumers post-mandate (same detector flips to exit 1).
  • CHANGE TUNE-0161 — skills/project-init.md Step 4. Scaffold default replaces flat docs/{architecture,testing,deployment,gotchas}.md with docs/{tutorials,how-to,reference,explanation}/ 4-category split. Legacy stubs auto-mapped per skill mapping table: testing/deployment/gotchas → how-to/, architecture → reference/. Backwards-compat smooth (idempotency rule preserves existing files; never overwrite).
  • CHANGE TUNE-0161 — code/datarim/CLAUDE.md § Documentation Taxonomy Mandate (NEW section, between Security Mandate and Defensive Invariants). Workspace ~/arcanada/CLAUDE.md § Documentation Taxonomy Mandate added (after Operational Resilience). Both sections point to skills/diataxis-docs.md as single source of truth.
  • DOCS TUNE-0161 — Public-surface sync: data/skills/diataxis-docs.php NEW (EN+RU), config.php 2.1.0 → 2.2.0, pages/getting-started.php Diátaxis project-scaffolding section, pages/home.php + content/{en,ru}.php stats counts swept skills 39 → 40, framework docs/skills.md + docs/getting-started.md + README.md + project-level CLAUDE.md/README.md updated.
  • CHANGE TUNE-0117 reframed as first consumer of TUNE-0161 mandate. datarim.club remains pilot site for live deployment of the 4-category taxonomy.
  • NOTES v2.2.0 cumulative — Class B (operating-model / contract change). PRD-TUNE-0161 ratifies the mandate; comparative analysis vs Google dev docs / Write the Docs / Microsoft Concept-Task-Reference / "no mandate" / "discoverability lint only" alternatives recorded for first time. Hard CI gate deliberately deferred — empirical drift data first.

v2.1.0

10 мая 2026
  • FEAT TUNE-0144 — /dr-verify tri-layer architecture (v2). Layer 1 deterministic floor (dev-tools/dr-verify-floor.sh, shell pipeline, zero LLM cost) + Layer 2 cross-model peer-review (DeepSeek default via coworker, ~14× cheaper than Sonnet, clean external context — no self-agreement bias) + Layer 3 native runtime dispatch (Claude 3-agent canonical; Codex single-prompt demoted to [experimental] fallback). Findings carry explicit source_layer tag for tri-layer provenance and dedupe.
  • FEAT TUNE-0144 — New --floor-only + --peer-provider={deepseek,groq,openrouter,...} flags on /dr-verify. --task-id propagation MANDATORY at Layer 2 — without it downstream token-cost / prospective-rate tooling cannot filter logs by task.
  • FEAT TUNE-0144 — Canonical archive frontmatter template templates/archive-template.md (NEW). Adds verification_outcome block schema (caught_by_verify, missed_by_verify, false_positive, n_a, dogfood_window) — single source of truth for prospective dogfood measurement. /dr-archive Step 2 instructs operator to fill the block.
  • FEAT TUNE-0144 — Token-cost tooling: dev-tools/measure-invocation-token-cost.sh (per-task aggregation from ~/.local/state/coworker/log/<YYYY-MM-DD>.jsonl, OpenTelemetry-style dotted keys, provider breakdown) + dev-tools/measure-prospective-rate.sh (archive frontmatter aggregator, computes caught_per_5_tasks with decision_hint). Old measure-verify-cost.sh deprecated side-by-side (broken parser shape against current coworker log format).
  • FEAT TUNE-0155 — /dr-verify provider auto-resolution chain (zero-flag UX). New helper dev-tools/resolve-peer-provider.sh implements a 6-step chain: CLI flag → per-project ./datarim/config.yaml → per-user XDG ~/.config/datarim/config.yaml → coworker --profile code default → cross-Claude-family subagent fallback → same-model isolated last resort. /dr-verify {TASK-ID} now runs end-to-end without an explicit --peer-provider flag.
  • FEAT TUNE-0155 — Cross-Claude-family fallback. New agents/peer-reviewer.md Sonnet-tier subagent dispatched at chain step #5 in clean isolated context. Covered by Claude subscription, no per-user external API key required. New 3-tier peer_review_mode taxonomy: cross_vendor / cross_claude_family / same_model_isolated.
  • FEAT TUNE-0155 — templates/datarim-config.yaml (NEW). Per-project datarim-config schema (peer-review provider, cost cap, AAL targets, runtime preferences). Whitelist deepseek | moonshot | openrouter | sonnet | haiku | opus | none blocks malicious-PR typosquat injection at parse time (exit 1 on unknown).
  • FEAT TUNE-0155 — JSONL emission discipline (Layer 2 reviewer prompts). skills/self-verification.md § Layer 2 mandates suppression of PASS-as-finding entries: findings array carries only defects or incorrect-premise items. Confirmations compress into final-line summary {cleared_iter1: [...], total_new_findings: N}.
  • FEAT TUNE-0155 — /dr-plan Step 6.5 extension. PRD AC verification commands smoke-checked at plan time against the implemented CLI surface (or pre-implementation skeleton). AC ↔ V-AC semantic match check ensures Validation Checklist rows verify what the AC actually asserts, not just verbatim mirror the AC number.
  • FEAT TUNE-0155 — Per-mode rate aggregation in dev-tools/measure-prospective-rate.sh. Emits cross_vendor_rate, cross_claude_family_rate, same_model_isolated_rate keys for per-mode dogfood measurement.
  • CHANGE TUNE-0150 — Brand-hygiene cleanup. Active runtime cross-references to external superpowers:* skill namespace replaced with local Datarim skill names in skills/systematic-debugging.md (3 refs) and skills/finishing-a-development-branch.md (2 refs). External worktree-manager path-interop strings (~/.config/superpowers/worktrees/) removed from cleanup-eligibility list — Datarim runtime owns only .worktrees/ and worktrees/. Lineage from v2.0.0 absorption preserved unchanged in CHANGELOG / PRDs / docs (MIT attribution).
  • FEAT INFRA-0078 — /dr-plan Phase 4 architectural-superseding probe. Mandatory first sub-step before component breakdown: read archives referenced via Spawned from / Source: and answer whether the architectural problem is already solved by a sibling task. A 30-second grep at planning time prevents dedicated-host plans for problems already absorbed elsewhere.
  • FEAT TUNE-0114 follow-up — skills/evolution.md § Pattern: Split-Architecture Metrics for Absorption Tasks. Aggregate token budgets fail when absorption adds on-demand files; replaced with idle hot-path + per-existing-file + on-demand-exempt buckets.
  • FEAT AUTH-0072 — skills/ai-quality.md § Pipeline-Position-Aware AC Formulation. When AC asserts HTTP status, trace request through full middleware/filter chain; if status is downstream of any validator, phrase as semantic gate, not literal status.
  • FEAT AUTH-0061 — skills/testing.md § Reporting Test Counts in Audit Output. QA/Compliance MUST derive per-spec test counts via mechanical extractor (framework-neutral). skills/compliance.md Step 7 — stale-base merge-result gate: simulate 3-way merge via git merge-tree before flagging a regression from PR diff vs base.
  • FEAT ARCA-0007 — agents/developer.md resilience-pattern defaults. Circuit-breaker errorFilter: 4xx excluded except 408/429 (downstream pressure signals); breaker.close → self-heal observability event with explicit listener-binding enumeration. L3–L4 tasks: post-final-TDD design-conformance audit listing every event/lifecycle binding against the referenced ADR.
  • DOCS TUNE-0144 + TUNE-0155 — Public-surface ↔ runtime sync (5-way): data/commands/dr-verify.php + data/agents/peer-reviewer.php (NEW EN+RU), code/datarim/docs/commands.md row, docs/agents.md roster (peer-reviewer added), framework CLAUDE.md /dr-verify rewrite + agent table, README.md feature mention. Counts swept: agents 17→18, skills 27→39, commands 20→22, templates 18→23.
  • NOTES v2.1.0 cumulative — Class B-lite additive (no breaking changes). TUNE-0144 inherits scope from TUNE-0137 v1 → v2 PRD revision; TUNE-0155 extends without contract change. Findings-only mode preserved at all layers — no auto-fix added. Cross-Claude-family dispatch is first measured tier: empirical bias delta vs same-model self-critique remains under observation in the active dogfood window. Codex CLI degraded mode (CODEX_RUNTIME=1): chain step #5 skipped, step #6 taken with stderr WARN propagated to audit-log.

v2.0.0

9 мая 2026
  • FEAT TUNE-0114 — Multi-runtime framework (Claude + Codex). New install.sh flag-based architecture: --with-claude, --with-codex, --project DIR, --yes, --dry-run, --force (no flags = print help). Shim creation: install.sh creates ~/.claude/ or ~/.codex/ directories even without runtime binary. --project DIR copy mode rejects system paths (/etc, /usr, /bin, /sbin, /System) with exit 3. Lockfile ~/.${runtime}/.install.lock blocks concurrent runs.
  • FEAT TUNE-0114 — AGENTS.md symlink → CLAUDE.md. Codex CLI and other runtimes that read AGENTS.md by convention work out of the box, no build step or fork required.
  • FEAT TUNE-0114 — 14 superpowers skills absorbed. 4 verbatim ports (finishing-a-development-branch, receiving-code-review, systematic-debugging, verification-before-completion); 8 intent-layer rewrites (brainstorming, dispatching-parallel-agents, executing-plans, requesting-code-review, subagent-driven-development, using-git-worktrees, writing-plans, writing-skills) — Claude tool literals (Task() / TodoWrite() / <system-reminder>) replaced with functional prose for runtime-agnostic readability; 2 merges (test-driven-developmenttesting.md § Discipline; using-superpowersdatarim-system.md § Skill Discovery).
  • FEAT TUNE-0114 — Per-skill runtime: [claude, codex] + current_aal / target_aal frontmatter on all 38 top-level skills. Classification per AAL Mandate: human-driven idea/design tools 1/2; disciplined process gates 2/3; orchestration / execution-loop skills 2/4. New validator dev-tools/check-skill-frontmatter.sh.
  • FEAT TUNE-0114 — Token-budget regression gate dev-tools/measure-skill-token-cost.sh. AC-4a idle hot-path: skills/datarim-system.md ≤+16% chars vs v1.23.0 baseline (frozen as .datarim/baseline-v1.23.0.tokens). AC-4b per-existing-file: ≤+30% chars. AC-4c on-demand absorbed files exempt (loaded only when invoked).
  • FEAT TUNE-0114 — CHANGELOG.md Keep-a-Changelog format introduced; v2.0.0 entry covers full TUNE-0114 ship.
  • DOCS TUNE-0114 — Honest positioning: multi-runtime framework (Claude + Codex), not "vendor-neutral". Cursor / Goose / Aider — future milestones, not current scope. Codex disclaimer: experience may differ — no Task / TodoWrite primitives; intent-layer rewrites preserve runtime-agnostic readability. Public Surface Scan covers 12 files: README, CLAUDE.md, AGENTS.md, CHANGELOG, docs/*, Projects/Datarim/{README,CLAUDE}, datarim.club {config.php, content/{en,ru}.php, getting-started.php, changelog.php}, ~/.claude/CLAUDE.md global.
  • CI TUNE-0114 — 41 bats tests GREEN: 29/29 tests/install.bats (legacy invariants TUNE-0033/0077/0091 preserved) + 12/12 tests/install-tune-0114.bats (no-flags help, --with-claude/--with-codex/multi, --project happy + 3 system-path rejects + missing-arg, --dry-run x2, lockfile concurrency, legacy --copy WARN).
  • NOTES TUNE-0114 — No breaking changes for existing Claude installs. Refresh via ./install.sh --with-claude. Sub-tasks unblocked: TUNE-0115 (Adversarial Review skill split), TUNE-0117 (Diátaxis reorg), TUNE-0118 (/dr-status pull-mode), TUNE-0119 (Party Mode → Consilium-lite). Follow-ups spawned: TUNE-0125 (project-local evolution learning), TUNE-0116 (Module Manifest — separate task).

v1.24.0

7 мая 2026
  • FEAT TUNE-0109 — Secure-by-default Network Exposure Baseline. New skill `network-exposure-baseline.md` formalises a four-tier bind-target model (Tier 0 unix-socket / Tier 1 loopback / Tier 2 Tailscale CGNAT / Tier 3 public-with-justification). Tier 3 requires inline `x-exposure-justification` + `x-exposure-expires` (≤90 days). Public-by-default = breach-by-default; loopback/Tailscale binds become the dev/prod default.
  • FEAT TUNE-0109 — Verifier `dev-tools/network-exposure-check.sh` parses docker-compose ports, redis.conf bind, postgresql.conf listen_addresses, systemd `.socket` ListenStream and Dockerfile EXPOSE; emits text or SARIF. Tiered gate `dev-tools/network-exposure-gate.sh` reads task-description frontmatter (priority/type) and returns `hard_block` / `advisory_warn` / `skip`; missing/malformed frontmatter resolves fail-closed.
  • FEAT TUNE-0109 — Pipeline integration: `/dr-prd`, `/dr-plan`, `/dr-do`, `/dr-archive` auto-load the skill on network-surface diffs; pre-commit gate in `/dr-do` (Step 8.5) blocks Tier 3 violations or requires `--skip-exposure-gate` override (advisory cases only) with Ops Bot event + § Decisions note. Workspace `CLAUDE.md` § Backend Stack Standards + § CI/CD Convention updated with Tier model + mandatory lint workflow.
  • CI TUNE-0109 — Reusable workflow `templates/network-exposure-lint.yml` (`workflow_call` with six contract inputs). Drop-in for any service repo; `lint failure ⇒ deploy blocked`. V-AC9 perf budget 30 s; combined run (compose+redis+postgres+systemd) measured p95 ≈ 0.14 s — ~200× headroom.
  • TEST TUNE-0109 — 59/59 cumulative bats GREEN: 16 P1 verifier (boundary IPv4/IPv6, mapped IPv6, TTL, sub-second perf), 19 tiered-gate, 11 pipeline-command integration, 13 CI workflow integration (structural assertions + 4 fixture-repo simulated runs + V-AC9 perf assertion). actionlint + semgrep p/default + p/secrets + gitleaks all clean.
  • SECURITY TUNE-0109 — Phase 4 audit of Arcanada-one repos surfaced three production violations spawned as INFRA-0067 (Transcribator PROD compose: `3700:3700` short-form, P0), INFRA-0068 (Auth Arcana dev compose: postgres/redis/app loopback bind, P1), INFRA-0069 (Ops Bot dev compose: postgres/redis loopback bind, P1). Verifier capability gaps (env-interpolation defaults, `${TAILSCALE_IP}:PORT` recognition) tracked as TUNE-0122 / TUNE-0123.
  • DOCS TUNE-0109 — `getting-started.php` adds Network Exposure Baseline section (Tier model badges + local check + reusable CI workflow). Workspace + framework CLAUDE.md updated; data/skills/network-exposure-baseline.php published for site n-way sync.

v1.23.0

6 мая 2026
  • FEAT TUNE-0101 — Plugin System Core: opt-in plugin architecture for Datarim. New CLI `/dr-plugin {list,enable,disable,sync,doctor}` with manifest-driven runtime symlinks. Local plugin sources (absolute path) installed as namespaced symlinks under `~/.claude/{skills,agents,commands,templates}//`. Override mechanism allows root-position installation via `overrides:` field in `plugin.yaml`. `enabled-plugins.md` is the single source of truth for the active set; `dr-plugin sync` reconciles runtime against manifest (orphan removal, broken-symlink recreate, disabled-orphan restore).
  • FEAT TUNE-0101 — `dr-plugin doctor` ships with 9 health checks: manifest-syntax, inventory-consistency, broken-symlinks, orphan-files, override-integrity, dependency-graph (cycle/dangling DFS), git-state (uncommitted manifest), snapshot-cleanup (>30d), and skill-registry (frontmatter `name:` ↔ basename validation — closes the Skill-tool resolution gap surfaced in Round 4 dogfooding). `--fix` flag auto-repairs checks 2-5 via `cmd_sync` and check 8 via snapshot purge.
  • SECURITY TUNE-0101 — Pre-mutation snapshot/rollback protocol on every `enable` (V-8). FIFO cap `DR_PLUGIN_SNAPSHOT_MAX=50`; age-based purge via `DR_PLUGIN_SNAPSHOT_AGE_DAYS=30`. Conflict pre-scan rejects symlink loops and cross-plugin shadowing. Critical-core overrides (`evolution`, `datarim-system`, `pre-archive-check`) emit operator-warning to stderr but allow (V-SEC-4). Path traversal, embedded credentials in URLs, and CRLF in YAML rejected at validation gate.
  • TEST TUNE-0101 — `tests/dr-plugin.bats` 77/77 GREEN across Phases A-D (T1-T135). Coverage: ID/source validation, YAML parsing, list/enable/disable/sync/doctor flows, snapshot/restore, fault injection rollback, override integrity, dependency cycles, skill-registry frontmatter validation. shellcheck -S warning clean.
  • DOCS TUNE-0101 — `commands/dr-plugin.md` slash-command spec, `templates/plugin.yaml.template` schema (schema_version 1), `templates/enabled-plugins.md.template` runtime manifest schema, README + CLAUDE.md + getting-started.md mention plugin system as opt-in extension mechanism. `data/commands/dr-plugin.php` site page (EN+RU).

v1.22.0

3 мая 2026
  • FEAT TUNE-0091 — Doc-fanout linter (`code/datarim/dev-tools/doc-fanout-lint.sh`): general N-way consumer-surface drift detector. Three rule kinds: `grep_in_file` (literal pattern with `{name}` substitution), `file_must_exist` (canonicalised path resolution), `count_match` (regex capture group vs glob count). Driven by `.doc-fanout.yml v1` (block-style YAML, depth ≤3). Auto-detected drift fixed in same release: `docs/skills.md` 22→27 reusable skill modules, `docs/agents.md` 16→17 specialized agents, `docs/commands.md` 20→18 slash commands. Plus 13 grep-missing entries added across `CLAUDE.md` and `docs/` for skills/agents shipped without doc rows.
  • SECURITY TUNE-0091 — Linter ships in `dev-tools/` outside `INSTALL_SCOPES` (whitelist exclusion). Consumer projects of Datarim never receive the linter — no supply-chain footprint. Regression bats `T34/T35/T36` assert exclusion in symlink + copy modes. S1-hardened: `set -u`, regex-validated config strings, `grep -F` literal patterns, path-traversal guard via `canonicalise_path()`, hard caps on config/line size.
  • TEST TUNE-0091 — `dev-tools/tests/doc-fanout-lint.bats` (17 fixtures: T1–T17 covering parser, all 3 rule kinds, severity gating, output formats, cross-root semantics, `--strict`, install-hook idempotency). `tests/test-command-doc-coverage.bats` (TUNE-0090) migrated to thin wrapper invoking the new linter via fixture configs; original 4-assertion regression preserved.
  • CI TUNE-0091 — New `.github/workflows/dev-tools-lint.yml` workflow: `bats-self-tests` (blocking) + `linter-run` (warning-only, cross-root surfaces expected absent in single-repo checkout). Existing `security.yml` 12-job baseline preserved (no path-filter overlap).
  • DOCS TUNE-0091 — `Projects/Datarim/CLAUDE.md` § Public-surface ↔ runtime sync rule updated from "deferred" to "implemented v1.22.0" with full schema reference. `dev-tools/README.md` documents schema, security boundary, exclusion rationale, pre-commit installer, versioning policy.

v1.21.7

3 мая 2026
  • DOCS TUNE-0090 — Doc-surface drift sweep: `/dr-doctor` now documented in CLAUDE.md, README.md, docs/commands.md, and docs/getting-started.md. Command was shipped in v1.21.0 but undiscoverable from all documentation surfaces.
  • DOCS Removed stale `/dr-reflect` reference from CLAUDE.md Pipeline section — reflection was consolidated into `/dr-archive` Step 0.5 in v1.10.0. Removed stale `/dr-security-audit` reference — security review is integrated into `/dr-qa`.
  • FIX Framework repo `documentation/` directory removed — violates framework/consumer boundary invariant. Consumer projects write task archives to `documentation/archive/`; framework workflow state lives in `Projects/Datarim/datarim/`. Files relocated: `INSIGHTS-TUNE-0054.md` → `Projects/Datarim/datarim/insights/`; security archives → `~/arcanada/documentation/archive/security/`. Guard added to `.gitignore` to prevent regression.
  • TEST New bats test `tests/test-command-doc-coverage.bats` — 4 assertions prevent future drift: every `dr-*.md` command file must appear in `docs/commands.md` and `CLAUDE.md`; no obsolete `/dr-reflect` or `/dr-security` refs in `CLAUDE.md`; `documentation/` must not exist in framework repo.

v1.21.6

3 мая 2026
  • FIX TUNE-0088 — Pass 6 hardening: four parser/dispatch bugs from the v1.21.5 distributed-user report on aether/local-env are fixed. (1) Compound task IDs (e.g. **DEV-1212-S8**, **DEV-1196-FOLLOWUP-lock-ownership-doc**) now parse via extended ID regex `[A-Z]+-[0-9]+(-[A-Za-z0-9]+)*`. (2) Explicit `→ documentation/archive/{area}/archive-{ID}.md` pointer in bullet body is now preferred over the hardcoded `prefix_to_area(prefix)` mapping — eliminates the duplicate-archive regression where canonical at `general/` and prefix_to_area resolved to `development/`. (3) NEW shape S4 (mid-bold context word, e.g. **DEV-1182** soft-delete fix —) recognised. (4) NEW headerless fallback — operational files without `### Recently Archived` header are processed line-by-line; bullets with explicit non-terminal status (in_progress, not_started, blocked, ...) pass through as active content, preserving operator-drift active-task references. (5) Defensive `find documentation/archive/ -name "archive-{ID}.md"` (depth ≤ 3) before synthesise — if canonical exists under any area subdir with the ID literal, strip-with-warning instead of duplicating. Russian archive-section headers (`## Последние завершённые`) now recognised by `is_archive_header`. `validate_task_id` regex extended to accept compound suffixes
  • DOCS 7 new bats fixtures (T-ARCHIVE-A6-ext, A7, A7b, A8, A9, A9b, A10, T-REPRODUCER): false-positive guard (**TODO**/**FIXME**/**SECTION-1** excluded), explicit-pointer dispatch + path-traversal rejection, compound IDs (DEV-1212-S8, DEV-1196-FOLLOWUP-*, DEV-1182 mid-bold), headerless fallback (strip when canonical exists, synthesise when missing), defensive find at unexpected area, distributed-user vault reproducer (14 mixed shapes stripped, zero stubs in development/). Existing T-ARCHIVE-A1..A6 GREEN (no regression). Full bats suite 38 → 45 PASS for datarim-doctor.bats; shellcheck -S warning clean; bandit / gitleaks / anti-pattern grep all zero
  • DOCS Removed § Pass 6 — Known Issues subsection from skills/datarim-doctor.md (resolved). Updated Pass 6 contract documents four shapes (S1→S2→S4→S3 priority), compound-ID syntax, explicit-pointer dispatch, defensive find, and headerless fallback semantics
  • DOCS Migration recipe for users on v1.21.5 with stale `documentation/archive/development/` stubs: (1) tarball restore from `/tmp/datarim-backup-*.tgz` reverts datarim/* to pre-fix state; (2) `rm -rf documentation/archive//` if canonical archives live under a different area subdir; (3) re-run /dr-doctor --fix on v1.21.6 — canonical archives auto-detected via defensive find. TUNE-0077 tarball-backup contract unchanged

v1.21.5

3 мая 2026
  • NEW TUNE-0085 — datarim-doctor.sh now enforces the canonical thin-index contract via NEW Pass 6 — operational-files archive section migration. Strips ## Archived (tasks.md/backlog.md) and ### Archived / ### Recently Archived (activeContext.md) sections that violate the v1.19.1 contract «activeContext.md is one section only — strict mirror of tasks.md § Active; completion history lives in documentation/archive/». For each archive bullet, Pass 6 verifies or synthesises a canonical archive doc at documentation/archive/{area}/archive-{ID}.md, then drops the bullet from the operational file. 91% size reduction on the source-incident reproducer (1626 B → 138 B). Distributed users run /dr-doctor (dry-run) then /dr-doctor --fix and get an explicit per-file summary: parsed/stripped/synthesised/skipped counts
  • NEW Three archive-bullet shapes auto-detected (S1 arrow-link, S2 status-paren, S3 plain-bold). Per bullet — 4 outcomes: (a) verified canonical archive exists with {ID} literal → strip; (b) canonical archive missing → synthesise stub with frontmatter (id, title, status, date, source: synthesised, original_block_sha) + body = original bullet; (c) collision (existing archive without {ID} literal) → respect --conflict-policy (default --no-prompt skip), preserve bullet with manual-migration marker; (d) unparseable → preserve with warning
  • NEW Scanner finding dedup — dry-run reports one rolled-up entry per archive section («archive section (N legacy entries — run --fix to migrate to documentation/archive/)») instead of N individual bullet findings. Distributed users see actionable signal, not noise — a typical 14-bullet ## Archived was previously 14 separate finding lines
  • FIX Reverts 1.21.4 commit (Approach D — whitelist-exception): preserving archive sections by design contradicted the canonical contract and accumulated 12-18 KB token-bloat in operational files (120-540 KB lost tokens per session at 10-30 reads). Approach C (Strip-Or-Synthesise) replaces it after QA BLOCKED Layer 2 (Design Conformance) + PRD-driven re-scope to L3
  • DOCS 6 new bats cases (T-ARCHIVE-A1..A6): Pass 6 strip-when-verified, synthesise-when-missing, collision-skip-with-marker, activeContext ### Recently Archived end-to-end, idempotency, dry-run rolled-up findings. Suite 31 → 37 PASS, shellcheck -S warning clean
  • DOCS NEW skills/datarim-doctor.md § Pass 6 — Archive Section Migration with explicit semantics, 3 bullet shapes, 4 per-bullet outcomes, security:counter-example fence rejecting Approach D
  • DOCS Migration warning for distributed users upgrading from <1.21.5: first `/dr-doctor --fix` after upgrade may synthesise canonical archive docs for orphan bullets in operational files. Tarball backup at /tmp/datarim-backup-*.tgz covers rollback (TUNE-0077 contract unchanged)

v1.21.3

2 мая 2026
  • NEW TUNE-0076 — datarim-doctor.sh Pass 4 (backlog-archive migration) + Pass 5 (post-fix re-scan) reach POSIX shell parity with the prior ad-hoc Python migration. Approach A: TSV mktemp + AWK section state machine + per-ID dispatch on top of existing extract_*/validate_* primitives. Cancelled entries → documentation/archive/cancelled/archive-{ID}.md; completed entries → verify existing documentation/archive/{area}/archive-{ID}.md or synthesise into general/. Final rm of backlog-archive.md only after migrated == parsed verification
  • NEW New --no-prompt flag for non-interactive contexts (CI / AI sessions without TTY). Auto-aborts conflicts when target archive already exists without the {ID} literal inside; default interactive behaviour preserved when [ -t 0 ] detects a TTY
  • NEW Pass 5 post-fix re-scan composition — full dry-run on the migrated tree must report zero findings; per-ID assertion checks every TASK-ID from the pre-fix backlog-archive.md.pre-v2.bak is now represented in documentation/archive/. Mismatch triggers auto-restore from the TUNE-0077 tarball backup
  • NEW Pre-write per-file sidecar backup datarim/backlog-archive.md.pre-v2.bak preserved after successful migration for forensic provenance, in addition to the TUNE-0077 tarball
  • DOCS 6 new bats fixtures (T24-T29): Pass4-cancelled (synthesise frontmatter), Pass4-completed-existing (verified, no rewrite), Pass4-completed-missing (synthesise into general/), Pass4-conflict-no-prompt (abort entry to stderr), Pass5-zero-findings (post-fix dry-run + .pre-v2.bak preserved + dry-run exit 0), Pass5-idempotent (second --fix → no-op). Suite 25 → 31 PASS, shellcheck clean, stack-agnostic gate clean
  • DOCS Real-world dogfood regression on 89kB / 151-entry backlog-archive.md.pre-v2.bak (workspace) — exit 0, 148 archive files synthesised under documentation/archive/, idempotent rerun OK. Confirms bash Pass 4 algorithmic parity with the prior Python migration on production-scale corpus
  • DOCS Closes the TUNE-0071 v2 consumer-side automation gap. Any project where pre-archive-check.sh Gate v2-A still blocks because of a populated datarim/backlog-archive.md is now a single /dr-doctor --fix away from compliant

v1.21.2

2 мая 2026
  • NEW TUNE-0080 — NEW scripts/version-consistency-check.sh gate runs as commands/dr-archive.md Step 0.2 between clean-git check and reflect. When VERSION changed in HEAD->working-tree, the script greps CLAUDE.md and README.md for the old version string and blocks archive (exit 1) if any consumer is still stale. Closes the recurring drift class «VERSION bumped but README/CLAUDE.md left at old version»
  • NEW --allow-version-lag override available for the rare cases where the lag is intentional. Initial-commit and VERSION-unchanged paths are fast no-ops (exit 0), so the gate does not slow down archives that do not bump VERSION
  • NEW Scope decision: docs/ EXCLUDED. Initial design included docs/ recursive in the scan scope; live-smoke immediately tripped on docs/evolution-log.md citing the prior release. By design, evolution-log / release-notes / changelog are append-only historical ledgers that reference past versions on purpose. Narrowed scope to CLAUDE.md (Version line) + README.md (badge)
  • DOCS NEW tests/version-consistency-check.bats — 10 cases (T1 unchanged / T2 clean bump / T3 lagging CLAUDE.md / T4 lagging README.md / T5 docs/ excluded by design / T6 --allow-version-lag override / T7 not-a-git-repo / T8 initial bootstrap / T9 whitespace tolerance / T10 no args)
  • DOCS Lesson — dogfooding > synthetic fixtures. TDD red→green caught the implementation but not the scope error; all 10 synthetic bats cases passed with docs/ in scope because synthetic repos started clean. Live state validates scope; new rule — when a gate is built against a recurring incident class, smoke-test on the live repo before declaring done

v1.21.1

30 апреля 2026
  • NEW TUNE-0079 — history-agnostic cleanup pass complete. All pre-existing task-ID references cleaned from runtime scopes (skills/, commands/) per the heuristic in TUNE-0078: pure provenance parentheticals deleted, load-bearing rationale anonymised, counter-example incidents kept with neutral phrasing. Final tally — 64 hits in commands/ (9 files) + ~316 hits in skills/ (38 files) eliminated
  • NEW CI task-id-gate job switched from --diff-only transitional mode to strict full-tree. Pre-existing baseline carry-forward retired; the gate is now the canonical enforcement point for new code
  • DOCS tests/task-id-gate.bats extended T11-T14 — regression invariants per runtime scope (each scope stays gate-clean over time). 14/14 PASS
  • DOCS Lesson — bulk regex (Python re.sub over markdown) is NOT fence-aware. Session 3 bulk attempt corrupted teaching content inside a code-fence Examples block; reverted manually. Per-file Edit with explicit fence inspection was the only safe path. Bulk-tool acceleration is forbidden for skills/, commands/, agents/, templates/ markdown going forward — write a fence-aware AST walker first if acceleration is needed

v1.21.0

30 апреля 2026
  • NEW TUNE-0078 — NEW scripts/task-id-gate.sh mirrors the stack-agnostic-gate sibling but enforces a single regex \b[A-Z]{2,10}-[0-9]{4}\b over runtime markdown (skills/agents/commands/templates). Datarim runtime rules are read by AI agents that have no access to the historical context behind each task-ID reference; embedded task-IDs leak into AI outputs addressed to end users
  • NEW NEW skills/evolution/history-agnostic-gate.md — runtime contract (Trigger, Scope, Denylist, Whitelist, Escape Hatch, markers-must-be-on-separate-lines pitfall, Invocation, Exit codes, Why this exists, Out of scope)
  • NEW CLAUDE.md Critical Rules § rule 8 — «Rules are stack- AND history-agnostic» — added as durable framework contract
  • NEW CI integration — 14th job in .github/workflows/security.yml running in --diff-only mode against merge-base HEAD origin/main, so only fresh leakage in the change-set fails CI. Pre-existing baseline references (~339 hits in 57 files) tracked as TUNE-0079 cleanup pass
  • DOCS NEW tests/task-id-gate.bats + tests/fixtures/task-id-gate/ (5 fixtures) — 10 cases including --diff-only parity. Self-exemption for the gate's own contract document
  • DOCS Partial cleanup pass at v1.21.0 — agents/developer.md (2 hits) and templates/ (21 hits across 9 files) cleaned; legitimate template placeholders wrapped in escape fences

v1.20.0

30 апреля 2026
  • NEW TUNE-0077 — defence-in-depth data-loss safety contract for /dr-doctor --fix. NEW pre-fix tarball backup at ${DATARIM_DOCTOR_BACKUP_DIR:-/tmp}/datarim-backup-{TS}.tgz (mode 0600 via umask 077). NEW post-fix invariant emitted_count >= parsed_count on the regenerated index — violation triggers auto-restore (rm -rf + tar -xzf) and exit 2
  • NEW Success summary surfaces the backup path so the operator can recover even after the doctor exits clean. Source incident — external Datarim copy: a 730-LoC rogue datarim-doctor.sh v2 (developed in another worktree, never merged to canonical) was placed directly into ~/.claude/scripts/datarim-doctor.sh. Its --fix destroyed 30 task entries and reported «All fixes applied successfully». Recovery from external tarball
  • NEW install.sh INSTALL_SCOPES extended (agents skills commands templates) → (agents skills commands templates scripts tests). Both directories now whole-dir-symlinked into ~/.claude/ under default symlink mode — drift between canonical Datarim repo and ~/.claude/ runtime becomes impossible by inode. LOCAL_SCOPES intentionally unchanged (scripts/tests are framework-internal, not user-extensible — local overlay applies only to user-facing scopes)
  • NEW Whole-directory symlink uniform with skills/agents/commands/templates. Initial implementation tried file-level RUNTIME_SCRIPTS allow-list — rejected at QA review as deviation from established pattern. With dir-symlink, ~/.claude/scripts/ and ~/.claude/tests/ ARE the canonical directories by inode
  • DOCS tests/datarim-doctor.bats +6 regression tests T16-T21 — backup creation, mode 0600, post-fix invariant on synthetic 3-block fixture, printf hardening (no `printf "$` patterns), body-with-leading-dash safety, summary-prints-backup-path. 21/21 PASS
  • DOCS Quarantine over edit — rogue ~/.claude/scripts/datarim-doctor.sh (730 LoC) deleted, not patched. Backup at /tmp/rogue-doctor-v2-backup.sh for forensics. Canonical 368 LoC stays the single source of truth — porting v2 features back is a separate decision

v1.19.1

30 апреля 2026
  • NEW TUNE-0071 v2 — operational schema final form. backlog-archive.md ABOLISHED (was a third source of truth duplicating documentation/archive/{area}/archive-{ID}.md). Single source of truth for completion archive = documentation/archive/. Cancelled tasks → new area documentation/archive/cancelled/archive-{ID}.md
  • NEW activeContext.md § «Последние завершённые» REMOVED ENTIRELY. Pipeline-irrelevant data (only /dr-status displayed it) no longer mutates pipeline-critical file on every /dr-archive. Recency hint moves to runtime: /dr-status --recent N (default 5) computes from documentation/archive/**/archive-*.md mtime-sort. Zero duplication
  • NEW activeContext.md is now strict mirror of tasks.md § Active — identical lines, identical order. ≤30 lines. pre-archive-check.sh validates equality and line-format
  • NEW pre-archive-check.sh v2 hard gates: (a) forbidden-file detector blocks progress.md / backlog-archive.md presence; (b) forbidden-section detector blocks ## Последние завершённые / ## Last Completed; (c) line-format gate extended to activeContext.md § Active Tasks (catches paragraph-form leak). 5 new bats fixtures (T37-T41), 40/40 PASS
  • NEW /dr-archive Step 6 simplified — Prepend Last Completed + cap-at-20 logic removed. /dr-archive becomes ~10 LoC shorter; activeContext.md no longer mutated for display-only data
  • NEW /dr-status --recent N flag — runtime computation of recently-completed tasks. POSIX one-liner: ls -t documentation/archive/**/archive-*.md | head -N. Stack-agnostic, no dependencies
  • DOCS CLAUDE.md § Datarim State Directory tree updated — backlog-archive.md and progress.md removed; new cancelled/ area added to archive tree
  • DOCS skills/datarim-system/backlog-and-routing.md rewritten — Two-File → Single-File Architecture. backlog.md is the only operational backlog file; archived tasks leave to documentation/archive/
  • DOCS skills/datarim-system.md § activeContext.md thin contract simplified — one section only (Active Tasks mirror)
  • DOCS templates/activeContext-template.md rewritten (one section); templates/backlog-template.md cancelled-block comment updated
  • DOCS Workspace dogfood (TUNE-0071 v2 itself): activeContext.md 37 paragraph-form lines → 25 thin lines; backlog-archive.md 1013 lines → DELETED; 12 missing per-task archive files synthesised in documentation/archive/ for prior gaps; 153/153 archive coverage verified

v1.19.0

30 апреля 2026
  • NEW Operating-model change: operational files (tasks.md, backlog.md, activeContext.md) become THIN INDEXES — one-liner-per-task with pointer to externalised description file. Full task body (Overview, ACs, Constraints, Out of Scope, Related) lives in datarim/tasks/{TASK-ID}-task-description.md with closed 12-key YAML frontmatter (id, title, status, priority, complexity, type, project, started, parent, related, prd, plan). Canonical regex: ^- ([A-Z]{2,10}-[0-9]{4}) · (status) · P[0-3] · L[1-4] · (.{1,80}) → tasks/\1-task-description\.md$. Closes the «3000+ line monolithic operational files» problem — agents read 24-line index instead of 9000-line monolith (TUNE-0071)
  • NEW progress.md ABOLISHED — its single «Last Updated» paragraph was the dominant single-hunk diff that broke `git add -p` patch-staging in shared workspace. Last-completed log moves to activeContext.md § Последние завершённые (cap raised 10 → 20 entries; older entries remain in documentation/archive/) (TUNE-0071)
  • NEW NEW /dr-doctor command — diagnoses and migrates legacy block-style entries (### TASK-ID:) to thin schema. Idempotent (re-run = no-op). 4-pass migration: descriptions cache → operational rewrite → activeContext convert → progress.md retire. Path-traversal guard via lib/canonicalise.sh, lockfile via flock. CLI: --fix / --scope / --root / --task-id / --quiet / --no-color / --help. Exit codes 0/1/2/3/4/64 (TUNE-0071)
  • NEW NEW skills/datarim-doctor.md — schema spec + migration semantics. Loaded on demand by /dr-doctor and /dr-init Step 2.4 self-heal. Documents canonical regex, YAML frontmatter contract, conflict resolution, edge cases (bash 3.2 macOS default, →-in-title, concurrent invocation) (TUNE-0071)
  • NEW /dr-init Step 2.4 STRUCTURAL COMPLIANCE CHECK — probes datarim-doctor.sh --quiet on every init when datarim/ already exists. exit 1 + TTY → prompt «Run /dr-doctor --fix? [Y/n]» (default Y). Non-tty → warn-continue. exit 2/3/4 → ABORT (corrupt state, lock contention, security violation). Self-heal entry point closes the loop (TUNE-0071)
  • NEW pre-archive-check.sh schema-compliance gate — validates every bullet line in REPO/datarim/{tasks,backlog}.md against canonical regex; flags legacy ### TASK-ID: blocks. Auto-skip when repo lacks datarim/. Hooked into both shared-mode and legacy-mode success paths. Escape: --no-schema-check (in-flight migration only) (TUNE-0071)
  • NEW Description File Contract — closed 12-key YAML frontmatter schema, 5-section markdown body capped at 250 lines (Overview / Acceptance Criteria / Constraints / Out of Scope / Related, optional Implementation Notes / Decisions). Anything beyond → split into PRD or design doc (TUNE-0071)
  • NEW scripts/lib/canonicalise.sh extracted as shared library — lexical path canonicalisation (no I/O), reused by check-doc-refs.sh and datarim-doctor.sh. Closes TUNE-0054 reflection Proposal A2 (N=2 spawn-trigger met)
  • DOCS skills/datarim-system.md +87 lines: §§ Operational File Schema / Description File Contract / activeContext.md Write Rules / Self-Heal Entry Points
  • DOCS commands/dr-archive.md, dr-plan.md, dr-do.md, dr-status.md updated for thin-index ops — never writes progress.md, parses one-liner regex, lazy-loads description files
  • DOCS templates/{backlog,task,activeContext}-template.md REWRITTEN — backlog three sections (Pending/Blocked-Pending/Cancelled), task with 12-key frontmatter, activeContext NEW thin-format template
  • DOCS tests/datarim-doctor.bats — 15 cases (compliance detection, migration, security path-traversal, regex compliance, CLI/UX). tests/pre-archive-check.bats: 33 → 36 cases (+3 schema gate fixtures). Full bats regression: 71/71 PASS, shellcheck clean, stack-agnostic gate clean across all touched files
  • DOCS Self-dogfood on Arcanada workspace: tasks.md 3017 → 24 lines, backlog.md 2109 → 201 lines, progress.md 4286 lines DELETED, 239 description files generated. Net -9205 lines across 3 tracked operational files. Idempotency confirmed (second --fix run exits 0 silently)

v1.18.4

29 апреля 2026
  • NEW scripts/pre-archive-check.sh — DATARIM_PRE_ARCHIVE_WHITELIST env-var extension. Consumers can extend the hardcoded TUNE-0059 whitelist (VERSION, CHANGELOG.md, package.json, Cargo.toml, pyproject.toml, .gitignore) with project-specific version-bump basenames (e.g., config.php) via PATH-style colon-separated env-var, without modifying the framework. Path components are rejected (basename match only). Closes the gap surfaced in TUNE-0060 self-dogfood — Projects/Websites/datarim.club/config.php is a legitimate Datarim public-surface version-bump file but its basename does not belong in the canonical hardcoded list shipped to all consumers (TUNE-0061)
  • NEW --no-whitelist continues to override both the hardcoded list AND env-var entries — strict default-deny preserved for paranoid contexts
  • NEW commands/dr-archive.md Step 0.1.2 footnote on the whitelisted row documents the env-var extension, the PATH-style format, the basename-only contract, and precedence vs --no-whitelist
  • DOCS tests/pre-archive-check.bats: 28 → 31 tests (+3 TUNE-0061 fixtures — env-var single basename → whitelisted; env-var colon-separated multi-basename → all entries whitelisted; --no-whitelist overrides env-var → unattributed restored)
  • DOCS docs/evolution-log.md TUNE-0061 entry — Class A additive runtime behaviour; spawn-trigger N=2 reached (TUNE-0059 hardcoded list + TUNE-0060 self-dogfood gap); sixth iteration of the «Memory Rule → Executable Gate at Apply Step» pattern (TUNE-0044/0056/0058/0059/0060/0061); backwards-compatible by design (T1-T28 fixtures all pass; env-var unset → no behaviour change)

v1.18.3

29 апреля 2026
  • NEW scripts/pre-archive-check.sh — 6-th hunk classification "mine-by-elimination" added. When --task-id is set, the file has actual diff lines, AND those diff lines (additions/removals) contain ZERO task IDs while the committed body carries foreign historical IDs, the gate attributes the edit to the current task and exits 0. Closes the false-foreign misclassification of doc edits like CLAUDE.md, README.md, and architectural docs where the body references many historical tasks but the current edit (e.g., a version-line bump) introduces none. Founding incident: TUNE-0059 archive — code/datarim/CLAUDE.md and README.md version-bump 1.18.0 → 1.18.2 misclassified as foreign despite diff lines being clean (TUNE-0060)
  • NEW Safety guard: untracked files (no diff at all) skip the mine-by-elimination branch and fall through to existing "foreign" classification. Operator visibility preserved — the new klass surfaces in stdout with the foreign body IDs listed for review at patch-staging time
  • NEW commands/dr-archive.md Step 0.1.2 — classification contract paragraph extended with the mine-by-elimination klass and its untracked-files safety-guard note
  • DOCS tests/pre-archive-check.bats: 25 → 28 tests (+3 TUNE-0060 fixtures — body has foreign IDs + diff lines clean → mine-by-elimination + exit 0; diff lines contain TASK_ID → mixed not mine-by-elimination; diff lines contain only foreign IDs → foreign not mine-by-elimination)
  • DOCS docs/evolution-log.md TUNE-0060 entry — Class B operating-model extension; spawn-trigger N=2 reached by Pavel approval (TUNE-0059 self + CLAUDE.md/README.md observed misclassification = second class instance); fifth iteration of the «Memory Rule → Executable Gate at Apply Step» pattern (TUNE-0044/0056/0058/0059/0060); backwards-compatible (T1-T25 fixtures all pass; full repo regression 38/38 PASS)

v1.18.2

29 апреля 2026
  • NEW scripts/pre-archive-check.sh — 5-th hunk classification "whitelisted" added. When --task-id is set and a modified file's basename matches the hardcoded version-bump list (VERSION, CHANGELOG.md, package.json, Cargo.toml, pyproject.toml, .gitignore), the gate accepts it without a task-ID inside the diff. The operator-supplied --task-id is the attribution. Closes the false-positive surfaced during TUNE-0056 self-dogfood — VERSION is a single-line file that physically cannot carry a task ID (TUNE-0059)
  • NEW --no-whitelist escape flag restores strict default-deny for paranoid contexts. Without --task-id (legacy mode), whitelist is not active at all
  • NEW commands/dr-archive.md Step 0.1.2 — classification contract paragraph extended with the whitelisted klass and the basename list
  • DOCS tests/pre-archive-check.bats: 22 → 25 tests (+3 TUNE-0059 fixtures — VERSION + --task-id → exit 0 whitelisted; --no-whitelist + VERSION → exit 1 unattributed restored; non-whitelisted basename → default-deny preserved)
  • DOCS docs/evolution-log.md TUNE-0059 entry — Class B operating-model extension; founding incident TUNE-0056 self-dogfood; backwards-compatible (T1-T22 fixtures all pass)

v1.18.1

29 апреля 2026
  • NEW scripts/pre-archive-check.sh — conditional-shared auto-detect: when invoked with --task-id and the positional repo has a .datarim-shared marker file at root, route to shared-mode classification automatically (no explicit --shared flag needed). Closes the gap surfaced during TUNE-0044 self-dogfood — framework repo Arcanada-one/datarim itself is multi-agent but was single-agent-classified by default (TUNE-0056)
  • NEW .datarim-shared marker file shipped at framework repo root — opt-in signal that a repo carries cross-task hunks from parallel agent sessions. Portable across forks/mirrors (origin-URL match was rejected as fragile)
  • NEW commands/dr-archive.md Step 0.1.1 — classification table extended with a new Conditional-shared row (marker + --task-id auto-detect). Step 0.1.2 invocation form now documents both explicit --shared and auto-detect paths
  • DOCS tests/pre-archive-check.bats: 19 → 22 tests (+3 TUNE-0056 fixtures — marker auto-detect with foreign hunks → exit 0; marker absent + dirty → legacy STOP; marker + own hunks → exit 1 own classification)
  • DOCS docs/evolution-log.md TUNE-0056 entry — Class B operating-model extension; backwards-compatible (project repos without marker keep TUNE-0003 strict legacy behaviour)

v1.18.0

29 апреля 2026
  • NEW /dr-archive Step 0.1 promoted to multi-agent shared workspace semantics — foreign-task hunks from parallel agent sessions are no longer false-positive blockers; only the current task's own forgotten hunks (or unattributed hunks) block (TUNE-0044)
  • NEW scripts/pre-archive-check.sh extended with --task-id --shared flags — classifies each modified file's hunks as own / foreign / mixed / unattributed; legacy single-agent mode unchanged (TUNE-0044)
  • NEW commands/dr-archive.md Step 0.1 rewritten with sub-steps 0.1.1–0.1.5 (repo classification, shared check, patch-staging recipe, retry-tolerant pre-commit re-verify, project repo legacy check)
  • NEW CLAUDE.md § Workspace Discipline (multi-agent) — runtime-loadable summary of Step 0.1 contract for AI agents
  • DOCS tests/pre-archive-check.bats: 12 → 19 tests (7 new TUNE-0044 cases — foreign-only, own, mixed, unattributed, invalid id, missing --shared, legacy regression)
  • DOCS docs/evolution-log.md TUNE-0044 entry — Class B operating-model contract change, founding incidents VERD-0026 / DISK-0002 / LTM-0017

v1.17.2

27 апреля 2026
  • FIX Stack-agnostic gate: 32 hits across 11 runtime files cleaned (4 reword, 4 wrap with block-style markers, 2 whitelist additions, 1 hybrid). Gate now exits 0 across all four scopes — skills/, agents/, commands/, templates/ (TUNE-0043)
  • FIX Reworded npm/pip/cargo audit references in skills/security.md, skills/project-init.md, agents/researcher.md, commands/dr-qa.md to neutral phrasing «package-manager-native audit command at the declared severity threshold»
  • FIX Whitelist additions: skills/testing/live-smoke-gates.md (DEV-1156/1169 incident postmortems with stack-specific lifespan semantics) and skills/utilities/ga4-admin.md (Python-specific GA4 Admin API recipe) — both meet the 4 whitelist criteria from gate-spec § «When to add a file to the Whitelist»
  • FIX Inline-marker pitfall surfaced and documented: gate-spec markers MUST be on their own lines; awk strip uses next after opening match, so closing marker on the same line is never processed → skip persists. Logged as Class A apply candidate for next /dr-archive Step 0.5
  • DOCS docs/evolution-log.md TUNE-0043 entry — full sweep cleanup table (10 changes), verification block (gate ×4 PASS clean, bats baseline 158/160, 2 reds pre-existing), pattern-level Class A candidates
  • DOCS Recurrence loop closed: VERD-0010 → VERD-0021 → TUNE-0039 → TUNE-0040 → TUNE-0043. Datarim runtime is now stack-agnostic with zero gate violations across all four scopes.

v1.17.1

26 апреля 2026
  • FIX Bats baseline cleanup — removed 6 stale assertions covering deleted artefacts (agents/optimizer.md old 6-section schema, removed go-to-market.md, snapshot "24 skills" count) so the test suite now reflects live invariants only (TUNE-0034)
  • FIX reflect-removal-sweep whitelist extended with skills/evolution/class-ab-gate.md and skills/evolution/examples-and-patterns.md — fragment files inherit their parent's historical /dr-reflect references (TUNE-0034)
  • FIX skills/evolution.md gained an explicit v1.10.0 / TUNE-0013 forward-pointer note + cross-reference to skills/utilities/recovery.md (TUNE-0034)
  • FIX skills/file-sync-config.md description trimmed from 339 → 133 chars to honour the 155-char discovery cap (TUNE-0034)
  • DOCS docs/evolution-log.md TUNE-0034 entry rephrased to drop literal "dr-reflect" substring outside the whitelist (TUNE-0034)
  • DOCS Final test result: 154 pass / 0 fail / 154 total — first clean baseline since v1.10.0

v1.17.0

25 апреля 2026
  • NEW Symlink-default install mode — install.sh now creates symlinks for agents/skills/commands/templates by default; runtime IS the repo, drift is impossible by definition (TUNE-0033)
  • NEW New --copy flag preserves legacy real-copy behaviour for Windows/FAT/restricted shells; auto-detected on MINGW/MSYS/CYGWIN
  • NEW Local overlay — new ~/.claude/local/{skills,agents,commands,templates}/ gitignored layer for personal additions and overrides
  • NEW Migration prompt — existing v1.16 copy installs see an interactive [c]onvert / [k]eep / [a]bort prompt on first v1.17 install; --yes auto-converts with backup
  • NEW update.sh runtime-aware — symlink topology exits after git pull, copy topology runs install --copy --force --yes (preserves user mode)
  • NEW validate.sh local-override warning — emits "WARN: override detected" per file in local/ that shadows a framework file
  • NEW install.sh --force is a documented no-op under symlinks (prints "Already symlinked, nothing to update")
  • CHANGE curate-runtime.sh and check-drift.sh marked DEPRECATED in v1.17, removal in v1.18 (TUNE-0044)
  • CHANGE check-drift.sh exit-code: symlink → repo now exits 0 (sync by definition); symlink → other path is real drift (exit 1)
  • DOCS docs/getting-started.md § Installation rewritten: symlink default + --copy fallback + Windows note + local/ overlay + migration prompt
  • DOCS skills/datarim-system.md § Loading Order documents framework + overlay layering and conflict-resolution rule
  • DOCS 16 new bats tests cover AC-1..AC-9 (symlinks, --copy, Windows fallback, migration c/k/a, --force no-op, drift exit codes, validate WARN, deprecation banners) — final 150 pass + 10 pre-existing fail

v1.16.0

25 апреля 2026
  • NEW Unified CTA "Next Step" block — every /dr-* command now ends with a canonical block: resolved task ID, numbered options, exactly one **рекомендуется** primary marker, --- HR wrapping (TUNE-0032)
  • NEW Multi-task awareness (Variant B) — when more than one task is active, the CTA appends a "Другие активные задачи" menu with the recommended next command for each parallel task
  • NEW FAIL-Routing CTA variant — /dr-qa BLOCKED and /dr-compliance NON-COMPLIANT now emit a CTA naming the explicit layer-return command + task ID (no more free-text routing)
  • NEW New skills/cta-format.md — single source of truth canonical specification, loaded by planner, architect, developer, reviewer, compliance agents
  • NEW New templates/cta-template.md — reusable Markdown snippet with placeholders for the three CTA variants
  • DOCS Updated 17 commands with unified ## Next Steps (CTA) section + 5 agents with cta-format in Context Loading
  • DOCS Visual maps: added CTA decision-point diagrams to pipeline-routing.md and CTA-emission map to stage-process-flows.md
  • DOCS backlog-and-routing.md: Mode Transition table now references cta-format and documents Layer-to-command map for FAIL-Routing
  • DOCS New tests/cta-format.bats — 39 spec-regression tests + 3 golden fixtures (single-task, multi-task, fail-routing)
  • DOCS Anti-pattern guard: tests now fail if any command file uses U+2500 box-drawing as separator (Windows mojibake risk per Claude Code issue #34247)

v1.15.2

24 апреля 2026
  • FIX curate-runtime.sh: fixed infinite loop in interactive mode when stdin is not a TTY (non-interactive terminal, pipe, tmux)
  • FIX curate-runtime.sh: portable sed — replaced BSD-only sed -i '' with temp file + mv (fixes version bump on GNU/Linux/RedHat)
  • FIX curate-runtime.sh: skip-rest (s) now actually skips remaining files in current scope instead of acting as single-file skip
  • FIX curate-runtime.sh + check-drift.sh: symlink detection — warns when runtime dirs are symlinks to repo (drift detection impossible)
  • NEW curate-runtime.sh: TTY guard for interactive mode — clear error message with --auto/--dry-run suggestions
  • NEW curate-runtime.sh: EOF guard in prompt — prevents infinite loop on closed stdin
  • DOCS 5 new bats tests: non-TTY rejection, --auto without TTY, symlink detection (curate + drift), portable sed verification

v1.15.1

24 апреля 2026
  • FIX Split evolution.md (413→215 lines) into entry + 3 fragments: class-ab-gate, disaster-recovery, examples-and-patterns
  • FIX Split ai-quality.md (394→173 lines) into entry + 2 fragments: incident-patterns, deployment-patterns — all content preserved
  • FIX Shortened 16 component descriptions to ≤155 chars — total budget 8085→7000 chars (under 8000 threshold)
  • FIX Slimmed skill-creator agent (153→95 lines) and optimizer agent (139→50 lines) — both under 120-line warn threshold
  • DOCS Optimization audit report saved to datarim/reports/optimize-audit-2026-04-24.md
  • DOCS Evolution log updated with 5 OPT-004 entries

v1.15.0

23 апреля 2026
  • NEW Research Phase 1.3 in /dr-prd — structured external context research for L2+ tasks (TUNE-0029)
  • NEW Gap Discovery Step 7.5 in /dr-do — auto-spawns researcher agent when implementation hits unknowns
  • NEW New researcher agent (17th) — investigates library versions, best practices, CVEs, compatibility via adaptive tooling
  • NEW New research-workflow skill (22nd) — 10-point full checklist (L3-L4), 5-point lite mode (L2), gap discovery protocol
  • NEW New insights-template (13th) — 7-section document for research results, separate from PRD
  • NEW Insights document: datarim/insights/INSIGHTS-{task-id}.md — living artifact, updated during implementation
  • NEW /dr-plan auto-loads insights document as context when available
  • NEW Discovery interview reads insights before proposing answers — research-informed requirements
  • DOCS Visual maps updated: pipeline routing annotations, stage process flows, dependency graphs
  • DOCS path-and-storage: datarim/insights/ directory added to core directories
  • DOCS backlog-and-routing: embedded phases section documenting research and gap discovery

v1.14.0

22 апреля 2026
  • NEW Project scaffolding in /dr-init — create full project structure with CLAUDE.md, docs/, datarim/ via "/dr-init create project Name"
  • NEW New project-init skill — auto-detects tech stack, creates docs stubs (architecture, testing, deployment, gotchas), ephemeral working dirs
  • NEW New CLAUDE.md project template — Laws of Robotics + Datarim pipeline + project-specific placeholders
  • NEW New docs stubs template — 4 documentation files with structured placeholders
  • NEW Intent detection: /dr-init auto-routes between project scaffolding and task creation based on prompt keywords
  • NEW Idempotent scaffolding — safe to run on existing projects, skips existing files
  • DOCS dr-help updated with Project Scaffolding section and examples
  • DOCS Skill count 24→25, template count 11→13

v1.13.1

19 апреля 2026
  • NEW New /dr-publish command — content pipeline now complete: /dr-write → /dr-edit ⇄ /dr-write → /dr-publish → /dr-archive
  • NEW New publishing skill — universal technical rules for 6 social platforms (Telegram, LinkedIn, Facebook, X/Twitter, VK, Instagram) + website publishing (OG tags, blog checklist)
  • NEW /dr-dream now scans documentation/archive/ in addition to datarim/ — task archives are part of the knowledge base
  • BREAKING telegram-publishing skill replaced by publishing (broader scope, same Telegram rules preserved + 5 new platforms)
  • FIX Content pipeline gap closed — previously no step between editorial review and archive for formatting/publishing
  • DOCS Visual maps updated: content pipeline flow diagram, command-agent-skill dependency graphs
  • DOCS Command count 18→19, Content category 2→3 commands

v1.13.0

19 апреля 2026
  • NEW tasks.md size guard (TUNE-0024): warn at 3K lines, hard stop at 5K — prevents undetected file bloat (10K→2.5K cleanup preceded this)
  • NEW Content discipline: explicit allowed/prohibited content types for tasks.md — credentials, specs, templates must go to dedicated files
  • NEW L3-L4 plan extraction: large plans written to datarim/plans/{ID}-plan.md instead of inline — keeps tasks.md lean
  • NEW Concurrent write safety: timestamp-based conflict detection for multi-session work on tasks.md
  • NEW Cross-repo atomicity ADR (TUNE-0014): R1+R7 "same commit" rule relaxed for cross-repo — "same session + same day + cross-cite" now valid
  • NEW Optimizer health metrics (TUNE-0025): tasks.md and activeContext.md line counts added to /dr-optimize dashboard
  • BREAKING Skills consolidated 24→20 (TUNE-0015): infrastructure-debugging + remote-measurement merged into infra-automation, go-to-market merged into writing, incident-investigation pruned
  • FIX /dr-archive Step 7: task body fully deleted instead of preserved in HTML comments — archives are the permanent record
  • FIX activeContext.md pruning: "Последние завершённые" capped at 10 entries
  • DOCS ADR-TUNE-0014: formal decision record for cross-repo contract-implementation atomicity
  • DOCS evolution.md: Contract-Implementation Atomicity section added (anti-TUNE-0003 rule formalized)

v1.12.0

18 апреля 2026
  • FIX Pipeline routing incident (TUNE-0020): fixed 4 defects where Design, QA, and Compliance steps were silently skipped for L3-L4 tasks
  • FIX /dr-plan now correctly routes L3-4 tasks to /dr-design instead of /dr-do
  • FIX /dr-qa verdict table: ambiguous "compliance or archive" replaced with explicit complexity-based routing
  • FIX L3 pipeline: compliance step is now mandatory (was incorrectly marked as conditional)
  • NEW QA FAIL conditional routing (TUNE-0021): BLOCKED verdict now routes by earliest failed layer — L1→/dr-prd, L2→/dr-design, L3→/dr-plan, L4→/dr-do
  • NEW Loop guard: if the same QA layer fails 3 times, escalate to user with options (force-pass / reduce scope / cancel)
  • NEW Re-entry rules: after FAIL fix, resume forward through pipeline; QA must be re-run with -v2 suffix on report
  • NEW Compliance NON-COMPLIANT now has source-aware routing (PRD gap → /dr-prd, code issues → /dr-do)
  • NEW Consilium waiver: /dr-design can skip panel when one option clearly dominates all tradeoffs
  • NEW PRD-datarim-sdlc-framework.md: canonical pipeline contract created — single source of truth for all routing rules
  • DOCS Visual maps updated: QA diagram shows layer-based FAIL branches, pipeline diagram shows L3 compliance as mandatory
  • DOCS backlog-and-routing.md: FAIL Return Routing section added to Mode Transitions

v1.11.0

18 апреля 2026
  • BREAKING seo-launch and marketing skills merged into go-to-market (TUNE-0017) — update any references in project CLAUDE.md files
  • NEW Task Resolution Rule: automatic disambiguation when multiple tasks are active simultaneously (TUNE-0018)
  • NEW Multi-task active context: /dr-init appends, /dr-archive removes — no command overwrites the active task list
  • NEW curate-runtime.sh: automated runtime-to-repo sync script with interactive/auto/dry-run modes (TUNE-0016)
  • NEW 4 new skills: reflecting, infra-automation, infrastructure-debugging, go-to-market
  • NEW PRD waiver check: Level 3-4 tasks now prompt for PRD or explicit waiver reason (TUNE-0009)
  • NEW /dr-plan fixture capture: mandatory live CLI/API output sampling when parsing external tool responses
  • DOCS Description optimization: 63% reduction in total description characters (TUNE-0017)
  • DOCS Full README rewrite for both project and repository documentation
  • DOCS All datarim.club pages updated to reflect v1.11.0 state
  • MIGRATION If your project CLAUDE.md references seo-launch or marketing skills — replace with go-to-market

v1.10.0

16 апреля 2026
  • BREAKING /dr-reflect command removed — reflection now runs automatically inside /dr-archive as mandatory Step 0.5 (TUNE-0013)
  • NEW Pipeline shrinks from 9 stages to 8 stages; reflection is no longer skippable
  • NEW New skills/reflecting.md — the reflection workflow is preserved as a skill invoked internally by /dr-archive
  • NEW /dr-archive Step 0.5 loads reflecting.md, generates lessons learned, Class A/B evolution proposals, health-metrics check, follow-up tasks
  • NEW STOP on failure — if reflection fails or Class A proposals are rejected, archive halts (idempotent re-run)
  • DOCS README.md, CLAUDE.md, pipeline.md, commands.md, agents.md, skills.md, evolution.md, getting-started.md, use-cases.md all updated to 8-stage pipeline
  • DOCS Visual-maps regenerated: 4 mermaid diagrams updated for v2 pipeline contract
  • DOCS 3 new bats spec-regression tests (T1/T2/T3) guard against silent weakening
  • MIGRATION If your scripts or CI invoke /dr-reflect directly — replace with /dr-archive. Reflection content and behavior are unchanged; the invocation path is now automatic.

v1.6.0

13 апреля 2026
  • NEW Unified Task Numbering: same ID across backlog, task, and archive (no more BACKLOG-XXXX → TASK-XXXX rename)
  • NEW Model Assignment Convention: each agent and task-skill specifies its model (opus/sonnet/haiku)
  • NEW Cost optimization: 6 opus + 9 sonnet + 1 haiku agents (was 16 opus)
  • NEW 14 task-skills now have explicit model field; 6 reference-skills inherit
  • NEW skill-creator requires model field in new agents and task-skills
  • DOCS Backlog workflow guide updated for unified ID convention
  • DOCS Model Assignment Convention documented in datarim-system.md

v1.5.0

12 апреля 2026
  • NEW Universal Platform QA Tester agent (16th agent)
  • NEW Archive reorganization: documentation/archive/{area}/ with topic-based organization
  • NEW /dr-init creates documentation/archive/, adds datarim/ to .gitignore
  • NEW /dr-prd generates backlog items from PRD
  • NEW Dream skill expanded to scan documentation/archive/
  • DOCS Backlog workflow guide for project managers
  • DOCS Getting started guide with .gitignore philosophy

v1.4.0

10 апреля 2026
  • NEW Migrated to GitHub (Arcanada-one/datarim)
  • NEW install.sh for automated setup
  • NEW 19 commands, 15 agents, 18 skills (in v1.4.0)

v1.3.0

8 апреля 2026
  • NEW /dr-write and /dr-edit commands for content creation
  • NEW /factcheck and /humanize autonomous skills
  • NEW Writer and Editor agents
  • NEW Writing workflow with editorial review

v1.2.0

6 апреля 2026
  • NEW Migrated from memory-bank to datarim naming
  • NEW /dr-dream knowledge base maintenance
  • NEW /dr-optimize framework auditing
  • NEW Backlog two-file system (active + archive)

v1.1.0

31 марта 2026
  • NEW Consilium multi-agent panel discussions
  • NEW Strategist agent for Value/Risk/Cost analysis
  • NEW Discovery interview skill
  • NEW /dr-addskill for creating new framework components

v1.0.0

23 марта 2026
  • NEW Initial release — 9-stage pipeline
  • NEW Core agents: planner, architect, developer, reviewer
  • NEW Task tracking with complexity levels (L1-L4)
  • NEW Self-evolution through /dr-reflect