You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit eb7afe3
Browse filesBrowse the repository at this point in the historyBrowse files
plan: survey the BatchWriter arc, the Rubicon seam and the hot-plug spine
Operator named five loose ends. Surveyed, and four of them turn out to be
built ends that do not meet rather than things to build.
BatchWriter (#879, #908-912, #949): #912 landed the sole owned Lance
writer, so Dataset::write is real at cycle_sink.rs:675/710 and this
plan's own "no Dataset::write" was wrong when written. batch_writer.rs's
status note claiming cast() has zero production call sites is stale too —
three today, all production: mailbox_soa (the owner), owner_adapter
(write-on-behalf), cycle_driver (P4a drain). The other ~17 .cast( hits
are ractor ActorRef::cast and would have inflated the count.
What IS unwired is the observation leg: deinterlace has zero production
callers, every hit a doc comment. So G-C splits — G-C1 connect OGAR's
bytes to the writer that already exists, G-C2 wire the durability read.
A write nothing reads back is not yet a loop.
revision.rs is Heckhausen's last phase (postactional evaluation), and
that makes it the same gap seen from the other end: the court of appeal
has no write-back because the durable read that would tell it what
happened is missing. The Rubicon model is genuinely wired otherwise —
five phases in cognitive-compiler, rubicon_witness.rs, D-ACR-8.
The kanban seam is NOT unwired: lance-graph-ogar is a workspace member
depending on both sides by design, and recipe_vocab.rs already carries
the 34 NARS recipes as ogar-loco ops with the kanban census as the
awareness surface. The palette arc's constraint is that it must not ride
the deprecated substrate the recent PRs surfaced — Binary16K and the
singleton BindSpace are superseded, and temporal.rs's version-range read
is what replaced them, which lands on G-C2 again.
And the remediation is hot-plug, not a Cargo edge: socket in the zero-dep
contract, authority production at lance-graph-ogar lib.rs:524, consumer
declares one HotPlug const and activates. The classid is the join key —
plug and play mints the classid, the classid mints ogar-vocab, which
triggers the loco vocabulary. All eight existing declarations are test
fixtures and the planner has none.
Three claims in this document were drafted false and corrected before
commit by re-checking citations. Recorded, including that a fully
qualified impl made a negative grep read as "unimplemented" — a negative
grep is a claim about the pattern, not about the tree.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X6y3drwKSE2zSgoexheLFX
> `DOMAIN_FLOOR`, with the kanban census as the awareness surface
416
+
> (`D-ACR-9`)"* … *"`ogar_loco` is zero-dep by design and
417
+
> `lance_graph_contract` is zero-dep by charter. **Neither may import the
418
+
> other** … A vocabulary needs both, so it lives in a consumer that already
419
+
> depends on both"* … *"**The ladder IS a program**: `recipe_dispatch::ladder`
420
+
> returns an ordered `Vec<RecipeStep>`; loco executes ordered
421
+
> `(function : value)` calls. That is mechanism, not analogy."*
422
+
423
+
So the 34-recipe → loco-op unification and the kanban census surface are
424
+
**already written**. What is missing is one edge:
425
+
426
+
-**The planner does not depend on `lance-graph-ogar`** (verified: no such line
427
+
in `lance-graph-planner/Cargo.toml`). The seam exists in a crate the planner
428
+
cannot see.
429
+
-**`ogar-loco` / `ogar-r2il` themselves: zero `kanban` hits.** Correct by
430
+
design — the zero-dep rule above means the kanban vocabulary belongs in the
431
+
bridge, not in loco. Their silence is conformance, not a gap.
432
+
- The planner-side references stay forward-looking doc comments
433
+
(`cognitive_palette.rs:77`*"Growth from here is `ogar-loco`, not this
434
+
table"*; `recipe_dispatch.rs:301`*"what an ogar-loco `FunctionBody` WILL
435
+
carry"*) because nothing has connected them to the bridge that now exists.
436
+
437
+
> ⊘ **AND THE REMEDIATION I FIRST WROTE HERE — "add a planner → lance-graph-ogar
438
+
> dependency" — IS ALSO WRONG.** The operator pointed at `hotplug.rs`, and it
439
+
> names a different mechanism entirely. Second correction to this same section,
440
+
> both caught before commit.
441
+
442
+
### The sanctioned mechanism is HOT-PLUG, and a Cargo edge is not it
443
+
444
+
`lance-graph-contract/src/hotplug.rs` — *"Generic consumer hot-plug — the
445
+
plug-and-play pattern EVERY consumer migrates to (operator, 2026-07-07)"* —
446
+
three roles, three homes:
447
+
448
+
| role | home | note |
449
+
|---|---|---|
450
+
|**socket**|`lance-graph-contract::hotplug`|`HotPlug` + `CapabilityAuthority`, **zero-dep**: *"No OGAR dep — the contract … MUST stay dependency-free (a path dep here breaks every CI cargo invocation at workspace-load time; learned 2026-07-07)"*|
451
+
|**authority**| OGAR-side | resolves classids → vocab rows, action defs, and the storage reading (`Activation::read_modes`); verifies registration |
452
+
|**consumer**| its own crate | declares **one `HotPlug` const**, calls `activate` in its own binary/tests |
453
+
454
+
> *"The classid is the join key on BOTH sides … drift bangs once, **no pins, no
455
+
> serialization, no per-consumer plug crate**."*
456
+
457
+
**The activation cascade** (operator, 2026-09-16): *"plug and play mints the
458
+
classid. and classid mints ogar-vocab which triggers ogar-loco vocabulary."*
That is why `recipe_vocab.rs` can carry *"the 34 NARS recipes as `ogar-loco`
468
+
ops … with the kanban census as the awareness surface (`D-ACR-9`)"* without
469
+
either zero-dep crate importing the other: **the classid is the join, not a
470
+
dependency edge.**
471
+
472
+
### Measured state of the hot-plug spine
473
+
474
+
| piece | state |
475
+
|---|---|
476
+
| socket (`HotPlug`, `CapabilityAuthority`) |**built**, zero-dep, in the contract |
477
+
| authority (`impl … CapabilityAuthority for OgarAuthority`) |**built and PRODUCTION** — `lance-graph-ogar/src/lib.rs:524`; `#[cfg(test)]` does not begin until `:612`|
478
+
| consumer declarations |**all eight are TEST FIXTURES** (`:618`–`:831`, inside the two `cfg(test)` modules at `:612` and `:681`) — including `BLOCKLY`|
479
+
|**the planner's own `HotPlug`**|**ABSENT** — zero `HotPlug`/`hotplug` hits anywhere in `lance-graph-planner/src`|
480
+
481
+
> A grep note worth keeping: `impl.*CapabilityAuthority` found nothing on the
482
+
> first pass because the impl is written fully-qualified
483
+
> (`impl lance_graph_contract::hotplug::CapabilityAuthority for OgarAuthority`).
484
+
> I nearly recorded "the authority is unimplemented", which would have been the
485
+
> fourth false blocker of the session. **A negative grep result is a claim about
486
+
> the pattern, not about the tree.**
487
+
488
+
**So G-F is: the planner declares a `HotPlug` const and calls `activate`.** No
489
+
dependency edge, no plug crate, no seam to build — socket, authority and the
490
+
loco landing are all in place; the one consumer that needs the kanban has never
491
+
plugged in. Third instance this session of two built ends that do not meet.
492
+
493
+
### The palette arc — and what checking it turned up
494
+
495
+
Operator: *"ogar loco has a palette arc to unify the 34 nars templates which
496
+
just have been checked last few PRs only to find old VSA bindspace singleton
497
+
and hamming 16kbit deprecated."*
498
+
499
+
The palette surface is in `ogar-loco` (`registry.rs`, `basin.rs`,
500
+
`vocabulary.rs`, `lib.rs`), and `recipe_vocab.rs` above is its lance-side
501
+
landing. The deprecation the recent PRs surfaced is recorded in-tree —
502
+
`cognitive-shader-driver/src/engine_bridge.rs:370` calls the
503
+
`Vsa16kF32`/`Binary16K` set-bits plane *"the deprecated one"* — and this repo's
504
+
own `CLAUDE.md` carries both supersessions: PR #477's three-tier model
505
+
(no singleton, no inter-mailbox handoff type at all) and
506
+
`E-MARKOV-TEMPORAL-STREAM-1` (2026-07-10), which moves the Markov trajectory
507
+
**off the VSA braid onto the `temporal.rs` sorted stream** and demotes VSA to
508
+
its `I-VSA-IDENTITIES` four-test niche (N ≤ 32 lossless role superposition
509
+
inside ONE compartment).
510
+
511
+
**Consequence for the palette arc, and it is a real constraint:** a unification
512
+
of the 34 templates must NOT be carried on a 16 Kbit Hamming plane or a
513
+
singleton BindSpace. Both are superseded substrate, and `temporal.rs`'s
514
+
version-range read (`QueryReference::at(v, rung)` + deinterlace) is what
515
+
replaced them — **which lands on G-C2 again**, since that read has no
516
+
production caller. The palette arc, the Rubicon last phase, and the durability
517
+
read are three names for the same missing leg.
518
+
519
+
## The other loose end — alpha channel split tunnel ↔ SPOG
0 commit comments