Skip to content

style: cargo fmt drift across continuum-core (~100 files, semantically empty)#1472

Merged
joelteply merged 1 commit into
canaryfrom
fmt-drift-l0-3a-0-companion
May 30, 2026
Merged

style: cargo fmt drift across continuum-core (~100 files, semantically empty)#1472
joelteply merged 1 commit into
canaryfrom
fmt-drift-l0-3a-0-companion

Conversation

@joelteply
Copy link
Copy Markdown
Contributor

Companion to #1471 (L0-3a.0 BrainRegion trait machinery).

Running cargo fmt -p continuum-core while verifying #1471's new files were fmt-clean surfaced pre-existing fmt drift in ~100 unrelated files. All changes are line-width / attribute-formatting (e.g., #[ts(export, export_to = "...")] breaking onto multiple lines past the column limit). Semantically empty.

Boy-scout cleanup — split from #1471 so the BrainRegion review is focused on the real changes. Both PRs target canary; either can land first.

🤖 Generated with Claude Code

…er + RegionTelemetry (substrate prerequisite)

Card: 71923a08-b3de-448a-98ef-fe7cc3e817c0

First sub-slice of L0-3a. Pure typed surface from BRAIN-REGIONS-SUBSTRATE.md
(merged via #1470). No region implementations, no algorithms, no governor
integration. Those land in L0-3a.1+ slices.

## New modules in continuum-core/src/runtime/

### brain_region.rs

The cognitive-cycle trait every region implements:

- BrainRegion (async trait, dyn-compatible)
  - id() -> RegionId
  - pressure_profile() -> PressureProfile
  - async tick(ctx: &RegionContext) -> TickOutcome
  - async on_signal(signal: RegionSignal) -> Result<(), RegionError>  // default no-op
- RegionId (Cow<'static, str> newtype, const constructor for static IDs)
- PressureProfile { memory_class, compute_class, responds_to }
- MemoryClass: Light | Moderate | Heavy | VramSensitive
- ComputeClass: Bookkeeping | Cpu | CpuVectorized | InferenceLight | InferenceHeavy
- PressureSignalKind (kind-only mirror of governor::PressureSignal for static decl)
- TickOutcome { published, consumed_since_last, pressure_observed, cadence_hint }
- TickOutcome::idle() convenience constructor
- CadenceHint: Faster | Hold | Slower | Sleep (region requests; governor decides)
- RegionSignal: PersonaLifecycle | SleepTransition | SystemPressureChanged
- PersonaLifecycle: Created | Destroyed
- SleepPhase: Active | Idle | Sleep
- PressureLevel: Nominal | Moderate | High | Critical
- RegionContext { tick_number, persona_scope }  // global vs per-persona
- RegionError (thiserror): SignalRejected | NotReady | Internal

### ready_buffer.rs

The publish/peek surface every region uses to hand off pre-staged results:

- ReadyBuffer trait
  - peek(&self, key: &Key) -> Option<Value>  // synchronous, MUST NOT block
  - publish(&self, key: Key, value: Value)   // atomic replace
  - evict_stale(&self, max_age: Duration) -> usize
  - len() / is_empty()
- DashMapReadyBuffer<K, V> default implementation
  - Arc-shared DashMap inner — cheap Clone hands out additional handles
  - Sharded concurrent access; wait-free reads in the common case
  - TimestampedEntry tracks published_at for evict_stale

Semantic rules enforced in the doc + the trait:
- Reads MUST NOT block / MUST NOT await
- Staleness acceptable — empty buffer is signal, not block
- Per-region buffers, not global

### region_telemetry.rs

The per-tick telemetry shape:

- RegionTelemetry { region_id, persona_id, tick_started_at, tick_duration,
                    published, consumed_since_last, buffer_misses_since_last,
                    pressure_observed }
- consumption_fraction() -> Option<f32>  // None when published == 0
- had_buffer_misses() -> bool

Feeds the substrate governor's yield-learning loop (algorithm 7, lands L0-4c)
and the operator surface (./jtag region/stats, region/yield).

## ts-rs bindings (11 emitted to shared/generated/runtime/)

CadenceHint, ComputeClass, MemoryClass, PersonaLifecycle, PressureLevel,
PressureProfile, PressureSignalKind, RegionId, RegionSignal,
RegionTelemetry, SleepPhase, TickOutcome.

Generated and validated by the ts-rs export_bindings_* tests.

## Tests

23 new unit tests across the three modules. All pass.

- brain_region: 6 tests (trait impl, default on_signal noop, RegionId
  construction + Display, RegionContext global vs per-persona, TickOutcome::idle)
- ready_buffer: 9 tests (publish+peek roundtrip, missing key, overwrite,
  evict_stale removes old + keeps fresh, evict ZERO clears everything,
  len/is_empty, clone shares Arc inner, dyn trait usage, with_capacity)
- region_telemetry: 5 tests (consumption_fraction with publishes / zero /
  full, had_buffer_misses true / false)

Plus ts-rs auto-generated export_bindings_* tests for all 11 types.

Total: 74 tests pass in runtime::, 0 fail.

## Boy-scout

cargo fmt applied across the package picked up some unrelated drift in
governor/types.rs (line-width formatting on ts(export...) attributes).
Including the fix.

## What is NOT in this card

- No region implementations (HippocampusModule, MotorCortexModule,
  AttentionModule all land in later slices)
- No algorithms (1-7 from COGNITION-ALGORITHMS.md land in subsequent cards)
- No SubstrateGovernor integration (yield-learning loop is L0-4c)
- No derive macro / scaffold generator (lands when ≥3 regions exist to
  motivate the abstraction — per outlier-validation in CLAUDE.md)

## Predecessors merged

- #1469 (L0-2-CUTOVER-INVESTIGATION + RTOS-brain doctrine) — 2026-05-29
- #1470 (BRAIN-REGIONS-SUBSTRATE + COGNITION-ALGORITHMS docs) — 2026-05-29

## Next slices

L0-3a.1 HippocampusModule skeleton, L0-3a.2 Engram + EngramGraph types,
L0-3a.3 Algorithm 4 (salience decay), L0-3a.4 Algorithm 2 (channel-as-bias),
L0-3a.5 Algorithm 3 (activation spreading), L0-3a.6 Algorithm 1 (two-pool
budget), L0-3a.7 Algorithm 5 (predictor + ready-buffer publish), L0-3a.8
holdout fixture suite, L0-3a.9 TS Hippocampus.ts deletion.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
joelteply added a commit that referenced this pull request May 30, 2026
…rainRegion + ServiceModule, empty tick) (#1473)

* feat(continuum-core/runtime): L0-3a.0 — BrainRegion trait + ReadyBuffer + RegionTelemetry (substrate prerequisite)

Card: 71923a08-b3de-448a-98ef-fe7cc3e817c0

First sub-slice of L0-3a. Pure typed surface from BRAIN-REGIONS-SUBSTRATE.md
(merged via #1470). No region implementations, no algorithms, no governor
integration. Those land in L0-3a.1+ slices.

## New modules in continuum-core/src/runtime/

### brain_region.rs

The cognitive-cycle trait every region implements:

- BrainRegion (async trait, dyn-compatible)
  - id() -> RegionId
  - pressure_profile() -> PressureProfile
  - async tick(ctx: &RegionContext) -> TickOutcome
  - async on_signal(signal: RegionSignal) -> Result<(), RegionError>  // default no-op
- RegionId (Cow<'static, str> newtype, const constructor for static IDs)
- PressureProfile { memory_class, compute_class, responds_to }
- MemoryClass: Light | Moderate | Heavy | VramSensitive
- ComputeClass: Bookkeeping | Cpu | CpuVectorized | InferenceLight | InferenceHeavy
- PressureSignalKind (kind-only mirror of governor::PressureSignal for static decl)
- TickOutcome { published, consumed_since_last, pressure_observed, cadence_hint }
- TickOutcome::idle() convenience constructor
- CadenceHint: Faster | Hold | Slower | Sleep (region requests; governor decides)
- RegionSignal: PersonaLifecycle | SleepTransition | SystemPressureChanged
- PersonaLifecycle: Created | Destroyed
- SleepPhase: Active | Idle | Sleep
- PressureLevel: Nominal | Moderate | High | Critical
- RegionContext { tick_number, persona_scope }  // global vs per-persona
- RegionError (thiserror): SignalRejected | NotReady | Internal

### ready_buffer.rs

The publish/peek surface every region uses to hand off pre-staged results:

- ReadyBuffer trait
  - peek(&self, key: &Key) -> Option<Value>  // synchronous, MUST NOT block
  - publish(&self, key: Key, value: Value)   // atomic replace
  - evict_stale(&self, max_age: Duration) -> usize
  - len() / is_empty()
- DashMapReadyBuffer<K, V> default implementation
  - Arc-shared DashMap inner — cheap Clone hands out additional handles
  - Sharded concurrent access; wait-free reads in the common case
  - TimestampedEntry tracks published_at for evict_stale

Semantic rules enforced in the doc + the trait:
- Reads MUST NOT block / MUST NOT await
- Staleness acceptable — empty buffer is signal, not block
- Per-region buffers, not global

### region_telemetry.rs

The per-tick telemetry shape:

- RegionTelemetry { region_id, persona_id, tick_started_at, tick_duration,
                    published, consumed_since_last, buffer_misses_since_last,
                    pressure_observed }
- consumption_fraction() -> Option<f32>  // None when published == 0
- had_buffer_misses() -> bool

Feeds the substrate governor's yield-learning loop (algorithm 7, lands L0-4c)
and the operator surface (./jtag region/stats, region/yield).

## ts-rs bindings (11 emitted to shared/generated/runtime/)

CadenceHint, ComputeClass, MemoryClass, PersonaLifecycle, PressureLevel,
PressureProfile, PressureSignalKind, RegionId, RegionSignal,
RegionTelemetry, SleepPhase, TickOutcome.

Generated and validated by the ts-rs export_bindings_* tests.

## Tests

23 new unit tests across the three modules. All pass.

- brain_region: 6 tests (trait impl, default on_signal noop, RegionId
  construction + Display, RegionContext global vs per-persona, TickOutcome::idle)
- ready_buffer: 9 tests (publish+peek roundtrip, missing key, overwrite,
  evict_stale removes old + keeps fresh, evict ZERO clears everything,
  len/is_empty, clone shares Arc inner, dyn trait usage, with_capacity)
- region_telemetry: 5 tests (consumption_fraction with publishes / zero /
  full, had_buffer_misses true / false)

Plus ts-rs auto-generated export_bindings_* tests for all 11 types.

Total: 74 tests pass in runtime::, 0 fail.

## Boy-scout

cargo fmt applied across the package picked up some unrelated drift in
governor/types.rs (line-width formatting on ts(export...) attributes).
Including the fix.

## What is NOT in this card

- No region implementations (HippocampusModule, MotorCortexModule,
  AttentionModule all land in later slices)
- No algorithms (1-7 from COGNITION-ALGORITHMS.md land in subsequent cards)
- No SubstrateGovernor integration (yield-learning loop is L0-4c)
- No derive macro / scaffold generator (lands when ≥3 regions exist to
  motivate the abstraction — per outlier-validation in CLAUDE.md)

## Predecessors merged

- #1469 (L0-2-CUTOVER-INVESTIGATION + RTOS-brain doctrine) — 2026-05-29
- #1470 (BRAIN-REGIONS-SUBSTRATE + COGNITION-ALGORITHMS docs) — 2026-05-29

## Next slices

L0-3a.1 HippocampusModule skeleton, L0-3a.2 Engram + EngramGraph types,
L0-3a.3 Algorithm 4 (salience decay), L0-3a.4 Algorithm 2 (channel-as-bias),
L0-3a.5 Algorithm 3 (activation spreading), L0-3a.6 Algorithm 1 (two-pool
budget), L0-3a.7 Algorithm 5 (predictor + ready-buffer publish), L0-3a.8
holdout fixture suite, L0-3a.9 TS Hippocampus.ts deletion.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(continuum-core/modules): L0-3a.1 — HippocampusModule skeleton (BrainRegion + ServiceModule, empty tick)

Card: f8c51b26-9ddd-4107-97da-3237fc18ab4b

Second sub-slice of L0-3a. Skeleton only — no algorithms, no command
migration. Algorithms 1-5 from COGNITION-ALGORITHMS.md land in L0-3a.2
through L0-3a.7. Command surface migration (memory/* from MemoryModule)
is L0-3a.1b.

## HippocampusModule

- Implements ServiceModule with EMPTY command_prefixes + event_subscriptions
  (MemoryModule continues to handle memory/* commands until L0-3a.1b)
- Implements BrainRegion (from #1471 trait machinery) with:
  - id = "hippocampus" (static)
  - pressure_profile: { MemoryClass::Heavy, ComputeClass::CpuVectorized,
    responds_to: [SystemMemHigh, InferenceQueueDepth] }
  - tick: idle — bumps internal monotonic counter, returns TickOutcome::idle()
  - on_signal: default no-op (L0-4d wires SleepTransition reaction)
- Owns a DashMapReadyBuffer<EngramPrefetchKey, EngramPrefetch> exposed via
  engram_prefetch() — Arc-shared so motor cortex / attention can peek
  without going through the trait object
- Shares MemoryState with MemoryModule via Arc — when L0-3a.1b absorbs
  command handling, migration is structurally trivial

## EngramPrefetch / EngramPrefetchKey

Placeholder ready-buffer value type. Carries produced_at_tick so handlers
can detect stale buffers without timestamp comparison. Real shape (engram
set + scoring metadata + genome blend hint) lands L0-3a.2 with the actual
Engram types.

Key shape: (persona_id, channel_id) tuple. Per-region buffer doctrine — one
prefetch per persona-per-channel.

## Outlier-validation hedge (docstring)

The BrainRegion trait in #1471 has only one implementation candidate today.
Module docstring explicitly checks the trait surface against two other
plausible regions to prevent it ossifying around hippocampus:

- Motor cortex (L0-4a): continuous candidate-utterance ranking. Differs in
  latency sensitivity. CadenceHint::Faster + per-key freshness semantics fit.
- Attention (L0-4b): salience-map maintenance. Differs in publish-target
  (writes to shared PersonaCognition.salience, not own ready-buffer).
  TickOutcome.published counts either target without trait change.

Both alternative shapes fit the same trait without forcing. Trait surface
proven for 3 distinct region behaviors before any of them ship.

## Tests (7 pass, 0 fail)

- region_id_is_stable_static_string
- pressure_profile_declares_memory_heavy_compute_vectorized
- idle_tick_returns_idle_outcome_and_bumps_counter
- engram_prefetch_buffer_roundtrip
- engram_prefetch_handle_is_shared_via_arc (verifies Arc-shared semantics)
- service_module_handle_command_errors_for_unrouted_commands
- service_module_config_has_empty_cmd_and_event_surfaces

## Scope: 2 files

Modified: src/workers/continuum-core/src/modules/mod.rs (pub mod hippocampus)
Added:    src/workers/continuum-core/src/modules/hippocampus.rs (379 lines)

Fmt-drift in unrelated files was split off into a companion PR following
the same pattern as #1472, keeping this review focused.

## Predecessors

- #1471 (L0-3a.0 trait machinery) — merged to canary
- #1470 (BRAIN-REGIONS-SUBSTRATE + COGNITION-ALGORITHMS docs) — merged
- #1469 (L0-2-CUTOVER-INVESTIGATION + RTOS-brain doctrine) — merged

## Next slices

L0-3a.2 Engram + EngramGraph types → L0-3a.3 algorithm 4 (salience decay)
→ L0-3a.4 algorithm 2 (channel-as-bias) → L0-3a.5 algorithm 3 (activation
spreading) → L0-3a.6 algorithm 1 (two-pool budget) → L0-3a.7 algorithm 5
(predictor + ready-buffer publish — the alive-feeling slice) → L0-3a.8
holdout fixture suite → L0-3a.9 TS Hippocampus.ts deletion.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@joelteply joelteply merged commit 2637221 into canary May 30, 2026
7 checks passed
@joelteply joelteply deleted the fmt-drift-l0-3a-0-companion branch May 30, 2026 16:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant