feat: reject placeholder evidence submissions

This commit is contained in:
yaojingang
2026-06-14 10:43:19 +08:00
parent 3f0b262e5f
commit 985eaee14b
21 changed files with 211 additions and 81 deletions
+13
View File
@@ -185,6 +185,19 @@
},
"then": {
"properties": {
"submitted_at": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}Z)?$"
},
"submitted_by": {
"not": {
"enum": [
"operator with provider credentials",
"human reviewer",
"target client or installer integrator",
"Browser/Chrome/IDE/provider client integrator"
]
}
},
"artifact_refs": {
"items": {
"required": [
+1 -1
View File
@@ -16,7 +16,7 @@
"vscode"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
}
]
}
+3 -3
View File
@@ -16,8 +16,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb",
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
"compatibility": {
"openai": "pass",
@@ -48,7 +48,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
+6 -6
View File
@@ -6,15 +6,15 @@
"context_budget_tier": "production",
"context_budget_limit": 1000,
"skill_body_tokens": 751,
"other_text_tokens": 1191951,
"other_text_tokens": 1193567,
"estimated_initial_load_tokens": 944,
"estimated_total_text_tokens": 1192702,
"deferred_resource_tokens": 383953,
"estimated_total_text_tokens": 1194318,
"deferred_resource_tokens": 384567,
"deferred_resource_warn_threshold": 120000,
"deferred_resource_dirs": [
{
"path": "scripts",
"estimated_tokens": 336470,
"estimated_tokens": 337084,
"file_count": 96
},
{
@@ -31,7 +31,7 @@
"large_deferred_resource_dirs": [
{
"path": "scripts",
"estimated_tokens": 336470,
"estimated_tokens": 337084,
"file_count": 96
}
],
@@ -54,7 +54,7 @@
],
"missing": [],
"path": "scripts",
"estimated_tokens": 336470,
"estimated_tokens": 337084,
"file_count": 96,
"rationale": "Script resources are deterministic deferred tools, not initial-load prompt context."
}
+1 -1
View File
@@ -2,7 +2,7 @@
| Target | Path | Tier | Limit | Initial | SKILL | Deferred | Resource Governance | Large Deferred Dirs | Quality Density | Unused Dirs | Status |
| --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | ---: | --- | --- |
| root | `.` | `production` | 1000 | 944 | 751 | 383953 | `governed` | scripts:336470 | 137.7 | - | ok |
| root | `.` | `production` | 1000 | 944 | 751 | 384567 | `governed` | scripts:337084 | 137.7 | - | 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 |
+3 -3
View File
@@ -8,11 +8,11 @@
"budget_limit": 1000,
"initial_tokens": 944,
"skill_body_tokens": 751,
"deferred_resource_tokens": 383953,
"deferred_resource_tokens": 384567,
"large_deferred_resource_dirs": [
{
"path": "scripts",
"estimated_tokens": 336470,
"estimated_tokens": 337084,
"file_count": 96
}
],
@@ -35,7 +35,7 @@
],
"missing": [],
"path": "scripts",
"estimated_tokens": 336470,
"estimated_tokens": 337084,
"file_count": 96,
"rationale": "Script resources are deterministic deferred tools, not initial-load prompt context."
}
+1 -1
View File
@@ -8,7 +8,7 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"archive_entry_count": 575,
"failure_count": 0,
"warning_count": 0
+1 -1
View File
@@ -4,7 +4,7 @@
- Package directory: `dist`
- Targets: `4 / 4` adapters present
- Archive present: `True`
- Archive SHA256: `54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d`
- Archive SHA256: `6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8`
- Failures: `0`
- Warnings: `0`
+4 -4
View File
@@ -21,8 +21,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb",
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
"compatibility": {
"openai": "pass",
@@ -53,7 +53,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"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": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
}
]
},
+2 -2
View File
@@ -6,8 +6,8 @@
- Maturity: `governed`
- Owner: `Yao Team`
- License: `MIT`
- Package SHA256: `2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb`
- Archive SHA256: `54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d`
- Package SHA256: `da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942`
- Archive SHA256: `6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8`
- Install simulated: `True`
## Compatibility
+5 -5
View File
@@ -439,7 +439,7 @@
<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 944/1000; deferred 383953/120000; top deferred scripts 336470; resource governance governed; quality density 137.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; 96 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; 158 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>155 Python files; 0 hotspots; 0 blockers; largest 888 lines; 34 CLI handlers</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 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 warn'><div><span>关注</span><h3>世界证据</h3></div><p>4 pending world-class evidence entries; 1 human pending; 3 external pending; 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 944/1000; deferred 384567/120000; top deferred scripts 337084; resource governance governed; quality density 137.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; 96 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; 158 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>155 Python files; 0 hotspots; 0 blockers; largest 888 lines; 34 CLI handlers</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 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 warn'><div><span>关注</span><h3>世界证据</h3></div><p>4 pending world-class evidence entries; 1 human pending; 3 external pending; overclaim guard true</p><footer>reports/world_class_evidence_ledger.json <a href='world_class_evidence_ledger.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>注册审计</h3></div><p>yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures</p><footer>reports/registry_audit.json + reports/install_simulation.json <a href='registry_audit.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>发布路线</h3></div><p>0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended</p><footer>reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md <a href='promotion_decisions.md'>证据</a></footer></article></div>
</section>
<div class="twocol">
@@ -501,12 +501,12 @@
</section>
<section class="twocol">
<div class="panel"><h2>上下文</h2><p>initial load 944/1000; deferred 383953/120000; top deferred scripts 336470; resource governance governed; quality density 137.7</p></div>
<div class="panel"><h2>上下文</h2><p>initial load 944/1000; deferred 384567/120000; top deferred scripts 337084; resource governance governed; quality density 137.7</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>96</dd></div><div><dt>网络脚本</dt><dd>3</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb</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>96</dd></div><div><dt>网络脚本</dt><dd>3</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942</code></dd></div></dl></div>
<div class="panel"><h2>安全边界</h2><p>高风险 secret、远程 inline execution、缺失依赖策略或无法解释的脚本接口应阻断 governed release。</p></div>
</section>
@@ -574,12 +574,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>54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d</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>6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8</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>575</dd></div><div><dt>失败数</dt><dd>0</dd></div><div><dt>警告数</dt><dd>0</dd></div><div><dt>归档哈希</dt><dd><code>54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d</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>575</dd></div><div><dt>失败数</dt><dd>0</dd></div><div><dt>警告数</dt><dd>0</dd></div><div><dt>归档哈希</dt><dd><code>6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8</code></dd></div></dl></div>
</section>
<section class="twocol">
+38 -38
View File
@@ -43,7 +43,7 @@
"key": "context-budget",
"label": "上下文",
"status": "pass",
"detail": "initial load 944/1000; deferred 383953/120000; top deferred scripts 336470; resource governance governed; quality density 137.7",
"detail": "initial load 944/1000; deferred 384567/120000; top deferred scripts 337084; resource governance governed; quality density 137.7",
"evidence": "reports/context_budget.json",
"link": "context_budget.md"
},
@@ -1336,9 +1336,9 @@
"methodology_complete": true,
"required_artifact_count": 24,
"missing_artifact_count": 0,
"evidence_bundle_sha256": "58baf3fe11e00c2be487239945ab3cc43a70b545507e1f1c891d1aed9a6da25e",
"source_contract_sha256": "59b0f65b269be1bcd9b8ab46997136fd5c19da796d0797702fb6a0dc96274cb8",
"archive_sha256": "5f3d7a018d80277336598d3bf78c546f37a301c0e4d8be6691a9f8de349c6576",
"evidence_bundle_sha256": "f2e43ceb692ae62a187af57b89bc49fb420f5a747b9b3e9dd5b5e23601f30c4e",
"source_contract_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb",
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"output_case_count": 5,
"failure_disclosure_count": 3,
"command_count": 21,
@@ -1353,9 +1353,9 @@
"world_class_task_count": 4,
"world_class_ledger_pending_count": 4,
"working_tree_dirty": true,
"changed_file_count": 30
"changed_file_count": 25
},
"commit": "d808071fb55a91484e78fe40f4b64bb52815758a",
"commit": "3f0b262e5f11fdcf14db8dc70ddcb2a89941e52d",
"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.",
@@ -1460,7 +1460,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 180,
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
},
"skill_atlas": {
"skill_count": 12,
@@ -1498,8 +1498,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb",
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
"compatibility": {
"openai": "pass",
@@ -1530,7 +1530,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -1546,7 +1546,7 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"archive_entry_count": 575,
"failure_count": 0,
"warning_count": 0
@@ -1625,12 +1625,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"to": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"to": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
}
]
},
@@ -3809,7 +3809,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 29.91,
"duration_ms": 29.87,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3837,7 +3837,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 28.72,
"duration_ms": 28.51,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3860,7 +3860,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 28.83,
"duration_ms": 29.77,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3888,7 +3888,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 28.47,
"duration_ms": 28.86,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3911,7 +3911,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 29.49,
"duration_ms": 28.97,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3939,7 +3939,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 29.13,
"duration_ms": 28.24,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3962,7 +3962,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 28.38,
"duration_ms": 28.63,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3989,7 +3989,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 28.42,
"duration_ms": 28.92,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4012,7 +4012,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 28.69,
"duration_ms": 28.27,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4041,7 +4041,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
"duration_ms": 28.75,
"duration_ms": 28.93,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -10257,7 +10257,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 180,
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
},
"failures": [],
"warnings": [],
@@ -13787,15 +13787,15 @@
"context_budget_tier": "production",
"context_budget_limit": 1000,
"skill_body_tokens": 751,
"other_text_tokens": 1191951,
"other_text_tokens": 1193567,
"estimated_initial_load_tokens": 944,
"estimated_total_text_tokens": 1192702,
"deferred_resource_tokens": 383953,
"estimated_total_text_tokens": 1194318,
"deferred_resource_tokens": 384567,
"deferred_resource_warn_threshold": 120000,
"deferred_resource_dirs": [
{
"path": "scripts",
"estimated_tokens": 336470,
"estimated_tokens": 337084,
"file_count": 96
},
{
@@ -13812,7 +13812,7 @@
"large_deferred_resource_dirs": [
{
"path": "scripts",
"estimated_tokens": 336470,
"estimated_tokens": 337084,
"file_count": 96
}
],
@@ -13835,7 +13835,7 @@
],
"missing": [],
"path": "scripts",
"estimated_tokens": 336470,
"estimated_tokens": 337084,
"file_count": 96,
"rationale": "Script resources are deterministic deferred tools, not initial-load prompt context."
}
@@ -15697,7 +15697,7 @@
"adoption_drift": {
"ok": true,
"schema_version": "2.0",
"generated_at": "2026-06-14T02:29:07Z",
"generated_at": "2026-06-14T02:40:09Z",
"skill_dir": ".",
"privacy_contract": {
"storage": "local-first",
@@ -17322,8 +17322,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb",
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
"compatibility": {
"openai": "pass",
@@ -17354,7 +17354,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -17379,7 +17379,7 @@
"vscode"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
}
]
},
@@ -17402,7 +17402,7 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"archive_entry_count": 575,
"failure_count": 0,
"warning_count": 0
@@ -18410,12 +18410,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"to": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"to": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
}
]
},
+1 -1
View File
@@ -23,7 +23,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 180,
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
},
"failures": [],
"warnings": [],
+1 -1
View File
@@ -16,7 +16,7 @@
- Interactive scripts: `0`
- Package hash scope: `source-contract-without-generated-reports`
- Package hash files: `180`
- Package SHA256: `2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb`
- Package SHA256: `da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942`
## Failures
+12 -12
View File
@@ -922,9 +922,9 @@
"methodology_complete": true,
"required_artifact_count": 24,
"missing_artifact_count": 0,
"evidence_bundle_sha256": "58baf3fe11e00c2be487239945ab3cc43a70b545507e1f1c891d1aed9a6da25e",
"source_contract_sha256": "59b0f65b269be1bcd9b8ab46997136fd5c19da796d0797702fb6a0dc96274cb8",
"archive_sha256": "5f3d7a018d80277336598d3bf78c546f37a301c0e4d8be6691a9f8de349c6576",
"evidence_bundle_sha256": "f2e43ceb692ae62a187af57b89bc49fb420f5a747b9b3e9dd5b5e23601f30c4e",
"source_contract_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb",
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"output_case_count": 5,
"failure_disclosure_count": 3,
"command_count": 21,
@@ -939,9 +939,9 @@
"world_class_task_count": 4,
"world_class_ledger_pending_count": 4,
"working_tree_dirty": true,
"changed_file_count": 30
"changed_file_count": 25
},
"commit": "d808071fb55a91484e78fe40f4b64bb52815758a",
"commit": "3f0b262e5f11fdcf14db8dc70ddcb2a89941e52d",
"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.",
@@ -1046,7 +1046,7 @@
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
"package_hash_file_count": 180,
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
},
"skill_atlas": {
"skill_count": 12,
@@ -1084,8 +1084,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
"package_sha256": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb",
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"package_sha256": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
"compatibility": {
"openai": "pass",
@@ -1116,7 +1116,7 @@
},
"distribution": {
"archive_verified": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -1132,7 +1132,7 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
"archive_sha256": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d",
"archive_sha256": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8",
"archive_entry_count": 575,
"failure_count": 0,
"warning_count": 0
@@ -1211,12 +1211,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"to": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"to": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
}
]
},
+2 -2
View File
@@ -70,12 +70,12 @@
{
"field": "archive_sha256",
"from": "",
"to": "54e6b60578526fb40d38c7105cc61f59f0ca93c2811b1074b9ebc1620cfe853d"
"to": "6756fa63a5db07a3441347153ffb566e22b0a14ae4605b4ed3ab87d548a956b8"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
"to": "2af3b1e7638215a67244ed897737e1d0b42b8c930c3a8ac66d87d818b3ba01bb"
"to": "da5488b7d14d1599f3d13ac30a6d4a9de1690867697e0f12426b3631bed47942"
}
]
},
+1
View File
@@ -202,6 +202,7 @@ This report validates the intake contract for human and external evidence. A val
- Templates and planned work do not count as accepted evidence.
- Real submissions must include the evidence-key critical artifact paths with verified SHA-256 digests.
- Real submissions must replace template submitter, date, and provenance placeholders with concrete evidence metadata.
- Local command-runner output does not count as provider-backed model evidence.
- Metadata fallback does not count as native permission enforcement.
- Pending reviewer work does not count as human adjudication.
@@ -297,6 +297,7 @@ def render_markdown(report: dict[str, Any]) -> str:
"",
"- Templates and planned work do not count as accepted evidence.",
"- Real submissions must include the evidence-key critical artifact paths with verified SHA-256 digests.",
"- Real submissions must replace template submitter, date, and provenance placeholders with concrete evidence metadata.",
"- Local command-runner output does not count as provider-backed model evidence.",
"- Metadata fallback does not count as native permission enforcement.",
"- Pending reviewer work does not count as human adjudication.",
+53
View File
@@ -49,6 +49,7 @@ EXPECTED_SOURCE_TYPES = {
"native-client-telemetry": "native-client-telemetry",
}
SHA256_RE = re.compile(r"^[0-9a-fA-F]{64}$")
SUBMITTED_AT_RE = re.compile(r"^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}Z)?$")
DISALLOWED_REAL_ARTIFACTS = {"reports/telemetry_events.jsonl"}
REQUIRED_REAL_ARTIFACT_PATHS = {
"provider-holdout": {"reports/output_execution_runs.json"},
@@ -65,6 +66,18 @@ REQUIRED_REAL_ARTIFACT_PATHS = {
"reports/telemetry_hook_recipes.json",
},
}
PLACEHOLDER_FRAGMENTS = (
"YYYY-MM-DD",
"name or team handle",
"operator with provider credentials",
"human reviewer",
"target client or installer integrator",
"Browser/Chrome/IDE/provider client integrator",
"Browser/Chrome/IDE/provider client",
"openai|claude|generic|vscode|other",
"client or installer component",
"/local/path/not/committed",
)
def load_json(path: Path) -> dict[str, Any]:
@@ -101,6 +114,20 @@ def add_error(errors: list[str], condition: bool, message: str) -> None:
errors.append(message)
def has_placeholder_text(value: Any) -> bool:
text = str(value or "").strip()
if not text:
return False
lowered = text.lower()
return any(fragment.lower() in lowered for fragment in PLACEHOLDER_FRAGMENTS)
def require_real_text(errors: list[str], value: Any, field: str) -> None:
text = str(value or "").strip()
add_error(errors, bool(text), f"{field} is required")
add_error(errors, not has_placeholder_text(text), f"{field} must not use template placeholder text")
def sha256_file(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as handle:
@@ -197,6 +224,7 @@ def validate_artifact_refs(
def validate_evidence_specific(payload: dict[str, Any], errors: list[str]) -> None:
key = str(payload.get("evidence_key", ""))
template_expected = payload.get("template_only") is True
provenance = payload.get("provenance", {}) if isinstance(payload.get("provenance", {}), dict) else {}
if key == "provider-holdout":
add_error(errors, bool(str(provenance.get("provider", "")).strip()), "provider-holdout provenance.provider is required")
@@ -208,6 +236,8 @@ def validate_evidence_specific(payload: dict[str, Any], errors: list[str]) -> No
)
elif key == "human-adjudication":
add_error(errors, bool(str(provenance.get("reviewer", "")).strip()), "human-adjudication provenance.reviewer is required")
if not template_expected:
require_real_text(errors, provenance.get("reviewer", ""), "human-adjudication provenance.reviewer")
add_error(
errors,
provenance.get("answer_key_opened_after_decisions") is True,
@@ -215,11 +245,19 @@ def validate_evidence_specific(payload: dict[str, Any], errors: list[str]) -> No
)
elif key == "native-permission-enforcement":
add_error(errors, bool(str(provenance.get("target", "")).strip()), "native-permission-enforcement provenance.target is required")
if not template_expected:
require_real_text(errors, provenance.get("target", ""), "native-permission-enforcement provenance.target")
add_error(
errors,
bool(str(provenance.get("guard_location", "")).strip()),
"native-permission-enforcement provenance.guard_location is required",
)
if not template_expected:
require_real_text(
errors,
provenance.get("guard_location", ""),
"native-permission-enforcement provenance.guard_location",
)
add_error(
errors,
str(provenance.get("guard_scope", "")).strip()
@@ -238,6 +276,14 @@ def validate_evidence_specific(payload: dict[str, Any], errors: list[str]) -> No
)
elif key == "native-client-telemetry":
add_error(errors, bool(str(provenance.get("client", "")).strip()), "native-client-telemetry provenance.client is required")
if not template_expected:
require_real_text(errors, provenance.get("client", ""), "native-client-telemetry provenance.client")
if str(provenance.get("native_host_manifest", "")).strip():
require_real_text(
errors,
provenance.get("native_host_manifest", ""),
"native-client-telemetry provenance.native_host_manifest",
)
add_error(errors, provenance.get("event_source") == "external", "native-client-telemetry event_source must be external")
add_error(errors, provenance.get("metadata_only") is True, "native-client-telemetry must be metadata_only")
@@ -266,6 +312,13 @@ def validate_payload(
add_error(errors, bool(str(payload.get("submitted_by", "")).strip()), "submitted_by is required")
add_error(errors, bool(str(payload.get("submitted_at", "")).strip()), "submitted_at is required")
add_error(errors, bool(str(payload.get("summary", "")).strip()), "summary is required")
if not template_expected:
require_real_text(errors, payload.get("submitted_by", ""), "submitted_by")
add_error(
errors,
bool(SUBMITTED_AT_RE.match(str(payload.get("submitted_at", "")).strip())),
"submitted_at must use YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ",
)
artifact_integrity = validate_artifact_refs(payload, errors, root=root, template_expected=template_expected)
privacy = payload.get("privacy", {}) if isinstance(payload.get("privacy", {}), dict) else {}
for key in REQUIRED_PRIVACY_FALSE:
@@ -159,6 +159,7 @@ def main() -> None:
assert "`python3 scripts/yao.py world-class-ledger .`" in markdown, markdown
assert "Templates and planned work do not count as accepted evidence." in markdown, markdown
assert "Real submissions must include the evidence-key critical artifact paths with verified SHA-256 digests." in markdown, markdown
assert "Real submissions must replace template submitter, date, and provenance placeholders with concrete evidence metadata." in markdown, markdown
kit_dir = TMP / "submission_kit"
kit_proc = run_kit("--output-dir", str(kit_dir), "--evidence-key", "provider-holdout")
@@ -219,6 +220,23 @@ def main() -> None:
assert valid_checklist["provider-holdout"]["submission_path"].endswith("tests/tmp_world_class_evidence_intake/valid_submissions/provider-holdout.json"), valid_checklist["provider-holdout"]
assert "tests/tmp_world_class_evidence_intake/valid_submissions" in valid_checklist["provider-holdout"]["commands"]["validate_intake"], valid_checklist["provider-holdout"]
placeholder_dir = TMP / "placeholder_submissions"
placeholder_dir.mkdir()
placeholder_submission = provider_submission(valid=True)
placeholder_submission["submitted_by"] = "operator with provider credentials"
placeholder_submission["submitted_at"] = "YYYY-MM-DD"
(placeholder_dir / "provider-holdout.json").write_text(
json.dumps(placeholder_submission, ensure_ascii=False, indent=2) + "\n",
encoding="utf-8",
)
placeholder_payload = run_intake("--submissions-dir", str(placeholder_dir))
assert placeholder_payload["ok"] is False, placeholder_payload
assert placeholder_payload["summary"]["decision"] == "fix-intake", placeholder_payload["summary"]
assert placeholder_payload["summary"]["invalid_submission_count"] == 1, placeholder_payload["summary"]
placeholder_errors = placeholder_payload["submissions"][0]["errors"]
assert any("submitted_by must not use template placeholder text" in error for error in placeholder_errors), placeholder_errors
assert any("submitted_at must use YYYY-MM-DD" in error for error in placeholder_errors), placeholder_errors
invalid_dir = TMP / "invalid_submissions"
invalid_dir.mkdir()
(invalid_dir / "provider-holdout.json").write_text(
@@ -263,6 +263,50 @@ def main() -> None:
for error in unrelated_accepted_provider["submission_state"]["errors"]
), unrelated_accepted_provider
placeholder_accepted_submissions = TMP / "placeholder_accepted_submissions"
placeholder_accepted_submissions.mkdir()
placeholder_submission = provider_submission(accepted_source_skill)
placeholder_submission["submitted_by"] = "operator with provider credentials"
placeholder_submission["submitted_at"] = "YYYY-MM-DD"
(placeholder_accepted_submissions / "provider-holdout.json").write_text(
json.dumps(placeholder_submission, ensure_ascii=False, indent=2) + "\n",
encoding="utf-8",
)
placeholder_accepted_proc = subprocess.run(
[
sys.executable,
str(SCRIPT),
str(accepted_source_skill),
"--output-json",
str(TMP / "placeholder_accepted_provider_ledger.json"),
"--output-md",
str(TMP / "placeholder_accepted_provider_ledger.md"),
"--submissions-dir",
str(placeholder_accepted_submissions),
"--generated-at",
"2026-06-13",
],
cwd=ROOT,
capture_output=True,
text=True,
check=True,
)
placeholder_accepted_payload = json.loads(placeholder_accepted_proc.stdout)
placeholder_accepted_summary = placeholder_accepted_payload["summary"]
assert placeholder_accepted_summary["source_accepted_count"] == 1, placeholder_accepted_summary
assert placeholder_accepted_summary["accepted_count"] == 0, placeholder_accepted_summary
assert placeholder_accepted_summary["invalid_submission_count"] == 1, placeholder_accepted_summary
placeholder_accepted_provider = {
entry["key"]: entry for entry in placeholder_accepted_payload["entries"]
}["provider-holdout"]
assert placeholder_accepted_provider["source_accepted"] is True, placeholder_accepted_provider
assert placeholder_accepted_provider["status"] == "pending", placeholder_accepted_provider
assert placeholder_accepted_provider["submission_state"]["status"] == "invalid-contract", placeholder_accepted_provider
assert any(
"submitted_by must not use template placeholder text" in error
for error in placeholder_accepted_provider["submission_state"]["errors"]
), placeholder_accepted_provider
accepted_submissions = TMP / "accepted_submissions"
accepted_submissions.mkdir()
(accepted_submissions / "provider-holdout.json").write_text(