integration-sweep
Skill ID: onex:integration_sweep
Version: 1.0.0
Owner: omniclaude
Purpose
Contract-driven post-merge verification. For each recently completed ticket:
- Extract the
ModelTicketContractembedded in the ticket description (YAML block) - Map
interfaces_touchedfields toEnumIntegrationSurfacevalues - Execute the
dod_evidence[*].checksfor each surface - Assemble a
ModelIntegrationRecordwith per-surfaceModelIntegrationProbeResultentries - Return the assembled integration record. Durable artifact persistence under
$ONEX_CC_REPO_PATH/drift/integration/is pending backing node implementation and must not be claimed until it is in place.
The contract IS the guard rail. No contract → UNKNOWN/no_contract → halt.
Usage
/integration-sweep
/integration-sweep --dry-run
Integration Surfaces
The following surfaces are implemented in the node (surface_probes.py). All other surfaces listed in the enum are defined but not yet probed by the node implementation.
| EnumIntegrationSurface | What is probed |
|---|---|
RUNTIME_HEALTH |
HTTP health endpoints for runtime services — unconditional, every invocation |
CONTAINER_HEALTH |
Docker container state via SSH — all expected containers running, unconditional, every invocation |
GITHUB_CI |
Recent GitHub Actions run results for the configured repo — pass/fail counts |
runtime_sha_match |
Per-ticket SHA match from dod_evidence checks against the live runtime deployment |
Halt Policy
| Probe Status | Reason | Action |
|---|---|---|
FAIL |
any | Halt — do not write artifact |
UNKNOWN |
NO_CONTRACT |
Halt — contract missing |
UNKNOWN |
INCONCLUSIVE |
Halt — probe returned ambiguous result |
UNKNOWN |
PROBE_UNAVAILABLE |
Continue with warning — tool not available |
UNKNOWN |
NOT_APPLICABLE |
Continue — surface not touched by ticket |
PASS_WITH_WARNINGS |
any | Continue — probe passed with non-blocking warnings (e.g., PLAYWRIGHT_BEHAVIORAL data-flow failure in local env) |
Auto-generated contracts:
Contracts produced by generate_contract / enrich_contract pipeline phases may contain:
- Evidence items with
source: "generated"-- these are machine-produced and should be probed normally (not skipped) - Evidence items with
status: "pending"-- these have not been verified yet; probe them and update status based on the probe result
Contract with empty dod_evidence[]:
A contract that exists and validates against the schema but has empty dod_evidence[]
is treated as PASS for the CONTRACT surface (the contract exists) with a WARNING that
evidence is missing. This distinguishes "no contract" (HALT via NO_CONTRACT) from
"contract exists but unenriched" (CONTINUE with warning).
Output Artifact
Written to $ONEX_CC_REPO_PATH/drift/integration/{date}.yaml:
# ModelIntegrationRecord
sweep_date: "2026-03-18"
tickets_swept: ["TICKET-A", "TICKET-B"]
surfaces_probed: ["KAFKA", "DB", "CI"]
results:
- ticket_id: "TICKET-A"
surface: KAFKA
status: PASS
reason: null
evidence: "topic constant onex.evt.omniintelligence.pattern-detected.v1 matches consumer"
- ticket_id: "TICKET-A"
surface: DB
status: PASS
reason: null
evidence: "migration 0042 applied; columns aligned"
- ticket_id: "TICKET-B"
surface: CI
status: UNKNOWN
reason: PROBE_UNAVAILABLE
evidence: "gh CLI not available in this environment"
overall_status: PASS # PASS | FAIL | PARTIAL
artifact_written: true
If --dry-run: artifact_written: false and file is never created.
Summary Output
INTEGRATION SWEEP — 2026-03-18
================================
| Ticket | Surface | Probe | Status | Evidence |
|-----------|-----------|--------------------|---------|-----------------------------------------------|
| TICKET-A | KAFKA | topic_match | PASS | topic constant matches consumer |
| TICKET-A | DB | migration_applied | PASS | migration 0042 applied; columns aligned |
| TICKET-B | CI | workflow_exists | UNKNOWN | PROBE_UNAVAILABLE — gh CLI not available |
Summary: 2 PASS, 0 FAIL, 1 UNKNOWN (3 total)
Artifact: $ONEX_CC_REPO_PATH/drift/integration/2026-03-18.yaml
Known Limitations
- Linear list_issues truncation: The Linear
list_issuesAPI truncates descriptions to ~500 characters. Discovery (Step 2) useslist_issuesfor ticket IDs only. Contract extraction (Step 3) MUST useget_issueper ticket to retrieve full descriptions. This adds ~1 API call per ticket but prevents contract parsing failures from truncated YAML blocks.
Integration Points
- close-day: invokes integration-sweep as part of invariants-checked gate
- ModelDayCloseInvariantsChecked:
integration_sweepfield set from this skill's overall_status - ModelIntegrationRecord: written to
onex_change_control/drift/integration/ - dod-verify: runs individual ticket DoD checks; integration-sweep aggregates across tickets and surfaces
- gap: gap-detect reads the integration record to identify surface drift over time