Skip to content

Testing ​

Executable verification tiers for repository changes; final publication, deployment, and controlled-host evidence remain release operations.

TierCommand or sourceUse
Required local chainnpm run verifyOrdered deterministic repository gates
Focused checksRoot and workspace npm scriptsFast feedback in the affected blast radius
CI matrix.github/workflows/ci.ymlMaintained Linux, macOS, Windows, browser, consumer, package, and API checks
Controlled hostnpm run test:e2e:performance plus focused Node gatesAttributable hard-performance evidence
Manual live harnessesFour opt-in TypeScript scriptsProvider behavior with local credentials and retention controls

Ordered verify chain ​

npm run verify executes these eighteen gates in order. Run a focused owner gate while iterating, then use the full chain when the change or release stage requires it.

OrderCommandContract
1npm run check:toolchainExact release Node and npm
2npm run check:verification-mapRequirement-to-evidence structure
3npm run check:workflow-policyCI, release, dependency, and Action policy
4npm run test:session-start-hookOptional hook behavior and safety
5npm run test:cleanBounded cleanup behavior
6npm run test:pwaPWA build and worker contracts
7npm run test:staticStatic artifact unit contracts
8npm run test:static:integrationCombined static integration
9npm run test:canvas-creation-contractCommand-driven creation contract
10npm run lintJavaScript and TypeScript lint
11npm run lint:mdRepository Markdown profiles
12npm run test:markdownlintCustom Markdown rule tests
13npm run check:docsUser, library, contributor, and link checks
14npm run typecheckWorkspace type contracts
15npm run buildOrdered production builds
16npm testWorkspace test suites
17npm run test:release-versionAtomic release version checks
18npm run test:release-closureRelease-closure invariants

GraphIR 2 release dependency ​

The release branch pins published @graph-ir/core@0.2.1 exactly in all four direct manifests and the lockfile. This is the registry-backed GraphIR 2 contract used by build, test, package, and consumer evidence. Do not substitute a no-save dependency, local path, sibling checkout, or unpublished archive. Slice 80 retains final provenance/equivalence and release-identity verification.

Focused and release-adjacent gates ​

CommandUse
npm run test:e2eChromium end-to-end behavior after a production build
npm run test:e2e:performanceControlled-host drag and zoom budgets
npm run test:coverage:gateEnforced viz, MCP, and editor coverage floors
npm run audit:fragmentsNon-blocking source and dependency fragment candidates
npm run smoke:consumerPacked blank-consumer runtime and type behavior
npm run api-compatAPI baseline tests, package builds, and exported-surface checks
npm run smoke:nativePacked native grammar build and load

Package-level test scripts are appropriate while resolving a focused finding. Run broader gates when changes cross workspace or product boundaries.

CI jobs ​

CI runs on push and pull requests. Its current jobs are:

JobResponsibility
static-deliveryStatic unit and integration checks
verifyFull chain, coverage, audit, package, consumer, and docs checks
api-compatPublic API baseline and package compatibility
minimum-runtime-consumerNode.js 24.19.0 consumers of Node 26 artifacts
react-18-consumerReact 18 peer compatibility
react-19-consumerReact 19 peer compatibility
e2eBuilt Chromium end-to-end behavior
native-smokeLinux x64, macOS arm64, and Windows x64 native packages
windows-verify-and-package-smokeWindows full chain and consumer smoke

Performance evidence ​

Hard performance gates run once with zero retries on the attributable controlled host. GitHub-hosted shared runners are non-authoritative for hard timing; their results are functional evidence only. Use the retained performance budgets for fixtures, limits, and the current evidence boundary.

LLM harness boundary ​

Deterministic unit and corpus tests use synthetic fixtures and fake provider behavior. They require no network or key. The manual surfaces below are outside CI and npm run verify and require explicit authorization before any live provider call.

The no-key behavior is verified without invoking a provider or running an application build: npm test -w @coral-viz/diagram-editor -- --run test/llm/accuracy-harness.test.ts -t 'no configured API key'.

ScriptCredential namesOutput and retention
accuracy-harness.tsANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY, MISTRAL_API_KEYTimestamped scorecards and candidates under gitignored accuracy-harness-output/; delete after review
test-live.tsLLM_API_KEYResults to stdout only
test-e2e.tsLLM_API_KEYResults to stdout only
test-mermaid-adjust.tsLLM_API_KEYFixed prompt, converted source, and result to stdout only

Live or user-derived prompts, responses, scorecards, terminal captures, and keys stay local and are never committed. There is no production telemetry from these contributor harnesses.