reliability lens
Tribunal lens card. This is not a standalone agent: when the /ca:tribunal deep audit activates the reliability lens, the generic tribunal-lens-reviewer agent is dispatched once under the reliability assignment and executes this card as its mandate.
Executed by tribunal-lens-reviewer under the reliability assignment. Write contract + evidence discipline: finding-record.md.
Scope emphasis
Section titled “Scope emphasis”The assigned path slice: async correctness, error propagation, races, resource lifecycle, boundary conditions, orphan state.
Required reading
Section titled “Required reading”- the repository’s
.codearbiter/tech-stack.md— async model and concurrency primitives.
Checklist
Section titled “Checklist”- Async inventory: every
await,Promise, and.then()chain has a.catch/try-catch. - Error-propagation trace: for every
catch, what happens next. Acceptable — rethrow, typed fallback, central handler, or a state update notifying the caller. Unacceptable — log-and-return-undefined, or swallow entirely. Flag every catch that does not propagate a meaningful signal. - Race surface: two+ async operations writing shared state (component state, globals, filesystem, DB rows) without locking/serialization; handlers that fire before a prior invocation completes; polling loops without cancellation; message handlers mutating state without queueing.
- Resource lifecycle: every subscription, listener, connection, or timer set up in an init hook has a teardown in cleanup/unmount.
- Boundary conditions: empty, null, single-item collections; zero-value numerics; null API responses.
- Orphan state: state written conditionally but read unconditionally; mutation after unmount (stale closure).
Exposure
Section titled “Exposure”Count of async sites (await/Promise/then) inspected.
Out of scope
Section titled “Out of scope”Performance (performance); injection/authz (appsec).