Skip to content

chore: update fullsend shim workflow#2101

Merged
rh-hemartin merged 1 commit into
mainfrom
fullsend/onboard
Jun 19, 2026
Merged

chore: update fullsend shim workflow#2101
rh-hemartin merged 1 commit into
mainfrom
fullsend/onboard

Conversation

@fullsend-ai-fullsend

Copy link
Copy Markdown
Contributor

This PR updates the fullsend shim workflow to match the current template in the .fullsend config repo.

The shim content has drifted from the template — this brings it back in sync.

Update the shim workflow to match the current template
in the .fullsend config repo.
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

Site preview

Preview: https://f6b3b120-site.fullsend-ai.workers.dev

Commit: 409a46c774297fbfa35a39a5ecc9042aac95eca2

@fullsend-ai-review

fullsend-ai-review Bot commented Jun 9, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 10:42 PM UTC · Completed 10:50 PM UTC
Commit: 4ed6da4 · View workflow run →

@fullsend-ai-review

Copy link
Copy Markdown

Review

Findings

High

  • [runtime mechanism failure] .github/workflows/fullsend.yaml:2 — The PR removes the sentinel comment # --- fullsend managed below - do not edit --- from this repo's shim workflow. The reconcile-repos.sh script (line 29) depends on this sentinel to separate user-owned headers from managed content via extract_managed_content() and extract_user_header(). When the sentinel is absent, managed_content_b64() (lines 150–162) treats the entire file as managed, while the template retains the sentinel. This causes a content mismatch on the next reconciliation run, which will detect drift and create a new PR to restore the sentinel and --- marker. The template at internal/scaffold/fullsend-repo/templates/shim-workflow-call.yaml still contains both lines, so this PR creates divergence from the template rather than syncing with it.
    Remediation: Do not remove the sentinel comment. If the intent is to remove it from all enrolled repos, update the template and the sentinel-dependent logic in reconcile-repos.sh in the same PR.

  • [protected-path] .github/workflows/fullsend.yaml — This PR modifies a file under .github/, which is a protected path requiring human approval. The PR has no linked issue and does not explain why the protected file is being changed. Human approval is required regardless of context for protected-path changes.

Info

  • [authorization-inferred-mechanical] .github/workflows/fullsend.yaml — No linked issue found for this PR. Authorization is inferred from the mechanical nature of the change (bot-generated template synchronization) and the PR author being fullsend-ai-fullsend[bot].

@fullsend-ai-review fullsend-ai-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

See the review comment for full details.

---
# --- fullsend managed below - do not edit ---
# lint-workflow-size: max-lines=280
# fullsend shim workflow (workflow_call mode)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[high] runtime mechanism failure

The PR removes the sentinel comment # --- fullsend managed below - do not edit --- from this repo's shim workflow. The reconcile-repos.sh script (line 29) depends on this sentinel to separate user-owned headers from managed content via extract_managed_content() and extract_user_header(). When the sentinel is absent, managed_content_b64() treats the entire file as managed, while the template retains the sentinel. This causes a content mismatch on the next reconciliation run, creating unnecessary churn. The template at internal/scaffold/fullsend-repo/templates/shim-workflow-call.yaml still contains both lines, so this PR creates divergence rather than syncing.

Suggested fix: Do not remove the sentinel comment. If the intent is to remove it from all enrolled repos, update the template and the sentinel-dependent logic in reconcile-repos.sh in the same PR.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The review bot is right on this one. Verified that:

  1. The template at internal/scaffold/fullsend-repo/templates/shim-workflow-call.yaml still has the --- and sentinel comment
  2. reconcile-repos.sh uses SENTINEL="# --- fullsend managed below - do not edit ---" to split user-owned headers from managed content via extract_managed_content() / extract_user_header()
  3. The test suite (reconcile-repos-test.sh) also asserts the sentinel is present in generated blobs

Removing these two lines from the enrolled repo while the template keeps them will cause managed_content_b64() to compute a different hash on the next reconciliation run, triggering another onboard PR to restore them — creating an infinite loop of churn.

This PR should not be merged as-is. If the intent is to drop the sentinel from shim workflows, it needs to be done atomically: update the template, update reconcile-repos.sh sentinel logic, and update the test assertions in the same change.

@rh-hemartin rh-hemartin added this pull request to the merge queue Jun 19, 2026
Merged via the queue into main with commit ce7d191 Jun 19, 2026
16 checks passed
@rh-hemartin rh-hemartin deleted the fullsend/onboard branch June 19, 2026 10:49
@fullsend-ai-retro

fullsend-ai-retro Bot commented Jun 19, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 10:53 AM UTC · Completed 10:59 AM UTC
Commit: 409a46c · View workflow run →

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #2101 — chore: update fullsend shim workflow

What happened

  1. 2026-06-09: fullsend-ai-fullsend[bot] opened PR #2101 removing the sentinel comment (# --- fullsend managed below - do not edit ---) and its preceding --- separator from .github/workflows/fullsend.yaml. The PR claimed to sync the shim with the template, but actually introduced divergence.
  2. 2026-06-09: The review bot correctly identified this as a high-severity runtime mechanism failure — removing the sentinel breaks reconcile-repos.sh's extract_managed_content() / extract_user_header() logic, causing infinite reconciliation churn. It submitted CHANGES_REQUESTED.
  3. 2026-06-10: waynesun09 manually verified and confirmed the review bot was correct, citing the template, script, and test suite as evidence.
  4. 2026-06-19 (10 days later): rh-hemartin approved the PR (overriding the bot's CHANGES_REQUESTED), added it to the merge queue, and it merged — with zero fixes applied.

Assessment

Review quality: Excellent. The review bot caught a real, consequential bug on the first pass. Its explanation was detailed, accurate, and actionable. A human reviewer independently confirmed the findings. This is the review system working as intended.

The failure was in the human override. A PR with confirmed high-severity findings and no subsequent fixes was approved and merged by the same person who initially flagged others for input. The merge queue did not block it because the bot's CHANGES_REQUESTED was overridden by a human approval.

Existing issue coverage

All identified improvement opportunities are already tracked by open issues:

  • #2247reconcile-repos.sh produces shim blob without sentinel, creating bogus update PR — directly covers the root cause (the onboard bot generating an incorrect PR)
  • #1201Review bot CHANGES_REQUESTED did not block merge of PR with known correctness bug — covers the merge-despite-warnings pattern

No new proposals filed — both core issues are already tracked. Resolving #2247 would prevent the bad PR from being generated, and resolving #1201 would add guardrails against merging when high-severity findings are unaddressed.

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