Skip to content

Conversation

@buddhisthead
Copy link
Collaborator

This PR adds a script and a workflow to automate the generation of an update document.

The document contains two lists of GH issues:

  • what was done this week
  • what is planned for next week

@Copilot Copilot AI review requested due to automatic review settings October 24, 2025 18:42
@github-actions
Copy link

github-actions bot commented Oct 24, 2025

📋 Weekly Status (auto-generated DEV)

Last week's achievements

  • Issue #233 — Implement performance testing of our BlockFrost API
  • Issue #232 — Update the swagger api
  • PR #248 — feat: implement SPDD history storage, add serde_as for Bech32
  • Issue #133 — Formal parser of the data, retrieved from Haskell node
  • Issue #123 — Dumping rewards info from Haskell node
  • Issue #134 — Create separate repository with current debug variant of Haskell node
  • Issue #149 — Implement /epoch/{number}/stakes/
  • PR #258 — feat: Add streaming Conway snapshot parser with callback interface
  • PR #241 — feat: address_state module
  • Issue #184 — Implement /epochs/{number}/stakes, /epochs/{number}/stakes/{pool_id} endpoint
  • Issue #188 — Store TxOutput datum in utxo_state
  • PR #244 — feat: epoch blocks endpoints
  • PR #235 — Rewards update 2
  • PR #245 — K6 performance tests
  • PR #246 — OpenAPI spec via BF spec
  • Issue #186 — Implement /epochs/{number}/blocks/{pool_id} endpoint

Plans for next week

  • PR #291 — Add a GH workflow to automate the generation of weekly status updates
  • Issue #293 — 📊 Weekly Status (DEV TEST) - 2025-10-24
  • PR #292 — feat: registration, delegation, and MIR history account endpoints
  • PR #272 — Historical accounts state certificate processing
  • PR #271 — Snapshot bootstrapper process outline with TODOs for the relevant messages
  • PR #288 — wip: block vrf validation
  • PR #287 — Refactor: Replace StakeAddressPayload with StakeCredential
  • PR #286 — feat: start working on tx submission
  • Issue #199 — KES validation
  • Issue #273 — Fix tracing filtering to allow debug
  • PR #231 — Shd/better governance logs
  • Issue #269 — Analyse (and hopefully reduce) dependencies on Pallas
  • Issue #260 — CI/CD for basic Rust hygiene
  • Issue #268 — Running on Preview and Preprod
  • Issue #264 — Bootstrap the DRepState from snapshot
  • Issue #223 — Implement Conway Epoch Bootstrapping
  • Issue #228 — Consensus Design
  • Issue #203 — Tx Submission

Copy link
Contributor

Copilot AI left a comment

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 adds automation for generating weekly status updates from GitHub issues and pull requests. The solution uses a Python script that queries GitHub's APIs (GraphQL for Projects v2 and REST for labels/issues) to collect items completed last week and items planned for next week, formatting them into a Markdown document.

Key changes:

  • New Python script to generate status reports from GitHub issues/PRs with flexible data source options (Projects v2, labels, or issue state)
  • Production workflow that runs weekly on Mondays and saves the output as an artifact
  • Development workflow for testing changes via PR comments and manual runs

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

File Description
scripts/weekly_status_markdown.py Core script implementing GitHub API queries, time-window filtering, and Markdown generation
.github/workflows/weekly-update.yml Production workflow scheduled for Monday mornings with Projects v2 configuration
.github/workflows/weekly-update-dev.yml Development workflow for testing that posts results as PR comments

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 9 to 16
- "scripts/weekly_confluence_markdown.py"
- ".github/workflows/weekly-update-dev.yml"
# run on any PR that targets your default branch and originates from same repo
pull_request:
branches:
- main
paths:
- "scripts/weekly_confluence_markdown.py"
Copy link

Copilot AI Oct 24, 2025

Choose a reason for hiding this comment

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

