-
Notifications
You must be signed in to change notification settings - Fork 0
perf(cf06): parallelize deterministic oracle validation #17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -10,15 +10,18 @@ permissions: | |
| contents: read | ||
|
|
||
| jobs: | ||
| oracle-adapter: | ||
| oracle-self-smoke: | ||
| name: oracle-self-smoke | ||
|
Comment on lines
+13
to
+14
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 3. Workflow contract remains stale The workflow renames oracle-adapter and splits its validation into three jobs, but the CF-06 convergence contract still says the final workflow contains only the oracle-adapter job. This leaves reviewers and operators with an incorrect description of the required validation checks. Agent Prompt
|
||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-java@v5.7.0 | ||
| - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5 / Node 24 | ||
| with: | ||
| persist-credentials: false | ||
| - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 | ||
| with: | ||
| distribution: temurin | ||
| java-version: '17' | ||
| - uses: dtolnay/rust-toolchain@1.97.1 | ||
| - uses: dtolnay/rust-toolchain@032958afbdc797a9164d3bc0b56325c1308924a5 # 1.97.1 | ||
| - name: Build pinned HL7 oracle adapter | ||
| run: mvn -B -ntp -f tools/hl7-oracle/pom.xml package | ||
| - name: Resolve pinned real R4 oracle context | ||
|
|
@@ -88,6 +91,26 @@ jobs: | |
| assert report['structural_diff']['changes'] == [] | ||
| assert report['resources'] == [] | ||
| PY | ||
|
|
||
| oracle-changed-profile: | ||
| name: oracle-changed-profile | ||
| runs-on: ubuntu-latest | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 1. ubuntu-latest runner is mutable The newly added validation jobs select ubuntu-latest, allowing their runner environment to change without a repository change. This makes the production validation DAG dependent on a mutable infrastructure identifier. Agent Prompt
|
||
| steps: | ||
| - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5 / Node 24 | ||
| with: | ||
| persist-credentials: false | ||
| - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 | ||
| with: | ||
| distribution: temurin | ||
| java-version: '17' | ||
|
Comment on lines
+102
to
+105
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 2. java-version is not exact The new changed-profile job requests only Java major version 17, allowing different JDK patch and build versions to be installed over time. This leaves a package dependency in the production validation environment unpinned. Agent Prompt
|
||
| - uses: dtolnay/rust-toolchain@032958afbdc797a9164d3bc0b56325c1308924a5 # 1.97.1 | ||
| - name: Build pinned HL7 oracle adapter | ||
| run: mvn -B -ntp -f tools/hl7-oracle/pom.xml package | ||
| - name: Resolve pinned real R4 oracle context | ||
| run: | | ||
| rm -rf /tmp/commandf-oracle-smoke | ||
| cargo run --locked --quiet -p commandf -- pkg resolve hl7.fhir.r4.core@4.0.1 --cache /tmp/commandf-oracle-smoke/cache --lock /tmp/commandf-oracle-smoke/commandf.lock | ||
| cargo run --locked --quiet -p commandf -- pkg verify --cache /tmp/commandf-oracle-smoke/cache --lock /tmp/commandf-oracle-smoke/commandf.lock | ||
| - name: Build deterministic changed-profile oracle fixtures | ||
| run: | | ||
| ARCHIVE="$(python - <<'PY' | ||
|
|
@@ -247,3 +270,20 @@ jobs: | |
| fields = {change.get('field') for change in report['structural_diff']['changes']} | ||
| assert {'min', 'type', 'binding', 'mustSupport'} <= fields | ||
| PY | ||
|
|
||
| oracle-proof: | ||
| name: oracle-proof | ||
| if: always() | ||
| needs: | ||
| - oracle-self-smoke | ||
| - oracle-changed-profile | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Enforce all CF-06 oracle validation suites | ||
| env: | ||
| SELF_SMOKE_RESULT: ${{ needs.oracle-self-smoke.result }} | ||
| CHANGED_PROFILE_RESULT: ${{ needs.oracle-changed-profile.result }} | ||
| run: | | ||
| set -euo pipefail | ||
| test "$SELF_SMOKE_RESULT" = success | ||
| test "$CHANGED_PROFILE_RESULT" = success | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Replacing the documented single
oracle-adapterjob withoracle-self-smoke,oracle-changed-profile, andoracle-proofleaves the CF-06 convergence document describing a nonexistent job and outdated final workflow structure, which can mislead maintainers validating the intended CI topology.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!