Skip to content

symbiont golden image: integration plan (5+3 council loose-end ledger)#555

Merged
AdaWorldAPI merged 4 commits into
mainfrom
claude/symbiont-golden-image-plan
Jun 20, 2026
Merged

symbiont golden image: integration plan (5+3 council loose-end ledger)#555
AdaWorldAPI merged 4 commits into
mainfrom
claude/symbiont-golden-image-plan

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Jun 19, 2026

Copy link
Copy Markdown
Owner

What

Adds crates/symbiont/INTEGRATION_PLAN.md onto main's portable golden-image crate — the 5+3 hardening-council loose-end ledger and the acceptance gate. The golden-image crate itself (portable git-deps Cargo.toml + Dockerfile + README) is already on main; this PR carries the planning doc that was missing there.

Context

crates/symbiont/ is the golden image: the full Ada stack — lance-graph + lance =7.0.0 + lancedb =0.30.0 + ndarray fork + ractor fork + surrealdb (kv-lance) + OGAR — compiling+linking into one binary. The local-path variant built green this session (912 packages, exit 0); the on-main variant is the portable git-deps build validated via the Dockerfile (Railway/CI).

The ledger (what this doc captures)

An 8-agent council (5 research + 3 brutal reviewers) audited the gap between "compiles" and the win condition. Headline finding: the crates link into one binary but with zero runtime edges between them — there are three incompatible "node" representations and no adapter between them.

The acceptance gate (the biggest goal): the 16K-node SoA substrate carries every Spanish electricity node; the perturbation cascade runs NaN-free; cargo clippy + cargo machete clean.

Sequenced work:

  • D0 (prerequisite): pick which node representation "the 16K-node SoA" is (canonical NodeRow vs VersionedGraph SPO-plane vs perturbation-sim's f64 Grid).
  • The bridge: perturbation-sim ↔ SoA is unwired (columns.rs is a spec, not an encoder); write Grid → NodeRow.
  • Fixture: no in-tree Spanish grid fixture; only network-fetched examples/iberian.rs.
  • NaN: round-0 base state unguarded; B1's linter guard doesn't exist yet.
  • R1 (resolved): the ndarray fork being linked twice is accepted as cosmetic — no ndarray type crosses the surrealdb↔lance-graph seam.

Post-gate (not on the critical path): the kanban loop — real-in-parts but 2 of 5 arrows absent; LanceVersionScheduler is not actually a ractor actor.

Note

Additive only — crates/symbiont/ stays workspace-excluded, so this does not touch the default lance-graph build/CI.

🤖 Generated with Claude Code


Generated by Claude Code

Summary by CodeRabbit

  • Documentation
    • Added comprehensive integration plan documentation, including a verification checklist and formal acceptance-gate criteria for the Spain-grid “16K-node SoA” pipeline and perturbation cascade (with NaN-free behavior enforcement).

@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@AdaWorldAPI, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 19 minutes and 1 second. 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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8e2fa672-778a-4f29-927d-70112025797c

📥 Commits

Reviewing files that changed from the base of the PR and between 35eec52 and ca4c20d.

📒 Files selected for processing (1)
  • crates/symbiont/INTEGRATION_PLAN.md
📝 Walkthrough

Walkthrough

Adds crates/symbiont/INTEGRATION_PLAN.md, a 199-line document recording session milestones, council-reviewed findings, a three-part acceptance gate checklist (substrate, NaN-free enforcement, hygiene), post-gate loose ends, and operational risk/watch-items for the Spain-grid 16K-node SoA integration.

Changes

Symbiont Integration Plan

Layer / File(s) Summary
Document scope, status legend, and session milestones
crates/symbiont/INTEGRATION_PLAN.md
Establishes the document header, scope/goal framing, and status legend, then records completed session items: ractor messaging, kv-lance feature gates, golden-image build, and perturbation-sim NaN/finite-guard foundations.
Council findings: representation gating, prerequisite chain, image hardening, NaN gap
crates/symbiont/INTEGRATION_PLAN.md
Documents the NodeRow/VersionedGraph representation-gating problem, the corrected Grid→bridge→writer prerequisite chain with HhtlKey probe questions, image-hardening verdicts (lockfile tracking, git-dep pinning, Cargo.lock regeneration), and the NaN boundary fix plus missing pearson_rejects_nonfinite test.
Acceptance gate checklist (A, B, C)
crates/symbiont/INTEGRATION_PLAN.md
Formalizes the win condition across three gates: A (Spain-grid topology sourced and loaded into a Lance-backed SoA through the full cascade), B (finiteness invariants and a full-fixture property test), and C (manifest/warnings hygiene via machete and strict clippy).
Post-gate loose ends and operational risks
crates/symbiont/INTEGRATION_PLAN.md
Lists remaining work after the gate (surreal_container wiring, ndarray-simd patching, Kanban scheduler pipeline, real CLI harness, optional no-C++ image) and enumerates risks: object_store version mismatches, build disk footprint, and pinned 2024 toolchain requirement.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~4 minutes

Poem

🐇 A plan has arrived, all written in prose,
With gates A, B, and C before the merge-bell rings.
NaN-free grids and SoA data neatly aligned,
Lockfiles tracked, toolchains pinned, no loose ends left behind.
Hop along, Spain grid — the checklist awaits! 🗺️

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding an INTEGRATION_PLAN.md document that documents the golden-image integration status, council findings (5+3 reviewers), and remaining work items (loose ends).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ 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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6bcb544ffb

ℹ️ 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".

Comment thread crates/symbiont/INTEGRATION_PLAN.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/symbiont/INTEGRATION_PLAN.md`:
- Around line 158-161: The status marker BLOCKED(C) used in the
surreal_container entry is not defined in the status legend, making it unclear
to readers. Either add BLOCKED(C) to the status legend at the beginning of
INTEGRATION_PLAN.md with a clear description of what it means, or replace the
BLOCKED(C) status in the surreal_container entry with an existing state that is
already defined in the legend (such as open or in progress), along with
additional context in the description if needed.
- Around line 149-152: The C2 task description in the INTEGRATION_PLAN.md file
needs clarification on how to run cargo clippy for the symbiont workspace. Since
symbiont has its own [workspace] section separate from the parent workspace, the
cargo clippy command will be skipped if run from the repo root. Update the C2
task description to explicitly specify either running the command from the
crates/symbiont/ directory or adding the --manifest-path
crates/symbiont/Cargo.toml flag to the cargo clippy --all-targets -- -D warnings
command to ensure it targets the symbiont workspace correctly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 679b0f2e-6b0b-4990-a59c-3ef53d4cf80f

📥 Commits

Reviewing files that changed from the base of the PR and between d72a7f0 and 6bcb544.

📒 Files selected for processing (1)
  • crates/symbiont/INTEGRATION_PLAN.md

Comment thread crates/symbiont/INTEGRATION_PLAN.md Outdated
Comment thread crates/symbiont/INTEGRATION_PLAN.md Outdated
AdaWorldAPI pushed a commit that referenced this pull request Jun 20, 2026
Manifest: pin surrealdb-core to main + drop the [patch] (cargo forbids patching
a git URL to itself). VERIFIED green — real git-deps build CARGO_EXIT=0, binary
runs, unified lance 7.0.0 / lance-index 7.0.0 / lancedb 0.30.0 / datafusion
53.1.0 / arrow 58 (no lance-6/7 split).

Board (.claude/board):
- EPIPHANIES: prepend E-GOLDEN-IMAGE-IS-A-LIVING-HARNESS (jirak branches are
  stale checkout names; harness tracks each fork's living canonical branch, not
  a snapshot; cargo can't patch a url to itself).
- TECH_DEBT: TD-SURREALDB-KVLANCE-LANCE7 Open -> PAID (surrealdb main carries
  the lance-7 bump; verified by manifest read + the golden-image build).
- PR_ARC: #555 entry (symbiont plan + living-harness reframe, built green).
- AGENT_LOG: 2026-06-20 session run.
- LATEST_STATE: golden image shipped + lance-7 unified.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
claude added 4 commits June 20, 2026 00:56
Brings the integration plan onto main's portable golden-image crate: the
5+3 hardening-council findings (the three-node-representation split, the
Grid->NodeRow bridge gap, the kanban-loop reality check) sequenced into the
Spain-grid acceptance gate (16K-node SoA carries every Spanish electricity
node; cascade NaN-free; clippy + machete clean), plus R1 (ndarray duplicate
accepted as cosmetic).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
- C1 (Codex P2): symbiont's direct deps are the integration payload (main.rs
  only prints); cargo machete must WHITELIST them via
  [package.metadata.cargo-machete] ignored, never delete — else the build
  passes while exercising nothing.
- C2 (CodeRabbit): symbiont has its own [workspace], so root-level clippy skips
  it; specify --manifest-path crates/symbiont/Cargo.toml (or run from the dir).
- BLOCKED(C) (CodeRabbit): add a `⊘ blocked` symbol to the status legend and
  use it for the surreal_container entry instead of an undefined marker.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
machete only edits Cargo.toml under --fix; by default it reports unused deps
and exits non-zero. So the risk isn't auto-deletion (Codex's framing + my
prior edit overstated it) — it's that machete fails a "clean" gate on
symbiont's intentional integration deps. The [package.metadata.cargo-machete]
ignored whitelist is to make the report pass; the never-`--fix` caution
remains.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
…uild

Rebased onto main (carries the working surrealdb-main manifest + gitignore).
Updates reflecting the living-harness reframe + the verified git-deps build:
- Done: record the portable git-deps build (CARGO_EXIT=0, 12m52s, unified
  lance 7.0.0 / lancedb 0.30.0 / df 53.1 / arrow 58, no lance-6/7 split).
- R2/R3 SUPERSEDED: commit-the-lock / pin-to-rev were the snapshot model the
  operator rejected; Cargo.lock is gitignored, no [patch], align on main.
- R4: surrealdb lance-7 witnessed green (the "lance 6" worry was the stale
  jirak branch, not main); TD-SURREALDB-KVLANCE-LANCE7 PAID.
- surreal_container: BLOCKED(C) was a version blocker, now version-resolved;
  residual is pure wiring (D-PG-6).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
@AdaWorldAPI AdaWorldAPI force-pushed the claude/symbiont-golden-image-plan branch from a085ec7 to ca4c20d Compare June 20, 2026 00:58
@AdaWorldAPI AdaWorldAPI merged commit 37cc21b into main Jun 20, 2026
6 checks passed
AdaWorldAPI pushed a commit that referenced this pull request Jun 20, 2026
…st runtime edge)

The 5+3 council's headline was "five crates linked, ZERO runtime edges." This
builds the first one. crates/symbiont/src/bridge.rs: in-tree 8x8 lattice ->
simulate_outage (DC-flow cascade) -> encode each bus's node_field into one
canonical NodeRow (key=NodeGuid::local(bus), value[0..8]=f64 LE) -> assert every
decoded f64 finite -> NodeRowPacket proves the 512-B/row zero-copy SoA stride.

- cargo test -p symbiont: 2/2 (bit-exact finite round-trip + 512-B stride).
- cargo run: "D1 bridge: 64 buses -> 64 NodeRows ... all finite ... max 0.814452".
- Cargo.toml gains a lance-graph-contract path-dep (NodeRow lives there, not in
  lance-graph, and isn't re-exported). symbiont is the bridge's correct home:
  the only crate that sees BOTH NodeRow and perturbation-sim's Grid.

The golden image now RUNS a genuine cross-crate edge, not just links.

Board: EPIPHANIES E-FIRST-RUNTIME-EDGE-GREEN; AGENT_LOG D1; STATUS_BOARD
symbiont-golden-image-harness (D0/D1 Shipped, D2/E1/BT Queued); PR_ARC #555
flipped to MERGED.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants