docs(soa): sync migration plan with cycle-ownership architecture (repo-in-sync)#537
Conversation
…o-in-sync) Operator-ratified architecture for the remaining BindSpace->SoA migration, tied into the plan before the code wiring's 5+3. Docs only, no source/test change. - Cycle ownership is per-mailbox + per-cycle, LE-contract-enforced on the tenant AND the envelope. The gap: per-row setters + BackingStoreWrite are cycle-blind (only consume_firing is cycle-aware). Target: every write carries/checks current_cycle. This is the next code deliverable (5+3-gated). - Multi-mailbox interlace is the target; backing()'s debug_assert(<=1) is W5-transitional. 16k mailboxes = 8MB, 16M = 8GB, linear; GUID-prefix-routed (classid.HEEL.HIP.TWIG -> ~1024 L3-resident prefix tables) so none goes inaccessible at scale. - Consumer fork: SoA-fit -> rotate onto SoA columns; doesn't-fit -> OGAR-driven classid->schema (ClassView/Template, Core-First #530/#533). Dissolves the 'all nine consumers migrate to one SoA' misframe. - OGAR + Template + Schema-version mandatory at the consumer/persistence boundary. - Noted #535 closed the with-engine break + the i4-codebook_index risk (F32 anchor). Plan ERRATA ADDENDUM 2026-06-18c; EPIPHANIES E-SOA-CYCLE-OWNERSHIP; AGENT_LOG entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
|
Warning Review limit reached
More reviews will be available in 22 minutes and 34 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThree ChangesE-SOA-CYCLE-OWNERSHIP Architecture Sync (Docs Only)
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 64b9bba8ba
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| > | ||
| > **ERRATA ADDENDUM (2026-06-18c — architecture sync, `E-SOA-CYCLE-OWNERSHIP`):** #535 shipped the `--features with-engine` fix + the **F32-17D bit-exact qualia tenant** (BindSpace-singleton-only, `#[cfg(with-engine)]`) — the migration's single exactness anchor — closing the i4-`codebook_index` risk noted just above. Converged architecture for the remaining migration (operator-ratified this session): | ||
| > 1. **Cycle ownership is per-mailbox + per-cycle, LE-contract-enforced.** No cycle-blind write; nothing buffers a stale/older mailbox. Today only `consume_firing` is cycle-aware — the per-row setters (`set_content/qualia/edge/meta/temporal`) **and `BackingStoreWrite`** are cycle-blind: that is THE gap. Target: every write carries/checks `current_cycle`, byte-explicit in the **tenant + envelope** LE contract (`SoaEnvelope::cycle()` / `current_cycle` / `last_active_cycle`). **This is the next code deliverable — 5+3-gated before code.** | ||
| > 2. **Multi-mailbox interlace is the target; `backing()`'s `debug_assert(mailboxes.len() ≤ 1)` is W5-transitional, NOT the design.** ~16k open mailboxes in parallel = ~8 MB (512 B each); 16M = ~8 GB — linear and trivial ("so what"). No open mailbox goes inaccessible at scale: addressing is the **canonical GUID prefix-route** (classid·HEEL·HIP·TWIG cascade → ~1024 prefix tables L3-resident; the trie binds the prefix, masked-load the basin-local tail). Per-cycle discipline is per-mailbox (each owns its `current_cycle`); interlacing is expected. |
There was a problem hiding this comment.
Correct the multi-mailbox memory budget
If this is meant to describe the actual mailboxes registered by ShaderDriver, the estimate is off by four orders of magnitude: driver.rs stores HashMap<MailboxId, MailboxSoA<1024>>, and MailboxSoA::new allocates three N * WORDS_PER_FP u64 planes (content/topic/angle) with WORDS_PER_FP = 256, i.e. 3 × 1024 × 256 × 8 = 6,291,456 bytes per mailbox before other columns. So 16k open mailboxes would be about 96 GiB, not 8 MiB. Leaving this in the migration plan can lead W5 to remove the ≤1 guard under an impossible memory budget; please either adjust the scale or clarify that this refers to a future lightweight handle rather than MailboxSoA<1024>.
Useful? React with 👍 / 👎.
Codex #537-P2: the budget conflated the 512-byte canonical node with MailboxSoA<1024> (a fixed 1024-row arena ~6 MiB each). 16k of the arena type would be ~96 GiB, not 8 MiB. Clarify: - 8 MiB / 8 GiB figures are node-granular (512 B node = key 128b + value 3968b); 16k nodes -> ~8 MiB, 16M nodes -> ~8 GiB. - MailboxSoA<1024> is the transitional default, never the at-scale design; a mailbox at scale is sized to its thought (N~=1) or a lightweight handle into a shared arena. - 16k-mailbox batch writes amortize against the ~1024 L3-resident prefix tables (read once, reused across the batch -> per-mailbox routing -> O(1)). - temporal.rs is the named batch-write de-interlacer (HLC tick is the de-interlace key; combs multi-producer batches into one (mailbox,cycle) lane before it touches a row). This prevents W5 from removing the <=1 guard under an impossible budget. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
Per operator framing: - envelope = one 4096-bit node = ~500 B (terminology aligned). - 16k envelopes ~= 8 MB is the HOT per-basin working set (L2/L3-friendly); x ~1024 prefix tables = 16M envelopes ~= 8 GB is the full COLD space (DRAM, prefix tables L3-resident). Decomposes the prior flat figure. - Deferred (NOT now): mailboxes run mostly half-full, so a future pass can halve the envelope (4096->2048 bits, ~500->~256 B) AFTER the working set is proven -- eliminate/consolidate what works first, then shrink. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
…aconnectivity) Operator sequencing note: "now" scale = get per-mailbox cycle ownership correct (foundation). "later" scale opens two independent axes: (a) quantity (16k->16M envelopes, linear) and (b) metaconnectivity (BNN field perturbation / cross-mailbox meta-edges -- the OGAR bipolar-phase pyramid, Walsh-Hadamard on VSA). Neither is in scope until the cycle-aware write foundation lands. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
The next code deliverable named by E-SOA-CYCLE-OWNERSHIP rule 1: make
every SoA write carry/check its cycle (no cycle-blind setter, no stale
overwrite). Drafted the plan and ran the operator-mandated 5+3 (5
builders + 3 brutal critics); folded all findings:
Resolved OQs: A=two stamps (last_write_cycle:[u32;N]); B=NO version bump
(reuse current_cycle/SoaEnvelope::cycle); C=Aware-buffer (WriteDisposition);
D=infallible WriteOutcome{Accepted,Stale,Future}; E=S2.5 pre-S3.
P0 fixes: de-interlace is ADDRESSING (GUID identity tail), not
planner-routing -- temporal.rs write-sink was fiction + unreachable
under the feature gate; stale handling is LOCAL. Singleton arm is
cycle-blind-by-construction (gate is Mailbox-only until W7).
P1 fixes: wrap-aware gate (wrapping_sub+half-range); setters stay
pub+doc(hidden) (pub(crate) breaks tests/w2_differential.rs);
last_write_cycle+identity into reset_row+field-isolation matrix same
commit; no-production-blind-path guard same commit; new identity:u32
spawn pointer (don't overload mailbox_id). Cold TS+kanban stay
Lance-native (lancedb 0.30 / lance 7).
Board hygiene: INTEGRATION_PLANS + AGENT_LOG prepended same commit.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
…, S2.5b) "What did I learn" = the NARS-revision delta, exactly -- a DERIVED read of CausalEdge64 (belief_delta() method, no new column for single-step; multi-cycle arc = queued D-MBX-A3). Council P0: net delta-<f,c> is LOSSY (averaging hides revision-vs-contradiction-commit) -- carry signed residual (dw+,dw-) + regime tag + qualia delta, reuse support/dissonance. Accumulates into a per-mailbox competence self-model. Two-axis substrate test: - Axis 1 THROUGHPUT "16M sudoku in 3.4 min" = exact-oracle constraint workload, certifies speed+correctness. NOT Weyl/spectral: both math critics graded Sudoku<->edge-Weyl [S] RHYME (20-regular degenerate spectrum is the OPPOSITE of phi-Weyl degeneracy-breaking). Drop the Weyl label; state it as throughput. - Axis 2 LEARNING "thinking-style improved exponentially, ceiling x" = the belief-update learning curve; ceiling = phi-1 humility. Native integer metric. deepeval DROPPED (Python LLM-judge firewall breach; borrow only the trivial threshold pass/fail shape = cargo test). They compose: Sudoku = workload, learning-curve = belief-update over it. goban = secondary belief-state harness ([H] support/capture/ko; drop influence leg). Slots S2.5b after the write contract. Board hygiene: INTEGRATION_PLANS + AGENT_LOG prepended same commit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
Summary
Repo-in-sync: ties the operator-ratified BindSpace→SoA architecture into the migration plan before the code wiring (which is 5+3-gated). Docs only — no source/test change.
After the AoS→SoA rotation (done) + the F32 bit-exact anchor (#535), the remaining migration is bounded by four ratified rules, now captured in the plan (ERRATA ADDENDUM 2026-06-18c) +
EPIPHANIES.mdE-SOA-CYCLE-OWNERSHIP:consume_firingis cycle-aware — the per-row setters (set_content/qualia/edge/meta/temporal) andBackingStoreWriteare cycle-blind. Target: every write carries/checkscurrent_cycle(SoaEnvelope::cycle()/current_cycle/last_active_cycle). This is the next code deliverable (5+3-gated).backing()'sdebug_assert(mailboxes.len() ≤ 1)is W5-transitional, not the design. 16k mailboxes ≈ 8 MB (512 B each), 16M ≈ 8 GB — linear. No open mailbox goes inaccessible at scale because addressing is the canonical GUID prefix-route (classid·HEEL·HIP·TWIG → ~1024 L3-resident prefix tables; the trie binds the prefix, masked-load the basin-local tail).classid → schema(per-class ClassView/Template, the Core-First path refactor(odoo): Core-first correction — structural facts home in the typed Core, harvest subordinate #530/feat(ontology): virtually_overrides as a computed ClassView relation (wishlist last item) #533). The ~10 liveBindSpaceconsumers (cypher_bridge, sentence_crystal, fabric, learning/{scm,feedback}, spo/merkle, callcenter/transcode, planner/elevation) split along this line; they migrate at D-MBX-12 (gated on D-MBX-7 + D-MBX-9-surrealdb). Dissolves the "all nine migrate to one SoA" misframe.LAYOUT_VERSION, currently 2) become mandatory.Also recorded that #535 closed the
--features with-enginebreak + the i4-codebook_indexcorrectness risk via the F32 anchor.Next
The per-cycle write-awareness contract (cycle-stamped/gated writes; no cycle-blind setter) — planned + 5+3 before code.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
Generated by Claude Code
Summary by CodeRabbit