Skip to content

Releases: rfxn/rdf

RDF 3.7.0 — skills-native adapters

Choose a tag to compare

@rfxn rfxn released this 03 Sep 02:18

RDF 3.7.0 Release Notes

3.7.0

-- New Features --

[New] skills-native Claude Code output: claude-code and claude-plugin emit
skills//SKILL.md (name + intent-trigger description frontmatter,
canonical body byte-identical) through one shared emitter with the
Codex/Antigravity agent-skills surface; plugin.json declares skills;
rdf deploy owns per-skill ~/.claude/skills/ symlinks (+ the shared
skills/reference tree) with stale-link pruning and removes the legacy
~/.claude/commands symlink it created
[New] lib/adapter_common.sh — adp_* emitters (agents, skills, scripts,
reference, hash sidecars, atomic staging) shared by the claude-code,
claude-plugin, and agent-skills adapters; byte-identity fixture-tested
[New] AGENTS.md composer: rdf generate agents-md [--project-root P] builds a
project-scoped AGENTS.md from the target repo's own CLAUDE.md (governance
index fallback), Agent Skills pointer, and agent roster; codex and
antigravity are the same composite (agent-skills + agents-md) for
generate and deploy
[New] rdf init --tools claude-code|agent-skills|agents-md|codex|antigravity
(comma list): deploys .agents/skills and composes AGENTS.md into the repo;
unknown or empty values exit 1; AGENTS.md composition requires a git repo
[New] rdf doctor --scope doc-truth (14th scope): profile/adapter counts vs
README badges, RDF.md trees, docs/index.md; every tests/.bats wired into
tests/Makefile; WORKFORCE.md dispatch claims vs canonical command bodies
(verb-anchored, code blocks skipped); CONTRIBUTING CI claims vs ci.yml;
README/RDF.md directory-tree paths exist on disk (globs rejected)
[New] docs/platform-triage.md — per-minor re-triage ledger of native Claude
Code capabilities vs RDF mechanisms (first block 3.7: keep the dispatcher
over experimental Agent Teams); /r-ship resolves the target version at
Setup (--version X.Y.Z or prompt) and preflight 1d blocks a minor release
whose target MAJOR.MINOR has no ledger block (patch releases skip)
[New] governance-contract harness: negation guards + structural assertions
(security-floor formula verbatim in dispatcher.md and tiers.md, section
order, cross-file indicator-list equality); tests/adapter-common.bats,
tests/doc-truth.bats; CI lints tests/
.bats at error severity and smokes
rdf init under macOS system bash 3.2
[New] RDF_WORKSPACE env override for the doctor --all workspace root
[New] docs/specs/2026-09-02-platform-alignment-spike-design.md — D1-D5 verdicts
(Workflow-backed /r-build gated behind A/B evidence, local trigger-eval
harness, contract hardening, per-minor triage gate, OWASP AST10 posture)
+ docs/specs/support/rdf-build-workflow.prototype.js (unwired artifact)

-- Bug Fixes --

