These documents record repository-level design decisions and maintenance
workflows. The public API documentation remains in Dart doc comments and the
root README. This directory is repository-only and excluded
from the published package through .pubignore.
- Domain language: canonical terms for
Eithervalue equality, binding scopes, binding capabilities, and short-circuiting. - API naming alignment: implemented migrations, compatibility decisions, the major-version roadmap, and deferred proposals.
- Arrow Either reference: upstream links and the boundary between Arrow inspiration and the Dart implementation.
- Either variance safety: signature variance, instance-method runtime checks, extension design, and widened-type tests.
- Library strengths and improvement roadmap: current capabilities, remaining design work, and the recommended application error-channel policy.
- ADR 0001: why
EitherEffectis an opaque, scope-bound, contravariant capability backed by a private binding scope. - ADR 0002:
why five variance-unsafe
Eitherinstance operations move to named generic extensions in2.4.0, including the accepted compatibility boundary. - ADR 0003: why the implemented algebraic-law and API-coherence suites are permanent release gates without claiming type classes the package does not expose.
- ADR 0004:
why
Eitherequality ignores generic type arguments and hashing must combine a branch discriminator with the active payload hash. - API rename workflow: the required process for non-breaking public API renames.
When documents disagree, use this order:
- Public declarations and doc comments under
lib/. - Behavior covered by
test/. - Release notes in
CHANGELOG.mdand usage examples inREADME.mdandexample/. - Design and planning notes in this directory.