From 055bdec8c228ced31850af09b7c670ba0f33d82f Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 15:12:01 -0400 Subject: [PATCH 1/9] ci(social-review): log skip decisions instead of commenting on PRs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The skip-review comment was posting on every push that didn't touch the social block, drowning active PRs in noise. Switch to a ::notice:: log line + Step Summary block — same information, discoverable from the run page, no PR-thread churn. /social-review override path unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/claude-social-review.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/claude-social-review.yml b/.github/workflows/claude-social-review.yml index 611fe99def92..4268fe1fcedd 100644 --- a/.github/workflows/claude-social-review.yml +++ b/.github/workflows/claude-social-review.yml @@ -134,8 +134,19 @@ jobs: if [ "$SHOULD_SKIP" = "true" ]; then echo "should_skip=true" >> "$GITHUB_OUTPUT" - gh pr comment "$PR_NUMBER" --repo "$REPO" --body \ - "🟰 **Skipping social media review** — $REASON. The verdict from the [prior run](${SERVER_URL}/${REPO}/actions/runs/${PRIOR_RUN_ID}) still applies. Comment \`/social-review\` to force a fresh review." + # Log to the action run instead of posting a PR comment — the comment + # was noisy on active PRs (one per push that didn't touch the social + # block). Anyone wanting a fresh review can still comment `/social-review`. + echo "::notice::Skipping social media review — $REASON. Prior run: ${SERVER_URL}/${REPO}/actions/runs/${PRIOR_RUN_ID}. Comment /social-review to force a fresh review." + { + echo "## 🟰 Skipping social media review" + echo "" + echo "**Reason:** $REASON" + echo "" + echo "The verdict from the [prior run](${SERVER_URL}/${REPO}/actions/runs/${PRIOR_RUN_ID}) still applies." + echo "" + echo "Comment \`/social-review\` on the PR to force a fresh review." + } >> "$GITHUB_STEP_SUMMARY" else echo "should_skip=false" >> "$GITHUB_OUTPUT" fi From d15d39643a728e01cbb0c56a5a972483aeed542f Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 16:08:26 -0400 Subject: [PATCH 2/9] ci(social-review): edit-in-place comments + freshness footer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Today the social-review workflow posts a fresh `## Social Media Review` comment on every push, drowning active PRs in noise. Switch to the edit-in-place pattern that pulumi-bot's preview-link comments use: - Claude writes the review to `.social-review.md` instead of running `gh pr comment`. Body starts with `` marker so future runs can find and replace it. - New step uses `peter-evans/find-comment@v3` to look up the existing comment by marker. - New step uses `peter-evans/create-or-update-comment@v4` to replace the body in place (or post fresh if no marker found yet — first run on any PR). - Footer line in the body documents commit SHA + UTC time so readers can tell at a glance whether they're looking at fresh data. Behavior preserved: - Fail-on-character-limit step still runs and still fails the build for objective length violations (no judgment call there). - Skip-case still goes to log + Step Summary (from prior commit), no PR comment. The Claude action's allowed-tools loses `Bash(gh pr comment:*)` and gains `Write` + `Bash(date:*)`. No new secrets needed. Includes a throwaway draft test post at content/blog/test-social-review-edit-in-place/ to exercise the workflow on this PR. The post has deliberately bad Twitter copy (over 280 chars) and AI-toned LinkedIn copy so we can verify both the char-limit fail path and the PASS/FAIL judgment surface during review. Will be removed before merging this PR. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/claude-social-review.yml | 28 ++++++++++++- .../test-social-review-edit-in-place/index.md | 40 +++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 content/blog/test-social-review-edit-in-place/index.md diff --git a/.github/workflows/claude-social-review.yml b/.github/workflows/claude-social-review.yml index 4268fe1fcedd..b942063f03e5 100644 --- a/.github/workflows/claude-social-review.yml +++ b/.github/workflows/claude-social-review.yml @@ -228,8 +228,32 @@ jobs: IMPORTANT: Keep the review short and scannable. Use `#### Platform — PASS` or `#### Platform — FAIL` headings with bullet-pointed reasons. No analysis paragraphs, no rubric citations. A blogger should read it in 30 seconds. - Post your review as a single comment titled `## Social Media Review` via `gh pr comment #${{ steps.pr-info.outputs.number }}`. - claude_args: '--model claude-sonnet-4-6 --allowed-tools "Read,Glob,Grep,Agent,Bash(python3:*),Bash(gh pr view:*),Bash(gh pr diff:*),Bash(gh pr comment:*)"' + Write the review to `.social-review.md`. Do NOT post a PR comment — a subsequent workflow step handles that. The file's body must: + + 1. Start with the literal line `` (HTML comment marker; lets future runs find this comment to update it in place). + 2. Then `## Social Media Review` and the per-platform sections. + 3. End with a footer line: `_Updated for commit \`${{ github.event.pull_request.head.sha || github.event.workflow_run.head_sha }}\` (short: \`$(echo "${{ github.event.pull_request.head.sha || github.event.workflow_run.head_sha }}" | cut -c1-7)\`) at $(date -u '+%Y-%m-%d %H:%M UTC')._` + + Use the Write tool. Do not run `gh pr comment`. + claude_args: '--model claude-sonnet-4-6 --allowed-tools "Read,Glob,Grep,Agent,Write,Bash(python3:*),Bash(gh pr view:*),Bash(gh pr diff:*),Bash(date:*)"' + + - name: Find existing social review comment + if: steps.gate.outputs.should_skip != 'true' && steps.check.outputs.needs_review == 'true' + id: find-social-comment + uses: peter-evans/find-comment@v3 + with: + issue-number: ${{ steps.pr-info.outputs.number }} + body-includes: '' + direction: last + + - name: Post or update social review comment + if: steps.gate.outputs.should_skip != 'true' && steps.check.outputs.needs_review == 'true' + uses: peter-evans/create-or-update-comment@v4 + with: + issue-number: ${{ steps.pr-info.outputs.number }} + comment-id: ${{ steps.find-social-comment.outputs.comment-id }} + body-path: .social-review.md + edit-mode: replace - name: Fail if copy exceeds character limits if: steps.gate.outputs.should_skip != 'true' && steps.check.outputs.has_errors == 'true' diff --git a/content/blog/test-social-review-edit-in-place/index.md b/content/blog/test-social-review-edit-in-place/index.md new file mode 100644 index 000000000000..d5cf1d1b23e2 --- /dev/null +++ b/content/blog/test-social-review-edit-in-place/index.md @@ -0,0 +1,40 @@ +--- +title: "Testing the Social-Review Edit-in-Place Workflow" +date: 2099-12-31 +draft: true +meta_desc: "Throwaway post to exercise the social-review CI workflow's edit-in-place behavior. Will be deleted before merge." +authors: + - adam-gordon-bell +tags: + - test +social: + twitter: | + In today's rapidly evolving and dynamic technological landscape of artificial intelligence and machine learning systems, organizations are leveraging cutting-edge solutions to unlock unprecedented value, drive transformational outcomes, and revolutionize the way teams collaborate and ship software in production environments at scale. + linkedin: | + We are excited to announce a new and innovative approach to social media review automation that leverages best-in-class AI capabilities to deliver streamlined, scalable, and synergistic outcomes for engineering teams. + + In this transformative era, organizations must embrace cutting-edge solutions to remain competitive. + bluesky: | + Quick test post for the new social-review CI workflow. + + Trying out edit-in-place: one comment per PR, updated each push, no more thread spam. +--- + +This is a throwaway post used to exercise the `claude-social-review.yml` workflow's edit-in-place behavior. It will be deleted before the workflow PR is merged. + +The Twitter copy above is deliberately over the 280-character limit to confirm the build still fails on objective character-limit violations. The LinkedIn copy is deliberately AI-toned to confirm Claude's PASS/FAIL judgment still surfaces in the comment without failing the build. The Bluesky copy is clean and human and should PASS. + +When this post is pushed: + +1. The workflow triggers (path matches `content/blog/*/index.md`). +2. Claude writes the review to `.social-review.md` with the `` marker and a SHA/time footer. +3. The find-comment step returns no match (first run) — the create-or-update step posts a fresh comment. +4. The fail step kills the build because the Twitter copy exceeds 280 chars. + +When the post is updated and pushed again: + +1. Workflow re-triggers. +2. Claude writes a new `.social-review.md`. +3. The find-comment step matches by marker — returns the existing comment id. +4. The create-or-update step replaces the body in place. +5. The result on the PR: same comment, new content, no extra thread entries. From 1b8e5722a200cd193e722b022f204fedb1a5d5ff Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 16:13:40 -0400 Subject: [PATCH 3/9] test: replace AI-toned LinkedIn copy to verify edit-in-place --- content/blog/test-social-review-edit-in-place/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/blog/test-social-review-edit-in-place/index.md b/content/blog/test-social-review-edit-in-place/index.md index d5cf1d1b23e2..4240c4a9bb7f 100644 --- a/content/blog/test-social-review-edit-in-place/index.md +++ b/content/blog/test-social-review-edit-in-place/index.md @@ -11,9 +11,9 @@ social: twitter: | In today's rapidly evolving and dynamic technological landscape of artificial intelligence and machine learning systems, organizations are leveraging cutting-edge solutions to unlock unprecedented value, drive transformational outcomes, and revolutionize the way teams collaborate and ship software in production environments at scale. linkedin: | - We are excited to announce a new and innovative approach to social media review automation that leverages best-in-class AI capabilities to deliver streamlined, scalable, and synergistic outcomes for engineering teams. + Pushed a workflow change that should make the CI social-review comments quieter — one comment per PR, edited in place, no new entries on each push. - In this transformative era, organizations must embrace cutting-edge solutions to remain competitive. + Same pattern pulumi-bot already uses for preview links. Validating the path with a throwaway test post on a side PR. bluesky: | Quick test post for the new social-review CI workflow. From d80c7fbfdc3fe6d4eaad33e78383fffa7f8d87da Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 16:18:02 -0400 Subject: [PATCH 4/9] =?UTF-8?q?test:=20edit=20body=20only=20=E2=80=94=20ve?= =?UTF-8?q?rify=20skip-case=20logs=20without=20commenting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/blog/test-social-review-edit-in-place/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/test-social-review-edit-in-place/index.md b/content/blog/test-social-review-edit-in-place/index.md index 4240c4a9bb7f..9cbf1f63feaf 100644 --- a/content/blog/test-social-review-edit-in-place/index.md +++ b/content/blog/test-social-review-edit-in-place/index.md @@ -20,7 +20,7 @@ social: Trying out edit-in-place: one comment per PR, updated each push, no more thread spam. --- -This is a throwaway post used to exercise the `claude-social-review.yml` workflow's edit-in-place behavior. It will be deleted before the workflow PR is merged. +This is a throwaway post used to exercise the `claude-social-review.yml` workflow's edit-in-place behavior. It will be deleted before the workflow PR is merged. (Push 3: editing body, not social block, to test the skip path.) The Twitter copy above is deliberately over the 280-character limit to confirm the build still fails on objective character-limit violations. The LinkedIn copy is deliberately AI-toned to confirm Claude's PASS/FAIL judgment still surfaces in the comment without failing the build. The Bluesky copy is clean and human and should PASS. From a767816f6e083128b23c0081cb88340cd7c02c2d Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 16:30:30 -0400 Subject: [PATCH 5/9] ci(social-review): use marker comment as gate baseline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Today the gate skips re-review only when (a) social block unchanged AND (b) a prior workflow run on this branch had conclusion=success. Problem: the char-limit fail step kills the run AFTER the review comment is already posted, so a stuck-over-limit PR keeps re-running a fresh review on every push even though the verdict is unchanged. Switch the gate to prefer the edit-in-place comment's footer SHA as the baseline. The footer is written atomically with the comment body each review run and is unaffected by later step failures, so it's a more accurate signal of "review posted; verdict applies." Order: 1. Marker comment footer SHA (preferred when present) 2. Last successful run on the branch (legacy fallback) 3. No baseline -> run review Skip-case log/summary handles both baseline sources — links to the prior run when the baseline came from a run, references the existing PR comment when the baseline came from the comment marker. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/claude-social-review.yml | 62 +++++++++++++++++----- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/.github/workflows/claude-social-review.yml b/.github/workflows/claude-social-review.yml index b942063f03e5..f4ef98ba3f50 100644 --- a/.github/workflows/claude-social-review.yml +++ b/.github/workflows/claude-social-review.yml @@ -94,22 +94,53 @@ jobs: SERVER_URL: ${{ github.server_url }} run: | set -e - # "Successful" prior run = "the workflow ran without crashing on this branch." - # The PASS/FAIL verdict lives in the PR comment, not the run conclusion. - # Either way, if the social copy hasn't changed, the prior verdict still - # applies — re-running risks flapping (PASS<->FAIL on identical copy). + # The review verdict lives in the PR comment, not the run conclusion — + # if the social copy hasn't changed since the comment was last updated, + # the verdict still applies. Re-running risks flapping (PASS<->FAIL on + # identical copy) and wastes Claude calls on PRs stuck on a char-limit + # fail (where every push to the same over-limit copy would otherwise + # trigger a fresh review). + # + # Baseline preference order: + # 1. Our edit-in-place comment's footer SHA (most accurate — atomic + # with the comment write, unaffected by later step failures). + # 2. Last successful workflow run on this branch (legacy fallback + # for PRs that pre-date the marker comment). + PRIOR_SHA="" + PRIOR_RUN_ID="" + BASELINE_SOURCE="" + + # (1) Try the marker comment first. + COMMENT_BODY=$(gh api "repos/$REPO/issues/$PR_NUMBER/comments" \ + --jq '[.[] | select(.body | startswith(""))] | .[-1].body // empty') + if [ -n "$COMMENT_BODY" ]; then + COMMENT_SHA=$(echo "$COMMENT_BODY" | grep -oE 'commit \`[a-f0-9]{7,40}\`' | head -1 | grep -oE '[a-f0-9]{7,40}') + if [ -n "$COMMENT_SHA" ]; then + PRIOR_SHA="$COMMENT_SHA" + BASELINE_SOURCE="comment" + echo "Baseline: social-review comment footer SHA $PRIOR_SHA" + fi + fi + + # (2) Fall back to last successful run on this branch. # `gh run list --branch` (and the API's ?branch= query) is unreliable # for slash-containing branch names — silently returns empty for some # branches that do have runs. Query the workflow's runs unfiltered and # filter by head_branch in jq client-side, which always works. - PRIOR=$(gh api \ - "repos/$REPO/actions/workflows/claude-social-review.yml/runs?per_page=30" \ - --jq "[.workflow_runs[] | select(.head_branch == \"$HEAD_REF\" and .event == \"pull_request\" and .conclusion == \"success\" and .id != $RUN_ID)] | .[0]") - PRIOR_SHA=$(echo "$PRIOR" | jq -r '.head_sha // ""') - PRIOR_RUN_ID=$(echo "$PRIOR" | jq -r '.id // ""') + if [ -z "$PRIOR_SHA" ]; then + PRIOR=$(gh api \ + "repos/$REPO/actions/workflows/claude-social-review.yml/runs?per_page=30" \ + --jq "[.workflow_runs[] | select(.head_branch == \"$HEAD_REF\" and .event == \"pull_request\" and .conclusion == \"success\" and .id != $RUN_ID)] | .[0]") + PRIOR_SHA=$(echo "$PRIOR" | jq -r '.head_sha // ""') + PRIOR_RUN_ID=$(echo "$PRIOR" | jq -r '.id // ""') + if [ -n "$PRIOR_SHA" ]; then + BASELINE_SOURCE="run" + echo "Baseline: prior successful run $PRIOR_RUN_ID at SHA $PRIOR_SHA" + fi + fi if [ -z "$PRIOR_SHA" ]; then - echo "No prior successful run on this branch — running review." + echo "No prior baseline (no marker comment, no successful run) — running review." echo "should_skip=false" >> "$GITHUB_OUTPUT" exit 0 fi @@ -137,13 +168,20 @@ jobs: # Log to the action run instead of posting a PR comment — the comment # was noisy on active PRs (one per push that didn't touch the social # block). Anyone wanting a fresh review can still comment `/social-review`. - echo "::notice::Skipping social media review — $REASON. Prior run: ${SERVER_URL}/${REPO}/actions/runs/${PRIOR_RUN_ID}. Comment /social-review to force a fresh review." + if [ "$BASELINE_SOURCE" = "comment" ]; then + VERDICT_LINK="The verdict in the existing social-review PR comment still applies." + NOTICE_TAIL="The PR comment from commit $PRIOR_SHA still applies." + else + VERDICT_LINK="The verdict from the [prior run](${SERVER_URL}/${REPO}/actions/runs/${PRIOR_RUN_ID}) still applies." + NOTICE_TAIL="Prior run: ${SERVER_URL}/${REPO}/actions/runs/${PRIOR_RUN_ID}." + fi + echo "::notice::Skipping social media review — $REASON. $NOTICE_TAIL Comment /social-review to force a fresh review." { echo "## 🟰 Skipping social media review" echo "" echo "**Reason:** $REASON" echo "" - echo "The verdict from the [prior run](${SERVER_URL}/${REPO}/actions/runs/${PRIOR_RUN_ID}) still applies." + echo "$VERDICT_LINK" echo "" echo "Comment \`/social-review\` on the PR to force a fresh review." } >> "$GITHUB_STEP_SUMMARY" From 16bf8898a64b1ca05fb13221d3cc8edf632a51eb Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 16:31:00 -0400 Subject: [PATCH 6/9] =?UTF-8?q?test:=20body-only=20edit=20=E2=80=94=20veri?= =?UTF-8?q?fy=20new=20gate=20skips=20via=20marker=20baseline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/blog/test-social-review-edit-in-place/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/test-social-review-edit-in-place/index.md b/content/blog/test-social-review-edit-in-place/index.md index 9cbf1f63feaf..48e2a1a2e4b2 100644 --- a/content/blog/test-social-review-edit-in-place/index.md +++ b/content/blog/test-social-review-edit-in-place/index.md @@ -20,7 +20,7 @@ social: Trying out edit-in-place: one comment per PR, updated each push, no more thread spam. --- -This is a throwaway post used to exercise the `claude-social-review.yml` workflow's edit-in-place behavior. It will be deleted before the workflow PR is merged. (Push 3: editing body, not social block, to test the skip path.) +This is a throwaway post used to exercise the `claude-social-review.yml` workflow's edit-in-place behavior. It will be deleted before the workflow PR is merged. (Push 5: body edit — verifying the new gate uses the marker comment's footer SHA as baseline, sees no social block change, and skips.) The Twitter copy above is deliberately over the 280-character limit to confirm the build still fails on objective character-limit violations. The LinkedIn copy is deliberately AI-toned to confirm Claude's PASS/FAIL judgment still surfaces in the comment without failing the build. The Bluesky copy is clean and human and should PASS. From 8080723b7000a9f1f33450e9fae9da78b92cc79a Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 16:35:14 -0400 Subject: [PATCH 7/9] ci(social-review): fix marker SHA regex (drop backslash escapes) --- .github/workflows/claude-social-review.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/claude-social-review.yml b/.github/workflows/claude-social-review.yml index f4ef98ba3f50..d4d66a679d83 100644 --- a/.github/workflows/claude-social-review.yml +++ b/.github/workflows/claude-social-review.yml @@ -111,10 +111,12 @@ jobs: BASELINE_SOURCE="" # (1) Try the marker comment first. + # `|| true` on the grep pipeline so a missing footer doesn't kill the + # script under `set -e` — fall through to the run-based baseline instead. COMMENT_BODY=$(gh api "repos/$REPO/issues/$PR_NUMBER/comments" \ --jq '[.[] | select(.body | startswith(""))] | .[-1].body // empty') if [ -n "$COMMENT_BODY" ]; then - COMMENT_SHA=$(echo "$COMMENT_BODY" | grep -oE 'commit \`[a-f0-9]{7,40}\`' | head -1 | grep -oE '[a-f0-9]{7,40}') + COMMENT_SHA=$(echo "$COMMENT_BODY" | grep -oE 'commit `[a-f0-9]{7,40}`' | head -1 | grep -oE '[a-f0-9]{7,40}' || true) if [ -n "$COMMENT_SHA" ]; then PRIOR_SHA="$COMMENT_SHA" BASELINE_SOURCE="comment" From 2a69ff3ee4f3dae57035420d960b2aebe96fdd65 Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 16:35:33 -0400 Subject: [PATCH 8/9] =?UTF-8?q?test:=20body-only=20edit=20(retry)=20?= =?UTF-8?q?=E2=80=94=20exercise=20fixed=20gate=20regex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/blog/test-social-review-edit-in-place/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/test-social-review-edit-in-place/index.md b/content/blog/test-social-review-edit-in-place/index.md index 48e2a1a2e4b2..4b04902fb9ea 100644 --- a/content/blog/test-social-review-edit-in-place/index.md +++ b/content/blog/test-social-review-edit-in-place/index.md @@ -20,7 +20,7 @@ social: Trying out edit-in-place: one comment per PR, updated each push, no more thread spam. --- -This is a throwaway post used to exercise the `claude-social-review.yml` workflow's edit-in-place behavior. It will be deleted before the workflow PR is merged. (Push 5: body edit — verifying the new gate uses the marker comment's footer SHA as baseline, sees no social block change, and skips.) +This is a throwaway post used to exercise the `claude-social-review.yml` workflow's edit-in-place behavior. It will be deleted before the workflow PR is merged. (Push 6: body edit retry — exercising the fixed regex, expecting skip via comment baseline.) The Twitter copy above is deliberately over the 280-character limit to confirm the build still fails on objective character-limit violations. The LinkedIn copy is deliberately AI-toned to confirm Claude's PASS/FAIL judgment still surfaces in the comment without failing the build. The Bluesky copy is clean and human and should PASS. From 05bbc53ac5beee2f0d5ae4e833fbce2e5d33ac01 Mon Sep 17 00:00:00 2001 From: Adam Gordon Bell Date: Tue, 5 May 2026 16:53:12 -0400 Subject: [PATCH 9/9] =?UTF-8?q?test:=20remove=20test=20post=20=E2=80=94=20?= =?UTF-8?q?workflow=20verified=20end-to-end?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test-social-review-edit-in-place/index.md | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 content/blog/test-social-review-edit-in-place/index.md diff --git a/content/blog/test-social-review-edit-in-place/index.md b/content/blog/test-social-review-edit-in-place/index.md deleted file mode 100644 index 4b04902fb9ea..000000000000 --- a/content/blog/test-social-review-edit-in-place/index.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "Testing the Social-Review Edit-in-Place Workflow" -date: 2099-12-31 -draft: true -meta_desc: "Throwaway post to exercise the social-review CI workflow's edit-in-place behavior. Will be deleted before merge." -authors: - - adam-gordon-bell -tags: - - test -social: - twitter: | - In today's rapidly evolving and dynamic technological landscape of artificial intelligence and machine learning systems, organizations are leveraging cutting-edge solutions to unlock unprecedented value, drive transformational outcomes, and revolutionize the way teams collaborate and ship software in production environments at scale. - linkedin: | - Pushed a workflow change that should make the CI social-review comments quieter — one comment per PR, edited in place, no new entries on each push. - - Same pattern pulumi-bot already uses for preview links. Validating the path with a throwaway test post on a side PR. - bluesky: | - Quick test post for the new social-review CI workflow. - - Trying out edit-in-place: one comment per PR, updated each push, no more thread spam. ---- - -This is a throwaway post used to exercise the `claude-social-review.yml` workflow's edit-in-place behavior. It will be deleted before the workflow PR is merged. (Push 6: body edit retry — exercising the fixed regex, expecting skip via comment baseline.) - -The Twitter copy above is deliberately over the 280-character limit to confirm the build still fails on objective character-limit violations. The LinkedIn copy is deliberately AI-toned to confirm Claude's PASS/FAIL judgment still surfaces in the comment without failing the build. The Bluesky copy is clean and human and should PASS. - -When this post is pushed: - -1. The workflow triggers (path matches `content/blog/*/index.md`). -2. Claude writes the review to `.social-review.md` with the `` marker and a SHA/time footer. -3. The find-comment step returns no match (first run) — the create-or-update step posts a fresh comment. -4. The fail step kills the build because the Twitter copy exceeds 280 chars. - -When the post is updated and pushed again: - -1. Workflow re-triggers. -2. Claude writes a new `.social-review.md`. -3. The find-comment step matches by marker — returns the existing comment id. -4. The create-or-update step replaces the body in place. -5. The result on the PR: same comment, new content, no extra thread entries.