diff --git a/registry/index.json b/registry/index.json index 901d90b6..d0daaa88 100644 --- a/registry/index.json +++ b/registry/index.json @@ -16,7 +16,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" } ] } diff --git a/registry/packages/yao-meta-skill.json b/registry/packages/yao-meta-skill.json index 77307494..8c4a3fd7 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": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e", - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, "compatibility": { "openai": "pass", @@ -48,7 +48,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", "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 3f7b48b4..e0256cba 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-13T18:04:28Z", + "generated_at": "2026-06-13T18:17:38Z", "skill_dir": ".", "privacy_contract": { "storage": "local-first", diff --git a/reports/architecture_maintainability.json b/reports/architecture_maintainability.json index 43beae57..7bfc5bfd 100644 --- a/reports/architecture_maintainability.json +++ b/reports/architecture_maintainability.json @@ -4,27 +4,20 @@ "generated_at": "2026-06-14", "skill_dir": ".", "summary": { - "python_file_count": 141, - "script_file_count": 85, + "python_file_count": 143, + "script_file_count": 87, "test_file_count": 56, - "internal_module_count": 14, + "internal_module_count": 16, "cli_script_count": 72, "command_handler_count": 35, "warn_line_threshold": 900, "block_line_threshold": 1500, - "largest_file_lines": 1196, - "hotspot_count": 3, + "largest_file_lines": 1159, + "hotspot_count": 2, "blocker_count": 0, "decision": "watch-maintainability-hotspots" }, "largest_files": [ - { - "path": "scripts/render_review_studio.py", - "lines": 1196, - "kind": "cli-script", - "severity": "warn", - "recommendation": "Move data loading and large section renderers into focused review_studio_* modules." - }, { "path": "scripts/yao.py", "lines": 1159, @@ -39,6 +32,13 @@ "severity": "warn", "recommendation": "Split viewer data assembly from HTML section rendering." }, + { + "path": "scripts/render_review_studio.py", + "lines": 887, + "kind": "cli-script", + "severity": "pass", + "recommendation": "Move data loading and large section renderers into focused review_studio_* modules." + }, { "path": "tests/verify_yao_cli.py", "lines": 838, @@ -104,13 +104,6 @@ } ], "hotspots": [ - { - "path": "scripts/render_review_studio.py", - "lines": 1196, - "kind": "cli-script", - "severity": "warn", - "recommendation": "Move data loading and large section renderers into focused review_studio_* modules." - }, { "path": "scripts/yao.py", "lines": 1159, @@ -127,11 +120,6 @@ } ], "actions": [ - { - "path": "scripts/render_review_studio.py", - "severity": "warn", - "action": "Move data loading and large section renderers into focused review_studio_* modules." - }, { "path": "scripts/yao.py", "severity": "warn", diff --git a/reports/architecture_maintainability.md b/reports/architecture_maintainability.md index 32511bdd..c717e094 100644 --- a/reports/architecture_maintainability.md +++ b/reports/architecture_maintainability.md @@ -5,14 +5,14 @@ Generated at: `2026-06-14` ## Summary - decision: `watch-maintainability-hotspots` -- python files: `141` -- scripts: `85` +- python files: `143` +- scripts: `87` - tests: `56` -- internal modules: `14` +- internal modules: `16` - CLI scripts: `72` - Yao CLI command handlers: `35` -- largest file lines: `1196` -- hotspots: `3` +- largest file lines: `1159` +- hotspots: `2` - blockers: `0` This report keeps maintainability risk visible before the Meta Skill grows more gates, renderers, and CLI commands. @@ -21,7 +21,6 @@ This report keeps maintainability risk visible before the Meta Skill grows more | File | Lines | Kind | Severity | Recommended action | | --- | ---: | --- | --- | --- | -| `scripts/render_review_studio.py` | `1196` | `cli-script` | `warn` | Move data loading and large section renderers into focused review_studio_* modules. | | `scripts/yao.py` | `1159` | `cli-script` | `warn` | Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator. | | `scripts/render_review_viewer.py` | `983` | `cli-script` | `warn` | Split viewer data assembly from HTML section rendering. | @@ -29,9 +28,9 @@ This report keeps maintainability risk visible before the Meta Skill grows more | File | Lines | Kind | Severity | | --- | ---: | --- | --- | -| `scripts/render_review_studio.py` | `1196` | `cli-script` | `warn` | | `scripts/yao.py` | `1159` | `cli-script` | `warn` | | `scripts/render_review_viewer.py` | `983` | `cli-script` | `warn` | +| `scripts/render_review_studio.py` | `887` | `cli-script` | `pass` | | `tests/verify_yao_cli.py` | `838` | `test` | `pass` | | `scripts/skill_report_model.py` | `782` | `internal-module` | `pass` | | `scripts/compile_skill.py` | `734` | `cli-script` | `pass` | diff --git a/reports/benchmark_reproducibility.json b/reports/benchmark_reproducibility.json index ee81d390..1e011edf 100644 --- a/reports/benchmark_reproducibility.json +++ b/reports/benchmark_reproducibility.json @@ -3,24 +3,24 @@ "ok": true, "generated_at": "2026-06-14", "skill_dir": ".", - "commit": "7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4", + "commit": "d7018dac5583d8973d8544d5f02906e94e8b1f9b", "git_status": { "available": true, "dirty": true, - "changed_file_count": 36, + "changed_file_count": 39, "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/benchmark_reproducibility.json", - " M reports/benchmark_reproducibility.md", - " M reports/compiled_targets.json", - " M reports/context_budget.json", - " M reports/install_simulation.json", - " M reports/output_execution_runs.json", - " M reports/output_execution_runs.md" + "MM registry/index.json", + "MM registry/packages/yao-meta-skill.json", + "MM reports/adoption_drift_report.json", + "M reports/architecture_maintainability.json", + "M reports/architecture_maintainability.md", + "MM reports/benchmark_reproducibility.json", + "MM reports/benchmark_reproducibility.md", + "M reports/compiled_targets.json", + "MM reports/context_budget.json", + "M reports/install_simulation.json", + "MM reports/output_execution_runs.json", + "MM reports/output_execution_runs.md" ] }, "summary": { @@ -42,7 +42,7 @@ "world_class_task_count": 4, "world_class_ledger_pending_count": 4, "working_tree_dirty": true, - "changed_file_count": 36 + "changed_file_count": 39 }, "methodology": { "path": "reports/benchmark_methodology.md", @@ -116,7 +116,7 @@ "path": "reports/output_execution_runs.json", "exists": true, "bytes": 7966, - "sha256": "ef773cdb0b4b3e6263b58aa52c8473ee5b5613297bae721ea34da2418f4f6c9b" + "sha256": "e1497671aeac5efe481d21880306d1cd156520f3c6981335a23bea04c4d11e5e" }, { "label": "blind_review", @@ -150,43 +150,43 @@ "label": "trust_report", "path": "reports/security_trust_report.json", "exists": true, - "bytes": 89598, - "sha256": "043f8314a8c2c8ef992d486384cd22dba5a0284af491fd830ddc91fec54f666a" + "bytes": 90767, + "sha256": "6a3b7738607ffef7d039e1ff913593ec9d5cd0242fc74d430c53bb62dc33df8a" }, { "label": "python_compatibility", "path": "reports/python_compatibility.json", "exists": true, - "bytes": 18801, - "sha256": "3f071172d13c70acd0b16fe84ae011fee39030da61dd5801009fadead64f2a60" + "bytes": 19050, + "sha256": "648f17271e22805669eebc88486f47e891faa9b1fa9f2bf8cf21b14d00f9e1aa" }, { "label": "registry_audit", "path": "reports/registry_audit.json", "exists": true, "bytes": 3183, - "sha256": "a55d0fb1c7d6730d1b8009904b59a18eb61a776368a211385b4a5d21b915edf1" + "sha256": "e350e7b2d3d6a971b506c9d2d159059b19e692e0957498a502fe797057ebdb85" }, { "label": "package_verification", "path": "reports/package_verification.json", "exists": true, "bytes": 19325, - "sha256": "ff899ad76a6ad8e39a5f15e483135b4a93602ff59984a61f0c807ad627749dad" + "sha256": "144cd592106a66b50e8464b96494f6ed0ad41dba11941a3d7de11765b818a800" }, { "label": "install_simulation", "path": "reports/install_simulation.json", "exists": true, "bytes": 8557, - "sha256": "20d6fa71cc492c837a98d383686677c7c2e9cc5885514ab56d5b23819060b746" + "sha256": "097060e129d0d699a2e19c5802b03b14b28134983a87f7d78cc1d525e7e5c683" }, { "label": "skill_os2_audit", "path": "reports/skill_os2_audit.json", "exists": true, "bytes": 13946, - "sha256": "48f2206d4eb7598009740e9d4ab9e1f08b9d039cf661bb39ffbc24b2beb2c099" + "sha256": "52aff10d9877c50343b2caca9f2e3f6a721045662b6862551e22f5fe0555d878" }, { "label": "world_class_evidence_plan", diff --git a/reports/benchmark_reproducibility.md b/reports/benchmark_reproducibility.md index fd222619..5dcdf280 100644 --- a/reports/benchmark_reproducibility.md +++ b/reports/benchmark_reproducibility.md @@ -1,7 +1,7 @@ # Benchmark Reproducibility Generated at: `2026-06-14` -Commit: `7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4` +Commit: `d7018dac5583d8973d8544d5f02906e94e8b1f9b` Working tree dirty at generation: `true` ## Summary @@ -16,7 +16,7 @@ Working tree dirty at generation: `true` - provider evidence complete: `false` - human review complete: `false` - world-class ready: `false` -- changed files at generation: `36` +- changed files at generation: `39` This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete. @@ -40,17 +40,17 @@ 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 | `ef773cdb0b4b` | +| output_execution | `reports/output_execution_runs.json` | present | `e1497671aeac` | | blind_review | `reports/output_blind_review_pack.json` | present | `bbe2db8ec277` | | review_adjudication | `reports/output_review_adjudication.json` | present | `ddd9af90d42e` | | trigger_scorecard | `reports/route_scorecard.json` | present | `c164e83e36d0` | | runtime_conformance | `reports/conformance_matrix.json` | present | `8251329e663d` | -| trust_report | `reports/security_trust_report.json` | present | `043f8314a8c2` | -| python_compatibility | `reports/python_compatibility.json` | present | `3f071172d13c` | -| registry_audit | `reports/registry_audit.json` | present | `a55d0fb1c7d6` | -| package_verification | `reports/package_verification.json` | present | `ff899ad76a6a` | -| install_simulation | `reports/install_simulation.json` | present | `20d6fa71cc49` | -| skill_os2_audit | `reports/skill_os2_audit.json` | present | `48f2206d4eb7` | +| trust_report | `reports/security_trust_report.json` | present | `6a3b7738607f` | +| python_compatibility | `reports/python_compatibility.json` | present | `648f17271e22` | +| registry_audit | `reports/registry_audit.json` | present | `e350e7b2d3d6` | +| package_verification | `reports/package_verification.json` | present | `144cd592106a` | +| install_simulation | `reports/install_simulation.json` | present | `097060e129d0` | +| skill_os2_audit | `reports/skill_os2_audit.json` | present | `52aff10d9877` | | world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `ed1274b7c18c` | | world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `5ed043491c3d` | | world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `124b9239d7f3` | diff --git a/reports/compiled_targets.json b/reports/compiled_targets.json index 5364a2f9..8f241bdb 100644 --- a/reports/compiled_targets.json +++ b/reports/compiled_targets.json @@ -204,9 +204,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -222,9 +224,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -1045,9 +1045,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -1063,9 +1065,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -1886,9 +1886,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -1904,9 +1906,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -2711,9 +2711,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -2729,9 +2731,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -3536,9 +3536,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -3554,9 +3556,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", diff --git a/reports/context_budget.json b/reports/context_budget.json index 69f5eecf..261b9516 100644 --- a/reports/context_budget.json +++ b/reports/context_budget.json @@ -6,10 +6,10 @@ "context_budget_tier": "production", "context_budget_limit": 1000, "skill_body_tokens": 751, - "other_text_tokens": 1083497, + "other_text_tokens": 1084439, "estimated_initial_load_tokens": 944, - "estimated_total_text_tokens": 1084248, - "relevant_file_count": 469, + "estimated_total_text_tokens": 1085190, + "relevant_file_count": 473, "unused_resource_dirs": [], "quality_signal_points": 130, "quality_density": 137.7 diff --git a/reports/install_simulation.json b/reports/install_simulation.json index f62330d1..4aabcf96 100644 --- a/reports/install_simulation.json +++ b/reports/install_simulation.json @@ -8,7 +8,7 @@ "installed_skill_dir": "[temporary-install-root]/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 553, + "archive_entry_count": 555, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, diff --git a/reports/output_execution_runs.json b/reports/output_execution_runs.json index dce73489..63a3626c 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": 25.82, + "duration_ms": 27.82, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -62,7 +62,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.73, + "duration_ms": 26.16, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -85,7 +85,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.52, + "duration_ms": 27.01, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -136,7 +136,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.92, + "duration_ms": 25.7, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -164,7 +164,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.58, + "duration_ms": 25.64, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -187,7 +187,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.69, + "duration_ms": 25.83, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -214,7 +214,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.4, + "duration_ms": 26.02, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -237,7 +237,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.48, + "duration_ms": 25.66, "provider": "local-output-eval-runner", "model": "", "usage": { diff --git a/reports/output_execution_runs.md b/reports/output_execution_runs.md index 9fa1095e..17e76959 100644 --- a/reports/output_execution_runs.md +++ b/reports/output_execution_runs.md @@ -23,15 +23,15 @@ 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 | 25.82 | 33 | 0.0 | pass | -| skill-package-contract | with_skill | command | local-output-eval-runner | 25.73 | 73 | 100.0 | pass | -| output-eval-expectation | baseline | command | local-output-eval-runner | 25.52 | 36 | 0.0 | pass | +| skill-package-contract | baseline | command | local-output-eval-runner | 27.82 | 33 | 0.0 | pass | +| skill-package-contract | with_skill | command | local-output-eval-runner | 26.16 | 73 | 100.0 | pass | +| output-eval-expectation | baseline | command | local-output-eval-runner | 27.01 | 36 | 0.0 | pass | | output-eval-expectation | with_skill | command | local-output-eval-runner | 25.68 | 80 | 100.0 | pass | -| ir-before-packaging | baseline | command | local-output-eval-runner | 25.92 | 33 | 0.0 | pass | -| ir-before-packaging | with_skill | command | local-output-eval-runner | 25.58 | 80 | 100.0 | pass | -| near-neighbor-boundary | baseline | command | local-output-eval-runner | 25.69 | 36 | 0.0 | pass | -| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 25.4 | 65 | 100.0 | pass | -| file-backed-governed-package | baseline | command | local-output-eval-runner | 25.48 | 37 | 0.0 | pass | +| ir-before-packaging | baseline | command | local-output-eval-runner | 25.7 | 33 | 0.0 | pass | +| ir-before-packaging | with_skill | command | local-output-eval-runner | 25.64 | 80 | 100.0 | pass | +| near-neighbor-boundary | baseline | command | local-output-eval-runner | 25.83 | 36 | 0.0 | pass | +| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 26.02 | 65 | 100.0 | pass | +| file-backed-governed-package | baseline | command | local-output-eval-runner | 25.66 | 37 | 0.0 | pass | | file-backed-governed-package | with_skill | command | local-output-eval-runner | 25.68 | 98 | 100.0 | pass | ## Next Fixes diff --git a/reports/package_verification.json b/reports/package_verification.json index 5a077c91..d9a8b933 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": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", - "archive_entry_count": 553, + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", + "archive_entry_count": 555, "failure_count": 0, "warning_count": 0 }, diff --git a/reports/package_verification.md b/reports/package_verification.md index 1d28f495..9de1c442 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: `26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25` +- Archive SHA256: `7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0` - Failures: `0` - Warnings: `0` diff --git a/reports/python_compatibility.json b/reports/python_compatibility.json index e37bc207..8032796c 100644 --- a/reports/python_compatibility.json +++ b/reports/python_compatibility.json @@ -5,7 +5,7 @@ "root": ".", "summary": { "target_python": "3.11", - "file_count": 144, + "file_count": 146, "issue_count": 0, "syntax_error_count": 0, "fstring_311_violation_count": 0, @@ -394,6 +394,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "scripts/review_studio_data.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "scripts/review_studio_formatting.py", "ok": true, @@ -412,6 +418,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "scripts/review_studio_world_class.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "scripts/run_conformance_suite.py", "ok": true, diff --git a/reports/python_compatibility.md b/reports/python_compatibility.md index 182cae66..5ce26a6a 100644 --- a/reports/python_compatibility.md +++ b/reports/python_compatibility.md @@ -6,7 +6,7 @@ Generated at: `2026-06-14` - decision: `pass` - target python: `3.11` -- files scanned: `144` +- files scanned: `146` - issues: `0` - syntax errors: `0` - f-string 3.11 violations: `0` diff --git a/reports/registry_audit.json b/reports/registry_audit.json index f21daa98..3df8ee28 100644 --- a/reports/registry_audit.json +++ b/reports/registry_audit.json @@ -21,8 +21,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e", - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, "compatibility": { "openai": "pass", @@ -53,7 +53,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", "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": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" } ] }, diff --git a/reports/registry_audit.md b/reports/registry_audit.md index 2aabf712..0cb0911b 100644 --- a/reports/registry_audit.md +++ b/reports/registry_audit.md @@ -6,8 +6,8 @@ - Maturity: `governed` - Owner: `Yao Team` - License: `MIT` -- Package SHA256: `18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e` -- Archive SHA256: `26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25` +- Package SHA256: `1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49` +- Archive SHA256: `7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0` - Install simulated: `True` ## Compatibility diff --git a/reports/review-studio.html b/reports/review-studio.html index c75660e2..2417312a 100644 --- a/reports/review-studio.html +++ b/reports/review-studio.html @@ -292,22 +292,22 @@

核心指标

-
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 A/B0/5

adjudication decisions; pending 5

Blueprint20/20

2.0 coverage; evidence pending 4

Runtime5/5

target conformance pass rate

Perm Probe4/4

0 native enforcement targets

Trust0

85 scripts scanned; secrets found

Py Compat0

144 files scanned for Python 3.11

Arch Debt3

1196 largest lines; 35 CLI handlers

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Waivers0

0 gates covered; human risk decisions

Intake4/4

0 valid submissions; 0 invalid

Claim Guard0

68 public surfaces scanned

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

553 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 A/B0/5

adjudication decisions; pending 5

Blueprint20/20

2.0 coverage; evidence pending 4

Runtime5/5

target conformance pass rate

Perm Probe4/4

0 native enforcement targets

Trust0

87 scripts scanned; secrets found

Py Compat0

146 files scanned for Python 3.11

Arch Debt2

1159 largest lines; 35 CLI handlers

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Waivers0

0 gates covered; human risk decisions

Intake4/4

0 valid submissions; 0 invalid

Claim Guard0

68 public surfaces scanned

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

555 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 944/1000; quality density 137.7

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

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

reports/security_trust_report.json 证据
通过

Python 兼容

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

reports/python_compatibility.json 证据
关注

架构维护

141 Python files; 3 hotspots; 0 blockers; largest 1196 lines; 35 CLI handlers

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; 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 0; missed 0; bad-output 0; risk low

reports/adoption_drift_report.json 证据
关注

人工批准

0 active waivers; 2 warning gates still need reviewer decision

reports/review_waivers.json 证据
关注

世界证据

4 pending world-class evidence entries; 1 human pending; 3 external pending; 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 944/1000; quality density 137.7

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

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

reports/security_trust_report.json 证据
通过

Python 兼容

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

reports/python_compatibility.json 证据
关注

架构维护

143 Python files; 2 hotspots; 0 blockers; largest 1159 lines; 35 CLI handlers

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; 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 0; missed 0; bad-output 0; risk low

reports/adoption_drift_report.json 证据
关注

人工批准

0 active waivers; 2 warning gates still need reviewer decision

reports/review_waivers.json 证据
关注

世界证据

4 pending world-class evidence entries; 1 human pending; 3 external pending; 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

阻断事项

无。

-

关注事项

+

关注事项

修复动作

-
关注

输出实验

补足 output eval 覆盖、execution evidence、blind A/B 和 reviewer adjudication。

没有输出质量和人工盲评证据时,Skill 只能证明会触发,不能证明输出真的更好且经得起审查。
修复位置
evals/output/cases.jsonl + reports/output_quality_scorecard.md + reports/output_review_decisions.json + reports/output_review_adjudication.md
验证命令
python3 scripts/adjudicate_output_review.py --write-template && python3 scripts/yao.py output-review
关注

架构维护

处理大文件和 CLI command surface 的维护性热点,优先拆分稳定职责边界。

Meta Skill 的门禁、报告和 CLI 会持续增长;如果不把架构债纳入审查,后续能力会越来越难验证和迁移。
修复位置
reports/architecture_maintainability.md + scripts/yao.py + scripts/render_review_studio.py
验证命令
python3 scripts/yao.py architecture-audit .
关注

人工批准

对保留的 warning 写入 reviewer、理由、范围和到期时间,或修掉 warning。

warning 可以被接受,但必须可审计、会过期,并且不能掩盖 blocker。
修复位置
reports/review_waivers.md
验证命令
python3 scripts/render_review_waivers.py .
关注

世界证据

补齐 provider、真人盲评、原生权限执行和真实客户端遥测证据,或明确本次发布不声明 world-class 完成。

世界级结论必须来自已接受的外部/人工证据;计划、metadata fallback、待评审和本地命令都不能替代完成证据。
修复位置
reports/world_class_evidence_ledger.md + reports/world_class_evidence_plan.md + reports/world_class_evidence_intake.md
验证命令
python3 scripts/yao.py world-class-ledger . && python3 scripts/yao.py review-studio .
+
关注

输出实验

补足 output eval 覆盖、execution evidence、blind A/B 和 reviewer adjudication。

没有输出质量和人工盲评证据时,Skill 只能证明会触发,不能证明输出真的更好且经得起审查。
修复位置
evals/output/cases.jsonl + reports/output_quality_scorecard.md + reports/output_review_decisions.json + reports/output_review_adjudication.md
验证命令
python3 scripts/adjudicate_output_review.py --write-template && python3 scripts/yao.py output-review
关注

架构维护

处理大文件和 CLI command surface 的维护性热点,优先拆分稳定职责边界。

Meta Skill 的门禁、报告和 CLI 会持续增长;如果不把架构债纳入审查,后续能力会越来越难验证和迁移。
修复位置
reports/architecture_maintainability.md + scripts/yao.py + scripts/render_review_studio.py
验证命令
python3 scripts/yao.py architecture-audit .
关注

人工批准

对保留的 warning 写入 reviewer、理由、范围和到期时间,或修掉 warning。

warning 可以被接受,但必须可审计、会过期,并且不能掩盖 blocker。
修复位置
reports/review_waivers.md
验证命令
python3 scripts/render_review_waivers.py .
关注

世界证据

补齐 provider、真人盲评、原生权限执行和真实客户端遥测证据,或明确本次发布不声明 world-class 完成。

世界级结论必须来自已接受的外部/人工证据;计划、metadata fallback、待评审和本地命令都不能替代完成证据。
修复位置
reports/world_class_evidence_ledger.md + reports/world_class_evidence_plan.md + reports/world_class_evidence_intake.md
验证命令
python3 scripts/yao.py world-class-ledger . && python3 scripts/yao.py review-studio .
@@ -363,12 +363,12 @@
-

信任报告

Secret
0
脚本数
85
网络脚本
3
Help 失败
0
包体哈希
18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e
+

信任报告

Secret
0
脚本数
87
网络脚本
3
Help 失败
0
包体哈希
1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49

安全边界

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

-

Python 兼容

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

Python 兼容

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

解释器边界

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

@@ -425,12 +425,12 @@

注册审计

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

-

包体元数据

名称
yao-meta-skill
版本
1.1.0
Maturity
governed
Owner
Yao Team
License
MIT
信任级别
local
目标平台
openai, claude, generic, agent-skills-compatible, vscode
兼容通过
6/6
归档哈希
26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25
+

包体元数据

名称
yao-meta-skill
版本
1.1.0
Maturity
governed
Owner
Yao Team
License
MIT
信任级别
local
目标平台
openai, claude, generic, agent-skills-compatible, vscode
兼容通过
6/6
归档哈希
7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0

发布路线

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

-

包体验证

目标数
4
Adapter
4
归档存在
Zip 条目
553
失败数
0
警告数
0
归档哈希
26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25
+

包体验证

目标数
4
Adapter
4
归档存在
Zip 条目
555
失败数
0
警告数
0
归档哈希
7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0
diff --git a/reports/review-studio.json b/reports/review-studio.json index 37c222d5..fdcdf08a 100644 --- a/reports/review-studio.json +++ b/reports/review-studio.json @@ -59,7 +59,7 @@ "key": "trust-report", "label": "信任报告", "status": "pass", - "detail": "0 secrets; 85 scripts; 3 network-capable scripts; 0 help smoke failures", + "detail": "0 secrets; 87 scripts; 3 network-capable scripts; 0 help smoke failures", "evidence": "reports/security_trust_report.json", "link": "security_trust_report.md" }, @@ -67,7 +67,7 @@ "key": "python-compat", "label": "Python 兼容", "status": "pass", - "detail": "Python 3.11; 144 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards", + "detail": "Python 3.11; 146 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards", "evidence": "reports/python_compatibility.json", "link": "python_compatibility.md" }, @@ -75,7 +75,7 @@ "key": "architecture-maintainability", "label": "架构维护", "status": "warn", - "detail": "141 Python files; 3 hotspots; 0 blockers; largest 1196 lines; 35 CLI handlers", + "detail": "143 Python files; 2 hotspots; 0 blockers; largest 1159 lines; 35 CLI handlers", "evidence": "reports/architecture_maintainability.json", "link": "architecture_maintainability.md" }, @@ -158,7 +158,7 @@ "key": "architecture-maintainability", "label": "架构维护", "status": "warn", - "detail": "141 Python files; 3 hotspots; 0 blockers; largest 1196 lines; 35 CLI handlers", + "detail": "143 Python files; 2 hotspots; 0 blockers; largest 1159 lines; 35 CLI handlers", "evidence": "reports/architecture_maintainability.json", "link": "architecture_maintainability.md" }, @@ -271,7 +271,7 @@ "path": "scripts/render_review_studio.py", "label": "Review Studio renderer", "kind": "source", - "line": 387, + "line": 121, "exists": true, "link": "../scripts/render_review_studio.py" }, @@ -891,7 +891,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 85 + "file_count": 87 }, { "path": "evals", @@ -906,7 +906,7 @@ "file_count": 195 } ], - "file_count": 344, + "file_count": 346, "folder_count": 4, "distribution": [ { @@ -931,7 +931,7 @@ }, { "label": "scripts", - "value": 85 + "value": 87 }, { "label": "evals", @@ -1060,7 +1060,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 85 + "file_count": 87 }, { "path": "evals", @@ -1360,9 +1360,9 @@ "world_class_task_count": 4, "world_class_ledger_pending_count": 4, "working_tree_dirty": true, - "changed_file_count": 36 + "changed_file_count": 39 }, - "commit": "7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4", + "commit": "d7018dac5583d8973d8544d5f02906e94e8b1f9b", "missing_artifacts": [], "limitations": [ "Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.", @@ -1437,9 +1437,9 @@ "failures": [] }, "trust_security": { - "scanned_files": 169, - "script_count": 85, - "internal_module_count": 12, + "scanned_files": 171, + "script_count": 87, + "internal_module_count": 14, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -1457,8 +1457,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 169, - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "package_hash_file_count": 171, + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" }, "skill_atlas": { "skill_count": 12, @@ -1496,8 +1496,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e", - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, "compatibility": { "openai": "pass", @@ -1528,7 +1528,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1544,8 +1544,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", - "archive_entry_count": 553, + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", + "archive_entry_count": 555, "failure_count": 0, "warning_count": 0 }, @@ -1556,7 +1556,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 553, + "archive_entry_count": 555, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1623,12 +1623,12 @@ { "field": "archive_sha256", "from": "", - "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "to": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "to": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" } ] }, @@ -3745,7 +3745,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.82, + "duration_ms": 27.82, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3773,7 +3773,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.73, + "duration_ms": 26.16, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3796,7 +3796,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.52, + "duration_ms": 27.01, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3847,7 +3847,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.92, + "duration_ms": 25.7, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3875,7 +3875,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.58, + "duration_ms": 25.64, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3898,7 +3898,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.69, + "duration_ms": 25.83, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3925,7 +3925,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.4, + "duration_ms": 26.02, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3948,7 +3948,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 25.48, + "duration_ms": 25.66, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4408,7 +4408,7 @@ "label": "Trust Security", "status": "pass", "objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.", - "current": "85 scripts; secrets 0; help failures 0", + "current": "87 scripts; secrets 0; help failures 0", "command": "python3 scripts/yao.py trust .", "test": "python3 tests/verify_trust_check.py", "evidence": [ @@ -4482,7 +4482,7 @@ "label": "Registry Distribution", "status": "pass", "objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.", - "current": "archive entries 553; install failures 0", + "current": "archive entries 555; 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": [ @@ -5106,9 +5106,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -5124,9 +5126,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -5947,9 +5947,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -5965,9 +5967,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -6788,9 +6788,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -6806,9 +6808,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -7613,9 +7613,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -7631,9 +7633,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -8438,9 +8438,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -8456,9 +8458,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", @@ -9655,9 +9655,9 @@ "ok": true, "skill_dir": ".", "summary": { - "scanned_files": 169, - "script_count": 85, - "internal_module_count": 12, + "scanned_files": 171, + "script_count": 87, + "internal_module_count": 14, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -9675,8 +9675,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 169, - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "package_hash_file_count": 171, + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" }, "failures": [], "warnings": [], @@ -10525,6 +10525,20 @@ "network_urls": [], "network_hosts": [] }, + { + "path": "scripts/review_studio_data.py", + "interface": "internal-module", + "interface_declared": true, + "interface_reason": "Imported by render_review_studio.py to load Review Studio source reports and metric cards.", + "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_formatting.py", "interface": "internal-module", @@ -10567,6 +10581,20 @@ "network_urls": [], "network_hosts": [] }, + { + "path": "scripts/review_studio_world_class.py", + "interface": "internal-module", + "interface_declared": true, + "interface_reason": "Imported by render_review_studio.py to render world-class evidence cards.", + "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/run_conformance_suite.py", "interface": "cli", @@ -10924,7 +10952,7 @@ "checked_count": 73, "passed_count": 73, "failed_count": 0, - "skipped_count": 12, + "skipped_count": 14, "failed_scripts": [], "results": [ { @@ -11659,6 +11687,10 @@ } ], "skipped": [ + { + "path": "scripts/review_studio_data.py", + "reason": "internal module" + }, { "path": "scripts/review_studio_formatting.py", "reason": "internal module" @@ -11671,6 +11703,10 @@ "path": "scripts/review_studio_layout.py", "reason": "internal module" }, + { + "path": "scripts/review_studio_world_class.py", + "reason": "internal module" + }, { "path": "scripts/skill_report_charts.py", "reason": "internal module" @@ -11888,7 +11924,7 @@ "root": ".", "summary": { "target_python": "3.11", - "file_count": 144, + "file_count": 146, "issue_count": 0, "syntax_error_count": 0, "fstring_311_violation_count": 0, @@ -12277,6 +12313,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "scripts/review_studio_data.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "scripts/review_studio_formatting.py", "ok": true, @@ -12295,6 +12337,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "scripts/review_studio_world_class.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "scripts/run_conformance_suite.py", "ok": true, @@ -12782,27 +12830,20 @@ "generated_at": "2026-06-14", "skill_dir": ".", "summary": { - "python_file_count": 141, - "script_file_count": 85, + "python_file_count": 143, + "script_file_count": 87, "test_file_count": 56, - "internal_module_count": 14, + "internal_module_count": 16, "cli_script_count": 72, "command_handler_count": 35, "warn_line_threshold": 900, "block_line_threshold": 1500, - "largest_file_lines": 1196, - "hotspot_count": 3, + "largest_file_lines": 1159, + "hotspot_count": 2, "blocker_count": 0, "decision": "watch-maintainability-hotspots" }, "largest_files": [ - { - "path": "scripts/render_review_studio.py", - "lines": 1196, - "kind": "cli-script", - "severity": "warn", - "recommendation": "Move data loading and large section renderers into focused review_studio_* modules." - }, { "path": "scripts/yao.py", "lines": 1159, @@ -12817,6 +12858,13 @@ "severity": "warn", "recommendation": "Split viewer data assembly from HTML section rendering." }, + { + "path": "scripts/render_review_studio.py", + "lines": 887, + "kind": "cli-script", + "severity": "pass", + "recommendation": "Move data loading and large section renderers into focused review_studio_* modules." + }, { "path": "tests/verify_yao_cli.py", "lines": 838, @@ -12882,13 +12930,6 @@ } ], "hotspots": [ - { - "path": "scripts/render_review_studio.py", - "lines": 1196, - "kind": "cli-script", - "severity": "warn", - "recommendation": "Move data loading and large section renderers into focused review_studio_* modules." - }, { "path": "scripts/yao.py", "lines": 1159, @@ -12905,11 +12946,6 @@ } ], "actions": [ - { - "path": "scripts/render_review_studio.py", - "severity": "warn", - "action": "Move data loading and large section renderers into focused review_studio_* modules." - }, { "path": "scripts/yao.py", "severity": "warn", @@ -12934,10 +12970,10 @@ "context_budget_tier": "production", "context_budget_limit": 1000, "skill_body_tokens": 751, - "other_text_tokens": 1083497, + "other_text_tokens": 1084439, "estimated_initial_load_tokens": 944, - "estimated_total_text_tokens": 1084248, - "relevant_file_count": 469, + "estimated_total_text_tokens": 1085190, + "relevant_file_count": 473, "unused_resource_dirs": [], "quality_signal_points": 130, "quality_density": 137.7 @@ -13860,9 +13896,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -14781,7 +14819,7 @@ "adoption_drift": { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-13T18:04:28Z", + "generated_at": "2026-06-13T18:17:38Z", "skill_dir": ".", "privacy_contract": { "storage": "local-first", @@ -15555,8 +15593,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e", - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, "compatibility": { "openai": "pass", @@ -15587,7 +15625,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -15612,7 +15650,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" } ] }, @@ -15635,8 +15673,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", - "archive_entry_count": 553, + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", + "archive_entry_count": 555, "failure_count": 0, "warning_count": 0 }, @@ -16301,7 +16339,7 @@ "installed_skill_dir": "[temporary-install-root]/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 553, + "archive_entry_count": 555, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -16643,12 +16681,12 @@ { "field": "archive_sha256", "from": "", - "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "to": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "to": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" } ] }, diff --git a/reports/review-viewer.json b/reports/review-viewer.json index 61ca90f7..ac9be3e0 100644 --- a/reports/review-viewer.json +++ b/reports/review-viewer.json @@ -437,7 +437,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 85 + "file_count": 87 }, { "path": "evals", @@ -452,7 +452,7 @@ "file_count": 195 } ], - "file_count": 344, + "file_count": 346, "folder_count": 4, "distribution": [ { @@ -477,7 +477,7 @@ }, { "label": "scripts", - "value": 85 + "value": 87 }, { "label": "evals", @@ -606,7 +606,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 85 + "file_count": 87 }, { "path": "evals", @@ -906,9 +906,9 @@ "world_class_task_count": 4, "world_class_ledger_pending_count": 4, "working_tree_dirty": true, - "changed_file_count": 36 + "changed_file_count": 39 }, - "commit": "7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4", + "commit": "d7018dac5583d8973d8544d5f02906e94e8b1f9b", "missing_artifacts": [], "limitations": [ "Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.", @@ -983,9 +983,9 @@ "failures": [] }, "trust_security": { - "scanned_files": 169, - "script_count": 85, - "internal_module_count": 12, + "scanned_files": 171, + "script_count": 87, + "internal_module_count": 14, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -1003,8 +1003,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 169, - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "package_hash_file_count": 171, + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" }, "skill_atlas": { "skill_count": 12, @@ -1042,8 +1042,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e", - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, "compatibility": { "openai": "pass", @@ -1074,7 +1074,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1090,8 +1090,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", - "archive_entry_count": 553, + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", + "archive_entry_count": 555, "failure_count": 0, "warning_count": 0 }, @@ -1102,7 +1102,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 553, + "archive_entry_count": 555, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1169,12 +1169,12 @@ { "field": "archive_sha256", "from": "", - "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "to": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "to": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" } ] }, diff --git a/reports/security_trust_report.json b/reports/security_trust_report.json index 74fa3b7f..307878be 100644 --- a/reports/security_trust_report.json +++ b/reports/security_trust_report.json @@ -2,9 +2,9 @@ "ok": true, "skill_dir": ".", "summary": { - "scanned_files": 169, - "script_count": 85, - "internal_module_count": 12, + "scanned_files": 171, + "script_count": 87, + "internal_module_count": 14, "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": 169, - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "package_hash_file_count": 171, + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" }, "failures": [], "warnings": [], @@ -872,6 +872,20 @@ "network_urls": [], "network_hosts": [] }, + { + "path": "scripts/review_studio_data.py", + "interface": "internal-module", + "interface_declared": true, + "interface_reason": "Imported by render_review_studio.py to load Review Studio source reports and metric cards.", + "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_formatting.py", "interface": "internal-module", @@ -914,6 +928,20 @@ "network_urls": [], "network_hosts": [] }, + { + "path": "scripts/review_studio_world_class.py", + "interface": "internal-module", + "interface_declared": true, + "interface_reason": "Imported by render_review_studio.py to render world-class evidence cards.", + "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/run_conformance_suite.py", "interface": "cli", @@ -1271,7 +1299,7 @@ "checked_count": 73, "passed_count": 73, "failed_count": 0, - "skipped_count": 12, + "skipped_count": 14, "failed_scripts": [], "results": [ { @@ -2006,6 +2034,10 @@ } ], "skipped": [ + { + "path": "scripts/review_studio_data.py", + "reason": "internal module" + }, { "path": "scripts/review_studio_formatting.py", "reason": "internal module" @@ -2018,6 +2050,10 @@ "path": "scripts/review_studio_layout.py", "reason": "internal module" }, + { + "path": "scripts/review_studio_world_class.py", + "reason": "internal module" + }, { "path": "scripts/skill_report_charts.py", "reason": "internal module" diff --git a/reports/security_trust_report.md b/reports/security_trust_report.md index 41e9dda2..69e3a523 100644 --- a/reports/security_trust_report.md +++ b/reports/security_trust_report.md @@ -1,9 +1,9 @@ # Security Trust Report - OK: `True` -- Scanned files: `169` -- Scripts: `85` -- Internal script modules: `12` +- Scanned files: `171` +- Scripts: `87` +- Internal script modules: `14` - 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: `169` -- Package SHA256: `18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e` +- Package hash files: `171` +- Package SHA256: `1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49` ## Failures @@ -121,9 +121,11 @@ | scripts/render_world_class_evidence_ledger.py | cli | True | True | True | False | False | True | False | Renders a machine-checkable ledger for world-class external and human evidence gaps. | | scripts/render_world_class_evidence_plan.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | | scripts/resource_boundary_check.py | cli | False | True | True | False | False | False | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | +| 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_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_world_class.py | internal-module | True | False | False | False | False | False | False | Imported by render_review_studio.py to render world-class evidence cards. | | scripts/run_conformance_suite.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | | scripts/run_description_optimization_suite.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | | scripts/run_eval_suite.py | cli | False | True | True | False | False | False | True | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | diff --git a/reports/skill-overview.html b/reports/skill-overview.html index 2487b7b0..816f9ea9 100644 --- a/reports/skill-overview.html +++ b/reports/skill-overview.html @@ -771,7 +771,7 @@

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

-
资产分布344项SKILL.mdREADME.mdagents/interface.yamlmanifest.jsonreferencesscripts
资产分布图展示当前包体的文件和目录重心。
+
资产分布346项SKILL.mdREADME.mdagents/interface.yamlmanifest.jsonreferencesscripts
资产分布图展示当前包体的文件和目录重心。
diff --git a/reports/skill-overview.json b/reports/skill-overview.json index 7e51eb59..6c08171d 100644 --- a/reports/skill-overview.json +++ b/reports/skill-overview.json @@ -436,7 +436,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 85 + "file_count": 87 }, { "path": "evals", @@ -451,7 +451,7 @@ "file_count": 195 } ], - "file_count": 344, + "file_count": 346, "folder_count": 4, "distribution": [ { @@ -476,7 +476,7 @@ }, { "label": "scripts", - "value": 85 + "value": 87 }, { "label": "evals", @@ -605,7 +605,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 85 + "file_count": 87 }, { "path": "evals", @@ -905,9 +905,9 @@ "world_class_task_count": 4, "world_class_ledger_pending_count": 4, "working_tree_dirty": true, - "changed_file_count": 36 + "changed_file_count": 39 }, - "commit": "7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4", + "commit": "d7018dac5583d8973d8544d5f02906e94e8b1f9b", "missing_artifacts": [], "limitations": [ "Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.", @@ -982,9 +982,9 @@ "failures": [] }, "trust_security": { - "scanned_files": 169, - "script_count": 85, - "internal_module_count": 12, + "scanned_files": 171, + "script_count": 87, + "internal_module_count": 14, "secret_findings": 0, "dependency_files": [ "requirements-ci.txt" @@ -1002,8 +1002,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 169, - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "package_hash_file_count": 171, + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" }, "skill_atlas": { "skill_count": 12, @@ -1041,8 +1041,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e", - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "package_sha256": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, "compatibility": { "openai": "pass", @@ -1073,7 +1073,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1089,8 +1089,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25", - "archive_entry_count": 553, + "archive_sha256": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0", + "archive_entry_count": 555, "failure_count": 0, "warning_count": 0 }, @@ -1101,7 +1101,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 553, + "archive_entry_count": 555, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1168,12 +1168,12 @@ { "field": "archive_sha256", "from": "", - "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "to": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "to": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" } ] }, diff --git a/reports/skill_atlas.json b/reports/skill_atlas.json index de98d65e..00d06470 100644 --- a/reports/skill_atlas.json +++ b/reports/skill_atlas.json @@ -123,9 +123,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", diff --git a/reports/skill_os2_audit.json b/reports/skill_os2_audit.json index a57b4f5a..d6cb9bcc 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 85; help failures 0", + "current": "secrets 0; scripts 87; help failures 0", "target": "Secrets, scripts, dependencies, permissions, and package hash are reviewable", "evidence": [ { @@ -281,7 +281,7 @@ "key": "registry-distribution", "label": "Registry Distribution", "status": "pass", - "current": "zip entries 553; install failures 0; permission failures 0", + "current": "zip entries 555; 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 565b4d8f..2bab22bb 100644 --- a/reports/skill_os2_audit.md +++ b/reports/skill_os2_audit.md @@ -23,11 +23,11 @@ Generated at: `2026-06-14` | 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 20; 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 85; 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 87; 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 | Packaged adapters expose explicit permission metadata and residual risks | Preserve residual-risk notes until real native enforcement exists. | | Native Permission Enforcement | external-required | native-enforced targets 0 | At least one target/client enforces approved permissions at runtime | Integrate a real client or 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 553; 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 555; 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 4; score 89 | 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 0 | 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 415e7f2d..60453551 100644 --- a/reports/skill_os2_coverage.json +++ b/reports/skill_os2_coverage.json @@ -122,7 +122,7 @@ "label": "Trust Security", "status": "pass", "objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.", - "current": "85 scripts; secrets 0; help failures 0", + "current": "87 scripts; secrets 0; help failures 0", "command": "python3 scripts/yao.py trust .", "test": "python3 tests/verify_trust_check.py", "evidence": [ @@ -196,7 +196,7 @@ "label": "Registry Distribution", "status": "pass", "objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.", - "current": "archive entries 553; install failures 0", + "current": "archive entries 555; 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 ec6b4d70..dc41e78a 100644 --- a/reports/skill_os2_coverage.md +++ b/reports/skill_os2_coverage.md @@ -21,9 +21,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` | 85 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` | +| Trust Security | `pass` | 87 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 553; 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 555; 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 4 | `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 48f2e40b..3a4ee04d 100644 --- a/reports/upgrade_check.json +++ b/reports/upgrade_check.json @@ -70,12 +70,12 @@ { "field": "archive_sha256", "from": "", - "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25" + "to": "7ebe0695052701dec068e1070b72aea19c865b039cf65e8773063b335395bdb0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e" + "to": "1636101ae369f5659d9a64e95bb19144e1271912f1ac5ce846fd7b569cb1ff49" } ] }, diff --git a/scripts/render_review_studio.py b/scripts/render_review_studio.py index 39a24d58..bded1e08 100644 --- a/scripts/render_review_studio.py +++ b/scripts/render_review_studio.py @@ -6,57 +6,16 @@ import os from pathlib import Path from typing import Any -try: - import yaml -except ImportError: # pragma: no cover - yaml = None - +from review_studio_data import evidence_paths, insight_cards, load_review_data from review_studio_formatting import registry_package_summary, render_kv_grid from review_studio_gates import add_blockers_from_gate, build_gates, status_label, weighted_score from review_studio_layout import render_review_nav, review_studio_css +from review_studio_world_class import render_world_class_evidence_entries 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 load_yaml(path: Path) -> dict[str, Any]: - if not path.exists() or yaml is None: - return {} - payload = yaml.safe_load(path.read_text(encoding="utf-8")) or {} - return payload if isinstance(payload, dict) else {} - - -def parse_frontmatter(path: Path) -> dict[str, Any]: - if not path.exists(): - return {} - lines = path.read_text(encoding="utf-8", errors="replace").splitlines() - if not lines or lines[0].strip() != "---": - return {} - try: - end_index = lines[1:].index("---") + 1 - except ValueError: - return {} - text = "\n".join(lines[1:end_index]) - if yaml is not None: - payload = yaml.safe_load(text) or {} - return payload if isinstance(payload, dict) else {} - data = {} - for line in text.splitlines(): - if ":" in line: - key, value = line.split(":", 1) - data[key.strip()] = value.strip().strip('"') - return data - def display_path(skill_dir: Path, path: Path) -> str: try: @@ -115,231 +74,6 @@ def source_refs( return refs -def evidence_paths(skill_dir: Path) -> dict[str, str]: - rels = { - "skill_overview": "reports/skill-overview.html", - "review_viewer": "reports/review-viewer.html", - "output_eval": "reports/output_quality_scorecard.md", - "output_execution": "reports/output_execution_runs.md", - "output_blind_review": "reports/output_blind_review_pack.md", - "output_review_decisions": "reports/output_review_decisions.json", - "output_review_adjudication": "reports/output_review_adjudication.md", - "benchmark_reproducibility": "reports/benchmark_reproducibility.md", - "skill_os2_coverage": "reports/skill_os2_coverage.md", - "runtime_conformance": "reports/conformance_matrix.md", - "trust_report": "reports/security_trust_report.md", - "python_compatibility": "reports/python_compatibility.md", - "architecture_maintainability": "reports/architecture_maintainability.md", - "permission_policy": "security/permission_policy.md", - "runtime_permissions": "reports/runtime_permission_probes.md", - "skill_atlas": "reports/skill_atlas.html", - "compiled_targets": "reports/compiled_targets.md", - "adoption_drift": "reports/adoption_drift_report.md", - "review_waivers": "reports/review_waivers.md", - "review_annotations": "reports/review_annotations.md", - "world_class_evidence_plan": "reports/world_class_evidence_plan.md", - "world_class_evidence_ledger": "reports/world_class_evidence_ledger.md", - "world_class_evidence_intake": "reports/world_class_evidence_intake.md", - "world_class_claim_guard": "reports/world_class_claim_guard.md", - "registry_audit": "reports/registry_audit.md", - "package_verification": "reports/package_verification.md", - "install_simulation": "reports/install_simulation.md", - "upgrade_check": "reports/upgrade_check.md", - "migration": "docs/migration-v2.md", - "skill_ir": "reports/skill-ir.json", - } - return {key: rel for key, rel in rels.items() if (skill_dir / rel).exists() or (ROOT / rel).exists()} - - -def load_review_data(skill_dir: Path) -> dict[str, dict[str, Any]]: - reports = skill_dir / "reports" - return { - "overview": load_json(reports / "skill-overview.json"), - "intent_confidence": load_json(reports / "intent-confidence.json"), - "intent_dialogue": load_json(reports / "intent-dialogue.json"), - "route_scorecard": load_json(reports / "route_scorecard.json"), - "output_quality": load_json(reports / "output_quality_scorecard.json"), - "output_execution": load_json(reports / "output_execution_runs.json"), - "output_blind_review": load_json(reports / "output_blind_review_pack.json"), - "output_review_adjudication": load_json(reports / "output_review_adjudication.json"), - "skill_os2_coverage": load_json(reports / "skill_os2_coverage.json"), - "compiled_targets": load_json(reports / "compiled_targets.json"), - "conformance": load_json(reports / "conformance_matrix.json"), - "runtime_permissions": load_json(reports / "runtime_permission_probes.json"), - "trust": load_json(reports / "security_trust_report.json"), - "python_compatibility": load_json(reports / "python_compatibility.json"), - "architecture_maintainability": load_json(reports / "architecture_maintainability.json"), - "context_budget": load_json(reports / "context_budget.json"), - "promotion": load_json(reports / "promotion_decisions.json"), - "atlas": load_json(reports / "skill_atlas.json"), - "adoption_drift": load_json(reports / "adoption_drift_report.json"), - "review_waivers": load_json(reports / "review_waivers.json"), - "review_annotations": load_json(reports / "review_annotations.json"), - "world_class_evidence_ledger": load_json(reports / "world_class_evidence_ledger.json"), - "world_class_evidence_intake": load_json(reports / "world_class_evidence_intake.json"), - "world_class_claim_guard": load_json(reports / "world_class_claim_guard.json"), - "registry": load_json(reports / "registry_audit.json"), - "package_verification": load_json(reports / "package_verification.json"), - "install_simulation": load_json(reports / "install_simulation.json"), - "upgrade_check": load_json(reports / "upgrade_check.json"), - "manifest": load_json(skill_dir / "manifest.json"), - "frontmatter": parse_frontmatter(skill_dir / "SKILL.md"), - "interface": load_yaml(skill_dir / "agents" / "interface.yaml"), - } - - -def insight_cards(data: dict[str, dict[str, Any]]) -> list[dict[str, str]]: - overview = data["overview"] - output = data["output_quality"].get("summary", {}) - output_execution = data["output_execution"].get("summary", {}) - output_blind = data["output_blind_review"].get("summary", {}) - output_review = data["output_review_adjudication"].get("summary", {}) - blueprint = data["skill_os2_coverage"].get("summary", {}) - compiled = data["compiled_targets"].get("summary", {}) - conformance = data["conformance"].get("summary", {}) - runtime_permissions = data["runtime_permissions"].get("summary", {}) - trust = data["trust"].get("summary", {}) - python_compat = data["python_compatibility"].get("summary", {}) - architecture = data["architecture_maintainability"].get("summary", {}) - atlas = data["atlas"].get("summary", {}) - adoption = data["adoption_drift"].get("summary", {}) - waivers = data["review_waivers"].get("summary", {}) - annotations = data["review_annotations"].get("summary", {}) - intake = data["world_class_evidence_intake"].get("summary", {}) - claim_guard = data["world_class_claim_guard"].get("summary", {}) - registry = data["registry"].get("package", {}) - package_verification = data["package_verification"].get("summary", {}) - install_simulation = data["install_simulation"].get("summary", {}) - upgrade = data["upgrade_check"].get("summary", {}) - cards = [ - { - "label": "Skill IR", - "value": str(overview.get("skill_ir", {}).get("schema_version", "missing")), - "detail": f"{overview.get('skill_ir', {}).get('target_count', 0)} targets in platform-neutral contract", - }, - { - "label": "Compiler", - "value": f"{compiled.get('pass_count', 0)}/{compiled.get('target_count', 0)}", - "detail": "target contracts compiled from Skill IR", - }, - { - "label": "Output Delta", - "value": str(output.get("delta", "n/a")), - "detail": f"{output.get('case_count', 0)} cases; {output.get('file_backed_case_count', 0)} file-backed", - }, - { - "label": "Exec Runs", - "value": str(output_execution.get("variant_run_count", 0)), - "detail": ( - f"command {output_execution.get('command_executed_count', 0)}; " - f"model {output_execution.get('model_executed_count', 0)}; " - f"recorded {output_execution.get('recorded_fixture_count', 0)}" - ), - }, - { - "label": "Blind A/B", - "value": str(output_blind.get("pair_count", 0)), - "detail": "review pairs hide baseline vs with-skill labels", - }, - { - "label": "Review A/B", - "value": f"{output_review.get('judgment_count', 0)}/{output_review.get('pair_count', 0)}", - "detail": f"adjudication decisions; pending {output_review.get('pending_count', 0)}", - }, - { - "label": "Blueprint", - "value": f"{blueprint.get('pass_count', 0)}/{blueprint.get('item_count', 0)}", - "detail": f"2.0 coverage; evidence pending {blueprint.get('world_class_evidence_pending_count', 0)}", - }, - { - "label": "Runtime", - "value": f"{conformance.get('pass_count', 0)}/{conformance.get('target_count', 0)}", - "detail": "target conformance pass rate", - }, - { - "label": "Perm Probe", - "value": f"{runtime_permissions.get('metadata_fallback_count', 0)}/{runtime_permissions.get('target_count', 0)}", - "detail": f"{runtime_permissions.get('native_enforcement_count', 0)} native enforcement targets", - }, - { - "label": "Trust", - "value": str(trust.get("secret_findings", 0)), - "detail": f"{trust.get('script_count', 0)} scripts scanned; secrets found", - }, - { - "label": "Py Compat", - "value": str(python_compat.get("issue_count", 0)), - "detail": f"{python_compat.get('file_count', 0)} files scanned for Python {python_compat.get('target_python', '3.11')}", - }, - { - "label": "Arch Debt", - "value": str(architecture.get("hotspot_count", 0)), - "detail": ( - f"{architecture.get('largest_file_lines', 0)} largest lines; " - f"{architecture.get('command_handler_count', 0)} CLI handlers" - ), - }, - { - "label": "Atlas", - "value": str(atlas.get("route_collision_count", 0)), - "detail": f"{atlas.get('skill_count', 0)} scanned skills; route collisions", - }, - { - "label": "Drift", - "value": str(adoption.get("risk_band", "n/a")), - "detail": f"{adoption.get('event_count', 0)} metadata events; {adoption.get('missed_trigger_count', 0)} missed triggers", - }, - { - "label": "Waivers", - "value": str(waivers.get("active_count", 0)), - "detail": f"{waivers.get('covered_gate_count', 0)} gates covered; human risk decisions", - }, - { - "label": "Intake", - "value": f"{intake.get('template_pass_count', 0)}/{intake.get('template_count', 0)}", - "detail": ( - f"{intake.get('valid_submission_count', 0)} valid submissions; " - f"{intake.get('invalid_submission_count', 0)} invalid" - ), - }, - { - "label": "Claim Guard", - "value": str(claim_guard.get("violation_count", 0)), - "detail": f"{claim_guard.get('claim_surface_count', 0)} public surfaces scanned", - }, - { - "label": "Notes", - "value": f"{annotations.get('open_count', 0)}/{annotations.get('annotation_count', 0)}", - "detail": f"{annotations.get('open_blocker_count', 0)} open blocker annotations", - }, - { - "label": "Registry", - "value": str(registry.get("version", "n/a")), - "detail": f"{len(registry.get('targets', []))} targets; {registry.get('license', 'no license')} license", - }, - { - "label": "Archive", - "value": "pass" if data["package_verification"].get("ok") else "n/a", - "detail": f"{package_verification.get('archive_entry_count', 0)} zip entries; package verification", - }, - { - "label": "Install", - "value": "pass" if data["install_simulation"].get("ok") else "n/a", - "detail": ( - f"{install_simulation.get('adapter_count', 0)} adapters; " - f"{install_simulation.get('installer_permission_enforced_count', 0)} permissions enforced; " - f"{install_simulation.get('installer_permission_failure_count', 0)} permission failures" - ), - }, - { - "label": "Upgrade", - "value": str(upgrade.get("recommended_bump", "n/a")), - "detail": f"declared {upgrade.get('declared_bump', 'n/a')}; {upgrade.get('breaking_change_count', 0)} breaking changes", - }, - ] - return cards - - def render_gate_list(gates: list[dict[str, str]]) -> str: items = [] for item in gates: @@ -684,49 +418,6 @@ def render_review_annotations_panel(annotations_report: dict[str, Any]) -> str: return "".join(cards) -def render_inline_list(items: list[Any], empty_label: str) -> str: - if not items: - return f"

{html.escape(empty_label)}

" - return "" - - -def render_world_class_evidence_entries(ledger: dict[str, Any]) -> str: - entries = ledger.get("entries", []) if isinstance(ledger, dict) else [] - if not entries: - return "

当前没有 world-class 证据条目。

" - cards = [] - for entry in entries: - observed = entry.get("observed_state", {}) if isinstance(entry.get("observed_state", {}), dict) else {} - observed_summary = "; ".join(f"{key}: {value}" for key, value in observed.items()) - status = str(entry.get("status", "pending")) - status_label_text = "已接受" if status == "accepted" else "待补证" - cards.append( - "
" - f"
{html.escape(status_label_text)} · {html.escape(str(entry.get('category', '')))}" - f"

{html.escape(str(entry.get('label', entry.get('key', 'evidence'))))}

" - f"

{html.escape(str(entry.get('objective', '')))}

" - f"
负责人
{html.escape(str(entry.get('owner', '')))}
" - f"
当前状态
{html.escape(str(entry.get('current', '')))}
" - f"
下一步
{html.escape(str(entry.get('next_action', '')))}
" - f"
观测值
{html.escape(observed_summary or '无')}
" - "
" - "

完成定义

" - + render_inline_list(entry.get("success_checks", []), "暂无完成定义。") - + "
" - "

证据来源

" - + render_inline_list(entry.get("evidence_artifacts", []), "暂无证据来源。") - + "
" - "

隐私约束

" - + render_inline_list(entry.get("privacy_contract", []), "暂无隐私约束。") - + "
" - "
" - "
" - ) - return "
" + "".join(cards) + "
" - - def render_html(report: dict[str, Any]) -> str: summary = report["summary"] gates = report["gates"] diff --git a/scripts/review_studio_data.py b/scripts/review_studio_data.py new file mode 100644 index 00000000..fb65fcb2 --- /dev/null +++ b/scripts/review_studio_data.py @@ -0,0 +1,281 @@ +#!/usr/bin/env python3 +"""Data loading and insight card helpers for Review Studio.""" + +import json +from pathlib import Path +from typing import Any + +try: + import yaml +except ImportError: # pragma: no cover + yaml = None + + +SCRIPT_INTERFACE = "internal-module" +SCRIPT_INTERFACE_REASON = "Imported by render_review_studio.py to load Review Studio source reports and metric cards." + +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 load_yaml(path: Path) -> dict[str, Any]: + if not path.exists() or yaml is None: + return {} + payload = yaml.safe_load(path.read_text(encoding="utf-8")) or {} + return payload if isinstance(payload, dict) else {} + + +def parse_frontmatter(path: Path) -> dict[str, Any]: + if not path.exists(): + return {} + lines = path.read_text(encoding="utf-8", errors="replace").splitlines() + if not lines or lines[0].strip() != "---": + return {} + try: + end_index = lines[1:].index("---") + 1 + except ValueError: + return {} + text = "\n".join(lines[1:end_index]) + if yaml is not None: + payload = yaml.safe_load(text) or {} + return payload if isinstance(payload, dict) else {} + data = {} + for line in text.splitlines(): + if ":" in line: + key, value = line.split(":", 1) + data[key.strip()] = value.strip().strip('"') + return data + + +def evidence_paths(skill_dir: Path) -> dict[str, str]: + rels = { + "skill_overview": "reports/skill-overview.html", + "review_viewer": "reports/review-viewer.html", + "output_eval": "reports/output_quality_scorecard.md", + "output_execution": "reports/output_execution_runs.md", + "output_blind_review": "reports/output_blind_review_pack.md", + "output_review_decisions": "reports/output_review_decisions.json", + "output_review_adjudication": "reports/output_review_adjudication.md", + "benchmark_reproducibility": "reports/benchmark_reproducibility.md", + "skill_os2_coverage": "reports/skill_os2_coverage.md", + "runtime_conformance": "reports/conformance_matrix.md", + "trust_report": "reports/security_trust_report.md", + "python_compatibility": "reports/python_compatibility.md", + "architecture_maintainability": "reports/architecture_maintainability.md", + "permission_policy": "security/permission_policy.md", + "runtime_permissions": "reports/runtime_permission_probes.md", + "skill_atlas": "reports/skill_atlas.html", + "compiled_targets": "reports/compiled_targets.md", + "adoption_drift": "reports/adoption_drift_report.md", + "review_waivers": "reports/review_waivers.md", + "review_annotations": "reports/review_annotations.md", + "world_class_evidence_plan": "reports/world_class_evidence_plan.md", + "world_class_evidence_ledger": "reports/world_class_evidence_ledger.md", + "world_class_evidence_intake": "reports/world_class_evidence_intake.md", + "world_class_claim_guard": "reports/world_class_claim_guard.md", + "registry_audit": "reports/registry_audit.md", + "package_verification": "reports/package_verification.md", + "install_simulation": "reports/install_simulation.md", + "upgrade_check": "reports/upgrade_check.md", + "migration": "docs/migration-v2.md", + "skill_ir": "reports/skill-ir.json", + } + return {key: rel for key, rel in rels.items() if (skill_dir / rel).exists() or (ROOT / rel).exists()} + + +def load_review_data(skill_dir: Path) -> dict[str, dict[str, Any]]: + reports = skill_dir / "reports" + return { + "overview": load_json(reports / "skill-overview.json"), + "intent_confidence": load_json(reports / "intent-confidence.json"), + "intent_dialogue": load_json(reports / "intent-dialogue.json"), + "route_scorecard": load_json(reports / "route_scorecard.json"), + "output_quality": load_json(reports / "output_quality_scorecard.json"), + "output_execution": load_json(reports / "output_execution_runs.json"), + "output_blind_review": load_json(reports / "output_blind_review_pack.json"), + "output_review_adjudication": load_json(reports / "output_review_adjudication.json"), + "skill_os2_coverage": load_json(reports / "skill_os2_coverage.json"), + "compiled_targets": load_json(reports / "compiled_targets.json"), + "conformance": load_json(reports / "conformance_matrix.json"), + "runtime_permissions": load_json(reports / "runtime_permission_probes.json"), + "trust": load_json(reports / "security_trust_report.json"), + "python_compatibility": load_json(reports / "python_compatibility.json"), + "architecture_maintainability": load_json(reports / "architecture_maintainability.json"), + "context_budget": load_json(reports / "context_budget.json"), + "promotion": load_json(reports / "promotion_decisions.json"), + "atlas": load_json(reports / "skill_atlas.json"), + "adoption_drift": load_json(reports / "adoption_drift_report.json"), + "review_waivers": load_json(reports / "review_waivers.json"), + "review_annotations": load_json(reports / "review_annotations.json"), + "world_class_evidence_ledger": load_json(reports / "world_class_evidence_ledger.json"), + "world_class_evidence_intake": load_json(reports / "world_class_evidence_intake.json"), + "world_class_claim_guard": load_json(reports / "world_class_claim_guard.json"), + "registry": load_json(reports / "registry_audit.json"), + "package_verification": load_json(reports / "package_verification.json"), + "install_simulation": load_json(reports / "install_simulation.json"), + "upgrade_check": load_json(reports / "upgrade_check.json"), + "manifest": load_json(skill_dir / "manifest.json"), + "frontmatter": parse_frontmatter(skill_dir / "SKILL.md"), + "interface": load_yaml(skill_dir / "agents" / "interface.yaml"), + } + + +def insight_cards(data: dict[str, dict[str, Any]]) -> list[dict[str, str]]: + overview = data["overview"] + output = data["output_quality"].get("summary", {}) + output_execution = data["output_execution"].get("summary", {}) + output_blind = data["output_blind_review"].get("summary", {}) + output_review = data["output_review_adjudication"].get("summary", {}) + blueprint = data["skill_os2_coverage"].get("summary", {}) + compiled = data["compiled_targets"].get("summary", {}) + conformance = data["conformance"].get("summary", {}) + runtime_permissions = data["runtime_permissions"].get("summary", {}) + trust = data["trust"].get("summary", {}) + python_compat = data["python_compatibility"].get("summary", {}) + architecture = data["architecture_maintainability"].get("summary", {}) + atlas = data["atlas"].get("summary", {}) + adoption = data["adoption_drift"].get("summary", {}) + waivers = data["review_waivers"].get("summary", {}) + annotations = data["review_annotations"].get("summary", {}) + intake = data["world_class_evidence_intake"].get("summary", {}) + claim_guard = data["world_class_claim_guard"].get("summary", {}) + registry = data["registry"].get("package", {}) + package_verification = data["package_verification"].get("summary", {}) + install_simulation = data["install_simulation"].get("summary", {}) + upgrade = data["upgrade_check"].get("summary", {}) + cards = [ + { + "label": "Skill IR", + "value": str(overview.get("skill_ir", {}).get("schema_version", "missing")), + "detail": f"{overview.get('skill_ir', {}).get('target_count', 0)} targets in platform-neutral contract", + }, + { + "label": "Compiler", + "value": f"{compiled.get('pass_count', 0)}/{compiled.get('target_count', 0)}", + "detail": "target contracts compiled from Skill IR", + }, + { + "label": "Output Delta", + "value": str(output.get("delta", "n/a")), + "detail": f"{output.get('case_count', 0)} cases; {output.get('file_backed_case_count', 0)} file-backed", + }, + { + "label": "Exec Runs", + "value": str(output_execution.get("variant_run_count", 0)), + "detail": ( + f"command {output_execution.get('command_executed_count', 0)}; " + f"model {output_execution.get('model_executed_count', 0)}; " + f"recorded {output_execution.get('recorded_fixture_count', 0)}" + ), + }, + { + "label": "Blind A/B", + "value": str(output_blind.get("pair_count", 0)), + "detail": "review pairs hide baseline vs with-skill labels", + }, + { + "label": "Review A/B", + "value": f"{output_review.get('judgment_count', 0)}/{output_review.get('pair_count', 0)}", + "detail": f"adjudication decisions; pending {output_review.get('pending_count', 0)}", + }, + { + "label": "Blueprint", + "value": f"{blueprint.get('pass_count', 0)}/{blueprint.get('item_count', 0)}", + "detail": f"2.0 coverage; evidence pending {blueprint.get('world_class_evidence_pending_count', 0)}", + }, + { + "label": "Runtime", + "value": f"{conformance.get('pass_count', 0)}/{conformance.get('target_count', 0)}", + "detail": "target conformance pass rate", + }, + { + "label": "Perm Probe", + "value": f"{runtime_permissions.get('metadata_fallback_count', 0)}/{runtime_permissions.get('target_count', 0)}", + "detail": f"{runtime_permissions.get('native_enforcement_count', 0)} native enforcement targets", + }, + { + "label": "Trust", + "value": str(trust.get("secret_findings", 0)), + "detail": f"{trust.get('script_count', 0)} scripts scanned; secrets found", + }, + { + "label": "Py Compat", + "value": str(python_compat.get("issue_count", 0)), + "detail": f"{python_compat.get('file_count', 0)} files scanned for Python {python_compat.get('target_python', '3.11')}", + }, + { + "label": "Arch Debt", + "value": str(architecture.get("hotspot_count", 0)), + "detail": ( + f"{architecture.get('largest_file_lines', 0)} largest lines; " + f"{architecture.get('command_handler_count', 0)} CLI handlers" + ), + }, + { + "label": "Atlas", + "value": str(atlas.get("route_collision_count", 0)), + "detail": f"{atlas.get('skill_count', 0)} scanned skills; route collisions", + }, + { + "label": "Drift", + "value": str(adoption.get("risk_band", "n/a")), + "detail": f"{adoption.get('event_count', 0)} metadata events; {adoption.get('missed_trigger_count', 0)} missed triggers", + }, + { + "label": "Waivers", + "value": str(waivers.get("active_count", 0)), + "detail": f"{waivers.get('covered_gate_count', 0)} gates covered; human risk decisions", + }, + { + "label": "Intake", + "value": f"{intake.get('template_pass_count', 0)}/{intake.get('template_count', 0)}", + "detail": ( + f"{intake.get('valid_submission_count', 0)} valid submissions; " + f"{intake.get('invalid_submission_count', 0)} invalid" + ), + }, + { + "label": "Claim Guard", + "value": str(claim_guard.get("violation_count", 0)), + "detail": f"{claim_guard.get('claim_surface_count', 0)} public surfaces scanned", + }, + { + "label": "Notes", + "value": f"{annotations.get('open_count', 0)}/{annotations.get('annotation_count', 0)}", + "detail": f"{annotations.get('open_blocker_count', 0)} open blocker annotations", + }, + { + "label": "Registry", + "value": str(registry.get("version", "n/a")), + "detail": f"{len(registry.get('targets', []))} targets; {registry.get('license', 'no license')} license", + }, + { + "label": "Archive", + "value": "pass" if data["package_verification"].get("ok") else "n/a", + "detail": f"{package_verification.get('archive_entry_count', 0)} zip entries; package verification", + }, + { + "label": "Install", + "value": "pass" if data["install_simulation"].get("ok") else "n/a", + "detail": ( + f"{install_simulation.get('adapter_count', 0)} adapters; " + f"{install_simulation.get('installer_permission_enforced_count', 0)} permissions enforced; " + f"{install_simulation.get('installer_permission_failure_count', 0)} permission failures" + ), + }, + { + "label": "Upgrade", + "value": str(upgrade.get("recommended_bump", "n/a")), + "detail": f"declared {upgrade.get('declared_bump', 'n/a')}; {upgrade.get('breaking_change_count', 0)} breaking changes", + }, + ] + return cards diff --git a/scripts/review_studio_world_class.py b/scripts/review_studio_world_class.py new file mode 100644 index 00000000..d365c76d --- /dev/null +++ b/scripts/review_studio_world_class.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +"""World-class evidence HTML helpers for Review Studio.""" + +import html +from typing import Any + + +SCRIPT_INTERFACE = "internal-module" +SCRIPT_INTERFACE_REASON = "Imported by render_review_studio.py to render world-class evidence cards." + + +def render_inline_list(items: list[Any], empty_label: str) -> str: + if not items: + return f"

{html.escape(empty_label)}

" + return "" + + +def render_world_class_evidence_entries(ledger: dict[str, Any]) -> str: + entries = ledger.get("entries", []) if isinstance(ledger, dict) else [] + if not entries: + return "

当前没有 world-class 证据条目。

" + cards = [] + for entry in entries: + observed = entry.get("observed_state", {}) if isinstance(entry.get("observed_state", {}), dict) else {} + observed_summary = "; ".join(f"{key}: {value}" for key, value in observed.items()) + status = str(entry.get("status", "pending")) + status_label_text = "已接受" if status == "accepted" else "待补证" + cards.append( + "
" + f"
{html.escape(status_label_text)} · {html.escape(str(entry.get('category', '')))}" + f"

{html.escape(str(entry.get('label', entry.get('key', 'evidence'))))}

" + f"

{html.escape(str(entry.get('objective', '')))}

" + f"
负责人
{html.escape(str(entry.get('owner', '')))}
" + f"
当前状态
{html.escape(str(entry.get('current', '')))}
" + f"
下一步
{html.escape(str(entry.get('next_action', '')))}
" + f"
观测值
{html.escape(observed_summary or '无')}
" + "
" + "

完成定义

" + + render_inline_list(entry.get("success_checks", []), "暂无完成定义。") + + "
" + "

证据来源

" + + render_inline_list(entry.get("evidence_artifacts", []), "暂无证据来源。") + + "
" + "

隐私约束

" + + render_inline_list(entry.get("privacy_contract", []), "暂无隐私约束。") + + "
" + "
" + "
" + ) + return "
" + "".join(cards) + "
" diff --git a/skill-ir/examples/yao-meta-skill.json b/skill-ir/examples/yao-meta-skill.json index 1e331dcb..50bb1e52 100644 --- a/skill-ir/examples/yao-meta-skill.json +++ b/skill-ir/examples/yao-meta-skill.json @@ -167,9 +167,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", @@ -185,9 +187,7 @@ "scripts/trigger_eval.py", "scripts/trust_check.py", "scripts/upgrade_check.py", - "scripts/validate_skill.py", - "scripts/verify_package.py", - "scripts/yao.py" + "scripts/validate_skill.py" ], "assets": [ "templates/basic_skill.md.j2", diff --git a/skill_atlas/catalog.json b/skill_atlas/catalog.json index 81336f17..fa52e6e8 100644 --- a/skill_atlas/catalog.json +++ b/skill_atlas/catalog.json @@ -79,9 +79,11 @@ "scripts/render_world_class_evidence_ledger.py", "scripts/render_world_class_evidence_plan.py", "scripts/resource_boundary_check.py", + "scripts/review_studio_data.py", "scripts/review_studio_formatting.py", "scripts/review_studio_gates.py", "scripts/review_studio_layout.py", + "scripts/review_studio_world_class.py", "scripts/run_conformance_suite.py", "scripts/run_description_optimization_suite.py", "scripts/run_eval_suite.py", diff --git a/tests/verify_architecture_maintainability.py b/tests/verify_architecture_maintainability.py index 36723c22..a61bb87c 100644 --- a/tests/verify_architecture_maintainability.py +++ b/tests/verify_architecture_maintainability.py @@ -38,14 +38,15 @@ def main() -> None: payload = json.loads(proc.stdout) assert payload["ok"], payload assert payload["summary"]["decision"] == "watch-maintainability-hotspots", payload["summary"] - assert payload["summary"]["hotspot_count"] >= 3, payload["summary"] + assert payload["summary"]["hotspot_count"] == 2, payload["summary"] assert payload["summary"]["blocker_count"] == 0, payload["summary"] assert 30 <= payload["summary"]["command_handler_count"] < 50, payload["summary"] assert payload["summary"]["largest_file_lines"] >= 900, payload["summary"] - assert payload["largest_files"][0]["path"] == "scripts/render_review_studio.py", payload["largest_files"][0] + assert payload["largest_files"][0]["path"] == "scripts/yao.py", payload["largest_files"][0] assert payload["largest_files"][0]["severity"] == "warn", payload["largest_files"][0] hotspot_paths = {item["path"] for item in payload["hotspots"]} - assert {"scripts/yao.py", "scripts/render_review_studio.py", "scripts/render_review_viewer.py"} <= hotspot_paths, hotspot_paths + assert {"scripts/yao.py", "scripts/render_review_viewer.py"} <= hotspot_paths, hotspot_paths + assert "scripts/render_review_studio.py" not in hotspot_paths, hotspot_paths assert output_json.exists(), output_json markdown = output_md.read_text(encoding="utf-8") assert "# Architecture Maintainability" in markdown, markdown diff --git a/tests/verify_review_studio.py b/tests/verify_review_studio.py index 446bba09..29a40585 100644 --- a/tests/verify_review_studio.py +++ b/tests/verify_review_studio.py @@ -319,7 +319,7 @@ def main() -> None: assert python_compat_gate["evidence"] == "reports/python_compatibility.json", python_compat_gate architecture_gate = next(item for item in payload["gates"] if item["key"] == "architecture-maintainability") assert architecture_gate["status"] == "warn", architecture_gate - assert "3 hotspots" in architecture_gate["detail"], architecture_gate + assert "2 hotspots" in architecture_gate["detail"], architecture_gate assert "0 blockers" in architecture_gate["detail"], architecture_gate assert "CLI handlers" in architecture_gate["detail"], architecture_gate assert architecture_gate["evidence"] == "reports/architecture_maintainability.json", architecture_gate @@ -392,7 +392,7 @@ def main() -> None: assert full_payload["evidence_paths"]["runtime_permissions"] == "reports/runtime_permission_probes.md", full_payload["evidence_paths"] assert full_payload["data"]["python_compatibility"]["summary"]["target_python"] == "3.11", full_payload["data"]["python_compatibility"] assert full_payload["data"]["python_compatibility"]["summary"]["issue_count"] == 0, full_payload["data"]["python_compatibility"] - assert full_payload["data"]["architecture_maintainability"]["summary"]["hotspot_count"] >= 3, full_payload["data"]["architecture_maintainability"] + assert full_payload["data"]["architecture_maintainability"]["summary"]["hotspot_count"] == 2, 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", "architecture-maintainability", "review-waivers", "world-class-evidence"}, full_payload["review_actions"] diff --git a/tests/verify_yao_cli.py b/tests/verify_yao_cli.py index b8eb38a3..8f3aefb2 100644 --- a/tests/verify_yao_cli.py +++ b/tests/verify_yao_cli.py @@ -217,7 +217,7 @@ def main() -> None: "2026-06-14", ) assert architecture_result["ok"], architecture_result - assert architecture_result["payload"]["summary"]["hotspot_count"] >= 3, architecture_result + assert architecture_result["payload"]["summary"]["hotspot_count"] == 2, architecture_result assert architecture_result["payload"]["summary"]["blocker_count"] == 0, architecture_result assert 30 <= architecture_result["payload"]["summary"]["command_handler_count"] < 50, architecture_result
路径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