ci(hrv): scheduled non-blocking real-data integration lane#170
Open
neuron7x wants to merge 1 commit intoneuron7xLab:mainfrom
Open
ci(hrv): scheduled non-blocking real-data integration lane#170neuron7x wants to merge 1 commit intoneuron7xLab:mainfrom
neuron7x wants to merge 1 commit intoneuron7xLab:mainfrom
Conversation
Companion to neuron7xLab#169 (test split). The opt-in NEOSYNAPTEX_RUN_NETWORK_TESTS=1 gate moves PhysioNet/wfdb out of the PR-blocking matrix. This workflow restores daily contact with reality without re-introducing the flake on PRs: • triggers: schedule (daily 03:13 UTC) + workflow_dispatch only — no pull_request, no push, so it cannot become a merge gate. • runs the single real-data test under the env-var gate. • on failure: uploads pytest log + junit (30-day retention) and surfaces a single rolling issue under the "hrv-integration-failure" label (comment if open, create otherwise). Reasoning is in the workflow header. Fail-mode body lists likely causes ranked by descending probability (network → API drift → adapter regression) so triage starts at the cheapest hypothesis. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 63397c29c1
ℹ️ 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".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Companion to #169. The test split moves PhysioNet/wfdb off the PR-blocking matrix via the opt-in
NEOSYNAPTEX_RUN_NETWORK_TESTS=1gate. That removed flake from PR throughput but also weakened daily contact with reality. This workflow restores it without re-introducing the flake.Mechanism
schedule: 13 3 * * *(daily 03:13 UTC) +workflow_dispatchpull_request,push— by construction cannot block PRstests/test_integrity_v2.py::TestHRV::test_real_data_gamma_in_rangehrv-integration-failure(comment if open, create otherwise)contents: read,issues: writeWhy a rolling issue, not one issue per failure
PhysioNet flake is correlated — once they have a bad day, multiple consecutive runs fail. Per-failure issues = noise. A single rolling issue with append-on-failure = signal.
Why daily, not weekly
Marginal CI cost is trivial. Faster drift detection (PhysioNet API change, NSR2DB record removal, adapter regression) at the cost of slightly more issue-comment volume on outages. Weekly was the alternative; daily wins on rigor.
Failure body design
Triage hint ranked by descending probability:
HRVPhysioNetAdapterregressionCheapest hypothesis first.
Scope contract
This PR adds only the scheduled workflow. It does not touch tests, branch protection, or existing CI. It is independent of #169 and will function correctly whether merged before or after, since the env-var gate is no-op pre-#169 and effective post-#169.
Test plan
python -c "import yaml; yaml.safe_load(open(...))").|strips 10 leading spaces,MARKDOWNterminator lands at bash column 0.pull_requestorpushtriggers — workflow cannot become a required check unless a maintainer explicitly adds it to branch protection (which would defeat the purpose).actionlintworkflow on this PR will validate the action.Claim status
claim_status: derived
No measurement claim. Pure CI infrastructure: restores integration coverage on a non-blocking lane.
🤖 Generated with Claude Code