Files
dotfiles/claude/memory/session-ledger-2026-04-18.md
T
David F GliddenandClaude Opus 4.7 e9e772d69c memory: bundle accumulated 04-17/26 + lock ARC about-page architecture
Safety checkpoint before deep-audit Phase 0 of the ARC repo. Steward-authorized
commit-everything for rollback safety.

ARC architectural locks (2026-04-26 evening):
- Path 1 enfilade structure (separate Colophon and Lex items)
- 8-door enfilade locked: Colophon · Lex · Framework · Vignette · Attention ·
  Chamber · Tools · Now (+ Bio quiet link)
- Adsum and threshold-hic as two distinct texts on the reflowed About page
  (steward verbatim: "They are certainly not the same text")

ARC consolidation pass (canonical tracker project-arc-rework.md, +~700 lines):
fold 04-23 evening (Norris read), 04-24 (lex-method authored, posture cluster,
§XII Sidenotes, ARC CLAUDE.md cleanup), 04-25 (marks cluster, colophon-at-scale,
full Vico/Harrison lex-chain), 04-26 (chamber-library walk, cluster scaffolds,
canonical-tracker discipline surfaced).

Sibling-file integration: four 2026-04-26 frame files folded into the canonical
tracker (Integrations A/B/C/D) with INTEGRATED redirect notices retained as
audit trail.

New durable feedback memories:
- feedback-canonical-workstream-tracker-discipline (umbrella drift surfaced
  2026-04-26 by steward; proposes /wake-up + /wrap-up amendments)
- feedback-catalogues-stale-walk-trees (steward feedback on chamber-library
  catalogue currency)

Implementation plan drafted for the coming week: Phase 0 deep audit → Phase 5
cleanup, with steward additions on second pass (deep audit; Chamber v1 as own
browsable archive; clean rebuild of cluster sources rather than moving test
artifacts as canon).

