# OPS004-LAB1 — Compose dependency, health, and restart evidence

Everything is local and synthetic. No Docker registry, production service, credential, host mutation, or external network request is used.

For each fixture produce eight states:
`dependency_graph_state`, `startup_order_state`, `dependency_condition_state`, `health_readiness_state`, `completion_gate_state`, `restart_semantics_state`, `evidence_boundary_state`, and `recovery_decision_state`.

Rules:
1. Dependency order is not readiness.
2. `service_started` closes only the start condition.
3. `service_healthy` is bounded to the declared healthcheck.
4. `service_completed_successfully` is evaluated from one-shot completion evidence.
5. Dependency `restart: true` applies to explicit Compose-controlled restart/update evidence, not arbitrary runtime crash restart.
6. Application retry/resilience remains outside the Compose ordering conclusion.
7. If decisive evidence is absent, leave the conclusion OPEN.
8. The transfer fixture must be recomputed from its changed condition and restart linkage.

Run `python -B run_checks.py` for learner-visible structural checks. Hidden acceptance lives outside learner paths.
