# Forge release simplification failure: forensic guide

This folder is the single entry point for the August 11, 2026 analysis of why
Forge's release-system cutover did not yet achieve the requested drastic
simplification.

The central conclusion is not that the per-project publisher is wrong. The
publisher boundary is substantially cleaner. The failure is that complexity
and authority migrated outward into the production builder, provider broker,
private runner-host preparation, bootstrap, preview validation, merge handoff,
evidence formats, and retained legacy schemas and commands. A small publisher
does not make the whole release system small.

## Read in this order

1. [`simplification-gap-analysis.md`](./simplification-gap-analysis.md)
   records the cross-cutting conflicts, their risks, and the smallest future
   contract that should survive.
2. [`future-agent-prompt.md`](./future-agent-prompt.md) is a handoff prompt for a
   fresh agent whose job is to finish the simplification without resuming the
   failed bootstrap or legacy controller work.
3. The original authoritative documents provide detailed evidence and must be
   read rather than inferred from this guide:
   - [`../../history/2026-08-11-global-bootstrap-controller-retrospective.md`](../../history/2026-08-11-global-bootstrap-controller-retrospective.md)
   - [`../../deploy/2026-08-11-release-system-reconciliation.md`](../../deploy/2026-08-11-release-system-reconciliation.md)
   - [`../../operations/immutable-runner-host.md`](../../operations/immutable-runner-host.md)

## Document roles

| Document | Role | Do not misread it as |
| --- | --- | --- |
| Global bootstrap retrospective | Evidence for how an operator checklist became a prohibited multi-project controller | Authority to resume any recorded attempt |
| Release-system reconciliation | Desired builder/ready/publisher contract and pre-mutation gates | Proof that the contract is already live |
| Immutable runner-host contract | Narrow intended boundary for a private, write-once runner host | A second host publication or rollback system |
| Simplification-gap analysis | Cross-document audit of remaining structural conflicts | A request for a modernization program |
| Future-agent prompt | Bounded execution handoff | Permission to bypass main, preview, rollback, or data safety |

## Known evidence at the cutoff

- The private host was created using Cloudflare's Beta Worker resource API but
  its version was initially uploaded through the legacy script-name versions
  API. Source was corrected toward Worker-ID Beta JSON version upload, but the
  real disposable-provider proof remained outstanding.
- The exact source SHA `359dfff476f38f330b809fab94a8943bbc259c8e`
  was pushed to `codex/normalize-empty-runner-secrets` and opened as Forge PR
  #165.
- Normal release request `73d3f4ba-f50f-4791-9b3a-77f003cbc8ac` remained in
  `validating` with empty validation evidence and no exact-SHA Platform CI or
  Platform Preview runs at the cutoff.
- Direct main push was rejected, correctly preserving the ordinary merge path.
- No new production traffic mutation occurred during that attempt.
- The historical local runner/container arrangement remained untouched as the
  rollback target.

These are historical facts, not current authority. A future agent must re-read
main, Cloudflare, D1, PR, and workflow state before acting.

## Forensic rule

Every future change must answer one question before implementation:

> Does this delete an authority, state machine, operational path, or identity
> exchange, or does it merely move that complexity to another component?

If the answer is “move,” the change does not satisfy the simplification goal.
