Skip to content

Document limitations; cover the remaining termination laws with properties - #7

Merged
rasuvaeff merged 1 commit into
masterfrom
docs/limitations-and-property-laws
Oct 15, 2026
Merged

rasuvaeff merged 1 commit into
masterfrom
docs/limitations-and-property-laws

Conversation

@rasuvaeff

Copy link
Copy Markdown
Owner

Summary

  • README (EN + RU): a Limitations section right after Installation — the transport matrix (what a budget can bound, what can be aborted in flight), lazy deadlines (an unobserved context never runs its listeners) and why cancel() cannot interrupt a blocked request.
  • Property tests for the laws from the design plan that only had example tests:
    • terminationIsExclusiveStableAndNotifiesOnce — random trees with deadlines under random advance/cancel/late-listener operations: exactly one cause, never changing; assertActive() throws the matching exception with a memoized deadline; every listener runs once iff its node terminated; a terminated parent implies terminated children. Seven examples (cancel after expiry, expiry after cancel, cancel twice, three-level cascade, late listeners).
    • observingANodeTerminatesExactlyTheSubtreeOwningItsDeadline — one observation terminates exactly the subtree of the deadline's owner, checked through listeners without observing other nodes.
    • aThrowingListenerNeverStopsTheCascade — the whole subtree is notified; the exception surfaces iff a failing listener is inside the subtree.
  • invalidTimeoutsAreRejected now covers -INF and NAN.
  • listenerFailureDoesNotStopCascade: its assertions ran after the expected exception and never executed; they now run in finally.

Coverage gates are calibrated at 2-3x below the measured distribution. Three hand mutations in src/ (equal-deadline ownership, listener isolation removed, memoization removed) are each caught by the new properties.

No src/ changes.

…operties

- README: Limitations section with the transport matrix, lazy deadlines and
  synchronous cancel() in a blocking request (EN + RU)
- Properties: exclusive, stable termination with once-only listeners
  (laws 4, 6, 7); observing a node terminates exactly the subtree owning
  its deadline (law 7); a throwing listener never stops the cascade (law 8)
- invalidTimeoutsAreRejected covers -INF and NAN
- listenerFailureDoesNotStopCascade: its assertions ran after the expected
  exception and were dead code
@coderabbitai

coderabbitai Bot commented Oct 15, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: baa7660e-2d58-4a6a-9a99-70ce83c3396b
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@rasuvaeff
rasuvaeff merged commit 9e7cf17 into master Oct 15, 2026
10 checks passed
@rasuvaeff
rasuvaeff deleted the docs/limitations-and-property-laws branch October 15, 2026 16:35
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.

1 participant