docs(stream-install): mark one-pass provider complete

NEXT_STEPS item 2 still described the old per-file unrar provider shape even
though the current shared provider now performs one technical listing pass and
one sequential unrar payload pass per archive. Update the roadmap so the next
implementation slice starts at the remaining solid-archive policy work instead
of chasing an already-replaced extraction loop.

The item 3 wording now keeps the solid/non-solid archive fork explicit without
suggesting the current provider still needs to be swapped merely to avoid
per-file extraction.

Test Plan:
- git diff --check

Refs: NEXT_STEPS.md item 2
This commit is contained in:
2026-06-07 21:40:48 +02:00
parent 40697a73e5
commit c313f7c9ae
+13 -10
View File
@@ -13,22 +13,25 @@ product-ready.
and hands fetched file details to `StreamInstallGame` instead of the normal
download command.
2. **Replace per-file `unrar p` with a final archive provider**
2. **Done — Replace per-file `unrar p` with a final archive provider**
The prototype provider is intentionally simple: `unrar lt`, then `unrar p`
per file. Good for non-solid archives, bad for solid archives. Final shape
should be a one-pass provider with real entry boundaries, likely via libunrar
or a purpose-built wrapper.
The shared external `unrar` stream provider now runs `unrar lt` once for the
archive metadata and one sequential `unrar p` pass per archive for payload
bytes. It frames directories, file starts, file chunks, and file ends from
the technical listing, so CLI and GUI callers use one purpose-built provider
instead of a per-file extraction loop.
3. **Handle solid archives deliberately**
Add archive inspection that decides:
The provider exposes the RAR `solid` flag in `ArchiveBegin`; the remaining
work is to make that flag a tested policy decision instead of an incidental
stream attribute. Add archive inspection that decides:
- non-solid: per-file streaming is fine
- solid: one sequential archive pass only
- non-solid: current one-pass streaming is fine
- solid: prove and enforce one sequential archive pass only
This is the big architectural fork we discussed, and the prototypes
provider is the thing to swap.
This is the big architectural fork we discussed: keep non-solid and solid
archive handling explicit in the provider contract and scenario coverage.
4. **Decide the integrity model**