DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path standing-notes/dunin7-build-list-v0_30.md

DUNIN7 — the build list — v0.30

Version. 0.30 Date. 2026-08-07 Status of this document. The single guide we work to. This is the one page the Operator reads at each sitting. Charter v0.1 ratified 2026-07-30; autonomous regime in effect. Day-to-day status lives in current-status/dunin7-status-brief. Author. Claude.ai; v0.3–v0.4 and v0.10 by Claude Code; the rest by Claude.ai.

Changes from v0.29. Five items that existed only as comments, notes, or nobody's job are now tracked — and two of the old ones closed by being measured rather than built. B-59 to B-63 are added; B-12 and B-30 close. Nothing waits on you, but B-63 is a seed-level question when you want it.

> Why five at once. Each was produced by a change request in the 175–182 run and filed with a document behind it, but none was on this list. The one that prompted the sweep is B-60: it lived as an in-code comment describing itself as a follow-on, which is not the same as being tracked. The other four were in the same state.

Changes from v0.28, carried. Nothing waits on you. Both open questions are answered, B-12's unread fact was measured, and B-16 is closed — **the first time this list has had an empty Waiting on you section since it was written. Also: the foundation document's two-month-old error is corrected and so are the documents that inherited it. A duplicated block in the previous version's Waiting on you is removed.**

Changes from v0.27, carried. Everything is deployed, and looking at the deployed product found six things. Thirteen change requests went live in one act and were verified one at a time in the running system. Six new items, B-53 to B-58, five of them found by using the product rather than by reading the code.

Changes from v0.26, carried. B-8 scoped and joined B-12 on the Operator's side of the line.

Changes from v0.25, carried. B-12 scoped; the fourteen small items grouped.

Changes from v0.24, carried. B-11, B-50 and the gates are all closed.

Changes from v0.23, carried. One claim about a tag corrected.

Changes from v0.22, carried. B-49 is closed, and it was worse than the item described.

Changes from v0.21, carried. The clean-report cluster is closed and one item opened.

Changes from v0.20, carried. A recommendation corrected and three items added that nobody knew were there.

Changes from v0.19, carried. B-10 is closed.


What to do next

Nothing waits on you. Both questions are answered, the one unread fact is measured, and everything merged is running.

The largest thing available: B-8 slice two — teaching the Companion to do things in the other three rooms rather than only describe them. Q-6's answer unblocked it. It has a scoping note and needs a change request.

Or the small work, grouped below so it can be swept. Four of the group closed in the 175-182 run and one new small item joined it (B-60).

B-48 is closed — both checkers now gate every push, one at zero tolerance.

The one thing that will eventually want you: B-63. Nothing marks an answer as written by a model, and the seed does not say whether anything should. It blocks nothing today.


How this list works

It is written for you first. Technical cross-references sit at the end of each line for the sessions.

The highest-numbered version is always the truth — past nine, sort as numbers, not text.

Some numbers are deliberately absent. Where a count grows every time something is built, this list names the mechanism and says to count it at scoping time. A figure written here is wrong before it is read.

The statuses: READY · IN PROGRESS · NEEDS YOU: decision · NEEDS YOU: act · WAITING · DONE · PARKED.

The finish line, in one sentence: the full live demonstration works with no excuses — a firm's own document becomes a working engagement, information flows in, the summary view appears, a finished report comes out, a question gets a truthful answer with its sources shown, and an outsider can contribute without seeing anything else.


What just closed

The foundation document named the wrong authorization mechanism for two months, and so did everything built on it.

A decision in June moved authorization from OVA to GRANTHA — and the seed, which every session reads first, kept describing the old model. Five places. Anything written against the seed in that window inherited it: a scoping note, two vertical documents, an investigation. A correction note filed in July swept the arc it was written inside and never looked at what was written in parallel.

All of it is now corrected, and the correction took three seed versions rather than one:

v0.13 replaced the superseded model with the current one. v0.14 removed the mechanism entirely — because describing a mechanism is what made the seed go stale in the first place, and swapping one description for another leaves it exposed to the same failure on a slower clock. The seed now names which seat each substrate occupies and nothing more. (Operator direction: while basic functionality is being tested, these are named by placement, not function.)

Two of the four inherited documents were corrected. One needed nothing — its stale text lives in a version two behind the current one, and the version anyone actually reads was already clean. Naming it as a live problem was itself the error, and that is recorded.

> The finding worth keeping. The sweep searched for stale text and reported the files containing it. It never asked whether those files were the current version of their document. A superseded version carrying a superseded claim is the record working; the question is always whether the current version carries it.


Part 1 — The main line

