Skip to content

chore: reconcile plan statuses + fix release workflow conflict fallback#634

Merged
marcusrbrown merged 2 commits into
mainfrom
chore/plan-reconciliation-and-release-workflow-fix
May 17, 2026
Merged

chore: reconcile plan statuses + fix release workflow conflict fallback#634
marcusrbrown merged 2 commits into
mainfrom
chore/plan-reconciliation-and-release-workflow-fix

Conversation

@marcusrbrown
Copy link
Copy Markdown
Collaborator

Two small changes bundled:

Plan reconciliation. Four plans previously marked status: active have shipped reality on main. Updates the frontmatter and per-unit checkboxes to reflect what was actually merged:

Release workflow fix. prepare-release-pr.yaml runs git merge --no-ff -Xtheirs origin/main to synthesize the next branch from the last release tag. -Xtheirs resolves text conflicts in favor of main but cannot resolve rename/rename conflicts, which fire every time main's bundle hash changes (dist/artifact-*.js). On conflict, take main's tree wholesale via git checkout origin/main -- . and commit. Release branch's purpose is to mirror main; biasing fully to main on conflicts preserves that intent without manual intervention.

Four plans previously marked 'active' have shipped:
- agent-cohesion-session-continuity (deterministic session titles + buildLogicalKey)
- compounding-wiki (vault, schedule, seed pages via PRs #489 #491 #494)
- manual-delivery-mode (output-mode input via PR #517)
- gateway-discord-v1 Units 1-3 (PRs #541 #547 #548)

Gateway v1 plan stays active with Units 4-8 unshipped.
Copy link
Copy Markdown
Owner

@fro-bot fro-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: CONDITIONAL

Blocking issues

Missing git merge --abort and set -e in conflict-fallback path

Two correctness issues in the new fallback block:

  1. After git merge fails, the repo is left in mid-merge state. Without git merge --abort before git checkout origin/main -- ., git still considers the repo mid-merge. The subsequent git commit records two parents and produces a merge commit rather than a plain commit. Call git merge --abort first to cleanly exit merge state before staging main's tree.

  2. No set -euo pipefail on the run block. If git checkout origin/main -- . or git add -A fail silently (transient object-store miss, auth expiry), the script continues and commits whatever partial state is staged, then pushes it to next.

Suggested fix for .github/workflows/prepare-release-pr.yaml:

run: |
  set -euo pipefail
  last_tag=$(git tag --list 'v*' --sort=-version:refname | head -1)
  echo "Resetting to ${last_tag}"
  git reset --hard "${last_tag}"
  git fetch origin main
  if ! git merge --no-ff -Xtheirs -m 'skip: merge main [skip release]' origin/main; then
    echo "Merge had unresolvable conflicts; taking main's tree verbatim."
    git merge --abort
    git checkout origin/main -- .
    git add -A
    git commit --no-verify -m 'skip: merge main [skip release] (conflict-resolved)'
  fi

Non-blocking concerns

  • Fallback commit message is identical to the success path. A suffix like (conflict-resolved) makes the git log distinguishable during post-mortems.
  • Plan shipped frontmatter uses free-form prose strings. If any tooling parses plan frontmatter it may choke on non-date values. Consider a separate shipped_note key for prose and keeping shipped as an ISO date.

Missing tests

None required for doc-only changes. A brief inline comment in the workflow explaining when the fallback fires (rename/rename on dist/artifact-*.js) would help future maintainers.

Risk assessment: LOW

Plan status updates are purely documentary with no runtime impact. The workflow fallback converts a manual-intervention failure mode into automated recovery; blast radius is limited to the next branch, which is already force-pushed on every run. The mid-merge state issue and missing set -e are low-probability but correctness gaps worth fixing before merge.


Run Summary
Field Value
Event pull_request
Repository fro-bot/agent
Run ID 25983744717
Cache hit
Session ses_1cb5388b2ffe343ZNHa5TPqLgf

The reset-and-merge step uses 'git merge --no-ff -Xtheirs origin/main' to
synthesize next from the last release tag. -Xtheirs handles content
conflicts but cannot resolve rename/rename conflicts, which fire every
time main's bundle artifact hash changes (dist/artifact-*.js).

On conflict, take main's tree verbatim via 'git checkout origin/main -- .'
and commit it as the merge result. The release branch's purpose is to
mirror main; biasing fully to main on conflicts preserves that intent
without manual intervention.
@marcusrbrown marcusrbrown force-pushed the chore/plan-reconciliation-and-release-workflow-fix branch from 234326c to e95ddd7 Compare May 17, 2026 06:46
Copy link
Copy Markdown
Owner

@fro-bot fro-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: PASS

All blocking issues from the previous review have been addressed:

  • set -euo pipefail added at the top of the run block.
  • git merge --abort called before git checkout origin/main -- ., cleanly exiting mid-merge state.
  • Fallback commit message now includes (conflict-resolved) suffix.
  • Inline comment explaining the rename/rename trigger on dist/artifact-*.js added for future maintainers.

Blocking issues

None.

Non-blocking concerns

None remaining.

Missing tests

None.

Risk assessment: LOW

Workflow fallback is well-guarded now. Plan doc updates are purely documentary.


Run Summary
Field Value
Event pull_request
Repository fro-bot/agent
Run ID 25983850041
Cache hit
Session ses_1cb5388b2ffe343ZNHa5TPqLgf

@marcusrbrown marcusrbrown merged commit 48d57da into main May 17, 2026
10 checks passed
@marcusrbrown marcusrbrown deleted the chore/plan-reconciliation-and-release-workflow-fix branch May 17, 2026 06:50
@fro-bot fro-bot mentioned this pull request May 17, 2026
48 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants