v1.5.0 — The Substrate
v1.5.0 — The Substrate
The full 1.5 substrate ships clean. Four new MCP tools, a drift-detection + orchestration library, a permanent Doc Gate CI shield, and the receipts to prove it all worked.
New MCP tools (4)
refresh_fafm— explicit.fafmmemory-layer re-grounding. Built for Grok, by request. Spec source: Grok-1 Rounds 1+2+3 (2026-05-30).refresh_blend— baked-in two-intensity refresh (Cmd+R / Cmd+Shift+R analog). Both layers always fire;modeonly affects fafm intensity.faf_orchestrate_recommendation— heavy orchestrator composing drift detection + CheckID + repeat-offender + take-a-hint + refresh history into a structuredRecommendation. Advisory only, never auto-fires (subordinate-not-daemon). Writes a receipt every call. Spec source: Grok-1FAF-DRIFT-DETECTION-SPEC §9.5 + Appendix C.faf_get_orchestration_policy— pure introspection of the effective policy without running the orchestrator. The quietest tool in the substrate. Spec source: Grok-1 Round 2 follow-up.
Library substrate
detectFafmDrift()— repetition-rate gauge for.fafmcheckId()— mechanical cross-stamp contradiction check (5 cross-checks C1–C5)RepeatOffenderTracker— persistent drift-prone slot indexevaluateTakeAHint()— temporal escalation ladder (none/light/hard/block)RefreshReceiptsLog+RecommendationReceiptsLog— append-only audit trails
Quality bar
- 509 tests / 0 fail / 1,550 expect() calls across 24 files
- 7 canonical types in
src/types/(single source of truth) + 10 compile-time shape assertions - 11 WJTTC shields (BRAKE/ENGINE/AERO/TYRE/PIT per component)
- Doc Gate 1.5 — permanent CI shield via
CheckIDagainst THIS repo's stamps every CI run - 🏆 TROPHY 100% (15/15 slots) on
project.faf
Bugs caught during the ship (none escaped)
8 bugs caught by the test shield + 1 caught by substrate dogfooding itself (#104 — refresh_faf was reading the wrong .faf for months; its WJTTC tests never exercised the no-path branch). Same pattern swept across handleFafStatus / Score / Init / List (PR #108).
Pubpro pre-publish catches
project.faf:33embedded-colon YAML break (would have failed FAF Gate)- Windows
handleFafList' '.repeat(-1)crash (pre-existing, surfaced by new tests) - Tool-count cross-stamp drift (README 59 vs project.faf 55, caught by
faf sync)
Hosted/local split (unchanged for v1.5)
- Hosted (
mcpaas.live/grok/mcp/v1) — WASM-pure subset only:refresh_faf+ scoring + validation - Local (
bunx grok-faf-mcp) — full capability including all 4 new tools
The honest split is intentional. Hosted = fast, auditable, WASM-pure; local = full capability including filesystem.
Receipts
13 PRs merged in the substrate arc (#93 → #105) + 6 PRs in the finishing pass (#106 → #111). 195/195 CI runs green (one Linux bun --isolate epoll flake cleared via re-run). Subordinate-not-daemon throughout.
FAF defines. MD instructs. AI codes.