Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
0ec2fee
docs: start milestone v1.23 io boundary
gabewillen May 4, 2026
f0013c3
feat: add io loading boundary
gabewillen May 4, 2026
e56e370
fix: close io boundary review gaps
gabewillen May 4, 2026
e9739e4
fix: reset tensor loader after io failure
gabewillen May 4, 2026
1e747c2
docs(roadmap): add gap closure phase 211
gabewillen May 4, 2026
a44499f
docs(211): execute phase 211 verification artifact backfill
gabewillen May 4, 2026
d1fd1a2
docs(audit): re-audit v1.24 after phase 211 backfill (passed)
gabewillen May 4, 2026
217944b
docs(211): add wave field to phase plan frontmatter (linter)
gabewillen May 4, 2026
6358b6a
chore: archive v1.24 milestone files
gabewillen May 4, 2026
438d200
chore: remove REQUIREMENTS.md for v1.24 milestone
gabewillen May 4, 2026
5e64d62
feat: add mmap loading strategy
gabewillen May 4, 2026
c0774df
fix: address io mmap PR review comments
gabewillen May 4, 2026
92712ce
merge origin/main into issue 60 branch
gabewillen May 5, 2026
12e8f1f
fix: reject mmap spans beyond eof
gabewillen May 5, 2026
8aad365
fix: close mmap review follow-ups
gabewillen May 5, 2026
70c622b
fix: simplify mapped load done transition
gabewillen May 5, 2026
278ccf5
fix: require mmap map completion callback
gabewillen May 5, 2026
7ba0155
fix(io/mmap,model/tensor): retain slot on unmap failure; reject legac…
gabewillen May 5, 2026
22a240b
fix: preserve mmap metadata and partial cleanup state
gabewillen May 5, 2026
7de907a
fix: preserve mmap bindings on storage rebind errors
gabewillen May 5, 2026
172df14
fix: reject bind tensor on mmap resident tensors
gabewillen May 5, 2026
111cd6c
fix: align v1.24 planning state counters
gabewillen May 5, 2026
1f6635b
docs: start milestone v1.25 io read loading strategy
gabewillen May 5, 2026
b84ae31
docs(v1.25): scaffold roadmap phase details for phases 212-218
gabewillen May 5, 2026
00e9e8d
feat(io): add read strategy boundary actor
gabewillen May 5, 2026
9fec8d3
feat(io): add read validation gates
gabewillen May 5, 2026
1466400
feat(io): execute read strategy attempts
gabewillen May 5, 2026
3ba2096
test(225-01): add failing io read batch doctests
gabewillen May 6, 2026
f2f38cd
feat(225-01): implement io read batch copy path
gabewillen May 6, 2026
3d7985a
docs(225-01): complete io read batch copy plan
gabewillen May 6, 2026
8c4b8fc
test(225-02): add failing io loader batch doctests
gabewillen May 6, 2026
56295e6
feat(225-02): implement io loader batch read copy route
gabewillen May 6, 2026
da3d84e
docs(225-02): complete io loader batch route plan
gabewillen May 6, 2026
69e6039
test(225-03): add failing model loader batch doctests
gabewillen May 6, 2026
5c87f76
feat(225-03): route model loader io through batch dispatch
gabewillen May 6, 2026
c27b347
docs(225-03): complete model loader batch dispatch plan
gabewillen May 6, 2026
724a12f
feat(225-04): wire maintained callers to io load spans
gabewillen May 6, 2026
c04b890
test(225-04): require io load spans in maintained caller guardrails
gabewillen May 6, 2026
dc7c7b9
docs(225-04): complete maintained caller batch scratch plan
gabewillen May 6, 2026
f08a145
docs(225-05): update active phase traceability
gabewillen May 6, 2026
2997d5c
docs(225-05): correct archived closeout paths
gabewillen May 6, 2026
2e08af9
docs(225-05): complete closeout traceability plan
gabewillen May 6, 2026
40a901c
docs(225-06): record current validation evidence
gabewillen May 6, 2026
357409d
docs(225-06): publish closeout audit evidence
gabewillen May 6, 2026
28dbfa8
docs(225-06): complete validation publication plan
gabewillen May 6, 2026
d127362
fix(225): CR-01 guard missing parse callback
gabewillen May 6, 2026
594b5a5
fix(225): WR-01 classify unknown read errors
gabewillen May 6, 2026
d40c6bc
style(225): format read error regression test
gabewillen May 6, 2026
ca25e79
style(225): prefix model loader parse guard
gabewillen May 6, 2026
14da7a5
chore: archive v1.25 milestone
gabewillen May 6, 2026
5ac0055
chore(v1.25): close read loading audit cleanup
gabewillen May 6, 2026
ca95f4a
docs(state): record v1.25 PR
gabewillen May 6, 2026
2cbbea3
Merge remote-tracking branch 'origin/main' into gsd/issue-62-io-read-…
gabewillen May 6, 2026
bcae489
chore: refresh quality gate timing after merge
gabewillen May 6, 2026
93c61c7
fix: address PR review comments
gabewillen May 6, 2026
a70908a
fix: address read-copy review feedback
gabewillen May 7, 2026
495a0e0
fix: address benchmark and source review feedback
gabewillen May 7, 2026
bdfb729
fix: require explicit tensor read targets
gabewillen May 7, 2026
89f5d24
Add staged read loading strategy
gabewillen May 8, 2026
bfc6e3f
Remove local agent artifacts
gabewillen May 8, 2026
938cb2d
Merge origin/main into staged read branch
gabewillen May 8, 2026
70599b8
Fix staged read PR review feedback
gabewillen May 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 57 additions & 9 deletions .planning/PROJECT.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ before widening API surface or model scope.

