Track architecture watchlist in Review Studio

This commit is contained in:
yaojingang
2026-06-16 00:22:16 +08:00
parent 909597f71d
commit 71f1ebea17
44 changed files with 536 additions and 333 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
{
"schema_version": "2.0",
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"package_count": 1,
"packages": [
{
@@ -16,7 +16,7 @@
"vscode"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
}
+4 -4
View File
@@ -16,8 +16,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94",
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
"compatibility": {
"openai": "pass",
@@ -48,10 +48,10 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
},
"generated_at": "2026-06-15"
"generated_at": "2026-06-16"
}
+62 -2
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"python_file_count": 173,
@@ -13,8 +13,10 @@
"entrypoint_command_handler_count": 18,
"command_module_count": 6,
"warn_line_threshold": 900,
"watch_line_threshold": 720,
"block_line_threshold": 1500,
"largest_file_lines": 899,
"watchlist_count": 8,
"hotspot_count": 0,
"blocker_count": 0,
"decision": "pass"
@@ -50,7 +52,7 @@
},
{
"path": "tests/verify_review_studio.py",
"lines": 760,
"lines": 763,
"kind": "test",
"severity": "pass",
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
@@ -105,6 +107,64 @@
"recommendation": "Split viewer data assembly from HTML section rendering."
}
],
"watchlist": [
{
"path": "tests/verify_yao_cli.py",
"lines": 899,
"kind": "test",
"severity": "pass",
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
},
{
"path": "scripts/yao_cli_parser.py",
"lines": 810,
"kind": "internal-module",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "scripts/skill_report_layout.py",
"lines": 808,
"kind": "internal-module",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "scripts/skill_report_model.py",
"lines": 801,
"kind": "internal-module",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "tests/verify_review_studio.py",
"lines": 763,
"kind": "test",
"severity": "pass",
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
},
{
"path": "scripts/compile_skill.py",
"lines": 734,
"kind": "cli-script",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "scripts/build_skill_atlas.py",
"lines": 730,
"kind": "cli-script",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "scripts/optimize_description.py",
"lines": 723,
"kind": "cli-script",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
}
],
"hotspots": [],
"actions": [],
"artifacts": {
+17 -2
View File
@@ -1,6 +1,6 @@
# Architecture Maintainability
Generated at: `2026-06-15`
Generated at: `2026-06-16`
## Summary
@@ -14,6 +14,8 @@ Generated at: `2026-06-15`
- entrypoint command handlers: `18`
- command modules: `6`
- largest file lines: `899`
- watch threshold lines: `720`
- watchlist: `8`
- hotspots: `0`
- blockers: `0`
@@ -23,6 +25,19 @@ This report keeps maintainability risk visible before the Meta Skill grows more
No file-size hotspots found.
## Watchlist
| File | Lines | Kind | Recommended next split |
| --- | ---: | --- | --- |
| `tests/verify_yao_cli.py` | `899` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. |
| `scripts/yao_cli_parser.py` | `810` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
| `scripts/skill_report_layout.py` | `808` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
| `scripts/skill_report_model.py` | `801` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
| `tests/verify_review_studio.py` | `763` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. |
| `scripts/compile_skill.py` | `734` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
| `scripts/build_skill_atlas.py` | `730` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
| `scripts/optimize_description.py` | `723` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
## Largest Files
| File | Lines | Kind | Severity |
@@ -31,7 +46,7 @@ No file-size hotspots found.
| `scripts/yao_cli_parser.py` | `810` | `internal-module` | `pass` |
| `scripts/skill_report_layout.py` | `808` | `internal-module` | `pass` |
| `scripts/skill_report_model.py` | `801` | `internal-module` | `pass` |
| `tests/verify_review_studio.py` | `760` | `test` | `pass` |
| `tests/verify_review_studio.py` | `763` | `test` | `pass` |
| `scripts/compile_skill.py` | `734` | `cli-script` | `pass` |
| `scripts/build_skill_atlas.py` | `730` | `cli-script` | `pass` |
| `scripts/optimize_description.py` | `723` | `cli-script` | `pass` |
+91 -71
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"target_count": 5,
@@ -387,9 +387,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -462,8 +463,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -495,15 +497,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -524,8 +526,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -637,9 +639,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -712,8 +715,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -745,15 +749,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -772,8 +776,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -1248,9 +1252,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -1323,8 +1328,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -1356,15 +1362,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -1385,8 +1391,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -1498,9 +1504,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -1573,8 +1580,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -1606,15 +1614,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -1633,8 +1641,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -2109,9 +2117,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -2184,8 +2193,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -2217,15 +2227,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -2246,8 +2256,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -2352,9 +2362,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -2427,8 +2438,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -2460,15 +2472,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -2487,8 +2499,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -2954,9 +2966,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -3029,8 +3042,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -3062,15 +3076,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -3091,8 +3105,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -3197,9 +3211,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -3272,8 +3287,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -3305,15 +3321,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -3332,8 +3348,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -3799,9 +3815,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -3874,8 +3891,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -3907,15 +3925,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -3936,8 +3954,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -4046,9 +4064,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -4121,8 +4140,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -4154,15 +4174,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -4181,8 +4201,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
+8 -8
View File
@@ -1329,10 +1329,10 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"file_count": 395,
"file_count": 399,
"folder_count": 4,
"distribution": [
{
@@ -1365,7 +1365,7 @@
},
{
"label": "reports",
"value": 218
"value": 222
}
]
},
@@ -1417,10 +1417,10 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"file_count": 395,
"file_count": 399,
"folder_count": 4,
"distribution": [
{
@@ -1453,7 +1453,7 @@
},
{
"label": "reports",
"value": 218
"value": 222
}
]
},
@@ -1655,8 +1655,8 @@
"`3` warnings",
"`28` declared internal modules",
"`82 / 82` CLI help smoke checks passing across `110` scripts",
"`613` zip entries",
"archive with `613` entries",
"`617` zip entries",
"archive with `617` entries",
"`12` installer permission checks enforced",
"`0` permission failures",
"`24` required artifacts",
+5 -5
View File
@@ -1,14 +1,14 @@
{
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"package_dir": "dist",
"install_root": "[temporary-install-root]",
"installed_skill_dir": "[temporary-install-root]/yao-meta-skill",
"install_root": "dist/install-simulation/simulate-yao-meta-skill",
"installed_skill_dir": "dist/install-simulation/simulate-yao-meta-skill/yao-meta-skill",
"summary": {
"archive_present": true,
"archive_entry_count": 613,
"archive_entry_count": 617,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -18,7 +18,7 @@
"installer_permission_failure_count": 0,
"permission_target_count": 4,
"permission_capability_count": 3,
"install_root_is_temp": true,
"install_root_is_temp": false,
"failure_count": 0,
"warning_count": 0
},
+10 -10
View File
@@ -34,7 +34,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 35.01,
"duration_ms": 27.48,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -62,7 +62,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 34.89,
"duration_ms": 26.5,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -85,7 +85,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 36.42,
"duration_ms": 26.36,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -113,7 +113,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 39.48,
"duration_ms": 29.13,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -136,7 +136,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 36.04,
"duration_ms": 29.82,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -164,7 +164,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 36.06,
"duration_ms": 27.36,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -187,7 +187,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 34.85,
"duration_ms": 25.99,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -214,7 +214,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 40.88,
"duration_ms": 25.94,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -237,7 +237,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 42.57,
"duration_ms": 25.81,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -266,7 +266,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 42.98,
"duration_ms": 26.11,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
+10 -10
View File
@@ -23,16 +23,16 @@ Command runner evidence is present. This proves the eval harness executed an ext
| Case | Variant | Mode | Model | Duration ms | Tokens | Score | Status |
| --- | --- | --- | --- | ---: | ---: | ---: | --- |
| skill-package-contract | baseline | command | local-output-eval-runner | 35.01 | 33 | 0.0 | pass |
| skill-package-contract | with_skill | command | local-output-eval-runner | 34.89 | 73 | 100.0 | pass |
| output-eval-expectation | baseline | command | local-output-eval-runner | 36.42 | 36 | 0.0 | pass |
| output-eval-expectation | with_skill | command | local-output-eval-runner | 39.48 | 80 | 100.0 | pass |
| ir-before-packaging | baseline | command | local-output-eval-runner | 36.04 | 33 | 0.0 | pass |
| ir-before-packaging | with_skill | command | local-output-eval-runner | 36.06 | 80 | 100.0 | pass |
| near-neighbor-boundary | baseline | command | local-output-eval-runner | 34.85 | 36 | 0.0 | pass |
| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 40.88 | 65 | 100.0 | pass |
| file-backed-governed-package | baseline | command | local-output-eval-runner | 42.57 | 37 | 0.0 | pass |
| file-backed-governed-package | with_skill | command | local-output-eval-runner | 42.98 | 98 | 100.0 | pass |
| skill-package-contract | baseline | command | local-output-eval-runner | 27.48 | 33 | 0.0 | pass |
| skill-package-contract | with_skill | command | local-output-eval-runner | 26.5 | 73 | 100.0 | pass |
| output-eval-expectation | baseline | command | local-output-eval-runner | 26.36 | 36 | 0.0 | pass |
| output-eval-expectation | with_skill | command | local-output-eval-runner | 29.13 | 80 | 100.0 | pass |
| ir-before-packaging | baseline | command | local-output-eval-runner | 29.82 | 33 | 0.0 | pass |
| ir-before-packaging | with_skill | command | local-output-eval-runner | 27.36 | 80 | 100.0 | pass |
| near-neighbor-boundary | baseline | command | local-output-eval-runner | 25.99 | 36 | 0.0 | pass |
| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 25.94 | 65 | 100.0 | pass |
| file-backed-governed-package | baseline | command | local-output-eval-runner | 25.81 | 37 | 0.0 | pass |
| file-backed-governed-package | with_skill | command | local-output-eval-runner | 26.11 | 98 | 100.0 | pass |
## Next Fixes
+3 -3
View File
@@ -1,15 +1,15 @@
{
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"package_dir": "dist",
"summary": {
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_entry_count": 613,
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"archive_entry_count": 617,
"failure_count": 0,
"warning_count": 0
},
+1 -1
View File
@@ -4,7 +4,7 @@
- Package directory: `dist`
- Targets: `4 / 4` adapters present
- Archive present: `True`
- Archive SHA256: `7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a`
- Archive SHA256: `052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9`
- Failures: `0`
- Warnings: `0`
+6 -6
View File
@@ -21,8 +21,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94",
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
"compatibility": {
"openai": "pass",
@@ -53,16 +53,16 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
},
"generated_at": "2026-06-15"
"generated_at": "2026-06-16"
},
"index": {
"schema_version": "2.0",
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"package_count": 1,
"packages": [
{
@@ -78,7 +78,7 @@
"vscode"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
},
+2 -2
View File
@@ -6,8 +6,8 @@
- Maturity: `governed`
- Owner: `Yao Team`
- License: `MIT`
- Package SHA256: `8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94`
- Archive SHA256: `7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a`
- Package SHA256: `85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a`
- Archive SHA256: `052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9`
- Install simulated: `True`
## Compatibility
+5 -5
View File
@@ -676,12 +676,12 @@
<section>
<h2>核心指标</h2>
<div class="metrics"><article class='metric'><span>Skill IR</span><strong>2.0.0</strong><p>5 targets in platform-neutral contract</p></article><article class='metric'><span>Compiler</span><strong>5/5</strong><p>target contracts compiled from Skill IR</p></article><article class='metric'><span>Output Delta</span><strong>100.0</strong><p>5 cases; 1 file-backed</p></article><article class='metric'><span>Exec Runs</span><strong>10</strong><p>command 10; model 0; recorded 0</p></article><article class='metric'><span>Blind A/B</span><strong>5</strong><p>review pairs hide baseline vs with-skill labels</p></article><article class='metric'><span>Review Kit</span><strong>0/5</strong><p>pending 5; answer key hidden</p></article><article class='metric'><span>Review A/B</span><strong>0/5</strong><p>adjudication decisions; pending 5</p></article><article class='metric'><span>Public Claim</span><strong>blocked</strong><p>4 blockers; local reproducible true</p></article><article class='metric'><span>Blueprint</span><strong>21/21</strong><p>2.0 coverage; extensions partial 0, planned 0; evidence pending 4</p></article><article class='metric'><span>Runtime</span><strong>5/5</strong><p>target conformance pass rate</p></article><article class='metric'><span>Perm Probe</span><strong>4/4</strong><p>0 native; 4 installer-enforced</p></article><article class='metric'><span>Trust</span><strong>0</strong><p>110 scripts scanned; secrets found</p></article><article class='metric'><span>Py Compat</span><strong>0</strong><p>176 files scanned for Python 3.11</p></article><article class='metric'><span>Arch Debt</span><strong>0</strong><p>899 largest lines; 64 CLI handlers; 18 in entrypoint</p></article><article class='metric'><span>Atlas</span><strong>5</strong><p>12 scanned skills; route collisions</p></article><article class='metric'><span>Drift</span><strong>low</strong><p>1 metadata events; 0 missed triggers</p></article><article class='metric'><span>Waivers</span><strong>0</strong><p>0 gates covered; human risk decisions</p></article><article class='metric'><span>Intake</span><strong>4/4</strong><p>0 valid submissions; 0 invalid</p></article><article class='metric'><span>Claim Guard</span><strong>0</strong><p>78 public surfaces scanned</p></article><article class='metric'><span>Notes</span><strong>0/0</strong><p>0 open blocker annotations</p></article><article class='metric'><span>Registry</span><strong>1.1.0</strong><p>5 targets; MIT license</p></article><article class='metric'><span>Archive</span><strong>pass</strong><p>613 zip entries; package verification</p></article><article class='metric'><span>Install</span><strong>pass</strong><p>4 adapters; 12 permissions enforced; 0 permission failures</p></article><article class='metric'><span>Upgrade</span><strong>minor</strong><p>declared minor; 0 breaking changes</p></article></div>
<div class="metrics"><article class='metric'><span>Skill IR</span><strong>2.0.0</strong><p>5 targets in platform-neutral contract</p></article><article class='metric'><span>Compiler</span><strong>5/5</strong><p>target contracts compiled from Skill IR</p></article><article class='metric'><span>Output Delta</span><strong>100.0</strong><p>5 cases; 1 file-backed</p></article><article class='metric'><span>Exec Runs</span><strong>10</strong><p>command 10; model 0; recorded 0</p></article><article class='metric'><span>Blind A/B</span><strong>5</strong><p>review pairs hide baseline vs with-skill labels</p></article><article class='metric'><span>Review Kit</span><strong>0/5</strong><p>pending 5; answer key hidden</p></article><article class='metric'><span>Review A/B</span><strong>0/5</strong><p>adjudication decisions; pending 5</p></article><article class='metric'><span>Public Claim</span><strong>blocked</strong><p>4 blockers; local reproducible true</p></article><article class='metric'><span>Blueprint</span><strong>21/21</strong><p>2.0 coverage; extensions partial 0, planned 0; evidence pending 4</p></article><article class='metric'><span>Runtime</span><strong>5/5</strong><p>target conformance pass rate</p></article><article class='metric'><span>Perm Probe</span><strong>4/4</strong><p>0 native; 4 installer-enforced</p></article><article class='metric'><span>Trust</span><strong>0</strong><p>110 scripts scanned; secrets found</p></article><article class='metric'><span>Py Compat</span><strong>0</strong><p>176 files scanned for Python 3.11</p></article><article class='metric'><span>Arch Debt</span><strong>0</strong><p>899 largest lines; 8 watchlist; 64 CLI handlers; 18 in entrypoint</p></article><article class='metric'><span>Atlas</span><strong>5</strong><p>12 scanned skills; route collisions</p></article><article class='metric'><span>Drift</span><strong>low</strong><p>1 metadata events; 0 missed triggers</p></article><article class='metric'><span>Waivers</span><strong>0</strong><p>0 gates covered; human risk decisions</p></article><article class='metric'><span>Intake</span><strong>4/4</strong><p>0 valid submissions; 0 invalid</p></article><article class='metric'><span>Claim Guard</span><strong>0</strong><p>78 public surfaces scanned</p></article><article class='metric'><span>Notes</span><strong>0/0</strong><p>0 open blocker annotations</p></article><article class='metric'><span>Registry</span><strong>1.1.0</strong><p>5 targets; MIT license</p></article><article class='metric'><span>Archive</span><strong>pass</strong><p>617 zip entries; package verification</p></article><article class='metric'><span>Install</span><strong>pass</strong><p>4 adapters; 12 permissions enforced; 0 permission failures</p></article><article class='metric'><span>Upgrade</span><strong>minor</strong><p>declared minor; 0 breaking changes</p></article></div>
</section>
<section>
<h2>审查闸门</h2>
<div class="gates"><article class='gate pass'><div><span>通过</span><h3>意图画布</h3></div><p>intent confidence 100/100; Intent is clear enough to package the first routeable version.</p><footer>reports/intent-confidence.json <a href='intent-confidence.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>触发实验</h3></div><p>13 trigger cases; 0 misroutes; 0 ambiguous</p><footer>reports/route_scorecard.json <a href='route_scorecard.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>输出实验</h3></div><p>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</p><footer>reports/output_quality_scorecard.json <a href='output_quality_scorecard.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>上下文</h3></div><p>initial load 960/1000; deferred 431562/120000; top deferred scripts 382351; resource governance governed; quality density 135.4</p><footer>reports/context_budget.json <a href='context_budget.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>运行矩阵</h3></div><p>5 / 5 targets pass</p><footer>reports/conformance_matrix.json <a href='conformance_matrix.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>信任报告</h3></div><p>0 secrets; 110 scripts; 3 network-capable scripts; 0 help smoke failures</p><footer>reports/security_trust_report.json <a href='security_trust_report.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>Python 兼容</h3></div><p>Python 3.11; 176 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards</p><footer>reports/python_compatibility.json <a href='python_compatibility.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>架构维护</h3></div><p>173 Python files; 0 hotspots; 0 blockers; largest 899 lines; 64 CLI handlers; 18 in entrypoint</p><footer>reports/architecture_maintainability.json <a href='architecture_maintainability.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>权限批准</h3></div><p>3/3 permissions approved; gaps 0; required file_write, network, subprocess</p><footer>reports/security_trust_report.json + security/permission_policy.json <a href='../security/permission_policy.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>权限探针</h3></div><p>4/4 targets probed; native 0; metadata fallback 4; installer 4; residual risks 4</p><footer>reports/runtime_permission_probes.json <a href='runtime_permission_probes.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>组合治理</h3></div><p>12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues</p><footer>reports/skill_atlas.json <a href='skill_atlas.html'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>运营回路</h3></div><p>1 metadata events; adoption 0; missed 0; bad-output 0; risk low</p><footer>reports/adoption_drift_report.json <a href='adoption_drift_report.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>人工批准</h3></div><p>0 active waivers; 1 warning gates still need reviewer decision</p><footer>reports/review_waivers.json <a href='review_waivers.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>世界证据</h3></div><p>4 pending world-class evidence entries; 1 human pending; 3 external pending; source checks 6/13 pass; 7 blocked; overclaim guard true</p><footer>reports/world_class_evidence_ledger.json <a href='world_class_evidence_ledger.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>注册审计</h3></div><p>yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures</p><footer>reports/registry_audit.json + reports/install_simulation.json <a href='registry_audit.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>发布路线</h3></div><p>0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended</p><footer>reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md <a href='promotion_decisions.md'>证据</a></footer></article></div>
<div class="gates"><article class='gate pass'><div><span>通过</span><h3>意图画布</h3></div><p>intent confidence 100/100; Intent is clear enough to package the first routeable version.</p><footer>reports/intent-confidence.json <a href='intent-confidence.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>触发实验</h3></div><p>13 trigger cases; 0 misroutes; 0 ambiguous</p><footer>reports/route_scorecard.json <a href='route_scorecard.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>输出实验</h3></div><p>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</p><footer>reports/output_quality_scorecard.json <a href='output_quality_scorecard.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>上下文</h3></div><p>initial load 960/1000; deferred 431562/120000; top deferred scripts 382351; resource governance governed; quality density 135.4</p><footer>reports/context_budget.json <a href='context_budget.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>运行矩阵</h3></div><p>5 / 5 targets pass</p><footer>reports/conformance_matrix.json <a href='conformance_matrix.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>信任报告</h3></div><p>0 secrets; 110 scripts; 3 network-capable scripts; 0 help smoke failures</p><footer>reports/security_trust_report.json <a href='security_trust_report.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>Python 兼容</h3></div><p>Python 3.11; 176 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards</p><footer>reports/python_compatibility.json <a href='python_compatibility.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>架构维护</h3></div><p>173 Python files; 0 hotspots; 8 watchlist files; 0 blockers; largest 899 lines; 64 CLI handlers; 18 in entrypoint</p><footer>reports/architecture_maintainability.json <a href='architecture_maintainability.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>权限批准</h3></div><p>3/3 permissions approved; gaps 0; required file_write, network, subprocess</p><footer>reports/security_trust_report.json + security/permission_policy.json <a href='../security/permission_policy.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>权限探针</h3></div><p>4/4 targets probed; native 0; metadata fallback 4; installer 4; residual risks 4</p><footer>reports/runtime_permission_probes.json <a href='runtime_permission_probes.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>组合治理</h3></div><p>12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues</p><footer>reports/skill_atlas.json <a href='skill_atlas.html'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>运营回路</h3></div><p>1 metadata events; adoption 0; missed 0; bad-output 0; risk low</p><footer>reports/adoption_drift_report.json <a href='adoption_drift_report.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>人工批准</h3></div><p>0 active waivers; 1 warning gates still need reviewer decision</p><footer>reports/review_waivers.json <a href='review_waivers.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>世界证据</h3></div><p>4 pending world-class evidence entries; 1 human pending; 3 external pending; source checks 6/13 pass; 7 blocked; overclaim guard true</p><footer>reports/world_class_evidence_ledger.json <a href='world_class_evidence_ledger.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>注册审计</h3></div><p>yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures</p><footer>reports/registry_audit.json + reports/install_simulation.json <a href='registry_audit.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>发布路线</h3></div><p>0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended</p><footer>reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md <a href='promotion_decisions.md'>证据</a></footer></article></div>
</section>
<div class="twocol">
@@ -748,7 +748,7 @@
</section>
<section id="trust" class="twocol">
<div class="panel"><h2>信任报告</h2><dl class='kv-grid'><div><dt>Secret</dt><dd>0</dd></div><div><dt>脚本数</dt><dd>110</dd></div><div><dt>网络脚本</dt><dd>3</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94</code></dd></div></dl></div>
<div class="panel"><h2>信任报告</h2><dl class='kv-grid'><div><dt>Secret</dt><dd>0</dd></div><div><dt>脚本数</dt><dd>110</dd></div><div><dt>网络脚本</dt><dd>3</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a</code></dd></div></dl></div>
<div class="panel"><h2>安全边界</h2><p>高风险 secret、远程 inline execution、缺失依赖策略或无法解释的脚本接口应阻断 governed release。</p></div>
</section>
@@ -827,12 +827,12 @@
<section id="registry" class="twocol">
<div class="panel"><h2>注册审计</h2><p>yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures</p></div>
<div class="panel"><h2>包体元数据</h2><dl class='kv-grid'><div><dt>名称</dt><dd>yao-meta-skill</dd></div><div><dt>版本</dt><dd>1.1.0</dd></div><div><dt>Maturity</dt><dd>governed</dd></div><div><dt>Owner</dt><dd>Yao Team</dd></div><div><dt>License</dt><dd>MIT</dd></div><div><dt>信任级别</dt><dd>local</dd></div><div><dt>目标平台</dt><dd>openai, claude, generic, agent-skills-compatible, vscode</dd></div><div><dt>兼容通过</dt><dd>6/6</dd></div><div><dt>归档哈希</dt><dd><code>7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a</code></dd></div></dl></div>
<div class="panel"><h2>包体元数据</h2><dl class='kv-grid'><div><dt>名称</dt><dd>yao-meta-skill</dd></div><div><dt>版本</dt><dd>1.1.0</dd></div><div><dt>Maturity</dt><dd>governed</dd></div><div><dt>Owner</dt><dd>Yao Team</dd></div><div><dt>License</dt><dd>MIT</dd></div><div><dt>信任级别</dt><dd>local</dd></div><div><dt>目标平台</dt><dd>openai, claude, generic, agent-skills-compatible, vscode</dd></div><div><dt>兼容通过</dt><dd>6/6</dd></div><div><dt>归档哈希</dt><dd><code>052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9</code></dd></div></dl></div>
</section>
<section id="release" class="twocol">
<div class="panel"><h2>发布路线</h2><p>0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended</p></div>
<div class="panel"><h2>包体验证</h2><dl class='kv-grid'><div><dt>目标数</dt><dd>4</dd></div><div><dt>Adapter</dt><dd>4</dd></div><div><dt>归档存在</dt><dd></dd></div><div><dt>Zip 条目</dt><dd>613</dd></div><div><dt>失败数</dt><dd>0</dd></div><div><dt>警告数</dt><dd>0</dd></div><div><dt>归档哈希</dt><dd><code>7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a</code></dd></div></dl></div>
<div class="panel"><h2>包体验证</h2><dl class='kv-grid'><div><dt>目标数</dt><dd>4</dd></div><div><dt>Adapter</dt><dd>4</dd></div><div><dt>归档存在</dt><dd></dd></div><div><dt>Zip 条目</dt><dd>617</dd></div><div><dt>失败数</dt><dd>0</dd></div><div><dt>警告数</dt><dd>0</dd></div><div><dt>归档哈希</dt><dd><code>052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9</code></dd></div></dl></div>
</section>
<section class="twocol">
+207 -127
View File
@@ -75,7 +75,7 @@
"key": "architecture-maintainability",
"label": "架构维护",
"status": "pass",
"detail": "173 Python files; 0 hotspots; 0 blockers; largest 899 lines; 64 CLI handlers; 18 in entrypoint",
"detail": "173 Python files; 0 hotspots; 8 watchlist files; 0 blockers; largest 899 lines; 64 CLI handlers; 18 in entrypoint",
"evidence": "reports/architecture_maintainability.json",
"link": "architecture_maintainability.md"
},
@@ -1205,10 +1205,10 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"file_count": 395,
"file_count": 399,
"folder_count": 4,
"distribution": [
{
@@ -1241,7 +1241,7 @@
},
{
"label": "reports",
"value": 218
"value": 222
}
]
},
@@ -1375,7 +1375,7 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"strengths": [
@@ -1809,7 +1809,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 197,
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
},
"skill_atlas": {
"skill_count": 12,
@@ -1847,8 +1847,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94",
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
"compatibility": {
"openai": "pass",
@@ -1879,12 +1879,12 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
},
"generated_at": "2026-06-15"
"generated_at": "2026-06-16"
},
"failures": [],
"warnings": []
@@ -1895,8 +1895,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_entry_count": 613,
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"archive_entry_count": 617,
"failure_count": 0,
"warning_count": 0
},
@@ -1907,7 +1907,7 @@
"ok": true,
"summary": {
"archive_present": true,
"archive_entry_count": 613,
"archive_entry_count": 617,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -1917,7 +1917,7 @@
"installer_permission_failure_count": 0,
"permission_target_count": 4,
"permission_capability_count": 3,
"install_root_is_temp": true,
"install_root_is_temp": false,
"failure_count": 0,
"warning_count": 0
},
@@ -1974,12 +1974,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
"to": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "4660a11db94947ab603dca42eddc447698785d08f0df2972bf2ca43454683306"
"to": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
},
@@ -4346,7 +4346,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 35.01,
"duration_ms": 27.48,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4374,7 +4374,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 34.89,
"duration_ms": 26.5,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4397,7 +4397,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 36.42,
"duration_ms": 26.36,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4425,7 +4425,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 39.48,
"duration_ms": 29.13,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4448,7 +4448,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 36.04,
"duration_ms": 29.82,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4476,7 +4476,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 36.06,
"duration_ms": 27.36,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4499,7 +4499,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 34.85,
"duration_ms": 25.99,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4526,7 +4526,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 40.88,
"duration_ms": 25.94,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4549,7 +4549,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 42.57,
"duration_ms": 25.81,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4578,7 +4578,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 42.98,
"duration_ms": 26.11,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -5695,7 +5695,7 @@
"skill_os2_coverage": {
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"item_count": 21,
@@ -5898,7 +5898,7 @@
"label": "Registry Distribution",
"status": "pass",
"objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.",
"current": "archive entries 613; install failures 0",
"current": "archive entries 617; 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": [
@@ -6307,7 +6307,7 @@
"label": "Evidence Consistency",
"status": "pass",
"objective": "Recommended Skill OS 2.0 implementation PR from the upgrade plan.",
"current": "26 consistency checks",
"current": "27 consistency checks",
"command": "make ci-test",
"test": "tests/verify_evidence_consistency.py",
"evidence": [
@@ -6451,7 +6451,7 @@
"compiled_targets": {
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"target_count": 5,
@@ -6837,9 +6837,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -6912,8 +6913,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -6945,15 +6947,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -6974,8 +6976,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -7087,9 +7089,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -7162,8 +7165,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -7195,15 +7199,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -7222,8 +7226,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -7698,9 +7702,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -7773,8 +7778,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -7806,15 +7812,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -7835,8 +7841,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -7948,9 +7954,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -8023,8 +8030,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -8056,15 +8064,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -8083,8 +8091,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -8559,9 +8567,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -8634,8 +8643,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -8667,15 +8677,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -8696,8 +8706,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -8802,9 +8812,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -8877,8 +8888,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -8910,15 +8922,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -8937,8 +8949,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -9404,9 +9416,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -9479,8 +9492,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -9512,15 +9526,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -9541,8 +9555,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -9647,9 +9661,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -9722,8 +9737,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -9755,15 +9771,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -9782,8 +9798,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -10249,9 +10265,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -10324,8 +10341,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -10357,15 +10375,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -10386,8 +10404,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -10496,9 +10514,10 @@
},
"file_write": {
"required": true,
"script_count": 68,
"script_count": 69,
"scripts": [
"scripts/adjudicate_output_review.py",
"scripts/apply_adaptation.py",
"scripts/build_confusion_matrix.py",
"scripts/build_skill_atlas.py",
"scripts/check_update.py",
@@ -10571,8 +10590,9 @@
},
"subprocess": {
"required": true,
"script_count": 9,
"script_count": 10,
"scripts": [
"scripts/apply_adaptation.py",
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
"scripts/render_eval_dashboard.py",
@@ -10604,15 +10624,15 @@
},
"help_smoke": {
"enabled": true,
"checked_count": 81,
"checked_count": 82,
"failed_count": 0,
"failed_scripts": []
},
"trust_summary": {
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 68,
"subprocess_script_count": 9,
"file_write_script_count": 69,
"subprocess_script_count": 10,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -10631,8 +10651,8 @@
],
"capability_counts": {
"network": 3,
"file_write": 68,
"subprocess": 9,
"file_write": 69,
"subprocess": 10,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -11392,7 +11412,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 197,
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
},
"failures": [],
"warnings": [],
@@ -15201,7 +15221,7 @@
"architecture_maintainability": {
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"python_file_count": 173,
@@ -15213,8 +15233,10 @@
"entrypoint_command_handler_count": 18,
"command_module_count": 6,
"warn_line_threshold": 900,
"watch_line_threshold": 720,
"block_line_threshold": 1500,
"largest_file_lines": 899,
"watchlist_count": 8,
"hotspot_count": 0,
"blocker_count": 0,
"decision": "pass"
@@ -15250,7 +15272,7 @@
},
{
"path": "tests/verify_review_studio.py",
"lines": 760,
"lines": 763,
"kind": "test",
"severity": "pass",
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
@@ -15305,6 +15327,64 @@
"recommendation": "Split viewer data assembly from HTML section rendering."
}
],
"watchlist": [
{
"path": "tests/verify_yao_cli.py",
"lines": 899,
"kind": "test",
"severity": "pass",
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
},
{
"path": "scripts/yao_cli_parser.py",
"lines": 810,
"kind": "internal-module",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "scripts/skill_report_layout.py",
"lines": 808,
"kind": "internal-module",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "scripts/skill_report_model.py",
"lines": 801,
"kind": "internal-module",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "tests/verify_review_studio.py",
"lines": 763,
"kind": "test",
"severity": "pass",
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
},
{
"path": "scripts/compile_skill.py",
"lines": 734,
"kind": "cli-script",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "scripts/build_skill_atlas.py",
"lines": 730,
"kind": "cli-script",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
},
{
"path": "scripts/optimize_description.py",
"lines": 723,
"kind": "cli-script",
"severity": "pass",
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
}
],
"hotspots": [],
"actions": [],
"artifacts": {
@@ -17829,7 +17909,7 @@
"world_class_evidence_ledger": {
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"decision": "evidence-pending",
"ready_to_claim_world_class": false,
@@ -18335,7 +18415,7 @@
"world_class_evidence_intake": {
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"schema_present": true,
@@ -18712,7 +18792,7 @@
"world_class_submission_review": {
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"decision": "awaiting-submissions",
"ready_to_claim_world_class": false,
@@ -19077,7 +19157,7 @@
"world_class_operator_runbook": {
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"evidence_item_count": 4,
@@ -19591,7 +19671,7 @@
"world_class_claim_guard": {
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"ledger_ready_to_claim_world_class": false,
@@ -19975,8 +20055,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94",
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
"compatibility": {
"openai": "pass",
@@ -20007,16 +20087,16 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
},
"generated_at": "2026-06-15"
"generated_at": "2026-06-16"
},
"index": {
"schema_version": "2.0",
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"package_count": 1,
"packages": [
{
@@ -20032,7 +20112,7 @@
"vscode"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
},
@@ -20048,15 +20128,15 @@
"package_verification": {
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"package_dir": "dist",
"summary": {
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_entry_count": 613,
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"archive_entry_count": 617,
"failure_count": 0,
"warning_count": 0
},
@@ -20714,14 +20794,14 @@
"install_simulation": {
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"package_dir": "dist",
"install_root": "[temporary-install-root]",
"installed_skill_dir": "[temporary-install-root]/yao-meta-skill",
"install_root": "dist/install-simulation/simulate-yao-meta-skill",
"installed_skill_dir": "dist/install-simulation/simulate-yao-meta-skill/yao-meta-skill",
"summary": {
"archive_present": true,
"archive_entry_count": 613,
"archive_entry_count": 617,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -20731,7 +20811,7 @@
"installer_permission_failure_count": 0,
"permission_target_count": 4,
"permission_capability_count": 3,
"install_root_is_temp": true,
"install_root_is_temp": false,
"failure_count": 0,
"warning_count": 0
},
@@ -20994,7 +21074,7 @@
"upgrade_check": {
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-13",
"generated_at": "2026-06-16",
"previous": {
"name": "yao-meta-skill",
"version": "1.0.0",
@@ -21063,12 +21143,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
"to": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "4660a11db94947ab603dca42eddc447698785d08f0df2972bf2ca43454683306"
"to": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
},
@@ -21083,8 +21163,8 @@
"artifacts": {
"previous_package": "registry/examples/yao-meta-skill-1.0.0.json",
"current_package": "reports/registry_audit.json",
"json": "tests/tmp_review_studio/upgrade_check.json",
"markdown": "tests/tmp_review_studio/upgrade_check.md"
"json": "reports/upgrade_check.json",
"markdown": "reports/upgrade_check.md"
}
},
"manifest": {
+15 -15
View File
@@ -525,10 +525,10 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"file_count": 395,
"file_count": 399,
"folder_count": 4,
"distribution": [
{
@@ -561,7 +561,7 @@
},
{
"label": "reports",
"value": 218
"value": 222
}
]
},
@@ -695,7 +695,7 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"strengths": [
@@ -1129,7 +1129,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 197,
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
},
"skill_atlas": {
"skill_count": 12,
@@ -1167,8 +1167,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94",
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
"compatibility": {
"openai": "pass",
@@ -1199,12 +1199,12 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
},
"generated_at": "2026-06-15"
"generated_at": "2026-06-16"
},
"failures": [],
"warnings": []
@@ -1215,8 +1215,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_entry_count": 613,
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"archive_entry_count": 617,
"failure_count": 0,
"warning_count": 0
},
@@ -1227,7 +1227,7 @@
"ok": true,
"summary": {
"archive_present": true,
"archive_entry_count": 613,
"archive_entry_count": 617,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -1237,7 +1237,7 @@
"installer_permission_failure_count": 0,
"permission_target_count": 4,
"permission_capability_count": 3,
"install_root_is_temp": true,
"install_root_is_temp": false,
"failure_count": 0,
"warning_count": 0
},
@@ -1294,12 +1294,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
"to": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "4660a11db94947ab603dca42eddc447698785d08f0df2972bf2ca43454683306"
"to": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
},
+1 -1
View File
@@ -23,7 +23,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 197,
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
},
"failures": [],
"warnings": [],
+1 -1
View File
@@ -16,7 +16,7 @@
- Interactive scripts: `0`
- Package hash scope: `source-contract-without-generated-reports`
- Package hash files: `197`
- Package SHA256: `8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94`
- Package SHA256: `85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a`
## Failures
+1 -1
View File
@@ -930,7 +930,7 @@
<p><span data-lang="zh-CN">让 reviewer 快速确认关键文件、目录和资产分布。</span><span data-lang="en">Lets reviewers confirm key files, directories, and asset distribution quickly.</span></p>
</div>
<div class="two-col">
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.4" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.0 77.0" stroke-dashoffset="-2.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="74.3 25.7" stroke-dashoffset="-25.7" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">395</text><text data-lang="en" x="130" y="136" text-anchor="middle">395 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.4" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.0 77.0" stroke-dashoffset="-2.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="74.3 25.7" stroke-dashoffset="-25.7" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">399</text><text data-lang="en" x="130" y="136" text-anchor="middle">399 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
<table>
<thead><tr><th><span data-lang="zh-CN">路径</span><span data-lang="en">Path</span></th><th><span data-lang="zh-CN">作用</span><span data-lang="en">Role</span></th><th><span data-lang="zh-CN">类型</span><span data-lang="en">Type</span></th></tr></thead>
<tbody><tr><td>SKILL.md</td><td><span data-lang="zh-CN">Skill 入口文件</span><span data-lang="en">Skill entrypoint</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>README.md</td><td><span data-lang="zh-CN">人类可读使用说明</span><span data-lang="en">Human-readable usage guide</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>agents/interface.yaml</td><td><span data-lang="zh-CN">跨平台接口元数据</span><span data-lang="en">Neutral interface metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>manifest.json</td><td><span data-lang="zh-CN">生命周期与打包元数据</span><span data-lang="en">Lifecycle and portability metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>references</td><td><span data-lang="zh-CN">扩展指导与复用资料</span><span data-lang="en">Extended guidance and reusable notes</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>scripts</td><td><span data-lang="zh-CN">确定性脚本或本地工具</span><span data-lang="en">Deterministic helpers or local tooling</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>evals</td><td><span data-lang="zh-CN">触发与质量检查</span><span data-lang="en">Trigger and quality checks</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>reports</td><td><span data-lang="zh-CN">生成的证据与总结报告</span><span data-lang="en">Generated evidence and overview artifacts</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr></tbody>
+15 -15
View File
@@ -525,10 +525,10 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"file_count": 395,
"file_count": 399,
"folder_count": 4,
"distribution": [
{
@@ -561,7 +561,7 @@
},
{
"label": "reports",
"value": 218
"value": 222
}
]
},
@@ -699,7 +699,7 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"strengths": [
@@ -1133,7 +1133,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 197,
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
},
"skill_atlas": {
"skill_count": 12,
@@ -1171,8 +1171,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94",
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
"compatibility": {
"openai": "pass",
@@ -1203,12 +1203,12 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
},
"generated_at": "2026-06-15"
"generated_at": "2026-06-16"
},
"failures": [],
"warnings": []
@@ -1219,8 +1219,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_entry_count": 613,
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"archive_entry_count": 617,
"failure_count": 0,
"warning_count": 0
},
@@ -1231,7 +1231,7 @@
"ok": true,
"summary": {
"archive_present": true,
"archive_entry_count": 613,
"archive_entry_count": 617,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -1241,7 +1241,7 @@
"installer_permission_failure_count": 0,
"permission_target_count": 4,
"permission_capability_count": 3,
"install_root_is_temp": true,
"install_root_is_temp": false,
"failure_count": 0,
"warning_count": 0
},
@@ -1298,12 +1298,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
"to": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "4660a11db94947ab603dca42eddc447698785d08f0df2972bf2ca43454683306"
"to": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
},
+2 -2
View File
@@ -119,8 +119,8 @@ Next move: add real client or installer permission enforcement integration.
| Runtime Permission Probes | `4 / 4` target adapters probed, `0` native-enforcement adapters, `4` explicit metadata fallbacks, `4` residual risks retained for reviewer visibility |
| Skill Atlas | `12` scanned skills, `1` actionable root skill, `1` telemetry report, `0` actionable route collisions, `0` actionable owner gaps, `0` actionable stale skills, `0` actionable drift signals, `24` scoped non-actionable issue signals retained for visibility |
| Registry Audit | package metadata generated with version, owner, license, source checksum, archive checksum, Skill IR provenance, and compatibility matrix |
| Package Verification | `4 / 4` target adapters present, archive verified, `613` zip entries, `0` failures, `0` warnings |
| Install Simulation | archive with `613` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `4` adapters readable, `12` installer permission checks enforced, `0` permission failures, `0` failures, `0` warnings |
| Package Verification | `4 / 4` target adapters present, archive verified, `617` zip entries, `0` failures, `0` warnings |
| Install Simulation | archive with `617` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `4` adapters readable, `12` installer permission checks enforced, `0` permission failures, `0` failures, `0` warnings |
| Local Install Sync Preflight | `make sync-local-install` and `make sync-active-install` rebuild the package first, then sync only after install simulation passes with `12` enforced installer permission checks and `0` permission failures |
| Upgrade Check | current package declares `minor` over the 1.0.0 baseline, recommended bump is `minor`, and release notes include added targets plus checksum changes |
| Adoption Drift | `1` metadata-only review event, `0` adoption samples, adoption `0`, risk band `low`; optional `yao.py` CLI capture, external client `telemetry-emit`, `5` `telemetry-hooks` recipes, Browser/Chrome native messaging host, and validated external JSONL import are available but off by default for reproducible release evidence; raw `reports/telemetry_events.jsonl` is gitignored and blocked from zip packages |
+1 -1
View File
@@ -930,7 +930,7 @@
<p><span data-lang="zh-CN">让 reviewer 快速确认关键文件、目录和资产分布。</span><span data-lang="en">Lets reviewers confirm key files, directories, and asset distribution quickly.</span></p>
</div>
<div class="two-col">
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.4" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.0 77.0" stroke-dashoffset="-2.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="74.3 25.7" stroke-dashoffset="-25.7" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">395</text><text data-lang="en" x="130" y="136" text-anchor="middle">395 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.4" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.0 77.0" stroke-dashoffset="-2.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="74.3 25.7" stroke-dashoffset="-25.7" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">399</text><text data-lang="en" x="130" y="136" text-anchor="middle">399 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
<table>
<thead><tr><th><span data-lang="zh-CN">路径</span><span data-lang="en">Path</span></th><th><span data-lang="zh-CN">作用</span><span data-lang="en">Role</span></th><th><span data-lang="zh-CN">类型</span><span data-lang="en">Type</span></th></tr></thead>
<tbody><tr><td>SKILL.md</td><td><span data-lang="zh-CN">Skill 入口文件</span><span data-lang="en">Skill entrypoint</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>README.md</td><td><span data-lang="zh-CN">人类可读使用说明</span><span data-lang="en">Human-readable usage guide</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>agents/interface.yaml</td><td><span data-lang="zh-CN">跨平台接口元数据</span><span data-lang="en">Neutral interface metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>manifest.json</td><td><span data-lang="zh-CN">生命周期与打包元数据</span><span data-lang="en">Lifecycle and portability metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>references</td><td><span data-lang="zh-CN">扩展指导与复用资料</span><span data-lang="en">Extended guidance and reusable notes</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>scripts</td><td><span data-lang="zh-CN">确定性脚本或本地工具</span><span data-lang="en">Deterministic helpers or local tooling</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>evals</td><td><span data-lang="zh-CN">触发与质量检查</span><span data-lang="en">Trigger and quality checks</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>reports</td><td><span data-lang="zh-CN">生成的证据与总结报告</span><span data-lang="en">Generated evidence and overview artifacts</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr></tbody>
+15 -15
View File
@@ -524,10 +524,10 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"file_count": 395,
"file_count": 399,
"folder_count": 4,
"distribution": [
{
@@ -560,7 +560,7 @@
},
{
"label": "reports",
"value": 218
"value": 222
}
]
},
@@ -694,7 +694,7 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
"file_count": 218
"file_count": 222
}
],
"strengths": [
@@ -1128,7 +1128,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 197,
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
},
"skill_atlas": {
"skill_count": 12,
@@ -1166,8 +1166,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "8d10541e71582662420071a94aee0ac44c70dcb2d28627c19c79d46fb6b88d94",
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a"
"package_sha256": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
"compatibility": {
"openai": "pass",
@@ -1198,12 +1198,12 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
},
"generated_at": "2026-06-15"
"generated_at": "2026-06-16"
},
"failures": [],
"warnings": []
@@ -1214,8 +1214,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "7f460d3d56344815baba659ce233ccbff091f2c91f9d4a908776cfbed90c789a",
"archive_entry_count": 613,
"archive_sha256": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9",
"archive_entry_count": 617,
"failure_count": 0,
"warning_count": 0
},
@@ -1226,7 +1226,7 @@
"ok": true,
"summary": {
"archive_present": true,
"archive_entry_count": 613,
"archive_entry_count": 617,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -1236,7 +1236,7 @@
"installer_permission_failure_count": 0,
"permission_target_count": 4,
"permission_capability_count": 3,
"install_root_is_temp": true,
"install_root_is_temp": false,
"failure_count": 0,
"warning_count": 0
},
@@ -1293,12 +1293,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
"to": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "4660a11db94947ab603dca42eddc447698785d08f0df2972bf2ca43454683306"
"to": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
},
+3 -3
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"item_count": 21,
@@ -204,7 +204,7 @@
"label": "Registry Distribution",
"status": "pass",
"objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.",
"current": "archive entries 613; install failures 0",
"current": "archive entries 617; 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": [
@@ -613,7 +613,7 @@
"label": "Evidence Consistency",
"status": "pass",
"objective": "Recommended Skill OS 2.0 implementation PR from the upgrade plan.",
"current": "26 consistency checks",
"current": "27 consistency checks",
"command": "make ci-test",
"test": "tests/verify_evidence_consistency.py",
"evidence": [
+3 -3
View File
@@ -1,6 +1,6 @@
# Skill OS 2.0 Blueprint Coverage
Generated at: `2026-06-15`
Generated at: `2026-06-16`
## Summary
@@ -28,7 +28,7 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts,
| Runtime Conformance | `pass` | 5/5 targets pass | `python3 scripts/yao.py conformance .` | `python3 tests/verify_conformance_suite.py` |
| Trust Security | `pass` | 110 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 613; 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 617; install failures 0 | `python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .` | `python3 tests/verify_registry_audit.py` |
| Review Studio | `pass` | 16 gates; decision review; warnings 3 | `python3 scripts/yao.py review-studio .` | `python3 tests/verify_review_studio.py` |
| Telemetry Drift | `pass` | events 1; recipes 5; risk low | `python3 scripts/yao.py telemetry-hooks . && python3 scripts/yao.py adoption-drift .` | `python3 tests/verify_telemetry_hooks.py` |
@@ -48,7 +48,7 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts,
| Registry Package Format | `pass` | registry ok True | `make ci-test` | `tests/verify_registry_audit.py` |
| Review Studio 2.0 | `pass` | 16 review gates | `make ci-test` | `tests/verify_review_studio.py` |
| Migration V2 Docs | `pass` | migration guide present | `make ci-test` | `docs review` |
| Evidence Consistency | `pass` | 26 consistency checks | `make ci-test` | `tests/verify_evidence_consistency.py` |
| Evidence Consistency | `pass` | 27 consistency checks | `make ci-test` | `tests/verify_evidence_consistency.py` |
## Reference Extension Tracks
+5 -5
View File
@@ -1,7 +1,7 @@
{
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-13",
"generated_at": "2026-06-16",
"previous": {
"name": "yao-meta-skill",
"version": "1.0.0",
@@ -70,12 +70,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
"to": "052aea12dfd456a03c6f0a260a59098da036209eea6a8d5109b951005c29f9d9"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "4660a11db94947ab603dca42eddc447698785d08f0df2972bf2ca43454683306"
"to": "85e86b1f0f774b8f04a45d0665553bdbacca16655d0a28d16577f53bac48535a"
}
]
},
@@ -90,7 +90,7 @@
"artifacts": {
"previous_package": "registry/examples/yao-meta-skill-1.0.0.json",
"current_package": "reports/registry_audit.json",
"json": "tests/tmp_review_studio/upgrade_check.json",
"markdown": "tests/tmp_review_studio/upgrade_check.md"
"json": "reports/upgrade_check.json",
"markdown": "reports/upgrade_check.md"
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"ledger_ready_to_claim_world_class": false,
+1 -1
View File
@@ -1,6 +1,6 @@
# World-Class Claim Guard
Generated at: `2026-06-15`
Generated at: `2026-06-16`
## Summary
+1 -1
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"schema_present": true,
+1 -1
View File
@@ -1,6 +1,6 @@
# World-Class Evidence Intake
Generated at: `2026-06-15`
Generated at: `2026-06-16`
## Summary
+1 -1
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"decision": "evidence-pending",
"ready_to_claim_world_class": false,
+1 -1
View File
@@ -1,6 +1,6 @@
# World-Class Evidence Ledger
Generated at: `2026-06-15`
Generated at: `2026-06-16`
## Summary
+1 -1
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"audit_decision": "continue-iteration",
+1 -1
View File
@@ -1,6 +1,6 @@
# World-Class Evidence Plan
Generated at: `2026-06-15`
Generated at: `2026-06-16`
## Summary
+1 -1
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"summary": {
"evidence_item_count": 4,
+1 -1
View File
@@ -1,6 +1,6 @@
# World-Class Operator Runbook
Generated at: `2026-06-15`
Generated at: `2026-06-16`
## Summary
+1 -1
View File
@@ -1,7 +1,7 @@
{
"schema_version": "1.0",
"ok": true,
"generated_at": "2026-06-15",
"generated_at": "2026-06-16",
"skill_dir": ".",
"decision": "awaiting-submissions",
"ready_to_claim_world_class": false,
+1 -1
View File
@@ -1,6 +1,6 @@
# World-Class Submission Review
Generated at: `2026-06-15`
Generated at: `2026-06-16`
## Summary
@@ -87,6 +87,7 @@ def count_cli_command_handlers(skill_dir: Path) -> int:
def build_report(skill_dir: Path, warn_lines: int, block_lines: int, generated_at: str) -> dict[str, Any]:
files = iter_python_files(skill_dir)
watch_lines = max(1, int(warn_lines * 0.8))
records: list[dict[str, Any]] = []
internal_count = 0
cli_count = 0
@@ -121,6 +122,7 @@ def build_report(skill_dir: Path, warn_lines: int, block_lines: int, generated_a
)
records.sort(key=lambda item: (-int(item["lines"]), str(item["path"])))
hotspots = [item for item in records if item["severity"] in {"warn", "block"}]
watchlist = [item for item in records if item["severity"] == "pass" and int(item["lines"]) >= watch_lines]
blockers = [item for item in records if item["severity"] == "block"]
summary = {
"python_file_count": len(records),
@@ -132,8 +134,10 @@ def build_report(skill_dir: Path, warn_lines: int, block_lines: int, generated_a
"entrypoint_command_handler_count": count_handlers_in_file(skill_dir / "scripts" / "yao.py"),
"command_module_count": len(command_module_paths(skill_dir)),
"warn_line_threshold": warn_lines,
"watch_line_threshold": watch_lines,
"block_line_threshold": block_lines,
"largest_file_lines": records[0]["lines"] if records else 0,
"watchlist_count": len(watchlist),
"hotspot_count": len(hotspots),
"blocker_count": len(blockers),
"decision": "block-maintainability" if blockers else ("watch-maintainability-hotspots" if hotspots else "pass"),
@@ -145,6 +149,7 @@ def build_report(skill_dir: Path, warn_lines: int, block_lines: int, generated_a
"skill_dir": ".",
"summary": summary,
"largest_files": records[:12],
"watchlist": watchlist[:12],
"hotspots": hotspots,
"actions": [
{
@@ -180,6 +185,8 @@ def render_markdown(report: dict[str, Any]) -> str:
f"- entrypoint command handlers: `{summary['entrypoint_command_handler_count']}`",
f"- command modules: `{summary['command_module_count']}`",
f"- largest file lines: `{summary['largest_file_lines']}`",
f"- watch threshold lines: `{summary['watch_line_threshold']}`",
f"- watchlist: `{summary['watchlist_count']}`",
f"- hotspots: `{summary['hotspot_count']}`",
f"- blockers: `{summary['blocker_count']}`",
"",
@@ -197,6 +204,14 @@ def render_markdown(report: dict[str, Any]) -> str:
)
else:
lines.append("No file-size hotspots found.")
lines.extend(["", "## Watchlist", ""])
watchlist = report.get("watchlist", [])
if watchlist:
lines.extend(["| File | Lines | Kind | Recommended next split |", "| --- | ---: | --- | --- |"])
for item in watchlist:
lines.append(f"| `{item['path']}` | `{item['lines']}` | `{item['kind']}` | {item['recommendation']} |")
else:
lines.append("No near-threshold files found.")
lines.extend(["", "## Largest Files", ""])
if report.get("largest_files"):
lines.extend(["| File | Lines | Kind | Severity |", "| --- | ---: | --- | --- |"])
+1
View File
@@ -252,6 +252,7 @@ def insight_cards(data: dict[str, dict[str, Any]]) -> list[dict[str, str]]:
"value": str(architecture.get("hotspot_count", 0)),
"detail": (
f"{architecture.get('largest_file_lines', 0)} largest lines; "
f"{architecture.get('watchlist_count', 0)} watchlist; "
f"{architecture.get('command_handler_count', 0)} CLI handlers; "
f"{architecture.get('entrypoint_command_handler_count', 0)} in entrypoint"
),
+3
View File
@@ -314,13 +314,16 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An
architecture_detail = "architecture maintainability report is optional until code surface grows"
else:
hotspot_count = int(architecture_summary.get("hotspot_count", 0) or 0)
watchlist_count = int(architecture_summary.get("watchlist_count", 0) or 0)
blocker_count = int(architecture_summary.get("blocker_count", 0) or 0)
architecture_status = "block" if not architecture.get("ok", True) or blocker_count else ("warn" if hotspot_count else "pass")
hotspot_label = "hotspot" if hotspot_count == 1 else "hotspots"
watchlist_label = "watchlist file" if watchlist_count == 1 else "watchlist files"
blocker_label = "blocker" if blocker_count == 1 else "blockers"
architecture_detail = (
f"{architecture_summary.get('python_file_count', 0)} Python files; "
f"{hotspot_count} {hotspot_label}; "
f"{watchlist_count} {watchlist_label}; "
f"{blocker_count} {blocker_label}; "
f"largest {architecture_summary.get('largest_file_lines', 0)} lines; "
f"{architecture_summary.get('command_handler_count', 0)} CLI handlers; "
@@ -38,6 +38,8 @@ def main() -> None:
payload = json.loads(proc.stdout)
assert payload["ok"], payload
assert payload["summary"]["decision"] == "pass", payload["summary"]
assert payload["summary"]["watch_line_threshold"] == 720, payload["summary"]
assert payload["summary"]["watchlist_count"] > 0, payload["summary"]
assert payload["summary"]["hotspot_count"] == 0, payload["summary"]
assert payload["summary"]["blocker_count"] == 0, payload["summary"]
assert payload["summary"]["command_handler_count"] >= 60, payload["summary"]
@@ -45,6 +47,8 @@ def main() -> None:
assert payload["summary"]["command_module_count"] >= 5, payload["summary"]
assert payload["summary"]["largest_file_lines"] < 900, payload["summary"]
assert all(item["severity"] == "pass" for item in payload["largest_files"]), payload["largest_files"]
assert all(item["severity"] == "pass" for item in payload["watchlist"]), payload["watchlist"]
assert any(item["path"] == "tests/verify_yao_cli.py" for item in payload["watchlist"]), payload["watchlist"]
renderer_lines = len((ROOT / "scripts" / "render_review_studio.py").read_text(encoding="utf-8").splitlines())
action_module = (ROOT / "scripts" / "review_studio_actions.py").read_text(encoding="utf-8")
action_lines = len(action_module.splitlines())
@@ -60,6 +64,8 @@ def main() -> None:
markdown = output_md.read_text(encoding="utf-8")
assert "# Architecture Maintainability" in markdown, markdown
assert "No file-size hotspots found." in markdown, markdown
assert "## Watchlist" in markdown, markdown
assert "tests/verify_yao_cli.py" in markdown, markdown
assert "Do not split a file only for line count" in markdown, markdown
blocker_proc = subprocess.run(
+3
View File
@@ -347,6 +347,7 @@ def main() -> None:
architecture_gate = next(item for item in payload["gates"] if item["key"] == "architecture-maintainability")
assert architecture_gate["status"] == "pass", architecture_gate
assert "0 hotspots" in architecture_gate["detail"], architecture_gate
assert "watchlist files" 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
@@ -474,6 +475,7 @@ def main() -> None:
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"] == 0, full_payload["data"]["architecture_maintainability"]
assert full_payload["data"]["architecture_maintainability"]["summary"]["watchlist_count"] > 0, full_payload["data"]["architecture_maintainability"]
assert full_payload["data"]["architecture_maintainability"]["summary"]["blocker_count"] == 0, full_payload["data"]["architecture_maintainability"]
action_keys = {item["gate_key"] for item in full_payload["review_actions"]}
assert action_keys == {"output-lab", "review-waivers", "world-class-evidence"}, full_payload["review_actions"]
@@ -722,6 +724,7 @@ def main() -> None:
assert "Arch Debt" in html, html
assert "reports/architecture_maintainability.md" in html, html
assert "0 hotspots" in html, html
assert "watchlist files" in html, html
assert "kv-grid" in html, html
assert "案例数" in html, html
assert "命令执行" in html, html
+1 -1
View File
@@ -204,10 +204,10 @@ def main() -> None:
)
assert architecture_result["ok"], architecture_result
assert architecture_result["payload"]["summary"]["hotspot_count"] == 0, architecture_result
assert architecture_result["payload"]["summary"]["watchlist_count"] > 0, architecture_result
assert architecture_result["payload"]["summary"]["blocker_count"] == 0, architecture_result
assert architecture_result["payload"]["summary"]["command_handler_count"] >= 60, architecture_result
assert architecture_result["payload"]["summary"]["entrypoint_command_handler_count"] < 30, architecture_result
world_class_evidence_result = run(
"world-class-evidence",
str(ROOT),