name: exeris-tck-first description: 'TCK-first PR review for Exeris Kernel. Use when changes touch SPI contracts, observable behavior, or provider bindings to enforce that every contract change has executable Abstract*Tck coverage and implementation bindings in Core/Community/Enterprise.' argument-hint: 'PR scope, changed contracts, and expected observable behavior changes' user-invocable: true disable-model-invocation: false
Exeris TCK First
Purpose
Enforce TCK as The Judge: every contract change must have test implications before merge.
This skill treats exeris-kernel-tck as merge gate for contract validity, not optional test coverage.
Canon to Load First
docs/modules/05-tck.mddocs/modules/01-spi.mddocs/modules/02-core.mddocs/modules/03-community.mddocs/modules/04-enterprise.md- impacted subsystem contracts in
docs/subsystems/*.md - related ADR constraints in
docs/adr/*.md
When to Use
- Any PR modifying SPI interfaces, value contracts, error semantics, lifecycle behavior, or provider discovery
- Any PR changing observable behavior in Core/Community/Enterprise that should remain contract-consistent
- Any PR adding new contract surface, new provider type, or altering contract invariants
Required Inputs
- PR diff or changed file list
- Changed contract symbols (interfaces/methods/error codes/lifecycle states)
- Expected observable behavior delta
Mandatory Review Questions
For each contract-impacting change, answer explicitly:
- SPI → Abstract TCK: Does this SPI change require a new or updated
Abstract*Tcksuite? - Bindings: Do Core and Community/Enterprise need new or updated binding tests to execute that abstract suite?
- Observable Behavior: Is the behavior defined at contract level (not implementation detail), with assertions proving it?
- Test Depth: Do tests validate zero-alloc / ref-count / leak / contract semantics, not only happy path?
TCK-First Procedure
Detect contract impact
- Identify whether changed code affects SPI-level semantics or externally observable lifecycle/state behavior.
- Classify as:
NO_CONTRACT_CHANGE,CONTRACT_EXTENSION,CONTRACT_BREAKING_CHANGE.
Map change to executable contract
- For each affected SPI contract, verify corresponding
Abstract*Tckexists and is updated. - If a new SPI contract appears, require a new
Abstract*Tckinexeris-kernel-tckbefore merge.
- For each affected SPI contract, verify corresponding
Verify test-jar binding coverage
- Confirm changed/added abstract suites are executed by binding tests in relevant consuming modules (Core and/or Community/Enterprise test scope).
- Ensure binding tests assert contract behavior, not fixture internals.
Enforce semantics-over-happy-path
- Ensure assertions cover invariants, error contracts, lifecycle transitions, and edge cases.
- Flag coverage that only proves successful nominal flow.
Enforce runtime integrity checks where relevant
- Require zero-allocation checks for hot-path contracts where specified.
- Require ref-count correctness and leak detection (
PARANOIDmode) for off-heap flows. - Require contract-level error semantics (stable error codes/states), not ad-hoc exception text checks.
Gate mergeability
- If contract changed but TCK was not added/updated and bound, mark PR not mergeable.
- If tests exist but do not prove contract semantics, mark conditional with mandatory remediation.
Decision and report
- Output:
APPROVE,CONDITIONAL, orREJECT. - For each finding: contract symbol → missing/weak TCK evidence → risk → minimal fix.
- Output:
Decision Logic
- APPROVE: Contract delta is fully represented in abstract TCK + bindings, with semantic and runtime integrity checks where applicable.
- CONDITIONAL: TCK intent is present but incomplete (missing edge semantics, weak assertions, or partial bindings).
- REJECT: Contract changed without required abstract TCK and bindings; or tests are happy-path-only and do not validate contract semantics/invariants.
Completion Criteria
Review is complete only if all are true:
- Contract-impact classification is documented.
Abstract*Tckcoverage decision is explicit per changed SPI contract.- Binding coverage decision is explicit for Core and relevant implementations.
- Observable behavior assertions are contract-level and evidence-based.
- Zero-alloc/ref-count/leak/semantic checks are covered where applicable.
- Mergeability verdict is explicit and justified.
Review Output Template
- Scope analyzed (contracts/modules/subsystems)
- Contract impact class (
NO_CONTRACT_CHANGE/CONTRACT_EXTENSION/CONTRACT_BREAKING_CHANGE) - Abstract TCK findings
- Binding test findings (Core/Community/Enterprise)
- Semantics findings (observable behavior vs happy path)
- Runtime integrity findings (zero-alloc, ref-count, leak)
- Verdict (
APPROVE/CONDITIONAL/REJECT) - Required actions (minimal merge-blocking fixes)
Non-Negotiable Rules
- No SPI contract change without corresponding executable TCK implications.
- No merge if abstract TCK and bindings are missing for changed contract semantics.
- No acceptance of happy-path-only tests for contract changes.
- TCK remains verification-only and SPI-oriented; no implementation leakage into abstract suites.