[PR #3549] [MERGED] fix(ci): require portable inventory reports on selected runs #5817

Closed
opened 2026-10-31 01:09:39 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/3549
Author: @N0zoM1z0
Created: 10/14/2026
Status: ✅ Merged
Merged: 10/14/2026
Merged by: @N0zoM1z0

Base: main ← Head: fix/3542-required-portable-report


📝 Commits (1)

  • f920a68 fix(ci): require portable inventory reports on selected runs

📊 Changes

2 files changed (+39 additions, -2 deletions)

View changed files

📝 .github/workflows/ci.yml (+1 -1)
📝 tests/boundary/filesystem/ciTestReports.test.ts (+38 -1)

📄 Description

Summary

Fixes #3542. Fast CI could skip its complete portable-inventory validation when the required timing file disappeared. Run the existing strict validator whenever code tests are selected and the job is not cancelled. Missing reports now fail; existing partial diagnostic uploads and successful-history rules remain intact.

The owning boundary is workflow admission to the report validator. Two files only; no runtime, CLI/MCP, provider authority, coverage threshold, test discovery or cache-policy changes. Maintainer capability scope decision: not applicable to this ordinary CI correction.

Validation

Hosted-CI base: main 1438422dfedf1de29368b595e09a04f1fc10750d; Node 24.18.0 / npm 11.16.0 / Vitest 5.0.3 on Linux x64.

  • New workflow-condition regression fails on the base for the intended reason: 1 failed / 8 passed. The validator itself already rejects incomplete/missing input; the regression catches its bypass.
  • Fixed report/required/feedback families: 34 passed, 10.19 s. Includes missing/present timing, fast/full, cancelled/unselected controls, real blob merging, failed/partial diagnostics, and removal of stale successful history after a missing-report rerun.
  • Real Vitest fault control: two tracked tests, one available merged result, JSON/JUnit retained, missing timing. The workflow now selects the strict report step; it fails with ENOENT and the actual required gate rejects the failed portable job (exit 1). Group outcomes are controlled; no hosted fault-injected run was dispatched.
  • check:ci: 8 tasks passed, architecture guards passed across 1,398 files. Discovery accounts for 1,284 test files exactly once.
  • Pinned actionlint 1.7.7 passes all workflows; normal commit hooks and diff checks pass.
  • Current-head code CI: all 35 jobs succeeded. Downloaded and parsed artifact 11908857948: 1,284 unique files / 14,673 passed / 125 skipped / zero failures / no duplicates.
  • Exact-head Greptile review: 5/5, no inline findings; source review is separate from executed tests.

Successful runs perform the same single report-validation pass. The changed failure path rejects a missing local input promptly; no tests/builds are added to ordinary workflow execution. Local timings are verification observations on a shared host, not CI-wide speedup measurements. Hosted CPU/RSS and token costs are unmeasured. The unrelated macOS timeout remains tracked separately in #3543.

Current merge candidate

After the hosted run, main advanced to 044fb9127ac77dbb4d9992410f7596fc49dc446e (three Hopper launcher files, no overlap with this PR). The actual integration revision 8cb6e248134ffde4b52da50ff8a7739666e21680 contains both that main commit and unchanged PR head f920a6867; candidate tree is 7c9a7caa47be69f552feb8a7e06542fbc99a412e.

Executed on this exact integration: 12 files / 153 passed across report/gate/feedback and launcher/configuration/Doctor/provider consumers, all 8 static tasks and architecture guards passed, 1,285 files discovered exactly once. The PR diff against the updated main remains the same two files. The unchanged PR-head CI is reused; a complete hosted run of this integration tree is not claimed. Merge verification will require the actual squash tree to equal this qualified candidate.

Author readiness

Human owner: @N0zoM1z0

The owner explicitly authorized autonomous implementation, agent review, ready PR creation and merge, and instructed that no further human authorization checkpoints be requested for this work. The agent reviews the diff and evidence; the two human-review factual declarations below remain unchecked because no human inspection of this future diff is being claimed. This owner-authorized process exception is recorded transparently; merge uses ordinary GitHub enforcement without fabricated statuses or administrative bypass.

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/3549 **Author:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Created:** 10/14/2026 **Status:** ✅ Merged **Merged:** 10/14/2026 **Merged by:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Base:** `main` ← **Head:** `fix/3542-required-portable-report` --- ### 📝 Commits (1) - [`f920a68`](https://github.com/morluto/rea/commit/f920a686783afe93f13f1c114432cf15dc63f684) fix(ci): require portable inventory reports on selected runs ### 📊 Changes **2 files changed** (+39 additions, -2 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/ci.yml` (+1 -1) 📝 `tests/boundary/filesystem/ciTestReports.test.ts` (+38 -1) </details> ### 📄 Description ## Summary Fixes #3542. Fast CI could skip its complete portable-inventory validation when the required timing file disappeared. Run the existing strict validator whenever code tests are selected and the job is not cancelled. Missing reports now fail; existing partial diagnostic uploads and successful-history rules remain intact. The owning boundary is workflow admission to the report validator. Two files only; no runtime, CLI/MCP, provider authority, coverage threshold, test discovery or cache-policy changes. Maintainer capability scope decision: not applicable to this ordinary CI correction. ## Validation Hosted-CI base: main `1438422dfedf1de29368b595e09a04f1fc10750d`; Node 24.18.0 / npm 11.16.0 / Vitest 5.0.3 on Linux x64. - New workflow-condition regression fails on the base for the intended reason: **1 failed / 8 passed**. The validator itself already rejects incomplete/missing input; the regression catches its bypass. - Fixed report/required/feedback families: **34 passed**, 10.19 s. Includes missing/present timing, fast/full, cancelled/unselected controls, real blob merging, failed/partial diagnostics, and removal of stale successful history after a missing-report rerun. - Real Vitest fault control: two tracked tests, one available merged result, JSON/JUnit retained, missing timing. The workflow now selects the strict report step; it fails with ENOENT and the actual required gate rejects the failed portable job (exit 1). Group outcomes are controlled; no hosted fault-injected run was dispatched. - `check:ci`: **8 tasks passed**, architecture guards passed across **1,398 files**. Discovery accounts for **1,284 test files exactly once**. - Pinned actionlint **1.7.7** passes all workflows; normal commit hooks and diff checks pass. - [Current-head code CI](https://github.com/morluto/rea/actions/runs/38594162183): **all 35 jobs succeeded**. Downloaded and parsed artifact `11908857948`: **1,284 unique files / 14,673 passed / 125 skipped / zero failures / no duplicates**. - [Exact-head Greptile review](https://github.com/morluto/rea/pull/3549#issuecomment-6172632274): **5/5**, no inline findings; source review is separate from executed tests. Successful runs perform the same single report-validation pass. The changed failure path rejects a missing local input promptly; no tests/builds are added to ordinary workflow execution. Local timings are verification observations on a shared host, not CI-wide speedup measurements. Hosted CPU/RSS and token costs are unmeasured. The unrelated macOS timeout remains tracked separately in #3543. ## Current merge candidate After the hosted run, main advanced to `044fb9127ac77dbb4d9992410f7596fc49dc446e` (three Hopper launcher files, no overlap with this PR). The actual integration revision `8cb6e248134ffde4b52da50ff8a7739666e21680` contains both that main commit and unchanged PR head `f920a6867`; candidate tree is `7c9a7caa47be69f552feb8a7e06542fbc99a412e`. Executed on this exact integration: **12 files / 153 passed** across report/gate/feedback and launcher/configuration/Doctor/provider consumers, all 8 static tasks and architecture guards passed, **1,285 files discovered exactly once**. The PR diff against the updated main remains the same two files. The unchanged PR-head CI is reused; a complete hosted run of this integration tree is not claimed. Merge verification will require the actual squash tree to equal this qualified candidate. ## Author readiness Human owner: @N0zoM1z0 The owner explicitly authorized autonomous implementation, agent review, ready PR creation and merge, and instructed that no further human authorization checkpoints be requested for this work. The agent reviews the diff and evidence; the two human-review factual declarations below remain unchecked because no human inspection of this future diff is being claimed. This owner-authorized process exception is recorded transparently; merge uses ordinary GitHub enforcement without fabricated statuses or administrative bypass. - [ ] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [ ] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:09:39 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#5817
No description provided.