Separate source and generated release locks
This commit is contained in:
+1
-1
@@ -16,7 +16,7 @@
|
||||
"vscode"
|
||||
],
|
||||
"package_metadata": "registry/packages/yao-meta-skill.json",
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
"compatibility": {
|
||||
"openai": "pass",
|
||||
@@ -48,7 +48,7 @@
|
||||
},
|
||||
"distribution": {
|
||||
"archive_verified": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"package_verification": "reports/package_verification.json",
|
||||
"install_simulated": true,
|
||||
"install_simulation": "reports/install_simulation.json"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"schema_version": "2.0",
|
||||
"generated_at": "2026-06-16T20:08:23Z",
|
||||
"generated_at": "2026-06-16T20:21:16Z",
|
||||
"skill_dir": ".",
|
||||
"privacy_contract": {
|
||||
"storage": "local-first",
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
"generated_at": "2026-06-13",
|
||||
"skill_dir": ".",
|
||||
"summary": {
|
||||
"python_file_count": 224,
|
||||
"script_file_count": 148,
|
||||
"python_file_count": 225,
|
||||
"script_file_count": 149,
|
||||
"test_file_count": 76,
|
||||
"internal_module_count": 64,
|
||||
"internal_module_count": 65,
|
||||
"cli_script_count": 86,
|
||||
"command_handler_count": 68,
|
||||
"entrypoint_command_handler_count": 18,
|
||||
@@ -48,14 +48,6 @@
|
||||
"early_watch": false,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_benchmark_reproducibility.py",
|
||||
"lines": 595,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_world_class_preflight.py",
|
||||
"lines": 593,
|
||||
@@ -106,7 +98,7 @@
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_evidence_consistency.py",
|
||||
"lines": 568,
|
||||
"lines": 571,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
@@ -119,6 +111,14 @@
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Move data loading and large section renderers into focused review_studio_* modules."
|
||||
},
|
||||
{
|
||||
"path": "scripts/adjudicate_output_review.py",
|
||||
"lines": 566,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
}
|
||||
],
|
||||
"watchlist": [],
|
||||
|
||||
@@ -5,10 +5,10 @@ Generated at: `2026-06-13`
|
||||
## Summary
|
||||
|
||||
- decision: `pass`
|
||||
- python files: `224`
|
||||
- scripts: `148`
|
||||
- python files: `225`
|
||||
- scripts: `149`
|
||||
- tests: `76`
|
||||
- internal modules: `64`
|
||||
- internal modules: `65`
|
||||
- CLI scripts: `86`
|
||||
- Yao CLI command handlers: `68`
|
||||
- entrypoint command handlers: `18`
|
||||
@@ -45,15 +45,15 @@ No near-threshold files found.
|
||||
| `tests/verify_yao_cli.py` | `696` | `test` | `pass` |
|
||||
| `tests/verify_world_class_evidence_intake.py` | `690` | `test` | `pass` |
|
||||
| `tests/verify_output_review_adjudication.py` | `599` | `test` | `pass` |
|
||||
| `scripts/render_benchmark_reproducibility.py` | `595` | `cli-script` | `pass` |
|
||||
| `scripts/render_world_class_preflight.py` | `593` | `cli-script` | `pass` |
|
||||
| `scripts/render_skill_overview.py` | `588` | `cli-script` | `pass` |
|
||||
| `scripts/build_skill_atlas.py` | `586` | `cli-script` | `pass` |
|
||||
| `scripts/optimize_description.py` | `585` | `cli-script` | `pass` |
|
||||
| `scripts/trust_check.py` | `582` | `cli-script` | `pass` |
|
||||
| `tests/verify_world_class_evidence_ledger.py` | `579` | `test` | `pass` |
|
||||
| `scripts/render_evidence_consistency.py` | `568` | `cli-script` | `pass` |
|
||||
| `scripts/render_evidence_consistency.py` | `571` | `cli-script` | `pass` |
|
||||
| `scripts/render_review_studio.py` | `568` | `cli-script` | `pass` |
|
||||
| `scripts/adjudicate_output_review.py` | `566` | `cli-script` | `pass` |
|
||||
|
||||
## Release Rule
|
||||
|
||||
|
||||
@@ -3,13 +3,16 @@
|
||||
"ok": true,
|
||||
"generated_at": "2026-06-17",
|
||||
"skill_dir": ".",
|
||||
"commit": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"commit": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"git_status": {
|
||||
"available": true,
|
||||
"dirty": true,
|
||||
"changed_file_count": 67,
|
||||
"changed_file_count": 62,
|
||||
"generated_dirty": true,
|
||||
"generated_changed_file_count": 56,
|
||||
"source_dirty": true,
|
||||
"source_changed_file_count": 6,
|
||||
"sample": [
|
||||
" M assets/review-studio.css",
|
||||
" M registry/index.json",
|
||||
" M registry/packages/yao-meta-skill.json",
|
||||
" M reports/adoption_drift_report.json",
|
||||
@@ -18,10 +21,41 @@
|
||||
" M reports/architecture_maintainability.md",
|
||||
" M reports/benchmark_reproducibility.json",
|
||||
" M reports/benchmark_reproducibility.md",
|
||||
" M reports/compiled_targets.json",
|
||||
" M reports/context_budget.json",
|
||||
" M reports/context_budget.md",
|
||||
" M reports/context_budget_summary.json"
|
||||
],
|
||||
"source_sample": [
|
||||
" M scripts/render_benchmark_reproducibility.py",
|
||||
" M scripts/render_evidence_consistency.py",
|
||||
" M tests/verify_benchmark_reproducibility.py",
|
||||
" M tests/verify_evidence_consistency.py",
|
||||
" M tests/verify_review_studio.py",
|
||||
"?? scripts/benchmark_release_lock.py"
|
||||
],
|
||||
"generated_sample": [
|
||||
" M registry/index.json",
|
||||
" M registry/packages/yao-meta-skill.json",
|
||||
" M reports/adoption_drift_report.json",
|
||||
" M reports/adoption_drift_report.md",
|
||||
" M reports/architecture_maintainability.json",
|
||||
" M reports/architecture_maintainability.md",
|
||||
" M reports/benchmark_reproducibility.json",
|
||||
" M reports/benchmark_reproducibility.md",
|
||||
" M reports/compiled_targets.json",
|
||||
" M reports/context_budget.json",
|
||||
" M reports/context_budget.md",
|
||||
" M reports/context_budget_summary.json"
|
||||
],
|
||||
"generated_dirty_prefixes": [
|
||||
"dist/",
|
||||
"registry/index.json",
|
||||
"registry/packages/",
|
||||
"reports/",
|
||||
"skill_atlas/",
|
||||
"skill-ir/examples/"
|
||||
],
|
||||
"scope": "generation-time status before this report is written"
|
||||
},
|
||||
"summary": {
|
||||
@@ -30,9 +64,9 @@
|
||||
"methodology_complete": true,
|
||||
"required_artifact_count": 25,
|
||||
"missing_artifact_count": 0,
|
||||
"evidence_bundle_sha256": "55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492ae7c962ef6",
|
||||
"source_contract_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"evidence_bundle_sha256": "e114eec2acbc1cbb7ac578dd4e5165c3ed2b88e4922ba3e64d2c6232a577fc6d",
|
||||
"source_contract_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"output_case_count": 5,
|
||||
"failure_disclosure_count": 3,
|
||||
"command_count": 23,
|
||||
@@ -52,7 +86,11 @@
|
||||
"public_claim_ready": false,
|
||||
"public_claim_blocker_count": 5,
|
||||
"working_tree_dirty": true,
|
||||
"changed_file_count": 67
|
||||
"changed_file_count": 62,
|
||||
"source_tree_dirty": true,
|
||||
"source_changed_file_count": 6,
|
||||
"generated_tree_dirty": true,
|
||||
"generated_changed_file_count": 56
|
||||
},
|
||||
"public_claim": {
|
||||
"ready": false,
|
||||
@@ -68,9 +106,11 @@
|
||||
},
|
||||
"release_lock": {
|
||||
"ready": false,
|
||||
"commit": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"commit": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"status_scope": "generation-time status before this report is written",
|
||||
"reason": "working tree was dirty at generation time"
|
||||
"source_changed_file_count": 6,
|
||||
"generated_changed_file_count": 56,
|
||||
"reason": "source files were dirty at generation time"
|
||||
},
|
||||
"evidence_bundle": {
|
||||
"algorithm": "sha256(path,label,exists,artifact_sha256)",
|
||||
@@ -78,7 +118,7 @@
|
||||
"existing_count": 25,
|
||||
"missing_count": 0,
|
||||
"missing_paths": [],
|
||||
"sha256": "55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492ae7c962ef6"
|
||||
"sha256": "e114eec2acbc1cbb7ac578dd4e5165c3ed2b88e4922ba3e64d2c6232a577fc6d"
|
||||
},
|
||||
"methodology": {
|
||||
"path": "reports/benchmark_methodology.md",
|
||||
@@ -151,8 +191,8 @@
|
||||
"label": "output_execution",
|
||||
"path": "reports/output_execution_runs.json",
|
||||
"exists": true,
|
||||
"bytes": 7965,
|
||||
"sha256": "5291115a0e1348926c8afe739fc2185754e571766bcc1d6a6e88b80ba07f8a9e"
|
||||
"bytes": 7966,
|
||||
"sha256": "c9c054c2e0a731644c659c5005b871e33072c3d12612793ba2a5df5b8873eba3"
|
||||
},
|
||||
{
|
||||
"label": "blind_review",
|
||||
@@ -186,43 +226,43 @@
|
||||
"label": "trust_report",
|
||||
"path": "reports/security_trust_report.json",
|
||||
"exists": true,
|
||||
"bytes": 134467,
|
||||
"sha256": "596dafa184943797bd77591b0f2ba9366ddd541f90cb9c08d92ce7069c1b326c"
|
||||
"bytes": 135139,
|
||||
"sha256": "a18583795da7c3ffc0d355bc5465382b50f1a737a33e62b1e4b182496c9e4c5e"
|
||||
},
|
||||
{
|
||||
"label": "python_compatibility",
|
||||
"path": "reports/python_compatibility.json",
|
||||
"exists": true,
|
||||
"bytes": 29464,
|
||||
"sha256": "f53cce322cc33af4f7cbc7e22587ac3e0c0359dfa1889a03f38c93472abf319d"
|
||||
"bytes": 29589,
|
||||
"sha256": "364a150344f461934d36ca59c0f5f6e1ed487fbfa3b30cfdff548ded277dd5c5"
|
||||
},
|
||||
{
|
||||
"label": "registry_audit",
|
||||
"path": "reports/registry_audit.json",
|
||||
"exists": true,
|
||||
"bytes": 3183,
|
||||
"sha256": "79532bfc006cabfd1f086601112b58c1fe84660d6606521d0256c77177d6c993"
|
||||
"sha256": "d0157e4c0242955a3870f11eb00649f77e14b75f393874ea110b8f8e6eca89fb"
|
||||
},
|
||||
{
|
||||
"label": "package_verification",
|
||||
"path": "reports/package_verification.json",
|
||||
"exists": true,
|
||||
"bytes": 19338,
|
||||
"sha256": "df947ca7f0e5737c0f7961ee146171b3727c189f8dc5439941597d3c646fe06a"
|
||||
"sha256": "755a9c6788ccc0624682e523fe0154ac8b471bc4e41ed132f9866143762f398e"
|
||||
},
|
||||
{
|
||||
"label": "install_simulation",
|
||||
"path": "reports/install_simulation.json",
|
||||
"exists": true,
|
||||
"bytes": 8604,
|
||||
"sha256": "08d96de4662c8e047e351f4241ff3a4f98c521907fc4cd703faadff861bee63a"
|
||||
"bytes": 8758,
|
||||
"sha256": "15b77ec2b4738df891457d1d65f914751f30d6cd816a377e5c50c5a0b6d35b78"
|
||||
},
|
||||
{
|
||||
"label": "skill_os2_audit",
|
||||
"path": "reports/skill_os2_audit.json",
|
||||
"exists": true,
|
||||
"bytes": 14466,
|
||||
"sha256": "7fc0b099204ca5045de2db9eb19c5cf599f9c87bed1cd7f39c1f5f50704b3fb2"
|
||||
"sha256": "16cbe378cc1a5ef847022c274af42ec8b6f7c346c8a06f59e6f6e3060d666177"
|
||||
},
|
||||
{
|
||||
"label": "world_class_evidence_plan",
|
||||
@@ -412,7 +452,7 @@
|
||||
"policy": "Keep representative failures visible and tied to regression checks."
|
||||
},
|
||||
"limitations": [
|
||||
"The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.",
|
||||
"The git commit and dirty flags are generation-time context; release lock is blocked by source changes, while generated evidence artifacts are tracked separately.",
|
||||
"Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.",
|
||||
"Pending blind-review decisions are visible but do not count as human adjudication.",
|
||||
"World-class readiness remains false until external and human evidence gaps close."
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# Benchmark Reproducibility
|
||||
|
||||
Generated at: `2026-06-17`
|
||||
Commit: `f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11`
|
||||
Commit: `4a1a5295708ba3570821583652ef91fda0f0874f`
|
||||
Working tree dirty at generation: `true`
|
||||
Evidence bundle SHA256: `55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492ae7c962ef6`
|
||||
Source tree dirty at generation: `true`
|
||||
Generated evidence dirty at generation: `true`
|
||||
Evidence bundle SHA256: `e114eec2acbc1cbb7ac578dd4e5165c3ed2b88e4922ba3e64d2c6232a577fc6d`
|
||||
|
||||
## Summary
|
||||
|
||||
@@ -12,8 +14,8 @@ Evidence bundle SHA256: `55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492a
|
||||
- methodology complete: `true`
|
||||
- required artifacts: `25`
|
||||
- missing artifacts: `0`
|
||||
- source contract sha256: `7993d9f42640`
|
||||
- archive sha256: `e0d57b8bede6`
|
||||
- source contract sha256: `6fbdbed9dfdc`
|
||||
- archive sha256: `0db54f788046`
|
||||
- output cases: `5`
|
||||
- disclosed failure cases: `3`
|
||||
- reproduction commands: `23`
|
||||
@@ -23,9 +25,11 @@ Evidence bundle SHA256: `55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492a
|
||||
- world-class source checks: `9` pass / `19` total; `10` blocked
|
||||
- public claim ready: `false`
|
||||
- public claim blockers: `5`
|
||||
- changed files at generation: `67`
|
||||
- changed files at generation: `62`
|
||||
- source changed files at generation: `6`
|
||||
- generated changed files at generation: `56`
|
||||
|
||||
This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete. The git commit is generation-time context; the evidence bundle SHA is the durable anchor for the artifacts listed below.
|
||||
This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete. The git commit and dirty samples are generation-time context; the evidence bundle SHA is the durable anchor for the artifacts listed below.
|
||||
|
||||
## Public Claim Boundary
|
||||
|
||||
@@ -44,14 +48,14 @@ This report proves local benchmark reproducibility only. It keeps external provi
|
||||
## Release Lock
|
||||
|
||||
- ready: `false`
|
||||
- reason: working tree was dirty at generation time
|
||||
- reason: source files were dirty at generation time
|
||||
- status scope: generation-time status before this report is written
|
||||
|
||||
## Evidence Bundle
|
||||
|
||||
- algorithm: `sha256(path,label,exists,artifact_sha256)`
|
||||
- artifacts: `25` / `25`
|
||||
- sha256: `55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492ae7c962ef6`
|
||||
- sha256: `e114eec2acbc1cbb7ac578dd4e5165c3ed2b88e4922ba3e64d2c6232a577fc6d`
|
||||
|
||||
## Methodology Sections
|
||||
|
||||
@@ -73,17 +77,17 @@ This report proves local benchmark reproducibility only. It keeps external provi
|
||||
| output_cases | `evals/output/cases.jsonl` | present | `a6ae96857116` |
|
||||
| output_schema | `evals/output/schema.json` | present | `8ee340c95064` |
|
||||
| output_scorecard | `reports/output_quality_scorecard.json` | present | `0806258a8e08` |
|
||||
| output_execution | `reports/output_execution_runs.json` | present | `5291115a0e13` |
|
||||
| output_execution | `reports/output_execution_runs.json` | present | `c9c054c2e0a7` |
|
||||
| blind_review | `reports/output_blind_review_pack.json` | present | `bbe2db8ec277` |
|
||||
| review_adjudication | `reports/output_review_adjudication.json` | present | `91fd88dd9b0f` |
|
||||
| trigger_scorecard | `reports/route_scorecard.json` | present | `c164e83e36d0` |
|
||||
| runtime_conformance | `reports/conformance_matrix.json` | present | `97f9ba949c23` |
|
||||
| trust_report | `reports/security_trust_report.json` | present | `596dafa18494` |
|
||||
| python_compatibility | `reports/python_compatibility.json` | present | `f53cce322cc3` |
|
||||
| registry_audit | `reports/registry_audit.json` | present | `79532bfc006c` |
|
||||
| package_verification | `reports/package_verification.json` | present | `df947ca7f0e5` |
|
||||
| install_simulation | `reports/install_simulation.json` | present | `08d96de4662c` |
|
||||
| skill_os2_audit | `reports/skill_os2_audit.json` | present | `7fc0b099204c` |
|
||||
| trust_report | `reports/security_trust_report.json` | present | `a18583795da7` |
|
||||
| python_compatibility | `reports/python_compatibility.json` | present | `364a150344f4` |
|
||||
| registry_audit | `reports/registry_audit.json` | present | `d0157e4c0242` |
|
||||
| package_verification | `reports/package_verification.json` | present | `755a9c6788cc` |
|
||||
| install_simulation | `reports/install_simulation.json` | present | `15b77ec2b473` |
|
||||
| skill_os2_audit | `reports/skill_os2_audit.json` | present | `16cbe378cc1a` |
|
||||
| world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `2beb888d7992` |
|
||||
| world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `22c85613d7be` |
|
||||
| world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `d3f44570e605` |
|
||||
@@ -151,7 +155,7 @@ This report proves local benchmark reproducibility only. It keeps external provi
|
||||
|
||||
## Limits
|
||||
|
||||
- The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.
|
||||
- The git commit and dirty flags are generation-time context; release lock is blocked by source changes, while generated evidence artifacts are tracked separately.
|
||||
- Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.
|
||||
- Pending blind-review decisions are visible but do not count as human adjudication.
|
||||
- World-class readiness remains false until external and human evidence gaps close.
|
||||
|
||||
@@ -539,9 +539,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -582,7 +583,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -604,7 +605,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -796,9 +797,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -839,7 +841,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -859,7 +861,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -1486,9 +1488,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -1529,7 +1532,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -1551,7 +1554,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -1743,9 +1746,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -1786,7 +1790,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -1806,7 +1810,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -2433,9 +2437,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -2476,7 +2481,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -2498,7 +2503,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -2683,9 +2688,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -2726,7 +2732,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -2746,7 +2752,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -3364,9 +3370,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -3407,7 +3414,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -3429,7 +3436,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -3614,9 +3621,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -3657,7 +3665,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -3677,7 +3685,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -4295,9 +4303,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -4338,7 +4347,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -4360,7 +4369,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
@@ -4549,9 +4558,10 @@
|
||||
},
|
||||
"subprocess": {
|
||||
"required": true,
|
||||
"script_count": 11,
|
||||
"script_count": 12,
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
@@ -4592,7 +4602,7 @@
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 73,
|
||||
"subprocess_script_count": 11,
|
||||
"subprocess_script_count": 12,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
}
|
||||
@@ -4612,7 +4622,7 @@
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 73,
|
||||
"subprocess": 11,
|
||||
"subprocess": 12,
|
||||
"interactive": 0
|
||||
},
|
||||
"evidence": "reports/security_trust_report.json",
|
||||
|
||||
+10
-10
@@ -6,16 +6,16 @@
|
||||
"context_budget_tier": "production",
|
||||
"context_budget_limit": 1000,
|
||||
"skill_body_tokens": 797,
|
||||
"other_text_tokens": 1110595,
|
||||
"other_text_tokens": 1112816,
|
||||
"estimated_initial_load_tokens": 990,
|
||||
"estimated_total_text_tokens": 1111392,
|
||||
"deferred_resource_tokens": 506961,
|
||||
"estimated_total_text_tokens": 1113613,
|
||||
"deferred_resource_tokens": 507713,
|
||||
"deferred_resource_warn_threshold": 120000,
|
||||
"deferred_resource_dirs": [
|
||||
{
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 445781,
|
||||
"file_count": 148
|
||||
"estimated_tokens": 446533,
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "references",
|
||||
@@ -36,8 +36,8 @@
|
||||
"large_deferred_resource_dirs": [
|
||||
{
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 445781,
|
||||
"file_count": 148
|
||||
"estimated_tokens": 446533,
|
||||
"file_count": 149
|
||||
}
|
||||
],
|
||||
"deferred_resource_governance": {
|
||||
@@ -59,14 +59,14 @@
|
||||
],
|
||||
"missing": [],
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 445781,
|
||||
"file_count": 148,
|
||||
"estimated_tokens": 446533,
|
||||
"file_count": 149,
|
||||
"rationale": "Script resources are deterministic deferred tools, not initial-load prompt context."
|
||||
}
|
||||
],
|
||||
"summary": "Large deferred resources are indexed and backed by evidence."
|
||||
},
|
||||
"relevant_file_count": 702,
|
||||
"relevant_file_count": 704,
|
||||
"unused_resource_dirs": [],
|
||||
"quality_signal_points": 130,
|
||||
"quality_density": 131.3
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
| Target | Path | Tier | Limit | Initial | SKILL | Deferred | Resource Governance | Large Deferred Dirs | Quality Density | Unused Dirs | Status |
|
||||
| --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | ---: | --- | --- |
|
||||
| root | `.` | `production` | 1000 | 990 | 797 | 506961 | `governed` | scripts:445781 | 131.3 | - | ok |
|
||||
| root | `.` | `production` | 1000 | 990 | 797 | 507713 | `governed` | scripts:446533 | 131.3 | - | ok |
|
||||
| complex-release-orchestrator | `examples/complex-release-orchestrator/generated-skill` | `production` | 1000 | 790 | 718 | 1657 | `not-required` | - | 164.6 | - | ok |
|
||||
| governed-incident-command | `examples/governed-incident-command/generated-skill` | `production` | 1000 | 760 | 658 | 1030 | `not-required` | - | 171.1 | - | ok |
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
"budget_limit": 1000,
|
||||
"initial_tokens": 990,
|
||||
"skill_body_tokens": 797,
|
||||
"deferred_resource_tokens": 506961,
|
||||
"deferred_resource_tokens": 507713,
|
||||
"large_deferred_resource_dirs": [
|
||||
{
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 445781,
|
||||
"file_count": 148
|
||||
"estimated_tokens": 446533,
|
||||
"file_count": 149
|
||||
}
|
||||
],
|
||||
"deferred_resource_governance": {
|
||||
@@ -35,8 +35,8 @@
|
||||
],
|
||||
"missing": [],
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 445781,
|
||||
"file_count": 148,
|
||||
"estimated_tokens": 446533,
|
||||
"file_count": 149,
|
||||
"rationale": "Script resources are deterministic deferred tools, not initial-load prompt context."
|
||||
}
|
||||
],
|
||||
|
||||
@@ -189,12 +189,12 @@
|
||||
"status": "pass",
|
||||
"expected": {
|
||||
"status": "pass",
|
||||
"detail": "initial load 990/1000; deferred 506961/120000; top deferred scripts 445781; resource governance governed; quality density 131.3",
|
||||
"detail": "initial load 990/1000; deferred 507713/120000; top deferred scripts 446533; resource governance governed; quality density 131.3",
|
||||
"evidence": "reports/context_budget.json"
|
||||
},
|
||||
"actual": {
|
||||
"status": "pass",
|
||||
"detail": "initial load 990/1000; deferred 506961/120000; top deferred scripts 445781; resource governance governed; quality density 131.3",
|
||||
"detail": "initial load 990/1000; deferred 507713/120000; top deferred scripts 446533; resource governance governed; quality density 131.3",
|
||||
"evidence": "reports/context_budget.json"
|
||||
},
|
||||
"paths": [
|
||||
@@ -205,14 +205,14 @@
|
||||
},
|
||||
{
|
||||
"key": "benchmark-release-lock-self-consistency",
|
||||
"label": "Benchmark release lock matches git dirty state",
|
||||
"label": "Benchmark release lock matches source dirty state",
|
||||
"status": "pass",
|
||||
"expected": false,
|
||||
"actual": false,
|
||||
"paths": [
|
||||
"reports/benchmark_reproducibility.json"
|
||||
],
|
||||
"detail": "The benchmark release lock must reflect the generation-time git dirty flag."
|
||||
"detail": "The benchmark release lock must be blocked by source changes, while generated evidence artifacts are tracked as generation context."
|
||||
},
|
||||
{
|
||||
"key": "benchmark-clean-worktree-release-lock",
|
||||
@@ -222,7 +222,7 @@
|
||||
"actual": {
|
||||
"available": true,
|
||||
"clean": false,
|
||||
"changed_file_count": 67
|
||||
"changed_file_count": 62
|
||||
},
|
||||
"paths": [
|
||||
"reports/benchmark_reproducibility.json"
|
||||
@@ -263,8 +263,8 @@
|
||||
"key": "overview-benchmark-commit",
|
||||
"label": "overview embeds the benchmark commit",
|
||||
"status": "pass",
|
||||
"expected": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"actual": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"expected": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"actual": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"paths": [
|
||||
"reports/benchmark_reproducibility.json",
|
||||
"reports/skill-overview.json"
|
||||
@@ -279,8 +279,8 @@
|
||||
"release_lock_ready": false,
|
||||
"required_artifact_count": 25,
|
||||
"missing_artifact_count": 0,
|
||||
"source_contract_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"source_contract_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"world_class_ledger_pending_count": 4,
|
||||
"world_class_source_check_count": 19,
|
||||
"world_class_source_pass_count": 9,
|
||||
@@ -292,8 +292,8 @@
|
||||
"release_lock_ready": false,
|
||||
"required_artifact_count": 25,
|
||||
"missing_artifact_count": 0,
|
||||
"source_contract_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"source_contract_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"world_class_ledger_pending_count": 4,
|
||||
"world_class_source_check_count": 19,
|
||||
"world_class_source_pass_count": 9,
|
||||
@@ -409,8 +409,8 @@
|
||||
"key": "interpretation-benchmark-commit",
|
||||
"label": "interpretation embeds the benchmark commit",
|
||||
"status": "pass",
|
||||
"expected": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"actual": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"expected": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"actual": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"paths": [
|
||||
"reports/benchmark_reproducibility.json",
|
||||
"reports/skill-interpretation.json"
|
||||
@@ -425,8 +425,8 @@
|
||||
"release_lock_ready": false,
|
||||
"required_artifact_count": 25,
|
||||
"missing_artifact_count": 0,
|
||||
"source_contract_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"source_contract_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"world_class_ledger_pending_count": 4,
|
||||
"world_class_source_check_count": 19,
|
||||
"world_class_source_pass_count": 9,
|
||||
@@ -438,8 +438,8 @@
|
||||
"release_lock_ready": false,
|
||||
"required_artifact_count": 25,
|
||||
"missing_artifact_count": 0,
|
||||
"source_contract_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"source_contract_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"world_class_ledger_pending_count": 4,
|
||||
"world_class_source_check_count": 19,
|
||||
"world_class_source_pass_count": 9,
|
||||
@@ -1529,7 +1529,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 148
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -1544,7 +1544,7 @@
|
||||
"file_count": 235
|
||||
}
|
||||
],
|
||||
"file_count": 451,
|
||||
"file_count": 452,
|
||||
"folder_count": 4,
|
||||
"distribution": [
|
||||
{
|
||||
@@ -1569,7 +1569,7 @@
|
||||
},
|
||||
{
|
||||
"label": "scripts",
|
||||
"value": 148
|
||||
"value": 149
|
||||
},
|
||||
{
|
||||
"label": "evals",
|
||||
@@ -1617,7 +1617,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 148
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -1632,7 +1632,7 @@
|
||||
"file_count": 235
|
||||
}
|
||||
],
|
||||
"file_count": 451,
|
||||
"file_count": 452,
|
||||
"folder_count": 4,
|
||||
"distribution": [
|
||||
{
|
||||
@@ -1657,7 +1657,7 @@
|
||||
},
|
||||
{
|
||||
"label": "scripts",
|
||||
"value": 148
|
||||
"value": 149
|
||||
},
|
||||
{
|
||||
"label": "evals",
|
||||
@@ -2421,10 +2421,10 @@
|
||||
"score `91`",
|
||||
"`16` gates",
|
||||
"`3` warnings",
|
||||
"`62` declared internal modules",
|
||||
"`86 / 86` CLI help smoke checks passing across `148` scripts",
|
||||
"`687` zip entries",
|
||||
"archive with `687` entries",
|
||||
"`63` declared internal modules",
|
||||
"`86 / 86` CLI help smoke checks passing across `149` scripts",
|
||||
"`688` zip entries",
|
||||
"archive with `688` entries",
|
||||
"`12` installer permission checks enforced",
|
||||
"`0` permission failures",
|
||||
"`25` required artifacts",
|
||||
|
||||
@@ -19,7 +19,7 @@ This gate compares generated evidence reports against each other. It does not cr
|
||||
| Required report artifacts are readable | `pass` | The consistency gate can only be trusted when every source JSON report parses and every source Markdown report is readable. | `reports/benchmark_reproducibility.json`, `reports/skill-overview.json`, `reports/skill-interpretation.json`, `reports/adoption_drift_report.json`, `reports/world_class_evidence_ledger.json`, `reports/world_class_evidence_plan.json`, `reports/world_class_evidence_intake.json`, `reports/world_class_evidence_preflight.json`, `reports/world_class_submission_review.json`, `reports/world_class_operator_runbook.json`, `reports/skill_os2_coverage.json`, `reports/review-studio.json`, `reports/package_verification.json`, `reports/install_simulation.json`, `reports/security_trust_report.json`, `reports/context_budget.json`, `reports/world_class_claim_guard.json`, `reports/skill-os-2-review.md` |
|
||||
| Release evidence flow covers first-class reports | `pass` | Release refresh and clean-lock instructions must regenerate every first-class report before evidence consistency can be trusted. | `AGENTS.md`, `reports/output_execution_runs.json`, `reports/install_simulation.json`, `reports/security_trust_report.json`, `reports/registry_audit.json`, `reports/package_verification.json`, `reports/upgrade_check.json`, `reports/adoption_drift_report.json`, `reports/architecture_maintainability.json`, `reports/python_compatibility.json`, `reports/runtime_permission_probes.json`, `reports/review_waivers.json`, `reports/review_annotations.json`, `reports/skill_atlas.json`, `reports/skill_os2_audit.json`, `reports/skill_os2_coverage.json`, `reports/context_budget.json`, `reports/context_budget_summary.json`, `reports/benchmark_reproducibility.json`, `reports/skill-overview.json`, `reports/skill-interpretation.json`, `reports/review-viewer.json`, `reports/world_class_evidence_preflight.json`, `reports/skillops/daily`, `reports/skillops/weekly`, `reports/review-studio.json`, `reports/evidence_consistency.json` |
|
||||
| Review Studio mirrors context budget governance | `pass` | Review Studio must not keep stale context warnings after context reports prove large deferred resources are governed. | `reports/context_budget.json`, `reports/review-studio.json` |
|
||||
| Benchmark release lock matches git dirty state | `pass` | The benchmark release lock must reflect the generation-time git dirty flag. | `reports/benchmark_reproducibility.json` |
|
||||
| Benchmark release lock matches source dirty state | `pass` | The benchmark release lock must be blocked by source changes, while generated evidence artifacts are tracked as generation context. | `reports/benchmark_reproducibility.json` |
|
||||
| Clean worktree keeps a clean benchmark release lock | `pass` | Dirty or non-git worktrees cannot prove final release-lock freshness, so this check is advisory until the final clean-lock pass. | `reports/benchmark_reproducibility.json` |
|
||||
| Human-facing reports expose the canonical Skill IR artifact | `pass` | Skill IR is the 2.0 platform-neutral semantic source, so user-facing reports must link to the artifact that actually exists. | `reports/skill-overview.json`, `reports/skill-interpretation.json`, `reports/review-studio.json`, `skill-ir/examples/yao-meta-skill.json` |
|
||||
| overview embeds the benchmark commit | `pass` | Human-facing reports must point to the same benchmark release-lock commit. | `reports/benchmark_reproducibility.json`, `reports/skill-overview.json` |
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"installed_skill_dir": "tests/tmp_review_studio/install-root/simulate-yao-meta-skill/yao-meta-skill",
|
||||
"summary": {
|
||||
"archive_present": true,
|
||||
"archive_entry_count": 687,
|
||||
"archive_entry_count": 688,
|
||||
"archive_extracted": true,
|
||||
"entrypoint_loaded": true,
|
||||
"manifest_loaded": true,
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 38.77,
|
||||
"duration_ms": 29.28,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -62,7 +62,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 36.69,
|
||||
"duration_ms": 28.7,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -85,7 +85,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 36.84,
|
||||
"duration_ms": 29.28,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -113,7 +113,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 36.88,
|
||||
"duration_ms": 28.04,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -136,7 +136,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 35.28,
|
||||
"duration_ms": 28.34,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -164,7 +164,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 34.8,
|
||||
"duration_ms": 27.95,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -187,7 +187,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 33.15,
|
||||
"duration_ms": 32.32,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -214,7 +214,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 48.5,
|
||||
"duration_ms": 28.58,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -237,7 +237,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 32.18,
|
||||
"duration_ms": 28.26,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -266,7 +266,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 32.15,
|
||||
"duration_ms": 27.95,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
|
||||
@@ -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 | 38.77 | 33 | 0.0 | pass |
|
||||
| skill-package-contract | with_skill | command | local-output-eval-runner | 36.69 | 73 | 100.0 | pass |
|
||||
| output-eval-expectation | baseline | command | local-output-eval-runner | 36.84 | 36 | 0.0 | pass |
|
||||
| output-eval-expectation | with_skill | command | local-output-eval-runner | 36.88 | 80 | 100.0 | pass |
|
||||
| ir-before-packaging | baseline | command | local-output-eval-runner | 35.28 | 33 | 0.0 | pass |
|
||||
| ir-before-packaging | with_skill | command | local-output-eval-runner | 34.8 | 80 | 100.0 | pass |
|
||||
| near-neighbor-boundary | baseline | command | local-output-eval-runner | 33.15 | 36 | 0.0 | pass |
|
||||
| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 48.5 | 65 | 100.0 | pass |
|
||||
| file-backed-governed-package | baseline | command | local-output-eval-runner | 32.18 | 37 | 0.0 | pass |
|
||||
| file-backed-governed-package | with_skill | command | local-output-eval-runner | 32.15 | 98 | 100.0 | pass |
|
||||
| skill-package-contract | baseline | command | local-output-eval-runner | 29.28 | 33 | 0.0 | pass |
|
||||
| skill-package-contract | with_skill | command | local-output-eval-runner | 28.7 | 73 | 100.0 | pass |
|
||||
| output-eval-expectation | baseline | command | local-output-eval-runner | 29.28 | 36 | 0.0 | pass |
|
||||
| output-eval-expectation | with_skill | command | local-output-eval-runner | 28.04 | 80 | 100.0 | pass |
|
||||
| ir-before-packaging | baseline | command | local-output-eval-runner | 28.34 | 33 | 0.0 | pass |
|
||||
| ir-before-packaging | with_skill | command | local-output-eval-runner | 27.95 | 80 | 100.0 | pass |
|
||||
| near-neighbor-boundary | baseline | command | local-output-eval-runner | 32.32 | 36 | 0.0 | pass |
|
||||
| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 28.58 | 65 | 100.0 | pass |
|
||||
| file-backed-governed-package | baseline | command | local-output-eval-runner | 28.26 | 37 | 0.0 | pass |
|
||||
| file-backed-governed-package | with_skill | command | local-output-eval-runner | 27.95 | 98 | 100.0 | pass |
|
||||
|
||||
## Next Fixes
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
"target_count": 4,
|
||||
"adapter_count": 4,
|
||||
"archive_present": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_entry_count": 687,
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"archive_entry_count": 688,
|
||||
"failure_count": 0,
|
||||
"warning_count": 0
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
- Package directory: `dist`
|
||||
- Targets: `4 / 4` adapters present
|
||||
- Archive present: `True`
|
||||
- Archive SHA256: `e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40`
|
||||
- Archive SHA256: `0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8`
|
||||
- Failures: `0`
|
||||
- Warnings: `0`
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"root": ".",
|
||||
"summary": {
|
||||
"target_python": "3.11",
|
||||
"file_count": 227,
|
||||
"file_count": 228,
|
||||
"issue_count": 0,
|
||||
"syntax_error_count": 0,
|
||||
"fstring_311_violation_count": 0,
|
||||
@@ -64,6 +64,12 @@
|
||||
"issue_count": 0,
|
||||
"issues": []
|
||||
},
|
||||
{
|
||||
"path": "scripts/benchmark_release_lock.py",
|
||||
"ok": true,
|
||||
"issue_count": 0,
|
||||
"issues": []
|
||||
},
|
||||
{
|
||||
"path": "scripts/build_confusion_matrix.py",
|
||||
"ok": true,
|
||||
|
||||
@@ -6,7 +6,7 @@ Generated at: `2026-06-13`
|
||||
|
||||
- decision: `pass`
|
||||
- target python: `3.11`
|
||||
- files scanned: `227`
|
||||
- files scanned: `228`
|
||||
- issues: `0`
|
||||
- syntax errors: `0`
|
||||
- f-string 3.11 violations: `0`
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
"compatibility": {
|
||||
"openai": "pass",
|
||||
@@ -53,7 +53,7 @@
|
||||
},
|
||||
"distribution": {
|
||||
"archive_verified": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"package_verification": "reports/package_verification.json",
|
||||
"install_simulated": true,
|
||||
"install_simulation": "reports/install_simulation.json"
|
||||
@@ -78,7 +78,7 @@
|
||||
"vscode"
|
||||
],
|
||||
"package_metadata": "registry/packages/yao-meta-skill.json",
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
- Maturity: `governed`
|
||||
- Owner: `Yao Team`
|
||||
- License: `MIT`
|
||||
- Package SHA256: `7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e`
|
||||
- Archive SHA256: `e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40`
|
||||
- Package SHA256: `6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59`
|
||||
- Archive SHA256: `0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8`
|
||||
- Install simulated: `True`
|
||||
|
||||
## Compatibility
|
||||
|
||||
@@ -759,12 +759,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>5 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>148 scripts scanned; secrets found</p></article><article class='metric'><span>Py Compat</span><strong>0</strong><p>227 files scanned for Python 3.11</p></article><article class='metric'><span>Arch Debt</span><strong>0</strong><p>696 largest lines; 0 watchlist; 2 early; 68 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>Daily Ops</span><strong>5</strong><p>proposal-review; approval 0; release lock false</p></article><article class='metric'><span>Weekly Queue</span><strong>5</strong><p>curator-review; ready 1; top score 88</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>182 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>687 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>5 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>149 scripts scanned; secrets found</p></article><article class='metric'><span>Py Compat</span><strong>0</strong><p>228 files scanned for Python 3.11</p></article><article class='metric'><span>Arch Debt</span><strong>0</strong><p>696 largest lines; 0 watchlist; 2 early; 68 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>Daily Ops</span><strong>5</strong><p>proposal-review; approval 0; release lock false</p></article><article class='metric'><span>Weekly Queue</span><strong>5</strong><p>curator-review; ready 1; top score 88</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>182 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>688 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 990/1000; deferred 506961/120000; top deferred scripts 445781; resource governance governed; quality density 131.3</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; 148 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; 227 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>224 Python files; 0 hotspots; 0 watchlist files; 2 early watch files; 0 blockers; largest 696 lines; 68 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; daily proposals 5; daily decision proposal-review; daily release lock false; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock false</p><footer>reports/adoption_drift_report.json + reports/skillops/daily + reports/skillops/weekly <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 9/19 pass; 10 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 990/1000; deferred 507713/120000; top deferred scripts 446533; resource governance governed; quality density 131.3</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; 149 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; 228 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>225 Python files; 0 hotspots; 0 watchlist files; 2 early watch files; 0 blockers; largest 696 lines; 68 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; daily proposals 5; daily decision proposal-review; daily release lock false; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock false</p><footer>reports/adoption_drift_report.json + reports/skillops/daily + reports/skillops/weekly <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 9/19 pass; 10 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>
|
||||
|
||||
<section>
|
||||
@@ -831,17 +831,17 @@
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
<div class="panel"><h2>上下文</h2><p>initial load 990/1000; deferred 506961/120000; top deferred scripts 445781; resource governance governed; quality density 131.3</p></div>
|
||||
<div class="panel"><h2>上下文</h2><p>initial load 990/1000; deferred 507713/120000; top deferred scripts 446533; resource governance governed; quality density 131.3</p></div>
|
||||
<div class="panel"><h2>编译证据</h2><p>Review reports/compiled_targets.md before packaging to inspect target adapter modes, generated files, preserved semantics, warnings, and unsupported features.</p></div>
|
||||
</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>148</dd></div><div><dt>网络脚本</dt><dd>3</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e</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>149</dd></div><div><dt>网络脚本</dt><dd>3</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59</code></dd></div></dl></div>
|
||||
<div class="panel"><h2>安全边界</h2><p>高风险 secret、远程 inline execution、缺失依赖策略或无法解释的脚本接口应阻断 governed release。</p></div>
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
<div class="panel"><h2>Python 兼容</h2><dl class='kv-grid'><div><dt>目标 Python</dt><dd>3.11</dd></div><div><dt>文件数</dt><dd>227</dd></div><div><dt>问题数</dt><dd>0</dd></div><div><dt>语法错误</dt><dd>0</dd></div><div><dt>F-string 3.11</dt><dd>0</dd></div></dl></div>
|
||||
<div class="panel"><h2>Python 兼容</h2><dl class='kv-grid'><div><dt>目标 Python</dt><dd>3.11</dd></div><div><dt>文件数</dt><dd>228</dd></div><div><dt>问题数</dt><dd>0</dd></div><div><dt>语法错误</dt><dd>0</dd></div><div><dt>F-string 3.11</dt><dd>0</dd></div></dl></div>
|
||||
<div class="panel"><h2>解释器边界</h2><p>CI 和发布审查以 Python 3.11 兼容为底线;本地更高版本允许的新语法不能绕过兼容门禁。</p></div>
|
||||
</section>
|
||||
|
||||
@@ -880,7 +880,7 @@
|
||||
<div class="panel"><h2>批准台账</h2><dl class='kv-grid'><div><dt>Waiver Count</dt><dd>0</dd></div><div><dt>Active Count</dt><dd>0</dd></div><div><dt>Expired Count</dt><dd>0</dd></div><div><dt>Invalid Count</dt><dd>0</dd></div><div><dt>覆盖 Gate</dt><dd>0</dd></div></dl></div>
|
||||
</div>
|
||||
<h3 class="section-subtitle">批准候选</h3>
|
||||
<div class='waiver-candidate-grid'><article class='waiver-card allowed'><div><span>可批准 · needs-reviewer-decision</span><h3>Output Lab</h3></div><p>review pending 5; model-executed 0; output failures 0</p><dl><dt>Gate</dt><dd><code>output-lab</code></dd><dt>证据</dt><dd><code>reports/output_review_adjudication.md</code></dd><dt>选项</dt><dd>accepted-risk, false-positive, temporary-exception</dd><dt>边界</dt><dd>Does not count as provider, human, or public world-class completion evidence.</dd></dl><div class='waiver-review'><h4>审查条件</h4><ul><li>Reviewer confirms this release does not claim provider-backed or human-adjudicated output superiority.</li><li>Reviewer names the release scope and expiry date.</li><li>Reviewer links output_review_adjudication or output_execution evidence.</li></ul></div><div class='waiver-command'><span>建议命令</span><code>python3 scripts/yao.py review-waivers . --add-waiver --gate-key output-lab --reviewer "<reviewer>" --reason "Output Lab has pending human/provider evidence; accepted only for this bounded review scope." --expires-at 2027-06-17 --evidence reports/output_review_adjudication.md</code></div></article><article class='waiver-card blocked'><div><span>不可批准 · cannot-waive</span><h3>World-Class Evidence</h3></div><p>4 pending evidence entries; 1 human pending; 3 external pending</p><dl><dt>Gate</dt><dd><code>world-class-evidence</code></dd><dt>证据</dt><dd><code>reports/world_class_evidence_ledger.md</code></dd><dt>选项</dt><dd>无</dd><dt>边界</dt><dd>Non-waivable completion boundary.</dd></dl><div class='waiver-review'><h4>审查条件</h4><ul><li>Do not use a waiver to claim public world-class readiness.</li><li>Either submit accepted ledger evidence or state that this release does not claim world-class completion.</li><li>Keep claim guard active until ledger summary.ready_to_claim_world_class is true.</li></ul></div><div class='waiver-command'><span>建议命令</span><code>python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions && python3 scripts/yao.py world-class-claim-guard .</code></div></article></div>
|
||||
<div class='waiver-candidate-grid'><article class='waiver-card allowed'><div><span>可批准 · needs-reviewer-decision</span><h3>Output Lab</h3></div><p>review pending 5; model-executed 0; output failures 0</p><dl><dt>Gate</dt><dd><code>output-lab</code></dd><dt>证据</dt><dd><code>reports/output_review_adjudication.md</code></dd><dt>选项</dt><dd>accepted-risk, false-positive, temporary-exception</dd><dt>边界</dt><dd>Does not count as provider, human, or public world-class completion evidence.</dd></dl><div class='waiver-review'><h4>审查条件</h4><ul><li>Reviewer confirms this release does not claim provider-backed or human-adjudicated output superiority.</li><li>Reviewer names the release scope and expiry date.</li><li>Reviewer links output_review_adjudication or output_execution evidence.</li></ul></div><div class='waiver-command'><span>建议命令</span><code>python3 scripts/yao.py review-waivers . --add-waiver --gate-key output-lab --reviewer "<reviewer>" --reason "Output Lab has pending human/provider evidence; accepted only for this bounded review scope." --expires-at 2027-06-13 --evidence reports/output_review_adjudication.md</code></div></article><article class='waiver-card blocked'><div><span>不可批准 · cannot-waive</span><h3>World-Class Evidence</h3></div><p>4 pending evidence entries; 1 human pending; 3 external pending</p><dl><dt>Gate</dt><dd><code>world-class-evidence</code></dd><dt>证据</dt><dd><code>reports/world_class_evidence_ledger.md</code></dd><dt>选项</dt><dd>无</dd><dt>边界</dt><dd>Non-waivable completion boundary.</dd></dl><div class='waiver-review'><h4>审查条件</h4><ul><li>Do not use a waiver to claim public world-class readiness.</li><li>Either submit accepted ledger evidence or state that this release does not claim world-class completion.</li><li>Keep claim guard active until ledger summary.ready_to_claim_world_class is true.</li></ul></div><div class='waiver-command'><span>建议命令</span><code>python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions && python3 scripts/yao.py world-class-claim-guard .</code></div></article></div>
|
||||
</section>
|
||||
|
||||
<section id="world-class">
|
||||
@@ -922,12 +922,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>e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40</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>0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8</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>687</dd></div><div><dt>失败数</dt><dd>0</dd></div><div><dt>警告数</dt><dd>0</dd></div><div><dt>归档哈希</dt><dd><code>e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40</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>688</dd></div><div><dt>失败数</dt><dd>0</dd></div><div><dt>警告数</dt><dd>0</dd></div><div><dt>归档哈希</dt><dd><code>0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8</code></dd></div></dl></div>
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
|
||||
+238
-158
File diff suppressed because it is too large
Load Diff
+28
-24
@@ -514,7 +514,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 148
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -529,7 +529,7 @@
|
||||
"file_count": 235
|
||||
}
|
||||
],
|
||||
"file_count": 451,
|
||||
"file_count": 452,
|
||||
"folder_count": 4,
|
||||
"distribution": [
|
||||
{
|
||||
@@ -554,7 +554,7 @@
|
||||
},
|
||||
{
|
||||
"label": "scripts",
|
||||
"value": 148
|
||||
"value": 149
|
||||
},
|
||||
{
|
||||
"label": "evals",
|
||||
@@ -684,7 +684,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 148
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -1010,9 +1010,9 @@
|
||||
"methodology_complete": true,
|
||||
"required_artifact_count": 25,
|
||||
"missing_artifact_count": 0,
|
||||
"evidence_bundle_sha256": "55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492ae7c962ef6",
|
||||
"source_contract_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"evidence_bundle_sha256": "e114eec2acbc1cbb7ac578dd4e5165c3ed2b88e4922ba3e64d2c6232a577fc6d",
|
||||
"source_contract_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"output_case_count": 5,
|
||||
"failure_disclosure_count": 3,
|
||||
"command_count": 23,
|
||||
@@ -1032,12 +1032,16 @@
|
||||
"public_claim_ready": false,
|
||||
"public_claim_blocker_count": 5,
|
||||
"working_tree_dirty": true,
|
||||
"changed_file_count": 67
|
||||
"changed_file_count": 62,
|
||||
"source_tree_dirty": true,
|
||||
"source_changed_file_count": 6,
|
||||
"generated_tree_dirty": true,
|
||||
"generated_changed_file_count": 56
|
||||
},
|
||||
"commit": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"commit": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"missing_artifacts": [],
|
||||
"limitations": [
|
||||
"The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.",
|
||||
"The git commit and dirty flags are generation-time context; release lock is blocked by source changes, while generated evidence artifacts are tracked separately.",
|
||||
"Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.",
|
||||
"Pending blind-review decisions are visible but do not count as human adjudication.",
|
||||
"World-class readiness remains false until external and human evidence gaps close."
|
||||
@@ -1118,9 +1122,9 @@
|
||||
"failures": []
|
||||
},
|
||||
"trust_security": {
|
||||
"scanned_files": 240,
|
||||
"script_count": 148,
|
||||
"internal_module_count": 62,
|
||||
"scanned_files": 241,
|
||||
"script_count": 149,
|
||||
"internal_module_count": 63,
|
||||
"secret_findings": 0,
|
||||
"dependency_files": [
|
||||
"requirements-ci.txt"
|
||||
@@ -1138,8 +1142,8 @@
|
||||
"help_smoke_failed_count": 0,
|
||||
"interactive_script_count": 0,
|
||||
"package_hash_scope": "source-contract-without-generated-reports",
|
||||
"package_hash_file_count": 240,
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"package_hash_file_count": 241,
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
},
|
||||
"skill_atlas": {
|
||||
"skill_count": 12,
|
||||
@@ -1177,8 +1181,8 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
"compatibility": {
|
||||
"openai": "pass",
|
||||
@@ -1209,12 +1213,12 @@
|
||||
},
|
||||
"distribution": {
|
||||
"archive_verified": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"package_verification": "reports/package_verification.json",
|
||||
"install_simulated": true,
|
||||
"install_simulation": "reports/install_simulation.json"
|
||||
},
|
||||
"generated_at": "2026-06-17"
|
||||
"generated_at": "2026-06-13"
|
||||
},
|
||||
"failures": [],
|
||||
"warnings": []
|
||||
@@ -1225,8 +1229,8 @@
|
||||
"target_count": 4,
|
||||
"adapter_count": 4,
|
||||
"archive_present": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_entry_count": 687,
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"archive_entry_count": 688,
|
||||
"failure_count": 0,
|
||||
"warning_count": 0
|
||||
},
|
||||
@@ -1237,7 +1241,7 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"archive_present": true,
|
||||
"archive_entry_count": 687,
|
||||
"archive_entry_count": 688,
|
||||
"archive_extracted": true,
|
||||
"entrypoint_loaded": true,
|
||||
"manifest_loaded": true,
|
||||
@@ -1304,12 +1308,12 @@
|
||||
{
|
||||
"field": "archive_sha256",
|
||||
"from": "",
|
||||
"to": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"to": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
{
|
||||
"field": "package_sha256",
|
||||
"from": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"to": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"to": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
"ok": true,
|
||||
"skill_dir": ".",
|
||||
"summary": {
|
||||
"scanned_files": 240,
|
||||
"script_count": 148,
|
||||
"internal_module_count": 62,
|
||||
"scanned_files": 241,
|
||||
"script_count": 149,
|
||||
"internal_module_count": 63,
|
||||
"secret_findings": 0,
|
||||
"dependency_files": [
|
||||
"requirements-ci.txt"
|
||||
@@ -22,8 +22,8 @@
|
||||
"help_smoke_failed_count": 0,
|
||||
"interactive_script_count": 0,
|
||||
"package_hash_scope": "source-contract-without-generated-reports",
|
||||
"package_hash_file_count": 240,
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"package_hash_file_count": 241,
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
},
|
||||
"failures": [],
|
||||
"warnings": [],
|
||||
@@ -85,6 +85,20 @@
|
||||
"network_urls": [],
|
||||
"network_hosts": []
|
||||
},
|
||||
{
|
||||
"path": "scripts/benchmark_release_lock.py",
|
||||
"interface": "internal-module",
|
||||
"interface_declared": true,
|
||||
"interface_reason": "Imported by render_benchmark_reproducibility.py to keep release-lock git status classification out of the report renderer.",
|
||||
"has_argparse": false,
|
||||
"has_main_guard": false,
|
||||
"uses_input": false,
|
||||
"uses_network": false,
|
||||
"uses_file_write": false,
|
||||
"uses_subprocess": true,
|
||||
"network_urls": [],
|
||||
"network_hosts": []
|
||||
},
|
||||
{
|
||||
"path": "scripts/build_confusion_matrix.py",
|
||||
"interface": "cli",
|
||||
@@ -2153,7 +2167,7 @@
|
||||
"checked_count": 86,
|
||||
"passed_count": 86,
|
||||
"failed_count": 0,
|
||||
"skipped_count": 62,
|
||||
"skipped_count": 63,
|
||||
"failed_scripts": [],
|
||||
"results": [
|
||||
{
|
||||
@@ -3026,6 +3040,10 @@
|
||||
"path": "scripts/adaptation_report_contracts.py",
|
||||
"reason": "internal module"
|
||||
},
|
||||
{
|
||||
"path": "scripts/benchmark_release_lock.py",
|
||||
"reason": "internal module"
|
||||
},
|
||||
{
|
||||
"path": "scripts/build_skill_atlas_layout.py",
|
||||
"reason": "internal module"
|
||||
@@ -3416,6 +3434,7 @@
|
||||
"status": "approved",
|
||||
"scripts": [
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/ci_test.py",
|
||||
"scripts/render_benchmark_reproducibility.py",
|
||||
"scripts/render_eval_dashboard.py",
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Security Trust Report
|
||||
|
||||
- OK: `True`
|
||||
- Scanned files: `240`
|
||||
- Scripts: `148`
|
||||
- Internal script modules: `62`
|
||||
- Scanned files: `241`
|
||||
- Scripts: `149`
|
||||
- Internal script modules: `63`
|
||||
- Secret findings: `0`
|
||||
- Network-capable scripts: `3`
|
||||
- Network policy covered scripts: `3`
|
||||
@@ -15,8 +15,8 @@
|
||||
- CLI help smoke failures: `0`
|
||||
- Interactive scripts: `0`
|
||||
- Package hash scope: `source-contract-without-generated-reports`
|
||||
- Package hash files: `240`
|
||||
- Package SHA256: `7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e`
|
||||
- Package hash files: `241`
|
||||
- Package SHA256: `6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59`
|
||||
|
||||
## Failures
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
| scripts/adaptation_report_contracts.py | internal-module | True | False | False | False | False | False | False | Shared adaptation approval and regression report contract decoration helpers. |
|
||||
| scripts/adjudicate_output_review.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
|
||||
| scripts/apply_adaptation.py | cli | True | True | True | False | False | True | True | Approval-gated adaptive patch application with dry-run, allowlist, regression, and rollback evidence. |
|
||||
| scripts/benchmark_release_lock.py | internal-module | True | False | False | False | False | False | True | Imported by render_benchmark_reproducibility.py to keep release-lock git status classification out of the report renderer. |
|
||||
| scripts/build_confusion_matrix.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
|
||||
| scripts/build_skill_atlas.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
|
||||
| scripts/build_skill_atlas_layout.py | internal-module | True | False | False | False | False | False | False | Imported by build_skill_atlas.py to render the static Skill Atlas HTML report. |
|
||||
|
||||
@@ -940,7 +940,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.5 99.5" 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.5 99.5" stroke-dashoffset="-0.5" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.5 99.5" stroke-dashoffset="-1.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.5 99.5" stroke-dashoffset="-1.6" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="18.7 81.3" stroke-dashoffset="-2.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="79.1 20.9" stroke-dashoffset="-20.9" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">451项</text><text data-lang="en" x="130" y="136" text-anchor="middle">451 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.5 99.5" 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.5 99.5" stroke-dashoffset="-0.5" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.5 99.5" stroke-dashoffset="-1.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.5 99.5" stroke-dashoffset="-1.6" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="18.6 81.4" stroke-dashoffset="-2.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="79.3 20.7" stroke-dashoffset="-20.7" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">452项</text><text data-lang="en" x="130" y="136" text-anchor="middle">452 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>
|
||||
|
||||
@@ -514,7 +514,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 148
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -529,7 +529,7 @@
|
||||
"file_count": 235
|
||||
}
|
||||
],
|
||||
"file_count": 451,
|
||||
"file_count": 452,
|
||||
"folder_count": 4,
|
||||
"distribution": [
|
||||
{
|
||||
@@ -554,7 +554,7 @@
|
||||
},
|
||||
{
|
||||
"label": "scripts",
|
||||
"value": 148
|
||||
"value": 149
|
||||
},
|
||||
{
|
||||
"label": "evals",
|
||||
@@ -688,7 +688,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 148
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -1014,9 +1014,9 @@
|
||||
"methodology_complete": true,
|
||||
"required_artifact_count": 25,
|
||||
"missing_artifact_count": 0,
|
||||
"evidence_bundle_sha256": "55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492ae7c962ef6",
|
||||
"source_contract_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"evidence_bundle_sha256": "e114eec2acbc1cbb7ac578dd4e5165c3ed2b88e4922ba3e64d2c6232a577fc6d",
|
||||
"source_contract_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"output_case_count": 5,
|
||||
"failure_disclosure_count": 3,
|
||||
"command_count": 23,
|
||||
@@ -1036,12 +1036,16 @@
|
||||
"public_claim_ready": false,
|
||||
"public_claim_blocker_count": 5,
|
||||
"working_tree_dirty": true,
|
||||
"changed_file_count": 67
|
||||
"changed_file_count": 62,
|
||||
"source_tree_dirty": true,
|
||||
"source_changed_file_count": 6,
|
||||
"generated_tree_dirty": true,
|
||||
"generated_changed_file_count": 56
|
||||
},
|
||||
"commit": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"commit": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"missing_artifacts": [],
|
||||
"limitations": [
|
||||
"The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.",
|
||||
"The git commit and dirty flags are generation-time context; release lock is blocked by source changes, while generated evidence artifacts are tracked separately.",
|
||||
"Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.",
|
||||
"Pending blind-review decisions are visible but do not count as human adjudication.",
|
||||
"World-class readiness remains false until external and human evidence gaps close."
|
||||
@@ -1122,9 +1126,9 @@
|
||||
"failures": []
|
||||
},
|
||||
"trust_security": {
|
||||
"scanned_files": 240,
|
||||
"script_count": 148,
|
||||
"internal_module_count": 62,
|
||||
"scanned_files": 241,
|
||||
"script_count": 149,
|
||||
"internal_module_count": 63,
|
||||
"secret_findings": 0,
|
||||
"dependency_files": [
|
||||
"requirements-ci.txt"
|
||||
@@ -1142,8 +1146,8 @@
|
||||
"help_smoke_failed_count": 0,
|
||||
"interactive_script_count": 0,
|
||||
"package_hash_scope": "source-contract-without-generated-reports",
|
||||
"package_hash_file_count": 240,
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"package_hash_file_count": 241,
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
},
|
||||
"skill_atlas": {
|
||||
"skill_count": 12,
|
||||
@@ -1181,8 +1185,8 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
"compatibility": {
|
||||
"openai": "pass",
|
||||
@@ -1213,12 +1217,12 @@
|
||||
},
|
||||
"distribution": {
|
||||
"archive_verified": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"package_verification": "reports/package_verification.json",
|
||||
"install_simulated": true,
|
||||
"install_simulation": "reports/install_simulation.json"
|
||||
},
|
||||
"generated_at": "2026-06-17"
|
||||
"generated_at": "2026-06-13"
|
||||
},
|
||||
"failures": [],
|
||||
"warnings": []
|
||||
@@ -1229,8 +1233,8 @@
|
||||
"target_count": 4,
|
||||
"adapter_count": 4,
|
||||
"archive_present": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_entry_count": 687,
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"archive_entry_count": 688,
|
||||
"failure_count": 0,
|
||||
"warning_count": 0
|
||||
},
|
||||
@@ -1241,7 +1245,7 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"archive_present": true,
|
||||
"archive_entry_count": 687,
|
||||
"archive_entry_count": 688,
|
||||
"archive_extracted": true,
|
||||
"entrypoint_loaded": true,
|
||||
"manifest_loaded": true,
|
||||
@@ -1308,12 +1312,12 @@
|
||||
{
|
||||
"field": "archive_sha256",
|
||||
"from": "",
|
||||
"to": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"to": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
{
|
||||
"field": "package_sha256",
|
||||
"from": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"to": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"to": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -135,13 +135,13 @@ Next move: add real client or installer permission enforcement integration.
|
||||
| Output Eval | `5` cases, with-skill pass rate `100`, baseline pass rate `0`, with file-backed, near-neighbor, boundary coverage, `10` local command-runner execution runs, `0` recorded fixture runs, `0` provider model-executed runs in root release evidence, `10` estimated token counts, provider runner v0 available, `5` blind A/B review pairs, a generated `reports/output_review_decisions.json` template, `0 / 5` reviewer decisions pending, `0` answer keys revealed, and `5` pending answers hidden |
|
||||
| Runtime Conformance | `5 / 5` targets passing |
|
||||
| Target Compiler | `5 / 5` compiled target contracts generated for OpenAI, Claude, generic, Agent Skills compatible, and VS Code / Copilot outputs, including target permission contracts and target-native behavior contracts |
|
||||
| Trust | `0` secret findings, `1` pinned dependency file, `62` declared internal modules, `3 / 3` network-capable scripts covered by bounded host policy, `86 / 86` CLI help smoke checks passing across `148` scripts, source-contract hash scope explicit |
|
||||
| Trust | `0` secret findings, `1` pinned dependency file, `63` declared internal modules, `3 / 3` network-capable scripts covered by bounded host policy, `86 / 86` CLI help smoke checks passing across `149` scripts, source-contract hash scope explicit |
|
||||
| Permission Governance | `3 / 3` required high-permission capabilities approved, `0` missing, `0` invalid, `0` expired |
|
||||
| Runtime Permission Probes | `4 / 4` target adapters probed, `0` native-enforcement adapters, `4` explicit metadata fallbacks, `4` residual risks retained for reviewer visibility |
|
||||
| Skill Atlas | `12` scanned skills, `1` actionable root skill, `1` telemetry report, `0` actionable route collisions, `0` actionable owner gaps, `0` actionable stale skills, `0` actionable drift signals, `24` scoped non-actionable issue signals retained for visibility |
|
||||
| Registry Audit | package metadata generated with version, owner, license, source checksum, archive checksum, Skill IR provenance, and compatibility matrix |
|
||||
| Package Verification | `4 / 4` target adapters present, archive verified, `687` zip entries, `0` failures, `0` warnings |
|
||||
| Install Simulation | archive with `687` 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, `688` zip entries, `0` failures, `0` warnings |
|
||||
| Install Simulation | archive with `688` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `4` adapters readable, `12` installer permission checks enforced, `0` permission failures, `0` failures, `0` warnings |
|
||||
| Local Install Sync Preflight | `make sync-local-install` and `make sync-active-install` rebuild the package first, then sync only after install simulation passes with `12` enforced installer permission checks and `0` permission failures |
|
||||
| Upgrade Check | current package declares `minor` over the 1.0.0 baseline, recommended bump is `minor`, and release notes include added targets plus checksum changes |
|
||||
| Adoption Drift | `1` metadata-only review event, `1` adoption sample, adoption `100`, risk band `low`; optional `yao.py` CLI capture, external client `telemetry-emit`, `5` `telemetry-hooks` recipes, Browser/Chrome native messaging host, and validated external JSONL import are available but off by default for reproducible release evidence; raw `reports/telemetry_events.jsonl` is gitignored and blocked from zip packages |
|
||||
|
||||
@@ -940,7 +940,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.5 99.5" 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.5 99.5" stroke-dashoffset="-0.5" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.5 99.5" stroke-dashoffset="-1.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.5 99.5" stroke-dashoffset="-1.6" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="18.7 81.3" stroke-dashoffset="-2.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="79.1 20.9" stroke-dashoffset="-20.9" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">451项</text><text data-lang="en" x="130" y="136" text-anchor="middle">451 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.5 99.5" 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.5 99.5" stroke-dashoffset="-0.5" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.5 99.5" stroke-dashoffset="-1.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.5 99.5" stroke-dashoffset="-1.6" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="18.6 81.4" stroke-dashoffset="-2.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="79.3 20.7" stroke-dashoffset="-20.7" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">452项</text><text data-lang="en" x="130" y="136" text-anchor="middle">452 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>
|
||||
|
||||
+28
-24
@@ -513,7 +513,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 148
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -528,7 +528,7 @@
|
||||
"file_count": 235
|
||||
}
|
||||
],
|
||||
"file_count": 451,
|
||||
"file_count": 452,
|
||||
"folder_count": 4,
|
||||
"distribution": [
|
||||
{
|
||||
@@ -553,7 +553,7 @@
|
||||
},
|
||||
{
|
||||
"label": "scripts",
|
||||
"value": 148
|
||||
"value": 149
|
||||
},
|
||||
{
|
||||
"label": "evals",
|
||||
@@ -683,7 +683,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 148
|
||||
"file_count": 149
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -1009,9 +1009,9 @@
|
||||
"methodology_complete": true,
|
||||
"required_artifact_count": 25,
|
||||
"missing_artifact_count": 0,
|
||||
"evidence_bundle_sha256": "55fc0caa28b80022bd16a0a84f77bb0040c4f6eee14fabb526f492ae7c962ef6",
|
||||
"source_contract_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"evidence_bundle_sha256": "e114eec2acbc1cbb7ac578dd4e5165c3ed2b88e4922ba3e64d2c6232a577fc6d",
|
||||
"source_contract_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"output_case_count": 5,
|
||||
"failure_disclosure_count": 3,
|
||||
"command_count": 23,
|
||||
@@ -1031,12 +1031,16 @@
|
||||
"public_claim_ready": false,
|
||||
"public_claim_blocker_count": 5,
|
||||
"working_tree_dirty": true,
|
||||
"changed_file_count": 67
|
||||
"changed_file_count": 62,
|
||||
"source_tree_dirty": true,
|
||||
"source_changed_file_count": 6,
|
||||
"generated_tree_dirty": true,
|
||||
"generated_changed_file_count": 56
|
||||
},
|
||||
"commit": "f2cf8a9e53f02dbaf34bf1d0b874284d893ebc11",
|
||||
"commit": "4a1a5295708ba3570821583652ef91fda0f0874f",
|
||||
"missing_artifacts": [],
|
||||
"limitations": [
|
||||
"The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.",
|
||||
"The git commit and dirty flags are generation-time context; release lock is blocked by source changes, while generated evidence artifacts are tracked separately.",
|
||||
"Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.",
|
||||
"Pending blind-review decisions are visible but do not count as human adjudication.",
|
||||
"World-class readiness remains false until external and human evidence gaps close."
|
||||
@@ -1117,9 +1121,9 @@
|
||||
"failures": []
|
||||
},
|
||||
"trust_security": {
|
||||
"scanned_files": 240,
|
||||
"script_count": 148,
|
||||
"internal_module_count": 62,
|
||||
"scanned_files": 241,
|
||||
"script_count": 149,
|
||||
"internal_module_count": 63,
|
||||
"secret_findings": 0,
|
||||
"dependency_files": [
|
||||
"requirements-ci.txt"
|
||||
@@ -1137,8 +1141,8 @@
|
||||
"help_smoke_failed_count": 0,
|
||||
"interactive_script_count": 0,
|
||||
"package_hash_scope": "source-contract-without-generated-reports",
|
||||
"package_hash_file_count": 240,
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"package_hash_file_count": 241,
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
},
|
||||
"skill_atlas": {
|
||||
"skill_count": 12,
|
||||
@@ -1176,8 +1180,8 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e",
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"package_sha256": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
"compatibility": {
|
||||
"openai": "pass",
|
||||
@@ -1208,12 +1212,12 @@
|
||||
},
|
||||
"distribution": {
|
||||
"archive_verified": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"package_verification": "reports/package_verification.json",
|
||||
"install_simulated": true,
|
||||
"install_simulation": "reports/install_simulation.json"
|
||||
},
|
||||
"generated_at": "2026-06-17"
|
||||
"generated_at": "2026-06-13"
|
||||
},
|
||||
"failures": [],
|
||||
"warnings": []
|
||||
@@ -1224,8 +1228,8 @@
|
||||
"target_count": 4,
|
||||
"adapter_count": 4,
|
||||
"archive_present": true,
|
||||
"archive_sha256": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40",
|
||||
"archive_entry_count": 687,
|
||||
"archive_sha256": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8",
|
||||
"archive_entry_count": 688,
|
||||
"failure_count": 0,
|
||||
"warning_count": 0
|
||||
},
|
||||
@@ -1236,7 +1240,7 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"archive_present": true,
|
||||
"archive_entry_count": 687,
|
||||
"archive_entry_count": 688,
|
||||
"archive_extracted": true,
|
||||
"entrypoint_loaded": true,
|
||||
"manifest_loaded": true,
|
||||
@@ -1303,12 +1307,12 @@
|
||||
{
|
||||
"field": "archive_sha256",
|
||||
"from": "",
|
||||
"to": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"to": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
{
|
||||
"field": "package_sha256",
|
||||
"from": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"to": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"to": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
"scripts/adaptation_report_contracts.py",
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
"scripts/build_skill_atlas.py",
|
||||
"scripts/build_skill_atlas_layout.py",
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
"key": "trust-security",
|
||||
"label": "Trust Security",
|
||||
"status": "pass",
|
||||
"current": "secrets 0; scripts 148; help failures 0",
|
||||
"current": "secrets 0; scripts 149; help failures 0",
|
||||
"target": "Secrets, scripts, dependencies, permissions, and package hash are reviewable",
|
||||
"evidence": [
|
||||
{
|
||||
@@ -285,7 +285,7 @@
|
||||
"key": "registry-distribution",
|
||||
"label": "Registry Distribution",
|
||||
"status": "pass",
|
||||
"current": "zip entries 687; install failures 0; permission failures 0",
|
||||
"current": "zip entries 688; install failures 0; permission failures 0",
|
||||
"target": "Package metadata, archive checksum, package verification, and install simulation pass",
|
||||
"evidence": [
|
||||
{
|
||||
|
||||
@@ -23,11 +23,11 @@ Generated at: `2026-06-13`
|
||||
| Human Adjudication | human-required | 0/5 decisions; pending 5 | Real reviewer decisions, blind-review attestation, and integrity fingerprints recorded before claiming output review completion | Record real A/B choices, reviewer metadata, and blind-review attestation, then regenerate adjudication. |
|
||||
| Benchmark Reproducibility | pass | artifacts 25; missing 0; failures 3 | Public methodology, reproducible commands, required artifacts, and failure disclosure are machine-checkable | Keep the manifest current with every benchmark, package, and release evidence change. |
|
||||
| Runtime Conformance | pass | 5/5 targets pass | Target package structure, metadata, relative paths, and degradation notes pass | Keep target conformance fixtures updated as platform contracts change. |
|
||||
| Trust Security | pass | secrets 0; scripts 148; help failures 0 | Secrets, scripts, dependencies, permissions, and package hash are reviewable | Keep high-permission approvals scoped, expiring, and target-mapped. |
|
||||
| Trust Security | pass | secrets 0; scripts 149; help failures 0 | Secrets, scripts, dependencies, permissions, and package hash are reviewable | Keep high-permission approvals scoped, expiring, and target-mapped. |
|
||||
| Permission Metadata | pass | 4/4 target probes pass; metadata fallback 4; installer enforcement 4 | Packaged adapters expose explicit permission metadata, residual risks, and installer enforcement evidence when available | Preserve residual-risk notes until real native enforcement exists. |
|
||||
| Native Permission Enforcement | external-required | native-enforced targets 0; installer-enforced targets 4 | At least one target/client enforces approved permissions at runtime | Integrate a real target-client or external installer runtime guard before claiming native permission enforcement. |
|
||||
| Skill Atlas | pass | 12 skills; actionable collisions 0 | Workspace catalog, route overlap, stale/owner gaps, drift, and no-route opportunities | Feed real drift data into Atlas once client telemetry is installed. |
|
||||
| Registry Distribution | pass | zip entries 687; install failures 0; permission failures 0 | Package metadata, archive checksum, package verification, and install simulation pass | Regenerate registry after package verification so checksums stay aligned. |
|
||||
| Registry Distribution | pass | zip entries 688; install failures 0; permission failures 0 | Package metadata, archive checksum, package verification, and install simulation pass | Regenerate registry after package verification so checksums stay aligned. |
|
||||
| Review Studio | pass | decision review; warnings 3; score 91 | One page shows gates, evidence paths, blockers, warnings, actions, waivers, and annotations | Resolve human/external warning gates before claiming full release readiness. |
|
||||
| Telemetry Drift | pass | events 1; risk low; recipes 5 | Local-first metadata-only event contract, aggregate drift report, hook recipes, and import path | Keep raw JSONL out of distributed packages and use aggregate reports for Atlas. |
|
||||
| Native Client Telemetry | external-required | external source events 0; adoption samples 1 | A real Browser/Chrome/provider client sends production metadata events | Install a real client against the native host and import production metadata-only events. |
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
"label": "Trust Security",
|
||||
"status": "pass",
|
||||
"objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.",
|
||||
"current": "148 scripts; secrets 0; help failures 0",
|
||||
"current": "149 scripts; secrets 0; help failures 0",
|
||||
"command": "python3 scripts/yao.py trust .",
|
||||
"test": "python3 tests/verify_trust_check.py",
|
||||
"evidence": [
|
||||
@@ -204,7 +204,7 @@
|
||||
"label": "Registry Distribution",
|
||||
"status": "pass",
|
||||
"objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.",
|
||||
"current": "archive entries 687; install failures 0",
|
||||
"current": "archive entries 688; 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": [
|
||||
|
||||
@@ -26,9 +26,9 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts,
|
||||
| Skill IR | `pass` | schema 2.0.0; targets 5 | `python3 scripts/yao.py skill-ir .` | `python3 tests/verify_skill_ir.py` |
|
||||
| Output Eval Lab | `pass` | 5 cases; delta 100.0; execution 10 | `python3 scripts/yao.py output-exec . && python3 scripts/yao.py output-review .` | `python3 tests/verify_output_eval_lab.py` |
|
||||
| Runtime Conformance | `pass` | 5/5 targets pass | `python3 scripts/yao.py conformance .` | `python3 tests/verify_conformance_suite.py` |
|
||||
| Trust Security | `pass` | 148 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` |
|
||||
| Trust Security | `pass` | 149 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 687; 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 688; 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` |
|
||||
|
||||
|
||||
@@ -70,12 +70,12 @@
|
||||
{
|
||||
"field": "archive_sha256",
|
||||
"from": "",
|
||||
"to": "e0d57b8bede61d6e2e75e068d6ae1e7c3cc62ae64e2b6374edd58f31ace5ee40"
|
||||
"to": "0db54f7880460ee162ea2779554315c225ad912737660379c0c503f068c636e8"
|
||||
},
|
||||
{
|
||||
"field": "package_sha256",
|
||||
"from": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"to": "7993d9f426409a0307d85fa6d9a4a9815a3cbe2faaa06cffff9deba813c4ef7e"
|
||||
"to": "6fbdbed9dfdc8d272caa0a6596312fa524796132dfb3c9e9e1a9cbc801729f59"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Git source/generated dirty classification for benchmark release locks."""
|
||||
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
SCRIPT_INTERFACE = "internal-module"
|
||||
SCRIPT_INTERFACE_REASON = "Imported by render_benchmark_reproducibility.py to keep release-lock git status classification out of the report renderer."
|
||||
|
||||
|
||||
GENERATED_DIRTY_PREFIXES = (
|
||||
"dist/",
|
||||
"registry/index.json",
|
||||
"registry/packages/",
|
||||
"reports/",
|
||||
"skill_atlas/",
|
||||
"skill-ir/examples/",
|
||||
)
|
||||
|
||||
|
||||
def status_path(line: str) -> str:
|
||||
path = line[3:].strip() if len(line) > 3 else line.strip()
|
||||
if " -> " in path:
|
||||
path = path.rsplit(" -> ", 1)[-1].strip()
|
||||
return path
|
||||
|
||||
|
||||
def is_generated_dirty_path(path: str) -> bool:
|
||||
return any(path == prefix.rstrip("/") or path.startswith(prefix) for prefix in GENERATED_DIRTY_PREFIXES)
|
||||
|
||||
|
||||
def git_status(skill_dir: Path) -> dict[str, Any]:
|
||||
try:
|
||||
proc = subprocess.run(
|
||||
["git", "status", "--short", "--untracked-files=all"],
|
||||
cwd=skill_dir,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True,
|
||||
)
|
||||
except (OSError, subprocess.CalledProcessError):
|
||||
return {
|
||||
"available": False,
|
||||
"dirty": None,
|
||||
"changed_file_count": None,
|
||||
"source_dirty": None,
|
||||
"source_changed_file_count": None,
|
||||
"generated_dirty": None,
|
||||
"generated_changed_file_count": None,
|
||||
}
|
||||
lines = [line for line in proc.stdout.splitlines() if line.strip()]
|
||||
paths = [status_path(line) for line in lines]
|
||||
generated_lines = [line for line, path in zip(lines, paths) if is_generated_dirty_path(path)]
|
||||
source_lines = [line for line, path in zip(lines, paths) if not is_generated_dirty_path(path)]
|
||||
return {
|
||||
"available": True,
|
||||
"dirty": bool(lines),
|
||||
"changed_file_count": len(lines),
|
||||
"generated_dirty": bool(generated_lines),
|
||||
"generated_changed_file_count": len(generated_lines),
|
||||
"source_dirty": bool(source_lines),
|
||||
"source_changed_file_count": len(source_lines),
|
||||
"sample": lines[:12],
|
||||
"source_sample": source_lines[:12],
|
||||
"generated_sample": generated_lines[:12],
|
||||
"generated_dirty_prefixes": list(GENERATED_DIRTY_PREFIXES),
|
||||
"scope": "generation-time status before this report is written",
|
||||
}
|
||||
|
||||
|
||||
def release_lock_status(status: dict[str, Any], commit: str) -> dict[str, Any]:
|
||||
available = status.get("available") is True
|
||||
source_clean = status.get("source_dirty") is False
|
||||
known_commit = bool(commit and commit != "unknown")
|
||||
ready = available and source_clean and known_commit
|
||||
reasons = []
|
||||
if not available:
|
||||
reasons.append("git status unavailable")
|
||||
if not known_commit:
|
||||
reasons.append("git commit unavailable")
|
||||
if status.get("source_dirty") is True:
|
||||
reasons.append("source files were dirty at generation time")
|
||||
if status.get("source_dirty") is None:
|
||||
reasons.append("working tree cleanliness unknown")
|
||||
if status.get("generated_dirty") is True and status.get("source_dirty") is False:
|
||||
reasons.append("only generated evidence artifacts were dirty at generation time")
|
||||
if not reasons:
|
||||
reasons.append("clean source tree at generation-time HEAD")
|
||||
return {
|
||||
"ready": ready,
|
||||
"commit": commit,
|
||||
"status_scope": status.get("scope", "generation-time status"),
|
||||
"source_changed_file_count": status.get("source_changed_file_count"),
|
||||
"generated_changed_file_count": status.get("generated_changed_file_count"),
|
||||
"reason": "; ".join(reasons),
|
||||
}
|
||||
@@ -7,6 +7,7 @@ from datetime import date
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from benchmark_release_lock import git_status, release_lock_status
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
SCRIPT_INTERFACE = "cli"
|
||||
@@ -207,27 +208,6 @@ def git_commit(skill_dir: Path) -> str:
|
||||
return proc.stdout.strip() or "unknown"
|
||||
|
||||
|
||||
def git_status(skill_dir: Path) -> dict[str, Any]:
|
||||
try:
|
||||
proc = subprocess.run(
|
||||
["git", "status", "--short", "--untracked-files=all"],
|
||||
cwd=skill_dir,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True,
|
||||
)
|
||||
except (OSError, subprocess.CalledProcessError):
|
||||
return {"available": False, "dirty": None, "changed_file_count": None}
|
||||
lines = [line for line in proc.stdout.splitlines() if line.strip()]
|
||||
return {
|
||||
"available": True,
|
||||
"dirty": bool(lines),
|
||||
"changed_file_count": len(lines),
|
||||
"sample": lines[:12],
|
||||
"scope": "generation-time status before this report is written",
|
||||
}
|
||||
|
||||
|
||||
def count_jsonl(path: Path) -> int:
|
||||
if not path.exists():
|
||||
return 0
|
||||
@@ -292,30 +272,6 @@ def evidence_bundle_fingerprint(artifacts: list[dict[str, Any]]) -> dict[str, An
|
||||
}
|
||||
|
||||
|
||||
def release_lock_status(status: dict[str, Any], commit: str) -> dict[str, Any]:
|
||||
available = status.get("available") is True
|
||||
clean = status.get("dirty") is False
|
||||
known_commit = bool(commit and commit != "unknown")
|
||||
ready = available and clean and known_commit
|
||||
reasons = []
|
||||
if not available:
|
||||
reasons.append("git status unavailable")
|
||||
if not known_commit:
|
||||
reasons.append("git commit unavailable")
|
||||
if status.get("dirty") is True:
|
||||
reasons.append("working tree was dirty at generation time")
|
||||
if status.get("dirty") is None:
|
||||
reasons.append("working tree cleanliness unknown")
|
||||
if not reasons:
|
||||
reasons.append("clean generation-time HEAD")
|
||||
return {
|
||||
"ready": ready,
|
||||
"commit": commit,
|
||||
"status_scope": status.get("scope", "generation-time status"),
|
||||
"reason": "; ".join(reasons),
|
||||
}
|
||||
|
||||
|
||||
def public_claim_blockers(
|
||||
local_reproducibility_ready: bool,
|
||||
release_lock_ready: bool,
|
||||
@@ -444,6 +400,10 @@ def build_report(skill_dir: Path, generated_at: str) -> dict[str, Any]:
|
||||
"public_claim_blocker_count": len(claim_blockers),
|
||||
"working_tree_dirty": status.get("dirty"),
|
||||
"changed_file_count": status.get("changed_file_count"),
|
||||
"source_tree_dirty": status.get("source_dirty"),
|
||||
"source_changed_file_count": status.get("source_changed_file_count"),
|
||||
"generated_tree_dirty": status.get("generated_dirty"),
|
||||
"generated_changed_file_count": status.get("generated_changed_file_count"),
|
||||
},
|
||||
"public_claim": {
|
||||
"ready": public_claim_ready,
|
||||
@@ -463,7 +423,7 @@ def build_report(skill_dir: Path, generated_at: str) -> dict[str, Any]:
|
||||
"policy": "Keep representative failures visible and tied to regression checks.",
|
||||
},
|
||||
"limitations": [
|
||||
"The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.",
|
||||
"The git commit and dirty flags are generation-time context; release lock is blocked by source changes, while generated evidence artifacts are tracked separately.",
|
||||
"Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.",
|
||||
"Pending blind-review decisions are visible but do not count as human adjudication.",
|
||||
"World-class readiness remains false until external and human evidence gaps close.",
|
||||
@@ -483,6 +443,8 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
f"Generated at: `{report['generated_at']}`",
|
||||
f"Commit: `{report['commit']}`",
|
||||
f"Working tree dirty at generation: `{str(summary.get('working_tree_dirty')).lower()}`",
|
||||
f"Source tree dirty at generation: `{str(summary.get('source_tree_dirty')).lower()}`",
|
||||
f"Generated evidence dirty at generation: `{str(summary.get('generated_tree_dirty')).lower()}`",
|
||||
f"Evidence bundle SHA256: `{summary.get('evidence_bundle_sha256', '')}`",
|
||||
"",
|
||||
"## Summary",
|
||||
@@ -504,8 +466,10 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
f"- public claim ready: `{str(summary['public_claim_ready']).lower()}`",
|
||||
f"- public claim blockers: `{summary['public_claim_blocker_count']}`",
|
||||
f"- changed files at generation: `{summary.get('changed_file_count')}`",
|
||||
f"- source changed files at generation: `{summary.get('source_changed_file_count')}`",
|
||||
f"- generated changed files at generation: `{summary.get('generated_changed_file_count')}`",
|
||||
"",
|
||||
"This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete. The git commit is generation-time context; the evidence bundle SHA is the durable anchor for the artifacts listed below.",
|
||||
"This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete. The git commit and dirty samples are generation-time context; the evidence bundle SHA is the durable anchor for the artifacts listed below.",
|
||||
"",
|
||||
"## Public Claim Boundary",
|
||||
"",
|
||||
|
||||
@@ -156,11 +156,14 @@ def build_report(skill_dir: Path, generated_at: str) -> dict[str, Any]:
|
||||
compare_values(
|
||||
checks,
|
||||
key="benchmark-release-lock-self-consistency",
|
||||
label="Benchmark release lock matches git dirty state",
|
||||
expected=not bool(nested(benchmark, ["git_status", "dirty"], True)),
|
||||
label="Benchmark release lock matches source dirty state",
|
||||
expected=not bool(nested(benchmark, ["git_status", "source_dirty"], True)),
|
||||
actual=benchmark_summary.get("release_lock_ready"),
|
||||
paths=[REQUIRED_REPORTS["benchmark"]],
|
||||
detail="The benchmark release lock must reflect the generation-time git dirty flag.",
|
||||
detail=(
|
||||
"The benchmark release lock must be blocked by source changes, while generated evidence artifacts are "
|
||||
"tracked as generation context."
|
||||
),
|
||||
)
|
||||
current_git_status = git_worktree_status(skill_dir)
|
||||
if current_git_status.get("available") and current_git_status.get("clean") is True:
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
"scripts/adaptation_report_contracts.py",
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/apply_adaptation.py",
|
||||
"scripts/benchmark_release_lock.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
"scripts/build_skill_atlas.py",
|
||||
"scripts/build_skill_atlas_layout.py",
|
||||
|
||||
@@ -128,7 +128,7 @@ def main() -> None:
|
||||
assert payload["schema_version"] == "1.0", payload
|
||||
assert payload["ok"] is True, payload
|
||||
assert payload["summary"]["reproducibility_ready"] is True, payload
|
||||
assert payload["summary"]["release_lock_ready"] == (payload["git_status"]["dirty"] is False), payload
|
||||
assert payload["summary"]["release_lock_ready"] == (payload["git_status"]["source_dirty"] is False), payload
|
||||
assert payload["summary"]["methodology_complete"] is True, payload
|
||||
assert payload["summary"]["missing_artifact_count"] == 0, payload
|
||||
assert len(payload["summary"]["evidence_bundle_sha256"]) == 64, payload
|
||||
@@ -139,10 +139,23 @@ def main() -> None:
|
||||
assert payload["summary"]["failure_disclosure_count"] >= 1, payload
|
||||
assert payload["summary"]["command_count"] >= 10, payload
|
||||
assert "working_tree_dirty" in payload["summary"], payload
|
||||
assert "source_tree_dirty" in payload["summary"], payload
|
||||
assert "generated_tree_dirty" in payload["summary"], payload
|
||||
assert payload["summary"]["source_changed_file_count"] == payload["git_status"]["source_changed_file_count"], payload
|
||||
assert payload["summary"]["generated_changed_file_count"] == payload["git_status"][
|
||||
"generated_changed_file_count"
|
||||
], payload
|
||||
assert payload["git_status"]["available"] is True, payload
|
||||
assert payload["git_status"]["scope"] == "generation-time status before this report is written", payload
|
||||
assert isinstance(payload["git_status"]["generated_dirty_prefixes"], list), payload
|
||||
assert payload["release_lock"]["status_scope"] == "generation-time status before this report is written", payload
|
||||
assert payload["release_lock"]["commit"] == payload["commit"], payload
|
||||
assert payload["release_lock"]["source_changed_file_count"] == payload["git_status"][
|
||||
"source_changed_file_count"
|
||||
], payload
|
||||
assert payload["release_lock"]["generated_changed_file_count"] == payload["git_status"][
|
||||
"generated_changed_file_count"
|
||||
], payload
|
||||
assert payload["evidence_bundle"]["algorithm"] == "sha256(path,label,exists,artifact_sha256)", payload
|
||||
assert payload["evidence_bundle"]["artifact_count"] == payload["summary"]["required_artifact_count"], payload
|
||||
assert payload["evidence_bundle"]["existing_count"] == payload["summary"]["required_artifact_count"], payload
|
||||
@@ -197,6 +210,10 @@ def main() -> None:
|
||||
assert "Benchmark Reproducibility" in markdown, markdown
|
||||
assert "Evidence bundle SHA256" in markdown, markdown
|
||||
assert "release lock ready" in markdown, markdown
|
||||
assert "Source tree dirty at generation" in markdown, markdown
|
||||
assert "Generated evidence dirty at generation" in markdown, markdown
|
||||
assert "source changed files at generation" in markdown, markdown
|
||||
assert "generated changed files at generation" in markdown, markdown
|
||||
assert "world-class source checks" in markdown, markdown
|
||||
assert "public claim ready: `false`" in markdown, markdown
|
||||
assert "## Public Claim Boundary" in markdown, markdown
|
||||
|
||||
@@ -429,11 +429,19 @@ def main() -> None:
|
||||
benchmark = json.loads(benchmark_path.read_text(encoding="utf-8"))
|
||||
benchmark["git_status"]["dirty"] = True
|
||||
benchmark["git_status"]["changed_file_count"] = 3
|
||||
benchmark["git_status"]["source_dirty"] = True
|
||||
benchmark["git_status"]["source_changed_file_count"] = 1
|
||||
benchmark["git_status"]["generated_dirty"] = True
|
||||
benchmark["git_status"]["generated_changed_file_count"] = 2
|
||||
benchmark["summary"]["release_lock_ready"] = False
|
||||
benchmark["summary"]["working_tree_dirty"] = True
|
||||
benchmark["summary"]["changed_file_count"] = 3
|
||||
benchmark["summary"]["source_tree_dirty"] = True
|
||||
benchmark["summary"]["source_changed_file_count"] = 1
|
||||
benchmark["summary"]["generated_tree_dirty"] = True
|
||||
benchmark["summary"]["generated_changed_file_count"] = 2
|
||||
benchmark["release_lock"]["ready"] = False
|
||||
benchmark["release_lock"]["reason"] = "working tree was dirty at generation time"
|
||||
benchmark["release_lock"]["reason"] = "source files were dirty at generation time"
|
||||
benchmark_path.write_text(json.dumps(benchmark, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
for report_name in ["skill-overview", "skill-interpretation"]:
|
||||
report_path = stale_clean_lock_root / "reports" / f"{report_name}.json"
|
||||
@@ -441,6 +449,10 @@ def main() -> None:
|
||||
report["benchmark_reproducibility"]["summary"]["release_lock_ready"] = False
|
||||
report["benchmark_reproducibility"]["summary"]["working_tree_dirty"] = True
|
||||
report["benchmark_reproducibility"]["summary"]["changed_file_count"] = 3
|
||||
report["benchmark_reproducibility"]["summary"]["source_tree_dirty"] = True
|
||||
report["benchmark_reproducibility"]["summary"]["source_changed_file_count"] = 1
|
||||
report["benchmark_reproducibility"]["summary"]["generated_tree_dirty"] = True
|
||||
report["benchmark_reproducibility"]["summary"]["generated_changed_file_count"] = 2
|
||||
report_path.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
subprocess.run(["git", "init"], cwd=stale_clean_lock_root, capture_output=True, text=True, check=True)
|
||||
subprocess.run(["git", "add", "."], cwd=stale_clean_lock_root, capture_output=True, text=True, check=True)
|
||||
@@ -474,6 +486,48 @@ def main() -> None:
|
||||
stale_clean_lock_checks["benchmark-clean-worktree-release-lock"]
|
||||
)
|
||||
|
||||
generated_only_lock_root = TMP / "generated-only-lock-skill"
|
||||
copy_reports(generated_only_lock_root)
|
||||
generated_benchmark_path = generated_only_lock_root / "reports" / "benchmark_reproducibility.json"
|
||||
generated_benchmark = json.loads(generated_benchmark_path.read_text(encoding="utf-8"))
|
||||
generated_benchmark["git_status"]["dirty"] = True
|
||||
generated_benchmark["git_status"]["changed_file_count"] = 4
|
||||
generated_benchmark["git_status"]["source_dirty"] = False
|
||||
generated_benchmark["git_status"]["source_changed_file_count"] = 0
|
||||
generated_benchmark["git_status"]["generated_dirty"] = True
|
||||
generated_benchmark["git_status"]["generated_changed_file_count"] = 4
|
||||
generated_benchmark["summary"]["release_lock_ready"] = True
|
||||
generated_benchmark["summary"]["working_tree_dirty"] = True
|
||||
generated_benchmark["summary"]["changed_file_count"] = 4
|
||||
generated_benchmark["summary"]["source_tree_dirty"] = False
|
||||
generated_benchmark["summary"]["source_changed_file_count"] = 0
|
||||
generated_benchmark["summary"]["generated_tree_dirty"] = True
|
||||
generated_benchmark["summary"]["generated_changed_file_count"] = 4
|
||||
generated_benchmark["release_lock"]["ready"] = True
|
||||
generated_benchmark["release_lock"]["reason"] = "only generated evidence artifacts were dirty at generation time"
|
||||
generated_benchmark_path.write_text(
|
||||
json.dumps(generated_benchmark, ensure_ascii=False, indent=2) + "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
generated_only_proc = run(
|
||||
[
|
||||
sys.executable,
|
||||
str(SCRIPT),
|
||||
str(generated_only_lock_root),
|
||||
"--output-json",
|
||||
str(TMP / "generated_only_lock.json"),
|
||||
"--output-md",
|
||||
str(TMP / "generated_only_lock.md"),
|
||||
"--generated-at",
|
||||
"2026-06-15",
|
||||
]
|
||||
)
|
||||
generated_only_payload = json.loads(generated_only_proc.stdout)
|
||||
generated_only_checks = {item["key"]: item for item in generated_only_payload["checks"]}
|
||||
assert generated_only_checks["benchmark-release-lock-self-consistency"]["status"] == "pass", (
|
||||
generated_only_checks["benchmark-release-lock-self-consistency"]
|
||||
)
|
||||
|
||||
workflow_drift_root = TMP / "workflow-drift-skill"
|
||||
copy_reports(workflow_drift_root)
|
||||
studio_path = workflow_drift_root / "reports" / "review-studio.json"
|
||||
|
||||
@@ -190,7 +190,8 @@ def main() -> None:
|
||||
assert all(not item["expected_revealed"] for item in full_payload["data"]["output_review_adjudication"]["pairs"]), full_payload["data"]["output_review_adjudication"]
|
||||
benchmark_summary = full_payload["data"]["benchmark_reproducibility"]["summary"]
|
||||
assert benchmark_summary["reproducibility_ready"] is True, benchmark_summary
|
||||
assert benchmark_summary["release_lock_ready"] == (benchmark_summary["working_tree_dirty"] is False), benchmark_summary
|
||||
assert benchmark_summary["release_lock_ready"] == (benchmark_summary["source_tree_dirty"] is False), benchmark_summary
|
||||
assert "generated_tree_dirty" in benchmark_summary, benchmark_summary
|
||||
assert benchmark_summary["public_claim_ready"] is False, benchmark_summary
|
||||
assert benchmark_summary["public_claim_blocker_count"] >= 3, benchmark_summary
|
||||
public_claim = full_payload["data"]["benchmark_reproducibility"]["public_claim"]
|
||||
|
||||
Reference in New Issue
Block a user