[Fix] rdf init and rdf doctor died on bash <= 4.3 (macOS 3.2 / el6 4.1 floors)
from empty-array expansion under set -u; class swept across lib/ and the
plugin adapter
[Fix] profile detection sees untracked, non-ignored sources (git ls-files
--others) for every language incl. TypeScript, and no longer races git
against grep -q under pipefail — a repo initialised before its first
commit no longer detects as minimal
[Fix] rdf deploy help: the hooks.json merge how-to failed on a fresh Claude
Code HOME (jq "object and null cannot be multiplied", exit 2); it now
seeds an empty settings.json before merging
[Fix] doctor no longer WARNs on its own output: drift is N/A without a parent
CLAUDE.md, artifacts are N/A in the framework checkout, sync says "not
the RDF framework checkout"; doctor --all refuses to scan $HOME as the
workspace (quickstart layout) and names the remedy
[Fix] doctor's .git/info/exclude completeness check missed AUDIT.md; the entry
list (now incl. .agents/) lives once in rdf_common.sh for init and doctor
[Fix] tests/derfxn.bats was in neither tests/Makefile nor CI and had never run;
CI generates claude-code output before BATS so output assertions stop
self-skipping; a contract fails when any tests/*.bats file is unwired
[Fix] context-audit.sh died with "_repo_sizes: unbound variable" off the rfxn
workspace layout (rdf-state.sh now resolved by probe order), leaked
redirect errors to stderr, and counted 0 deployed skills (find -L)
[Fix] generated CONTRIBUTING.md claimed bash -n/shellcheck/BATS for every
stack; standards and test command follow the detected profiles
[Fix] codex adapter emitted an empty "## Project Governance" section since
2026-03 (read a file that no longer existed) and a stale o4-mini config —
retired in favour of the composite
[Fix] self AGENTS.md carried rfxn/CentOS text and the checkout directory name;
it is now composed from CLAUDE.md, names the main repo (stable across
clones and worktrees), and is written atomically
[Fix] doc truth: README badges (adapters 6->5, profiles 11->13), RDF.md
profile/adapter trees and a deleted catalog citation, WORKFORCE.md rows
that claimed dispatches that never happen (r-start, planner) or omitted
ones that do (r-plan/r-spec reviewer, r-build qa), CONTRIBUTING's CI
paragraph, tiers.md:41 gate formula (security floor was omitted)
[Fix] deploy: a skipped skills entry no longer aborts the remaining surfaces;
linked count excludes skips; dry-run says what it would do; the legacy
commands prune matches the output root with a path boundary
[Fix] doctor install-mode counts only RDF-owned skill links; content-drift and
sync-health cover skills/reference; sync, doctor, and context-audit fail
closed (WARN/die) when the skills tree is absent instead of no-oping
[Fix] adapter library: adp_names_lite returned 1 on success and adp_count
tripped pipefail on a missing dir; byte-identity fixture decoupled from
canonical content; RDF_LIBDIR honours a pre-set value
[Fix] governance contracts: bare "! grep" guards were inert under BATS set -e
(negated commands are exempt) and order-anchor && chains were inert
mid-body — rewritten as explicit branches; GNU-only \b replaced with
portable ERE boundaries
[Fix] docs/multi-tool-parity.md no longer claims there is no rdf deploy
antigravity target or that per-project AGENTS.md is unimplemented;
quickstart exclude-entry count; published self AGENTS.md no longer
carries a /root/.claude path
[Fix] doc-truth CI-claims check verified only up to the first wrapped bullet;
indented continuation lines now stay in the section

-- Changes --

[Remove] adapters: 6 -> 5 (codex directory deleted; gemini-cli stays frozen
legacy and untouched); dead command-meta-v3.json, command-map-v3.md,
agents-md sections.json removed; three adapters shrink onto the
shared library
[Change] rdf generate accepts flags in any position (--project-root,
--deploy, --rules, --lite) and rejects a second positional; codex and
antigravity composites honour --project-root
[Change] docs describe the skills layout (README data-flow diagram and adapter
table, RDF.md, docs/index.md, quickstart, multi-tool-parity Claude
Code row); context-bar.md relocated to docs/; CLAUDE.md inheritance
line generic; /r-context-audit no longer suppresses stderr
[Change] ROADMAP: 2026-08 item 4 built, item 5 first case ruled (keep the
dispatcher); Workflow-backed /r-build and the trigger-eval harness
queued for the next minor
[Change] rollback to 3.6.5 leaves ~/.claude/skills/r-* symlinks dangling (the
3.6.5 deploy has no prune) — remove with: rm ~/.claude/skills/r-*
(and ~/.claude/skills/reference)

RDF 3.6.5 — drop it on any repo

Choose a tag to compare

@rfxn rfxn released this 19 Aug 00:52

RDF 3.6.5 Release Notes

3.6.5

-- New Features --

[New] rfxn-workspace profile — opt-in org overlay (detect: []) housing
cross-project.md and comment-snapshot.sh; core stays generic
[New] node profile: plain package.json projects no longer detect as
minimal (package.json sole gate; suppressed when typescript matches)
[New] canonical/reference/ ships in claude-code (hash sidecars), plugin,
and agent-skills outputs; deploy symlinks ~/.claude/reference —
24 ../reference/.md links now resolve in installs
[New] doctor: content-drift covers reference/
.md; sync completeness loop
gains reference + governance
[New] tests/derfxn.bats de-rfxn regression suite; deploy.bats exit-code
and reference-symlink tests

-- Bug Fixes --

[Fix] subagent-stop.sh hardcoded /root/admin/work/proj fallback removed —
plugin users on other machines no longer get permission-denied
stderr per subagent stop; fallback is ./.rdf -> ~/.rdf/agent-feed.log
(new machine-global sink, size-capped at 100 KB / last 1000 lines)
[Fix] rdf init no longer writes rfxn artifacts into consumer repos:
cross-project.md (APF/BFD/LMD tables), proj@rfxn.com contact,
forced rfxn org and GPL v2 in SECURITY.md/CONTRIBUTING.md
[Fix] doc truth: README --tools advertisement removed, /r-init out of
bash fences, quickstart bash floor 3.2+ (was 4.1+), Pages links
absolute (README/ROADMAP/spec links were 404 on Pages)
[Fix] rdf deploy help now contains the hooks.json jq-merge how-to it
points to

-- Changes --

[Change] rdf deploy exits 1 when any item is skipped — established
~/.claude setups get a loud partial-deploy signal instead of a
silent exit-0 half-install
[Change] rfxn-machine migration is two-step: (1) 'rdf profile install
rfxn-workspace' then 'rdf generate claude-code && rdf deploy
claude-code' restores org governance at the machine level;
(2) per-project org reference (cross-project.md + the
Cross-Project Coordination CLAUDE.md section) needs 'rdf init
--type ,rfxn-workspace' per repo — /r-refresh
alone regenerates from the clean core set and drops it

3.6.4 — core-seam reliability

Choose a tag to compare

@rfxn rfxn released this 18 Aug 20:33

RDF 3.6.4 Release Notes

3.6.4

-- New Features --

[New] SessionStart state-bootstrap delivers ~/.rdf/state on plugin installs
(version-stamped) — the full pipeline now runs on the plugin tier
[New] doctor scopes: catalogs (agent/skill-meta integrity), state-helpers
(stale-copy FAIL) — 13 checks
[New] tests: strip/sync/bootstrap suites + deploy/doctor coverage (222 → 246)

-- Bug Fixes --

[Fix] rdf sync could truncate canonical agents to empty when the deployed
copy had no frontmatter — agents loop now guards like the commands loop

-- Changes --

[Change] one shared frontmatter-strip (rdf_strip_frontmatter) for sync +
doctor; generation fails when agent-meta.json misses an agent
[Change] upgrade note: run 'rdf deploy claude-code' once after updating a
checkout install — generate no longer refreshes ~/.rdf/state; add
--force if your deployed copies differ from source (backed up first)
[Change] state-helper delivery moved from generate (copy) to deploy
(per-file symlinks, auto-migrating identical legacy copies);
generate no longer writes under $HOME

3.6.3 — QA round-3 fixes

Choose a tag to compare

@rfxn rfxn released this 16 Jul 16:32

RDF 3.6.3 Release Notes

3.6.3

-- Bug Fixes --

[Fix] plugin-tier honesty: plugin-only installs (/plugin install rdf@rdf)
never receive the ~/.rdf/state helpers, so 10 state-backed commands
ran degraded with no disclosure — README Option A, quickstart, docs
index, and the parity doc now say so, and 9 canonical commands gain
graceful-absence guards at first helper use (3.6.2's state-helper fix
is hereby scoped: it applies to the symlink deploy path; plugin
parity is a tracked ROADMAP item)
[Fix] rdf-overhead.sh: the deployed ~/.rdf/state copy mis-resolved RDF_HOME
and returned wrong rules/lite figures (100/null instead of
2068/674); now recovers the checkout via the deploy symlink with a
warning fallback; 2 new BATS cases
[Fix] WORKFORCE.md: stale "RDF 3.1" title dropped; /r-plan's mandatory
challenge review shown (was bracketed as optional); /r-start removed
from the dispatcher arrow (it dispatches nothing); reviewer model
disclosed as opus (sentinel) / sonnet (challenge) here and in RDF.md
[Fix] production-context stat re-derived from git: "19 RDF releases in 19
weeks" → 26 releases in 18 weeks (README + docs index)
[Fix] quickstart truthfulness: rdf init requires an existing project dir
(documented); hooks.json is never auto-installed — the manual-merge
step is now documented in README/index/quickstart (jq was not the
real gate); demo-walkthrough artifact names session-scoped;
index.md inheritance order matches README; RDF.md risk row labeled
as the pre-RDF v2-era assessment

-- Changes --

[Change] ROADMAP: deferred claude-plugin state-helper parity (plugin
SessionStart hook + plugin-parity BATS suite — designed fix for a
seam that has broken three times via spot-fixes)
[Change] tests 220 → 222 (rdf-overhead deployed-copy resolution cases)

3.6.2 — QA round-2 fixes

Choose a tag to compare

@rfxn rfxn released this 16 Jul 04:15

RDF 3.6.2 Release Notes

3.6.2

-- Bug Fixes --

[Fix] systemic state-helper paths: canonical commands/agents referenced
state/rdf-bus.sh, rdf-consistency.sh, rdf-lessons.sh by bare relative
paths that resolve only inside the RDF checkout — session-ID/tier/plan
machinery silently failed in every consuming project; all references
now use the deployed ~/.rdf/state/ location, and r-context-audit's
workspace-relative rdf/state/ paths are fixed the same way
[Fix] worktree scope-enforcement pre-commit hook was never deployed outside
the RDF checkout: rdf generate now installs it (and rdf-overhead.sh)
to ~/.rdf/state/; dispatcher and /r-build probe the deployed hook
first and warn+continue when absent
[Fix] framework.md: stale v3.1 title pin dropped, command counts corrected
17/14 → 21/16, phantom collect-spool.sh contract row removed (plan
Phase 12 Step 1 pulled forward); doctor doc-stats now guards
framework.md counts against future drift
[Fix] doctor: sync-symlink and install-mode checks honor RDF_TARGET so
doctor agrees with deploy on custom targets
[Fix] GitHub Pages: multi-tool-parity.md and memory-context.md had no
Jekyll front matter and no inbound links (unrendered orphans); both
now render and are linked from the docs index
[Fix] claude-plugin: frontmatter descriptions get the /rdf: namespace
rewrite; agent-skills r-build trigger names the plan-execution
orchestrator instead of the engineer

-- Changes --

[Change] runtime-trio staleness swept: quickstart, privacy, SECURITY now
list Claude Code, Codex, Antigravity CLI with Gemini CLI as the
legacy tier; profile registry core summary corrected to 5
reference docs
[Change] tests 217 → 220: state-helper/hook deploy coverage, framework.md
count-drift guard, RDF_TARGET install-mode probe

3.6.1 — QA-pass fixes

Choose a tag to compare

@rfxn rfxn released this 16 Jul 00:52

RDF 3.6.1 Release Notes

3.6.1

-- Bug Fixes --

[Fix] codex adapter: generated AGENTS.md carried a fabricated RDF-2.0 command
catalog (mgr, sys-, audit- — none exist); catalog now derived from
canonical/commands/*.md with a glob-derived regression test
[Fix] claude-plugin: command output now carries the intent-trigger
description: frontmatter — the 3.6.0 headline was previously true only
on the symlink-deploy path, not plugin install
[Fix] reviewer pass-structure docs: "4 adversarial passes ... performance"
corrected to the real 2-pass lite / 3-pass full ladder across README,
WORKFORCE, agent-meta (CC + gemini), 7 mode contexts, diagrams,
demo-walkthrough, r-review/r-audit; performance-MODE content preserved
[Fix] rdf init --tools: warns not-yet-implemented instead of silently
accepting; deploy: documented RDF_TARGET env var actually wired;
canonical r-start: maintainer-machine absolute path removed
[Fix] docs/multi-tool-parity.md accuracy: gemini {{args}} is flagged with a
NOTE (bodies are not translated); skills surface disclosed as the
10-command lifecycle set; AGENTS.md scoped as RDF-self documentation

-- Changes --

[Change] docs/specs/CURRENT.md: fold the missed 3.6.0 block; Adapters 5→6
[Change] README/RDF.md accuracy sweep: scripts 12→16, doctor 7→11 checks,
all 6 adapters in both architecture trees, migrate + claude-plugin
documented, canonical/reference/tiers.md link, first-class trio
framing (CC/Codex/Antigravity + gemini legacy) across 7 files
[Change] .gitignore: never-tracked adapter output dirs ignored so fresh
clones stay git-status clean

3.6.0 — Reach

Choose a tag to compare

@rfxn rfxn released this 15 Jul 23:48

RDF 3.6.0 Release Notes

3.6.0

-- New Features --

[New] agent-skills adapter: emits .agents/skills//SKILL.md (AAIF-compliant
name + intent-trigger description, first-sentence fallback) for a bounded
lifecycle+utility set — the ONE shared workspace surface Codex and
Antigravity CLI both read; rdf generate agent-skills + antigravity
(composite: skills + AGENTS.md); rdf deploy agent-skills workspace
symlink (--project-root)
[New] claude-code: intent-trigger description: frontmatter prepended to every
generated command (shared skill-meta trigger); canonical commands stay
frontmatter-free — enforced by a new governance contract test
[New] agents-md: AGENTS.md references .agents/skills/ for Codex/Antigravity
skill discovery
[New] tests: deploy/sync BATS coverage (deploy.bats — closes audit M6
install-surface gap), agent-skills.bats, doctor content-drift regression
[New] docs/multi-tool-parity.md: first-class trio (Claude Code, Codex,
Antigravity CLI) + frozen gemini-cli legacy matrix; {{args}} lossy edge;
deferred Antigravity surfaces (probe-gated)

-- Bug Fixes --

[Fix] gemini-cli (legacy tier): command prompts emitted as TOML ''' literal
strings — 15/37 generated .toml files failed strict TOML parsing on
canonical backslashes; {{args}} lossy-edge NOTE for $ARGUMENTS commands
[Fix] doctor content-drift: _hash_deployed_body strips only a LEADING
frontmatter block (body --- horizontal rules preserved) so
frontmattered commands no longer false-FAIL; repairs the latent
agent-body--- strip bug
[Fix] sync: command reverse-flow strips frontmatter before writing canonical;
unclosed-frontmatter guard skips (warns) instead of blanking canonical
on a malformed emergency edit

-- Changes --

[Change] Gemini CLI demoted to a frozen legacy tier (serves enterprise only
since 2026-06-18); Antigravity CLI is the locked transition target
and joins Claude Code + Codex as first-class citizens
[Change] doc-stats: adapters 5→6 across README badge/footer and docs/index.md

RDF 3.5.1 — QA-pass fixes

Choose a tag to compare

@rfxn rfxn released this 15 Jul 21:39

RDF 3.5.1 Release Notes

3.5.1

-- Bug Fixes --

[Fix] rdf-consistency: legacy plans lacking a Tier: preamble marker now
downgrade File-Map coverage breaks from block (exit 2) to warning (exit
1) with a one-line notice; marker-bearing plans keep strict exit-2 —
4 of 8 committed pre-3.5 plans no longer hard-block the gate
[Fix] rdf-consistency: File-Map rows packing multiple paths into one cell
register every path (path column only), clearing false "Phase file X is
not in the File Map" errors (the 3.4 plan's release-bundle row)
[Fix] doctor --all: strip the trailing slash the project glob appends before
the normalized-symlink match in the sync check; removes false "points to
wrong target" WARNs for correctly-configured projects (pre-existing
since 3.0)
[Fix] docs/memory-context.md: resolve the self-contradiction on native-memory
writes — MEMORY.md is the one deliberate exception via the .rdf/memory
symlink; README footer scripts count 12→16; docs/specs/CURRENT.md 3.5.0
fold backfilled; 3.4 plan File Map completed (tests/Makefile);
governance-contracts.bats SC2016 header disable restores lint baseline

-- Changes --

[Change] doctor doc-stats: verify README.md footer banner (all six counts) and
WORKFORCE.md primitives line (A/B/C vs live + D == A+B+C) against
live filesystem counts, incl. a new scripts count from
canonical/scripts/*.sh — the drift class QA found is now guarded

RDF 3.5.0 — Scale: tiers, clarify, consistency, living specs

Choose a tag to compare

@rfxn rfxn released this 15 Jul 20:15

RDF 3.5.0 Release Notes

3.5.0

-- New Features --

[New] task-class tiers (full/quick-plan/bugfix): reference/tiers.md single
source of truth (definitions, heuristic signals, min(scope_gate,
tier_cap) gate caps, security floor); rdf-bus.sh
rdf_set_active_tier/rdf_active_tier/rdf_clear_active_tier session pointer
parallel to active-plan — a resolved plan Tier: marker is
authoritative; defaults to full everywhere (legacy plans unchanged);
plan-schema Rule 10 optional Tier: preamble marker
[New] /r-spec tier selection (--full/--quick/--bugfix, heuristic suggestion the
user confirms, bare Enter → full; first setter — /r-plan inherits) and
Phase 1.5 Clarify de-ambiguation micro-gate before Brainstorm (<=5
targeted questions, scaled by tier, skipped for bugfix)
[New] /r-plan tier flow: stamps Tier: into the plan preamble; quick-plan
condensed single-artifact path (-quickplan.md); bugfix failing-test-first
<=2-phase path (schema-only validation, sentinel-lite at build time)
[New] /r-build consistency micro-gate: state/rdf-consistency.sh cross-checks
spec↔plan↔tasks — File-Map↔phase coverage (multi-path Files parse, Phase
0 counted) and phase count are structural blocks (exit 2); spec-goal /
Goals: field / tier-size coverage warn (exit 1); --warn-only
downgrades a block with a stated reason
[New] docs/specs/CURRENT.md living current-state spec; /r-ship Stage 3e folds
each shipped plan's outcome in as a dated ADDED/MODIFIED/REMOVED delta
(user-approved, skipped on bugfix); r-ship clears the tier pointer
alongside the active-plan pointer

-- Changes --

[Change] dispatcher applies max(security_floor, min(scope_gate, tier_cap)):
quick-plan caps Gate 3 at sentinel-lite and skips the end-of-plan
sentinel; bugfix runs Gate 1 + regression-only sentinel-lite; full
unchanged; the cap only lowers gates and never below the security
floor — scope:sensitive or a security-indicator file keeps Gate 2 +
sentinel-full regardless of tier
[Change] governance-contracts grew 4 tier/clarify/living-spec contracts;
tests/scale-ceremony.bats (11 tests) covers the tier + consistency
surface incl. the File-Map-less graceful skip

RDF 3.4.0 — Memory & Context

Choose a tag to compare

@rfxn rfxn released this 15 Jul 19:20

RDF 3.4.0 Release Notes

3.4.0

-- New Features --

[New] session-end-capture.sh — SessionEnd command hook: inline git-only snapshot
appended to .rdf/work-output/session-log.jsonl (the journal /r-start
reads) plus a session-end-.json cache for /r-save; records sessions
that never run /r-save; no model work, always exits 0, no-op outside a
git repo, jq-optional, session_id sanitized (stdin discriminator is
reason per platform docs — spec's trigger corrected)
[New] hooks.json matcher-less SessionEnd entry (5s timeout) composed on top of
the 3.3.x PreCompact/SessionStart-compact entries (left byte-identical);
memory-context.bats (4 tests) covers append, non-git no-op, jq-absent
degrade, path-traversal sanitization
[New] state/rdf-lessons.sh index — assigns stable [] IDs to
lessons-learned.md bullets ( markers, idempotent backfill)
and writes a <=400-byte ~/.rdf/lessons-index.md; single-writer flock
guard, POSIX-portable sed, jq-independent; scan subcommand stubbed for
the consolidation phase
[New] session-start-inject.sh — read-only SessionStart hook injecting the
lessons ID-index as additionalContext; skips resume, re-injects on
compact (intended), 400B cap bounds per-spawn cost, no-op without
jq/index; second matcher-less SessionStart hooks.json entry (5s)
[New] state/rdf-overhead.sh — measure RDF's always-loaded context overhead into
default / --rules / lite figures (bytes/4 estimate); hooks.json reported
only under excluded (runtime config, never model context); scoped
language rules counted dormant; jq-independent; tests/overhead.bats
(8 tests) incl. a README drift guard
[New] T3 context-scoped governance rules: cc_generate_rules emits
output/rules/.md; language profiles get a paths: frontmatter
block derived from registry.json detect globs, core stays unscoped so it
survives compaction (spec §4.3); rules-deploy.bats (6 tests) guards the
rules generation surface
[New] docs/memory-context.md — native-memory vs RDF division of labor (spec
§4.5): native owns conversational memory + MEMORY.md loading, RDF owns
the delta (lessons, insights, governance, session journal); RDF writes
nothing into ~/.claude/projects//memory/
[New] rdf-lite minimal deploy variant — rdf generate claude-code --lite emits
condensed core governance (profiles/lite/governance-lite.md, ~574 tokens)
as rules/core.md, ships only the lifecycle command set, skips hooks;
always-loaded footprint ~674 tokens, under the 1000-token budget;
default (non-lite) generation byte-identical; rdf-lite.bats (6 tests);
doctor doc-stats excludes profiles/lite (deploy source, not a governance
profile)
[New] rdf-lessons.sh scan — deterministic token-Jaccard dedup (>=50%) plus an
order-independent opposing-polarity contradiction heuristic ([25,50%));
flags only, never mutates, jq-optional; governance contract added:
consolidation NEVER auto-resolves a contradiction (anti-crystallization);
never-scope-core adapter contract relocated into governance-contracts
[New] rdf-state.sh --full emits a deterministic diff_categories object
(path-prefix counts: commands/agents/scripts/cli/adapters/specs/docs/
other) so /r-save reads the classification instead of the model
re-classifying changed files by hand

-- Changes --

[Change] README/docs publish all three measured context figures: default deploy
~0.1K tokens, opt-in --rules ~2.1K, rdf-lite ~0.7K (674, bytes/4);
hooks.json (478) reported only under excluded, never model context
[Change] doc surface refreshed for the 3.4 feature set — RDF.md architecture
(hooks across PreCompact/SessionStart/SessionEnd, rules/ generation,
--rules/--lite, rdf-lessons.sh/rdf-overhead.sh), r-context-audit runs
rdf-overhead.sh, ROADMAP marks T3/auto-memory/context-cost/rdf-lite
delivered and references the 3.5 spec, WORKFORCE scripts total 14->16
(=59 primitives)
[Change] /r-save §1 consumes the SessionEnd cache via an RDF_SESSION_ID-first
selection rule (else newest unconsumed session-end-*.json, renamed
*.consumed on hit) and skips the rdf-state --full re-run on a hit;
reads .diff_categories for the diff summary
[Change] /r-save §3/§8 and /r-start auto-act on thresholds — MEMORY.md >=180
auto-runs the /r-util-mem-compact preview and surfaces the proposed
reduction; context >60% renders a fresh-session/half-clone directive
instead of a passive warning; /r-start surfaces the indexed-lessons
count
[Change] deploy: opt-in rules/ symlink via --rules (rdf deploy / rdf generate
--deploy --rules); default off — no behavior change for existing
symlink users