Skip to content

docs(rooms): a todo list, in the shape this repo already uses for them - #1381

Open
stormer78 wants to merge 2 commits into
mainfrom
docs/data-rooms-todo
Open

docs(rooms): a todo list, in the shape this repo already uses for them#1381
stormer78 wants to merge 2 commits into
mainfrom
docs/data-rooms-todo

Conversation

@stormer78

Copy link
Copy Markdown
Contributor

tasks/ already holds vta-architecture-todo.md and vtc-architecture-todo.md — same status legend, same sizes, PR numbers recorded as things merge. Rooms had none, so its backlog lived in conversation. That is exactly how data-rooms-epoch-anchoring.md came to sit marked "open question, not a plan" for two days on a question nobody outside one thread could see.

Five phases, in dependency order:

Phase 0 Verified reads — shipped, with PR numbers, because each is the answer to when did this stop being true
Phase 1 Read through the agent — R1.1–R1.5
Phase 2 The witnessed anchor — A2.1–A2.4
Phase 3 The surfaces — plugin client, then the console panes
Phase 4 Off the arc — self_update, commit relay, js-yaml, prune, ZK, Merkle caching, join ceremony

It opens with the three decisions that are settled and not to be re-litigated, since two of them were asked twice in two vocabularies before being answered once.

What is deliberately written down rather than left to be re-derived

  • R1.3 is keyed by room, not host, with the reason. That is the line that buys a fourth comparison the specification does not list — two hosts of one room disagreeing at one headVersion — and it is one word away from being wrong.
  • R1.4 depends on R1.3, explicitly. A refusal that lasts only as long as the process that noticed is not a refusal.
  • R1.5 is "the words", sized and phased like any other task, because serve reads, refuse writes is a rule nobody would guess and a member who is shown only a failure concludes their own agent is broken.
  • X4.1 states what RoomGroup::self_update()'s absence actually means: "a room renews" currently means "a room adds or removes somebody", which is not what renewal means — and §9's lifecycle and every anchor ride renewals.
  • X4.3 records that the standing dependabot "high" is dev-only, via @redocly/openapi-core, and that the real cost is a permanent alert that trains everyone to ignore the list. So nobody repeats the investigation.
  • X4.6 keeps the reason the Merkle store is deliberately uncached: a stale root is worse than a slow one, because the failure it produces is an honest host appearing to equivocate.
  • X4.5 is [!] blocked rather than [ ] not-started — it waits on a working group, not on us.

Documentation only.

`tasks/` holds `vta-architecture-todo.md` and `vtc-architecture-todo.md` —
status legend, sizes, PR numbers recorded as things merge. Rooms had none, so
its backlog lived in conversation, which is exactly how the anchoring note came
to sit blocked for two days on a question nobody could see.

Five phases in dependency order: verified reads (shipped, with its PR numbers,
because each one is the answer to "when did this stop being true"); reading
through the agent; the witnessed anchor; the surfaces; and everything off the
arc.

It opens with the three decisions that are settled and are not to be
re-litigated, since two of them were asked twice before being answered once.

Several things are recorded so nobody re-derives them:

- **R1.3 is keyed by room, not host**, and says why — that is the line that buys
  a comparison the specification does not list, and it is one word from wrong.
- **R1.4 depends on R1.3**, explicitly: a refusal that lasts only as long as the
  process that noticed is not a refusal.
- **X4.1** states what `self_update`'s absence actually means — "a room renews"
  currently means "a room adds or removes somebody", which is not what renewal
  means, and every anchor rides a renewal.
- **X4.3** records that the standing dependabot high is dev-only via
  `@redocly/openapi-core` and that the real cost is a "1 high" nobody reads, so
  the investigation is not repeated.
- **X4.6** keeps the reason the Merkle store is *deliberately* uncached: a stale
  root is worse than a slow one, because the failure it produces is an honest
  host appearing to equivocate.
- **X4.5** is marked blocked rather than not-started; it waits on a working
  group, not on us.
@stormer78
stormer78 requested a review from a team as a code owner September 9, 2026 20:49
`data-rooms-joining.md` (#1386) works the join out to the edge of what the demo
must settle: the mechanism is already decided — the room is addressable and
`room.json` says so — and it must not route through the host, because a join
through a `private` room's host tells it exactly who wants in. What is open is
policy, per tier, and is the one part a spec written now would freeze wrongly.

`data-rooms-demo-site.md` §4.3 already said to upstream this after the demo. The
entry said not-started, which read as nobody having got to it.
@affinidi-appsecurity-bot

Copy link
Copy Markdown

🛡️ AI Agentic Security Code Review — all clear. We checked this change and found nothing to report. Keep shipping secure code!

Note: for major, breaking, or feature-introducing changes, you can always request an in-depth review from the security team.

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