Close the fixed blocker, and record what withdrawal converging faster does NOT mean
Six variations against the real application, one thing varied at a time: the sign-up-breaks-the-next-connection defect is gone. New identity, immediate reload or delayed; an identity already used for several cycles; and the very identity poisoned by the pre-fix code, which now reconnects cleanly three times out of three. So nothing needed healing -- the fix does not merely stop writing the bad state, it makes what was already written harmless. The leaf is deleted rather than graduated: its reproduction method, the stale-server trap it led to, and "a provider gap is not worked around here" all live elsewhere already. The count defect stays open, with its shape now known: it does converge across connections, but takes one more than expected -- the first reconnect still shows zero, the second shows the value. And a correction worth keeping. The explanation offered for why withdrawal converges in a single connection -- that it writes straight to the owner's document instead of depositing -- is contradicted by the code: it deposits its own marker into the same inbox, drained by the same owner routine, "symmetric" by the code's own comment. The asymmetry is real and recorded as verified; its cause is recorded as unknown rather than filled with a plausible story. Same mechanism, same inbox, two connections against one, is a lead worth having honestly. The dev-server caveat is upgraded from inferred to verified, and it is worse than it read: an edit to application source triggers a genuine rebuild, new bundle hash and all, and that rebuild still carries the stale dependency. Only a restart works, and "touch a file to force a rebuild" is now explicitly ruled out as a substitute.
This commit is contained in:
@@ -15,7 +15,7 @@ summary: What is implemented today (event + meeting point lifecycle, profiles, c
|
||||
- User profile, profile update, profile sharing
|
||||
- Friends list (connections), another user's profile
|
||||
|
||||
> **Signing up is wired step by step, and the flow as a whole does not deliver.** Each step is honest: `joinEvent` persists a Participation and deposits into the event's inbox, where its owner reads it; `leaveEvent` deletes the Participation authoritatively (concept `data-layer`, [[caveat_participation-deletion]]); neither succeeds in silence, and the confirmation the user sees follows the write. Driven end to end in a real browser, the sign-up nonetheless **announces a success it does not obtain**: the user is told they participate, the count never moves ([[bug_participant-count-stays-at-zero]]), and their next connection fails ([[bug_signup-breaks-the-next-connection]]). Honest steps do not add up to an honest flow, and nothing short of exercising the whole thing shows it (concept `bdd-testing`, [[cookbook_live-probe]]). Treat the bullet above as *screens reachable*, not as a working journey. Public discovery — a user seeing another user's public event — works too.
|
||||
> **Signing up is wired step by step, and the flow as a whole does not yet deliver an honest count.** Each step is honest: `joinEvent` persists a Participation and deposits into the event's inbox, where its owner reads it; `leaveEvent` deletes the Participation authoritatively (concept `data-layer`, [[caveat_participation-deletion]]); neither succeeds in silence, and the confirmation the user sees follows the write. Driven end to end in a real browser, the sign-up nonetheless **announces a success ahead of what it shows**: the user is told they participate, and the count they see stays at 0 through the session and the first reconnect, only catching up on the second ([[bug_participant-count-stays-at-zero]]). Honest steps do not add up to an honest flow, and nothing short of exercising the whole thing shows it (concept `bdd-testing`, [[cookbook_live-probe]]). Treat the bullet above as *screens reachable*, not as a working journey. Public discovery — a user seeing another user's public event — works too.
|
||||
|
||||
> **Updating an event is reserved to its declarer**, and the interface says so rather than discovering it late: the edit route is decided by ownership, and the confirmation follows the write instead of preceding it (concept `app-architecture`, [[knowledge_screen-pattern]]). Owner-only is not a policy choice here — it is the only reading the data model allows ([[knowledge_data-scopes-and-discovery]]).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user