Also bundled (untracked accumulation since 04-17):
- ~24 session memory + ledger files for 04-17 through 04-26 work
- ~10 feedback memories (BMF + ARC + working-method)
- 5 project memories (lex-as-method, strunk-white queue, plus today's four)
- 4 user memories (duality-rules, formation-practice, foundation-work, humic-layer)

Steward-side modifications also in this commit: ~/CLAUDE.md, bin/bmf-start.sh,
open-tasks.md, project-focus-april-may.md, session-2026-04-17 — all
pre-existing, not from today's session.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 14:52:14 +02:00

86 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: Session Ledger 2026-04-18
description: Practice-of-return ledger maintained by /symmetria — returns, open horizons, recalibrations, authorization moves, sub-agent dialogues, bypasses.
type: feedback
originSessionId: e55939da-2fa7-4e18-a2e5-8f8fd3a8c607
---
# Session Ledger — 2026-04-18
## Returns
- **~10:25** — I named the thread-shift as if the session had re-pointed; steward corrected: the governance-substrate exchange was "just on my mind this morning," a thread caught before it slipped, not a redirection. Original pulling thread (Ethics of the Reply publication — Hakyll vs. typography lever) is restored. Name: *when the steward catches a thread in peripheral time, that's not a re-pointing of the session; the held thread remains the held thread.*
- **~10:45** — Was about to surface a URL-structure judgment call on Hakyll versioning (canonical URLs `/foo.html` vs spec `/essays/foo/`). Before drafting the question, checked yesterday's staging README — line 63 already commits to canonical-unchanged + prior-versions-at-path-segment. *The question was answered yesterday; I almost duplicated the work by re-asking it.* Name: *before surfacing a judgment call, check whether prior work has already resolved it. The staging README is the canonical record of yesterday's decisions.*
- **~15:30** — Ran `make rebuild` to verify chamber voices archival + colophon cleanup, without knowing that `make build` auto-deploys to CloudFlare Pages + GitHub mirror. The archival + cleanup went live BEFORE I committed them locally. The deployed state matches what the steward authorized (no rollback needed, content is correct), but the order was wrong — commits should precede deploy. Name: *before running any `make` target that could touch shared infrastructure, grep the Makefile for what it actually does. `make build` and `make rebuild` both cascade into `deploy-all`. There is no build-without-deploy target. For local-only verification, need to either add a new target or use `make serve` (which builds+serves but may also deploy — unverified).* Downstream impact: Ethics I & II go-live will also auto-deploy on `make build`. Surfaced to steward for explicit re-authorization before proceeding.
- **~evening** — Cited `#10 sequential dispatch` as a live constraint on vault ingestion duration, without checking its status. `gh issue view 10` showed CLOSED 2026-03-24 (~3 weeks ago). Also quoted `eta_minutes: 222` from connector_status as a time estimate, without knowing that ingestion rate is bursty (per steward: *"the ETA is not a good indicator because the rate will change with the burst ingestion pattern that seems to take hold"*). Name: *MEMORY.md captures state at a point in time; issue statuses and system behaviors observed weeks ago may no longer hold. Before citing an issue number as a constraint, `gh issue view`; before citing a BMF-reported metric as a predictor, check whether the observation pattern for that metric is already documented (memory + gh). Search before claiming; search before citing.* Promoted the bursty-ETA observation from incidental session-log note (session-2026-03-21 line 69) to canonical `feedback-bmf-ingestion-rate.md`.
## Open horizons
- **Path to publication — two-lever question** (carried from 2026-04-17). Hakyll infrastructure vs. typography application skill. Steward's call; do not pre-decide.
- **Drift patterns carried from yesterday's KG**:
- `register-import-without-checking-target-context` — ARC voice ≠ project-notes voice. Active if we touch ARC prose.
- `fact-fabrication-instead-of-let-me-check` — MemPalace protocol step 3. Active if we touch proper nouns or facts I'm not certain of.
- **Seb has shipped BMF Settings Phase 1 + 2** (plans 006 Phase 1/2, plans 007/008 drafted, pod.io analysis filed) while we were away. Sits beside the thread — may surface questions.
- **cm-world circle join COMPLETE** (evening 2026-04-18). After wrapper edit + kickstart + re-join, full circle participation is working. **Canonical identity: `cm-instance-6a3e981e01613a8c`** (member, tier: default, member_base_url: `http://10.53.211.6:3011`, joined 2026-04-18T16:13:35). Roster visible (5 members including clasp); `/v1/circles/:id/members` on new binary returns data (was 404 on old). Two items to flag Seb next session:
- **Ghost member entry** — `cm-instance-b7fab457a1d3c9d7` from the first (stale-binary) join is still in the clasp roster. Orphaned: no local BMF owns it, can't `/leave`. Needs server-side cleanup on Seb's end.
- **Handle routing not wired** — `GET /v1/circles/cm-world/members` returns NOT_FOUND; only UUID `50d99cc2-2860-48e6-b37e-c6c3686106e6` works. Seb's verification command assumed handle works.
- **Wrapper edits shipped** — `~/bin/bmf-start.sh` line 18 token → `bm_key_testkey1234567890` + added `export BM_DATA_DIR="$HOME/_Dev/BetterMemories.io/data"`. Dotfiles copy at `~/dotfiles/bin/bmf-start.sh` got the BM_DATA_DIR line too (token stays `bm_key_REDACTED` — established pattern). Steward to commit dotfiles change at wrap-up.
- **Old data orphaned** — pre-existing logchain at `~/_Dev/BetterMemories.io/data/logchain/` (Mar 6, pre-SQLite migration) is not read by the sqlite-lance binary. New binary created fresh SQLite security records, hence the new instance_id. Old logchain files are dead weight — can be archived/removed at some future cleanup. Not blocking.
- **CORRECTION (later in evening) — the "orphan" framing was wrong; real data lives at canonical path** — after BMF stopped cleanly, inspection revealed dual-write: our `BM_DATA_DIR` pin to `~/_Dev/BetterMemories.io/data/` diverted new-binary writes to the repo path, but the REAL historical data has always lived at `~/.capablemind/data/mindfabric-00/` and the new binary still wrote to it (per-module resolver bypass or ADR-021 fallback touching it at startup). Evidence:
- REPO `/sqlite/` (our pinned path): entity 233k, temporal 139k, vector 61k — small, today-only, holds the `cm-instance-6a3e981e01613a8c` circle membership
- CANONICAL `/sqlite/` (real home): entity **2.1 MB**, temporal **5.7 MB**, vector **2.1 MB** — substantive, from prior vault work (Apr 15 recall validation + subsequent incomplete ingestion steward referenced)
- **Lesson**: Seb's ADR-021 fallback behavior + per-module path logic means BM_DATA_DIR is NOT a simple monolithic override. Some modules respect it; some read legacy canonical paths. Don't assume one env var redirects all data. This is worth flagging to Seb as a `[HARDENING]` — "BM_DATA_DIR should be authoritative for all data, no backdoor paths."
- **Decision executed — clean consolidation complete** — archived both: `~/.capablemind/data/mindfabric-00.archive-20260418-incomplete` + `~/_Dev/BetterMemories.io/data.archive-20260418-rogue-pin`. Wrapper (live + dotfiles) now: `BM_DATA_DIR=$HOME/.capablemind/data/mindfabric-00` + `BM_INSTANCE_NAME=mindfabric-00`. BMF bootstrapped on PID 55326, healthy in 1s, fresh 4.1k security.sqlite3 created. **Single source of truth confirmed**: post-bootstrap, `~/_Dev/BetterMemories.io/data/` was NOT re-created by BMF — the combination of explicit `BM_INSTANCE_NAME` + archived legacy fallback targets stopped the per-module path-drift. This is the mitigation for the dual-write bug.
- **Canonical identity now: `cm-instance-7d2e19a417d694c6`** (joined cm-world 2026-04-18T18:17:13 via re-run of join script). **Ghost tally for Seb**: `cm-instance-6a3e981e01613a8c` (now orphaned). `cm-instance-b7fab457a1d3c9d7` already cleaned by Seb earlier.
- **Vault ingestion STARTED** — batch `import_1_mo4nvvyi`, `connector_status obsidian` = `running`, **9,836 total items estimated**. First ingestion on the new stack (SQLite+LanceDB main with post-migration perf fixes). Monitoring at steward's cadence. BMF launchd-managed, survives sleep/restart. Logs at `~/.capablemind/logs/bmf.stdout.log`.
- **Entity-relationships stage bottleneck diagnosed during ingestion** — at 550/9836 processed, rate had dropped 44 → 36 → 13 notes/min (steady downward, not bursty). Module health showed `entity` with 165 errors (every other module: 0-1). Log signatures: `[entity] Pipeline error (deferrable): entity pipeline timeout after 30000ms`, `[entity:pipeline] SLOW stages: resolve=30252ms, relationships=840082ms, persist=15ms (8 entities)` — the **relationships stage took 14 minutes** on one batch, 18 min on another (1080082ms / 9 entities). Entity events deferred on timeout, cursor held, retried — no data loss but significant backpressure. Hypothesis: relationships stage scales with graph density; as ingestion proceeds, batch duration may grow rather than shrink. Worth filing a GH issue if none exists. Vector subsystem is fine (`[vector:hybrid] bm25=10 vec=5 search=342ms`). Distinct from the bursty-ETA pattern in `feedback-bmf-ingestion-rate.md` — that was rate variance; this is persistent downward drift.
- **Circle-forward noise (non-blocking but present during ingestion)** — repeated `[circle-forward] failed to cm-instance-711269556f1e32ca: fetch failed` (Seb's BMF unreachable — may be offline or IP shifted); `POST https://kronos.capablemind.ai/v1/observe returned 504` and same for `atlas.capablemind.ai` (cloud endpoints Gateway Timeout). Local ingestion unblocked — circle-forward is async — but adds log noise and some CPU.
- **Symmetria pulse 2026-04-18 evening before diagnostic GH search** — alignment check after the session's error pattern. Concrete discipline for the entity-relationships diagnostic work: (1) search GH thoroughly before claiming no existing issue; (2) mark "scales with graph density" as hypothesis not claim — symptoms observed, mechanism not verified; (3) include verbatim log signatures so Seb can reproduce; (4) size artifact to one finding, not a treatise. Contamination watch: don't frame hypothesis as claim; treat "NOT failing" as `connector.failed=0` observation, not general health assertion. Alignment: aligned with these adjustments.
- **Entity-relationships diagnostic formalized** — GH search found #65 ("BMF untested for bulk ingestion on single-user laptop — compound failure pattern") as the right umbrella; not a new issue. Posted detailed comment: https://github.com/CapableMind-ai/betterMemories_app/issues/65#issuecomment-4274470826. Companion thinking doc shipped to `docs/thinking/David/l1-reliability/l1-ingestion-diagnostic-2026-04-18.md` as successor to the 2026-03-25 diagnostic, committed and pushed as `d70437c` on CapableMind-AI main. Both reference the 14–18min per-batch relationships stage timings, module health snapshot (entity error_count=165 vs 0–1 elsewhere), and unverified hypotheses. Steward leaving ingestion running overnight — rate stabilization (steady floor) vs continued drop will distinguish density-scaling hypothesis from steady-state-floor hypothesis.
- **Upstream pickup during rebase — Seb shipped BBF (Back Office Framework) work** — during `git pull --rebase` on CapableMind-AI, picked up two Seb commits: `5ea7f5d BBF spec v0.2: peer-infra model + enhancement-stack + Back Office reshape` and `241463a BBF spec reorg: specs/bbf/core + instances`. New body of work visible in `specs/bbf/`. Worth context-grounding for next session; BBF is adjacent to / building on Seb's recent circle-networking + plan-007/008 staff-keys work on betterMemories_app.
- Tunnel `10.53.211.6` is steward's Firewalla-or-equivalent VPN to Seb's LAN (confirmed 2026-04-18 evening). Script file from Seb's Messages: `/Users/davidglidden/Library/Messages/Attachments/77/07/44D97289-D079-43BD-A09C-63FF3635A43D/join-cm-world.sh` (not copied into our repo — it landed on main as `47be814` and is now at `scripts/join-cm-world.sh` after branch switch).
- Second clone at `~/bettermemories/` was created fresh by the script (main @ `decbdee`, built dist/, no BMF started due to port conflict). Can be deleted or kept as isolated build env.
## Confidence to recalibrate
- **Skills-I-co-designed** contamination carried forward.
- **Synthesis before exploration**: the steward's opening was `good morning /wake-up` — no directive yet. Wait for the lever question or a different opening. Do not volunteer implementation.
## Authorization moves
- **Ground-up model horizon planted in MemPalace** — steward authorized the seed-watering practice. Drawer `drawer_capablemind-thinking_seeds_afe475b555e5bbe2` filed with steward's verbatim intention + practice quotes. KG established: entity `ground-up-model-horizon` with 7 facts (status, surfaced_via Greenblatt article, two gaps, connects_to contamination-problem, davidglidden holds-intention, claude-code watches-horizon). Watering convention: new relevant drawer + `<topic> → waters → ground-up-model-horizon` KG fact on surface. Not a task — peripheral vision discipline.
- **First watering filed** — jurist-steward riff on architectural alternatives + Claude Code input (two sharpenings, one addition, one political angle, one calibration). Drawer `drawer_capablemind-thinking_seeds_e441d121ac050cb3`. Six KG facts added (substrate lessons, entry point, interpretability direction, political dimension, tiered-architecture serves horizon).
- **Second watering filed + three L2 directions added to open-tasks** — governance-substrate exchange produced three directions for when L2 resumes. Split authorized by steward: directions 1 (governance audit) + 2 (governance pattern KG) + small CD-03 exercise added to `open-tasks.md` Priority 1 section with pointer to seed; direction 3 (counterfactual instance on open-weight) held as horizon in seed, not promoted to open-tasks (not near-term). Drawer + 9 KG facts including `L2-architecture → mitigates-but-does-not-solve → contamination-problem` and `L2-parked-period → produced → scaffold-for-L2-operability`.
- **Ethics of the Reply I & II v2 go-live complete (3af43ca + deployed)** — first exercise of ADR-005 versioning regime in production. v1 snapshots moved from `_staging/versioning-prep/v1-snapshots/` to `content/posts/` via git rename (preserving history); v2 content from iA Writer translations overwrote canonical filenames. Local build verified before deploy (discipline maintained after earlier auto-deploy surprise). Both v2 canonical URLs render breadcrumb ("Begun Barcelona 2025-06-17 · Revised Barcelona 2026-02-08") and both v1 prior-version URLs render top banner ("You are reading a prior version... · Read current"). Staging README updated to historical note + pointer to remaining III-V + sequence-index work. Yesterday's pulling thread is resolved for I & II; remaining from it are deferred items (vignette, typography skill) and next-publication-session items (III-V + sequence-index). Five commits ahead of origin awaiting push authorization.
- **Dateline dedup fix shipped (e292593 + deployed)** — steward caught visible duplicate on live page: "Barcelona June 2025" appeared twice (inline italic from markdown + mono from template `.dateline` apparatus). Root cause: 2026-04-17 staging decision to include `*Barcelona, [Month Year]*` as inline paragraph (matched PDF) conflicted with ARC's layered apparatus (template renders dateline from frontmatter). Fix: removed inline paragraph from both v2 essay markdowns; staging README updated with explicit lesson for III-V translation ("do not include the inline dateline — template generates it"). Answered steward's serif-vs-mono version-stamp question: **serif is correct by design** — `.dateline` is mono (apparatus register) and `.version-stamp` is serif (editorial/bibliographic register) deliberately, per `_post.scss` and `_utilities.scss` comments. Two different kinds of thing.
- **Typography register — Pattern 3 adopted (2026-04-18)** — after investigation surfaced that the sans register was essentially vestigial (used only in two enfilade navs + an unused heading-base mixin), steward chose Pattern 3 (role-assigned families: serif content / sans wayfinding / mono apparatus) with accessibility as the load-bearing justification — family-change differentiation is more robust under visual impairment than within-family variation, and the steward (myopic, progressives) thinks of readers who need visual support. Decision canonically captured in `project-arc-rework.md` under the style-guide thread: Pattern 3 as the structural system, current font stack (EB Garamond + IBM Plex Sans + IBM Plex Mono) retained pending steward consideration, font-swap candidates surveyed (iA Writer Mono as lowest-regret mono swap; Alegreya Sans / Ysabeau as open-source humanist sans alternatives; Garamond Premier Pro + Cronos Pro as Adobe CC path; Fedra / Scala / Adelle / Brill as paid superfamily options). Counter-arguments held but not overriding (voice tension between Garamond humanism and Plex industrial register; architecture vs. continuous flow; designing-for-self bias). Cleanup implied but not yet executed: delete dead `heading-base` mixin; audit remaining nav surfaces for register consistency. Steward's canonical articulation preserved verbatim: *"serif for the body, sans for nav, and mono for apparatus seems to make things clear."*
- **Listing duplication fixed + nav elements to sans (13757a5 + deployed)** — steward caught that both versions of each essay appeared in `/essays.html` listing (2 essays × 2 versions = 4 entries). Root cause: `loadAll "content/posts/*.md"` matches both current and prior-version files; both have `class: essay`; both appeared. First fix attempt used Hakyll's pattern composition (`pattern .&&. complement priorVersionPattern`) and DIDN'T work — the glob/regex composition in loadAll pipeline behaves differently from expected. Fallback to Haskell item-level filter (`excludePriorVersions` helper using `parseVersionedFilename`) WORKED. Applied to all 7 listing aggregations. **Critical gotcha also caught**: editing `site.hs` alone doesn't trigger a Stack rebuild of the binary — must run `stack build` before `stack exec` to pick up changes. Name: *when site.hs changes don't appear to take effect, check that the binary was rebuilt (stack build) before blaming Hakyll cache.* Concurrently executed steward's nav-to-sans request (Pattern 3 cleanup): `.post-nav`, `.post-header .breadcrumb`, `.tags`/`.tag` all now use `$sans-family`. Reading Compass documented as a **Pattern 3 exception** (iconic Unicode symbols, not lexical nav — family-change doesn't differentiate symbol rendering). Inline comments in `_post.scss` and `_compass.scss` so the decisions read as deliberate, not drift. Pattern 3 is now *operative* in the codebase, not just declared in memory. 7 commits ahead of origin.
- **Breadcrumb made navigable + version-stamp register shifted (7540388 + deployed)** — steward noticed after the listing fix: *"Now I can't access the previous versions... should that be in the begun...revised area?"* My MVP had deferred the Prior Versions link (spec §7 item 7) without realizing the deferral left prior versions undiscoverable. Steward's instinct ran ahead of my spec interpretation: the breadcrumb *itself* is the access surface — each non-current date is a link — cleaner than the spec's separate "Prior versions" text. Implemented: every date in the breadcrumb except the last links to `/<slug>/v/<date>/`; scales to N revisions without code change. Steward's second question in the same exchange: *"this being nav it should be in sans maybe?"* Correct — version-stamp shifted from serif (editorial register) to sans (wayfinding register) per Pattern 3 consistency. Colophon edge case handled: pages outside `content/posts/` detected via `mslug = Nothing` and render plain (no broken links). Symmetria return logged: *MVP boundaries worth re-examining under steward's eye — my "deferred per spec" stance looked principled but was under-thought; the steward's design ran ahead of mine.* 8 commits ahead of origin. 5+-revisions threshold flagged for future switch to per-piece version-index page (spec §7 item 7 properly implemented at that point).
- **Letter-spacing harmonization + Reading Compass note + push (2332db9 + both remotes)** — steward noticed version-stamp looked slightly different-sized than post-header breadcrumb despite both being 0.875rem; diagnosed as residual `letter-spacing: 0.02em` from the old serif editorial register. Dropped at sans; both nav surfaces now harmonized visually. Reading Compass optical rebalancing (steward's observation: *"the reading compass glyphs are meant to be adjusted to each other to be optically equivalent sizes, but I never got that working"*) noted as deferred cosmetic task in `project-arc-rework.md` with three resolution paths (custom SVG / multi-device iteration / accept platform variance). **9 commits pushed to origin (git.skemantix.com) + github-backup mirror** — `42fbddd..2332db9`. Pattern 3 is now fully operative: code + deployed + pushed. All pre-commit checks passed cleanly throughout the session — no `--no-verify` bypasses since the hook fix landed.
- **Hakyll versioning infrastructure shipped (bb9e7eb)** — spec §7 items 1-5 implemented. `site.hs` +166 lines (Revision type, parseVersionedFilename, versionedPostRoute, renderCurrentBreadcrumb, renderPriorBreadcrumb, three new context fields); `templates/post.html` +7 lines (prior banner + breadcrumb after dateline). Uses `fromRegex` not glob — Hakyll glob doesn't support `[0-9]` char classes. Conservative policy adopted (renders only when `revisions:` or `edition_label:` present) to avoid stamping 170+ existing pieces without explicit authorization. First ARC commit without `--no-verify` since the hook fix landed. Verified: colophon renders new breadcrumb correctly; Ethics v1 correctly does not.
- **Style guide scope expanded** — filed as named thread in `project-arc-rework.md` with explicit dependency link to the projected typography application skill (layer 3 expressive decisions need style guide's declared positions as rule set; skill enforces the guide, guide defines what the skill enforces). Practice-first audit recommended over theory-first rewrite.
- **Launchd BMF architecture discovered (evening 2026-04-18)** — `launchctl list` shows `com.capablemind.bmf` (PID 1484) is the ACTIVE one, not `com.capablemind.bettermemories` (exit 1, likely loses port race). Active plist runs wrapper `~/bin/bmf-start.sh` which: sources `~/.capablemind/env` for `ANTHROPIC_API_KEY`; sets `BM_PORT=3011`, `BM_TEACHER_TRANSPORT=api`, `BMF_MCP_TOKEN=bm_key_7feb421ef8fd45e8`, `OLLAMA_HOST=http://127.0.0.1:11434`; `cd ~/_Dev/BetterMemories.io && exec node dist/index.js`. Full env from `ps eww`: also `BM_LOCAL_MODEL=qwen3.5:4b`, `BM_STORAGE_BACKEND=sqlite-lance`, `BM_TEAM_PSK=7727ce…`. Data dir is CWD-relative (logchain at `~/_Dev/BetterMemories.io/data/logchain/`, from Mar 6 — pre-ADR-021 default). Both plist files still exist in `~/Library/LaunchAgents/` — the unused `com.capablemind.bettermemories.plist` is cruft (and duplicates the port-binding intent). Cleanup opportunity: remove the unused plist.
- **BMF branch divergence discovered (evening 2026-04-18)** — `origin/trial/storage-sqlite-lance` (HEAD `3ea031c`) was merged into `origin/main` via `adf4743 Merge trial/storage-sqlite-lance into main`, and main is now 25 commits ahead with the circle-networking features Seb has been building: `24e0186 peer-mesh roster propagation + door pass issuance`, `bb390a2 Keystone forwards observations to circle peers`, `eb4cbd7 auto-establish pairings between circle members on join`, `ce34d7f createCircle accepts clasp_base_url`, `e52c222 roster broadcast authenticates via BMF_MCP_TOKEN`, `ce2ae30 /v1/circles/:id/leave bumps roster + broadcasts on clasp`, `da6bb5f GET /v1/circles/:id/members`, `47be814 one-command onboarding for cm-world circle members` (the script Seb forwarded), `8cf727d bulk-ingest scripts for Atlas docs + Kronos GH issues`, `bed8107 entity pipeline skips slots for cross-circle forwarded events`, `5b14db7 BM_CPU_PAUSE_THRESHOLD env for replay-coordinator`. Plus fixes #124 #133 #134 #135 #136 #149 #160 landed on main. `origin/main` HEAD = `5b14db7`. **Trial branch is effectively stale**; the "latest build" now means main. Our local `~/_Dev/BetterMemories.io` is on trial branch; need to checkout main + pull + rebuild before running join script. Memory-file state at time of discovery still said "branch `trial/storage-sqlite-lance`, 30 commits ahead of main" — MEMORY.md update needed.
## Sub-agent dialogues
## Bypasses