[PR #2692] [MERGED] fix(process): honor startup deadlines and add a CI audit skill #5317

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

📋 Pull Request Information

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

Base: main ← Head: feat/ci-tests-audit-skill


📝 Commits (8)

  • 2cb076e docs(skills): add CI and test correctness auditing
  • 198afab chore: sync captured upstream CI baseline
  • 27cc6c8 fix(process): report no remaining time after a provider deadline fires
  • d02ebca fix(process): retain the monotonic startup deadline budget
  • 7fa7ae2 chore: sync the latest main before CI audit verification
  • b5a25fb style(tests): format the Java class fixture signature
  • 2f1b2bf test(ghidra): group expanded suites by their contracts
  • 1efcb22 chore: resolve the upstream deadline assertion conflict

📊 Changes

10 files changed (+380 additions, -21 deletions)

View changed files

➕ .agents/skills/rea-ci-tests-audit/SKILL.md (+112 -0)
➕ .agents/skills/rea-ci-tests-audit/agents/openai.yaml (+4 -0)
➕ .agents/skills/rea-ci-tests-audit/references/measurement-and-ci.md (+65 -0)
📝 CONTRIBUTING.md (+4 -0)
📝 src/domain/webBundleAnalyzer.test.ts (+2 -0)
📝 src/ghidra/GhidraFunctionValues.test.ts (+2 -0)
📝 src/process/ProviderDeadline.test.ts (+134 -5)
📝 src/process/ProviderDeadline.ts (+51 -15)
📝 tests/boundary/providers/ghidra/ghidraLauncher.test.ts (+2 -0)
📝 tests/fixtures/javaClassFile.ts (+4 -1)

📄 Description

Summary

Provider startup timers can fire before their absolute monotonic target. This could classify an unexpired budget as a timeout, or let a deadline-clamped polling wait report elapsed before that target. Honor the actual deadline, re-arm an early timer for its residual budget, and retain the absolute polling target until it or the deadline arrives. Caller cancellation and disposal retain their existing ownership semantics.

Add the contributor skill rea-ci-tests-audit under .agents/skills/, linked from CONTRIBUTING. It guides reproducible CI/test correctness and performance investigations: trace discovery and report gates, prove fixture drift or false passes with controlled faults, retain distinct failure coverage, compare equivalent completed workloads, and stop when further benefits lack evidence. A reference covers caches, process-family resource measurements, runner scheduling and checker logs. The skill honors the user's existing scope and publication authorization.

The deadline fix and regression cases are adapted from nosmile99's #2793 at 546001693636f13700d86c6e93b6086abba2b7d6, incorporating the independently reproduced both-timers-early case documented in #2760. The prior contributor commits remain in branch history; the final implementation checks expiry at the producing boundary. Also apply the repository formatter to a Java fixture signature that was byte-identical to captured main and failed the required format gate. Split expanded Ghidra and web-analysis describe callbacks into contract-specific groups to satisfy the existing lint limit, preserving every case, assertion and platform prerequisite.

Validation

  • The original real 40ms deadline assertion remains. Deterministic cases cover early deadline callbacks, re-arming, polling targets, simultaneous early callbacks, cancellation and disposal.
  • Integrated local verification on captured main 9680da76c: check:ci passed all eight tasks plus architecture guards; docs:check passed, including four fresh consistency cases. Six source files passed 139 cases; five compiled boundary files passed 62 cases with five existing platform/fixture skips. A separate 50-trial real 40ms deadline probe observed zero premature or inconsistent results (minimum 40.323ms, maximum 41.073ms).
  • Skill validator, formatting, whitespace and Markdown references pass. Skill file hashes match the independently evaluated and installed three-file bundle.
  • Skills 1.7.2 isolated installation selected exactly those three authored files. Existing public-skill verification retained its seven-file bundle.
  • Two independent forward evaluations received the skill plus runnable temporary repositories and raw artifacts, without expected answers. They reproduced six injected correctness gaps, preserved negative admission/discovery/status gates, rejected unequal-work speed claims, and distinguished unknown runner queue time from creation-to-start delay. A separate 15-probe harness checked fault/control outcomes.
  • Hosted run 38409725095 completed all six portable shards against synthetic merge c9cf7751 (feature 1efcb229 plus main ae9a7f34). Across 1,080 files / 11,336 cases: 11,222 passed, 113 skipped, one failed. All nine deadline cases passed; build and documentation jobs passed. The remaining test failure is the unchanged clean-Linux-Hopper prerequisite rejecting an unreadable /proc/1017/exe before its fixture starts. A controlled same-UID EACCES fault reproduces this fail-closed path in the baseline helper; the hosted PID identity is unavailable. Static checks fail only an unchanged IDA composition describe exceeding the existing 150-line limit; clean main ae9a7f34 independently reproduces the same lint error. These outcomes are retained, not reported as a green workflow.

These are bounded behavioral evaluations. They do not establish universal audit effectiveness, actual Ghidra/Hopper engine coverage, or a CI-wide speedup. Verification notes and raw artifacts are retained outside the tracked tree.

Actual merge verification

Merged as 21aa877e5ae3164cfbfab6f6db27967995ebc8c3. All ten PR files are byte-identical to the locally verified feature head. The actual squash has anonymous primary author/committer addresses; GitHub resolves Kaoru and nosmile99 as co-authors.

On an isolated actual-merge snapshot with freshly installed locked dependencies, the same six source files passed 139 cases. Re-running compiled boundaries was blocked before execution by an inherited Android schema/JsonValue typing error. The exact pinned compile failure independently reproduces on merge parent b17487f4; this separate main problem is recorded in #2852. The earlier 62 boundary passes belong to the pre-merge verified feature tree, and are not relabelled as post-merge execution.

Attribution

Our commits use GitHub anonymous author/committer addresses. The squash retains both material contributor trailers:

Co-authored-by: nosmile99 <147114285+nosmile99@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

Fixes #2760


🔄 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/2692 **Author:** [@N0zoM1z0](https://github.com/N0zoM1z0) **Created:** 10/13/2026 **Status:** ✅ Merged **Merged:** 10/13/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `feat/ci-tests-audit-skill` --- ### 📝 Commits (8) - [`2cb076e`](https://github.com/morluto/rea/commit/2cb076e9b5de5e26b6e864ae85cfb147a3a510e6) docs(skills): add CI and test correctness auditing - [`198afab`](https://github.com/morluto/rea/commit/198afabf0f71acb74f2117935e92fa04798e84f3) chore: sync captured upstream CI baseline - [`27cc6c8`](https://github.com/morluto/rea/commit/27cc6c8e2321caa75344fb7959d66c648754028d) fix(process): report no remaining time after a provider deadline fires - [`d02ebca`](https://github.com/morluto/rea/commit/d02ebca539989ddba6556048e0e2b8403c27d575) fix(process): retain the monotonic startup deadline budget - [`7fa7ae2`](https://github.com/morluto/rea/commit/7fa7ae21685baa1c6d8e2853048ecf98049e50e3) chore: sync the latest main before CI audit verification - [`b5a25fb`](https://github.com/morluto/rea/commit/b5a25fbdda19462ff8d80f4311808df6ea547910) style(tests): format the Java class fixture signature - [`2f1b2bf`](https://github.com/morluto/rea/commit/2f1b2bf07d2ce7ccc73c385c46e98631de75fead) test(ghidra): group expanded suites by their contracts - [`1efcb22`](https://github.com/morluto/rea/commit/1efcb22984b9dfbe9aeade3ba8c084b4dd50fca6) chore: resolve the upstream deadline assertion conflict ### 📊 Changes **10 files changed** (+380 additions, -21 deletions) <details> <summary>View changed files</summary> ➕ `.agents/skills/rea-ci-tests-audit/SKILL.md` (+112 -0) ➕ `.agents/skills/rea-ci-tests-audit/agents/openai.yaml` (+4 -0) ➕ `.agents/skills/rea-ci-tests-audit/references/measurement-and-ci.md` (+65 -0) 📝 `CONTRIBUTING.md` (+4 -0) 📝 `src/domain/webBundleAnalyzer.test.ts` (+2 -0) 📝 `src/ghidra/GhidraFunctionValues.test.ts` (+2 -0) 📝 `src/process/ProviderDeadline.test.ts` (+134 -5) 📝 `src/process/ProviderDeadline.ts` (+51 -15) 📝 `tests/boundary/providers/ghidra/ghidraLauncher.test.ts` (+2 -0) 📝 `tests/fixtures/javaClassFile.ts` (+4 -1) </details> ### 📄 Description ## Summary Provider startup timers can fire before their absolute monotonic target. This could classify an unexpired budget as a timeout, or let a deadline-clamped polling wait report `elapsed` before that target. Honor the actual deadline, re-arm an early timer for its residual budget, and retain the absolute polling target until it or the deadline arrives. Caller cancellation and disposal retain their existing ownership semantics. Add the contributor skill `rea-ci-tests-audit` under `.agents/skills/`, linked from CONTRIBUTING. It guides reproducible CI/test correctness and performance investigations: trace discovery and report gates, prove fixture drift or false passes with controlled faults, retain distinct failure coverage, compare equivalent completed workloads, and stop when further benefits lack evidence. A reference covers caches, process-family resource measurements, runner scheduling and checker logs. The skill honors the user's existing scope and publication authorization. The deadline fix and regression cases are adapted from nosmile99's #2793 at `546001693636f13700d86c6e93b6086abba2b7d6`, incorporating the independently reproduced both-timers-early case documented in #2760. The prior contributor commits remain in branch history; the final implementation checks expiry at the producing boundary. Also apply the repository formatter to a Java fixture signature that was byte-identical to captured main and failed the required format gate. Split expanded Ghidra and web-analysis `describe` callbacks into contract-specific groups to satisfy the existing lint limit, preserving every case, assertion and platform prerequisite. ## Validation - The original real 40ms deadline assertion remains. Deterministic cases cover early deadline callbacks, re-arming, polling targets, simultaneous early callbacks, cancellation and disposal. - Integrated local verification on captured main `9680da76c`: `check:ci` passed all eight tasks plus architecture guards; `docs:check` passed, including four fresh consistency cases. Six source files passed 139 cases; five compiled boundary files passed 62 cases with five existing platform/fixture skips. A separate 50-trial real 40ms deadline probe observed zero premature or inconsistent results (minimum 40.323ms, maximum 41.073ms). - Skill validator, formatting, whitespace and Markdown references pass. Skill file hashes match the independently evaluated and installed three-file bundle. - Skills 1.7.2 isolated installation selected exactly those three authored files. Existing public-skill verification retained its seven-file bundle. - Two independent forward evaluations received the skill plus runnable temporary repositories and raw artifacts, without expected answers. They reproduced six injected correctness gaps, preserved negative admission/discovery/status gates, rejected unequal-work speed claims, and distinguished unknown runner queue time from creation-to-start delay. A separate 15-probe harness checked fault/control outcomes. - Hosted [run 38409725095](https://github.com/morluto/rea/actions/runs/38409725095) completed all six portable shards against synthetic merge `c9cf7751` (feature `1efcb229` plus main `ae9a7f34`). Across 1,080 files / 11,336 cases: 11,222 passed, 113 skipped, one failed. All nine deadline cases passed; build and documentation jobs passed. The remaining test failure is the unchanged clean-Linux-Hopper prerequisite rejecting an unreadable `/proc/1017/exe` before its fixture starts. A controlled same-UID EACCES fault reproduces this fail-closed path in the baseline helper; the hosted PID identity is unavailable. Static checks fail only an unchanged IDA composition `describe` exceeding the existing 150-line limit; clean main `ae9a7f34` independently reproduces the same lint error. These outcomes are retained, not reported as a green workflow. These are bounded behavioral evaluations. They do not establish universal audit effectiveness, actual Ghidra/Hopper engine coverage, or a CI-wide speedup. Verification notes and raw artifacts are retained outside the tracked tree. ## Actual merge verification Merged as `21aa877e5ae3164cfbfab6f6db27967995ebc8c3`. All ten PR files are byte-identical to the locally verified feature head. The actual squash has anonymous primary author/committer addresses; GitHub resolves Kaoru and nosmile99 as co-authors. On an isolated actual-merge snapshot with freshly installed locked dependencies, the same six source files passed 139 cases. Re-running compiled boundaries was blocked before execution by an inherited Android schema/JsonValue typing error. The exact pinned compile failure independently reproduces on merge parent `b17487f4`; this separate main problem is recorded in #2852. The earlier 62 boundary passes belong to the pre-merge verified feature tree, and are not relabelled as post-merge execution. ## Attribution Our commits use GitHub anonymous author/committer addresses. The squash retains both material contributor trailers: ```text Co-authored-by: nosmile99 <147114285+nosmile99@users.noreply.github.com> Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com> ``` Fixes #2760 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:05:42 +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#5317
No description provided.