Skip to content

docs: quote an independent observation of the session lifetime #2

docs: quote an independent observation of the session lifetime

docs: quote an independent observation of the session lifetime #2

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- run: bun install --frozen-lockfile
- name: typecheck
run: bun run typecheck
- name: lint (biome + oxlint + embedded test app + generated README block)
run: bun run lint
- name: unit tests
run: bun test src/ test-app/
- name: coverage summary (reporting only)
# Reporting, not an enforced gate — deliberately. The Solari half of the
# library (core/outlive.ts, test-app/deploy.ts) is exercised by
# the live e2e and the bench, not by unit tests, because unit-testing it
# would mean mocking the Solari SDK, which the anti-slop
# no-module-mocking rule forbids. A hard unit threshold would therefore
# be a fake gate. The retry loop itself is fully covered, because it
# takes a launcher instead of a client.
run: bun test --coverage src/ test-app/
- name: build
run: bun run build
- name: use the node the package declares
uses: actions/setup-node@v7
with:
node-version: 20
- name: dist smoke — run the shipped artifact under node
# Pins the path a consumer actually executes: the ESM entry, the exports,
# node:crypto under plain node, and one full run through the loop.
run: node scripts/dist-smoke.mjs
- name: timer probe — the process must exit when outlive() returns
# Drives the public Solari adapter against a structural fake and fails
# if an orphaned capture or grace timer keeps the event loop alive.
run: node scripts/timer-probe.mjs
# The live gates (bun run test:e2e, bun run bench) are intentionally not
# run in CI: they need a real SOLARI_API_KEY, they spend plan quota, and
# the e2e deliberately waits ~14 minutes for a real session to die. They
# are the pre-publish gates, run locally against the live API.