mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2026-03-21 13:59:25 +00:00
2.3 KiB
2.3 KiB
CI Lane Contract
Define and preserve the split between upstream CI and local hardware CI.
Purpose
Maintain seamless developer flow while acknowledging hardware constraints:
- GitHub CI cannot access physical hardware
- Local LXD/HUT CI can run physical integration tests
Lane Definitions
1) Upstream GitHub Lane (hardware-agnostic)
Allowed:
- compile/build
- packaging
- lint/static checks
- unit tests and non-hardware integration tests
Not allowed:
- direct serial/USB assumptions
- relay/home-automation dependencies
- any test requiring physical board availability
2) Local LXD Hardware Lane (HIL)
Allowed:
- flash/monitor cycles
- physical integration and regression tests
- hard off/on recovery with relay control
- multi-HUT scheduling and isolation
Seamless Handoff Rules
- Hardware runs should map to the same commit SHA validated upstream.
- Artifact format and naming must be lane-neutral and SHA-addressable.
- Hardware result summaries must include:
- commit SHA
- HUT slot
- pass/fail
- recovery/power-cycle events
- Upstream checks must not block on hardware-runner availability.
Operational Guidance
- Treat upstream lane as fast feedback gate.
- Treat local HIL lane as higher-fidelity system validation.
- Keep trigger policy explicit:
- automatic for upstream lane
- explicit/controlled for local HIL lane
- Minimize drift between lanes by reusing the same container/toolchain baseline where feasible.
Documentation Lint Contract
-
Upstream GitHub lane must run markdown lint checks for:
AGENTS.mddocumentation/**/*.md
-
Local LXD lane should run agent-driven document gardening for:
- lint fixes
- pointer refresh
- short-term board/handoff updates
-
Upstream lint failures block merge for documentation changes.
-
Local gardening output is evidence, not a replacement for upstream checks.
Lane Vs Role Boundary
CI lanes and agent roles are different dimensions:
- Lanes define where validation runs (
upstreamvslocal-hil). - Roles define who executes/coordinates (
arch,infra,runner). - Do not infer ownership from lane alone; use
documentation/short-term/coordination/workstream_board.mdowner field as source of truth. - Use handoff
contextto distinguish control plane vs live remote execution (arch-local,infra-live,runner-live).