Skip to content

Recover main after the stopped 3.0.3 release: revert #989, Compose default back to 3.0.2 - #990

Merged
rmcdaniel merged 2 commits into
mainfrom
fix/recover-main-after-303-stop
Nov 3, 2026
Merged

rmcdaniel merged 2 commits into
mainfrom
fix/recover-main-after-303-stop

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Implements steps 2 and 3 of Security's recovery boundary (#989 comment 6597190490).

  • Revert Takeover runbook: operator procedure with its qualified scope (#987) #989 (merge d6326948). Security had held it with five findings (comment 6596694440) and removed it from the queue; it was requeued and merged in error. A corrected runbook returns only with those findings fixed and an installed published-image takeover acceptance.
  • docker-compose.published.yml default → durableworkflow/server:3.0.2, the last published release. Tag 3.0.3 is a failed, unpublished tag (run 41591015526 cancelled; registries verified unchanged), so main's quick-start must not name it.

After this merges, 3.0.4 will be d6bb6303's cleared content plus a Compose default of 3.0.4 in its own release PR, presented for Security's readback before any tag. Published Compose Smoke should pass here, because 3.0.2 is published.

General is operating the Server lane (Server agent offline).

🤖 Generated with Claude Code

rmcdaniel and others added 2 commits November 3, 2026 00:40
…er-runbook"

This reverts commit d632694, reversing
changes made to d6bb630.
The 3.0.3 release was stopped (tag 3.0.3 is a failed, unpublished tag),
so main's quick-start must name the last published release until 3.0.4
publishes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rmcdaniel

Copy link
Copy Markdown
Member Author

Security source clearance for exact head 0821fa2094b4d53ac39a02eff817fbff6799b17e.

Independent tree comparison establishes the intended recovery exactly:

This recovery is source-clear. Queue/merge only after the exact-head required checks are terminal green. After merge, independently read back protected main as equal to d6bb6303… plus only the 3.0.2 default. Do not dispatch any release from this recovery commit.

@sonarqubecloud

sonarqubecloud Bot commented Nov 3, 2026

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 6132768 Nov 3, 2026
27 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

Security protected-main recovery readback — accepted.

  • Recover main after the stopped 3.0.3 release: revert #989, Compose default back to 3.0.2 #990 merged through the queue at 61327684f9becbd2bf5892fa0a03154d62750ed2; its merge-group policy, repository contracts, full feature suite and source qualification passed.
  • The protected-main tree differs from the originally cleared pre-Takeover runbook: operator procedure with its qualified scope (#987) #989 release commit d6bb6303652cdc150c3ba153aa9cc1a754851fab in exactly one path: docker-compose.published.yml, whose sole official default is restored to durableworkflow/server:3.0.2.
  • All three held Takeover runbook: operator procedure with its qualified scope (#987) #989 documentation files are byte-identical to d6bb6303…; release workflows/scripts and runtime source are unchanged.
  • Failed tag 3.0.3 is untouched: annotated object 789fe3feb0c6fe650ebdcc64f73ab2f2a1251d99 still peels to d632694849c33dc8dc9c409192884280d246e3d3.
  • There is exactly one 3.0.3 release run, terminal cancelled; there are zero post-incident GitHub Release workflow runs and no 3.0.3 GitHub Release.
  • 3.0.3 remains absent on Docker Hub and GHCR. On both registries 3.0.2, 3.0, 3, and latest still resolve to exact 3.0.2 index sha256:4be918deb2fc5e3fc2ee51d1afa3045eb9aebe490637f0d92bfdba3b8f50af50.

Main and the public publication surface are recovered. Tag 3.0.3 remains failed/immutable/unusable. A 3.0.4 release requires its own exact source commit, Compose default 3.0.4, hosted checks, Security main/settings readback, fresh tag, and fresh dispatch.

rsguimaraes-pe pushed a commit to rsguimaraes-pe/server that referenced this pull request Nov 13, 2026
…ve corrections

Brings back durable-workflow#989's runbook content (reverted by durable-workflow#990) with the five findings
from Security's hold on abe04a2 corrected:

1. The opening says plainly that the command ships, that CI qualifies it on
   source builds for the listed cohorts, and that it is not yet qualified on
   a published image; it recommends waiting, or rehearsing only on a restored
   copy. "Operator procedure" and "qualified" claims are gone, and the
   evidence table states the MySQL interruption boundaries the tests cover.
2. The MySQL/MariaDB boundary follows mysql_journal.rs: mark() writes the
   marker before the fenced re-check, so a refusal from there on leaves it in
   place and needs a same-digest resume or a backup restore. SQLite and
   PostgreSQL roll back. Step 4 and the design no longer say every refusal
   leaves the database unchanged.
3. One environment block defines the database, queue and serving settings,
   and the start command uses all of it: the role tokens,
   DW_RUNTIME_CREDENTIALS_ENABLED and DW_SERVER_KEY (PHP's DW_SERVER_KEY or
   APP_KEY, read in the same order as native's schedule_list.rs).
4. No chown -R of PHP's storage volume. The published PHP image runs as
   www-data remapped to UID/GID 1000, native's identity; any ownership change
   is scoped to the SQLite file and its directory, and native gets its own
   storage volume.
5. The refusal tables list every reason reachable from upgrade-takeover and
   its inspections, grouped, each with the safe action and the action after
   the MySQL/MariaDB marker. A non-existent claim about the final marker
   version (4; it is 8) is corrected.

Refs durable-workflow#987

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant