Skip to content
LogoLogo

Generated — do not edit. Source of truth: crates/terp-rs/docs/ci.md. Edit there, then rebuild docs.

CI tiers (terp-rs)

Automation is tiered so PRs always get an honest offline gate without burning Docker minutes or mainnet secrets.

TierWorkflowWhenWhat
0 Coreci-core.ymlevery PR / push to main & feat/* / manualterp-scripts offline IBC (unit+golden+rebuild+validate+preflight) + internal lib crates
1 Extendedci-extended.ymlpath changes under contracts/crates/tests or label ci-extended or manualauthenticator contracts lib tests, optional wasm check, all non-ignored terp-scripts tests; draft PRs skipped unless labeled
2 Heavyci-heavy.ymlmanual workflow_dispatch, weekly schedule, or label ci-heavy (same-repo only)cargo check --workspace, Docker multihop harness

Labels (maintainer / admin)

LabelEffect
ci-extendedForce extended jobs on draft PRs; enable optional zk contract job
ci-heavyRun Docker harness + workspace check (not for forks)

workflow_dispatch on CI Heavy is the admin path: choose Docker and/or workspace check in the UI without labeling a PR.

Local parity (agents)

# Tier 0
just ci-core
 
# Tier 1 (no Docker)
just ci-extended
 
# Tier 2 (Docker)
just ci-heavy

Same commands CI runs — no invented cargo flags.

Local exercise (optimized)

cd /Users/returniflost/abstract/terp-core/crates/terp-rs
 
just act-exercise     # teardown → host ci-core (timed) → act-wire → teardown
# or stepwise:
just act-teardown     # kill lagging act containers/volumes
just act-host-core    # authoritative tests
just act-wire         # act -l only (seconds)
just act-core         # optional full act (slow; Docker Desktop fragile)
just act-teardown
RecipeRole
act-host-coreReal Tier 0 tests (no act)
act-wireWorkflow parse / job list
act-coreFull act jobs + per-job teardown
act-teardownContainers + volumes + prune run logs
act-exerciseDaily optimized loop

Details: scripts/act. Hermes profile: ci-act-tester.

Dense parallel packing

Independent lib/contract packages run as dense multi-package packs (host: single multi--p cargo; GHA: small matrix of packs), not one sparse job per crate. Offline IBC preflight→rebuild→validate stays serial.

EntryRole
just ci-core / ci-extendedHost dense packing (CI_DENSE_MODE=all)
just ci-dense-listPrint pack membership
just ci-core-matrix / ci-extended-matrixHost simulation of GHA packs
scripts/ci/dense-packs.shPack definitions + runner
docs/ci/dense-parallel-packing.mdDesign: strategy, shards, serial exceptions

Env: CI_DENSE_MODE, CI_DENSE_PARALLEL, CI_DENSE_PACK — see design note.

What is not in CI

  • Live mainnet terp-ibc generate (needs MAIN_MNEMONIC + gRPC) — use preflight + human/live mode only.
  • Silent golden overwrite.
  • Deprecated Basic / old launchpad E2E workflows (stubs only).

Require status checks:

  1. terp-scripts offline (ibc unit/golden + validate)
  2. internal lib crates
  3. core gate

Optional (path-gated): contract jobs from CI Extended.

Do not require CI Heavy on every PR.

Fail philosophy

  • Core offline must be green or the PR is not mergeable.
  • Heavy failures are real (fail closed) when the tier is intentionally run — no continue-on-error on harness.
  • Missing Docker images on heavy = red (fix image tags / secrets next, don’t hide).