fix: surface pending output review in studio

This commit is contained in:
yaojingang
2026-06-13 19:24:33 +08:00
parent e5c85b394f
commit 1e0837122d
22 changed files with 234 additions and 126 deletions
+1 -1
View File
@@ -40,7 +40,7 @@ Production, library, and governed reviews should also show a blind A/B review pa
When `reports/output_execution_runs.json` exists, Review Studio should show the number of variant runs, command-executed runs, model-executed runs, recorded fixtures, timing-observed runs, and token-estimated runs. Recorded fixtures are valid reproducibility evidence, but they must not be described as model-executed output evidence.
When `reports/output_review_adjudication.json` exists, Review Studio should show reviewed pairs and pending pairs. Pending reviewer decisions are acceptable as an explicit state, but they must not be counted as agreement or human review evidence. Invalid adjudication records should block release because they make the blind review audit untrustworthy.
When `reports/output_review_adjudication.json` exists, Review Studio should show reviewed pairs and pending pairs. Pending reviewer decisions are acceptable as an explicit state, but they must not be counted as agreement or human review evidence. For production, library, and governed packages, pending reviewer decisions should keep the Output Lab in `warn` until reviewer decisions are recorded or the warning is explicitly accepted in the waiver ledger. Invalid adjudication records should block release because they make the blind review audit untrustworthy.
The Operations Loop must never display raw telemetry logs. It should link only to `reports/adoption_drift_report.md`; privacy or schema violations are blockers.
+1 -1
View File
@@ -15,7 +15,7 @@
"agent-skills-compatible"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
}
]
}
+3 -3
View File
@@ -15,8 +15,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5",
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
"compatibility": {
"openai": "pass",
@@ -47,7 +47,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
+1 -1
View File
@@ -1,7 +1,7 @@
{
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-13T11:16:31Z",
"generated_at": "2026-06-13T11:23:46Z",
"skill_dir": ".",
"privacy_contract": {
"storage": "local-first",
+2 -2
View File
@@ -6,9 +6,9 @@
"context_budget_tier": "production",
"context_budget_limit": 1000,
"skill_body_tokens": 811,
"other_text_tokens": 871624,
"other_text_tokens": 872858,
"estimated_initial_load_tokens": 987,
"estimated_total_text_tokens": 872435,
"estimated_total_text_tokens": 873669,
"relevant_file_count": 368,
"unused_resource_dirs": [],
"quality_signal_points": 130,
+10 -10
View File
@@ -34,7 +34,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 32.51,
"duration_ms": 26.38,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -62,7 +62,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 32.64,
"duration_ms": 27.27,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -85,7 +85,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 38.43,
"duration_ms": 26.19,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -113,7 +113,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 31.51,
"duration_ms": 26.45,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -136,7 +136,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 31.34,
"duration_ms": 26.16,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -164,7 +164,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 30.94,
"duration_ms": 26.14,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -187,7 +187,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 30.5,
"duration_ms": 27.24,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -214,7 +214,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 31.42,
"duration_ms": 28.91,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -237,7 +237,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 31.18,
"duration_ms": 27.35,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -266,7 +266,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 30.97,
"duration_ms": 26.7,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
+10 -10
View File
@@ -23,16 +23,16 @@ Command runner evidence is present. This proves the eval harness executed an ext
| Case | Variant | Mode | Model | Duration ms | Tokens | Score | Status |
| --- | --- | --- | --- | ---: | ---: | ---: | --- |
| skill-package-contract | baseline | command | local-output-eval-runner | 32.51 | 33 | 0.0 | pass |
| skill-package-contract | with_skill | command | local-output-eval-runner | 32.64 | 73 | 100.0 | pass |
| output-eval-expectation | baseline | command | local-output-eval-runner | 38.43 | 36 | 0.0 | pass |
| output-eval-expectation | with_skill | command | local-output-eval-runner | 31.51 | 80 | 100.0 | pass |
| ir-before-packaging | baseline | command | local-output-eval-runner | 31.34 | 33 | 0.0 | pass |
| ir-before-packaging | with_skill | command | local-output-eval-runner | 30.94 | 80 | 100.0 | pass |
| near-neighbor-boundary | baseline | command | local-output-eval-runner | 30.5 | 36 | 0.0 | pass |
| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 31.42 | 65 | 100.0 | pass |
| file-backed-governed-package | baseline | command | local-output-eval-runner | 31.18 | 37 | 0.0 | pass |
| file-backed-governed-package | with_skill | command | local-output-eval-runner | 30.97 | 98 | 100.0 | pass |
| skill-package-contract | baseline | command | local-output-eval-runner | 26.38 | 33 | 0.0 | pass |
| skill-package-contract | with_skill | command | local-output-eval-runner | 27.27 | 73 | 100.0 | pass |
| output-eval-expectation | baseline | command | local-output-eval-runner | 26.19 | 36 | 0.0 | pass |
| output-eval-expectation | with_skill | command | local-output-eval-runner | 26.45 | 80 | 100.0 | pass |
| ir-before-packaging | baseline | command | local-output-eval-runner | 26.16 | 33 | 0.0 | pass |
| ir-before-packaging | with_skill | command | local-output-eval-runner | 26.14 | 80 | 100.0 | pass |
| near-neighbor-boundary | baseline | command | local-output-eval-runner | 27.24 | 36 | 0.0 | pass |
| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 28.91 | 65 | 100.0 | pass |
| file-backed-governed-package | baseline | command | local-output-eval-runner | 27.35 | 37 | 0.0 | pass |
| file-backed-governed-package | with_skill | command | local-output-eval-runner | 26.7 | 98 | 100.0 | pass |
## Next Fixes
+1 -1
View File
@@ -8,7 +8,7 @@
"target_count": 3,
"adapter_count": 3,
"archive_present": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"archive_entry_count": 490,
"failure_count": 0,
"warning_count": 0
+1 -1
View File
@@ -4,7 +4,7 @@
- Package directory: `dist`
- Targets: `3 / 3` adapters present
- Archive present: `True`
- Archive SHA256: `6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451`
- Archive SHA256: `9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b`
- Failures: `0`
- Warnings: `0`
+4 -4
View File
@@ -20,8 +20,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5",
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
"compatibility": {
"openai": "pass",
@@ -52,7 +52,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -76,7 +76,7 @@
"agent-skills-compatible"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
}
]
},
+2 -2
View File
@@ -6,8 +6,8 @@
- Maturity: `governed`
- Owner: `Yao Team`
- License: `MIT`
- Package SHA256: `d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5`
- Archive SHA256: `6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451`
- Package SHA256: `af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068`
- Archive SHA256: `9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b`
- Install simulated: `True`
## Compatibility
+9 -9
View File
@@ -235,8 +235,8 @@
<p class="lede">Create, refactor, evaluate, and package agent skills from workflows, prompts, transcripts, docs, or notes. Use when asked to create a skill, turn a repeated process into a reusable skill, improve an existing skill, add evals, or package a skill for team reuse.</p>
<div class="decision">
<span>审查结论</span>
<strong>ready</strong>
<span>Score 100/100</span>
<strong>review</strong>
<span>Score 92/100</span>
</div>
</header>
@@ -247,17 +247,17 @@
<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 pass'><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</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 987/1000; quality density 131.7</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; 68 scripts; 2 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>权限批准</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>3/3 targets probed; native 0; metadata fallback 3; residual risks 3</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; 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 100.0; missed 0; bad-output 0; risk low</p><footer>reports/adoption_drift_report.json <a href='adoption_drift_report.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>人工批准</h3></div><p>0 active waivers cover current warnings</p><footer>reports/review_waivers.json <a href='review_waivers.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 3 adapters</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 987/1000; quality density 131.7</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; 68 scripts; 2 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>权限批准</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>3/3 targets probed; native 0; metadata fallback 3; residual risks 3</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; 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 100.0; missed 0; bad-output 0; risk low</p><footer>reports/adoption_drift_report.json <a href='adoption_drift_report.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>人工批准</h3></div><p>0 active waivers; 1 warning gates still need reviewer decision</p><footer>reports/review_waivers.json <a href='review_waivers.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>注册审计</h3></div><p>yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 3 adapters</p><footer>reports/registry_audit.json + reports/install_simulation.json <a href='registry_audit.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>发布路线</h3></div><p>0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended</p><footer>reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md <a href='promotion_decisions.md'>证据</a></footer></article></div>
</section>
<div class="twocol">
<section><h2>阻断事项</h2><p class='muted'>无。</p></section>
<section><h2>关注事项</h2><p class='muted'>无。</p></section>
<section><h2>关注事项</h2><ul class='issues'><li><strong>输出实验</strong><span>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</span></li><li><strong>人工批准</strong><span>0 active waivers; 1 warning gates still need reviewer decision</span></li></ul></section>
</div>
<section id="actions">
<h2>修复动作</h2>
<div class="actions-grid"><p class='muted'>当前没有 blocker 或 warning。保持现有证据链即可。</p></div>
<div class="actions-grid"><article class='action-card warn'><div><span>关注</span><h3>输出实验</h3></div><p>补足 output eval 覆盖、execution evidence、blind A/B 和 reviewer adjudication。</p><small>没有输出质量和人工盲评证据时,Skill 只能证明会触发,不能证明输出真的更好且经得起审查。</small><dl><dt>修复位置</dt><dd>evals/output/cases.jsonl + reports/output_quality_scorecard.md + reports/output_review_adjudication.md</dd><dt>验证命令</dt><dd><code>python3 scripts/run_output_execution.py</code></dd></dl><ul class='source-ref-list'><li><a href='../evals/output/cases.jsonl'>evals/output/cases.jsonl:1</a><small>output eval cases · eval</small></li><li><a href='output_quality_scorecard.md'>reports/output_quality_scorecard.md:1</a><small>output scorecard · report</small></li><li><a href='output_execution_runs.md'>reports/output_execution_runs.md:1</a><small>output execution runs · report</small></li><li><a href='output_blind_review_pack.md'>reports/output_blind_review_pack.md:1</a><small>blind A/B review pack · report</small></li><li><a href='output_review_adjudication.md'>reports/output_review_adjudication.md:1</a><small>review adjudication · report</small></li></ul><footer>reports/output_quality_scorecard.json <a href='output_quality_scorecard.md'>打开证据</a></footer></article><article class='action-card warn'><div><span>关注</span><h3>人工批准</h3></div><p>对保留的 warning 写入 reviewer、理由、范围和到期时间,或修掉 warning。</p><small>warning 可以被接受,但必须可审计、会过期,并且不能掩盖 blocker。</small><dl><dt>修复位置</dt><dd>reports/review_waivers.md</dd><dt>验证命令</dt><dd><code>python3 scripts/render_review_waivers.py .</code></dd></dl><ul class='source-ref-list'><li><a href='review_waivers.md'>reports/review_waivers.md:1</a><small>waiver ledger · report</small></li><li><a href='../references/review-waiver-method.md'>references/review-waiver-method.md:1</a><small>waiver method · method</small></li></ul><footer>reports/review_waivers.json <a href='review_waivers.md'>打开证据</a></footer></article></div>
</section>
<section id="annotations">
@@ -313,7 +313,7 @@
</section>
<section id="trust" class="twocol">
<div class="panel"><h2>信任报告</h2><dl class='kv-grid'><div><dt>Secret</dt><dd>0</dd></div><div><dt>脚本数</dt><dd>68</dd></div><div><dt>网络脚本</dt><dd>2</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5</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>68</dd></div><div><dt>网络脚本</dt><dd>2</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068</code></dd></div></dl></div>
<div class="panel"><h2>安全边界</h2><p>高风险 secret、远程 inline execution、缺失依赖策略或无法解释的脚本接口应阻断 governed release。</p></div>
</section>
@@ -338,18 +338,18 @@
</section>
<section id="waivers" class="twocol">
<div class="panel"><h2>人工批准</h2><p>0 active waivers cover current warnings</p></div>
<div class="panel"><h2>人工批准</h2><p>0 active waivers; 1 warning gates still need reviewer decision</p></div>
<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>
</section>
<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 3 adapters</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</dd></div><div><dt>兼容通过</dt><dd>6/6</dd></div><div><dt>归档哈希</dt><dd><code>6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451</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</dd></div><div><dt>兼容通过</dt><dd>6/6</dd></div><div><dt>归档哈希</dt><dd><code>9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b</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>3</dd></div><div><dt>Adapter</dt><dd>3</dd></div><div><dt>归档存在</dt><dd></dd></div><div><dt>Zip 条目</dt><dd>490</dd></div><div><dt>失败数</dt><dd>0</dd></div><div><dt>警告数</dt><dd>0</dd></div><div><dt>归档哈希</dt><dd><code>6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451</code></dd></div></dl></div>
<div class="panel"><h2>包体验证</h2><dl class='kv-grid'><div><dt>目标数</dt><dd>3</dd></div><div><dt>Adapter</dt><dd>3</dd></div><div><dt>归档存在</dt><dd></dd></div><div><dt>Zip 条目</dt><dd>490</dd></div><div><dt>失败数</dt><dd>0</dd></div><div><dt>警告数</dt><dd>0</dd></div><div><dt>归档哈希</dt><dd><code>9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b</code></dd></div></dl></div>
</section>
</main>
</body>
+143 -41
View File
@@ -3,12 +3,12 @@
"ok": true,
"skill_dir": ".",
"summary": {
"decision": "ready",
"world_class_score": 100,
"decision": "review",
"world_class_score": 92,
"gate_count": 13,
"blocker_count": 0,
"warning_count": 0,
"action_count": 0,
"warning_count": 2,
"action_count": 2,
"annotation_count": 0,
"open_annotation_count": 0,
"open_annotation_blocker_count": 0,
@@ -34,8 +34,8 @@
{
"key": "output-lab",
"label": "输出实验",
"status": "pass",
"detail": "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",
"status": "warn",
"detail": "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",
"evidence": "reports/output_quality_scorecard.json",
"link": "output_quality_scorecard.md"
},
@@ -98,8 +98,8 @@
{
"key": "review-waivers",
"label": "人工批准",
"status": "pass",
"detail": "0 active waivers cover current warnings",
"status": "warn",
"detail": "0 active waivers; 1 warning gates still need reviewer decision",
"evidence": "reports/review_waivers.json",
"link": "review_waivers.md"
},
@@ -121,8 +121,110 @@
}
],
"blockers": [],
"warnings": [],
"review_actions": [],
"warnings": [
{
"key": "output-lab",
"label": "输出实验",
"status": "warn",
"detail": "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",
"evidence": "reports/output_quality_scorecard.json",
"link": "output_quality_scorecard.md"
},
{
"key": "review-waivers",
"label": "人工批准",
"status": "warn",
"detail": "0 active waivers; 1 warning gates still need reviewer decision",
"evidence": "reports/review_waivers.json",
"link": "review_waivers.md"
}
],
"review_actions": [
{
"gate_key": "output-lab",
"label": "输出实验",
"status": "warn",
"priority": "warning",
"summary": "补足 output eval 覆盖、execution evidence、blind A/B 和 reviewer adjudication。",
"why": "没有输出质量和人工盲评证据时,Skill 只能证明会触发,不能证明输出真的更好且经得起审查。",
"source_fix": "evals/output/cases.jsonl + reports/output_quality_scorecard.md + reports/output_review_adjudication.md",
"source_refs": [
{
"path": "evals/output/cases.jsonl",
"label": "output eval cases",
"kind": "eval",
"line": 1,
"exists": true,
"link": "../evals/output/cases.jsonl"
},
{
"path": "reports/output_quality_scorecard.md",
"label": "output scorecard",
"kind": "report",
"line": 1,
"exists": true,
"link": "output_quality_scorecard.md"
},
{
"path": "reports/output_execution_runs.md",
"label": "output execution runs",
"kind": "report",
"line": 1,
"exists": true,
"link": "output_execution_runs.md"
},
{
"path": "reports/output_blind_review_pack.md",
"label": "blind A/B review pack",
"kind": "report",
"line": 1,
"exists": true,
"link": "output_blind_review_pack.md"
},
{
"path": "reports/output_review_adjudication.md",
"label": "review adjudication",
"kind": "report",
"line": 1,
"exists": true,
"link": "output_review_adjudication.md"
}
],
"evidence": "reports/output_quality_scorecard.json",
"evidence_link": "output_quality_scorecard.md",
"verification_command": "python3 scripts/run_output_execution.py"
},
{
"gate_key": "review-waivers",
"label": "人工批准",
"status": "warn",
"priority": "warning",
"summary": "对保留的 warning 写入 reviewer、理由、范围和到期时间,或修掉 warning。",
"why": "warning 可以被接受,但必须可审计、会过期,并且不能掩盖 blocker。",
"source_fix": "reports/review_waivers.md",
"source_refs": [
{
"path": "reports/review_waivers.md",
"label": "waiver ledger",
"kind": "report",
"line": 1,
"exists": true,
"link": "review_waivers.md"
},
{
"path": "references/review-waiver-method.md",
"label": "waiver method",
"kind": "method",
"line": 1,
"exists": true,
"link": "../references/review-waiver-method.md"
}
],
"evidence": "reports/review_waivers.json",
"evidence_link": "review_waivers.md",
"verification_command": "python3 scripts/render_review_waivers.py ."
}
],
"evidence_paths": {
"skill_overview": "reports/skill-overview.html",
"review_viewer": "reports/review-viewer.html",
@@ -244,7 +346,7 @@
"label": "上下文成本",
"score": 42,
"reasons": [
"入口约 365 个词/字,references 约 14247 个词/字。",
"入口约 365 个词/字,references 约 14278 个词/字。",
"分数越高代表上下文成本越低。",
"上下文成本偏高,建议压缩入口或拆分 references。"
]
@@ -348,7 +450,7 @@
"已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。"
],
"gaps": [
"上下文成本需要补强:入口约 365 个词/字,references 约 14247 个词/字。"
"上下文成本需要补强:入口约 365 个词/字,references 约 14278 个词/字。"
],
"recommendations": [
"先改触发边界,再扩展工作流。",
@@ -1089,7 +1191,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 152,
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
},
"skill_atlas": {
"skill_count": 12,
@@ -1123,8 +1225,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5",
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
"compatibility": {
"openai": "pass",
@@ -1155,7 +1257,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -1171,7 +1273,7 @@
"target_count": 3,
"adapter_count": 3,
"archive_present": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"archive_entry_count": 490,
"failure_count": 0,
"warning_count": 0
@@ -1245,12 +1347,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"to": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"to": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
}
]
},
@@ -2978,7 +3080,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 23.49,
"duration_ms": 26.15,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3006,7 +3108,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 23.5,
"duration_ms": 25.94,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3029,7 +3131,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 22.7,
"duration_ms": 26.36,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3057,7 +3159,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 23.01,
"duration_ms": 26.19,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3080,7 +3182,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 22.98,
"duration_ms": 25.5,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3108,7 +3210,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 22.64,
"duration_ms": 25.91,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3131,7 +3233,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 22.61,
"duration_ms": 29.64,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3158,7 +3260,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 22.62,
"duration_ms": 30.73,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3181,7 +3283,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 23.24,
"duration_ms": 31.19,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3210,7 +3312,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 23.29,
"duration_ms": 33.98,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -7181,7 +7283,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 152,
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
},
"failures": [],
"warnings": [],
@@ -8980,10 +9082,10 @@
"context_budget_tier": "production",
"context_budget_limit": 1000,
"skill_body_tokens": 811,
"other_text_tokens": 871465,
"other_text_tokens": 871624,
"estimated_initial_load_tokens": 987,
"estimated_total_text_tokens": 872276,
"relevant_file_count": 367,
"estimated_total_text_tokens": 872435,
"relevant_file_count": 368,
"unused_resource_dirs": [],
"quality_signal_points": 130,
"quality_density": 131.7
@@ -10692,7 +10794,7 @@
"adoption_drift": {
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-13T11:10:15Z",
"generated_at": "2026-06-13T11:22:45Z",
"skill_dir": ".",
"privacy_contract": {
"storage": "local-first",
@@ -10851,8 +10953,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5",
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
"compatibility": {
"openai": "pass",
@@ -10883,7 +10985,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -10907,7 +11009,7 @@
"agent-skills-compatible"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
}
]
},
@@ -10930,7 +11032,7 @@
"target_count": 3,
"adapter_count": 3,
"archive_present": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"archive_entry_count": 490,
"failure_count": 0,
"warning_count": 0
@@ -11627,12 +11729,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"to": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"to": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
}
]
},
+1 -1
View File
@@ -23,7 +23,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 152,
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
},
"failures": [],
"warnings": [],
+1 -1
View File
@@ -16,7 +16,7 @@
- Interactive scripts: `0`
- Package hash scope: `source-contract-without-generated-reports`
- Package hash files: `152`
- Package SHA256: `d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5`
- Package SHA256: `af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068`
## Failures
+8 -8
View File
@@ -27,9 +27,9 @@ Yao Meta Skill is no longer only a Meta Skill factory. The current working tree
- Runtime Permission Probes v0 for packaged target adapter checks, explicit native-enforcement flags, metadata fallback evidence, and residual permission risks.
- Atlas Scope Policy v0 so examples, evolution snapshots, embedded generated skills, and validator fixtures remain visible in the full portfolio report without polluting release-actionable gates.
- Review Annotations v0 for reviewer comments tied to Review Studio gates, source/report paths, and optional line numbers; open blocker annotations now block the Review Studio decision.
- Review Studio now reaches a clean `ready` decision for the root Meta Skill: `13 / 13` gates pass, world-class score `100`, no blockers, no warnings, and no review actions required.
- Review Studio now avoids over-claiming release readiness when blind A/B adjudication is still pending: the root Meta Skill is in `review` with score `92`, no blockers, two warnings, and explicit actions for Output Lab reviewer adjudication plus waiver handling.
This is still not the final world-class state. Target-native behavior contracts are now explicit and local output-eval command execution is wired, but deeper provider-native execution transforms, real client telemetry capture, installer integration, provider-backed model-executed output eval, real human adjudication decisions, and native runtime permission enforcement remain open.
This is still not the final world-class state. Target-native behavior contracts are now explicit and local output-eval command execution is wired, and Review Studio now keeps pending human adjudication visible as a warning instead of treating it as a clean pass. Deeper provider-native execution transforms, real client telemetry capture, installer integration, provider-backed model-executed output eval, real human adjudication decisions, and native runtime permission enforcement remain open.
## Coverage Matrix
@@ -73,7 +73,7 @@ Next move: add provider-backed model execution for holdout cases and one real mu
### 3. Review Studio is unified and now has reviewer actions plus annotations
The Review Studio page aggregates intent, trigger, output, context, runtime, trust, permission approvals, runtime permission probes, atlas, operations-loop, reviewer waiver, reviewer annotations, registry, and release gates. It exposes current warnings directly and emits `review_actions` for each non-pass gate with a source-fix location, structured `source_refs`, reason, evidence path, and verification command. It now also loads `reports/review_annotations.json`, renders reviewer comments tied to gates and source/report paths, and blocks the page decision when any open blocker annotation exists. After adding root intent context, Atlas scope policy, metadata-only telemetry evidence, runtime permission probe evidence, action source refs, and an empty annotation ledger, the current root report is clean: decision `ready`, score `100`, `13` gates, `0` gate blockers, `0` gate warnings, `0` actions, and `0` open annotation blockers.
The Review Studio page aggregates intent, trigger, output, context, runtime, trust, permission approvals, runtime permission probes, atlas, operations-loop, reviewer waiver, reviewer annotations, registry, and release gates. It exposes current warnings directly and emits `review_actions` for each non-pass gate with a source-fix location, structured `source_refs`, reason, evidence path, and verification command. It now also loads `reports/review_annotations.json`, renders reviewer comments tied to gates and source/report paths, and blocks the page decision when any open blocker annotation exists. The current root report is intentionally not a clean pass: decision `review`, score `92`, `13` gates, `0` blockers, `2` warnings, `2` actions, and `0` open annotation blockers. The warnings are useful evidence: the automated Output Eval Lab is strong, but the blind A/B adjudication still has `5` pending reviewer decisions, so the package should not claim fully reviewed status.
Next move: add richer source-line anchors inside generated reports and record real reviewer annotations during the next human review pass.
@@ -101,13 +101,13 @@ Next move: add real client or installer permission enforcement integration.
| Runtime Permission Probes | `3 / 3` target adapters probed, `0` native-enforcement adapters, `3` explicit metadata fallbacks, `3` residual risks retained for reviewer visibility |
| Skill Atlas | `12` scanned skills, `1` actionable root skill, `0` actionable route collisions, `0` actionable owner gaps, `0` actionable stale skills, `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 | `3 / 3` target adapters present, archive verified, `483` zip entries, `0` failures, `0` warnings |
| Install Simulation | archive with `483` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `3` adapters readable, `0` failures, `0` warnings |
| Package Verification | `3 / 3` target adapters present, archive verified, `490` zip entries, `0` failures, `0` warnings |
| Install Simulation | archive with `490` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `3` adapters readable, `0` failures, `0` warnings |
| 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 activation event, adoption `100`, risk band `low`; raw `reports/telemetry_events.jsonl` is gitignored and blocked from zip packages |
| Review Waivers | ledger generated; current release has no warning gates to waive, blockers remain non-waivable in v0 |
| Review Waivers | ledger generated; current release has `1` warning gate that still needs reviewer decision or a time-bounded waiver; blockers remain non-waivable in v0 |
| Review Annotations | ledger generated; current release has `0` reviewer annotations and `0` open annotation blockers |
| Review Studio | decision `ready`, world-class score `100`, `13` gates, `0` blockers, `0` warnings, `0` review actions, `0` open annotation blockers |
| Review Studio | decision `review`, world-class score `92`, `13` gates, `0` blockers, `2` warnings, `2` review actions, `0` open annotation blockers |
| IR-first Packaging | `openai`, `claude`, and `generic` adapters include compiler contracts, permission contracts, target-native behavior contracts, IR provenance, and semantic parity checks |
| Context Budget | initial load `987/1000`, under the production budget |
| CI | `make ci-test` target count is now `56` after adding Review Annotations |
@@ -116,6 +116,6 @@ Next move: add real client or installer permission enforcement integration.
1. Deepen target-native behavior contracts into provider-native execution and installer integrations.
2. Add native client or installer enforcement for approved high-permission capabilities.
3. Expand Output Eval Lab from local command-runner evidence to provider-backed model holdout and real reviewer-adjudicated cases.
3. Expand Output Eval Lab from local command-runner evidence to provider-backed model holdout and real reviewer-adjudicated cases; record the current blind A/B decisions before claiming fully ready status.
4. Add real reviewer annotation records during the next human review pass.
5. Connect Skill Atlas with real client telemetry and drift history.
+4 -4
View File
@@ -609,7 +609,7 @@
<ul class="list"><li><span data-lang="zh-CN">把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。</span><span data-lang="en">把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。</span></li><li><span data-lang="zh-CN">Skill 作者、复用团队和后续 reviewer。</span><span data-lang="en">Skill 作者、复用团队和后续 reviewer。</span></li><li><span data-lang="zh-CN">创建完成后建议先打开 reports/skill-overview.html,再继续扩展包体。</span><span data-lang="en">创建完成后建议先打开 reports/skill-overview.html,再继续扩展包体。</span></li></ul>
</aside>
</div>
<div class="score-strip" aria-label="报告关键指标"><article class='score-chip'><span>完整度</span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md 已存在,是 Skill 的入口。</span></small></article><article class='score-chip'><span>触发清晰</span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">frontmatter description 已存在,具备基础路由面。</span></small></article><article class='score-chip'><span>证据充分</span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">已生成 20 / 20 类报告证据。</span></small></article><article class='score-chip'><span>上下文成本</span><strong>42</strong><i style='--score:42%'></i><small><span data-lang="zh-CN">入口约 365 个词/字,references 约 14247 个词/字。</span><span data-lang="en">入口约 365 个词/字,references 约 14247 个词/字。</span></small></article></div>
<div class="score-strip" aria-label="报告关键指标"><article class='score-chip'><span>完整度</span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md 已存在,是 Skill 的入口。</span></small></article><article class='score-chip'><span>触发清晰</span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">frontmatter description 已存在,具备基础路由面。</span></small></article><article class='score-chip'><span>证据充分</span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">已生成 20 / 20 类报告证据。</span></small></article><article class='score-chip'><span>上下文成本</span><strong>42</strong><i style='--score:42%'></i><small><span data-lang="zh-CN">入口约 365 个词/字,references 约 14278 个词/字。</span><span data-lang="en">入口约 365 个词/字,references 约 14278 个词/字。</span></small></article></div>
</section>
<section id="overview">
@@ -641,10 +641,10 @@
<article class="panel metrics-note">
<h3><span data-lang="zh-CN">指标判读</span><span data-lang="en">Reading</span></h3>
<p><span data-lang="zh-CN">先看雷达图判断能力短板,再看下方每项分数的证据原因。分数不是装饰数字,必须和本地文件、reports 证据或证据不足提示对应。</span><span data-lang="en">Read the radar first for weak spots, then inspect each score with its evidence. Scores must map to local files, reports, or explicit evidence gaps.</span></p>
<ol class='metric-summary-list'><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>完整度</b><em>100</em><small><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md 已存在,是 Skill 的入口。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>触发清晰</b><em>100</em><small><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">frontmatter description 已存在,具备基础路由面。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>证据充分</b><em>100</em><small><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">已生成 20 / 20 类报告证据。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>可维护性</b><em>100</em><small><span data-lang="zh-CN">SKILL.md 约 365 个词/字。</span><span data-lang="en">SKILL.md 约 365 个词/字。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>可迁移性</b><em>100</em><small><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml 已存在。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">关注</span><span data-lang="en">Watch</span></span><b>上下文成本</b><em>42</em><small><span data-lang="zh-CN">入口约 365 个词/字,references 约 14247 个词/字。</span><span data-lang="en">入口约 365 个词/字,references 约 14247 个词/字。</span></small></li></ol>
<ol class='metric-summary-list'><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>完整度</b><em>100</em><small><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md 已存在,是 Skill 的入口。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>触发清晰</b><em>100</em><small><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">frontmatter description 已存在,具备基础路由面。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>证据充分</b><em>100</em><small><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">已生成 20 / 20 类报告证据。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>可维护性</b><em>100</em><small><span data-lang="zh-CN">SKILL.md 约 365 个词/字。</span><span data-lang="en">SKILL.md 约 365 个词/字。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b>可迁移性</b><em>100</em><small><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml 已存在。</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">关注</span><span data-lang="en">Watch</span></span><b>上下文成本</b><em>42</em><small><span data-lang="zh-CN">入口约 365 个词/字,references 约 14278 个词/字。</span><span data-lang="en">入口约 365 个词/字,references 约 14278 个词/字。</span></small></li></ol>
</article>
</div>
<div class="metric-grid"><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>完整度</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md 已存在,是 Skill 的入口。</span></li><li><span data-lang="zh-CN">README.md 已存在,便于人工阅读。</span><span data-lang="en">README.md 已存在,便于人工阅读。</span></li><li><span data-lang="zh-CN">agents/interface.yaml 已存在,便于跨平台适配。</span><span data-lang="en">agents/interface.yaml 已存在,便于跨平台适配。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>触发清晰</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">frontmatter description 已存在,具备基础路由面。</span></li><li><span data-lang="zh-CN">description 有足够长度说明任务边界。</span><span data-lang="en">description 有足够长度说明任务边界。</span></li><li><span data-lang="zh-CN">description 已包含使用场景或排除边界信号。</span><span data-lang="en">description 已包含使用场景或排除边界信号。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>证据充分</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">已生成 20 / 20 类报告证据。</span></li><li><span data-lang="zh-CN">skill-ir.json 已存在。</span><span data-lang="en">skill-ir.json 已存在。</span></li><li><span data-lang="zh-CN">compiled_targets.json 已存在。</span><span data-lang="en">compiled_targets.json 已存在。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>可维护性</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">SKILL.md 约 365 个词/字。</span><span data-lang="en">SKILL.md 约 365 个词/字。</span></li><li><span data-lang="zh-CN">入口文件保持克制,可维护性较好。</span><span data-lang="en">入口文件保持克制,可维护性较好。</span></li><li><span data-lang="zh-CN">references/ 已承载扩展指导。</span><span data-lang="en">references/ 已承载扩展指导。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>可迁移性</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml 已存在。</span></li><li><span data-lang="zh-CN">manifest.json 已存在。</span><span data-lang="en">manifest.json 已存在。</span></li><li><span data-lang="zh-CN">目标平台或 adapter target 已声明。</span><span data-lang="en">目标平台或 adapter target 已声明。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>上下文成本</span><strong>42</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">入口约 365 个词/字,references 约 14247 个词/字。</span><span data-lang="en">入口约 365 个词/字,references 约 14247 个词/字。</span></li><li><span data-lang="zh-CN">分数越高代表上下文成本越低。</span><span data-lang="en">分数越高代表上下文成本越低。</span></li><li><span data-lang="zh-CN">上下文成本偏高,建议压缩入口或拆分 references。</span><span data-lang="en">上下文成本偏高,建议压缩入口或拆分 references。</span></li></ul></div></article></div>
<div class="metric-grid"><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>完整度</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md 已存在,是 Skill 的入口。</span></li><li><span data-lang="zh-CN">README.md 已存在,便于人工阅读。</span><span data-lang="en">README.md 已存在,便于人工阅读。</span></li><li><span data-lang="zh-CN">agents/interface.yaml 已存在,便于跨平台适配。</span><span data-lang="en">agents/interface.yaml 已存在,便于跨平台适配。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>触发清晰</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">frontmatter description 已存在,具备基础路由面。</span></li><li><span data-lang="zh-CN">description 有足够长度说明任务边界。</span><span data-lang="en">description 有足够长度说明任务边界。</span></li><li><span data-lang="zh-CN">description 已包含使用场景或排除边界信号。</span><span data-lang="en">description 已包含使用场景或排除边界信号。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>证据充分</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">已生成 20 / 20 类报告证据。</span></li><li><span data-lang="zh-CN">skill-ir.json 已存在。</span><span data-lang="en">skill-ir.json 已存在。</span></li><li><span data-lang="zh-CN">compiled_targets.json 已存在。</span><span data-lang="en">compiled_targets.json 已存在。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>可维护性</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">SKILL.md 约 365 个词/字。</span><span data-lang="en">SKILL.md 约 365 个词/字。</span></li><li><span data-lang="zh-CN">入口文件保持克制,可维护性较好。</span><span data-lang="en">入口文件保持克制,可维护性较好。</span></li><li><span data-lang="zh-CN">references/ 已承载扩展指导。</span><span data-lang="en">references/ 已承载扩展指导。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>可迁移性</span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml 已存在。</span></li><li><span data-lang="zh-CN">manifest.json 已存在。</span><span data-lang="en">manifest.json 已存在。</span></li><li><span data-lang="zh-CN">目标平台或 adapter target 已声明。</span><span data-lang="en">目标平台或 adapter target 已声明。</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'>上下文成本</span><strong>42</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">入口约 365 个词/字,references 约 14278 个词/字。</span><span data-lang="en">入口约 365 个词/字,references 约 14278 个词/字。</span></li><li><span data-lang="zh-CN">分数越高代表上下文成本越低。</span><span data-lang="en">分数越高代表上下文成本越低。</span></li><li><span data-lang="zh-CN">上下文成本偏高,建议压缩入口或拆分 references。</span><span data-lang="en">上下文成本偏高,建议压缩入口或拆分 references。</span></li></ul></div></article></div>
</div>
</div>
</div>
@@ -720,7 +720,7 @@
<div>
<table>
<thead><tr><th><span data-lang="zh-CN">类型</span><span data-lang="en">Type</span></th><th><span data-lang="zh-CN">证据</span><span data-lang="en">Evidence</span></th><th><span data-lang="zh-CN">建议</span><span data-lang="en">Action</span></th></tr></thead>
<tbody><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">触发面保持精简,并锚定在 frontmatter description。</span><span data-lang="en">The trigger surface stays lean and anchored in the frontmatter description.</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">已生成 Skill IR,核心语义可先于平台打包被审查和迁移。</span><span data-lang="en">已生成 Skill IR,核心语义可先于平台打包被审查和迁移。</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。</span><span data-lang="en">已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">缺口</span><span data-lang="en">Gap</span></td><td><span data-lang="zh-CN">上下文成本需要补强:入口约 365 个词/字,references 约 14247 个词/字。</span><span data-lang="en">上下文成本需要补强:入口约 365 个词/字,references 约 14247 个词/字。</span></td><td><span data-lang="zh-CN">纳入下一轮修复</span><span data-lang="en">Fix next</span></td></tr></tbody>
<tbody><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">触发面保持精简,并锚定在 frontmatter description。</span><span data-lang="en">The trigger surface stays lean and anchored in the frontmatter description.</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">已生成 Skill IR,核心语义可先于平台打包被审查和迁移。</span><span data-lang="en">已生成 Skill IR,核心语义可先于平台打包被审查和迁移。</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。</span><span data-lang="en">已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">缺口</span><span data-lang="en">Gap</span></td><td><span data-lang="zh-CN">上下文成本需要补强:入口约 365 个词/字,references 约 14278 个词/字。</span><span data-lang="en">上下文成本需要补强:入口约 365 个词/字,references 约 14278 个词/字。</span></td><td><span data-lang="zh-CN">纳入下一轮修复</span><span data-lang="en">Fix next</span></td></tr></tbody>
</table>
<div class="two-col quality-panels">
<article class="panel">
+9 -9
View File
@@ -96,7 +96,7 @@
"label": "上下文成本",
"score": 42,
"reasons": [
"入口约 365 个词/字,references 约 14247 个词/字。",
"入口约 365 个词/字,references 约 14278 个词/字。",
"分数越高代表上下文成本越低。",
"上下文成本偏高,建议压缩入口或拆分 references。"
]
@@ -200,7 +200,7 @@
"已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。"
],
"gaps": [
"上下文成本需要补强:入口约 365 个词/字,references 约 14247 个词/字。"
"上下文成本需要补强:入口约 365 个词/字,references 约 14278 个词/字。"
],
"recommendations": [
"先改触发边界,再扩展工作流。",
@@ -941,7 +941,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 152,
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
},
"skill_atlas": {
"skill_count": 12,
@@ -975,8 +975,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5",
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"package_sha256": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
"compatibility": {
"openai": "pass",
@@ -1007,7 +1007,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -1023,7 +1023,7 @@
"target_count": 3,
"adapter_count": 3,
"archive_present": true,
"archive_sha256": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451",
"archive_sha256": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b",
"archive_entry_count": 490,
"failure_count": 0,
"warning_count": 0
@@ -1097,12 +1097,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"to": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"to": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
}
]
},
+2 -2
View File
@@ -68,12 +68,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "6972bb1d72746b6a16c7dbf1ec73f438252756dd850fe474bc3b75af8649d451"
"to": "9208791ccc286c01c0614f5de67ebcff69d90c5be8b09e19ad9617e4059d8d6b"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "d53de57f6593fca3dd937832f5923bd5381250e382631a6b6616e2405de748b5"
"to": "af6eab9b547a289ed5035eed9a9dd54cfdd01459acf1e2ba57d8ed3e2fbab068"
}
]
},
+3 -3
View File
@@ -352,9 +352,9 @@ ACTION_GUIDANCE: dict[str, dict[str, str]] = {
"verification": "python3 scripts/build_confusion_matrix.py",
},
"output-lab": {
"summary": "补足 output eval 的 case 数、file-backed case、near-neighbor case 和 boundary case",
"why": "没有输出质量证据时,Skill 只能证明会触发,不能证明输出真的更好。",
"source_fix": "evals/output/cases.jsonl + reports/output_quality_scorecard.md",
"summary": "补足 output eval 覆盖、execution evidence、blind A/B 和 reviewer adjudication",
"why": "没有输出质量和人工盲评证据时,Skill 只能证明会触发,不能证明输出真的更好且经得起审查",
"source_fix": "evals/output/cases.jsonl + reports/output_quality_scorecard.md + reports/output_review_adjudication.md",
"source_paths": [
{"path": "evals/output/cases.jsonl", "label": "output eval cases", "kind": "eval", "patterns": ["case_id"]},
{"path": "reports/output_quality_scorecard.md", "label": "output scorecard", "kind": "report", "patterns": ["# Output"]},
+6 -2
View File
@@ -148,8 +148,11 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An
execution_recorded_count = int(output_execution_summary.get("recorded_fixture_count", 0) or 0)
review_pair_count = int(output_review_summary.get("pair_count", 0) or 0)
review_judgment_count = int(output_review_summary.get("judgment_count", 0) or 0)
review_pending_count = int(output_review_summary.get("pending_count", 0) or 0)
review_invalid_count = int(output_review_summary.get("invalid_decision_count", 0) or 0)
blind_missing = maturity in {"production", "library", "governed"} and (not output_blind or blind_pair_count < case_count)
review_missing = maturity in {"production", "library", "governed"} and case_count > 0 and not output_review
review_pending = maturity in {"production", "library", "governed"} and bool(output_review) and review_pending_count > 0
execution_failed = bool(output_execution) and (not output_execution.get("ok", True) or int(output_execution_summary.get("failure_count", 0) or 0) > 0)
review_invalid = bool(output_review) and (not output_review.get("ok", True) or review_invalid_count > 0)
output_blocked = (
@@ -159,7 +162,7 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An
or execution_failed
or review_invalid
)
output_warn = file_backed == 0 or near_neighbor == 0 or boundary == 0 or blind_missing
output_warn = file_backed == 0 or near_neighbor == 0 or boundary == 0 or blind_missing or review_missing or review_pending
if not output:
output_status = "warn"
output_detail = "output eval scorecard is missing; generate it before production review"
@@ -176,6 +179,8 @@ def build_gates(skill_dir: Path, output_html: Path, data: dict[str, dict[str, An
else ""
)
+ (f"; reviewed {review_judgment_count}/{review_pair_count}" if output_review else "")
+ (f"; review pending {review_pending_count}" if review_pending else "")
+ ("; review adjudication missing" if review_missing else "")
)
gates.append(
gate(
@@ -509,4 +514,3 @@ def weighted_score(gates: list[dict[str, str]]) -> int:
elif item["status"] == "warn":
earned += weight * 0.6
return int(round(earned / total * 100)) if total else 0
+12 -10
View File
@@ -229,26 +229,27 @@ def main() -> None:
payload = json.loads(proc.stdout)
assert payload["ok"], payload
assert payload["schema_version"] == "2.0", payload
assert payload["summary"]["decision"] == "ready", payload
assert payload["summary"]["decision"] == "review", payload
assert payload["summary"]["gate_count"] == 13, payload
assert payload["summary"]["world_class_score"] == 100, payload
assert payload["summary"]["warning_count"] == 0, payload
assert payload["summary"]["world_class_score"] == 92, payload
assert payload["summary"]["warning_count"] == 2, payload
assert payload["summary"]["blocker_count"] == 0, payload
assert payload["summary"]["action_count"] == 0, payload
assert payload["summary"]["action_count"] == 2, payload
assert payload["summary"]["annotation_count"] == 0, payload
assert payload["summary"]["open_annotation_blocker_count"] == 0, payload
assert payload["summary"]["action_count"] == payload["summary"]["warning_count"] + payload["summary"]["blocker_count"], payload
assert payload["review_actions"] == [], payload
assert {item["gate_key"] for item in payload["review_actions"]} == {"output-lab", "review-waivers"}, payload
gate_keys = {item["key"] for item in payload["gates"]}
assert {"intent-canvas", "trigger-lab", "output-lab", "runtime-matrix", "trust-report", "permission-gates", "permission-runtime", "skill-atlas", "operations-loop", "review-waivers", "registry-audit", "release-notes"} <= gate_keys, payload
output_gate = next(item for item in payload["gates"] if item["key"] == "output-lab")
assert output_gate["status"] == "pass", output_gate
assert output_gate["status"] == "warn", output_gate
assert "5/5 cases" in output_gate["detail"], output_gate
assert "file-backed 1" in output_gate["detail"], output_gate
assert "blind A/B 5" in output_gate["detail"], output_gate
assert "exec 10" in output_gate["detail"], output_gate
assert "model 0" in output_gate["detail"], output_gate
assert "reviewed 0/5" in output_gate["detail"], output_gate
assert "review pending 5" in output_gate["detail"], output_gate
release_gate = next(item for item in payload["gates"] if item["key"] == "release-notes")
assert "upgrade minor declared / minor recommended" in release_gate["detail"], release_gate
assert "reports/upgrade_check.json" in release_gate["evidence"], release_gate
@@ -279,8 +280,8 @@ def main() -> None:
assert "risk low" in operations_gate["detail"], operations_gate
assert "reports/adoption_drift_report.json" in operations_gate["evidence"], operations_gate
waivers_gate = next(item for item in payload["gates"] if item["key"] == "review-waivers")
assert waivers_gate["status"] == "pass", waivers_gate
assert "cover current warnings" in waivers_gate["detail"], waivers_gate
assert waivers_gate["status"] == "warn", waivers_gate
assert "warning gates still need reviewer decision" in waivers_gate["detail"], waivers_gate
assert "reports/review_waivers.json" in waivers_gate["evidence"], waivers_gate
assert output_html.exists(), output_html
assert output_json.exists(), output_json
@@ -301,7 +302,7 @@ def main() -> None:
assert full_payload["data"]["runtime_permissions"]["summary"]["metadata_fallback_count"] == 3, full_payload["data"]["runtime_permissions"]
assert full_payload["evidence_paths"]["runtime_permissions"] == "reports/runtime_permission_probes.md", full_payload["evidence_paths"]
action_keys = {item["gate_key"] for item in full_payload["review_actions"]}
assert action_keys == set(), full_payload["review_actions"]
assert action_keys == {"output-lab", "review-waivers"}, full_payload["review_actions"]
assert full_payload["data"]["atlas"]["summary"]["actionable_route_collision_count"] == 0, full_payload["data"]["atlas"]
assert full_payload["data"]["atlas"]["summary"]["non_actionable_issue_count"] >= 1, full_payload["data"]["atlas"]
synthetic_actions = review_studio.build_review_actions(
@@ -338,7 +339,8 @@ def main() -> None:
assert "Review Studio 2.0" in html, html[:400]
assert "审查闸门" in html, html[:1200]
assert "修复动作" in html, html[:3000]
assert "当前没有 blocker 或 warning" in html, html[:9000]
assert "补足 output eval 覆盖、execution evidence、blind A/B 和 reviewer adjudication。" in html, html[:9000]
assert "对保留的 warning 写入 reviewer、理由、范围和到期时间,或修掉 warning。" in html, html[:9000]
assert "审查批注" in html, html[:9000]
assert "当前没有 reviewer 批注" in html, html[:9000]
assert "输出实验" in html, html[:2000]