Skip to content

Add join support to ReadOnlyTabularStorage - #362

Merged
sroussey merged 2 commits into
mainfrom
claude/storage-layer-joins-v7mrh9
Sep 8, 2026
Merged

Add join support to ReadOnlyTabularStorage#362
sroussey merged 2 commits into
mainfrom
claude/storage-layer-joins-v7mrh9

Conversation

@sroussey

@sroussey sroussey commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Extends ReadOnlyTabularStorage to support join operations by forwarding them to the underlying storage, consistent with how other read operations are handled.

Changes

  • Added join method to ReadOnlyTabularStorage that forwards join requests to the inner storage
  • Imported required join-related types: JoinedRow, JoinSpec, and JoinType
  • Included documentation explaining that joins are reads and thus unaffected by the write guard this wrapper provides

Implementation Details

The join method follows the same pattern as other read operations in ReadOnlyTabularStorage (e.g., query, queryIndex): it simply delegates to this.inner.join(). Since joins do not mutate data, they are safe to expose through the read-only wrapper without compromising its write-protection guarantee.

https://claude.ai/code/session_01HK4iHHRodgb3eLPCy7mcF2

`join` is a required member of ITabularStorage as of 0.5.0. This class
implements the interface directly rather than extending BaseTabularStorage,
so it does not inherit the default and must supply one.

A join is a read, so it forwards to the inner storage like every other read
here; the write guard this wrapper exists for is unaffected.

The @workglow/cli pin moves to 0.5.0 in the same commit — the interface
change is breaking, so the implementation and the version it requires have
to land together.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HK4iHHRodgb3eLPCy7mcF2
@sroussey
sroussey merged commit 2fc0bee into main Sep 8, 2026
1 check passed
@sroussey
sroussey deleted the claude/storage-layer-joins-v7mrh9 branch September 8, 2026 21:49
sroussey added a commit that referenced this pull request Sep 8, 2026
### Features

- implement ITabularStorage.join for @WorkGlow 0.5.0 (#362)
- implement CLI signal teardown and resource shutdown

### Bug Fixes

- declare the embedding width beside the model instead of assuming it (#359)

#### release

- declare the runtime floor, and derive the release bump (#357)

#### kb

- stop --dry-run creating the index tables, and report them in db stats
- bound `ask`'s implicit index, pin the embedding model, and let `db reset` drop the index

#### ask

- refuse rather than answer from model memory when nothing is retrieved

#### adv

- scope each Form ADV archive to its own folder and make ingest idempotent

### Performance

#### status

- read the newest ADV snapshot with one indexed row

### Tests

#### coverage

- make the README witness check capable of failing (#360)

### Chores

- update deps
- update dependencies to latest versions
- migrate from Prettier to oxfmt for code formatting

#### deps

- upgrade Vitest to 5 (#342)

### Updated Dependencies

- `@workglow/cli`: 0.5.0
- `typebox`: 1.3.29
- `workglow`: 0.5.0
- `@types/bun`: 1.4.2
- `bunset`: 1.1.1
- `oxlint`: ^1.82.0
- `vitest`: ^5.0.0
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