## Current State

Current milestone: not yet defined
Current milestone: `v1.26 I/O Staged Read Loading Strategy` (GitHub issue #63)

Latest shipped milestone: `v1.25 I/O Read Loading Strategy`

Expand All @@ -33,6 +33,43 @@ confirmed Phase 214 is historical, clarified the direct `request_read_load`
coverage shape, and captured fresh passing `emel_tests_io` evidence before
archive.

Planning for `v1.26` (issue #63) adds a bounded `src/emel/io/staged_read`
Stateforward.SML actor for constrained-memory chunked/staged tensor loads,
integrated through the existing tensor-to-I/O boundary from issue #60, without
moving tensor residency ownership out of `model/tensor` and without cooperative
coroutine scheduling unless separately approved.

## Current Milestone: v1.26 I/O Staged Read Loading Strategy

**Goal:** Add a dedicated `io/staged_read` Stateforward.SML strategy actor under
`src/emel/io` so tensor-owned model loading can request bounded staging/chunked
read residency into caller-owned target memory through the public I/O boundary,
without folding mmap, full-span single-shot read/copy internals, async
cooperative scheduling, or device strategy behavior into this issue.

**Source:** GitHub issue #63, "Add io/staged_read state machine for
constrained-memory tensor loading" (depends on issue #60 boundary; follows
v1.24 mmap and v1.25 read/copy strategy milestones).

**Target features:**
- Dedicated `src/emel/io/staged_read` machine: events, guards, actions, context,
errors, and public aliases following `AGENTS.md` / `docs/rules/sml.rules.md`
(destination-first transitions, no dispatch-local context handoff, explicit
guard-modeled validation and chunk/stage policy).
- Tensor-to-I/O integration that lets `model/tensor` request staged read loading
through the public `emel/io` boundary while `model/tensor` remains the
residency lifecycle owner; the staged strategy never takes residency
ownership of the target tensor buffer.
- Deterministic multi-stage progress: explicit success, chunk/short-read,
validation, platform-unsupported, and file errors surfaced through states and
events without hidden behavior selection in actions or `detail` helpers.
- RTC-safe externalization of blocking filesystem work per project conventions;
bounded transient resources per stage; no handle pool retained across dispatch
boundaries beyond what prior I/O actors allow.
- Maintained tests, docs, lint snapshots, benchmark snapshots, and model
artifacts updated from maintained commands when required; public reporting
reflects actual staged-read runtime usage.

## Latest Shipped Milestone: v1.25 I/O Read Loading Strategy

**Goal:** Add a dedicated `io/read` Stateforward.SML strategy actor under `src/emel/io`
Expand Down Expand Up @@ -409,8 +446,9 @@ truth anchor and without broadening into generic Liquid-family support.

### Active

- Next milestone requirements are not defined yet. Run `$gsd-new-milestone` to choose
the next scope.
- v1.26 defines scoped staged/chunked constrained-memory loading under
`src/emel/io/staged_read` with tensor-owned residency (see
`.planning/REQUIREMENTS.md` and `.planning/ROADMAP.md`).

### Recently Validated

Expand All @@ -423,6 +461,9 @@ truth anchor and without broadening into generic Liquid-family support.
helpers.
- v1.25 kept mmap changes, staged/chunked read policy, device-specific loading, cooperative
async loading, new model families, and broad public API expansion out of scope.
- v1.26 is the dedicated follow-on for staged/chunked constrained-memory reads; it keeps
cooperative coroutine scheduling and device-specific strategies out of scope unless
separately approved and must not regress shipped mmap or bulk `io/read` semantics.

### Validated

Expand Down Expand Up @@ -581,8 +622,10 @@ truth anchor and without broadening into generic Liquid-family support.
## Context

This remains a brownfield repository with an existing codebase map under `.planning/codebase/`.
The repo stays governed by `AGENTS.md` and `docs/rules/sml.rules.md`. `v1.21` is the latest
shipped milestone, optimizing the mandatory quality gate with manifest-backed selective runners,
The repo stays governed by `AGENTS.md` and `docs/rules/sml.rules.md`. `v1.25` is
the latest shipped I/O milestone; `v1.26` plans constrained-memory staged reads
below the same boundary. Earlier shipped work includes quality gate optimization
(`v1.21`) with manifest-backed selective runners,
conservative fallback, and parallel lane reporting. The current maintained state includes repo-owned
EMEL generation, embedding, diarization, and Whisper ASR lanes plus pluggable parity and benchmark
tooling that publishes through canonical compare/benchmark contracts without shared runtime state.
Expand All @@ -591,9 +634,9 @@ from the top-level quality-gate orchestration. `v1.21` shipped from issue #58 an
mandatory validation or change benchmark/parity semantics. `v1.22` shipped from issue #59 and made
`model/tensor` the canonical owner of tensor load, bind, evict, and residency behavior. `v1.23`
shipped from issue #60 and added the missing `emel/io` orchestration boundary under tensor-owned
residency while explicitly deferring concrete mmap, read/copy, staged, chunked, and asynchronous
strategy machines. `v1.24` starts issue #61 and is the first concrete strategy milestone: mmap
only, under `src/emel/io`, with tensor residency still owned by `model/tensor`.
residency while deferring concrete strategy machines to follow-on milestones (mmap #61,
read/copy #62, staged read #63). `v1.24` shipped mmap; `v1.25` shipped bulk read/copy. `v1.26`
owns constrained-memory staged reads under issue #63.

## Constraints

Expand Down Expand Up @@ -634,11 +677,16 @@ only, under `src/emel/io`, with tensor residency still owned by `model/tensor`.
not change the shipped mmap runtime, add staged/chunked constrained-memory policy, add
device-specific or cooperative async loading behavior, or move tensor residency lifecycle
ownership out of `model/tensor`.
- **Staged read scope**: `v1.26` implements bounded staged/chunked constrained-memory reads under
`src/emel/io/staged_read` beneath tensor-owned residency. It must not regress shipped mmap or
bulk read/copy strategy machines, introduce cooperative coroutine scheduling, add device-specific
strategies, or move tensor residency ownership out of `model/tensor`.

## Key Decisions

| Decision | Rationale | Outcome |
|----------|-----------|---------|
| Start v1.26 from GitHub issue #63 as the `io/staged_read` constrained-memory milestone | v1.25 shipped bulk read/copy; constrained-memory staging is the next narrow strategy slice under tensor-owned residency and the issue #60 boundary | ⏳ Planned |
| Start v1.25 from GitHub issue #62 as the `io/read` loading strategy milestone | v1.24 shipped the mmap strategy and left read/copy as the next narrow concrete strategy path beneath tensor-owned residency | ✓ Shipped |
| Start v1.24 from GitHub issue #61 as the `io/mmap` loading strategy milestone | v1.23 established the `emel/io` strategy boundary and explicitly deferred concrete mmap behavior; issue #61 is the next narrow strategy path to land beneath tensor-owned residency | ✓ Shipped |
| Start v1.23 from GitHub issue #60 as the `emel/io` boundary milestone | v1.22 moved tensor residency ownership into `model/tensor`; the next architecture step is the explicit I/O strategy seam beneath tensor-owned residency before concrete mmap or staged strategy work lands | Phase 203 closeout cleanup |
Expand Down Expand Up @@ -697,4 +745,4 @@ This document evolves at phase transitions and milestone boundaries.
4. Update Context with current state

---
*Last updated: 2026-05-04 after starting v1.24 I/O mmap loading strategy milestone*
*Last updated: 2026-05-07 after starting v1.26 I/O staged read loading strategy milestone (issue #63)*
Loading