diff --git a/.github/workflows/command-center-invariants.yml b/.github/workflows/command-center-invariants.yml index 93f6ae64..fe455de7 100644 --- a/.github/workflows/command-center-invariants.yml +++ b/.github/workflows/command-center-invariants.yml @@ -196,6 +196,12 @@ jobs: shell: bash run: | set -euo pipefail + quality_args=(--repo-root source-set + --detections-ref "$(git -C source-set/hawkinsoperations-detections rev-parse HEAD)" + --validation-ref "$(git -C source-set/hawkinsoperations-validation rev-parse HEAD)" + --platform-ref "$(git -C source-set/hawkinsoperations-platform rev-parse HEAD)") + python -B -m hoxline.cli detection-quality "${quality_args[@]}" --format json > verification-work/detection-quality.json + python -B -m hoxline.cli detection-quality "${quality_args[@]}" --verify verification-work/detection-quality.json --format markdown >> "$GITHUB_STEP_SUMMARY" python -B -m compileall -q source-set/hoxline/src source-set/hoxline/tests python -B -m unittest discover -s source-set/hoxline/tests python -B -m pytest -q source-set/hoxline/tests diff --git a/README.md b/README.md index 6fb7e79a..33377a9f 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,15 @@ Evidence and source flow stay separated: ## Fast Reviewer Path +The seven-repository convergence workflow also runs Hoxline's +`detection-quality` command through the platform handoff, then verifies the saved +report by reexecuting validation-owned source predicates and mutations. Exact +source revisions come from `governance/CONVERGENCE_SOURCE_MANIFEST.json`. +The job summary contains the measured reviewer table; validation CI retains the +owner report for both Ubuntu and Windows. See the validation and Hoxline READMEs +at those selected revisions for local commands and supported predicate scope. +This is controlled fixture review, with no runtime, closure, or public-proof promotion. + | Time | Start | What to confirm | |---:|---|---| | 30 sec | [profile/START_HERE.md](profile/START_HERE.md) | What HawkinsOperations is, which repo owns truth, and what remains blocked. | diff --git a/governance/CONVERGENCE_SOURCE_MANIFEST.json b/governance/CONVERGENCE_SOURCE_MANIFEST.json index eafbb19a..2e834a87 100644 --- a/governance/CONVERGENCE_SOURCE_MANIFEST.json +++ b/governance/CONVERGENCE_SOURCE_MANIFEST.json @@ -12,23 +12,23 @@ { "repository": "hawkinsoperations-detections", "canonical_repository": "HawkinsOperations/hawkinsoperations-detections", - "revision": "9e01f43fb350de3370f8c01a323dcdcdf2e33147", + "revision": "56cad4f726c0d3988c9464693ce7c127c8f63cad", "authority_content_revision": "f8bc0a0925113ca815bf5692081b5216162cc918", - "reviewed_tree_sha": "4135fc6fafb3bc842096ee58fa7dd53d24172b65" + "reviewed_tree_sha": "429361f066f1bd4cdbb168ba709cec42d9f93510" }, { "repository": "hawkinsoperations-validation", "canonical_repository": "HawkinsOperations/hawkinsoperations-validation", - "revision": "677b704150b0f5f333c27913dd481b4be6a78ab7", + "revision": "c8f3f08995d78fa103115610e5c6a2b85ee61701", "authority_content_revision": "ebf52f7c6c9b78de767272cc56fccdc584f5c4e0", - "reviewed_tree_sha": "b4a12cfe4a67e5b66171f73cd228c2691789dcc6" + "reviewed_tree_sha": "61c9489df9dd6503b02eb796cb30df93486823be" }, { "repository": "hawkinsoperations-platform", "canonical_repository": "HawkinsOperations/hawkinsoperations-platform", - "revision": "d2901f303a2047436d1ada2d97f2eb4310380585", - "authority_content_revision": "a667c4de8b478fe165c3ec612e642bbd5d879492", - "reviewed_tree_sha": "0ad3ad8ff804e6b0fff9c4bf5eb1c913a76f602c" + "revision": "0826b9916f926c204d44875f3ecd1c964a159125", + "authority_content_revision": "13fd8d88b179572bc53759f371d9b968ba3c94d4", + "reviewed_tree_sha": "b25ab96d1655b768a58f81ad4bb642104ec94496" }, { "repository": "hawkinsoperations-proof", @@ -40,16 +40,16 @@ { "repository": "hawkinsoperations-website", "canonical_repository": "HawkinsOperations/hawkinsoperations-website", - "revision": "ee30ae81d31e8f27fa779ddb42470f7d27db1f33", + "revision": "a5330385c479cad29a7f892b5388c7426452faaa", "authority_content_revision": "5856f8e69527b5e61c3953b88a2ad4c088268655", - "reviewed_tree_sha": "672da08e0e5c42d7be543cb9bdcfa45ccb59daa2" + "reviewed_tree_sha": "a16399a812564180939c38357bca1c09cc2f2a21" }, { "repository": "hoxline", "canonical_repository": "HawkinsOperations/hoxline", - "revision": "cd797da491f07b9a0130278d7245f51962dd82c0", + "revision": "be2cd4f08aa5fe04fff89435de47e20abef9f96e", "authority_content_revision": "1cb97efc45ffe753389105645c25ed7fe57cf9e5", - "reviewed_tree_sha": "29dc0d921bbc342f30d8be46cf88f049ea591f0a" + "reviewed_tree_sha": "77646e5ddd2a6f1729907578b650a2c78d12adff" } ], "constraints": { diff --git a/scripts/verify-command-center-invariants.py b/scripts/verify-command-center-invariants.py index a722bb84..f91086d2 100644 --- a/scripts/verify-command-center-invariants.py +++ b/scripts/verify-command-center-invariants.py @@ -85,6 +85,7 @@ def sanitized_git_environment() -> dict[str, str]: "hoxline_case_growth_pair", "hoxline_expanded_batch", "hoxline_replay", + "source_executed_detection_mutation_replay", "hoxline_hostile_tests", "website_source_owner_and_freshness", "website_nested_claim_and_eol_tests", @@ -105,7 +106,7 @@ def sanitized_git_environment() -> dict[str, str]: "Verify proof authority and reverse inventory": "f07b841030269d74bd563238e59e4ff695e2d140108321f9d33ea364a0d850b8", "Verify platform source contract and seven-source convergence": "698d9e4b0035d4581a87c889bff1c7bb7ef53db957d75688f1364a713be76ee5", "Install Hoxline from the checked immutable source": "f6954cbb94cbc30f5110c536a4c73b71f985953e71e4c08385cf46b7eb8fea0c", - "Verify Hoxline Case Growth pair and replay integrity": "979ca538d7eb872fa2da00afbf8e73606ab874d94cc134475d12e2b86b36886b", + "Verify Hoxline Case Growth pair and replay integrity": "88ba11ecfd313ceb3b16b8169a5b5abd430547f6f8f31a8485b8fed660eccba3", "Install Website dependencies from the checked lockfile": "4be0617fbf64515a837109e98174e687edc18a027a37368223fff95cb33d8f94", "Verify Website rendering-only status plane and static build": "4430722c68c09465e87a12d612e0d721ef0f7b9494b1e77a8b0d8ba3dc2649c8", "Write closed-schema verification summary": "056a198f6f178d60e01d0a0eecda11181372ced82d68793b24fc0676a8cb15b7",