B-1 to B-7. DONE. The four rooms exist: Memory, Manifestation, Shaping, Rendering.

B-8. Teach the Companion the last three rooms. SLICE ONE DONE · slice two READY, unblocked by Q-6.

Slice one shipped and is live. Three words came off a forbidden list and the Companion can now name and describe all four rooms. Verified in the product. (CR-2026-170; engine 1706248, tag companion-room-reads-v0_1.)

Slice two — the writes. One test governs it: can you know what you are approving from the sentence you typed? Deriving a summary passes. Asking for a draft passes in kind but not in cost — you would not know the price. Confirming a Shape fails outright, which is why its control stays on a screen that shows the outputs first (Q-7, answered: defer).

Q-6's answer is the prerequisite it was waiting for. Every answer a model writes will show the notes it was given; answers the system assembles will not, because they already show their own material. A write proposed from material the Companion cannot show would be an approval you could not check — that is now handled. (scoping-notes/loomworks-b8-slice-two-scoping-note-v0_1.)

B-9. The "show me where this came from" walk. DONE.

B-10. Outside contributors, safely. DONE.

B-11. Make answers truthful. DONE.

B-12. Make the record searchable. DONE — closed as already satisfied. Nothing was built and no constant was raised.

The measurement that closed it also corrected it. Every figure in the previous version of this line is right, and they count the wrong thing. Twenty-three engagements hold notes and the largest holds fifty-eight — but that fifty-eight counts notes in every state, and recall reads only the settled ones. That engagement holds ten settled. The largest anyone actually works in holds thirteen, against a window of fifty.

The window has never bound anything. Raising it would have solved a problem no project has. Every settled note in the entire system would fit in the model's context several times over.

> Why the error was invisible. The counts were all correct. Only the quantity was wrong. (CR-2026-179; completion-records/loomworks-cr-2026-179-b12-completion-note-v0_1.)

One thing is near binding, and it is the one already parked. The universal commons holds thirty-nine settled notes against the window of fifty — eleven of headroom, and it grows with every person who joins rather than with work on any project. The parked question now has a number.

> One thing does grow without bound, and it is not a project. The universal commons — the engagement every account joins automatically — holds the most of anything, and it grows with every person who signs up and contributes. Any window will be exceeded there eventually; raising the limit only moves the date. That is a different question from search, and probably a different answer: a shared space everyone contributes to is not the same thing as your own notes.

What remains before the constant is raised: measure what the model's prompt actually holds against fifty-eight notes, and raise the limit to a figure someone measured rather than a round number that sounds safe. Small. (scoping-notes/loomworks-b12-scoping-note-v0_6.)

B-13. Ask your engagement. WAITING on B-61 — and the ask itself is already built. A read against the code found the question, the truthful answer, the stated boundary and the sources all in place. What is missing is one clause of the item's own wording — "every source shown" — which B-61 breaks. Settle B-61 and this closes on what exists. (CR-2026-180 halted rather than building what was already there; inspection-briefs/loomworks-cr-2026-180-b13-step-1-findings-v0_1.)

B-14. Read spreadsheets and slide decks. READY (independent).


Part 2 — Side work

The clean-report cluster — closed

B-33, B-34, B-42. DONE. Three symptoms of one problem: nobody could read a clean report as clean, because a standing exception had to be held in mind — and a standing exception is how a second failure hides. They were three of six; the other three are below. (CR-2026-166.)

> The inventory matters more than the zero. Lint now reports nothing. A zero standing over an unlabelled exception is the same defect as a green report standing over a known failure — so every exception is categorised, and the ones covering real defects carry the item that will fix them.

The small work, grouped

Twenty items, and grouping them is the point. Each is currently its own change request; taken in one or two passes they are perhaps two days. Ordered by how self-contained they are.

Single-line or near it. B-35 (a missing key reports a crash instead of a service being unavailable) · B-44 (things with titles displaying as untitled) · B-57 (a screen that appears to argue with itself). (B-53, B-58, B-26 and B-59 have since closed.)

