ReadonlyidWhat the operation is.
ReadonlysymbolsThe symbols it covers: <path under src/>#<exported name>.
ReadonlytestsTest files (under src/tests/unit/) that exercise its lifecycle.
Optional ReadonlycontractThe defineLifecycleContract name one of tests registers, when it runs the contract.
Every cancellable or disposable async operation in the viewer, and the test that proves its abort / dispose / failure / retry behaviour.
unit/conformance/async-operations.test.tskeeps this table honest: it scanssrc/for exported functions and class methods that take anAbortSignal, and for exported classes that definedispose()beside anasyncmethod, and fails for any such symbol that no row names and that carries no// lifecycle-exempt: <reason>comment. It also fails for a row naming a symbol that no longer exists or a test file that does not exist.A row with a
contractruns the shared lifecycle contract (unit/_shared/lifecycle-contract.ts,defineLifecycleContract(<contract>, …)) in one of its test files; a row without one is covered by the operation's own tests, which must name one of its symbols. New operations should prefer the contract: it states abort, dispose, failure, retry, supersede and double-dispose once, and an operation that cannot express a case says why.