Automerge backed Markdown editor for the Atmosphere
reams docs verification workspace-flow-completion.md
9.8 kB
Markdown
at main

Workspace flow completion #

  • Verified: 2026-10-05
  • Last updated: 2026-10-05
  • Worktree: .worktrees/progressive-startup, feature/progressive-startup
  • Previous checkpoint: fd954878
  • Status: remaining implementation verified; no merge/deployment

Result #

All agreed mutation paths use the same route: DocumentManager mutates authoritative Automerge documents; FileIndex interprets current folder handles and updates the disposable plugin projection. Vault no longer registers files/folders directly, reparents/rekeys objects after commands, or separately removes structural entries. Existing AppRuntime coordinates opening. The bounded indexing walk remains because cached TFiles do not prove complete membership; it shares actual handle interpretation.

The remaining boundary ratchet sites are 10 / 10 reviewed / 0 violations, down from 15 at the preceding checkpoint and 18 before the text-create slice. Removed exceptions were deleted rather than replaced with new allowances.

Verification #

  • 1353 passed, 0 failed, 54 files in the integrated targeted suite. JSON: /tmp/opencode/finished-flow-unit.json.
  • TypeScript, lint, whitespace checks and both edition production builds pass.
  • Edition source and final bundle boundaries pass.
  • Focused Classic/native repository tests cover creation durability, observer exceptions after commit, moves and metadata, unknown producer fields, adoption, ancestry changes, nonrecursive deletion, md/png entry conventions, invalid paths, and repair of disposable cached objects.
  • Adversary findings were repaired; the final follow-up cleared the scoped adoption/type/name boundaries. Its source inspection is not independent test execution. Facade stub fixtures support API checks, not provider conformance.

The already-recorded baseline-identical core-graph allowlist failure is outside this targeted suite; this report does not claim the entire npm test lane is green.

Real application evidence #

Production-built ATProto Reams/CM6 with real disposable reference PDS and HappyView SQLite, Types/Records enabled. Browser/fuzzer work was not delegated.

Final serialized matrix plus mutation probe passed in 90 seconds: /tmp/opencode/finished-flow-app-mutations.json. The seeded measurement dataset had 61 creation / 320 operation records, target 317 operations before ordinary app-generated records. Probe operations happen after measurement and are cleaned up through the public Vault API.

Scenario Baseline ca739993 Final candidate
Warm readiness 1007 ms 991 ms
Cold readiness 1696 ms 1304 ms
Cold, +75 ms per space request 7659 ms 5604 ms
Uncached click, local / delayed — 86 / 203 ms
Restored-outbox warm readiness — 967 ms

The candidate retains six cold inventory requests, zero known unrelated bodies before cold readiness, automatic restored-outbox publication, and remote updates reaching mounted CM6 without foreground sync.

The opt-in REAMS_WORKSPACE_MUTATIONS=1 lane additionally exercises actual public folder/text/binary creation, a move-plus-rename retaining the event object, byte roundtrip, foreign-file adoption, and recursive delete with one create/rename notification per relevant operation. It finishes with repository flush.

An earlier successful run overlapped edition builds and showed elevated timing; it is functional evidence only. The final run above was serialized to avoid that known contention. Individual local samples include prior inventory reuse, not an isolated refactor speedup or production percentile/paint claim. Classic is covered by repository/React/unit checks and production build, not an additional browser run.

Scope and incident record #

No graph framework, placement schema, persisted membership model, or parallel document-availability store was added. Existing subscription records retain their actual handles; pending operation inputs/evidence are scoped to the operations. Edition authority/adoption policies and the verified library remain unchanged.

One delegation prompt omitted the absolute worktree location and a worker edited main's rename metadata and added a test there. The exact worker additions were isolated and removed; main's pre-existing welcome/starter-template changes were preserved. The fix and tests were applied in the intended worktree. Subsequent handoffs explicitly named the absolute worktree and prohibited main edits.

No production data, tracker database, protected ports, merge or deployment was used as verification. Upstream readback acceptance and shared-space/schema work remain outside this plan's scope.

2026-10-05 — remaining ratchet sites and isolated performance check #

The ten reviewed sites are not ten equivalent architectural bypasses:

Sites Meaning Recommended treatment
3 UI/router adoption calls Consumers call the guarded Vault adoption API Keep behavior; scanner should recognize guarded entrypoints
2 FileIndex registration calls The canonical reconciler constructs its projection Keep behavior; model these as the owner boundary
3 Vault raw-folder reads Adoption/collision preflight reads Tighten to validated current folder-handle reads
2 synced-search raw-folder reads Discover existing hidden buckets without creating files Audit validation and reuse existing state primitives; not public traversal

Retain the ratchet, but stop presenting its raw total as a debt/bypass count. Correct owner/entrypoint classifications with meaningful negative tests rather than mechanically driving the count to zero or growing the whitelist.

To separate the final mutation refactor from earlier inventory reuse, a detached fd954878 baseline with the same progressive.4 library pin was measured against the final candidate. Serialized real-service run passed, including the mutation probe, in 90 seconds. Dataset: 61 creation / 322 operation records. JSON: /tmp/opencode/finished-flow-isolated-performance.json.

Scenario fd954878 Final candidate
Warm readiness 862 ms 856 ms
Cold readiness 1544 ms 1058 ms
Cold, +75 ms per space request 5691 ms 6166 ms
Cold body requests before readiness 55 56
Delayed body requests before readiness 55 58

Warm is effectively unchanged and local cold is faster in this sample. The delayed lane is 475 ms / 8.3% slower, with three additional body requests. That is a regression signal to investigate, not evidence for claiming performance neutrality. Single samples are not distributions; request counts and traces should be compared before attributing cause. Mutation throughput, large-tree scaling, memory and Classic browser performance were not measured by this startup matrix.

2026-10-05 — request trace resolves the regression signal #

Completed-flow progress committed as cb763f21. User accepted retaining the ten ratchet exceptions and requested investigation of the body-request difference. Optional per-key tracing records document labels, unique rkeys, timing and dataset counts at each launch. A baseline/candidate/baseline-repeat run uses the same progressive.4 library and exercises the real app mutation/outbox/live-update checks. It passed in 90 seconds. JSON: /tmp/opencode/finished-flow-request-trace.json.

Scenario Baseline fd954878 Candidate Baseline repeated afterward
Warm readiness 843 ms 829 ms 793 ms
Cold readiness 1112 ms 1107 ms 1128 ms
Cold, +75 ms per space request 5973 ms 5857 ms 6004 ms
Cold bodies before readiness 56 58 60
Delayed bodies before readiness 56 58 60
Cold inventory requests 6 6 6

The shared remote fixture is mutable. Operation records at scenario start advance from 323 → 324 → 325 → 327, even though the original dataset was captured only once before all measurements. Each request key is unique within its case: there is no repeated-body-fetch increase in this trace.

The delayed extra bodies are additional history for existing state files:

  • recent-visits.json: 2 → 4 → 5 unique records fetched.
  • plugin-enabled.json: 3 → 3 → 4 unique records fetched.
  • The candidate's local-cold case also fetched one daily-notes plugin-data record; its delayed case did not. Case-specific plugin/settings consumption is visible in the trace instead of being mistaken for duplicate fetches.
  • Vault root, state root, preferences, the other directory, Welcome, templates data and the image have the same per-document body counts across delayed cases.

The old build's increase to 60 after the candidate is direct evidence of run-order and history drift. Six means one listRepos + five listRecords, not all requests; body requests reconstruct selected documents' actual histories.

This run finds no material timing difference or confirmed refactor-specific request regression. It explains why the previous 8.3% single-sample signal should not be attributed to the implementation. It is not a statistical significance test or proof of identical remote history. For precise future benchmarking, restore equivalent service state per case or report per-case history/keys and run order. No production code was changed to suppress valid history or state updates.

Reproduce with the earlier real-app command and these additional environment flags:

REAMS_PROGRESSIVE_BASELINE=/tmp/opencode/refactor-checkpoint-baseline
REAMS_PROGRESSIVE_TRACE=1
REAMS_PROGRESSIVE_REPEAT_BASELINE=1
REAMS_WORKSPACE_MUTATIONS=1
REAMS_PROGRESSIVE_OUTPUT=/tmp/opencode/finished-flow-request-trace.json