fix(pr-meta): stop metadata status self-observation - #3451
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Warning Review limit reachedNext included review available in 38 minutes. View limit detailsLimit details: You’ve used the included review currently available. Your 63 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Essentials Run ID: 📒 Files selected for processing (6)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Essentials Run ID: 📒 Files selected for processing (1)
Included review availability: 3 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour. 📝 WalkthroughWalkthroughThe PR metadata updater excludes self-observing workflows and collects status runs for the exact implementation head. It recovers a missing Gate result through a constrained lookup. Tests and documentation cover idempotence, filtering, missing workflows, and API errors. ChangesPR metadata status collection
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix · Severity of issue fixed: Medium Sequence Diagram(s)sequenceDiagram
participant PRMetadataUpdater
participant WorkflowRunsAPI
participant GateWorkflow
PRMetadataUpdater->>WorkflowRunsAPI: List runs for the exact head
WorkflowRunsAPI-->>PRMetadataUpdater: Return filtered latest workflow runs
PRMetadataUpdater->>GateWorkflow: Query pr-00-gate.yml when Gate is absent
GateWorkflow-->>PRMetadataUpdater: Return Gate result or 404
PRMetadataUpdater-->>PRMetadataUpdater: Render PR status metadata
Merge Risk: ⚪ Minimal · up to This change stops PR metadata generation from treating its own status-update workflow as a status signal, while still recovering a genuine Gate result for the exact commit under review. The added tests exercise the real filtering, recovery, and rendering logic with realistic mocked inputs, and the helper stays in sync between the canonical script and the consumer template, so no merge-blocking risk was found. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
🤖 Keepalive Loop StatusPR #3451 | Agent: Codex | Iteration 0/12 Current State
🔍 Failure Classification| Error type | infrastructure | |
Keepalive Work Log (click to expand)
|
|
Runner dispatch state for codex on PR #3451. Do not edit. |
🤖 Keepalive Loop StatusPR #3451 | Agent: Codex | Iteration 4/12 Current State
🔍 Failure Classification| Error type | infrastructure | |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 04b94943d7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
🤖 Bot Comment Handler
The agent is reassigned only after every controller part is durable on the PR. Active thread controller
Required outcome
|
There was a problem hiding this comment.
🟡 Changes recommended
Preserve the Dependency Repair Contract result while excluding only its body-edit-triggering metadata URL.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Updates PR metadata rendering to prevent self-observation loops while preserving exact-head Gate recovery.
Changes:
- Filters metadata observer runs and adds targeted Gate recovery.
- Adds idempotence and regression tests.
- Synchronizes the consumer template, manifest, and documentation.
File summaries
| File | Description |
|---|---|
templates/consumer-repo/.github/scripts/agents_pr_meta_update_body.js |
Mirrors observer filtering and Gate recovery changes. |
docs/ci/WORKFLOWS.md |
Documents status-loop prevention behavior. |
.github/sync-manifest.yml |
Updates synchronization metadata. |
.github/scripts/agents_pr_meta_update_body.js |
Implements status filtering and Gate recovery. |
.github/scripts/__tests__/agents-pr-meta-status-idempotence.test.js |
Covers idempotence, Gate transitions, flooding, and errors. |
Review details
- Files reviewed: 5/5 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
✅ Codex Completion CheckpointIteration: 2 Tasks Completed
About this commentThis comment is automatically generated to track task completions. |
|
Closer recovery for the three active provenance findings is pushed in PR 46 remains a real provenance check. Its last completed exact-head result now appears in the table and required-check summary without a changing run URL. A later pending body-triggered run does not displace that result; a bounded completed-run lookup recovers it if only pending runs remain on the recent page. The display explicitly identifies last-completed evidence and sends readers to PR checks for the current run. Missing observer evidence is described as reported separately, never as not started. Success-to-failure changes remain visible, including when the workflow display name changes. Root and consumer-template helpers match. Required checks, workflow permissions, and merge/review gates are unchanged. Validation on this head:
All three review threads remain open for independent disposition. The conservative review floor is 2026-09-14T17:37:34Z for this exact head and resets after any push. No merge or auto-merge is armed. Closer will re-read full required/expected checks and suites plus active non-outdated threads after the floor; it will merge only if all gates are satisfied, then trigger verification. Source #3450 remains open pending post-merge verification and the required Fine-Art-Archive #723 stability observation; source #722 implementation acceptance is still outstanding. Keepalive was temporarily removed during this bounded local repair to prevent competing writes and has been restored. |
|
CodeRabbit fallback advisory completed through Orchestrator/Cursor at exact head Independent thread-specific assessment: r4007656281 and r4007666959 are addressed by preserving completed exact-head PR46 results without changing run URLs, bounded completed-run lookup, and explicit missing-observer wording. r4007667009 is addressed identically in the template. These are advisory findings, not CodeRabbit approval or GitHub thread resolution. All three threads remain active and must receive authoritative disposition before merge. Full 122-context audit also verifies each of the five historical cancellations has two later same-head successful replacements. The green rollup alone was not used to dismiss them. Remaining pre-merge owner: closer, for independent disposition of the three threads and exact-head/current-base/required-and-expected-check gates. Post-merge source #3450 still needs Fine-Art-Archive #723 metadata stability evidence and verify:compare. No merge or bypass attempted across unresolved threads. Durable advisory: |
|
Closer independent disposition on unchanged head The three active findings r4007656281, r4007666959, and r4007667009 are addressed. I read each original claim, current production collection/rendering paths, the matching template, and the independent Orchestrator/Cursor advisory linked in the preceding comment. PR 46 remains a provenance check: completed exact-head success and failure are retained, pending reruns do not displace them, a bounded completed-run lookup recovers flooded-page evidence, and missing observer evidence is explicitly reported separately rather than as not started. Its changing URL is excluded; current status remains available in PR checks. Root/template bytes match. Fresh validation: The post-merge FAA stability checkbox in the generated summary is premature. Source #3450 is not complete: after gated merge, verify:compare and live unchanged-head FAA #723 metadata stability evidence are required. FAA source #722 acceptance remains separate and unresolved. A successful pre-merge keepalive job does not satisfy this post-merge criterion. |
|
Exact-head check-presence audit for The configured required context is The prescribed root absent-check script is missing; the available scripts/ reporter is hard-coded to Orchestrator. Neither was counted as passing evidence. Direct comparison finds zero absent names versus the preceding PR head4f0e94671 (61 distinct check names). Comparison with merged Workflows3440/3436/3427 additionally identifies conditional reusable Python jobs, nested workflow lint, E2E/template-drift jobs, post-merge verifier, and zizmor. Their absence is explained by the actual unchanged workflow topology: no Python source or workflow YAML changes in this six-file JS/helper/test/manifest/docs diff; The head is unchanged since the recorded push17:30:34Z and its17:37:34Z minimum review floor has elapsed. All three reviewed findings were independently dispositioned against current code and fresh157-test results. Closer will perform an immediate final head/review/check/mergeability query and an expected-head guarded merge, without administrative bypass or branch deletion. Source3450 must remain open for verify:compare and post-merge FAA723 stability evidence. |
|
Post-merge checkpoint for repair #3451 / source #3450: Merged at2026-09-14T19:35:00Z as
Live Fine-Art-Archive723 observation at unchanged implementation head Next owner remains Reviewed Repo Merge Verify Closer, checkpoint20:20Z: read the durable provider comparison for3451 and disposition source3450. FAA source722's coverage metric/stop-clause acceptance remains separate; this repair does not accept or merge FAA723. Generated consumer-template promotion remains the sync campaign's responsibility. No human action is needed. |
Provider Comparison ReportProvider Summary
📋 Full Provider Details (click to expand)openai
anthropic
Agreement
Disagreement
Unique Insights
🔍 LangSmith Traces |
Closes #3450
Automated Status Summary
Scope
Bounded closer recovery for existing stranske/Fine-Art-Archive#723 (source stranske/Fine-Art-Archive#722). On unchanged head
7ae7c51831df2e710c45bf1d05ab674a1e8e400f, the PR body changes every 45–55 seconds solely because its generated table contains new Agents PR Event Hub and PR 46 Dependency Repair Contract run URLs. WORKFLOWS_APP writes each body and the consumer edited event triggers another round. Job 104068146532 proves the executing canonical source was Workflows3706dc2fd51b77e87902ddfe508f06b81b83e8fc.Context for Agent
Related Issues/PRs
Tasks
.github/scripts/agents_pr_meta_update_body.jsfrom derived status tables.pr-00-gate.ymllookup constrained to the exact implementation head; retain unknown/error states when unavailable..github/scripts/__tests__/agents-pr-meta-status-idempotence.test.jscovering repeated metadata-only generations, genuine Gate transitions, latest-page flooding and exact-head/error handling.templates/consumer-repo/.github/scripts/agents_pr_meta_update_body.js; update.github/sync-manifest.ymlanddocs/ci/WORKFLOWS.md.Acceptance criteria
node --test .github/scripts/__tests__/agents-pr-meta-status-idempotence.test.js .github/scripts/__tests__/agents-pr-meta-update-body.test.js .github/scripts/__tests__/issue_scope_parser.test.jspasses after the fix; metadata-only generations produce byte-identical summaries while genuine Gate changes remain visible.Summary by CodeRabbit
Bug Fixes
Documentation
Tests