Skip to content

fix(pr-meta): stop metadata status self-observation - #3451

Merged
stranske merged 5 commits into
mainfrom
codex/issue-3450-metadata-loop
Sep 14, 2026
Merged

stranske merged 5 commits into
mainfrom
codex/issue-3450-metadata-loop

Conversation

@stranske

@stranske stranske commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Source: Issue #3450

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 Workflows 3706dc2fd51b77e87902ddfe508f06b81b83e8fc.

Context for Agent

Related Issues/PRs

Tasks

  • Exclude current metadata observers in .github/scripts/agents_pr_meta_update_body.js from derived status tables.
  • Recover a missing recent-page Gate with one pr-00-gate.yml lookup constrained to the exact implementation head; retain unknown/error states when unavailable.
  • Add .github/scripts/__tests__/agents-pr-meta-status-idempotence.test.js covering repeated metadata-only generations, genuine Gate transitions, latest-page flooding and exact-head/error handling.
  • Synchronize the helper to templates/consumer-repo/.github/scripts/agents_pr_meta_update_body.js; update .github/sync-manifest.yml and docs/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.js passes after the fix; metadata-only generations produce byte-identical summaries while genuine Gate changes remain visible.
  • Removing Gate recovery makes the older-exact-head-Gate regression fail; restoring it passes.
  • Template completeness and relevant sync-manifest tests pass; root/template helper bytes match.
  • After gated merge and canonical-source promotion, reobserve FAA [Follow-up] Modify the decomposition logic in scripts/langchai (PR #696) #723 with its unchanged implementation head and establish metadata stability before resuming source [Follow-up] Address verification concerns from PR #696 #722 acceptance reconciliation.

Summary by CodeRabbit

  • Bug Fixes

    • Improved pull request status reporting by excluding internal workflow runs by name and path.
    • Limited displayed results to runs matching the exact pull request commit.
    • Preserved accurate Gate and task-check statuses across metadata-only updates.
    • Added recovery for missing Gate results when an exact matching run is available.
    • Improved handling of missing workflows and unavailable results without incorrectly changing status information.
  • Documentation

    • Updated workflow documentation to describe status filtering, Gate lookup behavior, and unavailable-result handling.
  • Tests

    • Added coverage for status preservation, filtering, recovery, error handling, and CI visibility.

Copilot AI lite review requested due to automatic review settings September 14, 2026 17:08
@stranske stranske added agent:codex Agent-created issues from Codex agents:keepalive Use to initiate keepalive functionality with agents autofix Opt-in automated formatting & lint remediation codex codex-automation labels Sep 14, 2026
@stranske
stranske deployed to agent-standard September 14, 2026 17:08 — with GitHub Actions Active
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-14T17:11:54.545835Z 04b9494 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Warning

Review limit reached

Next included review available in 38 minutes.

Check out review usage here.

View limit details

Limit 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.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Essentials

Run ID: 33944649-163f-46c6-87d7-ce8ac6d47b94

📥 Commits

Reviewing files that changed from the base of the PR and between 799153b and 7ee517b.

📒 Files selected for processing (6)
  • .github/scripts/__tests__/agents-pr-meta-contract-status.test.js
  • .github/scripts/__tests__/agents-pr-meta-status-idempotence.test.js
  • .github/scripts/agents_pr_meta_update_body.js
  • .github/sync-manifest.yml
  • docs/ci/WORKFLOWS.md
  • templates/consumer-repo/.github/scripts/agents_pr_meta_update_body.js

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Essentials

Run ID: e2fdc8dc-2dcd-46ec-a41d-367033913f4a

📥 Commits

Reviewing files that changed from the base of the PR and between 63f12e7 and 799153b.

📒 Files selected for processing (1)
  • .github/scripts/__tests__/agents-pr-meta-status-idempotence.test.js

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.


📝 Walkthrough

Walkthrough

The 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.

Changes

PR metadata status collection

Layer / File(s) Summary
Status collection and Gate recovery
.github/scripts/agents_pr_meta_update_body.js, templates/consumer-repo/.github/scripts/agents_pr_meta_update_body.js
The scripts exclude observer workflows by name and normalized path. They select latest runs for the exact head and query pr-00-gate.yml when Gate is missing. A 404 leaves Gate unknown; other errors propagate.
Status update integration and documentation
.github/scripts/agents_pr_meta_update_body.js, templates/consumer-repo/.github/scripts/agents_pr_meta_update_body.js, .github/sync-manifest.yml, docs/ci/WORKFLOWS.md
The update flow uses and exports collectStatusWorkflowRuns. The manifest and workflow catalog describe observer exclusion, exact-head recovery, and preserved status visibility.
Idempotence and recovery validation
.github/scripts/__tests__/agents-pr-meta-status-idempotence.test.js
Tests cover metadata-only stability, Gate transitions, exact-head recovery, head safeguards, observer filtering, missing workflows, and propagated API errors.

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
Loading

Merge Risk: ⚪ Minimal · up to 79915

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)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 14 functions across 3 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: it prevents metadata status self-observation in the PR metadata workflow.
Linked Issues check ✅ Passed The changes satisfy the coding objectives in #3450. Both helper copies exclude metadata observer workflows by name and normalized path. collectStatusWorkflowRuns performs exact-head status collectio…
Out of Scope Changes check ✅ Passed The changed files support #3450: the canonical helper, synchronized consumer-template helper, focused regression tests, sync manifest, and CI documentation. The reviewed changes do not alter FAA #723,…
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/issue-3450-metadata-loop

Comment @coderabbitai help to get the list of available commands.

@agents-workflows-bot

Copy link
Copy Markdown
Contributor

🤖 Keepalive Loop Status

PR #3451 | Agent: Codex | Iteration 0/12

Current State

Metric Value
Iteration progress [----------] 0/12
Action wait (gate-cancelled-transient)
Disposition skipped (transient)
Gate cancelled
Tasks 0/8 complete
Timeout 45 min (default)
Timeout usage 0m elapsed (2%, 45m remaining)
Keepalive ✅ enabled
Autofix ❌ disabled

🔍 Failure Classification

| Error type | infrastructure |
| Error category | transient |
| Suggested recovery | Capture logs and context; retry once and escalate if the issue persists. |

@agents-workflows-bot

agents-workflows-bot Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor
Keepalive Work Log (click to expand)
# Time (UTC) Agent Action Result Files Tasks Progress Commit Gate
0 2026-09-14 17:09:39 Codex wait (gate-cancelled-transient-transient) skipped 0 0/8 cancelled
1 2026-09-14 17:14:24 Codex run (bypass-rate-limit-gate) success 37 file(s) +3 3/8 63f12e7 cancelled
2 2026-09-14 17:18:38 Codex run (ready) success 33 file(s) 0 3/8 799153b success
3 2026-09-14 17:23:19 Codex run (ready) success 33 file(s) +5 8/8 4f0e946 success
4 2026-09-14 17:27:38 Claude run (verify-acceptance) success 0 8/8 success
4 2026-09-14 17:28:26 Codex stop (tasks-complete) skipped 0 8/8 success
4 2026-09-14 17:31:40 Codex wait (gate-cancelled-transient) skipped 0 8/8 cancelled
4 2026-09-14 17:32:36 Codex wait (gate-not-success) skipped 0 8/8
4 2026-09-14 17:33:33 Codex wait (gate-cancelled-transient) skipped 0 8/8 cancelled
4 2026-09-14 17:35:01 Codex stop (tasks-complete) skipped 0 8/8 success
4 2026-09-14 17:35:48 Codex wait (gate-not-success) skipped 0 8/8
4 2026-09-14 17:37:36 Codex stop (tasks-complete) skipped 0 8/8 success
4 2026-09-14 18:34:57 Codex stop (tasks-complete) skipped 0 8/8 success
4 2026-09-14 19:29:12 Codex stop (tasks-complete) skipped 0 8/8 success
4 2026-09-14 19:29:59 Codex wait (gate-not-success) skipped 0 8/8
4 2026-09-14 19:32:18 Codex stop (tasks-complete) skipped 0 8/8 success
4 2026-09-14 19:36:12 Codex wait (gate-not-success) skipped 0 8/8
4 2026-09-14 19:38:30 Codex stop (tasks-complete) skipped 0 8/8 success

