RFC reference
This page mirrors the enriched RFC table from the M8Shift repository README. Treat the README on the published main branch as the data source: RFC numbers are permanent, statuses only change after code and documentation are merged and released.
Numbering discipline
RFC numbers are assigned in creation order, not implementation order. For example, RFC 010 was authored before later runtime companion RFCs, but its retained patterns shipped across v3.21 to v3.26.
Drafts are not shipped releases
Unmerged work does not count as implemented. RFC 029 (Companion workboard) and RFC 030 (Tamper-evidence) remain draft here until the release that implements them is merged and published.
| № | RFC | Description | Status | Implemented | How |
|---|---|---|---|---|---|
| 001 | Roster | Configurable agent roster (early design) | historical / superseded | v2.1.0 · 2026-06-22 | superseded by RFC 002 |
| 002 | N agents | N-agent relay with one shared pen | historical / implemented | v2.4.0 · 2026-06-23 | one-pen routing (append --to) |
| 003 | I18n packs | Build-time language packs (EN core + 8) | shipped | v3.0.0 · 2026-06-23 | AST injector m8shift-i18n.py |
| 004 | Memory | Shared append-only memory ledger | shipped | v3.2.0 · 2026-06-23 | remember / recap, pen-free |
| 005 | Claim check | Advisory pre-claim overlap check | shipped | v3.3.0 · 2026-06-23 | claim --check, read-only |
| 006 | Tasks | Shared append-only task board | shipped | v3.4.0 · 2026-06-23 | task event-log, pen-free |
| 007 | Subturn | Sub-turn streaming proposal | rejected | — | rejected by adversarial panel |
| 008 | Worktree companion | Degree-2 worktree parallelism + serialized integration | implemented v1 | v3.5.0 · 2026-06-24 | m8shift-worktree.py; core LOCK as integration pen |
| 009 | Runtime companion | Local presence / inbox / progress / diagnostics | implemented v1 | v3.15.0 · 2026-06-25 | m8shift-runtime.py companion |
| 010 | Runtime patterns | Pattern filter: retained / rejected / deferred | accepted (filter) | v3.21–v3.26 · 2026-06-26 | 6 retained shipped; 13 rejected; 6 deferred → RFC 024–029 |
| 011 | Session history | Session history ledger + history | implemented | v3.7.0 · 2026-06-24 | M8SHIFT.sessions.jsonl |
| 012 | Contracts validation | Stage-4 contracts + read-only validation | implemented | v3.13.0 · 2026-06-25 | read-only validation surface |
| 013 | Hosted runtime control plane | Future hosted / runtime control plane | future / not impl. | — | optional layer outside the passive core |
| 014 | Provider management | Local provider / adapter registry | implemented v1 | v3.16.0 · 2026-06-25 | m8shift-runtime.py providers |
| 015 | Shared tree degree gt1 | True degree > 1 writes in one tree | rejected (research) | — | rejected for the core |
| 016 | Cooperative turn request | Cooperative baton request + operator steering | implemented | v3.15.0 · 2026-06-25 | core baton request |
| 017 | Stage6 integrations | Stage-6 closure: local integration layer | implemented | Stage 6 · 2026-06-25 | local layer; heavier integrations deferred |
| 018 | Agent runtime architecture | Local scaffold: roles / workflows / approvals / reports | implemented v1 | v3.16.0 · 2026-06-25 | m8shift-runtime.py scaffold |
| 019 | Input neutral patterns | Neutral runtime-pattern inventory | curated input / not impl. | — | reference for future RFCs |
| 020 | Headless runner hardening | Reference runner: validation / dry-run / timeout / audit | implemented v1 | v3.16.0 · 2026-06-25 | examples/headless_runner.py |
| 021 | Pause resume | Stable PAUSED state for idle sessions | implemented v1 | v3.17.0 · 2026-06-25 | core PAUSED + pause / resume |
| 022 | Session reports | Session reports + decision ledger | implemented v1 | v3.18.3 · 2026-06-26 | report generated from existing turns |
| 023 | Agent token footprint | Cut the mandatory protocol read | implemented (Phase 1) | v3.19.0 · 2026-06-26 | split protocol.md / protocol-reference.md |
| 024 | Doctor split | Split core doctor vs companion diagnostics | baseline impl. | v3.27.0 · 2026-06-26 | core doctor owns relay hygiene; runtime owns sidecar diagnostics |
| 025 | Runtime status composition | Runtime status over core + sidecars | baseline impl. | v3.27.0 · 2026-06-26 | status-runtime [--brief] [--json] |
| 026 | Sidecar retention | Bound / prune runtime sidecar ledgers | shipped | v3.34.2 · 2026-07-01 | retention apply / policy show; path-safety hardened (#73) |
| 027 | Notifications | Local notifications for handoffs / stale turns | shipped | v3.32.0 · 2026-07-01 | notify: stdout/file/bell/OS/hook tiers |
| 028 | Headless command templates | Safe headless command templates | shipped | v3.33.0 · 2026-07-01 | provider examples, argv_by_platform, strict run-plan validation |
| 029 | Companion workboard | Richer companion workboard outside core | draft | — | deferred from RFC 010 |
| 030 | Tamper evidence | Hash-chain tamper-evidence for relay records | draft | — | detection/warning only |
| 031 | Decision traceability | Tool-independent decision records | shipped | v3.31.0 · 2026-07-01 | forge/git/ADR fallback |
| 032 | Tiered delegation | Capability-tiered delegation charter | Phase 1 shipped | v3.35.0 · 2026-07-01 | advisory route recommend |
| 033 | Context economy | Compact task packets and verification-first context discipline | draft | — | RFC file is draft; elements shipped separately (the verification-first raw-proof rule in v3.51.0, compression records via RFC 037) |
| 034 | Companion adapter interface | Identity-pinned argv-only companion adapters | shipped | v3.36.0 · 2026-07-01 | RTK visible + fail-closed |
| 035 | Interactive listener gap | Keep listeners armed around PAUSED/resume | shipped | v3.28.0 · 2026-06-26 | quiet wait/resume behavior |
| 036 | Token-window exhaustion | Runtime headroom guard | shipped | v3.28.0 · 2026-06-26 | m8shift-runtime.py headroom internal guard, not the external Headroom adapter |
| 037 | Agent context compression backends | Digest-based context compression + optional backends | Phase D follow-up shipped | v3.40.0 · 2026-07-02 | builtin + RTK + explicit/opt-in headroom_ext |
| 038 | Multi-session | Named parallel relay sessions | draft | — | future companion/core namespace work |
| 039 | Model/task routing | Capability-first routing recommendations | Phase 1 shipped | v3.35.0 · 2026-07-01 | read-only route recommend |
| 040 | AI session usage monitoring | Usage snapshots + cooperative cooldown holds + live-verified usage adapters | Phase 4 implemented and hardened | v3.48.0 + v3.53.0 + v3.56.0 + v3.57.0 · 2026-07-11 | Phase 2: usage init/adapters/snapshot/status + guard/watch/wait/resume (advisory, fail-open, no force/auto-resume). Phase 3: opt-in real adapters, aggregate-only bounded jsonl_scan, ratio-native quota, and an opt-in budget bridge. Phase 4: four disabled-by-default Claude+Codex adapters and mutation-verified privacy/fail-open contracts. v3.57.0 live-verifies and hardens both official paths: Claude top-level five_hour/seven_day used-percent windows with aware reset normalization, and Codex account/rateLimits/read over held-open stdin with a bounded daemon-reader deadline. v3.58.0 adds a fifth disabled scaffold entry: the opt-in tokscale spend example (#103) — spend-only local_estimate fixture, bounded tri-state token reader, hard never-submit boundary. |
| 041 | Agent skills | Reusable multi-agent competency definitions | amended — open format | v3.58.0 · 2026-07-12 | bespoke skills/<id>.md + index.json superseded by the open Agent Skills format (agentskills.io); shared skills/ dir with RFC 050; tracker #83 |
| 042 | Compression-backend routing | Hybrid builtin/Headroom routing (evidence-gated) | design + Phase B | v3.41.0 · 2026-07-02 | signals plumbed; auto-route gated on measurement (#84) |
| 043 | Routing principle | Unify the routing skeleton of 037/039/042/032 | draft (design-only) | — | one canonical 6-stage pipeline; no behavior |
| 044 | Companion install | Version-locked companion install at init | shipped | v3.44.0 · 2026-07-03 | init --companions / --with-* / --full / --companion-source; idempotent, no-clobber, atomic; .m8shift/kit.json + doctor kit checks |
| 045 | Module reference | One reference page per shipped module | shipped | v3.44.0 · 2026-07-03 | docs/en/modules/ — 7 pages: Mermaid ownership diagrams, command tables, tagged examples, drift test |
| 046 | Interactive/headless modes | Execution-mode distinction + project identity | Part 1 shipped | v3.45.0 · 2026-07-03 | status / watch show project name + cwd + root; status-guard in the protocol core; runner install next |
| 047 | Headless liveness | Runner final-state enforcement + listener lifecycle + host-wake observability | implemented + slice 2 | v3.46.0 + v3.47.0 + v3.59.0 · 2026-07-12 | Authorship-primary classification + claim --refresh (v3.46.0); listener lifecycle companion with OS backends, resume-working retry, 9 doctor findings (v3.47.0). v3.59.0 (#108 slice 2): additive listener capability fields (backend_configured, can_invoke_agent, survives_parent_exit, last_successful_run — ALIVE keeps meaning process residency), TTY-only waiter notice, and a fail-open stale-AWAITING advisory (300 s default, doctor --stale-after, equal-to-threshold is not stale) |
| 048 | Adoption discipline pack + local update | Agent pack + adoption health diagnostics + source-driven update | implemented | v3.49.0–v3.50.1 + v3.55.0 · 2026-07-08 | M8SHIFT.agent-pack.md, compact anchor floor, adoption doctor findings, update --target --source, stale-banner baseline hotfix; v3.55.0 (#60) adds the default runner component — refreshes installed watch-status.sh/headless_runner.py with sha256-proven no-clobber + target path-confinement (refuses symlinked-ancestor escape), plus read-only doctor --source runner.stale/runner.manual_review_required findings |
| 049 | Holder liveness + stale-claim hardening | Separate holder liveness from pen TTL; force-claim cannot collide with a live holder | implemented (PR A+B+C) | v3.57.0 · 2026-07-11 | PR A: protective heartbeat, audit-only refresh, two-phase stale recovery and audited live override. PR B: listener-produced liveness + early refresh while a child lives. PR C: advisory worktree ownership sidecars, explicit takeover, per-id locks, generation-nonce ABA defense, and durable takeover ledger. |
| 050 | Manual multi-agent specialists | Manual-trigger specialist profile of RFC 032; specialists are open-format Agent Skills | implemented — Phase 1+1b | v3.58.0 · 2026-07-12 | skills/ seeds (one per lane, no executable payloads), foreign-loader safety contract for the mutating lane, advisory doctor skills.* validation (fail-open, never gates), wiring walkthrough in examples/; Phase 2 runtime indexing remains future |
| 051 | Usage advisory in the core display | Read-only usage line in core status/watch, fed by the companion sidecar | implemented + amendment E | v3.54.0 + v3.55.0 + v3.57.0 · 2026-07-11 | Echo-only, byte-identical when off; companion decision_window; TOCTOU-safe, bounded, sanitized and fail-open. v3.55.0 (#59) adds raw consumption. v3.57.0 (#106) unifies every plausible provider window with consumed percentage + reset, field-level degradation, deterministic caps, and the existing single-window fallback. v3.59.0 (#107): explicit last-known fallback — a transient empty snapshot falls back to the newest usable one, marked last_known: true in public JSON, em-dash byte-identical when nothing usable exists. |
| 052 | Project compartmentalization & data hygiene | Cross-project isolation invariant + data-hygiene lint | implemented (PR1–PR4) | v3.56.0 + v3.57.0 · 2026-07-11 | PR1: path hygiene and agent-floor compartmentalization. PR2: confidential out-of-repo denylist + scrub-check hooks. PR3: opt-in anchor hygiene. PR4: mechanical one-project session binding with ambiguity refusal and path disclosure redaction. v3.59.0: activation path documented (core.hooksPath + denylist + CI secret backstop), scrub-check --range + pushed-range pre-push scanning (seconds, not minutes), and a security.anti_leak_gate_dormant doctor advisory so a shipped-but-unarmed gate is visible. |
| 053 | Shared rules and governed habits | Governed project-local normative rules distinct from memory/skills/preferences | draft | — | quarantine→candidate→proposed→active lifecycle, ≥2 human-scrutinized evidence + human validation, reserved-authority never-list, optional m8shift-rules.py companion |
| 054 | Pre-exhaustion checkpoint and session rotation | Provider-aware checkpoint and operator-confirmed fresh-session rotation | draft / design only | — | extends RFC 036; bounded resume packet, no UI automation |
| 055 | Wait-on-operator holder state | Explicit held-pen marker while blocked on the operator | draft / design only | — | liveness governs; distinct from PAUSED and AWAITING |
| 056 | Self-declared agent model provenance | Additive model attribution in LOCK, turns, snapshots, and dashboard | implemented | 2026-07-13 | M8SHIFT_AGENT_MODEL (#43); explicitly unverified and never routing authority |
| 057 | Index-accurate checksum manifest | Refresh checksummed staged paths from Git-index blobs | implemented | 2026-07-13 | pre-commit refresh after pen guard (#51); pre-push remains backstop |
| 058 | Go-forward RFC discipline | Same-PR RFC policy plus RFC-index integrity checks | implemented policy/tooling baseline | 2026-07-14 | advisory doctor and pre-commit findings (#56) |
| 059 | Terminal colour capability | Tiered truecolour/256/ANSI-16/plain semantic dashboard rendering | implemented | 2026-07-14 | colour is redundant; frame width is invariant (#50) |
| 060 | Adaptive terminal geometry | Real-width flex tracks, exact-height activity viewport, and immediate resize redraws | implemented | 2026-07-14 | no mode flag or width cap; 120-column baseline is stable (#55) |
| 061 | Bounded adaptive activity provision | Parameterized snapshot history, capped viewport, true turn positions, and a visible buffer edge | implemented | 2026-07-14 | default 8; consumer limit capped at 200; no archive read (#61) |
| 062 | Listening ends only at DONE | Any halt (incl. holding the pen, PAUSED, a denied action) suspends acting, never listening | implemented | 2026-07-14 | keep a waiter armed until DONE; DONE is the only state that ends listening (#73) |
| 063 | On-demand expanded activity reader | Toggleable, word-wrapped full done-text blocks fetched by immutable turn number | implemented | 2026-07-14 | e toggles; ↑/↓ selects blocks; ←/→ pages text; status snapshot stays lean (#63) |
| 064 | Effective-work and non-work time accounting | State-duration accounting for effective work vs awaiting, paused, idle, and unknown time | accepted for implementation | 2026-07-14 | WORKING proxy; honest partial retroactivity; one primary work item per window; permanent global TIME strip |
| 065 | Ticketed, committed, and pushed delivery | One forge ticket and remotely recoverable Git history for every intentional change | accepted / implemented | 2026-07-14 | advisory offline reminders; named role-based forge gateway (#72, finalization #74) |
| 066 | Asymmetric solo advance | Bounded solo progress during an explicit peer absence, followed by mandatory deferred reconciliation | accepted / design-only | — | signed project policy; reversible branch-local work; returning peer may require follow-up corrections; implementation deferred (#155) |
| 067 | Detached, vendor-neutral CLI agent orchestration | Passive relay + runtime control plane + generic runner + per-CLI adapters (launch/stop/resume/health) surviving an IDE crash; Codex/Claude phase 1, Gemini/Mistral Vibe later | accepted / design-only | — | no behavior active; relay stays degree-1 and passive; D1–D16 accepted; delivery phased through RFC 073 (#157) |
| 069 | Top-owned incremental status fold | In-memory verified tail fold for the long-lived interactive dashboard | implemented | 2026-07-15 | one-shot status stays full; frozen snapshot v1 and RFC 064 preserved; every invalidation falls back to the full oracle (#79) |
| 070 | Provider-pinned model launch | Fail-closed per-agent model pins compiled into managed provider argv | implemented | 2026-07-15 | Codex/Claude adapters (#86); RFC 056 provenance stays self-declared/unverified |
| 071 | Pen-guarded live roster addition | Add one exact routing identity without resetting or rewriting relay state | implemented | 2026-07-15 | holder-only live pen (#89); anchors remain manual and untouched |
| 072 | Exact-identity fleet bootstrap | Bootstrap listeners and schedule verified isolated jobs | implemented — slices 1–6 | v3.61.0 · 2026-07-16 | O1–O6 (#85): fleet plan/health/apply/reconcile/stop/resume + immutable fleet jobs submit/assign/attempt/integrate; explicit done criteria + shell-free verification recipes (provider exit alone never completes a job); at most two isolated producer worktrees; merge/handoff/drop serialized by the designated integrator; enrollment stays holder-attributed through core roster add |
| 073 | Adapter registry and detached durability | Deliver RFC 067 as adapter, durable-supervisor, live-provider, and routing slices | slices 1–2 implemented; slices 3–4 accepted | v3.61.0 · 2026-07-16 | Slice 1 (#65/#66): provider-keyed m8shift.agent-cli-adapter.v1 registry (launch_argv / stop / resume / health); Codex/Claude managed launch migrated byte-identical; Gemini validated stub. Slice 2 (#65): fleet supervise --detach durable control plane — schema-versioned fsync + atomic-replace store under .m8shift/runtime/fleet/, PID start-identity reconciliation (adopt exact match / restart missing lanes once / defer-unverified on a transient probe failure / fail-closed needs_reconciliation), SIGTERM-clean shutdown, stale-pid takeover, launchd/systemd/Windows-service seam with the weaker local tier reported explicitly. Slices 3–4 (live Gemini + native resume; #59 routing-matrix extension) accepted, not shipped |