Skip to content

chore: bump @kolu/surface to kolu master HEAD (#1836) + adopt the SR-series surface API - #44

Merged
srid merged 1 commit into
masterfrom
kolu-bump
Jul 15, 2026
Merged

chore: bump @kolu/surface to kolu master HEAD (#1836) + adopt the SR-series surface API#44
srid merged 1 commit into
masterfrom
kolu-bump

Conversation

@srid

@srid srid commented Jul 15, 2026

Copy link
Copy Markdown
Member

What

Bumps the npins kolu pin off the now-merged surface-map branch onto master, from #1714 (7d51cb2b) to HEAD #1836 (07397fa2), and adapts odu to the surface API changes that landed across the Surface-runtime (SR1–SR9) series. odu's own oRPC surface contracts (oduSurface / laneSurface) are unchanged, so there is no user-facing CLI / MCP / surface change — this is a dependency bump plus the internal adaptation it forces.

Surface API changes adopted

@kolu/surface/serverimplementSurface owns its channel and returns the final router.
implementSurface now mints its own in-memory channel internally and returns the FINAL top-level oRPC router (no consumer re-finalizes). So across run.ts, runner.ts, and serveForTest.ts:

  • the hand-passed channel: inMemoryChannelByName() dep is dropped;
  • implement(contract).router({ ...fragment.router }) collapses to serving runtime.router directly;
  • state mutation stays runtime.ctx.cells.*.set(...).

The now-dead channel in agentSurface's projection deps goes too — projectSurface hands its deps straight to implementSurface, which owns the channel.

@kolu/surface-remote — session state is phase-tagged.
SessionState is now a phase-tagged sum carrying a provenance-tagged, episode-scoped log ({ source, line }[]) rather than the old connection / progressLines / lastError fields. lane.ts:

  • reads state.phase (failed / disconnected) and state.error instead of connection / lastError;
  • forwards state.log[].line, rewinding its progress cursor when the episode-scoped log resets on a reconnect so early lines of a fresh episode aren't skipped;
  • passes makeSession's new provisioning-vocabulary type param (Prov = SshProv) and opens at the ssh connector's first phase, initialConnection: "probing" (was "copying").

Build

The surface's new reactive bridge (reactor.ts, reachable from @kolu/surface/server) pulls in @preact/signals-core, so it's added as a direct dependency (the hydrated kolu source resolves it from odu's own node_modules), and the fetchPnpmDeps hash is refreshed.

Verification

Full CI gate green locally:

Lane Result
typecheck ✅ clean
unit ✅ 141 passed
fmt (nixpkgs-fmt) ✅ clean
nix (nix build .#odu .#odu-runner) ✅ both build
e2e (black-box, nix-built binary) ✅ 8 passed

No ## Evidence recording: the bump has no externally visible runtime behavior (same commands, same output, unchanged surface contracts) — a pure-internal adaptation per .agency/do.md's skip clause.

🤖 Generated with Claude Code

…series surface API

Re-points the npins kolu pin off the now-merged `surface-map` branch onto
`master` and bumps it from #1714 (7d51cb2b) to HEAD #1836 (07397fa2), then
adapts odu to the surface API changes that landed across the Surface-runtime
(SR1–SR9) series.

Surface server API (`@kolu/surface/server`):
  - `implementSurface` now OWNS its in-memory channel and returns the FINAL
    top-level router. Drop the hand-passed `channel: inMemoryChannelByName()`
    dep and the `implement(contract).router({ ...fragment.router })`
    re-finalization from run.ts, runner.ts, serveForTest.ts — serve
    `runtime.router` directly, mutate via `runtime.ctx.cells.*`. The dead
    `channel` in agentSurface's projection deps goes too (projectSurface hands
    deps straight to implementSurface, which owns the channel).

Surface-remote session API (`@kolu/surface-remote`):
  - `SessionState` is now a phase-tagged sum with a provenance-tagged `log`
    (`{source, line}[]`, episode-scoped) instead of `connection`/`progressLines`/
    `lastError`. lane.ts maps `phase`/`error`/`log` accordingly and rewinds its
    progress cursor when the episode-scoped log resets on reconnect.
  - `makeSession` carries the connector's provisioning vocabulary as a `Prov`
    type param; the ssh connector opens at `probing` (SshProv), so the lane
    passes `initialConnection: "probing"` with `Prov = SshProv`.

Build:
  - The surface's new reactive bridge (`reactor.ts`, reachable from
    `@kolu/surface/server`) pulls in `@preact/signals-core`; add it as a direct
    dep so the hydrated source resolves, and refresh the `fetchPnpmDeps` hash.

odu's own oRPC surface contracts (oduSurface/laneSurface) are unchanged, so
there is no user-facing CLI/MCP/surface change. Gate green: typecheck, 141 unit
tests, nixpkgs-fmt, `nix build .#odu .#odu-runner`, and the 8 black-box e2e
tests.
@srid
srid merged commit b61cd25 into master Jul 15, 2026
6 checks passed
@srid
srid deleted the kolu-bump branch July 15, 2026 19:49
srid added a commit to juspay/kolu that referenced this pull request Jul 16, 2026
…on to ride (#1839)

The coordinator's atlas PR (one at a time, per /orchestrator — fresh cut
off master after #1833 merged).

## Two new notes

- **`roadmap-graph.mdx` (proposed)** — the smarter-roadmap design, shown
not told: one yaml of *inputs* (deps, human lifecycle union, gates,
asserted ships), everything else computed (`just roadmap::ripe`, the SR
table generated from data, "as of" staleness stamps). Lens-run-first:
the run (`wf_f751c3e0-f75`, 10 confirmed findings) killed the first
draft's two-writer `status` cell, its forge-derived `ships[]` (all ten
campaign PRs have zero closes-edges — verified), and its stored
derivations. RM1 = file+commands+lint+component; RM2 = the canvas
surface, gated.
- **`vorflux-manifesto.mdx` (analysis)** — the Great Flattening read
from kolu: the six bottlenecks mapped onto the shipped stack (the
gauntlet IS cross-lab adversarial review; the "blind cloud" names kolu's
differentiator), five adoptions (harness-as-thesis, reviewer panels,
structural vendor neutrality, token accounting, recordings-as-evidence),
three doctrinal disagreements with receipts (gates beat "build them all"
— SR10's decline; the human merge as the adjudication seat;
evidence-per-claim).

## Truing

- **deep-links: `status: accepted`** (srid ratified by dispatching DL1)
+ **step 4b's reuse seam corrected** by the DL1 agent's grounding
(CodeTab's `pendingOpen` settle-then-verdict pattern; `useHostAttention`
checked and rejected — optimistic fire-and-forget, no defer, no
gone-verdict).
- **odu's pin bump recorded**: the plan note's stale pin line and SR1's
"odu's two wraps at next pin" both resolve to
[odu#44](juspay/odu#44); future drift is
accounted by the per-PR odu-impact verdict + the
[odu#43](juspay/odu#43) ledger.

## To ride here

SR8.c note finalization (status + PrLink) when #1838 merges, and the
campaign-completion truing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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.

1 participant