The path filter references 'weekly_confluence_markdown.py' but the actual script is named 'weekly_status_markdown.py'. This will prevent the workflow from triggering when the script is modified.

Suggested change
- "scripts/weekly_confluence_markdown.py"
- ".github/workflows/weekly-update-dev.yml"
# run on any PR that targets your default branch and originates from same repo
pull_request:
branches:
- main
paths:
- "scripts/weekly_confluence_markdown.py"
- "scripts/weekly_status_markdown.py"
- ".github/workflows/weekly-update-dev.yml"
# run on any PR that targets your default branch and originates from same repo
pull_request:
branches:
- main
paths:
- "scripts/weekly_status_markdown.py"

Copilot uses AI. Check for mistakes.
Comment on lines 9 to 16
- "scripts/weekly_confluence_markdown.py"
- ".github/workflows/weekly-update-dev.yml"
# run on any PR that targets your default branch and originates from same repo
pull_request:
branches:
- main
paths:
- "scripts/weekly_confluence_markdown.py"
Copy link

Copilot AI Oct 24, 2025

Choose a reason for hiding this comment

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

The path filter references 'weekly_confluence_markdown.py' but the actual script is named 'weekly_status_markdown.py'. This will prevent the workflow from triggering when the script is modified.

Suggested change
- "scripts/weekly_confluence_markdown.py"
- ".github/workflows/weekly-update-dev.yml"
# run on any PR that targets your default branch and originates from same repo
pull_request:
branches:
- main
paths:
- "scripts/weekly_confluence_markdown.py"
- "scripts/weekly_status_markdown.py"
- ".github/workflows/weekly-update-dev.yml"
# run on any PR that targets your default branch and originates from same repo
pull_request:
branches:
- main
paths:
- "scripts/weekly_status_markdown.py"

Copilot uses AI. Check for mistakes.

OUTPUT_PATH: artifacts/weekly_status.md
run: |
python scripts/weekly_confluence_markdown.py | tee /tmp/out.md
Copy link

Copilot AI Oct 24, 2025

Choose a reason for hiding this comment

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

The script path is incorrect. It should be 'scripts/weekly_status_markdown.py' instead of 'scripts/weekly_confluence_markdown.py'.

Copilot uses AI. Check for mistakes.

out_path = os.environ.get("OUTPUT_PATH")
if out_path:
os.makedirs(os.path.dirname(out_path), exist_ok=True)
Copy link

Copilot AI Oct 24, 2025

Choose a reason for hiding this comment

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

This will fail if out_path has no directory component (e.g., just a filename). When os.path.dirname(out_path) returns an empty string, os.makedirs('') raises an error. Add a check: if dir_path := os.path.dirname(out_path): os.makedirs(dir_path, exist_ok=True)

Suggested change
os.makedirs(os.path.dirname(out_path), exist_ok=True)
if dir_path := os.path.dirname(out_path):
os.makedirs(dir_path, exist_ok=True)

Copilot uses AI. Check for mistakes.
Comment on lines +515 to +516
# Plans: open items that were updated in the last week (showing active work)
plans = [it for it in inprog_items if it.get("state") == "open" and updated_recent(it, days=7)]
Copy link

Copilot AI Oct 24, 2025

Choose a reason for hiding this comment

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

The filter checks it.get('state') == 'open' but the 'state' field is only populated in the state-based approach (line 374), not when using Projects v2 or label-based queries. This will incorrectly exclude all items when using Projects v2. Remove the state check or ensure the state field is always populated.

Suggested change
# Plans: open items that were updated in the last week (showing active work)
plans = [it for it in inprog_items if it.get("state") == "open" and updated_recent(it, days=7)]
# Plans: items that were updated in the last week (showing active work)
plans = [it for it in inprog_items if updated_recent(it, days=7)]

Copilot uses AI. Check for mistakes.
@buddhisthead buddhisthead merged commit 422d6f9 into main Oct 24, 2025
2 checks passed
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.

1 participant