Skip to content

Repair board lifecycle automation and add operational reports - #344

Open
qiuethan wants to merge 3 commits into
stagingfrom
Board-Cleanup
Open

qiuethan wants to merge 3 commits into
stagingfrom
Board-Cleanup

Conversation

@qiuethan

@qiuethan qiuethan commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

What this changes

Replaces the disabled blocker workflow with current-state reconciliation for issue/PR lifecycle, dependencies and explicit holds. Adds workflow-health incidents, advisory PR issue-link checks, actual Railway deployment evidence, and a weekly exceptions report with epic acceptance candidates.

Why

Part of #340. The old workflow did not add cards or follow PRs, referenced a removed status, and could mark assigned work Ready. Native project settings have already been repaired; this PR supplies the repository automation. Keep #340 open until hosted activation and lifecycle acceptance pass.

Zone

.github only. Companion documentation #345 and agent guidance #346 have already merged; this PR supplies the runbook and automation they reference. File rationale is included below.

How to verify

Passed locally on the submitted source:

make check
npx --yes --package=node@22 node --test .github/scripts/*.test.cjs
node scripts/check-labels.mjs

Actionlint passed for all added/changed workflow YAML, and git diff --check passed. Self-review covered the trusted default-branch checkout, credential boundaries, paginated reads, report deduplication and acceptance-preserving state policy.

Read-only live API previews confirmed board convergence, weekly candidates, PR-link advice and the production deployment's exact PR association. They did not publish reports/comments or validate the Actions secret. Offline tests cover lifecycle transitions, holds, incomplete reads, stale schedules, reporting recovery and trusted deployment evidence. make check covers fast suites; database-specific CI remains separate.

Validation after review fixes

Fresh CI passed on d7edb79dc346261f8ab75424fcef6d9689b01550, including the board-automation suite.

  • The activation regression failed against the original workflow with both missing and configured credentials; it passes with the guard.
  • node --test .github/scripts/*.test.cjs, Actionlint on all workflows changed by this PR, label consistency and local Markdown link/anchor checks passed.
  • make check passed with locked dependencies and Python imports pinned to this worktree.
  • A whole-repository Actionlint scan also found a pre-existing inline github.head_ref warning in unchanged main-source-guard.yml; the changed workflows pass.
  • No hosted board writes or live activation were performed.

Checklist

  • Branched from staging and targets staging.
  • Relevant offline tests, workflow lint, label consistency and full local make check passed.
  • Operating policy and activation/recovery are documented in .github/PROJECT-BOARD.md; audit evidence and per-file rationale are recorded here.
  • Service code, migrations and provider configuration are unchanged; service-specific contribution checklists are not applicable.

Deployment notes

The companion documentation is already merged. After this PR merges into staging, validate PROJECTS_TOKEN with the documented manual dry runs, then exercise write mode and real lifecycle/scheduled events. GitHub explicit closing links own issue closure; these workflows do not mark unfinished acceptance passed. Health/report labels and the native report exclusion are already configured. Production deployment-event handling needs the workflow to reach main through normal promotion.

Review fixes

  • Review events skip with an explicit not-installed summary only when both the workflow and reconciler are absent from the trusted default-branch checkout. Once installed, missing scripts or credentials still fail visibly; scheduled/manual failures are not hidden. No PR-head code is executed with the project token.
  • Dated audit observations and changed-file rationale move from the operational runbook to this description. Hosted activation and lifecycle acceptance remain outstanding in [bug] Repair project issue/PR automation and blocker reconciliation #340.

Changed-file rationale

File Why it changes
.github/scripts/project-board.cjs One current-state reconciliation policy and GitHub API boundary
.github/scripts/project-board.test.cjs Offline transition and orchestration regressions
.github/scripts/workflow-activation.test.cjs Execute the actual workflow script against pre-installation, installed, missing-file and missing-credential cases
.github/scripts/automation-common.cjs Shared safe report/comment updates, checklist parsing and completeness guards
.github/scripts/board-reports.cjs Workflow health inspection and the consolidated weekly exceptions/epic review
.github/scripts/pr-issue-check.cjs Read-only PR linking and full-scope closure advice
.github/scripts/deployment-evidence.cjs Associate trusted Railway deployment records with exact merged work
.github/scripts/automation.test.cjs Offline failure, reporting, advisory and deployment regressions
.github/workflows/project-board.yml Event, scheduled and manual execution with trusted code and explicit credential failures
.github/workflows/automation-health.yml Independent scheduled/completion-triggered inspection with repository-only incident writes
.github/workflows/pr-issue-check.yml Trusted-code advisory runs without PR comment churn
.github/workflows/deployment-evidence.yml Actual deployment events and manual evidence replay
.github/workflows/board-review.yml Weekly exceptions and epic review in one reusable issue
.github/workflows/blocked-ready-automation.yml (removed) Retire the disabled, conflicting Ready/Blocked writer and invalid option ID
.github/workflows/ci.yml Run the automation regression suite on PRs and merge groups
.github/PROJECT-BOARD.md Living operating policy, native settings, activation/rollback and verification limits
Historical audit evidence (2026-10-26; not new hosted acceptance)

Native project settings were inspected and reconciled on 2026-10-26 (Toronto).

The 2026-10-26 native-settings audit preceded publication of the repository
changes. Hosted execution and credential validation remain rollout steps. A temporary live
issue verified native auto-add → Backlog, Done → closed, reopened → Backlog,
and closed → Done; the issue was then closed as not planned and archived.
The local controller was also checked in read-only mode against the live API.
Updating the held subtitle PR also proved native PR auto-add. Its existing
review state initially put it In progress, so the explicit Backlog disposition
was restored manually. Native rules do not understand on hold; enforcing
that override automatically requires the replacement reconciler to be live.

The additional 2026-10-26 read-only preview found approved PRs #317/#320,
unassigned P1 issues #46/#82/#342, and epic #60 with closed direct sub-issues but
unchecked acceptance. PR #331 produced a missing-link advisory. Production
deployment 7323061607 resolved to PR #330 with Railway observations for
documentation-system, doc-discover and doc-source-refresh. The health preview
correctly reported the new workflows absent from GitHub before merge; its
project probe used the local login, not the Actions secret. No preview reports
or deployment comments were published.

Comment thread .github/PROJECT-BOARD.md Resolved

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xl >= 500 lines changed zone: .github Owned by the .github zone (docs/CODE-OWNERSHIP.md)

Projects

Status: In review

Development

Successfully merging this pull request may close these issues.

2 participants