@stranske
stranske deployed to agent-standard September 14, 2026 17:09 — with GitHub Actions Active
@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Runner dispatch state for codex on PR #3451. Do not edit.

@stranske-keepalive

stranske-keepalive Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

🤖 Keepalive Loop Status

PR #3451 | Agent: Codex | Iteration 4/12

Current State

Metric Value
Iteration progress [###-------] 4/12
Action stop (tasks-complete)
Agent status ✅ ALL TASKS COMPLETE
Gate success
Tasks 8/8 complete
Timeout 45 min (default)
Timeout usage 3m elapsed (7%, 42m remaining)
Keepalive ✅ enabled
Autofix ❌ disabled

🔍 Failure Classification

| Error type | infrastructure |
| Error category | unknown |
| Suggested recovery | Capture logs and context; retry once and escalate if the issue persists. |

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread .github/scripts/agents_pr_meta_update_body.js
@agents-workflows-bot

agents-workflows-bot Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

🤖 Bot Comment Handler

  • Agent: codex
  • Bot comments to address: 3
  • Exact PR head: 7ee517b
  • Controller part: 1 of 1

The agent is reassigned only after every controller part is durable on the PR.
Each entry links to the authoritative review thread containing its full context.

Active thread controller

  • PRRT_kwDOQprj9M6iNLix — .github/scripts/agents_pr_meta_update_body.js:925

    • fix(pr-meta): stop metadata status self-observation #3451 (comment)
    • Acceptance criterion: P2 Badge Avoid reporting the filtered PR 46 check as not started On dependency-bot and repair-promotion PRs where PR 46 Dependency Repair Contract is required, this filter removes the exact-head run before buildStatusBlock matches requiredChecks, so a completed...
  • PRRT_kwDOQprj9M6iNNRe — .github/scripts/agents_pr_meta_update_body.js:925

    • fix(pr-meta): stop metadata status self-observation #3451 (comment)
    • Acceptance criterion: PR 46 Dependency Repair Contract is a real dependency-provenance check, not just a metadata writer (it is documented as required for dependency-repair lanes). Adding it to this blanket filter removes both successful and failed contract runs from the table, so a dependency PR can no longer expose that check's result; if it is a required context...
  • PRRT_kwDOQprj9M6iNNR_ — templates/consumer-repo/.github/scripts/agents_pr_meta_update_body.js:925

    • fix(pr-meta): stop metadata status self-observation #3451 (comment)
    • Acceptance criterion: PR 46 Dependency Repair Contract is a real dependency-provenance check, not just a metadata writer (it is documented as required for dependency-repair lanes). Adding it to this blanket filter removes both successful and failed contract runs from the table, so a dependency PR can no longer expose that check's result; if it is a required context...

Required outcome

  1. Inspect every listed active thread on the exact head.
  2. Implement and validate any still-valid criterion; do not make no-op edits.
  3. Reply with exact-head evidence and request a thread-specific reviewer disposition.
  4. Never self-resolve reviewer threads.
  5. Do not report completion while any listed thread remains active; a generic top-level review is insufficient.

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.

🟡 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.

Comment thread .github/scripts/agents_pr_meta_update_body.js
@agents-workflows-bot

agents-workflows-bot Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

✅ Codex Completion Checkpoint

Iteration: 2
Commit: 4f0e946
Recorded: 2026-09-14T17:22:52.167Z

Tasks Completed

  • Exclude current metadata observers in .github/scripts/agents_pr_meta_update_body.js from derived status tables.
  • Add .github/scripts/__tests__/agents-pr-meta-status-idempotence.test.js covering repeated metadata-only generations, genuine Gate transitions, latest-page flooding and exact-head/error handling.
  • Synchronize the helper to templates/consumer-repo/.github/scripts/agents_pr_meta_update_body.js; update .github/sync-manifest.yml and docs/ci/WORKFLOWS.md.
About this comment

This comment is automatically generated to track task completions.
The Automated Status Summary reads these checkboxes to update PR progress.
Do not edit this comment manually.

@stranske
stranske deployed to agent-standard September 14, 2026 17:31 — with GitHub Actions Active
@stranske stranske added the agents:keepalive Use to initiate keepalive functionality with agents label Sep 14, 2026
@stranske

Copy link
Copy Markdown
Owner Author

Closer recovery for the three active provenance findings is pushed in 7ee517b72 on the existing PR.

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:

  • Focused production-helper, contract/idempotence, metadata, and scope-parser tests: 157 passed, 0 failed.
  • Full JavaScript tests: 1,568 passed, 1 skipped, 0 failed.
  • Sync compiler, drift allowlist, and delivery tests: 63 passed.
  • Template completeness, Node syntax, byte equality, and git diff checks passed.
  • New contract regressions failed on the preceding production implementation. Deliberately disabling the contract filter or Gate recovery caused the named test suites to fail; restored production passed.

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.

@stranske
stranske deployed to agent-standard September 14, 2026 17:31 — with GitHub Actions Active
@stranske
stranske deployed to agent-standard September 14, 2026 17:32 — with GitHub Actions Active
@stranske
stranske deployed to agent-standard September 14, 2026 17:32 — with GitHub Actions Active
@stranske stranske removed the automerge Auto-merge when checks pass label Sep 14, 2026
@stranske-keepalive stranske-keepalive Bot added the automerge Auto-merge when checks pass label Sep 14, 2026
@stranske

Copy link
Copy Markdown
Owner Author

CodeRabbit fallback advisory completed through Orchestrator/Cursor at exact head 7ee517b7206b2b048faa3e11c9d34e2af7ab4a8e: approve, no P0/P1 blockers. Reviewer ran 40 metadata contract/idempotence tests and 82 merge-contract tests, all passed; verified source/template equality.

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: /Users/teacher/.codex/automations/pd-workloop-resume/artifacts/20260914T1901Z/advisory-3451.json.

@stranske stranske removed the automerge Auto-merge when checks pass label Sep 14, 2026
@stranske

Copy link
Copy Markdown
Owner Author

Closer independent disposition on unchanged head 7ee517b7206b2b048faa3e11c9d34e2af7ab4a8e:

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: node --test .github/scripts/__tests__/agents-pr-meta-contract-status.test.js .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.js — 157 passed, 0 failed. The independent advisory separately ran 40 contract/idempotence and 82 merge-contract tests. No code changes or new push were needed. These repaired claims now receive closer-owned thread resolution; this does not represent a new CodeRabbit review.

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.

@stranske-keepalive stranske-keepalive Bot added the automerge Auto-merge when checks pass label Sep 14, 2026
@stranske

Copy link
Copy Markdown
Owner Author

Exact-head check-presence audit for 7ee517b7206b2b048faa3e11c9d34e2af7ab4a8e:

The configured required context is summary (ruleset 11191936); it succeeds, as do Gate, JavaScript Tests, Python Tests, workflow validation, template completeness, manifest validation, and sync shadow evidence. All 68 latest reported contexts are SUCCESS or intentionally SKIPPED. The full check history contains 120 runs: five cancelled jobs in Gate34875169820 each have two later exact-head successful replacements in Gate34875256403 and Gate34875636581. These are explicit replacements, not an assumption based on the rollup. All GitHub Actions suites are completed; no action-required/startup failure was found.

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; python ci and workflow lint (maint-36) wrappers explicitly reported SKIPPED, so their reusable children were not instantiated. Zizmor and E2E are workflow/path-filtered; the post-merge verifier is not a pre-merge job. Current full JS and Python selftests both ran successfully. No product check was waived, fabricated, or bypassed.

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.

@stranske
stranske merged commit c856128 into main Sep 14, 2026
157 of 162 checks passed
@stranske
stranske deleted the codex/issue-3450-metadata-loop branch September 14, 2026 19:35
@stranske stranske added the verify:compare Compare multiple LLM evaluations label Sep 14, 2026
@stranske
stranske deployed to agent-standard September 14, 2026 19:35 — with GitHub Actions Active
@stranske
stranske deployed to agent-standard September 14, 2026 19:35 — with GitHub Actions Active
@stranske
stranske deployed to agent-standard September 14, 2026 19:35 — with GitHub Actions Active
@stranske

Copy link
Copy Markdown
Owner Author

Post-merge checkpoint for repair #3451 / source #3450:

Merged at2026-09-14T19:35:00Z as c8561288b546c9ab6beb3d318336b7b30c36d8d0, from reviewed head 7ee517b7206b2b048faa3e11c9d34e2af7ab4a8e. Immediate gate evidence captured at19:34:58Z: all68 latest contexts SUCCESS/SKIPPED,49 completed GitHub Actions suites, zero active non-outdated review threads, CLEAN/MERGEABLE, elapsed review floor; expected-head squash merge, no bypass or branch deletion.

verify:compare is on the merged PR. Actual post-merge verifier run34887826465 is in progress, with check successful and verifier / Run post-merge verifier running: https://github.com/stranske/Workflows/actions/runs/34887826465 . Earlier pre-merge verifier workflow exits are not durable provider reports. Source3450 was reopened after GitHub's automatic close and remains pending report disposition.

Live Fine-Art-Archive723 observation at unchanged implementation head 7ae7c51831df2e710c45bf1d05ab674a1e8e400f: the body at19:34:59Z showed changing observer URLs and false gate: not started. At19:35:55Z, after the source merge, it changed to Gate: success linked to actual Gate34781672266, removed the Event Hub row, and retained PR46 skipped as Last completed result; current run in PR checks. A fresh read at19:38:02Z was byte-identical and still updatedAt19:35:55Z; PR merge state CLEAN. This is a bounded live stability observation across more than two of the prior45–55second churn cycles, not a claim of indefinite future stability.

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.

@github-actions

Copy link
Copy Markdown
Contributor

Provider Comparison Report

Provider Summary

Provider Model Verdict Confidence Summary
openai gpt-5.6-terra PASS 90% The change directly addresses the self-observation loop by excluding the metadata-producing observer workflows from derived status rendering, preventing newly created observer run URLs from changin...
anthropic claude-sonnet-5 PASS 68% The PR implements the required fix to stop metadata self-observation by excluding current status-observer runs (Gate, PR 46 Dependency Repair Contract) from derived status tables, adds a scoped rec...
📋 Full Provider Details (click to expand)

openai

  • Model: gpt-5.6-terra
  • Verdict: PASS
  • Confidence: 90%
  • Scores:
    • Correctness: 9.0/10
    • Completeness: 9.0/10
    • Quality: 9.0/10
    • Testing: 9.0/10
    • Risks: 8.0/10
  • Summary: The change directly addresses the self-observation loop by excluding the metadata-producing observer workflows from derived status rendering, preventing newly created observer run URLs from changing an otherwise unchanged PR summary. It adds bounded Gate recovery using a single Gate workflow lookup constrained to the implementation head, while preserving unknown/error behavior when a matching run cannot be retrieved. The implementation is synchronized byte-for-byte to the consumer template and the sync-manifest and workflow documentation references are updated. Added tests cover repeated metadata-only rendering idempotence, real Gate state changes, recent-page flooding, exact-head recovery, and recovery error handling; the additional contract-status test strengthens coverage of required-check rendering. The code changes are focused, maintainable, and do not introduce material security or compatibility risk.

anthropic

  • Model: claude-sonnet-5
  • Verdict: PASS
  • Confidence: 68%
  • Scores:
    • Correctness: 8.0/10
    • Completeness: 8.0/10
    • Quality: 7.0/10
    • Testing: 8.0/10
    • Risks: 7.0/10
  • Summary: The PR implements the required fix to stop metadata self-observation by excluding current status-observer runs (Gate, PR 46 Dependency Repair Contract) from derived status tables, adds a scoped recovery lookup for missing Gate results constrained to the exact head, and introduces two new test suites (contract-status and idempotence) that appear to directly target the acceptance criteria (idempotent metadata-only updates, genuine Gate transitions, exact-head recovery). The core script change (+99/-18) is mirrored into the consumer template, and sync-manifest/docs were updated accordingly, satisfying the 'synchronize helper' task. CI results confirm all Python/JS/lint/gate workflows passed on the merge commit, including the test files referenced in the acceptance criteria. Given the truncated diff, full line-level verification of the self-observation exclusion logic wasn't possible, but the structural evidence (test files, script size increase, synced template, updated manifest/docs, and green CI) strongly indicates the acceptance criteria are met. Confidence is moderate due to incomplete visibility into implementation internals, but no clear correctness or completeness gaps are evident from the available information.
  • Concerns:
    • Full diff of agents_pr_meta_update_body.js was truncated in the review context, so the exact self-observer exclusion logic and Gate-recovery lookup could not be fully traced line-by-line; assessment relies on the visible test file (agents-pr-meta-contract-status.test.js) and summary of changes.
    • Two new test files were added, but it's not explicitly confirmed in the visible diff that they cover every acceptance-criteria scenario (e.g., 'latest-page flooding' and 'older-exact-head-Gate regression' failing when recovery is removed) beyond what the truncated test content shows.
    • Template/root byte-parity and sync-manifest changes are minimal (+1/-1 each) which is consistent with a simple version bump, but exact synchronization correctness for the full 99-line script change couldn't be independently verified from the truncated diff.

Agreement

  • Verdict: PASS (all providers)
  • Correctness: scores within 1 point (avg 8.5/10, range 8.0-9.0)
  • Completeness: scores within 1 point (avg 8.5/10, range 8.0-9.0)
  • Testing: scores within 1 point (avg 8.5/10, range 8.0-9.0)
  • Risks: scores within 1 point (avg 7.5/10, range 7.0-8.0)

Disagreement

Dimension openai anthropic
Quality 9.0/10 7.0/10

Unique Insights

  • openai: The change directly addresses the self-observation loop by excluding the metadata-producing observer workflows from derived status rendering, preventing newly created observer run URLs from changing an otherwise unchanged PR summary. It adds bounded Gate recovery using a single Gate workflow look...
  • anthropic: Full diff of agents_pr_meta_update_body.js was truncated in the review context, so the exact self-observer exclusion logic and Gate-recovery lookup could not be fully traced line-by-line; assessment relies on the visible test file (agents-pr-meta-contract-status.test.js) and summary of changes.; Two new test files were added, but it's not explicitly confirmed in the visible diff that they cover every acceptance-criteria scenario (e.g., 'latest-page flooding' and 'older-exact-head-Gate regression' failing when recovery is removed) beyond what the truncated test content shows.; Template/root byte-parity and sync-manifest changes are minimal (+1/-1 each) which is consistent with a simple version bump, but exact synchronization correctness for the full 99-line script change couldn't be independently verified from the truncated diff.

🔍 LangSmith Traces

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

Labels

agent:codex Agent-created issues from Codex agents:keepalive Use to initiate keepalive functionality with agents autofix Opt-in automated formatting & lint remediation automerge Auto-merge when checks pass codex codex-automation verify:compare Compare multiple LLM evaluations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P1] Stop PR metadata status self-observation loop

2 participants