You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Forge's repository release gates are not enforced by GitHub on main. The branch is currently unprotected, so direct pushes or unchecked merges can bypass the evidence gates Forge relies on for trust.
Current Behaviour
GitHub reports main with protected: false and required-status-check enforcement off. Forge already treats PR Contract Check and Web CI as merge gates by process, but enforcement depends on operators/agents voluntarily honoring that process.
Expected Behaviour
GitHub itself enforces the base repository boundary for main: changes enter through PRs; PR Contract Check and Web CI are required; branch freshness/merge-queue semantics are explicit; force pushes/deletion are blocked; normal agents/bots cannot bypass; break-glass is explicit/operator-only/auditable.
This issue deliberately does not require the external forge/host-boundary-controller App/check to exist yet. #357 depends on this base ruleset plus #352 and owns binding the exact external controller App/check for S6 release classes. #348 must leave a safe extension path without blocking ordinary PRs on an unprovisioned controller.
Confirm the repository therefore does not itself reject a normal direct-push or unchecked merge path based on Web CI/PR Contract status.
Impact
Forge is building toward autonomous writers but its outer repository boundary does not enforce the checks those writers are supposed to respect. A mistaken/compromised agent/operator path can bypass CI/review discipline where repository truth is finalized.
Severity
Critical - security/control-plane release boundary is unenforced.
Implementation Sequence
Inventory actual check identities — current Web CI/PR Contract workflow/check names, events, forks, merge mode and current rulesets/bypass actors.
Design minimal base ruleset — PR-only main, required Web CI + PR Contract, freshness/merge-queue choice, no force/delete, explicit operator break-glass.
Apply base protection using repository settings/API without adding the not-yet-provisioned external S6 check.
Positive/negative proof — disposable PR merges only when required checks pass; direct push/force/delete/failing-check paths rejected.
Requiring privileged host checks on every ordinary docs/code PR.
Broad organization-wide GitHub governance unrelated to this repository.
Implementation Scope
Small-to-Medium but consequential repository-governance change; target one ruleset/configuration operation plus a small docs/evidence PR if needed, with live negative tests before close.
Environment
Repository: Joncallim/Forge.
Baseline: current main after ADR 0014; branch protection observed disabled during the post-VNext audit.
Technical Notes
Do not broaden into #352/#357. Close only after the effective GitHub rule is observed/tested, not after merely drafting settings or documentation.
Parent programme: #333
Execution mode: implementation
Depends on: none
Blocks: #352, #357
Bug Summary
Forge's repository release gates are not enforced by GitHub on
main. The branch is currently unprotected, so direct pushes or unchecked merges can bypass the evidence gates Forge relies on for trust.Current Behaviour
GitHub reports
mainwithprotected: falseand required-status-check enforcement off. Forge already treats PR Contract Check and Web CI as merge gates by process, but enforcement depends on operators/agents voluntarily honoring that process.Expected Behaviour
GitHub itself enforces the base repository boundary for
main: changes enter through PRs; PR Contract Check and Web CI are required; branch freshness/merge-queue semantics are explicit; force pushes/deletion are blocked; normal agents/bots cannot bypass; break-glass is explicit/operator-only/auditable.This issue deliberately does not require the external
forge/host-boundary-controllerApp/check to exist yet. #357 depends on this base ruleset plus #352 and owns binding the exact external controller App/check for S6 release classes. #348 must leave a safe extension path without blocking ordinary PRs on an unprovisioned controller.Reproduction Steps
main.protected: false/ required checks enforcement off.Impact
Forge is building toward autonomous writers but its outer repository boundary does not enforce the checks those writers are supposed to respect. A mistaken/compromised agent/operator path can bypass CI/review discipline where repository truth is finalized.
Severity
Critical - security/control-plane release boundary is unenforced.
Implementation Sequence
main, required Web CI + PR Contract, freshness/merge-queue choice, no force/delete, explicit operator break-glass.Primary Code / Control Seams To Inspect First
.github/workflows/web-ci.yml.github/workflows/pr-contract-check.ymldocs/operators/host-boundary-controller-v2.mdonly to understand later [OTHER][RELEASE] Complete S6 external-controller trust binding and live release evidence #357 extensionOrthogonal Checkpoints
Acceptance Criteria
mainprotected by an effective branch policy/ruleset.mainare rejected.forge/host-boundary-controllercheck at this stage.Out of Scope
Implementation Scope
Small-to-Medium but consequential repository-governance change; target one ruleset/configuration operation plus a small docs/evidence PR if needed, with live negative tests before close.
Environment
Joncallim/Forge.mainafter ADR 0014; branch protection observed disabled during the post-VNext audit.Technical Notes
Do not broaden into #352/#357. Close only after the effective GitHub rule is observed/tested, not after merely drafting settings or documentation.