Skip to content

Operations API Tests — Verification

Verification is largely executable: the same make verify SUT=<name> spine that runs the suite is the primary check that the design holds. This document maps each success criterion to a concrete verification and records current evidence.

#Success criterionHow to verifyStatus
1Self-contained suite, parity with Bruno, green on local and devmake verify SUT=local and make verify SUT=alpha002-dev run the full spine and report the result matrixGreen on both (acceptance); parity coverage in progress
2One command runs the spine, discovers local URLRun make verify SUT=local with no SUT_BASE_URL set — it must print a discovered http://localhost:<nodePort> and proceedVerified (NodePort auto-discovered)
3Any test under api-key or OAuth; auth-specific tests gateRun the same category with --auth api-key and --auth oauth; confirm auth-specific tests skip/[auth:…] under the wrong modeVerified — all four auth×SUT quadrants green
4Wire generated from live OpenAPI, not committed; drift → compile failureConfirm generated/*.ts are git-ignored; regenerate against a changed contract and observe tsc fail (see contract check below)Verified — un-committed; tsc gate wired
5Four layers a build-enforced DAG, structured for reusemake check runs dependency-cruiser (no-circular, layer matrix, shared-visibility, tests-are-leaves) + tsc project refs; each area is its own packageVerified — gates green
6No secret values in repo; capabilities + quarantine governGrep the tree for secrets (only op:// refs present); run a capability-gated and a quarantined test and read the matrixVerified — refs only; gating + budget exercised

The spine. make verify = resolve base URL → gen-proxiestsc (contract gate) → vitest run → matrix + quarantine verdict. A non-zero exit means the generated contract failed to compile against the harness, a test failed, or the quarantine budget was exceeded. Run per SUT; the exit code is the verdict.

Auth × SUT matrix. The definitive functional check is that every quadrant is green:

api-keyOAuth
local✓ (sandbox0-test-key)✓ (self-minted local JWT via Caddy JWKS)
dev✓ (static key)✓ (Cognito access token)

Reproduce with make verify SUT=<sut> ARGS="--auth <mode> --category acceptance".

Contract / backwards-compatibility check. Because generated/ is regenerated per run and the façade binds it, a contract change that the harness depends on (removed/renamed schema, new required request field) makes tsc fail before any test runs. To demonstrate: point gen-proxies at a SUT whose contract diverges from the harness’s expectations and confirm make verify stops at the compile gate. Additive, backwards-compatible changes correctly do not break the build.

Enforcement gates. make check (hermetic — no SUT) must pass: ESLint, the quarantine validator (ticket present, not expired, within existence budget), and — when proxies are present — tsc -b and dependency-cruiser. A layering violation, an illegal cross-layer import, or a test importing another test is a red build.

Determinism of generation. Run make verify twice against the same SUT; the second run must report every module up-to-date (spec unchanged), proving the canonicalized spec cache is stable (no false regeneration from non-deterministic key ordering).

The design’s central claim — a replicable pattern — is verified structurally: util/main and the client-proxies framework (the HttpClient, TokenProvider glue, and gen-proxies) carry no operations-specific code and are independently publishable; a second component adopts the suite by authoring its own per-module façades and supplying its own sut-config.ts, TokenProvider wiring, and module list. Confirm by inspection that no operations-specific identifier appears in util/main or the non-façade framework code of client-proxies (the per-module façades and generated types are populated per component).

  • CI workflow (post-deploy trigger). The GitHub Actions job that runs against the dev partition after a deploy is designed but not built; verification is manual (make verify SUT=alpha002-dev) until then.
  • Higher categories. Evidence to date covers probeacceptance; functional/stress/bug grow with coverage.
  • Local OAuth after key rotation. The local JWT path requires a make localInstall redeploy to serve the current JWKS; verified against the api-key path and against a prior local deployment, to be re-confirmed after redeploy.
  • Automated major/minor classification. Mapping a contract break to a major/minor CHANGELOG decision is developer judgment today; a spec differ (oasdiff) is the planned automation.

Copyright: (c) Arda Systems 2025-2026, All rights reserved