Skip to content

Harden stale, serialized, empty, and failed Analysis Mutations #26

Closed

Description

@obenno

Parent

#21

What to build

Close the correctness gaps across Subset, Restore, and category-based Mutation Intents. Serialize Analysis Mutations per Session, reject stale intents before mutation, keep failed transitions atomic, and ensure stale asynchronous payloads cannot overwrite the current View.

Acceptance criteria

  • Only one Analysis Mutation can commit at a time per Session.
  • An intent carrying an old Analysis Version is rejected without mutation, retry, or version publication.
  • Empty and already-applied requests are safe no-ops.
  • Failures before or during object replacement leave the active Analysis, lineage, and browser state unchanged.
  • Stale metadata, reduction, expression, and transfer-error results are discarded before browser state changes.
  • User-facing failures use stable path-free reason codes and do not expose raw R conditions, local paths, or stack traces.
  • Combined tests cover Subset, Restore, category context, stale requests, mutation serialization, and atomic failure behavior.

Blocked by

Activity

  1. self-assigned this
    on Aug 9, 2026
  2. obenno commented on Aug 9, 2026

    @obenno
    OwnerAuthor

    Implemented verification hardening in commit 223136a: test(03): cover analysis mutation failure guards.

    Validation completed:

    • Focused R coverage: pixi run Rscript -e "devtools::test(filter = 'subset-cells|development-contract-docs')"; 184 passing, 0 failures, 0 warnings, 0 skips.
    • JavaScript coverage: pixi run test-js; 15 test files and 137 passing tests.
    • Full R package suite: pixi run Rscript -e "devtools::test()"; 721 passing tests, 40 existing fixture warnings, 0 failures.
    • git diff --check passed.

    The existing Session-scoped Analysis Transition now has explicit regression coverage for an unexpected transition exception: it leaves object, backup, transition state, and Change-set unchanged, then releases the mutation lock. Browser coverage also verifies that an older reduction transfer_error cannot overwrite a newer successfully committed reduction. DEVELOPMENT.md now states the serialized, atomic publication and stale-payload rules.

  3. obenno commented on Aug 9, 2026

    @obenno
    OwnerAuthor

    Closing as completed in 223136a.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestready-for-agentFully specified, ready for an AFK agent

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions