Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/workflows/advisory-review-health.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Advisory Review Health
on:
schedule:
- cron: '35 8 * * *'
workflow_run:
workflows: [Drift Check, Evidence Gate]
types: [completed]
workflow_dispatch:
permissions:
contents: read
actions: read
issues: write
jobs:
check:
uses: QuantStrategyLab/QuantPlatformKit/.github/workflows/review-loop-deadman.yml@feat/advisory-review-closed-loop
with:
lanes_json: >-
[{"workflow":"drift-check.yml","job":"drift","interval_hours":24,"enabled_at":"2026-10-15T00:00:00Z"},
{"workflow":"evidence-gate.yml","job":"gate","interval_hours":0}]
threshold: '3'
14 changes: 13 additions & 1 deletion .github/workflows/evidence-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ on:
permissions:
contents: read
pull-requests: read
issues: write
id-token: write

concurrency:
Expand All @@ -26,7 +27,7 @@ jobs:
gate:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
timeout-minutes: 10
timeout-minutes: 50
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"

Expand Down Expand Up @@ -75,9 +76,20 @@ jobs:

- name: Evaluate Evidence Gate
env:
AI_REVIEW_CLOSED_LOOP: 'true'
GH_TOKEN: ${{ github.token }}
GITHUB_BASE_REF: ${{ github.base_ref }}
AI_SERVICE_RELEASE_READY: ${{ vars.AI_SERVICE_RELEASE_READY }}
AI_SERVICE_URL: ${{ vars.AI_SERVICE_URL }}
AI_SERVICE_AUDIENCE: ${{ vars.AI_SERVICE_AUDIENCE }}
AI_SERVICE_REVIEWERS_JSON: ${{ vars.AI_SERVICE_REVIEWERS_JSON }}
run: python scripts/gate_evidence_package.py

- name: Archive advisory evidence verdicts
if: always()
uses: actions/upload-artifact@v7
with:
name: evidence-review-verdicts-${{ github.run_id }}-${{ github.run_attempt }}
path: data/output/review_verdicts
if-no-files-found: warn
retention-days: 90
9 changes: 9 additions & 0 deletions docs/advisory-review-disposition.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Advisory review disposition (draft)

This draft opts the existing Evidence Gate and drift review into QPK's issue-only review disposition. Complete approvals archive JSON and close only the bot-owned review issue. Flags receive at most one deeper Dot task under existing grants. Owner alerts require confirmation, severe consensus or a three-cycle dead-man failure. Original evidence, release-readiness, role and promotion checks remain unchanged. No PR is auto-closed or merged by a review verdict.

An independent scheduled/workflow-run monitor observes review-job failures/skips and missing scheduled drift cycles. Verdict artifacts are retained for 90 days. The extra review timeout allows the existing role calls and one deeper task; it adds no retries or model authority. GitHub issue writes use the current workflow token and never authorize trading or server access.

Depends on the QPK advisory-review draft and promotion of its reviewed approved runtime wheel/reference. The monitor intentionally references that draft branch; pin the reviewed merge SHA during adoption. Missing existing model routes, grants, wheel admission or READY remain blockers. No secret, IAM, release variable, production wheel digest, live setting or trading actuator is changed. No cycle-bound pause is available here; severe consensus reports that gap. These drafts are not runtime acceptance.

HK/Crypto branches are stacked on harden's role-name/READY drafts; those edits are preserved. No in-flight job worktree was modified. Tests use fakes; CI and workflow syntax must pass before review.