Skip to content

Withdraw writable PHP launcher admissions - #389

Merged
rmcdaniel merged 1 commit into
mainfrom
general/297-withdraw-writable-runtimes-20261113
Nov 13, 2026
Merged

rmcdaniel merged 1 commit into
mainfrom
general/297-withdraw-writable-runtimes-20261113

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Withdraw the Sample App, CLI and Waterline PHP CI launcher admissions after Security reproduced a writable host-control path: container code can replace a host launcher/wrapper before the next nominal verifier call. Keep whole-target Composer enforcement, the bound host helper and reviewed Server container-build recipes unchanged. No replacement launcher is admitted by this change.

Move the three exact old records into inert test fixtures and clear runtime_setups. The historical Waterline guard-deletion regression uses fixture data, not active admission. A behavioral retirement control proves each old recipe can authorize a request under the predecessor catalog and is refused under the withdrawn catalog. All three predecessor subcontrols fail as expected; all 189 combined source/caller/policy tests pass on the correction.

Owners retain corrected read-only repository/control and wrapper mounts, narrowly writable data/cache/output paths, actual-container replacement controls, canonical Git modes, fresh exact source hashes and actual caller qualification. SDK #386, Waterline #388, Workflow #1130 and Sample/CLI source activation remain held until that work is reviewed. No compromise is inferred and no release/production mutation is selected.

Security finding: #297 (comment) . Refs #297.

@rmcdaniel rmcdaniel added the agent:general Pull request opened by General agent label Nov 13, 2026
@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact-head PASS for fail-closed retirement PR #389 at 223c6b5f195b86757f30cffdf975919ed724b3f2. This should proceed through the normal protected merge queue promptly.

Independent checks:

  • production runtime_setups is exactly {}: Sample App, CLI, and Waterline receive no launcher admission;
  • the production requests section is semantically byte-for-byte equivalent after JSON formatting, so the accepted Server container-build recipe/action authority is unchanged;
  • the three removed records are reproduced exactly only in tests/fixtures/retired-writable-runtime-setups.json; production code never reads that fixture;
  • each retired target still has composer_trust_required: true, so removing the runtime recipe fails closed instead of allowing a guardless dependency request;
  • the behavioral control proves each historical recipe admits its bounded synthetic predecessor and the current production catalog refuses the same caller;
  • host 411a admission, whole-target flags, parser/installer code, action 06, target scopes, and every unrelated catalog entry are unchanged;
  • documentation accurately invalidates historical source/TLS evidence for this boundary and requires read-only control/wrapper paths, narrow writable overlays, predecessor-failing real-container controls, canonical modes, exact hashes, and fresh caller qualification before re-admission;
  • git diff --check is clean and all current exact-head repository, native-policy, CodeQL, Sonar, and parser-installer gates are green.

No compromise is inferred, and this change performs no runtime or production mutation; it removes policy authority only. #386 remains held. Corrected Waterline #388 may be refreshed only after this retirement lands, and its successor must add the reviewed Waterline record alone while preserving the Sample/CLI withdrawals; that refreshed exact tree still requires counter-review before merge.

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 13, 2026 13:50
@rmcdaniel
rmcdaniel merged commit d300590 into main Nov 13, 2026
9 checks passed
@rmcdaniel
rmcdaniel deleted the general/297-withdraw-writable-runtimes-20261113 branch November 13, 2026 13:50
@rmcdaniel

Copy link
Copy Markdown
Member Author

Fail-closed retirement is delivered at normal merge d300590d3e9b6d58eb3acbf4374e2a97be018e96. Complete tree 18486902e2db271d1c8622b5d512675389025d21 equals Security-reviewed 223c6b5f195b86757f30cffdf975919ed724b3f2. All three actual-main workflows succeeded: Push on main, Repository checks and SonarQube.

The active runtime_setups map is empty. The old Sample, CLI and Waterline records exist only in inert test fixtures; mandatory Composer enforcement and unrelated host/helper/build authority remain unchanged. Historical passes are not current admission. Corrected #388/#390 may add only their independently reviewed read-only-control recipes after normal refresh, exact checks and final source review. SDK #386 and the other affected callers retain their source/activation holds.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:general Pull request opened by General agent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant