Skip to content

Implement robust comment lifecycle management for verification workflows - #18

Merged
mithro merged 4 commits into
mainfrom
fix/comment-lifecycle-management
Jul 7, 2025
Merged

Implement robust comment lifecycle management for verification workflows#18
mithro merged 4 commits into
mainfrom
fix/comment-lifecycle-management

Conversation

@mithro

@mithro mithro commented Jul 7, 2025

Copy link
Copy Markdown
Contributor

Summary

This PR implements a comprehensive solution for managing verification comment clutter in pull requests by automatically archiving old verification results while preserving the most recent one.

Problem Solved

The existing comment lifecycle management had critical flaws:

  • No pagination support: Failed with PRs having 50+ comments
  • Incomplete comment detection: Missed comments in GitHub Actions context
  • Single-pass archival: Left multiple unarchived comments after rapid workflow runs
  • Poor error handling: Limited debugging capabilities for production issues

Key Improvements

🔄 Iterative Archival Process

  • Continues archiving until only 1 unarchived verification comment remains
  • Handles multiple rapid workflow runs without leaving comment trails
  • Safety limits prevent infinite loops (max 10 iterations)
  • Re-validates state after each archival batch

🔍 Enhanced Comment Detection

  • Proper pagination support for large comment lists (100+ comments)
  • Robust filtering for github-actions[bot] verification comments
  • Legacy format support for comments created before VERIFICATION_COMMENT_MARKER
  • Smart exclusions for deployment ready comments

📝 Smart Comment Management

  • Sorts comments by creation date (archives oldest first)
  • Preserves original content in collapsible archived sections
  • Includes timestamps from original comment creation
  • Maintains VERIFICATION_COMMENT_MARKER for consistency

🛡️ Improved Error Handling

  • Continues processing if individual comment archival fails
  • Comprehensive logging for debugging workflow issues
  • API delay handling for GitHub API consistency
  • Maximum iteration safety limits

Verification Results

Successfully tested on PR #2 which had 56+ verification comments:

  • Detected all verification comments correctly (vs. 0 detected before)
  • Archived 25 old comments in single workflow run
  • Left only 1 current verification comment visible
  • Completed in 2 iterations with proper validation
  • Maintained clean PR history for future workflow runs

Technical Implementation

Before (Broken)

// Simple single-pass with no pagination
const { data: comments } = await github.rest.issues.listComments({...});
const verificationComments = comments.filter(comment => 
  comment.user.type === 'Bot' && 
  comment.body.includes('<\!-- VERIFICATION_COMMENT_MARKER -->')
);
// Archive all found comments once

After (Robust)

// Paginated fetching with comprehensive filtering
const allComments = [];
while (hasMore) {
  const { data: pageComments } = await github.rest.issues.listComments({
    per_page: 100, page: page
  });
  allComments.push(...pageComments);
}

// Iterative archival until target state achieved
while (iteration < maxIterations) {
  const unarchivedComments = verificationComments.filter(comment => 
    \!comment.body.includes('archived')
  );
  if (unarchivedComments.length <= 1) break;
  // Archive all but most recent, then re-validate
}

Impact

This system will maintain clean PR comment history for all future preview verification workflows, eliminating the comment clutter that was accumulating in PRs with multiple workflow runs.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings July 7, 2025 07:06
@github-actions
github-actions Bot temporarily deployed to pr-preview-18 July 7, 2025 07:07 Destroyed

This comment was marked as outdated.

@mithro
mithro force-pushed the fix/comment-lifecycle-management branch from b154806 to 4dc3bb2 Compare July 7, 2025 07:09
@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

🚀 Preview Deployment Ready!

Status Preview URL Commit
✅ Success View Preview 55f6b08

This preview will be automatically updated when you push new commits to this PR.

Browse all previews: https://preview.wafer.space


⚡ Deployed to custom domain • Preview will be removed when PR is closed

@github-actions
github-actions Bot temporarily deployed to pr-preview-18 July 7, 2025 07:09 Destroyed
@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

📋 Previous verification results (archived)

Click to view archived verification results from 2025-07-07T07:09:48.000Z

✅ Preview Site Verification PASSED

Preview Site Verification Report

PR: #18
URL: https://preview.wafer.space/pr-18/
Timestamp: Mon Jul 7 07:09:39 UTC 2025

1. Basic Connectivity ✅

  • ✅ Site is accessible
  • ✅ HTTP Status: 200

2. Content Verification

  • ✅ Site contains expected content
  • ✅ Tagline present
  • ✅ JavaScript baseurl configuration found

3. Asset Verification

Extracting asset URLs from HTML...

  • ✅ favicon.png
  • ✅ assets/css/style.css
  • ✅ assets/js/jquery.min.js
  • ✅ assets/images/logo-light.webp
    Checking HTML-referenced assets...
  • ✅ bootstrap.min.css (HTML-referenced)
  • ✅ plugins.css (HTML-referenced)
  • ✅ settings.css (HTML-referenced)
  • ✅ layers.css (HTML-referenced)
  • ✅ navigation.css (HTML-referenced)
  • ✅ type.css (HTML-referenced)
  • ✅ style.css (HTML-referenced)
  • ✅ sky.css (HTML-referenced)
  • ✅ dark.css (HTML-referenced)
  • ✅ jquery.min.js (HTML-referenced)
  • ✅ popper.min.js (HTML-referenced)
  • ✅ bootstrap.min.js (HTML-referenced)
  • ✅ jquery.themepunch.tools.min.js (HTML-referenced)
  • ✅ jquery.themepunch.revolution.min.js (HTML-referenced)
  • ✅ revolution.extension.actions.min.js (HTML-referenced)
  • ✅ revolution.extension.carousel.min.js (HTML-referenced)
  • ✅ revolution.extension.kenburn.min.js (HTML-referenced)
  • ✅ revolution.extension.layeranimation.min.js (HTML-referenced)
  • ✅ revolution.extension.migration.min.js (HTML-referenced)
  • ✅ revolution.extension.navigation.min.js (HTML-referenced)
  • ✅ revolution.extension.parallax.min.js (HTML-referenced)
  • ✅ revolution.extension.slideanims.min.js (HTML-referenced)
  • ✅ revolution.extension.video.min.js (HTML-referenced)
  • ✅ plugins.js (HTML-referenced)
  • ✅ simple-jekyll-search.min.js (HTML-referenced)
  • ✅ scripts.js (HTML-referenced)
  • ✅ favicon.png (HTML-referenced)
  • ✅ logo-light.webp (HTML-referenced)
  • ✅ logo.webp (HTML-referenced)
  • ✅ logo-light.webp (HTML-referenced)
  • ✅ logo-light.webp (HTML-referenced)
    Asset Summary: 0/35 failed
  • ✅ All assets loaded successfully

4. Link and Asset Verification (muffet)

Running comprehensive muffet validation...

  • ✅ All links and assets are valid (muffet)

5. Performance Check

  • Page load time: 0.062315s
  • ✅ Load time acceptable

6. Mobile Responsiveness

  • ✅ Viewport meta tag present

Summary

All verification checks passed!


🔍 Automated verification • Run ID: 16110250763 • 2025-07-07T07:09:47.467Z


⏰ This verification result has been archived • A newer verification is available below

@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

📋 Previous verification results (archived)

Click to view archived verification results from 2025-07-07T07:12:25.000Z

❌ Preview Site Verification FAILED

Preview Site Verification Report

PR: #18
URL: https://preview.wafer.space/pr-18/
Timestamp: Mon Jul 7 07:12:16 UTC 2025

1. Basic Connectivity ✅

  • ✅ Site is accessible
  • ✅ HTTP Status: 200

2. Content Verification

  • ✅ Site contains expected content
  • ✅ Tagline present
  • ✅ Assets use correct PR baseurl paths

3. Asset Verification

Extracting asset URLs from HTML...

  • ✅ favicon.png
  • ✅ assets/css/style.css
  • ✅ assets/js/jquery.min.js
  • ✅ assets/images/logo-light.webp
    Checking HTML-referenced assets...
  • ❌ bootstrap.min.css (HTTP 404) - /assets/css/bootstrap.min.css
  • ❌ plugins.css (HTTP 404) - /assets/css/plugins.css
  • ❌ settings.css (HTTP 404) - /assets/revolution/css/settings.css
  • ❌ layers.css (HTTP 404) - /assets/revolution/css/layers.css
  • ❌ navigation.css (HTTP 404) - /assets/revolution/css/navigation.css
  • ❌ type.css (HTTP 404) - /assets/type/type.css
  • ❌ style.css (HTTP 404) - /assets/css/style.css
  • ✅ sky.css (HTML-referenced)
  • ✅ dark.css (HTML-referenced)
  • ❌ jquery.min.js (HTTP 404) - /assets/js/jquery.min.js
  • ❌ popper.min.js (HTTP 404) - /assets/js/popper.min.js
  • ❌ bootstrap.min.js (HTTP 404) - /assets/js/bootstrap.min.js
  • ❌ jquery.themepunch.tools.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.tools.min.js
  • ❌ jquery.themepunch.revolution.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.revolution.min.js
  • ❌ revolution.extension.actions.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.actions.min.js
  • ❌ revolution.extension.carousel.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.carousel.min.js
  • ❌ revolution.extension.kenburn.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.kenburn.min.js
  • ❌ revolution.extension.layeranimation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
  • ❌ revolution.extension.migration.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.migration.min.js
  • ❌ revolution.extension.navigation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.navigation.min.js
  • ❌ revolution.extension.parallax.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.parallax.min.js
  • ❌ revolution.extension.slideanims.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.slideanims.min.js
  • ❌ revolution.extension.video.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.video.min.js
  • ❌ plugins.js (HTTP 404) - /assets/js/plugins.js
  • ❌ simple-jekyll-search.min.js (HTTP 404) - /assets/js/simple-jekyll-search.min.js
  • ❌ scripts.js (HTTP 404) - /assets/js/scripts.js
  • ✅ favicon.png (HTML-referenced)
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo.webp (HTTP 404) - /assets/images/logo.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
    Asset Summary: 28/35 failed
  • ❌ 28 assets failed to load

4. Link and Asset Verification (muffet)

Running comprehensive muffet validation...

  • ❌ muffet found broken links or assets:
https://preview.wafer.space/pr-18/
	404	https://preview.wafer.space/about.html
	404	https://preview.wafer.space/assets/css/bootstrap.min.css
	404	https://preview.wafer.space/assets/css/plugins.css
	404	https://preview.wafer.space/assets/css/style.css
	404	https://preview.wafer.space/assets/images/art/rocket1.webp
	404	https://preview.wafer.space/assets/images/art/rocket2.webp
	404	https://preview.wafer.space/assets/images/art/rocket3.webp
	404	https://preview.wafer.space/assets/images/art/rocket4.webp
	404	https://preview.wafer.space/assets/images/concept/concept12@2x.webp
	404	https://preview.wafer.space/assets/images/dummy.webp
	404	https://preview.wafer.space/assets/images/logo-light.webp
	404	https://preview.wafer.space/assets/images/logo.webp
	404	https://preview.wafer.space/assets/js/bootstrap.min.js
	404	https://preview.wafer.space/assets/js/jquery.min.js
	404	https://preview.wafer.space/assets/js/plugins.js
	404	https://preview.wafer.space/assets/js/popper.min.js
	404	https://preview.wafer.space/assets/js/scripts.js
	404	https://preview.wafer.space/assets/js/simple-jekyll-search.min.js
	404	https://preview.wafer.space/assets/revolution/css/layers.css
	404	https://preview.wafer.space/assets/revolution/css/navigation.css
	404	https://preview.wafer.space/assets/revolution/css/settings.css
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.actions.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.carousel.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.kenburn.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.migration.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.navigation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.parallax.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.slideanims.min.js

Summary: 0
0 broken links, 0
0 timeouts, 0
0 HTTP errors

5. Performance Check

  • Page load time: 0.092142s
  • ✅ Load time acceptable

6. Mobile Responsiveness

  • ✅ Viewport meta tag present

Summary

Some verification checks failed


🔍 Automated verification • Run ID: 16110297963 • 2025-07-07T07:12:24.859Z


⏰ This verification result has been archived by Run ID: 16125308983 • A newer verification is available below

This commit introduces a comprehensive solution for managing verification
comment clutter in pull requests by automatically archiving old verification
results while preserving the most recent one.

## Key Features

### Iterative Archival Process
- Continues archiving until only 1 unarchived verification comment remains
- Handles multiple rapid workflow runs without leaving comment trails
- Safety limits prevent infinite loops (max 10 iterations)

### Enhanced Comment Detection
- Proper pagination support for large comment lists (100+ comments)
- Robust filtering for github-actions[bot] verification comments
- Support for both legacy comments and VERIFICATION_COMMENT_MARKER format
- Excludes deployment ready comments from archival process

### Smart Comment Management
- Sorts comments by creation date (archives oldest first)
- Preserves original content in collapsible archived sections
- Includes timestamps from original comment creation
- Maintains VERIFICATION_COMMENT_MARKER for consistency

### Improved Error Handling
- Continues processing if individual comment archival fails
- Comprehensive logging for debugging workflow issues
- API delay handling for GitHub consistency

## Problem Solved

Previous implementation had critical flaws:
- No pagination support (failed with 50+ comments)
- Incomplete comment detection in GitHub Actions context
- Single-pass archival left multiple unarchived comments
- Poor error handling and debugging capabilities

## Verification

Successfully tested on PR #2 with 56+ verification comments:
- Detected all verification comments correctly
- Archived 25 old comments in single workflow run
- Left only 1 current verification comment visible
- Completed in 2 iterations with proper validation

This system will maintain clean PR comment history for all future
preview verification workflows.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@mithro
mithro force-pushed the fix/comment-lifecycle-management branch from 4dc3bb2 to a332622 Compare July 7, 2025 07:14
@github-actions
github-actions Bot temporarily deployed to pr-preview-18 July 7, 2025 07:15 Destroyed
@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

📋 Previous verification results (archived)

Click to view archived verification results from 2025-07-07T07:17:54.000Z

❌ Preview Site Verification FAILED

Preview Site Verification Report

PR: #18
URL: https://preview.wafer.space/pr-18/
Timestamp: Mon Jul 7 07:17:49 UTC 2025

1. Basic Connectivity ✅

  • ✅ Site is accessible
  • ✅ HTTP Status: 200

2. Content Verification

  • ✅ Site contains expected content
  • ✅ Tagline present
  • ✅ Assets use correct PR baseurl paths

3. Asset Verification

Extracting asset URLs from HTML...

  • ✅ favicon.png
  • ✅ assets/css/style.css
  • ✅ assets/js/jquery.min.js
  • ✅ assets/images/logo-light.webp
    Checking HTML-referenced assets...
  • ❌ bootstrap.min.css (HTTP 404) - /assets/css/bootstrap.min.css
  • ❌ plugins.css (HTTP 404) - /assets/css/plugins.css
  • ❌ settings.css (HTTP 404) - /assets/revolution/css/settings.css
  • ❌ layers.css (HTTP 404) - /assets/revolution/css/layers.css
  • ❌ navigation.css (HTTP 404) - /assets/revolution/css/navigation.css
  • ❌ type.css (HTTP 404) - /assets/type/type.css
  • ❌ style.css (HTTP 404) - /assets/css/style.css
  • ✅ sky.css (HTML-referenced)
  • ✅ dark.css (HTML-referenced)
  • ❌ jquery.min.js (HTTP 404) - /assets/js/jquery.min.js
  • ❌ popper.min.js (HTTP 404) - /assets/js/popper.min.js
  • ❌ bootstrap.min.js (HTTP 404) - /assets/js/bootstrap.min.js
  • ❌ jquery.themepunch.tools.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.tools.min.js
  • ❌ jquery.themepunch.revolution.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.revolution.min.js
  • ❌ revolution.extension.actions.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.actions.min.js
  • ❌ revolution.extension.carousel.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.carousel.min.js
  • ❌ revolution.extension.kenburn.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.kenburn.min.js
  • ❌ revolution.extension.layeranimation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
  • ❌ revolution.extension.migration.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.migration.min.js
  • ❌ revolution.extension.navigation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.navigation.min.js
  • ❌ revolution.extension.parallax.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.parallax.min.js
  • ❌ revolution.extension.slideanims.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.slideanims.min.js
  • ❌ revolution.extension.video.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.video.min.js
  • ❌ plugins.js (HTTP 404) - /assets/js/plugins.js
  • ❌ simple-jekyll-search.min.js (HTTP 404) - /assets/js/simple-jekyll-search.min.js
  • ❌ scripts.js (HTTP 404) - /assets/js/scripts.js
  • ✅ favicon.png (HTML-referenced)
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo.webp (HTTP 404) - /assets/images/logo.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
    Asset Summary: 28/35 failed
  • ❌ 28 assets failed to load

4. Link and Asset Verification (muffet)

Running comprehensive muffet validation...

  • ❌ muffet found broken links or assets:
https://preview.wafer.space/pr-18/
	404	https://preview.wafer.space/about.html
	404	https://preview.wafer.space/assets/css/bootstrap.min.css
	404	https://preview.wafer.space/assets/css/plugins.css
	404	https://preview.wafer.space/assets/css/style.css
	404	https://preview.wafer.space/assets/images/art/rocket1.webp
	404	https://preview.wafer.space/assets/images/art/rocket2.webp
	404	https://preview.wafer.space/assets/images/art/rocket3.webp
	404	https://preview.wafer.space/assets/images/art/rocket4.webp
	404	https://preview.wafer.space/assets/images/concept/concept12@2x.webp
	404	https://preview.wafer.space/assets/images/dummy.webp
	404	https://preview.wafer.space/assets/images/logo-light.webp
	404	https://preview.wafer.space/assets/images/logo.webp
	404	https://preview.wafer.space/assets/js/bootstrap.min.js
	404	https://preview.wafer.space/assets/js/jquery.min.js
	404	https://preview.wafer.space/assets/js/plugins.js
	404	https://preview.wafer.space/assets/js/popper.min.js
	404	https://preview.wafer.space/assets/js/scripts.js
	404	https://preview.wafer.space/assets/js/simple-jekyll-search.min.js
	404	https://preview.wafer.space/assets/revolution/css/layers.css
	404	https://preview.wafer.space/assets/revolution/css/navigation.css
	404	https://preview.wafer.space/assets/revolution/css/settings.css
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.actions.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.carousel.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.kenburn.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.migration.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.navigation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.parallax.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.slideanims.min.js

Summary: 0
0 broken links, 0
0 timeouts, 0
0 HTTP errors

5. Performance Check

  • Page load time: 0.031408s
  • ✅ Load time acceptable

6. Mobile Responsiveness

  • ✅ Viewport meta tag present

Summary

Some verification checks failed


🔍 Automated verification • Run ID: 16110407867 • 2025-07-07T07:17:53.395Z


⏰ This verification result has been archived by Run ID: 16125308983 • A newer verification is available below

… comment

Changed the archival logic to:
1. Create new verification comment first
2. Archive ALL existing unarchived verification comments (except the new one)
3. Result: Exactly 1 unarchived comment remains at all times

This ensures the system maintains only one active verification comment
per PR as designed, regardless of timing or multiple workflow runs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions
github-actions Bot temporarily deployed to pr-preview-18 July 7, 2025 18:48 Destroyed
@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

📋 Previous verification results (archived)

Click to view archived verification results from 2025-07-07T18:51:02.000Z

❌ Preview Site Verification FAILED

Preview Site Verification Report

PR: #18
URL: https://preview.wafer.space/pr-18/
Timestamp: Mon Jul 7 18:50:51 UTC 2025

1. Basic Connectivity ✅

  • ✅ Site is accessible
  • ✅ HTTP Status: 200

2. Content Verification

  • ✅ Site contains expected content
  • ✅ Tagline present
  • ✅ Assets use correct PR baseurl paths

3. Asset Verification

Extracting asset URLs from HTML...

  • ✅ favicon.png
  • ✅ assets/css/style.css
  • ✅ assets/js/jquery.min.js
  • ✅ assets/images/logo-light.webp
    Checking HTML-referenced assets...
  • ❌ bootstrap.min.css (HTTP 404) - /assets/css/bootstrap.min.css
  • ❌ plugins.css (HTTP 404) - /assets/css/plugins.css
  • ❌ settings.css (HTTP 404) - /assets/revolution/css/settings.css
  • ❌ layers.css (HTTP 404) - /assets/revolution/css/layers.css
  • ❌ navigation.css (HTTP 404) - /assets/revolution/css/navigation.css
  • ❌ type.css (HTTP 404) - /assets/type/type.css
  • ❌ style.css (HTTP 404) - /assets/css/style.css
  • ✅ sky.css (HTML-referenced)
  • ✅ dark.css (HTML-referenced)
  • ❌ jquery.min.js (HTTP 404) - /assets/js/jquery.min.js
  • ❌ popper.min.js (HTTP 404) - /assets/js/popper.min.js
  • ❌ bootstrap.min.js (HTTP 404) - /assets/js/bootstrap.min.js
  • ❌ jquery.themepunch.tools.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.tools.min.js
  • ❌ jquery.themepunch.revolution.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.revolution.min.js
  • ❌ revolution.extension.actions.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.actions.min.js
  • ❌ revolution.extension.carousel.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.carousel.min.js
  • ❌ revolution.extension.kenburn.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.kenburn.min.js
  • ❌ revolution.extension.layeranimation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
  • ❌ revolution.extension.migration.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.migration.min.js
  • ❌ revolution.extension.navigation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.navigation.min.js
  • ❌ revolution.extension.parallax.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.parallax.min.js
  • ❌ revolution.extension.slideanims.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.slideanims.min.js
  • ❌ revolution.extension.video.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.video.min.js
  • ❌ plugins.js (HTTP 404) - /assets/js/plugins.js
  • ❌ simple-jekyll-search.min.js (HTTP 404) - /assets/js/simple-jekyll-search.min.js
  • ❌ scripts.js (HTTP 404) - /assets/js/scripts.js
  • ✅ favicon.png (HTML-referenced)
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo.webp (HTTP 404) - /assets/images/logo.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
    Asset Summary: 28/35 failed
  • ❌ 28 assets failed to load

4. Link and Asset Verification (muffet)

Running comprehensive muffet validation...

  • ❌ muffet found broken links or assets:
https://preview.wafer.space/pr-18/
	404	https://preview.wafer.space/about.html
	404	https://preview.wafer.space/assets/css/bootstrap.min.css
	404	https://preview.wafer.space/assets/css/plugins.css
	404	https://preview.wafer.space/assets/css/style.css
	404	https://preview.wafer.space/assets/images/art/rocket1.webp
	404	https://preview.wafer.space/assets/images/art/rocket2.webp
	404	https://preview.wafer.space/assets/images/art/rocket3.webp
	404	https://preview.wafer.space/assets/images/art/rocket4.webp
	404	https://preview.wafer.space/assets/images/concept/concept12@2x.webp
	404	https://preview.wafer.space/assets/images/dummy.webp
	404	https://preview.wafer.space/assets/images/logo-light.webp
	404	https://preview.wafer.space/assets/images/logo.webp
	404	https://preview.wafer.space/assets/js/bootstrap.min.js
	404	https://preview.wafer.space/assets/js/jquery.min.js
	404	https://preview.wafer.space/assets/js/plugins.js
	404	https://preview.wafer.space/assets/js/popper.min.js
	404	https://preview.wafer.space/assets/js/scripts.js
	404	https://preview.wafer.space/assets/js/simple-jekyll-search.min.js
	404	https://preview.wafer.space/assets/revolution/css/layers.css
	404	https://preview.wafer.space/assets/revolution/css/navigation.css
	404	https://preview.wafer.space/assets/revolution/css/settings.css
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.actions.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.carousel.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.kenburn.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.migration.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.navigation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.parallax.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.slideanims.min.js

Summary: 0
0 broken links, 0
0 timeouts, 0
0 HTTP errors

5. Performance Check

  • Page load time: 0.045634s
  • ✅ Load time acceptable

6. Mobile Responsiveness

  • ✅ Viewport meta tag present

Summary

Some verification checks failed


🔍 Automated verification • Run ID: 16125308983 • 2025-07-07T18:51:02.568Z


⏰ This verification result has been archived by Run ID: 16125393123 • A newer verification is available below

Enhanced comment lifecycle management to handle multiple concurrent workflows:

- Random 1-3 second delay before archival to let concurrent workflows create comments
- Increased max iterations from 10 to 15 for rapid-fire scenarios
- Double-check comment state before archiving to avoid conflicts
- Handle 409 conflict errors when comments are modified concurrently
- Better debugging with comment IDs and creation times
- Include workflow run ID in archived comment metadata

This ensures the system maintains exactly 1 unarchived verification
comment even with multiple rapid pushes triggering concurrent workflows.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@mithro
mithro force-pushed the fix/comment-lifecycle-management branch from df7eb8b to 67e778e Compare July 7, 2025 18:53
@github-actions
github-actions Bot temporarily deployed to pr-preview-18 July 7, 2025 18:53 Destroyed
@mithro
mithro requested a review from Copilot July 7, 2025 18:54
@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

📋 Previous verification results (archived)

Click to view archived verification results from 2025-07-07T18:55:14.000Z

❌ Preview Site Verification FAILED

Preview Site Verification Report

PR: #18
URL: https://preview.wafer.space/pr-18/
Timestamp: Mon Jul 7 18:55:07 UTC 2025

1. Basic Connectivity ✅

  • ✅ Site is accessible
  • ✅ HTTP Status: 200

2. Content Verification

  • ✅ Site contains expected content
  • ✅ Tagline present
  • ✅ Assets use correct PR baseurl paths

3. Asset Verification

Extracting asset URLs from HTML...

  • ✅ favicon.png
  • ✅ assets/css/style.css
  • ✅ assets/js/jquery.min.js
  • ✅ assets/images/logo-light.webp
    Checking HTML-referenced assets...
  • ❌ bootstrap.min.css (HTTP 404) - /assets/css/bootstrap.min.css
  • ❌ plugins.css (HTTP 404) - /assets/css/plugins.css
  • ❌ settings.css (HTTP 404) - /assets/revolution/css/settings.css
  • ❌ layers.css (HTTP 404) - /assets/revolution/css/layers.css
  • ❌ navigation.css (HTTP 404) - /assets/revolution/css/navigation.css
  • ❌ type.css (HTTP 404) - /assets/type/type.css
  • ❌ style.css (HTTP 404) - /assets/css/style.css
  • ✅ sky.css (HTML-referenced)
  • ✅ dark.css (HTML-referenced)
  • ❌ jquery.min.js (HTTP 404) - /assets/js/jquery.min.js
  • ❌ popper.min.js (HTTP 404) - /assets/js/popper.min.js
  • ❌ bootstrap.min.js (HTTP 404) - /assets/js/bootstrap.min.js
  • ❌ jquery.themepunch.tools.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.tools.min.js
  • ❌ jquery.themepunch.revolution.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.revolution.min.js
  • ❌ revolution.extension.actions.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.actions.min.js
  • ❌ revolution.extension.carousel.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.carousel.min.js
  • ❌ revolution.extension.kenburn.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.kenburn.min.js
  • ❌ revolution.extension.layeranimation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
  • ❌ revolution.extension.migration.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.migration.min.js
  • ❌ revolution.extension.navigation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.navigation.min.js
  • ❌ revolution.extension.parallax.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.parallax.min.js
  • ❌ revolution.extension.slideanims.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.slideanims.min.js
  • ❌ revolution.extension.video.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.video.min.js
  • ❌ plugins.js (HTTP 404) - /assets/js/plugins.js
  • ❌ simple-jekyll-search.min.js (HTTP 404) - /assets/js/simple-jekyll-search.min.js
  • ❌ scripts.js (HTTP 404) - /assets/js/scripts.js
  • ✅ favicon.png (HTML-referenced)
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo.webp (HTTP 404) - /assets/images/logo.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
    Asset Summary: 28/35 failed
  • ❌ 28 assets failed to load

4. Link and Asset Verification (muffet)

Running comprehensive muffet validation...

  • ❌ muffet found broken links or assets:
https://preview.wafer.space/pr-18/
	404	https://preview.wafer.space/about.html
	404	https://preview.wafer.space/assets/css/bootstrap.min.css
	404	https://preview.wafer.space/assets/css/plugins.css
	404	https://preview.wafer.space/assets/css/style.css
	404	https://preview.wafer.space/assets/images/art/rocket1.webp
	404	https://preview.wafer.space/assets/images/art/rocket2.webp
	404	https://preview.wafer.space/assets/images/art/rocket3.webp
	404	https://preview.wafer.space/assets/images/art/rocket4.webp
	404	https://preview.wafer.space/assets/images/concept/concept12@2x.webp
	404	https://preview.wafer.space/assets/images/dummy.webp
	404	https://preview.wafer.space/assets/images/logo-light.webp
	404	https://preview.wafer.space/assets/images/logo.webp
	404	https://preview.wafer.space/assets/js/bootstrap.min.js
	404	https://preview.wafer.space/assets/js/jquery.min.js
	404	https://preview.wafer.space/assets/js/plugins.js
	404	https://preview.wafer.space/assets/js/popper.min.js
	404	https://preview.wafer.space/assets/js/scripts.js
	404	https://preview.wafer.space/assets/js/simple-jekyll-search.min.js
	404	https://preview.wafer.space/assets/revolution/css/layers.css
	404	https://preview.wafer.space/assets/revolution/css/navigation.css
	404	https://preview.wafer.space/assets/revolution/css/settings.css
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.actions.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.carousel.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.kenburn.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.migration.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.navigation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.parallax.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.slideanims.min.js

Summary: 0
0 broken links, 0
0 timeouts, 0
0 HTTP errors

5. Performance Check

  • Page load time: 0.080555s
  • ✅ Load time acceptable

6. Mobile Responsiveness

  • ✅ Viewport meta tag present

Summary

Some verification checks failed


🔍 Automated verification • Run ID: 16125393123 • 2025-07-07T18:55:13.381Z


⏰ This verification result has been archived by Run ID: 16125635176 • A newer verification is available below

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

This PR enhances the verification comment lifecycle by introducing paginated fetching, iterative archival, and improved concurrency handling.

  • Replaces single-pass comment retrieval with a paginated getVerificationComments helper.
  • Adds an iterative loop to archive old comments until only the latest remains, with safety limits.
  • Introduces richer logging, randomized delays, and better error resilience for concurrent workflows.
Comments suppressed due to low confidence (1)

.github/scripts/comment-verification-results.js:36

  • [nitpick] Add JSDoc comments to describe the purpose, parameters, and return value of the getVerificationComments function for better maintainability.
  const getVerificationComments = async () => {

Comment thread .github/scripts/comment-verification-results.js Outdated
Comment thread .github/scripts/comment-verification-results.js Outdated
Comment thread .github/scripts/comment-verification-results.js Outdated
Improvements based on Copilot suggestions for PR #18:

- Added sleep helper function to reduce code duplication
- Replaced console.log with GitHub Actions core logging methods
- Fixed pagination logic to avoid unnecessary API calls
- Implemented exponential backoff (100ms → 1600ms) to reduce API pressure
- Removed unused hasMore variable

These changes improve code quality, logging structure, and API efficiency.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions
github-actions Bot temporarily deployed to pr-preview-18 July 7, 2025 19:05 Destroyed
@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

❌ Preview Site Verification FAILED

Preview Site Verification Report

PR: #18
URL: https://preview.wafer.space/pr-18/
Timestamp: Mon Jul 7 19:08:00 UTC 2025

1. Basic Connectivity ✅

  • ✅ Site is accessible
  • ✅ HTTP Status: 200

2. Content Verification

  • ✅ Site contains expected content
  • ✅ Tagline present
  • ✅ Assets use correct PR baseurl paths

3. Asset Verification

Extracting asset URLs from HTML...

  • ✅ favicon.png
  • ✅ assets/css/style.css
  • ✅ assets/js/jquery.min.js
  • ✅ assets/images/logo-light.webp
    Checking HTML-referenced assets...
  • ❌ bootstrap.min.css (HTTP 404) - /assets/css/bootstrap.min.css
  • ❌ plugins.css (HTTP 404) - /assets/css/plugins.css
  • ❌ settings.css (HTTP 404) - /assets/revolution/css/settings.css
  • ❌ layers.css (HTTP 404) - /assets/revolution/css/layers.css
  • ❌ navigation.css (HTTP 404) - /assets/revolution/css/navigation.css
  • ❌ type.css (HTTP 404) - /assets/type/type.css
  • ❌ style.css (HTTP 404) - /assets/css/style.css
  • ✅ sky.css (HTML-referenced)
  • ✅ dark.css (HTML-referenced)
  • ❌ jquery.min.js (HTTP 404) - /assets/js/jquery.min.js
  • ❌ popper.min.js (HTTP 404) - /assets/js/popper.min.js
  • ❌ bootstrap.min.js (HTTP 404) - /assets/js/bootstrap.min.js
  • ❌ jquery.themepunch.tools.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.tools.min.js
  • ❌ jquery.themepunch.revolution.min.js (HTTP 404) - /assets/revolution/js/jquery.themepunch.revolution.min.js
  • ❌ revolution.extension.actions.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.actions.min.js
  • ❌ revolution.extension.carousel.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.carousel.min.js
  • ❌ revolution.extension.kenburn.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.kenburn.min.js
  • ❌ revolution.extension.layeranimation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
  • ❌ revolution.extension.migration.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.migration.min.js
  • ❌ revolution.extension.navigation.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.navigation.min.js
  • ❌ revolution.extension.parallax.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.parallax.min.js
  • ❌ revolution.extension.slideanims.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.slideanims.min.js
  • ❌ revolution.extension.video.min.js (HTTP 404) - /assets/revolution/js/extensions/revolution.extension.video.min.js
  • ❌ plugins.js (HTTP 404) - /assets/js/plugins.js
  • ❌ simple-jekyll-search.min.js (HTTP 404) - /assets/js/simple-jekyll-search.min.js
  • ❌ scripts.js (HTTP 404) - /assets/js/scripts.js
  • ✅ favicon.png (HTML-referenced)
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo.webp (HTTP 404) - /assets/images/logo.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
  • ❌ logo-light.webp (HTTP 404) - /assets/images/logo-light.webp
    Asset Summary: 28/35 failed
  • ❌ 28 assets failed to load

4. Link and Asset Verification (muffet)

Running comprehensive muffet validation...

  • ❌ muffet found broken links or assets:
https://preview.wafer.space/pr-18/
	404	https://preview.wafer.space/about.html
	404	https://preview.wafer.space/assets/css/bootstrap.min.css
	404	https://preview.wafer.space/assets/css/plugins.css
	404	https://preview.wafer.space/assets/css/style.css
	404	https://preview.wafer.space/assets/images/art/rocket1.webp
	404	https://preview.wafer.space/assets/images/art/rocket2.webp
	404	https://preview.wafer.space/assets/images/art/rocket3.webp
	404	https://preview.wafer.space/assets/images/art/rocket4.webp
	404	https://preview.wafer.space/assets/images/concept/concept12@2x.webp
	404	https://preview.wafer.space/assets/images/dummy.webp
	404	https://preview.wafer.space/assets/images/logo-light.webp
	404	https://preview.wafer.space/assets/images/logo.webp
	404	https://preview.wafer.space/assets/js/bootstrap.min.js
	404	https://preview.wafer.space/assets/js/jquery.min.js
	404	https://preview.wafer.space/assets/js/plugins.js
	404	https://preview.wafer.space/assets/js/popper.min.js
	404	https://preview.wafer.space/assets/js/scripts.js
	404	https://preview.wafer.space/assets/js/simple-jekyll-search.min.js
	404	https://preview.wafer.space/assets/revolution/css/layers.css
	404	https://preview.wafer.space/assets/revolution/css/navigation.css
	404	https://preview.wafer.space/assets/revolution/css/settings.css
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.actions.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.carousel.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.kenburn.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.layeranimation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.migration.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.navigation.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.parallax.min.js
	404	https://preview.wafer.space/assets/revolution/js/extensions/revolution.extension.slideanims.min.js

Summary: 0
0 broken links, 0
0 timeouts, 0
0 HTTP errors

5. Performance Check

  • Page load time: 0.030807s
  • ✅ Load time acceptable

6. Mobile Responsiveness

  • ✅ Viewport meta tag present

Summary

Some verification checks failed


🔍 Automated verification • Run ID: 16125635176 • 2025-07-07T19:08:04.602Z

@mithro
mithro merged commit 041be27 into main Jul 7, 2025
@mithro
mithro deleted the fix/comment-lifecycle-management branch July 7, 2025 19:18
@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

🧹 Preview Deployment Removed

The preview deployment for this PR has been removed from https://preview.wafer.space

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