Skip to content

Correct Terminus health execution across wrapper precedence, timeout ownership, and thrown failures #3283

Description

@ayden94

Context

All 182 evidence anchors were verified. Node engine mismatch and dependency-only major intent were excluded as covered by open issue #3169 (#3169).

Audit Purposes

Bug finding, contract API, tests edge, and comprehensive audit.

Findings or R&D Brief

architecture#3: Drizzle must prefer the lifecycle-aware wrapper over the raw handle. Evidence: packages/terminus/src/indicators/drizzle.ts:49, packages/terminus/src/indicators/drizzle.ts:120, packages/terminus/src/indicators/drizzle.ts:127, packages/terminus/src/indicators/drizzle.test.ts:112, packages/terminus/README.md:104, book/beginner/ch18-health.md:139, packages/drizzle/src/database.ts:196, packages/drizzle/src/tokens.ts:2, packages/drizzle/src/tokens.ts:4. tests-edge#1: wrapper timeout rejection must not release ownership while uncancellable downstream work remains. Evidence: packages/terminus/README.md:114, packages/terminus/src/health-check.ts:51, packages/terminus/src/health-check.ts:53, packages/terminus/src/health-check.ts:56, packages/terminus/src/health-check.ts:61, packages/terminus/src/indicators/utils.ts:93, packages/terminus/src/indicators/utils.ts:95, packages/terminus/src/indicators/utils.ts:98, packages/terminus/src/indicators/redis.ts:148, packages/terminus/src/indicators/prisma.ts:256, packages/terminus/src/indicators/drizzle.ts:158, packages/terminus/src/indicators/redis.test.ts:108, packages/terminus/src/indicators/prisma.test.ts:212, packages/terminus/src/indicators/drizzle.test.ts:21. contract-api#2: all-up causes in a thrown HealthCheckError must still produce failure. Evidence: packages/terminus/README.md:131, packages/terminus/README.md:189, packages/terminus/src/errors.ts:9, packages/terminus/src/types.ts:9, packages/terminus/src/health-check.ts:279, packages/terminus/src/health-check.ts:281.

Contract Impact

Behavior correction for lifecycle precedence, timeout ownership, and explicit failure semantics.

Suggested Resolution

Resolve wrapper before raw handle, retain ownership until settlement, and normalize every thrown HealthCheckError as down while preserving causes.

Affected Packages

terminus, drizzle, redis, prisma.

Affected Surfaces

Indicators, aggregation, endpoints, and regression tests.

Why Now

These defects can hide dependency failure, probe the wrong lifecycle surface, or overlap downstream work.

Acceptance Criteria

  • Wrapper precedence and raw fallback are tested.
  • Timeout overlap is blocked until raw settlement, then recovery succeeds.
  • All-up HealthCheckError causes produce down /health and /ready results with causes preserved.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:http-runtimeHTTP runtime and platform adaptersbugSomething isn't workingpriority:p1High prioritysource:package-auditCreated from package-level maintainability audit

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions