2.2 KiB
2.2 KiB
ECP-0079: Governance Hygiene, CI Quality Gates, and Main-Branch Protection
Status: Implemented
Context
Recent delivery velocity improved product behavior, but governance and quality signals drifted:
- active ECPs were not consistently marked with explicit status and alternatives;
- pull requests lacked a single, explicit CI gate for core tests plus web build;
- deploy could proceed without an explicit prerequisite check job;
- branch protection settings were not codified as an operator runbook artifact.
This conflicts with the constitutional requirement that non-trivial changes remain reviewable and merge through pull requests.
Decision
- Normalize governance records for the active proposal window (
ECP-0063throughECP-0078):- mark implemented decisions as
Status: Implemented, - add explicit
Alternatives consideredsections, - ensure rollout/teardown intent is present.
- mark implemented decisions as
- Add
scripts/ecp-lint.shand run it in CI to enforce required ECP sections for active proposals. - Add a
ci-gatesworkflow for pull requests that runs:- ECP lint,
- core Rust test subset,
apps/webproduction build.
- Update deploy workflow to include a dedicated
checksjob and make deploy depend on that job. - Correct Cloudflare deploy docs so manual commands and secret prerequisites match current implementation.
- Add a branch-protection enforcement script and runbook so
maincan be locked to PR merges with required checks.
Alternatives considered
- Keep governance cleanup manual and ad hoc. Rejected because drift reappears quickly under fast iteration.
- Gate only deploy, not pull requests. Rejected because review-time feedback is required before merge.
- Rely on UI-only branch protection configuration with no repo script/runbook. Rejected because settings become opaque and harder to audit.
Rollout / teardown plan
- Rollout:
- land ECP updates + lint script + CI workflows + docs + branch-protection tooling together;
- apply branch protection using the new script;
- set required check context to
ci-gates / checks.
- Teardown:
- remove
ci-gatesworkflow and lint script if governance process is superseded; - relax branch protection via API/script and adjust constitutional process in a superseding ECP.
- remove