DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path change-requests/cr-2026-181-loomworks-b14-spreadsheets-and-decks-v0_1.md

DUNIN7-M4 — INFRASTRUCTURE CHANGE REQUEST

CR-2026-181 — B-14: read spreadsheets and slide decks (v0.1)

Version. 0.1 · Date. 2026-08-06 · Author. Claude.ai (drafting) / Marvin Percival (approving). Target. /Users/dunin7/loomworks-engine (+ surface if the upload affordance needs extending — CC confirms at Step 1). Baseline. Post CR-2026-180. CC confirms exact HEAD at Step 0. Companion to. loomworks-upload-pathway-investigation-v0_1; whatever the upload pathway's current state is after CR-2026-159's completion — CC reads it at Step 1. Charter. Autonomous regime. Status. Ready for CC execution. Largest item in Wave 1.


1. Summary

The upload pathway ingests documents into Memory. Spreadsheets (.xlsx) and slide decks (.pptx) are not read. This CR adds them.

Independent of everything else in Wave 1 — no dependency in either direction. Can run in parallel if capacity allows.


2. Scope

Step 1 — read the existing pathway (read-only). How does an existing supported type flow from upload to assertions in Memory? Name the extraction point, the provenance attachment point, and how the type is declared/dispatched. Report before building — the new types follow this path, they do not get a parallel one.

Step 2 — extraction. Add .xlsx and .pptx extraction, following whatever library convention the engine already uses for existing types. Two questions CC settles at Step 1 and reports rather than asking:

Step 3 — provenance. Contributions from these types carry the same outward provenance-threads as existing types (document, contributor, scope). No new origin kind. If the existing thread model can't express "cell B7 of sheet 2," halt and report — extending the provenance model is seed-adjacent, not a CR decision.

Step 4 — surface. If the upload affordance filters by extension, extend it. Only-show-what-is-available applies: if a type isn't supported, it doesn't appear as an option.


3. Out of scope


4. Build steps

| Step | What | Mode | |---|---|---| | 0 | Pre-flight. | Auto | | 1 | Read the existing upload pathway; report the extraction/provenance/dispatch points and the two shape decisions. | Auto | | 2 | .xlsx extraction + tests. | Auto | | 3 | .pptx extraction + tests. | Auto | | 4 | Provenance threads for both. Halt if the model can't express cell/slide-level location. | Auto, conditional halt | | 5 | Surface affordance if needed. | Auto | | 6 | Full engine suite (+ surface sweep if touched); ruff 0; mypy at/below baseline. | Auto | | A | Checkpoint. | Checkpoint | | 7 | Tag cr-2026-181-b14-spreadsheets-and-decks. Push. | Auto |


5. Acceptance gate

  1. An .xlsx and a .pptx each ingest to Memory as assertions with provenance.
  2. Extraction shape decisions reported with reasoning, consistent with an existing type's precedent.
  3. Speaker-note handling stated explicitly.
  4. Surface offers these types only if actually supported (only-show-what-is-available).
  5. Full suite green, both gates clean.

6. Kickoff prompt


Execute CR-2026-181 v0.1 at ~/Downloads/cr-2026-181-loomworks-b14-
spreadsheets-and-decks-v0_1.md. Confirm the CR number against the
ledger first.

B-14: the upload pathway doesn't read .xlsx or .pptx. Add them.
Independent of the rest of Wave 1 — no dependency either direction.

Step 1 first: read how an existing supported type flows from upload to
assertions in Memory. The new types follow that path; they don't get a
parallel one.

Two shape decisions are yours to settle at Step 1 and report, not ask:
how a spreadsheet decomposes into assertions (row / sheet / region —
pick what's consistent with existing types' precedent), and speaker
notes (default: include, marked distinctly from slide body — silently
discarding authored content is the worse failure). State what you did
and why. Halt only if no existing type gives you a usable precedent.

HALT at Step 4 if the provenance thread model can't express something
like "cell B7 of sheet 2" — extending the provenance model is
seed-adjacent, not a CR decision.

Out of scope and don't let it creep: rendering TO these formats (that's
a render-type question needing a seed decision), charts/images/embedded
objects, and formula evaluation (values as stored).

Baseline: post CR-2026-180. Confirm current HEAD at Step 0.

DUNIN7 — Done In Seven LLC — Miami, Florida CR-2026-181 — B-14 spreadsheets and decks — v0.1 — 2026-08-06