Small builds, one file or two. B-52 (an answer's sources vanish on refresh) · B-32 (no way to rebuild a summary the record has moved past) · B-36 (no way to retire a render) · B-37 (a failed production looks identical to a running one) · B-38 (one room still uses its own state handling instead of the shared one) · B-47 (credentials can only be issued through the interface) · B-54 (nothing requires a render to have a sequence number — its code half is done; the fixtures and the constraint remain) · B-55 (a screen claiming something it cannot check) · B-56 (a development sign-in on the live perimeter) · B-60 (where a document came from is dropped before Memory).

Small but needing a decision first. B-45 (wrap the five stand-up commands, or leave them visible) · B-46 (where implementation notes should live) · B-51 (four components rebuilt on every change — and whether anyone loses anything is unread).

Scoping, not building. B-39 (agent identities invented and recorded) · B-40 (where contributed Markdown should route) · B-61 (an answer shaped by material it cannot cite — blocks B-13) · B-62 (two windows on the same notes) · B-63 (nothing marks an answer as written by a model — seed-level). All five now have scoping notes or findings filed.

The three nobody had named

B-48. The engine has quality tooling it has never run. DONE. Both checkers now run on every push — one as a ratchet against its existing backlog, one at zero tolerance with its backlog cleared. Every gate was deliberately broken and observed failing before it was trusted. (CR-2026-173, CR-2026-174.) Originally: Two standard checkers are configured and shipped, neither has ever been run as a gate, and both report large backlogs. This is not a cleanup item. The question is what a gate ought to check, and the answer is unlikely to be everything currently reported. A rule that has never run has never been agreed to.

B-49. Nothing was checking anything. DONE. The engine's single check had never passed — not once since June — and the surface had none at all. A permanently-red check is worse than none, because it teaches everyone that red means nothing. Both repositories now check themselves on every push, and every gate was deliberately broken and observed failing before it was trusted. (CR-2026-167.)

> One thing to keep an eye on. The engine's suite takes about a quarter of an hour on a fresh machine. That is a real cost on every push, and if it grows it will start to be paid in people not waiting for it.

B-50. Building the surface is not the same as checking it. DONE. The build only inspects what the running application reaches, so the test tree was invisible to it — and that is where the errors were. All drift in test fixtures; none silenced with an exception.

Everything else

B-16. Update the foundation document. DONE. See What just closed. The seed is at v0.14, committed.

B-17. The portfolio filter. READY. B-18. File the four protocol requirements. READY. B-19. Keep this list alive. IN PROGRESS.

B-25, B-27, B-28, B-29, B-41. DONE.

B-26. Correct the record about door 3. DONE. Two corrections, filed beside the audit rather than edited into it: the finding blamed door 3, but the fault was eight unregistered event types — every door and every upload — and it is now fixed, all eight verified registered. (inspection-briefs/loomworks-walk-audit-w1-door-3-correction-note-v0_1.)

B-30. The trap that caused B-27. DONE — closed as detectability, not as repair. There was nothing to repair: the dependency is correct for the routes that carry the path segment, and a walk of all 228 routes found no live instance. The defect the item names is the suite's blindness, and that is gone — a guard now walks every route's dependency tree and fails if one requires something its own path cannot supply. Measured while proving it: the same broken route a request-based test answered 200 for would have refused every real caller. (CR-2026-178.)

B-31. The post-admission lifecycle investigation. READY to open. An investigation, not a build.

B-32. The re-derive button on the Manifestation screen. READY — small.

B-35. A missing key looks like a crash. READY — small.

B-36. A way to retire a render. READY — small.

B-37. Show when a shape's production has failed. READY — small (engine).

B-38. Bring the Rendering screen onto the shared contract. READY — small.

B-39. Ephemeral agent identities. READY to scope. B-40. Where contributed Markdown should go. READY to scope.

B-43. Walk the other way. READY — costed.

B-44. Things with titles displaying as untitled. READY — cosmetic, confirmed in two places. On a walk, a Shape's title comes back empty. And every shape in the Shaping room displays as "Untitled shape."

B-45. One command instead of five. READY — deliberately deferred.

B-46. Where documents live. READY to scope — small. Implementation notes land in the code repositories; the filing convention says documents live in the record. A session orienting from the record alone cannot find them.

B-47. The issuance screen for contributor credentials. READY — small. The whole pathway exists in the engine and no screen was built for it, deliberately, as a named follow-on.

B-51. Four components rebuilt on every change. READY to scope. What is unread decides the priority: whether any of the four holds something a user would notice losing — a scroll position, a selection, where the cursor is.

B-52. The sources vanish on reload. READY — small. The answer survives a refresh; its sources do not.

B-53. A render's sequence number never arrives. READY — small, and well diagnosed. The number is assigned correctly, was backfilled onto old records, and is declared all the way through — the list query simply never asks for the column. The code that reads it looks up a key that was never fetched and gets nothing back, which is indistinguishable from a record that genuinely has no number.

B-54. Nothing requires that number to exist. READY — small. The only rule prevents two from sharing one; nothing requires one at all.

B-55. The screen says "of its type" without knowing what type is. READY — small. An unverified claim, in a product whose posture is that claims should be checkable.

B-56. A development sign-in is reachable on the live perimeter. READY — small. It refuses correctly and nothing is exposed. But it offers something it cannot do.

B-57. A screen that appears to argue with itself. READY — cosmetic. One clause fixes it: the counter has moved, the content has not.

B-58. A superseded document still says it was never done. DONE. Corrected. The proposal was installed the same day it was written; the header was the only thing that disagreed. (Perimeter persistent-run proposal v0.2; v0.1 stands as a sibling.)

B-59. A shape's sequence number never arrives. DONE. The same defect B-53 fixed for renders, in the Shape path — the list query never asked for the column, so the reader got nothing back, which is indistinguishable from a shape that genuinely has no number. Found and deliberately left by CR-2026-171. Two queries carried it, not one; the second fed the downstream-impact screen. (CR-2026-175.)

B-60. Where a document came from is recorded, shown once, and then dropped. READY — small, and it affects everything already built. When a file is read, the extraction records its structure — a Word document's headings, a PDF's per-page markers, which path the image reader took. That structure reaches the screen that uploaded it and is then discarded before Memory. The Memory event stores an empty list where it should store the chain.

It is not a limitation of the model. The field is deliberately free-form and already carries per-page and per-path detail elsewhere; the writing step simply leaves it empty, and has since it was built. Today it lives as a comment in the code describing itself as a follow-on — which is why it is here now. Whatever lands for spreadsheets and slide decks inherits the same drop on arrival. (uploads.py:956; found during CR-2026-181 Step 1.)

B-61. An answer can be shaped by material it cannot cite. READY to decide — and it blocks B-13. Every conversational turn carries a block of recent notes into the model's context. That block never appears in the answer's sources; only the notes fetched by an explicit recall question do. So on the one turn where the product promises every source is shown, the model has been handed material the answer cannot point at.

This is why B-13 is still open — "every source shown" is B-13's own wording. It sits against B-11's guarantee and the posture that claims should be checkable. Not a sizing question: making the two windows match, in either direction, leaves it exactly as it is. (scoping-notes/loomworks-recall-window-tier-2-relationship-scoping-note-v0_2 §3.)

B-62. Two windows on the same notes, and nobody chose the relationship. READY to scope — small. The standing context carries twenty notes; an explicit recall question fetches up to fifty. They are not required to match, but the code claimed they already did and that comment was false for as long as it stood. What relationship they should have is undecided. Measure first: a standing context of fifty would run roughly three times its stated budget, which likely settles it. (Same note, §5.)

B-63. Nothing marks an answer as written by a model. NEEDS YOU: decision — seed-level. No marking exists in either repository, and the seed is silent on it. What the seed does commit to is adjacent and different: that Loomworks is built by AI under operator direction, and the faithful-clerk posture for who approves state transitions.

Recorded so it isn't mistaken for settled: a change request in this run asserted non-suppressible AI origin marking as an existing commitment. It was written from recollection, not from the seed, and that change request is not evidence the commitment exists. The near neighbour that likely produced the recollection is the brass mic — which marks whether you spoke or typed, the opposite direction. (inspection-briefs/loomworks-cr-2026-180-b13-step-1-findings-v0_1 §4-5.)


Part 3 — Your track

B-20. The marketing website. READY. B-22. Package Stele. WAITING (background). B-23. The security story. READY. B-24. Investor-visible FORAY. READY.


Part 4 — Deliberately parked

Restricted-visibility slices 2–3 · target-hosted visibility · protocol wire-format changes · OVA's remaining standalone role · cross-fund questions · the stray zip file in the record's working tree — every session reports it and leaves it alone; a one-line decision ends that · how many live records carry a fabricated author · whether playground_dev's schema matches what the chain now produces · whether a held shape whose job failed is ever cleaned up · how the universal commons should be searched — it grows with adoption rather than with work, and it is a different question from B-12.


Waiting on you

Nothing. For the first time since this list was written.

Everything merged is running, deployed 2026-08-06 and verified in the product one item at a time.

Both questions are answered. Sources will appear on every answer a model writes, and not on answers the system assembles, because those already show their own material (Q-6: split). Confirming a Shape stays on the screen for now, and reopens after the Companion's other writes have been used (Q-7: defer).

B-12's unread fact is measured. The largest engagement anyone works in holds fifty-eight notes against a window of fifty. Raising a constant closes it for everything that exists — and the commons, which grows with adoption rather than with work, is parked as its own question.

The seed is current and committed at v0.14.

Two decisions sit on the queue and block nothing, unchanged: per-statement provenance, and whether a walk should use the event identifier. Neither has a deadline and neither stops anything.

Everything else proceeds without you.


DUNIN7 — Done In Seven LLC — Miami, Florida DUNIN7 — the build list — v0.30 — 2026-08-07