diff --git a/registry/index.json b/registry/index.json index 46b00343..f4b0395e 100644 --- a/registry/index.json +++ b/registry/index.json @@ -16,7 +16,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] } diff --git a/registry/packages/yao-meta-skill.json b/registry/packages/yao-meta-skill.json index 60fba24f..7d64a9a2 100644 --- a/registry/packages/yao-meta-skill.json +++ b/registry/packages/yao-meta-skill.json @@ -16,8 +16,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f" + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b" }, "compatibility": { "openai": "pass", @@ -48,7 +48,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" diff --git a/reports/adoption_drift_report.json b/reports/adoption_drift_report.json index adcbadd9..031f5878 100644 --- a/reports/adoption_drift_report.json +++ b/reports/adoption_drift_report.json @@ -1,7 +1,7 @@ { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-16T17:29:39Z", + "generated_at": "2026-06-16T17:39:17Z", "skill_dir": ".", "privacy_contract": { "storage": "local-first", diff --git a/reports/architecture_maintainability.json b/reports/architecture_maintainability.json index 4bad193f..1afc673e 100644 --- a/reports/architecture_maintainability.json +++ b/reports/architecture_maintainability.json @@ -4,10 +4,10 @@ "generated_at": "2026-06-13", "skill_dir": ".", "summary": { - "python_file_count": 220, - "script_file_count": 145, + "python_file_count": 221, + "script_file_count": 146, "test_file_count": 75, - "internal_module_count": 61, + "internal_module_count": 62, "cli_script_count": 86, "command_handler_count": 68, "entrypoint_command_handler_count": 18, @@ -18,7 +18,7 @@ "block_line_threshold": 1500, "largest_file_lines": 696, "watchlist_count": 0, - "early_watchlist_count": 4, + "early_watchlist_count": 3, "hotspot_count": 0, "blocker_count": 0, "decision": "pass" @@ -32,14 +32,6 @@ "early_watch": true, "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." }, - { - "path": "scripts/review_studio_gates.py", - "lines": 646, - "kind": "internal-module", - "severity": "pass", - "early_watch": true, - "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." - }, { "path": "scripts/cross_packager.py", "lines": 638, @@ -119,6 +111,14 @@ "severity": "pass", "early_watch": false, "recommendation": "Move data loading and large section renderers into focused review_studio_* modules." + }, + { + "path": "tests/verify_world_class_evidence_ledger.py", + "lines": 567, + "kind": "test", + "severity": "pass", + "early_watch": false, + "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." } ], "watchlist": [], @@ -131,14 +131,6 @@ "early_watch": true, "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." }, - { - "path": "scripts/review_studio_gates.py", - "lines": 646, - "kind": "internal-module", - "severity": "pass", - "early_watch": true, - "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." - }, { "path": "scripts/cross_packager.py", "lines": 638, diff --git a/reports/architecture_maintainability.md b/reports/architecture_maintainability.md index 94fcbe77..058f6398 100644 --- a/reports/architecture_maintainability.md +++ b/reports/architecture_maintainability.md @@ -5,17 +5,17 @@ Generated at: `2026-06-13` ## Summary - decision: `pass` -- python files: `220` -- scripts: `145` +- python files: `221` +- scripts: `146` - tests: `75` -- internal modules: `61` +- internal modules: `62` - CLI scripts: `86` - Yao CLI command handlers: `68` - entrypoint command handlers: `18` - command modules: `6` - largest file lines: `696` - early watch threshold lines: `600` -- early watchlist: `4` +- early watchlist: `3` - watch threshold lines: `720` - watchlist: `0` - hotspots: `0` @@ -36,7 +36,6 @@ No near-threshold files found. | File | Lines | Kind | Recommended next split | | --- | ---: | --- | --- | | `tests/verify_yao_cli.py` | `696` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. | -| `scripts/review_studio_gates.py` | `646` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `scripts/cross_packager.py` | `638` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `tests/verify_world_class_evidence_intake.py` | `628` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. | @@ -45,7 +44,6 @@ No near-threshold files found. | File | Lines | Kind | Severity | | --- | ---: | --- | --- | | `tests/verify_yao_cli.py` | `696` | `test` | `pass` | -| `scripts/review_studio_gates.py` | `646` | `internal-module` | `pass` | | `scripts/cross_packager.py` | `638` | `cli-script` | `pass` | | `tests/verify_world_class_evidence_intake.py` | `628` | `test` | `pass` | | `scripts/render_benchmark_reproducibility.py` | `595` | `cli-script` | `pass` | @@ -56,6 +54,7 @@ No near-threshold files found. | `tests/verify_review_studio.py` | `580` | `test` | `pass` | | `scripts/render_evidence_consistency.py` | `568` | `cli-script` | `pass` | | `scripts/render_review_studio.py` | `568` | `cli-script` | `pass` | +| `tests/verify_world_class_evidence_ledger.py` | `567` | `test` | `pass` | ## Release Rule diff --git a/reports/benchmark_reproducibility.json b/reports/benchmark_reproducibility.json index ff7561a0..70c93032 100644 --- a/reports/benchmark_reproducibility.json +++ b/reports/benchmark_reproducibility.json @@ -3,23 +3,36 @@ "ok": true, "generated_at": "2026-06-17", "skill_dir": ".", - "commit": "d5beede0a62dab0f0780be283a274ed8a5be9dc4", + "commit": "5e2163683a483b9b0b0180219994495fc84eb272", "git_status": { "available": true, - "dirty": false, - "changed_file_count": 0, - "sample": [], + "dirty": true, + "changed_file_count": 56, + "sample": [ + " M registry/index.json", + " M registry/packages/yao-meta-skill.json", + " M reports/adoption_drift_report.json", + " M reports/architecture_maintainability.json", + " M reports/architecture_maintainability.md", + " M reports/compiled_targets.json", + " M reports/context_budget.json", + " M reports/context_budget.md", + " M reports/context_budget_summary.json", + " M reports/evidence_consistency.json", + " M reports/install_simulation.json", + " M reports/install_simulation.md" + ], "scope": "generation-time status before this report is written" }, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0", - "source_contract_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", + "evidence_bundle_sha256": "bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199", + "source_contract_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -37,14 +50,15 @@ "world_class_source_pass_count": 7, "world_class_source_blocked_count": 6, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 56 }, "public_claim": { "ready": false, "scope": "public benchmark or world-class readiness claim", "blockers": [ + "release lock is not clean or commit is unavailable", "provider-backed model holdout evidence is incomplete", "human blind-review adjudication is incomplete", "world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)", @@ -53,10 +67,10 @@ "policy": "Local reproducibility can pass before public claims; public claims require provider evidence, human adjudication, clean release lock, accepted world-class evidence, and complete source checks." }, "release_lock": { - "ready": true, - "commit": "d5beede0a62dab0f0780be283a274ed8a5be9dc4", + "ready": false, + "commit": "5e2163683a483b9b0b0180219994495fc84eb272", "status_scope": "generation-time status before this report is written", - "reason": "clean generation-time HEAD" + "reason": "working tree was dirty at generation time" }, "evidence_bundle": { "algorithm": "sha256(path,label,exists,artifact_sha256)", @@ -64,7 +78,7 @@ "existing_count": 25, "missing_count": 0, "missing_paths": [], - "sha256": "5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0" + "sha256": "bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199" }, "methodology": { "path": "reports/benchmark_methodology.md", @@ -137,8 +151,8 @@ "label": "output_execution", "path": "reports/output_execution_runs.json", "exists": true, - "bytes": 7966, - "sha256": "c0a5988ee9aff029b8c56b0a090aa23fc4efe803bd960f722b5a9a9c15a5c78d" + "bytes": 7967, + "sha256": "d1036355cee863fa21a20cdd2da5b237b5d262f9ff79b3543f8f6aff579160b2" }, { "label": "blind_review", @@ -172,64 +186,64 @@ "label": "trust_report", "path": "reports/security_trust_report.json", "exists": true, - "bytes": 132641, - "sha256": "e0e8b047f580e5c8ff33580c49a99d3221919f52f6c5e3849976ed840a8618d9" + "bytes": 133262, + "sha256": "17d57bf1beb0dbe9b8859f56c4d7c301f43230d00262d96ae8f0f4a3894ea7a0" }, { "label": "python_compatibility", "path": "reports/python_compatibility.json", "exists": true, - "bytes": 28940, - "sha256": "c3fb22a905196a6d5242bde27f0b33f5233accacb478a80d1fd7a0582243e2bc" + "bytes": 29069, + "sha256": "716f4554952641019830e895191891dcd9841ce0488570c7a526c7d144adf058" }, { "label": "registry_audit", "path": "reports/registry_audit.json", "exists": true, "bytes": 3183, - "sha256": "01100afaf317ebcdef836070636905bb3e4d64412c8a8f14d8758db822eba33c" + "sha256": "c4ee2793af91f74987c71d0aad7be2a116ed691e7f50dbb11e2df4216309706c" }, { "label": "package_verification", "path": "reports/package_verification.json", "exists": true, "bytes": 19338, - "sha256": "6dde3b877e00b3e8936d0ffe1e45c77926639f5b21b0a4f30e779e6b4ffd4f57" + "sha256": "3c74f6dff362bf61112f7115ad06cb6ec6d94331256a60075757d611b2c1a926" }, { "label": "install_simulation", "path": "reports/install_simulation.json", "exists": true, - "bytes": 8758, - "sha256": "7177ae392187ac0af2ed071c31c758e6e3e4d63230bbbcbdfc1b35719d23b966" + "bytes": 8604, + "sha256": "7037d27d066b92d5652d8a2b0a1ec0e3d5fa698fd301db2aa4f7675304ab934d" }, { "label": "skill_os2_audit", "path": "reports/skill_os2_audit.json", "exists": true, "bytes": 14310, - "sha256": "867273823e8244ac65d44e69edb8c3d6c628b0f28f8a3bfdee612b802592654a" + "sha256": "50c34274593701e6aa5505524db7c54c3f6a40a085bbeefa9d7d29c1950ba274" }, { "label": "world_class_evidence_plan", "path": "reports/world_class_evidence_plan.json", "exists": true, "bytes": 20828, - "sha256": "af3c3f101ad992820bf36ddb14b02e7404ef16411567c483f86eed530ca45f62" + "sha256": "9b74155fb9bfe44ba838d64b1a31768b83978b154bdd8eaa606f494c816f189f" }, { "label": "world_class_evidence_ledger", "path": "reports/world_class_evidence_ledger.json", "exists": true, "bytes": 22285, - "sha256": "74deeabfac9f488a35cd816fdf8cd74a52fe73a82958770cbd7b41191a218814" + "sha256": "f6e1a69b0359c28c88e9e9e69ff66763c721ac8a112a43a673ce98cd9d3bce41" }, { "label": "world_class_evidence_intake", "path": "reports/world_class_evidence_intake.json", "exists": true, "bytes": 19319, - "sha256": "69afd0ff3d49ba9e1ea57248e41cfe62a0abfdf06fd0f997ed3008a5656c2566" + "sha256": "46f801051ec075725059e4e2682ef2162fd892b5e7255c8d5121d7b24dcc7f2c" }, { "label": "world_class_evidence_preflight", @@ -243,21 +257,21 @@ "path": "reports/world_class_submission_review.json", "exists": true, "bytes": 13655, - "sha256": "17def7ba6982d834e13ce3896dd9093019eec3ee8d2fa5b283ef8d6b17b19be0" + "sha256": "9fbd4cd437986fca9a043cbab24aec7d575aaf166a8d9365c79c56f093cab5b8" }, { "label": "world_class_operator_runbook", "path": "reports/world_class_operator_runbook.json", "exists": true, "bytes": 24835, - "sha256": "00bfa998b24a37cf3f0354d3956f1c722041d5cbada0f4357f27f7c2187d11f1" + "sha256": "2d32a2e917b7215afe7a7a93ca8bacffa540a245953aa39e2ee47eea1b169d17" }, { "label": "world_class_operator_runbook_markdown", "path": "reports/world_class_operator_runbook.md", "exists": true, "bytes": 15424, - "sha256": "337fb764b98ad2707f5a0d7bba88b9c5401256d7be00f8f3dc478e89e3bcb6c2" + "sha256": "00d8ebabb91e14a06cacdb212f448668aa1e47b72587448e30681fc53acaad9a" }, { "label": "world_class_operator_runbook_html", @@ -271,7 +285,7 @@ "path": "reports/world_class_claim_guard.json", "exists": true, "bytes": 18596, - "sha256": "c846ffc8565a40c270e711a58e968b005afd75be6df1a442b020deebe850386f" + "sha256": "abe7f7d60c0025e140373fadaefbed4063f285c140c74b9c7cfb464e354bb526" } ], "missing_artifacts": [], diff --git a/reports/benchmark_reproducibility.md b/reports/benchmark_reproducibility.md index 4d246f3a..ddd8a7ce 100644 --- a/reports/benchmark_reproducibility.md +++ b/reports/benchmark_reproducibility.md @@ -1,19 +1,19 @@ # Benchmark Reproducibility Generated at: `2026-06-17` -Commit: `d5beede0a62dab0f0780be283a274ed8a5be9dc4` -Working tree dirty at generation: `false` -Evidence bundle SHA256: `5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0` +Commit: `5e2163683a483b9b0b0180219994495fc84eb272` +Working tree dirty at generation: `true` +Evidence bundle SHA256: `bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199` ## Summary - reproducibility ready: `true` -- release lock ready: `true` +- release lock ready: `false` - methodology complete: `true` - required artifacts: `25` - missing artifacts: `0` -- source contract sha256: `712f00ca2202` -- archive sha256: `69ad979695a4` +- source contract sha256: `58b8388686e4` +- archive sha256: `29c3154e8793` - output cases: `5` - disclosed failure cases: `3` - reproduction commands: `23` @@ -22,8 +22,8 @@ Evidence bundle SHA256: `5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62 - world-class ready: `false` - world-class source checks: `7` pass / `13` total; `6` blocked - public claim ready: `false` -- public claim blockers: `4` -- changed files at generation: `0` +- public claim blockers: `5` +- changed files at generation: `56` This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete. The git commit is generation-time context; the evidence bundle SHA is the durable anchor for the artifacts listed below. @@ -35,6 +35,7 @@ This report proves local benchmark reproducibility only. It keeps external provi | Blocker | | --- | +| release lock is not clean or commit is unavailable | | provider-backed model holdout evidence is incomplete | | human blind-review adjudication is incomplete | | world-class evidence is not accepted yet (4 open gaps, 4 ledger pending) | @@ -42,15 +43,15 @@ This report proves local benchmark reproducibility only. It keeps external provi ## Release Lock -- ready: `true` -- reason: clean generation-time HEAD +- ready: `false` +- reason: working tree was dirty at generation time - status scope: generation-time status before this report is written ## Evidence Bundle - algorithm: `sha256(path,label,exists,artifact_sha256)` - artifacts: `25` / `25` -- sha256: `5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0` +- sha256: `bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199` ## Methodology Sections @@ -72,26 +73,26 @@ This report proves local benchmark reproducibility only. It keeps external provi | output_cases | `evals/output/cases.jsonl` | present | `a6ae96857116` | | output_schema | `evals/output/schema.json` | present | `8ee340c95064` | | output_scorecard | `reports/output_quality_scorecard.json` | present | `0806258a8e08` | -| output_execution | `reports/output_execution_runs.json` | present | `c0a5988ee9af` | +| output_execution | `reports/output_execution_runs.json` | present | `d1036355cee8` | | blind_review | `reports/output_blind_review_pack.json` | present | `bbe2db8ec277` | | review_adjudication | `reports/output_review_adjudication.json` | present | `bb8c72a9291e` | | trigger_scorecard | `reports/route_scorecard.json` | present | `c164e83e36d0` | | runtime_conformance | `reports/conformance_matrix.json` | present | `97f9ba949c23` | -| trust_report | `reports/security_trust_report.json` | present | `e0e8b047f580` | -| python_compatibility | `reports/python_compatibility.json` | present | `c3fb22a90519` | -| registry_audit | `reports/registry_audit.json` | present | `01100afaf317` | -| package_verification | `reports/package_verification.json` | present | `6dde3b877e00` | -| install_simulation | `reports/install_simulation.json` | present | `7177ae392187` | -| skill_os2_audit | `reports/skill_os2_audit.json` | present | `867273823e82` | -| world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `af3c3f101ad9` | -| world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `74deeabfac9f` | -| world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `69afd0ff3d49` | +| trust_report | `reports/security_trust_report.json` | present | `17d57bf1beb0` | +| python_compatibility | `reports/python_compatibility.json` | present | `716f45549526` | +| registry_audit | `reports/registry_audit.json` | present | `c4ee2793af91` | +| package_verification | `reports/package_verification.json` | present | `3c74f6dff362` | +| install_simulation | `reports/install_simulation.json` | present | `7037d27d066b` | +| skill_os2_audit | `reports/skill_os2_audit.json` | present | `50c342745937` | +| world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `9b74155fb9bf` | +| world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `f6e1a69b0359` | +| world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `46f801051ec0` | | world_class_evidence_preflight | `reports/world_class_evidence_preflight.json` | present | `b7fd72d7e754` | -| world_class_submission_review | `reports/world_class_submission_review.json` | present | `17def7ba6982` | -| world_class_operator_runbook | `reports/world_class_operator_runbook.json` | present | `00bfa998b24a` | -| world_class_operator_runbook_markdown | `reports/world_class_operator_runbook.md` | present | `337fb764b98a` | +| world_class_submission_review | `reports/world_class_submission_review.json` | present | `9fbd4cd43798` | +| world_class_operator_runbook | `reports/world_class_operator_runbook.json` | present | `2d32a2e917b7` | +| world_class_operator_runbook_markdown | `reports/world_class_operator_runbook.md` | present | `00d8ebabb91e` | | world_class_operator_runbook_html | `reports/world_class_operator_runbook.html` | present | `ca72c65b437b` | -| world_class_claim_guard | `reports/world_class_claim_guard.json` | present | `c846ffc8565a` | +| world_class_claim_guard | `reports/world_class_claim_guard.json` | present | `abe7f7d60c00` | ## Reproduction Commands diff --git a/reports/compiled_targets.json b/reports/compiled_targets.json index 2fe3a659..a9515b2d 100644 --- a/reports/compiled_targets.json +++ b/reports/compiled_targets.json @@ -239,6 +239,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -350,7 +351,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -622,7 +623,7 @@ "strategy": "Ship the neutral source tree and expose OpenAI-facing interface metadata as a generated companion file.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -633,7 +634,7 @@ }, "scripts": { "strategy": "Keep scripts as local package resources; expose help-smoke and permission metadata for reviewer approval before execution.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -877,7 +878,7 @@ "strategy": "Ship the neutral source tree and expose OpenAI-facing interface metadata as a generated companion file.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -888,7 +889,7 @@ }, "scripts": { "strategy": "Keep scripts as local package resources; expose help-smoke and permission metadata for reviewer approval before execution.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -1184,6 +1185,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -1295,7 +1297,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -1567,7 +1569,7 @@ "strategy": "Preserve the source tree directly; write target notes in targets/claude/README.md.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -1578,7 +1580,7 @@ }, "scripts": { "strategy": "Scripts remain local package resources and must be reviewed through trust and permission reports before use.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -1822,7 +1824,7 @@ "strategy": "Preserve the source tree directly; write target notes in targets/claude/README.md.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -1833,7 +1835,7 @@ }, "scripts": { "strategy": "Scripts remain local package resources and must be reviewed through trust and permission reports before use.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -2129,6 +2131,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -2240,7 +2243,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -2512,7 +2515,7 @@ "strategy": "Preserve references, scripts, assets, evals, reports, and adapter metadata as relative package resources.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -2522,7 +2525,7 @@ }, "scripts": { "strategy": "Expose script and permission metadata for downstream clients or installers to enforce.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -2760,7 +2763,7 @@ "strategy": "Preserve references, scripts, assets, evals, reports, and adapter metadata as relative package resources.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -2770,7 +2773,7 @@ }, "scripts": { "strategy": "Expose script and permission metadata for downstream clients or installers to enforce.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -3058,6 +3061,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -3169,7 +3173,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -3441,7 +3445,7 @@ "strategy": "Keep optional directories as relative resources next to SKILL.md.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -3452,7 +3456,7 @@ }, "scripts": { "strategy": "Scripts remain local optional resources and should advertise --help when executable.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -3689,7 +3693,7 @@ "strategy": "Keep optional directories as relative resources next to SKILL.md.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -3700,7 +3704,7 @@ }, "scripts": { "strategy": "Scripts remain local optional resources and should advertise --help when executable.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -3987,6 +3991,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -4098,7 +4103,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -4370,7 +4375,7 @@ "strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -4381,7 +4386,7 @@ }, "scripts": { "strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -4622,7 +4627,7 @@ "strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -4633,7 +4638,7 @@ }, "scripts": { "strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { diff --git a/reports/context_budget.json b/reports/context_budget.json index d5dcc52c..31c0ff68 100644 --- a/reports/context_budget.json +++ b/reports/context_budget.json @@ -6,16 +6,16 @@ "context_budget_tier": "production", "context_budget_limit": 1000, "skill_body_tokens": 797, - "other_text_tokens": 1083265, + "other_text_tokens": 1083735, "estimated_initial_load_tokens": 990, - "estimated_total_text_tokens": 1084062, - "deferred_resource_tokens": 496411, + "estimated_total_text_tokens": 1084532, + "deferred_resource_tokens": 496603, "deferred_resource_warn_threshold": 120000, "deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 435517, - "file_count": 145 + "estimated_tokens": 435709, + "file_count": 146 }, { "path": "references", @@ -36,8 +36,8 @@ "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 435517, - "file_count": 145 + "estimated_tokens": 435709, + "file_count": 146 } ], "deferred_resource_governance": { @@ -59,14 +59,14 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 435517, - "file_count": 145, + "estimated_tokens": 435709, + "file_count": 146, "rationale": "Script resources are deterministic deferred tools, not initial-load prompt context." } ], "summary": "Large deferred resources are indexed and backed by evidence." }, - "relevant_file_count": 692, + "relevant_file_count": 694, "unused_resource_dirs": [], "quality_signal_points": 130, "quality_density": 131.3 diff --git a/reports/context_budget.md b/reports/context_budget.md index e79b6a89..c16e9cb5 100644 --- a/reports/context_budget.md +++ b/reports/context_budget.md @@ -2,7 +2,7 @@ | Target | Path | Tier | Limit | Initial | SKILL | Deferred | Resource Governance | Large Deferred Dirs | Quality Density | Unused Dirs | Status | | --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | ---: | --- | --- | -| root | `.` | `production` | 1000 | 990 | 797 | 496411 | `governed` | scripts:435517 | 131.3 | - | ok | +| root | `.` | `production` | 1000 | 990 | 797 | 496603 | `governed` | scripts:435709 | 131.3 | - | ok | | complex-release-orchestrator | `examples/complex-release-orchestrator/generated-skill` | `production` | 1000 | 790 | 718 | 1657 | `not-required` | - | 164.6 | - | ok | | governed-incident-command | `examples/governed-incident-command/generated-skill` | `production` | 1000 | 760 | 658 | 1030 | `not-required` | - | 171.1 | - | ok | diff --git a/reports/context_budget_summary.json b/reports/context_budget_summary.json index db88dcff..25bdb24d 100644 --- a/reports/context_budget_summary.json +++ b/reports/context_budget_summary.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-06-17", + "generated_at": "2026-03-31", "targets": [ { "label": "root", @@ -8,12 +8,12 @@ "budget_limit": 1000, "initial_tokens": 990, "skill_body_tokens": 797, - "deferred_resource_tokens": 496411, + "deferred_resource_tokens": 496603, "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 435517, - "file_count": 145 + "estimated_tokens": 435709, + "file_count": 146 } ], "deferred_resource_governance": { @@ -35,8 +35,8 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 435517, - "file_count": 145, + "estimated_tokens": 435709, + "file_count": 146, "rationale": "Script resources are deterministic deferred tools, not initial-load prompt context." } ], diff --git a/reports/evidence_consistency.json b/reports/evidence_consistency.json index 675ae462..a9df577c 100644 --- a/reports/evidence_consistency.json +++ b/reports/evidence_consistency.json @@ -189,12 +189,12 @@ "status": "pass", "expected": { "status": "pass", - "detail": "initial load 990/1000; deferred 496411/120000; top deferred scripts 435517; resource governance governed; quality density 131.3", + "detail": "initial load 990/1000; deferred 496603/120000; top deferred scripts 435709; resource governance governed; quality density 131.3", "evidence": "reports/context_budget.json" }, "actual": { "status": "pass", - "detail": "initial load 990/1000; deferred 496411/120000; top deferred scripts 435517; resource governance governed; quality density 131.3", + "detail": "initial load 990/1000; deferred 496603/120000; top deferred scripts 435709; resource governance governed; quality density 131.3", "evidence": "reports/context_budget.json" }, "paths": [ @@ -222,7 +222,7 @@ "actual": { "available": true, "clean": false, - "changed_file_count": 11 + "changed_file_count": 47 }, "paths": [ "reports/benchmark_reproducibility.json" @@ -1525,7 +1525,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -1540,7 +1540,7 @@ "file_count": 235 } ], - "file_count": 448, + "file_count": 449, "folder_count": 4, "distribution": [ { @@ -1565,7 +1565,7 @@ }, { "label": "scripts", - "value": 145 + "value": 146 }, { "label": "evals", @@ -1613,7 +1613,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -1628,7 +1628,7 @@ "file_count": 235 } ], - "file_count": 448, + "file_count": 449, "folder_count": 4, "distribution": [ { @@ -1653,7 +1653,7 @@ }, { "label": "scripts", - "value": 145 + "value": 146 }, { "label": "evals", @@ -2417,10 +2417,10 @@ "score `91`", "`16` gates", "`3` warnings", - "`59` declared internal modules", - "`86 / 86` CLI help smoke checks passing across `145` scripts", - "`683` zip entries", - "archive with `683` entries", + "`60` declared internal modules", + "`86 / 86` CLI help smoke checks passing across `146` scripts", + "`684` zip entries", + "archive with `684` entries", "`12` installer permission checks enforced", "`0` permission failures", "`25` required artifacts", diff --git a/reports/install_simulation.json b/reports/install_simulation.json index 729ac02a..0729146f 100644 --- a/reports/install_simulation.json +++ b/reports/install_simulation.json @@ -8,7 +8,7 @@ "installed_skill_dir": "tests/tmp_review_studio/install-root/simulate-yao-meta-skill/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 683, + "archive_entry_count": 684, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, diff --git a/reports/output_execution_runs.json b/reports/output_execution_runs.json index 6d9748f4..65beb64d 100644 --- a/reports/output_execution_runs.json +++ b/reports/output_execution_runs.json @@ -34,7 +34,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.94, + "duration_ms": 29.88, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -62,7 +62,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.02, + "duration_ms": 29.59, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -85,7 +85,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.44, + "duration_ms": 29.33, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -113,7 +113,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.01, + "duration_ms": 27.41, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -136,7 +136,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.44, + "duration_ms": 28.83, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -164,7 +164,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.58, + "duration_ms": 28.11, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -187,7 +187,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 27.57, + "duration_ms": 28.25, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -214,7 +214,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.2, + "duration_ms": 27.39, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -237,7 +237,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 31.31, + "duration_ms": 38.16, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -266,7 +266,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.79, + "duration_ms": 28.81, "provider": "local-output-eval-runner", "model": "", "usage": { diff --git a/reports/output_execution_runs.md b/reports/output_execution_runs.md index 9d52e67e..c9bdfdaa 100644 --- a/reports/output_execution_runs.md +++ b/reports/output_execution_runs.md @@ -23,16 +23,16 @@ Command runner evidence is present. This proves the eval harness executed an ext | Case | Variant | Mode | Model | Duration ms | Tokens | Score | Status | | --- | --- | --- | --- | ---: | ---: | ---: | --- | -| skill-package-contract | baseline | command | local-output-eval-runner | 28.94 | 33 | 0.0 | pass | -| skill-package-contract | with_skill | command | local-output-eval-runner | 29.02 | 73 | 100.0 | pass | -| output-eval-expectation | baseline | command | local-output-eval-runner | 28.44 | 36 | 0.0 | pass | -| output-eval-expectation | with_skill | command | local-output-eval-runner | 29.01 | 80 | 100.0 | pass | -| ir-before-packaging | baseline | command | local-output-eval-runner | 28.44 | 33 | 0.0 | pass | -| ir-before-packaging | with_skill | command | local-output-eval-runner | 28.58 | 80 | 100.0 | pass | -| near-neighbor-boundary | baseline | command | local-output-eval-runner | 27.57 | 36 | 0.0 | pass | -| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 30.2 | 65 | 100.0 | pass | -| file-backed-governed-package | baseline | command | local-output-eval-runner | 31.31 | 37 | 0.0 | pass | -| file-backed-governed-package | with_skill | command | local-output-eval-runner | 29.79 | 98 | 100.0 | pass | +| skill-package-contract | baseline | command | local-output-eval-runner | 29.88 | 33 | 0.0 | pass | +| skill-package-contract | with_skill | command | local-output-eval-runner | 29.59 | 73 | 100.0 | pass | +| output-eval-expectation | baseline | command | local-output-eval-runner | 29.33 | 36 | 0.0 | pass | +| output-eval-expectation | with_skill | command | local-output-eval-runner | 27.41 | 80 | 100.0 | pass | +| ir-before-packaging | baseline | command | local-output-eval-runner | 28.83 | 33 | 0.0 | pass | +| ir-before-packaging | with_skill | command | local-output-eval-runner | 28.11 | 80 | 100.0 | pass | +| near-neighbor-boundary | baseline | command | local-output-eval-runner | 28.25 | 36 | 0.0 | pass | +| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 27.39 | 65 | 100.0 | pass | +| file-backed-governed-package | baseline | command | local-output-eval-runner | 38.16 | 37 | 0.0 | pass | +| file-backed-governed-package | with_skill | command | local-output-eval-runner | 28.81 | 98 | 100.0 | pass | ## Next Fixes diff --git a/reports/package_verification.json b/reports/package_verification.json index 11979101..e8967405 100644 --- a/reports/package_verification.json +++ b/reports/package_verification.json @@ -8,8 +8,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", - "archive_entry_count": 683, + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", + "archive_entry_count": 684, "failure_count": 0, "warning_count": 0 }, diff --git a/reports/package_verification.md b/reports/package_verification.md index c9662ad1..4e21d93d 100644 --- a/reports/package_verification.md +++ b/reports/package_verification.md @@ -4,7 +4,7 @@ - Package directory: `dist` - Targets: `4 / 4` adapters present - Archive present: `True` -- Archive SHA256: `69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f` +- Archive SHA256: `29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b` - Failures: `0` - Warnings: `0` diff --git a/reports/python_compatibility.json b/reports/python_compatibility.json index 1c08644a..6d7e8a59 100644 --- a/reports/python_compatibility.json +++ b/reports/python_compatibility.json @@ -5,7 +5,7 @@ "root": ".", "summary": { "target_python": "3.11", - "file_count": 223, + "file_count": 224, "issue_count": 0, "syntax_error_count": 0, "fstring_311_violation_count": 0, @@ -580,6 +580,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "scripts/review_studio_gate_helpers.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "scripts/review_studio_gates.py", "ok": true, diff --git a/reports/python_compatibility.md b/reports/python_compatibility.md index 2e3aa10e..76f0777f 100644 --- a/reports/python_compatibility.md +++ b/reports/python_compatibility.md @@ -6,7 +6,7 @@ Generated at: `2026-06-13` - decision: `pass` - target python: `3.11` -- files scanned: `223` +- files scanned: `224` - issues: `0` - syntax errors: `0` - f-string 3.11 violations: `0` diff --git a/reports/registry_audit.json b/reports/registry_audit.json index e06333d3..fb07ec54 100644 --- a/reports/registry_audit.json +++ b/reports/registry_audit.json @@ -21,8 +21,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f" + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b" }, "compatibility": { "openai": "pass", @@ -53,7 +53,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -78,7 +78,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] }, diff --git a/reports/registry_audit.md b/reports/registry_audit.md index 3b1a7d14..6277e991 100644 --- a/reports/registry_audit.md +++ b/reports/registry_audit.md @@ -6,8 +6,8 @@ - Maturity: `governed` - Owner: `Yao Team` - License: `MIT` -- Package SHA256: `712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc` -- Archive SHA256: `69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f` +- Package SHA256: `58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652` +- Archive SHA256: `29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b` - Install simulated: `True` ## Compatibility diff --git a/reports/review-studio.html b/reports/review-studio.html index 2286b1bc..3dc121e3 100644 --- a/reports/review-studio.html +++ b/reports/review-studio.html @@ -740,12 +740,12 @@

核心指标

-
Skill IR2.0.0

5 targets in platform-neutral contract

Compiler5/5

target contracts compiled from Skill IR

Output Delta100.0

5 cases; 1 file-backed

Exec Runs10

command 10; model 0; recorded 0

Blind A/B5

review pairs hide baseline vs with-skill labels

Review Kit0/5

pending 5; answer key hidden

Review A/B0/5

adjudication decisions; pending 5

Public Claimblocked

4 blockers; local reproducible true

Blueprint21/21

2.0 coverage; extensions partial 0, planned 0; evidence pending 4

Runtime5/5

target conformance pass rate

Perm Probe4/4

0 native; 4 installer-enforced

Trust0

145 scripts scanned; secrets found

Py Compat0

223 files scanned for Python 3.11

Arch Debt0

696 largest lines; 0 watchlist; 4 early; 68 CLI handlers; 18 in entrypoint

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Daily Ops5

proposal-review; approval 0; release lock true

Weekly Queue5

curator-review; ready 1; top score 88

Waivers0

0 gates covered; human risk decisions

Intake4/4

0 valid submissions; 0 invalid

Claim Guard0

182 public surfaces scanned

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

683 zip entries; package verification

Installpass

4 adapters; 12 permissions enforced; 0 permission failures

Upgrademinor

declared minor; 0 breaking changes

+
Skill IR2.0.0

5 targets in platform-neutral contract

Compiler5/5

target contracts compiled from Skill IR

Output Delta100.0

5 cases; 1 file-backed

Exec Runs10

command 10; model 0; recorded 0

Blind A/B5

review pairs hide baseline vs with-skill labels

Review Kit0/5

pending 5; answer key hidden

Review A/B0/5

adjudication decisions; pending 5

Public Claimblocked

5 blockers; local reproducible true

Blueprint21/21

2.0 coverage; extensions partial 0, planned 0; evidence pending 4

Runtime5/5

target conformance pass rate

Perm Probe4/4

0 native; 4 installer-enforced

Trust0

146 scripts scanned; secrets found

Py Compat0

224 files scanned for Python 3.11

Arch Debt0

696 largest lines; 0 watchlist; 3 early; 68 CLI handlers; 18 in entrypoint

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Daily Ops5

proposal-review; approval 0; release lock true

Weekly Queue5

curator-review; ready 1; top score 88

Waivers0

0 gates covered; human risk decisions

Intake4/4

0 valid submissions; 0 invalid

Claim Guard0

182 public surfaces scanned

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

684 zip entries; package verification

Installpass

4 adapters; 12 permissions enforced; 0 permission failures

Upgrademinor

declared minor; 0 breaking changes

审查闸门

-
通过

意图画布

intent confidence 100/100; Intent is clear enough to package the first routeable version.

reports/intent-confidence.json 证据
通过

触发实验

13 trigger cases; 0 misroutes; 0 ambiguous

reports/route_scorecard.json 证据
关注

输出实验

5/5 cases; with-skill 100.0; baseline 0.0; file-backed 1; near-neighbor 1; blind A/B 5; exec 10; command 10; model 0; recorded 0; reviewed 0/5; review pending 5

reports/output_quality_scorecard.json 证据
通过

上下文

initial load 990/1000; deferred 496411/120000; top deferred scripts 435517; resource governance governed; quality density 131.3

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

0 secrets; 145 scripts; 3 network-capable scripts; 0 help smoke failures

reports/security_trust_report.json 证据
通过

Python 兼容

Python 3.11; 223 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards

reports/python_compatibility.json 证据
通过

架构维护

220 Python files; 0 hotspots; 0 watchlist files; 4 early watch files; 0 blockers; largest 696 lines; 68 CLI handlers; 18 in entrypoint

reports/architecture_maintainability.json 证据
通过

权限批准

3/3 permissions approved; gaps 0; required file_write, network, subprocess

reports/security_trust_report.json + security/permission_policy.json 证据
通过

权限探针

4/4 targets probed; native 0; metadata fallback 4; installer 4; residual risks 4

reports/runtime_permission_probes.json 证据
通过

组合治理

12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues

reports/skill_atlas.json 证据
通过

运营回路

1 metadata events; adoption 100.0; missed 0; bad-output 0; risk low; daily proposals 5; daily decision proposal-review; daily release lock true; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock true

reports/adoption_drift_report.json + reports/skillops/daily + reports/skillops/weekly 证据
关注

人工批准

0 active waivers; 1 warning gates still need reviewer decision

reports/review_waivers.json 证据
关注

世界证据

4 pending world-class evidence entries; 1 human pending; 3 external pending; source checks 7/13 pass; 6 blocked; overclaim guard true

reports/world_class_evidence_ledger.json 证据
通过

注册审计

yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures

reports/registry_audit.json + reports/install_simulation.json 证据
通过

发布路线

0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended

reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md 证据
+
通过

意图画布

intent confidence 100/100; Intent is clear enough to package the first routeable version.

reports/intent-confidence.json 证据
通过

触发实验

13 trigger cases; 0 misroutes; 0 ambiguous

reports/route_scorecard.json 证据
关注

输出实验

5/5 cases; with-skill 100.0; baseline 0.0; file-backed 1; near-neighbor 1; blind A/B 5; exec 10; command 10; model 0; recorded 0; reviewed 0/5; review pending 5

reports/output_quality_scorecard.json 证据
通过

上下文

initial load 990/1000; deferred 496603/120000; top deferred scripts 435709; resource governance governed; quality density 131.3

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

0 secrets; 146 scripts; 3 network-capable scripts; 0 help smoke failures

reports/security_trust_report.json 证据
通过

Python 兼容

Python 3.11; 224 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards

reports/python_compatibility.json 证据
通过

架构维护

221 Python files; 0 hotspots; 0 watchlist files; 3 early watch files; 0 blockers; largest 696 lines; 68 CLI handlers; 18 in entrypoint

reports/architecture_maintainability.json 证据
通过

权限批准

3/3 permissions approved; gaps 0; required file_write, network, subprocess

reports/security_trust_report.json + security/permission_policy.json 证据
通过

权限探针

4/4 targets probed; native 0; metadata fallback 4; installer 4; residual risks 4

reports/runtime_permission_probes.json 证据
通过

组合治理

12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues

reports/skill_atlas.json 证据
通过

运营回路

1 metadata events; adoption 100.0; missed 0; bad-output 0; risk low; daily proposals 5; daily decision proposal-review; daily release lock true; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock true

reports/adoption_drift_report.json + reports/skillops/daily + reports/skillops/weekly 证据
关注

人工批准

0 active waivers; 1 warning gates still need reviewer decision

reports/review_waivers.json 证据
关注

世界证据

4 pending world-class evidence entries; 1 human pending; 3 external pending; source checks 7/13 pass; 6 blocked; overclaim guard true

reports/world_class_evidence_ledger.json 证据
通过

注册审计

yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures

reports/registry_audit.json + reports/install_simulation.json 证据
通过

发布路线

0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended

@@ -812,17 +812,17 @@
-

上下文

initial load 990/1000; deferred 496411/120000; top deferred scripts 435517; resource governance governed; quality density 131.3

+

上下文

initial load 990/1000; deferred 496603/120000; top deferred scripts 435709; resource governance governed; quality density 131.3

编译证据

Review reports/compiled_targets.md before packaging to inspect target adapter modes, generated files, preserved semantics, warnings, and unsupported features.

-

信任报告

Secret
0
脚本数
145
网络脚本
3
Help 失败
0
包体哈希
712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc
+

信任报告

Secret
0
脚本数
146
网络脚本
3
Help 失败
0
包体哈希
58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652

安全边界

高风险 secret、远程 inline execution、缺失依赖策略或无法解释的脚本接口应阻断 governed release。

-

Python 兼容

目标 Python
3.11
文件数
223
问题数
0
语法错误
0
F-string 3.11
0
+

Python 兼容

目标 Python
3.11
文件数
224
问题数
0
语法错误
0
F-string 3.11
0

解释器边界

CI 和发布审查以 Python 3.11 兼容为底线;本地更高版本允许的新语法不能绕过兼容门禁。

@@ -882,8 +882,8 @@
-

公开声明

本地复现
发布锁
可公开声明
声明阻断
4
Provider 证据
人审完成
世界级就绪
-

声明阻断

+

公开声明

本地复现
发布锁
可公开声明
声明阻断
5
Provider 证据
人审完成
世界级就绪
+

声明阻断

@@ -908,7 +908,7 @@

发布路线

0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended

-

包体验证

目标数
4
Adapter
4
归档存在
Zip 条目
683
失败数
0
警告数
0
归档哈希
69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f
+

包体验证

目标数
4
Adapter
4
归档存在
Zip 条目
684
失败数
0
警告数
0
归档哈希
29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b
diff --git a/reports/review-studio.json b/reports/review-studio.json index 7d77c744..d7d49818 100644 --- a/reports/review-studio.json +++ b/reports/review-studio.json @@ -44,7 +44,7 @@ "key": "context-budget", "label": "上下文", "status": "pass", - "detail": "initial load 990/1000; deferred 496411/120000; top deferred scripts 435517; resource governance governed; quality density 131.3", + "detail": "initial load 990/1000; deferred 496603/120000; top deferred scripts 435709; resource governance governed; quality density 131.3", "evidence": "reports/context_budget.json", "link": "context_budget.md" }, @@ -60,7 +60,7 @@ "key": "trust-report", "label": "信任报告", "status": "pass", - "detail": "0 secrets; 145 scripts; 3 network-capable scripts; 0 help smoke failures", + "detail": "0 secrets; 146 scripts; 3 network-capable scripts; 0 help smoke failures", "evidence": "reports/security_trust_report.json", "link": "security_trust_report.md" }, @@ -68,7 +68,7 @@ "key": "python-compat", "label": "Python 兼容", "status": "pass", - "detail": "Python 3.11; 223 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards", + "detail": "Python 3.11; 224 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards", "evidence": "reports/python_compatibility.json", "link": "python_compatibility.md" }, @@ -76,7 +76,7 @@ "key": "architecture-maintainability", "label": "架构维护", "status": "pass", - "detail": "220 Python files; 0 hotspots; 0 watchlist files; 4 early watch files; 0 blockers; largest 696 lines; 68 CLI handlers; 18 in entrypoint", + "detail": "221 Python files; 0 hotspots; 0 watchlist files; 3 early watch files; 0 blockers; largest 696 lines; 68 CLI handlers; 18 in entrypoint", "evidence": "reports/architecture_maintainability.json", "link": "architecture_maintainability.md" }, @@ -1475,7 +1475,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -1490,7 +1490,7 @@ "file_count": 235 } ], - "file_count": 448, + "file_count": 449, "folder_count": 4, "distribution": [ { @@ -1515,7 +1515,7 @@ }, { "label": "scripts", - "value": 145 + "value": 146 }, { "label": "evals", @@ -1645,7 +1645,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -1959,13 +1959,13 @@ "ok": true, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0", - "source_contract_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", + "evidence_bundle_sha256": "bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199", + "source_contract_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1983,11 +1983,11 @@ "world_class_source_pass_count": 7, "world_class_source_blocked_count": 6, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 56 }, - "commit": "d5beede0a62dab0f0780be283a274ed8a5be9dc4", + "commit": "5e2163683a483b9b0b0180219994495fc84eb272", "missing_artifacts": [], "limitations": [ "The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.", @@ -2071,9 +2071,9 @@ "failures": [] }, "trust_security": { - "scanned_files": 237, - "script_count": 145, - "internal_module_count": 59, + "scanned_files": 238, + "script_count": 146, + "internal_module_count": 60, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -2091,8 +2091,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 237, - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_hash_file_count": 238, + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" }, "skill_atlas": { "skill_count": 12, @@ -2130,7 +2130,7 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f" }, "compatibility": { @@ -2167,7 +2167,7 @@ "install_simulated": true, "install_simulation": "reports/install_simulation.json" }, - "generated_at": "2026-06-13" + "generated_at": "2026-06-17" }, "failures": [], "warnings": [] @@ -2178,8 +2178,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", - "archive_entry_count": 683, + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", + "archive_entry_count": 684, "failure_count": 0, "warning_count": 0 }, @@ -2190,7 +2190,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 683, + "archive_entry_count": 684, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -2262,7 +2262,7 @@ { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "to": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] }, @@ -4692,7 +4692,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.94, + "duration_ms": 29.88, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4720,7 +4720,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.02, + "duration_ms": 29.59, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4743,7 +4743,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.44, + "duration_ms": 29.33, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4771,7 +4771,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.01, + "duration_ms": 27.41, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4794,7 +4794,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.44, + "duration_ms": 28.83, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4822,7 +4822,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.58, + "duration_ms": 28.11, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4845,7 +4845,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 27.57, + "duration_ms": 28.25, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4872,7 +4872,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.2, + "duration_ms": 27.39, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4895,7 +4895,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 31.31, + "duration_ms": 38.16, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4924,7 +4924,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.79, + "duration_ms": 28.81, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -5650,23 +5650,36 @@ "ok": true, "generated_at": "2026-06-17", "skill_dir": ".", - "commit": "d5beede0a62dab0f0780be283a274ed8a5be9dc4", + "commit": "5e2163683a483b9b0b0180219994495fc84eb272", "git_status": { "available": true, - "dirty": false, - "changed_file_count": 0, - "sample": [], + "dirty": true, + "changed_file_count": 56, + "sample": [ + " M registry/index.json", + " M registry/packages/yao-meta-skill.json", + " M reports/adoption_drift_report.json", + " M reports/architecture_maintainability.json", + " M reports/architecture_maintainability.md", + " M reports/compiled_targets.json", + " M reports/context_budget.json", + " M reports/context_budget.md", + " M reports/context_budget_summary.json", + " M reports/evidence_consistency.json", + " M reports/install_simulation.json", + " M reports/install_simulation.md" + ], "scope": "generation-time status before this report is written" }, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0", - "source_contract_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", + "evidence_bundle_sha256": "bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199", + "source_contract_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -5684,14 +5697,15 @@ "world_class_source_pass_count": 7, "world_class_source_blocked_count": 6, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 56 }, "public_claim": { "ready": false, "scope": "public benchmark or world-class readiness claim", "blockers": [ + "release lock is not clean or commit is unavailable", "provider-backed model holdout evidence is incomplete", "human blind-review adjudication is incomplete", "world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)", @@ -5700,10 +5714,10 @@ "policy": "Local reproducibility can pass before public claims; public claims require provider evidence, human adjudication, clean release lock, accepted world-class evidence, and complete source checks." }, "release_lock": { - "ready": true, - "commit": "d5beede0a62dab0f0780be283a274ed8a5be9dc4", + "ready": false, + "commit": "5e2163683a483b9b0b0180219994495fc84eb272", "status_scope": "generation-time status before this report is written", - "reason": "clean generation-time HEAD" + "reason": "working tree was dirty at generation time" }, "evidence_bundle": { "algorithm": "sha256(path,label,exists,artifact_sha256)", @@ -5711,7 +5725,7 @@ "existing_count": 25, "missing_count": 0, "missing_paths": [], - "sha256": "5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0" + "sha256": "bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199" }, "methodology": { "path": "reports/benchmark_methodology.md", @@ -5784,8 +5798,8 @@ "label": "output_execution", "path": "reports/output_execution_runs.json", "exists": true, - "bytes": 7966, - "sha256": "c0a5988ee9aff029b8c56b0a090aa23fc4efe803bd960f722b5a9a9c15a5c78d" + "bytes": 7967, + "sha256": "d1036355cee863fa21a20cdd2da5b237b5d262f9ff79b3543f8f6aff579160b2" }, { "label": "blind_review", @@ -5819,64 +5833,64 @@ "label": "trust_report", "path": "reports/security_trust_report.json", "exists": true, - "bytes": 132641, - "sha256": "e0e8b047f580e5c8ff33580c49a99d3221919f52f6c5e3849976ed840a8618d9" + "bytes": 133262, + "sha256": "17d57bf1beb0dbe9b8859f56c4d7c301f43230d00262d96ae8f0f4a3894ea7a0" }, { "label": "python_compatibility", "path": "reports/python_compatibility.json", "exists": true, - "bytes": 28940, - "sha256": "c3fb22a905196a6d5242bde27f0b33f5233accacb478a80d1fd7a0582243e2bc" + "bytes": 29069, + "sha256": "716f4554952641019830e895191891dcd9841ce0488570c7a526c7d144adf058" }, { "label": "registry_audit", "path": "reports/registry_audit.json", "exists": true, "bytes": 3183, - "sha256": "01100afaf317ebcdef836070636905bb3e4d64412c8a8f14d8758db822eba33c" + "sha256": "c4ee2793af91f74987c71d0aad7be2a116ed691e7f50dbb11e2df4216309706c" }, { "label": "package_verification", "path": "reports/package_verification.json", "exists": true, "bytes": 19338, - "sha256": "6dde3b877e00b3e8936d0ffe1e45c77926639f5b21b0a4f30e779e6b4ffd4f57" + "sha256": "3c74f6dff362bf61112f7115ad06cb6ec6d94331256a60075757d611b2c1a926" }, { "label": "install_simulation", "path": "reports/install_simulation.json", "exists": true, - "bytes": 8758, - "sha256": "7177ae392187ac0af2ed071c31c758e6e3e4d63230bbbcbdfc1b35719d23b966" + "bytes": 8604, + "sha256": "7037d27d066b92d5652d8a2b0a1ec0e3d5fa698fd301db2aa4f7675304ab934d" }, { "label": "skill_os2_audit", "path": "reports/skill_os2_audit.json", "exists": true, "bytes": 14310, - "sha256": "867273823e8244ac65d44e69edb8c3d6c628b0f28f8a3bfdee612b802592654a" + "sha256": "50c34274593701e6aa5505524db7c54c3f6a40a085bbeefa9d7d29c1950ba274" }, { "label": "world_class_evidence_plan", "path": "reports/world_class_evidence_plan.json", "exists": true, "bytes": 20828, - "sha256": "af3c3f101ad992820bf36ddb14b02e7404ef16411567c483f86eed530ca45f62" + "sha256": "9b74155fb9bfe44ba838d64b1a31768b83978b154bdd8eaa606f494c816f189f" }, { "label": "world_class_evidence_ledger", "path": "reports/world_class_evidence_ledger.json", "exists": true, "bytes": 22285, - "sha256": "74deeabfac9f488a35cd816fdf8cd74a52fe73a82958770cbd7b41191a218814" + "sha256": "f6e1a69b0359c28c88e9e9e69ff66763c721ac8a112a43a673ce98cd9d3bce41" }, { "label": "world_class_evidence_intake", "path": "reports/world_class_evidence_intake.json", "exists": true, "bytes": 19319, - "sha256": "69afd0ff3d49ba9e1ea57248e41cfe62a0abfdf06fd0f997ed3008a5656c2566" + "sha256": "46f801051ec075725059e4e2682ef2162fd892b5e7255c8d5121d7b24dcc7f2c" }, { "label": "world_class_evidence_preflight", @@ -5890,21 +5904,21 @@ "path": "reports/world_class_submission_review.json", "exists": true, "bytes": 13655, - "sha256": "17def7ba6982d834e13ce3896dd9093019eec3ee8d2fa5b283ef8d6b17b19be0" + "sha256": "9fbd4cd437986fca9a043cbab24aec7d575aaf166a8d9365c79c56f093cab5b8" }, { "label": "world_class_operator_runbook", "path": "reports/world_class_operator_runbook.json", "exists": true, "bytes": 24835, - "sha256": "00bfa998b24a37cf3f0354d3956f1c722041d5cbada0f4357f27f7c2187d11f1" + "sha256": "2d32a2e917b7215afe7a7a93ca8bacffa540a245953aa39e2ee47eea1b169d17" }, { "label": "world_class_operator_runbook_markdown", "path": "reports/world_class_operator_runbook.md", "exists": true, "bytes": 15424, - "sha256": "337fb764b98ad2707f5a0d7bba88b9c5401256d7be00f8f3dc478e89e3bcb6c2" + "sha256": "00d8ebabb91e14a06cacdb212f448668aa1e47b72587448e30681fc53acaad9a" }, { "label": "world_class_operator_runbook_html", @@ -5918,7 +5932,7 @@ "path": "reports/world_class_claim_guard.json", "exists": true, "bytes": 18596, - "sha256": "c846ffc8565a40c270e711a58e968b005afd75be6df1a442b020deebe850386f" + "sha256": "abe7f7d60c0025e140373fadaefbed4063f285c140c74b9c7cfb464e354bb526" } ], "missing_artifacts": [], @@ -6187,7 +6201,7 @@ "label": "Trust Security", "status": "pass", "objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.", - "current": "145 scripts; secrets 0; help failures 0", + "current": "146 scripts; secrets 0; help failures 0", "command": "python3 scripts/yao.py trust .", "test": "python3 tests/verify_trust_check.py", "evidence": [ @@ -6261,7 +6275,7 @@ "label": "Registry Distribution", "status": "pass", "objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.", - "current": "archive entries 683; install failures 0", + "current": "archive entries 684; install failures 0", "command": "python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .", "test": "python3 tests/verify_registry_audit.py", "evidence": [ @@ -7107,6 +7121,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -7218,7 +7233,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -7490,7 +7505,7 @@ "strategy": "Ship the neutral source tree and expose OpenAI-facing interface metadata as a generated companion file.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -7501,7 +7516,7 @@ }, "scripts": { "strategy": "Keep scripts as local package resources; expose help-smoke and permission metadata for reviewer approval before execution.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -7745,7 +7760,7 @@ "strategy": "Ship the neutral source tree and expose OpenAI-facing interface metadata as a generated companion file.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -7756,7 +7771,7 @@ }, "scripts": { "strategy": "Keep scripts as local package resources; expose help-smoke and permission metadata for reviewer approval before execution.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -8052,6 +8067,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -8163,7 +8179,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -8435,7 +8451,7 @@ "strategy": "Preserve the source tree directly; write target notes in targets/claude/README.md.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -8446,7 +8462,7 @@ }, "scripts": { "strategy": "Scripts remain local package resources and must be reviewed through trust and permission reports before use.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -8690,7 +8706,7 @@ "strategy": "Preserve the source tree directly; write target notes in targets/claude/README.md.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -8701,7 +8717,7 @@ }, "scripts": { "strategy": "Scripts remain local package resources and must be reviewed through trust and permission reports before use.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -8997,6 +9013,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -9108,7 +9125,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -9380,7 +9397,7 @@ "strategy": "Preserve references, scripts, assets, evals, reports, and adapter metadata as relative package resources.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -9390,7 +9407,7 @@ }, "scripts": { "strategy": "Expose script and permission metadata for downstream clients or installers to enforce.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -9628,7 +9645,7 @@ "strategy": "Preserve references, scripts, assets, evals, reports, and adapter metadata as relative package resources.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -9638,7 +9655,7 @@ }, "scripts": { "strategy": "Expose script and permission metadata for downstream clients or installers to enforce.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -9926,6 +9943,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -10037,7 +10055,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -10309,7 +10327,7 @@ "strategy": "Keep optional directories as relative resources next to SKILL.md.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -10320,7 +10338,7 @@ }, "scripts": { "strategy": "Scripts remain local optional resources and should advertise --help when executable.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -10557,7 +10575,7 @@ "strategy": "Keep optional directories as relative resources next to SKILL.md.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -10568,7 +10586,7 @@ }, "scripts": { "strategy": "Scripts remain local optional resources and should advertise --help when executable.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -10855,6 +10873,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -10966,7 +10985,7 @@ ], "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 } @@ -11238,7 +11257,7 @@ "strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -11249,7 +11268,7 @@ }, "scripts": { "strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -11490,7 +11509,7 @@ "strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", "counts": { "references": 35, - "scripts": 145, + "scripts": 146, "assets": 6, "reports": 43 }, @@ -11501,7 +11520,7 @@ }, "scripts": { "strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", - "script_count": 145, + "script_count": 146, "help_smoke_failed_count": 0 }, "permissions": { @@ -12209,9 +12228,9 @@ "ok": true, "skill_dir": ".", "summary": { - "scanned_files": 237, - "script_count": 145, - "internal_module_count": 59, + "scanned_files": 238, + "script_count": 146, + "internal_module_count": 60, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -12229,8 +12248,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 237, - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_hash_file_count": 238, + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" }, "failures": [], "warnings": [], @@ -13513,6 +13532,20 @@ "network_urls": [], "network_hosts": [] }, + { + "path": "scripts/review_studio_gate_helpers.py", + "interface": "internal-module", + "interface_declared": true, + "interface_reason": "Imported by review_studio_gates.py to keep reusable Review Studio gate helpers out of the main gate sequence.", + "has_argparse": false, + "has_main_guard": false, + "uses_input": false, + "uses_network": false, + "uses_file_write": false, + "uses_subprocess": false, + "network_urls": [], + "network_hosts": [] + }, { "path": "scripts/review_studio_gates.py", "interface": "internal-module", @@ -14318,7 +14351,7 @@ "checked_count": 86, "passed_count": 86, "failed_count": 0, - "skipped_count": 59, + "skipped_count": 60, "failed_scripts": [], "results": [ { @@ -15259,6 +15292,10 @@ "path": "scripts/review_studio_gate_contract.py", "reason": "internal module" }, + { + "path": "scripts/review_studio_gate_helpers.py", + "reason": "internal module" + }, { "path": "scripts/review_studio_gates.py", "reason": "internal module" @@ -15611,11 +15648,11 @@ "python_compatibility": { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "root": ".", "summary": { "target_python": "3.11", - "file_count": 223, + "file_count": 224, "issue_count": 0, "syntax_error_count": 0, "fstring_311_violation_count": 0, @@ -16190,6 +16227,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "scripts/review_studio_gate_helpers.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "scripts/review_studio_gates.py", "ok": true, @@ -16980,13 +17023,13 @@ "architecture_maintainability": { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "skill_dir": ".", "summary": { - "python_file_count": 220, - "script_file_count": 145, + "python_file_count": 221, + "script_file_count": 146, "test_file_count": 75, - "internal_module_count": 61, + "internal_module_count": 62, "cli_script_count": 86, "command_handler_count": 68, "entrypoint_command_handler_count": 18, @@ -16997,7 +17040,7 @@ "block_line_threshold": 1500, "largest_file_lines": 696, "watchlist_count": 0, - "early_watchlist_count": 4, + "early_watchlist_count": 3, "hotspot_count": 0, "blocker_count": 0, "decision": "pass" @@ -17011,14 +17054,6 @@ "early_watch": true, "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." }, - { - "path": "scripts/review_studio_gates.py", - "lines": 646, - "kind": "internal-module", - "severity": "pass", - "early_watch": true, - "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." - }, { "path": "scripts/cross_packager.py", "lines": 638, @@ -17098,6 +17133,14 @@ "severity": "pass", "early_watch": false, "recommendation": "Move data loading and large section renderers into focused review_studio_* modules." + }, + { + "path": "tests/verify_world_class_evidence_ledger.py", + "lines": 567, + "kind": "test", + "severity": "pass", + "early_watch": false, + "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." } ], "watchlist": [], @@ -17110,14 +17153,6 @@ "early_watch": true, "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." }, - { - "path": "scripts/review_studio_gates.py", - "lines": 646, - "kind": "internal-module", - "severity": "pass", - "early_watch": true, - "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." - }, { "path": "scripts/cross_packager.py", "lines": 638, @@ -17150,16 +17185,16 @@ "context_budget_tier": "production", "context_budget_limit": 1000, "skill_body_tokens": 797, - "other_text_tokens": 1083265, + "other_text_tokens": 1083685, "estimated_initial_load_tokens": 990, - "estimated_total_text_tokens": 1084062, - "deferred_resource_tokens": 496411, + "estimated_total_text_tokens": 1084482, + "deferred_resource_tokens": 496603, "deferred_resource_warn_threshold": 120000, "deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 435517, - "file_count": 145 + "estimated_tokens": 435709, + "file_count": 146 }, { "path": "references", @@ -17180,8 +17215,8 @@ "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 435517, - "file_count": 145 + "estimated_tokens": 435709, + "file_count": 146 } ], "deferred_resource_governance": { @@ -17203,14 +17238,14 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 435517, - "file_count": 145, + "estimated_tokens": 435709, + "file_count": 146, "rationale": "Script resources are deterministic deferred tools, not initial-load prompt context." } ], "summary": "Large deferred resources are indexed and backed by evidence." }, - "relevant_file_count": 692, + "relevant_file_count": 694, "unused_resource_dirs": [], "quality_signal_points": 130, "quality_density": 131.3 @@ -18054,7 +18089,7 @@ }, "catalog": { "workspace_root": ".", - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "skills": [ { "name": "yao-meta-skill", @@ -18164,6 +18199,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", @@ -18953,7 +18989,7 @@ "name": "incident-command-governor", "path": "examples/governed-incident-command/generated-skill", "reason": "review overdue by cadence monthly", - "age_days": 74, + "age_days": 78, "allowed_days": 31, "actionable": false, "scope": "example" @@ -19121,7 +19157,7 @@ "adoption_drift": { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-16T17:29:39Z", + "generated_at": "2026-06-16T17:38:00Z", "skill_dir": ".", "privacy_contract": { "storage": "local-first", @@ -20582,7 +20618,7 @@ "world_class_evidence_ledger": { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "skill_dir": ".", "decision": "evidence-pending", "ready_to_claim_world_class": false, @@ -21108,7 +21144,7 @@ "world_class_evidence_intake": { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "skill_dir": ".", "summary": { "schema_present": true, @@ -22451,7 +22487,7 @@ "world_class_submission_review": { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "skill_dir": ".", "decision": "awaiting-submissions", "ready_to_claim_world_class": false, @@ -22817,7 +22853,7 @@ "world_class_operator_runbook": { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "skill_dir": ".", "summary": { "evidence_item_count": 4, @@ -23347,7 +23383,7 @@ "world_class_claim_guard": { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "skill_dir": ".", "summary": { "ledger_ready_to_claim_world_class": false, @@ -24150,7 +24186,7 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f" }, "compatibility": { @@ -24187,11 +24223,11 @@ "install_simulated": true, "install_simulation": "reports/install_simulation.json" }, - "generated_at": "2026-06-13" + "generated_at": "2026-06-17" }, "index": { "schema_version": "2.0", - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "package_count": 1, "packages": [ { @@ -24207,7 +24243,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] }, @@ -24230,8 +24266,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", - "archive_entry_count": 683, + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", + "archive_entry_count": 684, "failure_count": 0, "warning_count": 0 }, @@ -24889,14 +24925,14 @@ "install_simulation": { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "skill_dir": ".", - "package_dir": "tests/tmp_review_studio/dist", - "install_root": "tests/tmp_review_studio/install-root/simulate-yao-meta-skill", - "installed_skill_dir": "tests/tmp_review_studio/install-root/simulate-yao-meta-skill/yao-meta-skill", + "package_dir": "dist", + "install_root": "dist/install-simulation/simulate-yao-meta-skill", + "installed_skill_dir": "dist/install-simulation/simulate-yao-meta-skill/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 683, + "archive_entry_count": 684, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -24914,7 +24950,7 @@ { "id": "archive-present", "status": "pass", - "detail": "Package archive exists: tests/tmp_review_studio/dist/yao-meta-skill.zip" + "detail": "Package archive exists: dist/yao-meta-skill.zip" }, { "id": "archive-safe-paths", @@ -25160,16 +25196,16 @@ "failures": [], "warnings": [], "artifacts": { - "archive": "tests/tmp_review_studio/dist/yao-meta-skill.zip", - "package_manifest": "tests/tmp_review_studio/dist/manifest.json", - "json": "tests/tmp_review_studio/install_simulation.json", - "markdown": "tests/tmp_review_studio/install_simulation.md" + "archive": "dist/yao-meta-skill.zip", + "package_manifest": "dist/manifest.json", + "json": "reports/install_simulation.json", + "markdown": "reports/install_simulation.md" } }, "upgrade_check": { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-13", + "generated_at": "2026-06-17", "previous": { "name": "yao-meta-skill", "version": "1.0.0", @@ -25243,7 +25279,7 @@ { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "to": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] }, @@ -25258,8 +25294,8 @@ "artifacts": { "previous_package": "registry/examples/yao-meta-skill-1.0.0.json", "current_package": "reports/registry_audit.json", - "json": "tests/tmp_review_studio/upgrade_check.json", - "markdown": "tests/tmp_review_studio/upgrade_check.md" + "json": "reports/upgrade_check.json", + "markdown": "reports/upgrade_check.md" } }, "manifest": { diff --git a/reports/review-viewer.json b/reports/review-viewer.json index 51f200f4..40f71317 100644 --- a/reports/review-viewer.json +++ b/reports/review-viewer.json @@ -512,7 +512,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -527,7 +527,7 @@ "file_count": 235 } ], - "file_count": 448, + "file_count": 449, "folder_count": 4, "distribution": [ { @@ -552,7 +552,7 @@ }, { "label": "scripts", - "value": 145 + "value": 146 }, { "label": "evals", @@ -682,7 +682,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -996,13 +996,13 @@ "ok": true, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0", - "source_contract_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", + "evidence_bundle_sha256": "bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199", + "source_contract_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1020,11 +1020,11 @@ "world_class_source_pass_count": 7, "world_class_source_blocked_count": 6, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 56 }, - "commit": "d5beede0a62dab0f0780be283a274ed8a5be9dc4", + "commit": "5e2163683a483b9b0b0180219994495fc84eb272", "missing_artifacts": [], "limitations": [ "The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.", @@ -1108,9 +1108,9 @@ "failures": [] }, "trust_security": { - "scanned_files": 237, - "script_count": 145, - "internal_module_count": 59, + "scanned_files": 238, + "script_count": 146, + "internal_module_count": 60, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -1128,8 +1128,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 237, - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_hash_file_count": 238, + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" }, "skill_atlas": { "skill_count": 12, @@ -1167,7 +1167,7 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f" }, "compatibility": { @@ -1204,7 +1204,7 @@ "install_simulated": true, "install_simulation": "reports/install_simulation.json" }, - "generated_at": "2026-06-13" + "generated_at": "2026-06-17" }, "failures": [], "warnings": [] @@ -1215,8 +1215,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", - "archive_entry_count": 683, + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", + "archive_entry_count": 684, "failure_count": 0, "warning_count": 0 }, @@ -1227,7 +1227,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 683, + "archive_entry_count": 684, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1299,7 +1299,7 @@ { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "to": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] }, diff --git a/reports/security_trust_report.json b/reports/security_trust_report.json index 74b54249..340406ba 100644 --- a/reports/security_trust_report.json +++ b/reports/security_trust_report.json @@ -2,9 +2,9 @@ "ok": true, "skill_dir": ".", "summary": { - "scanned_files": 237, - "script_count": 145, - "internal_module_count": 59, + "scanned_files": 238, + "script_count": 146, + "internal_module_count": 60, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -22,8 +22,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 237, - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_hash_file_count": 238, + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" }, "failures": [], "warnings": [], @@ -1306,6 +1306,20 @@ "network_urls": [], "network_hosts": [] }, + { + "path": "scripts/review_studio_gate_helpers.py", + "interface": "internal-module", + "interface_declared": true, + "interface_reason": "Imported by review_studio_gates.py to keep reusable Review Studio gate helpers out of the main gate sequence.", + "has_argparse": false, + "has_main_guard": false, + "uses_input": false, + "uses_network": false, + "uses_file_write": false, + "uses_subprocess": false, + "network_urls": [], + "network_hosts": [] + }, { "path": "scripts/review_studio_gates.py", "interface": "internal-module", @@ -2111,7 +2125,7 @@ "checked_count": 86, "passed_count": 86, "failed_count": 0, - "skipped_count": 59, + "skipped_count": 60, "failed_scripts": [], "results": [ { @@ -3052,6 +3066,10 @@ "path": "scripts/review_studio_gate_contract.py", "reason": "internal module" }, + { + "path": "scripts/review_studio_gate_helpers.py", + "reason": "internal module" + }, { "path": "scripts/review_studio_gates.py", "reason": "internal module" diff --git a/reports/security_trust_report.md b/reports/security_trust_report.md index 237b9e18..0a9cf7cb 100644 --- a/reports/security_trust_report.md +++ b/reports/security_trust_report.md @@ -1,9 +1,9 @@ # Security Trust Report - OK: `True` -- Scanned files: `237` -- Scripts: `145` -- Internal script modules: `59` +- Scanned files: `238` +- Scripts: `146` +- Internal script modules: `60` - Secret findings: `0` - Network-capable scripts: `3` - Network policy covered scripts: `3` @@ -15,8 +15,8 @@ - CLI help smoke failures: `0` - Interactive scripts: `0` - Package hash scope: `source-contract-without-generated-reports` -- Package hash files: `237` -- Package SHA256: `712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc` +- Package hash files: `238` +- Package SHA256: `58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652` ## Failures @@ -152,6 +152,7 @@ | scripts/review_studio_data.py | internal-module | True | False | False | False | False | False | False | Imported by render_review_studio.py to load Review Studio source reports and metric cards. | | scripts/review_studio_formatting.py | internal-module | True | False | False | False | False | False | False | Imported by render_review_studio.py to format report dictionaries as audit UI panels. | | scripts/review_studio_gate_contract.py | internal-module | True | False | False | False | False | False | False | Imported by review_studio_gates.py for stable gate scoring and contract checks. | +| scripts/review_studio_gate_helpers.py | internal-module | True | False | False | False | False | False | False | Imported by review_studio_gates.py to keep reusable Review Studio gate helpers out of the main gate sequence. | | scripts/review_studio_gates.py | internal-module | True | False | False | False | False | False | False | Imported by render_review_studio.py to keep Review Studio gate evaluation separate from HTML rendering. | | scripts/review_studio_layout.py | internal-module | True | False | False | False | False | False | False | Imported by render_review_studio.py to keep Review Studio layout and CSS out of gate logic. | | scripts/review_studio_output_review.py | internal-module | True | False | False | False | False | False | False | Imported by render_review_studio.py to render output review checklist cards. | diff --git a/reports/skill-interpretation.html b/reports/skill-interpretation.html index d254055d..9d652c86 100644 --- a/reports/skill-interpretation.html +++ b/reports/skill-interpretation.html @@ -921,7 +921,7 @@

让 reviewer 快速确认关键文件、目录和资产分布。Lets reviewers confirm key files, directories, and asset distribution quickly.

-
资产分布Asset Distribution448项448 itemsSKILL.mdSKILL.mdREADME.mdREADME.mdagents/interface.yamlagents/interface.yamlmanifest.jsonmanifest.jsonreferencesreferencesscriptsscripts
资产分布图展示当前包体的文件和目录重心。The asset distribution chart shows where files and directories are concentrated.
+
资产分布Asset Distribution449项449 itemsSKILL.mdSKILL.mdREADME.mdREADME.mdagents/interface.yamlagents/interface.yamlmanifest.jsonmanifest.jsonreferencesreferencesscriptsscripts
资产分布图展示当前包体的文件和目录重心。The asset distribution chart shows where files and directories are concentrated.
diff --git a/reports/skill-interpretation.json b/reports/skill-interpretation.json index 21ccde9a..0d66e0c1 100644 --- a/reports/skill-interpretation.json +++ b/reports/skill-interpretation.json @@ -512,7 +512,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -527,7 +527,7 @@ "file_count": 235 } ], - "file_count": 448, + "file_count": 449, "folder_count": 4, "distribution": [ { @@ -552,7 +552,7 @@ }, { "label": "scripts", - "value": 145 + "value": 146 }, { "label": "evals", @@ -686,7 +686,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -1000,13 +1000,13 @@ "ok": true, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0", - "source_contract_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", + "evidence_bundle_sha256": "bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199", + "source_contract_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1024,11 +1024,11 @@ "world_class_source_pass_count": 7, "world_class_source_blocked_count": 6, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 56 }, - "commit": "d5beede0a62dab0f0780be283a274ed8a5be9dc4", + "commit": "5e2163683a483b9b0b0180219994495fc84eb272", "missing_artifacts": [], "limitations": [ "The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.", @@ -1112,9 +1112,9 @@ "failures": [] }, "trust_security": { - "scanned_files": 237, - "script_count": 145, - "internal_module_count": 59, + "scanned_files": 238, + "script_count": 146, + "internal_module_count": 60, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -1132,8 +1132,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 237, - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_hash_file_count": 238, + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" }, "skill_atlas": { "skill_count": 12, @@ -1171,7 +1171,7 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f" }, "compatibility": { @@ -1208,7 +1208,7 @@ "install_simulated": true, "install_simulation": "reports/install_simulation.json" }, - "generated_at": "2026-06-13" + "generated_at": "2026-06-17" }, "failures": [], "warnings": [] @@ -1219,8 +1219,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", - "archive_entry_count": 683, + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", + "archive_entry_count": 684, "failure_count": 0, "warning_count": 0 }, @@ -1231,7 +1231,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 683, + "archive_entry_count": 684, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1303,7 +1303,7 @@ { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "to": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] }, diff --git a/reports/skill-os-2-review.md b/reports/skill-os-2-review.md index c29005b2..9678b26d 100644 --- a/reports/skill-os-2-review.md +++ b/reports/skill-os-2-review.md @@ -133,13 +133,13 @@ Next move: add real client or installer permission enforcement integration. | Output Eval | `5` cases, with-skill pass rate `100`, baseline pass rate `0`, with file-backed, near-neighbor, boundary coverage, `10` local command-runner execution runs, `0` recorded fixture runs, `0` provider model-executed runs in root release evidence, `10` estimated token counts, provider runner v0 available, `5` blind A/B review pairs, a generated `reports/output_review_decisions.json` template, `0 / 5` reviewer decisions pending, `0` answer keys revealed, and `5` pending answers hidden | | Runtime Conformance | `5 / 5` targets passing | | Target Compiler | `5 / 5` compiled target contracts generated for OpenAI, Claude, generic, Agent Skills compatible, and VS Code / Copilot outputs, including target permission contracts and target-native behavior contracts | -| Trust | `0` secret findings, `1` pinned dependency file, `59` declared internal modules, `3 / 3` network-capable scripts covered by bounded host policy, `86 / 86` CLI help smoke checks passing across `145` scripts, source-contract hash scope explicit | +| Trust | `0` secret findings, `1` pinned dependency file, `60` declared internal modules, `3 / 3` network-capable scripts covered by bounded host policy, `86 / 86` CLI help smoke checks passing across `146` scripts, source-contract hash scope explicit | | Permission Governance | `3 / 3` required high-permission capabilities approved, `0` missing, `0` invalid, `0` expired | | Runtime Permission Probes | `4 / 4` target adapters probed, `0` native-enforcement adapters, `4` explicit metadata fallbacks, `4` residual risks retained for reviewer visibility | | Skill Atlas | `12` scanned skills, `1` actionable root skill, `1` telemetry report, `0` actionable route collisions, `0` actionable owner gaps, `0` actionable stale skills, `0` actionable drift signals, `24` scoped non-actionable issue signals retained for visibility | | Registry Audit | package metadata generated with version, owner, license, source checksum, archive checksum, Skill IR provenance, and compatibility matrix | -| Package Verification | `4 / 4` target adapters present, archive verified, `683` zip entries, `0` failures, `0` warnings | -| Install Simulation | archive with `683` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `4` adapters readable, `12` installer permission checks enforced, `0` permission failures, `0` failures, `0` warnings | +| Package Verification | `4 / 4` target adapters present, archive verified, `684` zip entries, `0` failures, `0` warnings | +| Install Simulation | archive with `684` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `4` adapters readable, `12` installer permission checks enforced, `0` permission failures, `0` failures, `0` warnings | | Local Install Sync Preflight | `make sync-local-install` and `make sync-active-install` rebuild the package first, then sync only after install simulation passes with `12` enforced installer permission checks and `0` permission failures | | Upgrade Check | current package declares `minor` over the 1.0.0 baseline, recommended bump is `minor`, and release notes include added targets plus checksum changes | | Adoption Drift | `1` metadata-only review event, `1` adoption sample, adoption `100`, risk band `low`; optional `yao.py` CLI capture, external client `telemetry-emit`, `5` `telemetry-hooks` recipes, Browser/Chrome native messaging host, and validated external JSONL import are available but off by default for reproducible release evidence; raw `reports/telemetry_events.jsonl` is gitignored and blocked from zip packages | diff --git a/reports/skill-overview.html b/reports/skill-overview.html index 0855a553..ff63c6f1 100644 --- a/reports/skill-overview.html +++ b/reports/skill-overview.html @@ -921,7 +921,7 @@

让 reviewer 快速确认关键文件、目录和资产分布。Lets reviewers confirm key files, directories, and asset distribution quickly.

-
资产分布Asset Distribution448项448 itemsSKILL.mdSKILL.mdREADME.mdREADME.mdagents/interface.yamlagents/interface.yamlmanifest.jsonmanifest.jsonreferencesreferencesscriptsscripts
资产分布图展示当前包体的文件和目录重心。The asset distribution chart shows where files and directories are concentrated.
+
资产分布Asset Distribution449项449 itemsSKILL.mdSKILL.mdREADME.mdREADME.mdagents/interface.yamlagents/interface.yamlmanifest.jsonmanifest.jsonreferencesreferencesscriptsscripts
资产分布图展示当前包体的文件和目录重心。The asset distribution chart shows where files and directories are concentrated.
路径Path作用Role类型Type
SKILL.mdSkill 入口文件Skill entrypoint文件file
README.md人类可读使用说明Human-readable usage guide文件file
agents/interface.yaml跨平台接口元数据Neutral interface metadata文件file
manifest.json生命周期与打包元数据Lifecycle and portability metadata文件file
references扩展指导与复用资料Extended guidance and reusable notes目录folder
scripts确定性脚本或本地工具Deterministic helpers or local tooling目录folder
evals触发与质量检查Trigger and quality checks目录folder
reports生成的证据与总结报告Generated evidence and overview artifacts目录folder
diff --git a/reports/skill-overview.json b/reports/skill-overview.json index f2f87354..d6ff1b77 100644 --- a/reports/skill-overview.json +++ b/reports/skill-overview.json @@ -511,7 +511,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -526,7 +526,7 @@ "file_count": 235 } ], - "file_count": 448, + "file_count": 449, "folder_count": 4, "distribution": [ { @@ -551,7 +551,7 @@ }, { "label": "scripts", - "value": 145 + "value": 146 }, { "label": "evals", @@ -681,7 +681,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 145 + "file_count": 146 }, { "path": "evals", @@ -995,13 +995,13 @@ "ok": true, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "5d4d3f13e4b19870cbd85e50ad56ae3d426c425df6dd63dfd458c62f5c7967e0", - "source_contract_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", + "evidence_bundle_sha256": "bb4d7860b90e023f5d97f74a87d091f6c4437190dfe7dacb5c740d7675136199", + "source_contract_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1019,11 +1019,11 @@ "world_class_source_pass_count": 7, "world_class_source_blocked_count": 6, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 56 }, - "commit": "d5beede0a62dab0f0780be283a274ed8a5be9dc4", + "commit": "5e2163683a483b9b0b0180219994495fc84eb272", "missing_artifacts": [], "limitations": [ "The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.", @@ -1107,9 +1107,9 @@ "failures": [] }, "trust_security": { - "scanned_files": 237, - "script_count": 145, - "internal_module_count": 59, + "scanned_files": 238, + "script_count": 146, + "internal_module_count": 60, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -1127,8 +1127,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 237, - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "package_hash_file_count": 238, + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" }, "skill_atlas": { "skill_count": 12, @@ -1166,7 +1166,7 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc", + "package_sha256": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652", "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f" }, "compatibility": { @@ -1203,7 +1203,7 @@ "install_simulated": true, "install_simulation": "reports/install_simulation.json" }, - "generated_at": "2026-06-13" + "generated_at": "2026-06-17" }, "failures": [], "warnings": [] @@ -1214,8 +1214,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f", - "archive_entry_count": 683, + "archive_sha256": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b", + "archive_entry_count": 684, "failure_count": 0, "warning_count": 0 }, @@ -1226,7 +1226,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 683, + "archive_entry_count": 684, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1298,7 +1298,7 @@ { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "to": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] }, diff --git a/reports/skill_atlas.json b/reports/skill_atlas.json index 5ee113a6..508dfafa 100644 --- a/reports/skill_atlas.json +++ b/reports/skill_atlas.json @@ -154,6 +154,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", diff --git a/reports/skill_os2_audit.json b/reports/skill_os2_audit.json index 80cbbf94..f2cc3d55 100644 --- a/reports/skill_os2_audit.json +++ b/reports/skill_os2_audit.json @@ -197,7 +197,7 @@ "key": "trust-security", "label": "Trust Security", "status": "pass", - "current": "secrets 0; scripts 145; help failures 0", + "current": "secrets 0; scripts 146; help failures 0", "target": "Secrets, scripts, dependencies, permissions, and package hash are reviewable", "evidence": [ { @@ -285,7 +285,7 @@ "key": "registry-distribution", "label": "Registry Distribution", "status": "pass", - "current": "zip entries 683; install failures 0; permission failures 0", + "current": "zip entries 684; install failures 0; permission failures 0", "target": "Package metadata, archive checksum, package verification, and install simulation pass", "evidence": [ { diff --git a/reports/skill_os2_audit.md b/reports/skill_os2_audit.md index a300e2ea..95e90e80 100644 --- a/reports/skill_os2_audit.md +++ b/reports/skill_os2_audit.md @@ -23,11 +23,11 @@ Generated at: `2026-06-13` | Human Adjudication | human-required | 0/5 decisions; pending 5 | Real reviewer decisions recorded before claiming output review completion | Record real A/B choices in the decision template, then regenerate adjudication. | | Benchmark Reproducibility | pass | artifacts 25; missing 0; failures 3 | Public methodology, reproducible commands, required artifacts, and failure disclosure are machine-checkable | Keep the manifest current with every benchmark, package, and release evidence change. | | Runtime Conformance | pass | 5/5 targets pass | Target package structure, metadata, relative paths, and degradation notes pass | Keep target conformance fixtures updated as platform contracts change. | -| Trust Security | pass | secrets 0; scripts 145; help failures 0 | Secrets, scripts, dependencies, permissions, and package hash are reviewable | Keep high-permission approvals scoped, expiring, and target-mapped. | +| Trust Security | pass | secrets 0; scripts 146; help failures 0 | Secrets, scripts, dependencies, permissions, and package hash are reviewable | Keep high-permission approvals scoped, expiring, and target-mapped. | | Permission Metadata | pass | 4/4 target probes pass; metadata fallback 4; installer enforcement 4 | Packaged adapters expose explicit permission metadata, residual risks, and installer enforcement evidence when available | Preserve residual-risk notes until real native enforcement exists. | | Native Permission Enforcement | external-required | native-enforced targets 0; installer-enforced targets 4 | At least one target/client enforces approved permissions at runtime | Integrate a real target-client or external installer runtime guard before claiming native permission enforcement. | | Skill Atlas | pass | 12 skills; actionable collisions 0 | Workspace catalog, route overlap, stale/owner gaps, drift, and no-route opportunities | Feed real drift data into Atlas once client telemetry is installed. | -| Registry Distribution | pass | zip entries 683; install failures 0; permission failures 0 | Package metadata, archive checksum, package verification, and install simulation pass | Regenerate registry after package verification so checksums stay aligned. | +| Registry Distribution | pass | zip entries 684; install failures 0; permission failures 0 | Package metadata, archive checksum, package verification, and install simulation pass | Regenerate registry after package verification so checksums stay aligned. | | Review Studio | pass | decision review; warnings 3; score 91 | One page shows gates, evidence paths, blockers, warnings, actions, waivers, and annotations | Resolve human/external warning gates before claiming full release readiness. | | Telemetry Drift | pass | events 1; risk low; recipes 5 | Local-first metadata-only event contract, aggregate drift report, hook recipes, and import path | Keep raw JSONL out of distributed packages and use aggregate reports for Atlas. | | Native Client Telemetry | external-required | external source events 0; adoption samples 1 | A real Browser/Chrome/provider client sends production metadata events | Install a real client against the native host and import production metadata-only events. | diff --git a/reports/skill_os2_coverage.json b/reports/skill_os2_coverage.json index d15641c5..5e50e554 100644 --- a/reports/skill_os2_coverage.json +++ b/reports/skill_os2_coverage.json @@ -1,7 +1,7 @@ { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-17", + "generated_at": "2026-06-13", "skill_dir": ".", "summary": { "item_count": 21, @@ -130,7 +130,7 @@ "label": "Trust Security", "status": "pass", "objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.", - "current": "145 scripts; secrets 0; help failures 0", + "current": "146 scripts; secrets 0; help failures 0", "command": "python3 scripts/yao.py trust .", "test": "python3 tests/verify_trust_check.py", "evidence": [ @@ -204,7 +204,7 @@ "label": "Registry Distribution", "status": "pass", "objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.", - "current": "archive entries 683; install failures 0", + "current": "archive entries 684; install failures 0", "command": "python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .", "test": "python3 tests/verify_registry_audit.py", "evidence": [ diff --git a/reports/skill_os2_coverage.md b/reports/skill_os2_coverage.md index 4b208078..a8108786 100644 --- a/reports/skill_os2_coverage.md +++ b/reports/skill_os2_coverage.md @@ -1,6 +1,6 @@ # Skill OS 2.0 Blueprint Coverage -Generated at: `2026-06-17` +Generated at: `2026-06-13` ## Summary @@ -26,9 +26,9 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts, | Skill IR | `pass` | schema 2.0.0; targets 5 | `python3 scripts/yao.py skill-ir .` | `python3 tests/verify_skill_ir.py` | | Output Eval Lab | `pass` | 5 cases; delta 100.0; execution 10 | `python3 scripts/yao.py output-exec . && python3 scripts/yao.py output-review .` | `python3 tests/verify_output_eval_lab.py` | | Runtime Conformance | `pass` | 5/5 targets pass | `python3 scripts/yao.py conformance .` | `python3 tests/verify_conformance_suite.py` | -| Trust Security | `pass` | 145 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` | +| Trust Security | `pass` | 146 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` | | Skill Atlas | `pass` | 12 scanned skills; actionable collisions 0 | `python3 scripts/yao.py skill-atlas --workspace-root .` | `python3 tests/verify_skill_atlas.py` | -| Registry Distribution | `pass` | archive entries 683; install failures 0 | `python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .` | `python3 tests/verify_registry_audit.py` | +| Registry Distribution | `pass` | archive entries 684; install failures 0 | `python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .` | `python3 tests/verify_registry_audit.py` | | Review Studio | `pass` | 16 gates; decision review; warnings 3 | `python3 scripts/yao.py review-studio .` | `python3 tests/verify_review_studio.py` | | Telemetry Drift | `pass` | events 1; recipes 5; risk low | `python3 scripts/yao.py telemetry-hooks . && python3 scripts/yao.py adoption-drift .` | `python3 tests/verify_telemetry_hooks.py` | diff --git a/reports/upgrade_check.json b/reports/upgrade_check.json index cb005513..7be6419f 100644 --- a/reports/upgrade_check.json +++ b/reports/upgrade_check.json @@ -70,12 +70,12 @@ { "field": "archive_sha256", "from": "", - "to": "69ad979695a4b08bfcb0dd44f7b8f6b6553465f416b950bb2f7d90e6c669427f" + "to": "29c3154e87935a6ffc92a42b6e270da17ef0aa2d3c156c518770ece272d4b58b" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "712f00ca2202e81f1a88fc46adea462b248dcec996e09125f7c0fc97af5476fc" + "to": "58b8388686e47011bcd943ed528b172b2f5991430fcc41eb3f86146f47498652" } ] }, diff --git a/reports/world_class_evidence_preflight.json b/reports/world_class_evidence_preflight.json index bf6bf821..4a7eaf7a 100644 --- a/reports/world_class_evidence_preflight.json +++ b/reports/world_class_evidence_preflight.json @@ -1,7 +1,7 @@ { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-17", + "generated_at": "2026-06-13", "skill_dir": ".", "summary": { "evidence_item_count": 4, diff --git a/reports/world_class_evidence_preflight.md b/reports/world_class_evidence_preflight.md index d6431496..e487d321 100644 --- a/reports/world_class_evidence_preflight.md +++ b/reports/world_class_evidence_preflight.md @@ -1,6 +1,6 @@ # World-Class Evidence Preflight -Generated at: `2026-06-17` +Generated at: `2026-06-13` ## Summary diff --git a/scripts/review_studio_gate_helpers.py b/scripts/review_studio_gate_helpers.py new file mode 100644 index 00000000..6ae78425 --- /dev/null +++ b/scripts/review_studio_gate_helpers.py @@ -0,0 +1,140 @@ +"""Helper functions for Review Studio gate evaluation.""" + +import json +import os +from pathlib import Path +from typing import Any + +try: + from trust_check import permission_governance_status as compute_permission_governance_status + from trust_check import script_inventory as trust_script_inventory +except ImportError: # pragma: no cover + compute_permission_governance_status = None + trust_script_inventory = None + +from review_studio_gate_contract import min_output_cases + + +SCRIPT_INTERFACE = "internal-module" +SCRIPT_INTERFACE_REASON = "Imported by review_studio_gates.py to keep reusable Review Studio gate helpers out of the main gate sequence." + + +def load_json(path: Path) -> dict[str, Any]: + if not path.exists(): + return {} + try: + payload = json.loads(path.read_text(encoding="utf-8")) + except json.JSONDecodeError: + return {} + return payload if isinstance(payload, dict) else {} + + +def link_from(output_html: Path, target: Path) -> str: + return os.path.relpath(target.resolve(), output_html.parent.resolve()) + + +def report_link(output_html: Path, skill_dir: Path, rel_path: str) -> str: + return link_from(output_html, skill_dir / rel_path) + + +def gate(key: str, label: str, status: str, detail: str, evidence: str, link: str = "") -> dict[str, str]: + return { + "key": key, + "label": label, + "status": status, + "detail": detail, + "evidence": evidence, + "link": link, + } + + +def target_maturity(skill_dir: Path, overview: dict[str, Any]) -> str: + manifest = load_json(skill_dir / "manifest.json") + if manifest.get("maturity_tier"): + return str(manifest["maturity_tier"]) + metadata = overview.get("metadata", {}) if isinstance(overview, dict) else {} + if metadata.get("maturity_tier"): + return str(metadata["maturity_tier"]) + return "scaffold" + + +def fallback_permission_governance(skill_dir: Path) -> dict[str, Any]: + if compute_permission_governance_status is None or trust_script_inventory is None: + return {} + try: + scripts = trust_script_inventory(skill_dir) + return compute_permission_governance_status(skill_dir, scripts) + except Exception: + return {} + + +def build_output_lab_gate( + skill_dir: Path, + output_html: Path, + maturity: str, + output: dict[str, Any], + output_execution: dict[str, Any], + output_blind: dict[str, Any], + output_review: dict[str, Any], +) -> dict[str, str]: + output_summary = output.get("summary", {}) + output_execution_summary = output_execution.get("summary", {}) + output_blind_summary = output_blind.get("summary", {}) + output_review_summary = output_review.get("summary", {}) + required_cases = min_output_cases(maturity) + case_count = int(output_summary.get("case_count", 0) or 0) + file_backed = int(output_summary.get("file_backed_case_count", 0) or 0) + near_neighbor = int(output_summary.get("near_neighbor_case_count", 0) or 0) + boundary = int(output_summary.get("boundary_case_count", 0) or 0) + blind_pair_count = int(output_blind_summary.get("pair_count", 0) or 0) + execution_variant_count = int(output_execution_summary.get("variant_run_count", 0) or 0) + execution_command_count = int(output_execution_summary.get("command_executed_count", 0) or 0) + execution_model_count = int(output_execution_summary.get("model_executed_count", 0) or 0) + execution_recorded_count = int(output_execution_summary.get("recorded_fixture_count", 0) or 0) + review_pair_count = int(output_review_summary.get("pair_count", 0) or 0) + review_judgment_count = int(output_review_summary.get("judgment_count", 0) or 0) + review_pending_count = int(output_review_summary.get("pending_count", 0) or 0) + review_invalid_count = int(output_review_summary.get("invalid_decision_count", 0) or 0) + production_like = maturity in {"production", "library", "governed"} + blind_missing = production_like and (not output_blind or blind_pair_count < case_count) + review_missing = production_like and case_count > 0 and not output_review + review_pending = production_like and bool(output_review) and review_pending_count > 0 + execution_failed = bool(output_execution) and ( + not output_execution.get("ok", True) or int(output_execution_summary.get("failure_count", 0) or 0) > 0 + ) + review_invalid = bool(output_review) and (not output_review.get("ok", True) or review_invalid_count > 0) + output_blocked = ( + not output.get("ok", False) + or not output_summary.get("gate_pass", False) + or case_count < required_cases + or execution_failed + or review_invalid + ) + output_warn = file_backed == 0 or near_neighbor == 0 or boundary == 0 or blind_missing or review_missing or review_pending + if not output: + output_status = "warn" + output_detail = "output eval scorecard is missing; generate it before production review" + else: + output_status = "block" if output_blocked else ("warn" if output_warn else "pass") + output_detail = ( + f"{case_count}/{required_cases} cases; with-skill {output_summary.get('with_skill_pass_rate', 0)}; " + f"baseline {output_summary.get('baseline_pass_rate', 0)}; file-backed {file_backed}; near-neighbor {near_neighbor}; " + f"blind A/B {blind_pair_count}" + + ( + f"; exec {execution_variant_count}; command {execution_command_count}; " + f"model {execution_model_count}; recorded {execution_recorded_count}" + if output_execution + else "" + ) + + (f"; reviewed {review_judgment_count}/{review_pair_count}" if output_review else "") + + (f"; review pending {review_pending_count}" if review_pending else "") + + ("; review adjudication missing" if review_missing else "") + ) + return gate( + "output-lab", + "输出实验", + output_status, + output_detail, + "reports/output_quality_scorecard.json", + report_link(output_html, skill_dir, "reports/output_quality_scorecard.md"), + ) diff --git a/scripts/review_studio_gates.py b/scripts/review_studio_gates.py index 11a2a866..a253d6c5 100644 --- a/scripts/review_studio_gates.py +++ b/scripts/review_studio_gates.py @@ -1,18 +1,9 @@ #!/usr/bin/env python3 """Gate evaluation contract for Review Studio 2.0.""" -import json -import os from pathlib import Path from typing import Any -try: - from trust_check import permission_governance_status as compute_permission_governance_status - from trust_check import script_inventory as trust_script_inventory -except ImportError: # pragma: no cover - compute_permission_governance_status = None - trust_script_inventory = None - from review_studio_gate_contract import ( GATE_WEIGHTS, REVIEW_STUDIO_GATE_KEYS, @@ -22,6 +13,13 @@ from review_studio_gate_contract import ( status_label, weighted_score, ) +from review_studio_gate_helpers import ( + build_output_lab_gate, + fallback_permission_governance, + gate, + report_link, + target_maturity, +) SCRIPT_INTERFACE = "internal-module" @@ -30,54 +28,6 @@ SCRIPT_INTERFACE_REASON = "Imported by render_review_studio.py to keep Review St ROOT = Path(__file__).resolve().parent.parent -def _load_json(path: Path) -> dict[str, Any]: - if not path.exists(): - return {} - try: - payload = json.loads(path.read_text(encoding="utf-8")) - except json.JSONDecodeError: - return {} - return payload if isinstance(payload, dict) else {} - - -def _link_from(output_html: Path, target: Path) -> str: - return os.path.relpath(target.resolve(), output_html.parent.resolve()) - - -def _report_link(output_html: Path, skill_dir: Path, rel_path: str) -> str: - return _link_from(output_html, skill_dir / rel_path) - - -def gate(key: str, label: str, status: str, detail: str, evidence: str, link: str = "") -> dict[str, str]: - return { - "key": key, - "label": label, - "status": status, - "detail": detail, - "evidence": evidence, - "link": link, - } - - -def target_maturity(skill_dir: Path, overview: dict[str, Any]) -> str: - manifest = _load_json(skill_dir / "manifest.json") - if manifest.get("maturity_tier"): - return str(manifest["maturity_tier"]) - metadata = overview.get("metadata", {}) if isinstance(overview, dict) else {} - if metadata.get("maturity_tier"): - return str(metadata["maturity_tier"]) - return "scaffold" - - -def fallback_permission_governance(skill_dir: Path) -> dict[str, Any]: - if compute_permission_governance_status is None or trust_script_inventory is None: - return {} - try: - scripts = trust_script_inventory(skill_dir) - return compute_permission_governance_status(skill_dir, scripts) - except Exception: - return {} - def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, Any]]) -> list[dict[str, str]]: overview = data["overview"] @@ -94,7 +44,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An intent_status, f"intent confidence {intent_score}/100; {intent.get('recommended_action', 'review current intent frame')}", "reports/intent-confidence.json", - _report_link(output_html, skill_dir, "reports/intent-confidence.md"), + report_link(output_html, skill_dir, "reports/intent-confidence.md"), ) ) @@ -115,72 +65,19 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An route_status, route_detail, "reports/route_scorecard.json", - _report_link(output_html, skill_dir, "reports/route_scorecard.md"), + report_link(output_html, skill_dir, "reports/route_scorecard.md"), ) ) - output = data["output_quality"] - output_execution = data["output_execution"] - output_blind = data["output_blind_review"] - output_review = data["output_review_adjudication"] - output_summary = output.get("summary", {}) - output_execution_summary = output_execution.get("summary", {}) - output_blind_summary = output_blind.get("summary", {}) - output_review_summary = output_review.get("summary", {}) - required_cases = min_output_cases(maturity) - case_count = int(output_summary.get("case_count", 0) or 0) - file_backed = int(output_summary.get("file_backed_case_count", 0) or 0) - near_neighbor = int(output_summary.get("near_neighbor_case_count", 0) or 0) - boundary = int(output_summary.get("boundary_case_count", 0) or 0) - blind_pair_count = int(output_blind_summary.get("pair_count", 0) or 0) - execution_variant_count = int(output_execution_summary.get("variant_run_count", 0) or 0) - execution_command_count = int(output_execution_summary.get("command_executed_count", 0) or 0) - execution_model_count = int(output_execution_summary.get("model_executed_count", 0) or 0) - execution_recorded_count = int(output_execution_summary.get("recorded_fixture_count", 0) or 0) - review_pair_count = int(output_review_summary.get("pair_count", 0) or 0) - review_judgment_count = int(output_review_summary.get("judgment_count", 0) or 0) - review_pending_count = int(output_review_summary.get("pending_count", 0) or 0) - review_invalid_count = int(output_review_summary.get("invalid_decision_count", 0) or 0) - blind_missing = maturity in {"production", "library", "governed"} and (not output_blind or blind_pair_count < case_count) - review_missing = maturity in {"production", "library", "governed"} and case_count > 0 and not output_review - review_pending = maturity in {"production", "library", "governed"} and bool(output_review) and review_pending_count > 0 - execution_failed = bool(output_execution) and (not output_execution.get("ok", True) or int(output_execution_summary.get("failure_count", 0) or 0) > 0) - review_invalid = bool(output_review) and (not output_review.get("ok", True) or review_invalid_count > 0) - output_blocked = ( - not output.get("ok", False) - or not output_summary.get("gate_pass", False) - or case_count < required_cases - or execution_failed - or review_invalid - ) - output_warn = file_backed == 0 or near_neighbor == 0 or boundary == 0 or blind_missing or review_missing or review_pending - if not output: - output_status = "warn" - output_detail = "output eval scorecard is missing; generate it before production review" - else: - output_status = "block" if output_blocked else ("warn" if output_warn else "pass") - output_detail = ( - f"{case_count}/{required_cases} cases; with-skill {output_summary.get('with_skill_pass_rate', 0)}; " - f"baseline {output_summary.get('baseline_pass_rate', 0)}; file-backed {file_backed}; near-neighbor {near_neighbor}; " - f"blind A/B {blind_pair_count}" - + ( - f"; exec {execution_variant_count}; command {execution_command_count}; " - f"model {execution_model_count}; recorded {execution_recorded_count}" - if output_execution - else "" - ) - + (f"; reviewed {review_judgment_count}/{review_pair_count}" if output_review else "") - + (f"; review pending {review_pending_count}" if review_pending else "") - + ("; review adjudication missing" if review_missing else "") - ) gates.append( - gate( - "output-lab", - "输出实验", - output_status, - output_detail, - "reports/output_quality_scorecard.json", - _report_link(output_html, skill_dir, "reports/output_quality_scorecard.md"), + build_output_lab_gate( + skill_dir, + output_html, + maturity, + data["output_quality"], + data["output_execution"], + data["output_blind_review"], + data["output_review_adjudication"], ) ) @@ -214,7 +111,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An context_status, context_detail, "reports/context_budget.json", - _report_link(output_html, skill_dir, "reports/context_budget.md"), + report_link(output_html, skill_dir, "reports/context_budget.md"), ) ) @@ -234,7 +131,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An conformance_status, conformance_detail, "reports/conformance_matrix.json", - _report_link(output_html, skill_dir, "reports/conformance_matrix.md"), + report_link(output_html, skill_dir, "reports/conformance_matrix.md"), ) ) @@ -258,7 +155,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An trust_status, trust_detail, "reports/security_trust_report.json", - _report_link(output_html, skill_dir, "reports/security_trust_report.md"), + report_link(output_html, skill_dir, "reports/security_trust_report.md"), ) ) @@ -290,7 +187,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An python_compat_status, python_compat_detail, "reports/python_compatibility.json", - _report_link(output_html, skill_dir, "reports/python_compatibility.md"), + report_link(output_html, skill_dir, "reports/python_compatibility.md"), ) ) @@ -330,7 +227,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An architecture_status, architecture_detail, "reports/architecture_maintainability.json", - _report_link(output_html, skill_dir, "reports/architecture_maintainability.md"), + report_link(output_html, skill_dir, "reports/architecture_maintainability.md"), ) ) @@ -364,7 +261,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An permission_status, permission_detail, "reports/security_trust_report.json + security/permission_policy.json", - _report_link(output_html, skill_dir, "security/permission_policy.md"), + report_link(output_html, skill_dir, "security/permission_policy.md"), ) ) @@ -392,7 +289,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An runtime_permission_status, runtime_permission_detail, "reports/runtime_permission_probes.json", - _report_link(output_html, skill_dir, "reports/runtime_permission_probes.md"), + report_link(output_html, skill_dir, "reports/runtime_permission_probes.md"), ) ) @@ -426,7 +323,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An atlas_status, atlas_detail, "reports/skill_atlas.json", - _report_link(output_html, skill_dir, "reports/skill_atlas.html"), + report_link(output_html, skill_dir, "reports/skill_atlas.html"), ) ) @@ -489,7 +386,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An adoption_status, adoption_detail, "reports/adoption_drift_report.json + reports/skillops/daily + reports/skillops/weekly", - _report_link(output_html, skill_dir, "reports/adoption_drift_report.md"), + report_link(output_html, skill_dir, "reports/adoption_drift_report.md"), ) ) @@ -524,7 +421,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An waiver_status, waiver_detail, "reports/review_waivers.json", - _report_link(output_html, skill_dir, "reports/review_waivers.md"), + report_link(output_html, skill_dir, "reports/review_waivers.md"), ) ) @@ -567,7 +464,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An world_class_status, world_class_detail, "reports/world_class_evidence_ledger.json", - _report_link(output_html, skill_dir, "reports/world_class_evidence_ledger.md"), + report_link(output_html, skill_dir, "reports/world_class_evidence_ledger.md"), ) ) @@ -607,7 +504,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An registry_status, registry_detail, "reports/registry_audit.json + reports/install_simulation.json", - _report_link(output_html, skill_dir, "reports/registry_audit.md"), + report_link(output_html, skill_dir, "reports/registry_audit.md"), ) ) @@ -639,7 +536,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An release_status, release_detail, "reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md", - _report_link(output_html, skill_dir, "reports/promotion_decisions.md") if promotion else str(migration_path), + report_link(output_html, skill_dir, "reports/promotion_decisions.md") if promotion else str(migration_path), ) ) diff --git a/skill-ir/examples/yao-meta-skill.json b/skill-ir/examples/yao-meta-skill.json index 6aec7fc6..828c96d6 100644 --- a/skill-ir/examples/yao-meta-skill.json +++ b/skill-ir/examples/yao-meta-skill.json @@ -202,6 +202,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", diff --git a/skill_atlas/catalog.json b/skill_atlas/catalog.json index bcd3f764..349776f6 100644 --- a/skill_atlas/catalog.json +++ b/skill_atlas/catalog.json @@ -110,6 +110,7 @@ "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_output_review.py", diff --git a/tests/verify_architecture_maintainability.py b/tests/verify_architecture_maintainability.py index 3c8911e2..f98a981c 100644 --- a/tests/verify_architecture_maintainability.py +++ b/tests/verify_architecture_maintainability.py @@ -40,7 +40,7 @@ def main() -> None: assert payload["summary"]["decision"] == "pass", payload["summary"] assert payload["summary"]["early_watch_line_threshold"] == 600, payload["summary"] assert payload["summary"]["watch_line_threshold"] == 720, payload["summary"] - assert payload["summary"]["early_watchlist_count"] >= 4, payload["summary"] + assert payload["summary"]["early_watchlist_count"] >= 3, payload["summary"] assert payload["summary"]["watchlist_count"] == 0, payload["summary"] assert payload["summary"]["hotspot_count"] == 0, payload["summary"] assert payload["summary"]["blocker_count"] == 0, payload["summary"] @@ -59,6 +59,7 @@ def main() -> None: assert "scripts/build_skill_atlas.py" not in early_watch_paths, payload["early_watchlist"] assert "scripts/skill_report_model.py" not in early_watch_paths, payload["early_watchlist"] assert "scripts/render_review_studio.py" not in early_watch_paths, payload["early_watchlist"] + assert "scripts/review_studio_gates.py" not in early_watch_paths, payload["early_watchlist"] renderer_lines = len((ROOT / "scripts" / "render_review_studio.py").read_text(encoding="utf-8").splitlines()) action_module = (ROOT / "scripts" / "review_studio_actions.py").read_text(encoding="utf-8") action_lines = len(action_module.splitlines()) @@ -76,7 +77,7 @@ def main() -> None: assert "No file-size hotspots found." in markdown, markdown assert "No near-threshold files found." in markdown, markdown assert "## Early Watchlist" in markdown, markdown - assert "- early watchlist: `4`" in markdown, markdown + assert "- early watchlist: `3`" in markdown, markdown early_watch_markdown = markdown.split("## Early Watchlist", 1)[1].split("## Largest Files", 1)[0] assert "scripts/render_review_viewer.py" not in markdown, markdown assert "scripts/render_skill_os2_coverage.py" not in markdown, markdown @@ -84,6 +85,7 @@ def main() -> None: assert "scripts/build_skill_atlas.py" not in early_watch_markdown, early_watch_markdown assert "scripts/skill_report_model.py" not in early_watch_markdown, early_watch_markdown assert "scripts/render_review_studio.py" not in early_watch_markdown, early_watch_markdown + assert "scripts/review_studio_gates.py" not in early_watch_markdown, early_watch_markdown assert "Do not split a file only for line count" in markdown, markdown blocker_proc = subprocess.run( diff --git a/tests/verify_review_studio.py b/tests/verify_review_studio.py index dc92384c..fc42fd39 100644 --- a/tests/verify_review_studio.py +++ b/tests/verify_review_studio.py @@ -236,7 +236,7 @@ def main() -> None: assert full_payload["data"]["python_compatibility"]["summary"]["issue_count"] == 0, full_payload["data"]["python_compatibility"] assert full_payload["data"]["architecture_maintainability"]["summary"]["hotspot_count"] == 0, full_payload["data"]["architecture_maintainability"] assert full_payload["data"]["architecture_maintainability"]["summary"]["watchlist_count"] == 0, full_payload["data"]["architecture_maintainability"] - assert full_payload["data"]["architecture_maintainability"]["summary"]["early_watchlist_count"] >= 4, full_payload["data"]["architecture_maintainability"] + assert full_payload["data"]["architecture_maintainability"]["summary"]["early_watchlist_count"] >= 3, full_payload["data"]["architecture_maintainability"] assert full_payload["data"]["architecture_maintainability"]["summary"]["blocker_count"] == 0, full_payload["data"]["architecture_maintainability"] action_keys = {item["gate_key"] for item in full_payload["review_actions"]} assert action_keys == {"output-lab", "review-waivers", "world-class-evidence"}, full_payload["review_actions"] diff --git a/tests/verify_trust_check.py b/tests/verify_trust_check.py index 0b94a5b7..1727780d 100644 --- a/tests/verify_trust_check.py +++ b/tests/verify_trust_check.py @@ -103,6 +103,7 @@ def main() -> None: "scripts/reference_synthesis_markdown.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gate_contract.py", + "scripts/review_studio_gate_helpers.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", "scripts/review_studio_panels.py", @@ -144,6 +145,7 @@ def main() -> None: assert "reference_synthesis_markdown.py" not in warning_text, payload["warnings"] assert "review_studio_formatting.py" not in warning_text, payload["warnings"] assert "review_studio_gate_contract.py" not in warning_text, payload["warnings"] + assert "review_studio_gate_helpers.py" not in warning_text, payload["warnings"] assert "review_studio_gates.py" not in warning_text, payload["warnings"] assert "review_studio_layout.py" not in warning_text, payload["warnings"] assert "review_studio_panels.py" not in warning_text, payload["warnings"]
路径Path作用Role类型Type
SKILL.mdSkill 入口文件Skill entrypoint文件file
README.md人类可读使用说明Human-readable usage guide文件file
agents/interface.yaml跨平台接口元数据Neutral interface metadata文件file
manifest.json生命周期与打包元数据Lifecycle and portability metadata文件file
references扩展指导与复用资料Extended guidance and reusable notes目录folder
scripts确定性脚本或本地工具Deterministic helpers or local tooling目录folder
evals触发与质量检查Trigger and quality checks目录folder
reports生成的证据与总结报告Generated evidence and overview artifacts目录folder