From 30451d41f615562dfd0380414cc8447d4dad5e38 Mon Sep 17 00:00:00 2001 From: yaojingang Date: Tue, 16 Jun 2026 07:02:02 +0800 Subject: [PATCH] Expand review studio world-class action cards --- AGENTS.md | 2 +- assets/review-studio.css | 688 ++++++++++++++++++++++ references/review-studio-method.md | 2 + registry/index.json | 2 +- registry/packages/yao-meta-skill.json | 6 +- reports/architecture_maintainability.json | 10 +- reports/architecture_maintainability.md | 6 +- reports/benchmark_reproducibility.json | 62 +- reports/benchmark_reproducibility.md | 37 +- reports/compiled_targets.json | 35 +- reports/context_budget.json | 20 +- reports/context_budget.md | 2 +- reports/context_budget_summary.json | 6 +- reports/evidence_consistency.json | 60 +- reports/install_simulation.json | 2 +- reports/output_execution_runs.json | 20 +- reports/output_execution_runs.md | 20 +- reports/package_verification.json | 4 +- reports/package_verification.md | 2 +- reports/registry_audit.json | 8 +- reports/registry_audit.md | 4 +- reports/review-studio.html | 58 +- reports/review-studio.json | 320 ++++++---- reports/review-viewer.json | 42 +- reports/security_trust_report.json | 6 +- reports/security_trust_report.md | 6 +- reports/skill-interpretation.html | 8 +- reports/skill-interpretation.json | 42 +- reports/skill-os-2-review.md | 6 +- reports/skill-overview.html | 8 +- reports/skill-overview.json | 42 +- reports/skill_atlas.json | 1 + reports/skill_os2_audit.json | 2 +- reports/skill_os2_audit.md | 2 +- reports/skill_os2_coverage.json | 2 +- reports/skill_os2_coverage.md | 2 +- reports/skillops/daily/2026-06-16.json | 6 +- reports/skillops/daily/2026-06-16.md | 2 +- reports/skillops/weekly/2026-W25.json | 6 +- reports/skillops/weekly/2026-W25.md | 2 +- reports/upgrade_check.json | 4 +- scripts/review_studio_action_evidence.py | 44 ++ scripts/review_studio_layout.py | 674 +-------------------- skill-ir/examples/yao-meta-skill.json | 1 + skill_atlas/catalog.json | 1 + tests/verify_evidence_consistency.py | 2 +- tests/verify_review_studio.py | 13 + tests/verify_skill_ir.py | 1 + tests/verify_trust_check.py | 1 + 49 files changed, 1278 insertions(+), 1024 deletions(-) create mode 100644 assets/review-studio.css diff --git a/AGENTS.md b/AGENTS.md index 0731ea5f..8e452522 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -104,7 +104,7 @@ Clean test-only scratch directories after verification with `find tests -maxdept - `scripts/render_skill_overview.py`: v2 bilingual skill overview report. Preserve `reports/skill-overview.html` / `.json`, `body data-report-lang="zh-CN"`, default Simplified Chinese, English switch, and inline-chart/no-external-dependency behavior. - `scripts/skill_report_layout.py` plus `assets/skill-overview.css` / `assets/skill-overview.js`: overview report layout contract and inline assets. Keep the generated report single-file at render time, but keep long CSS/JS source in `assets/` instead of embedding it inside Python. - `scripts/render_review_studio.py`: Review Studio gate orchestration. Keep gate scoring, evidence links, and action generation separate from layout helpers. -- `scripts/review_studio_layout.py`: Review Studio static layout and CSS contract. +- `scripts/review_studio_layout.py` plus `assets/review-studio.css`: Review Studio static layout and CSS contract. Keep the generated report single-file at render time, but keep long CSS source in `assets/` instead of embedding it inside Python. - `scripts/review_studio_formatting.py`: Review Studio dictionary-to-panel formatting and Chinese metric labels. - `scripts/review_studio_gates.py`: Review Studio gate evaluation, release decision scoring, and gate status labels. - `scripts/render_skill_os2_audit.py`: requirement-by-requirement Skill OS 2.0 completion audit. Keep local evidence, human-required gaps, and external-required gaps separate so reports do not overclaim world-class readiness. diff --git a/assets/review-studio.css b/assets/review-studio.css new file mode 100644 index 00000000..67e88505 --- /dev/null +++ b/assets/review-studio.css @@ -0,0 +1,688 @@ +:root { + --ink: #1B365D; + --text: #24201d; + --muted: #746d66; + --line: #e7ded2; + --soft: #faf8f5; + --pass: #1e6b52; + --warn: #9a6718; + --block: #9b2c2c; + } + * { box-sizing: border-box; } + html { scroll-behavior: smooth; } + body { + margin: 0; + background: #ffffff; + color: var(--text); + font-family: Georgia, "Times New Roman", "Songti SC", serif; + line-height: 1.58; + } + nav { + position: sticky; + top: 0; + z-index: 10; + display: flex; + gap: 4px; + justify-content: center; + flex-wrap: wrap; + padding: 10px 16px; + background: rgba(255,255,255,0.94); + border-bottom: 1px solid var(--line); + backdrop-filter: blur(10px); + } + nav a { + color: var(--ink); + text-decoration: none; + font-size: 14px; + padding: 7px 10px; + border-radius: 6px; + } + nav a:hover { background: var(--soft); } + main { max-width: 1180px; margin: 0 auto; padding: 44px 28px 76px; } + header { border-bottom: 1px solid var(--line); padding-bottom: 28px; margin-bottom: 28px; } + .eyebrow { color: var(--ink); font-size: 14px; letter-spacing: .08em; text-transform: uppercase; } + h1, h2, h3 { color: var(--text); font-weight: 500; margin: 0; letter-spacing: 0; } + h1 { font-size: clamp(34px, 5vw, 64px); line-height: 1.03; max-width: 920px; margin-top: 12px; } + h2 { font-size: 30px; margin-bottom: 14px; } + h3 { font-size: 19px; } + p { margin: 0; } + .lede { max-width: 820px; color: var(--muted); font-size: 20px; margin-top: 18px; } + .decision { + display: inline-flex; + align-items: baseline; + gap: 12px; + margin-top: 24px; + padding: 12px 16px; + border: 1px solid var(--line); + border-radius: 8px; + color: var(--ink); + background: var(--soft); + } + .decision strong { font-size: 28px; } + section { padding: 30px 0; border-bottom: 1px solid var(--line); scroll-margin-top: 76px; } + .metrics, .gates { + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); + gap: 14px; + } + .gates { grid-template-columns: repeat(4, minmax(0, 1fr)); } + .metric, .gate { + border: 1px solid var(--line); + border-radius: 8px; + padding: 16px; + background: #fff; + min-width: 0; + } + .metric span, .gate span { display: block; color: var(--muted); font-size: 13px; } + .metric strong { display: block; color: var(--ink); font-size: 34px; line-height: 1.1; margin: 8px 0; } + .metric p, .gate p, .gate footer, .issues span, .evidence span { color: var(--muted); font-size: 14px; overflow-wrap: anywhere; } + .gate { display: flex; flex-direction: column; gap: 10px; } + .gate.pass { border-top: 4px solid var(--pass); } + .gate.warn { border-top: 4px solid var(--warn); } + .gate.block { border-top: 4px solid var(--block); } + .gate footer { border-top: 1px solid var(--line); padding-top: 10px; } + a { color: var(--ink); } + .twocol { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: 22px; + align-items: start; + } + .panel { + border: 1px solid var(--line); + border-radius: 8px; + padding: 18px; + background: #fff; + } + .panel p { color: var(--muted); } + .kv-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px 12px; + margin: 2px 0 0; + } + .kv-grid div { + min-width: 0; + padding: 9px 0 0; + border-top: 1px solid var(--line); + } + .kv-grid dt { + color: var(--muted); + font-size: 13px; + } + .kv-grid dd { + margin: 2px 0 0; + color: var(--ink); + font-size: 15px; + overflow-wrap: anywhere; + } + .issues, .evidence { + list-style: none; + padding: 0; + margin: 0; + display: grid; + gap: 12px; + } + .issues li, .evidence li { + border-left: 3px solid var(--line); + padding-left: 12px; + display: grid; + gap: 3px; + } + .muted { color: var(--muted); } + .actions-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 16px; + } + .annotations-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 16px; + } + .action-card { + border: 1px solid var(--line); + border-radius: 8px; + padding: 18px; + background: #fff; + display: grid; + gap: 10px; + min-width: 0; + } + .action-card.warn { border-left: 4px solid var(--warn); } + .action-card.block { border-left: 4px solid var(--block); } + .action-card.with-evidence { + grid-column: 1 / -1; + } + .action-evidence-panel { + display: grid; + gap: 12px; + border-top: 1px solid var(--line); + padding-top: 12px; + margin-top: 2px; + } + .action-evidence-panel h4 { + margin: 0; + color: var(--ink); + font-size: 16px; + font-weight: 500; + } + .action-evidence-panel p { + color: var(--muted); + font-size: 14px; + } + .action-evidence-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 14px; + } + .action-evidence-item { + border: 1px solid var(--line); + border-radius: 8px; + padding: 14px; + display: grid; + gap: 10px; + min-width: 0; + background: var(--soft); + } + .action-evidence-item.pending { border-left: 4px solid var(--warn); } + .action-evidence-item.accepted { border-left: 4px solid var(--pass); } + .action-evidence-item h4, + .action-evidence-item h5 { + margin: 0; + color: var(--ink); + font-weight: 500; + } + .action-evidence-item h4 { font-size: 16px; } + .action-evidence-item h5 { font-size: 14px; } + .action-evidence-item section { + border-top: 1px solid var(--line); + padding-top: 10px; + display: grid; + gap: 8px; + } + .action-command-details, + .action-runbook-details, + .action-collection-details { + border-top: 1px solid var(--line); + padding-top: 10px; + display: grid; + gap: 8px; + } + .action-command-details summary, + .action-runbook-details summary, + .action-collection-details summary { + cursor: pointer; + color: var(--ink); + font-size: 14px; + font-weight: 500; + } + .action-command-details[open] summary, + .action-runbook-details[open] summary, + .action-collection-details[open] summary { + margin-bottom: 8px; + } + .action-collection-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 12px; + } + .action-collection-grid section { + border-top: 1px solid var(--line); + padding-top: 8px; + display: grid; + gap: 6px; + } + .action-collection-grid ul, + .action-collection-grid ol { + margin: 0; + padding-left: 18px; + display: grid; + gap: 5px; + } + .action-collection-grid li { + color: var(--muted); + font-size: 13px; + overflow-wrap: anywhere; + } + .action-evidence-item dl { + display: grid; + grid-template-columns: 76px minmax(0, 1fr); + gap: 6px 10px; + margin: 0; + } + .action-evidence-item dt { + color: var(--ink); + font-size: 14px; + } + .action-evidence-item dd { + margin: 0; + min-width: 0; + } + .action-evidence-checks, + .action-command-list, + .action-runbook-list { + margin: 0; + display: grid; + gap: 8px; + } + .action-evidence-checks, + .action-command-list { + padding: 0; + list-style: none; + } + .action-runbook-list { + padding-left: 20px; + } + .action-evidence-check, + .action-command-list li { + display: grid; + gap: 3px; + min-width: 0; + border-top: 1px solid var(--line); + padding-top: 8px; + } + .action-evidence-check.blocked { border-left: 3px solid var(--warn); padding-left: 8px; } + .action-evidence-check.pass { border-left: 3px solid var(--pass); padding-left: 8px; } + .action-evidence-check span, + .action-command-list span { + color: var(--ink); + font-size: 13px; + } + .action-evidence-check code, + .action-evidence-check small, + .action-command-list code, + .action-runbook-list li { + color: var(--muted); + font-size: 13px; + overflow-wrap: anywhere; + } + .action-command-list code { + display: block; + white-space: normal; + } + .annotation-card { + border: 1px solid var(--line); + border-radius: 8px; + padding: 18px; + background: #fff; + display: grid; + gap: 10px; + min-width: 0; + } + .annotation-card.warning { border-left: 4px solid var(--warn); } + .annotation-card.blocker { border-left: 4px solid var(--block); } + .annotation-card.resolved { opacity: .72; } + .world-evidence-grid { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 16px; + margin-top: 16px; + } + .world-evidence-card { + border: 1px solid var(--line); + border-radius: 8px; + padding: 18px; + background: #fff; + display: grid; + gap: 12px; + min-width: 0; + } + .world-evidence-card.pending { border-left: 4px solid var(--warn); } + .world-evidence-card.accepted { border-left: 4px solid var(--pass); } + .world-evidence-card span, + .world-evidence-card p, + .world-evidence-card dd, + .world-evidence-card li { + color: var(--muted); + font-size: 14px; + overflow-wrap: anywhere; + } + .world-evidence-card dl { + display: grid; + grid-template-columns: 86px minmax(0, 1fr); + gap: 6px 10px; + margin: 0; + } + .world-evidence-card dt { color: var(--ink); font-size: 14px; } + .world-evidence-card dd { margin: 0; } + .world-evidence-columns { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 12px; + border-top: 1px solid var(--line); + padding-top: 12px; + } + .world-evidence-columns h4 { + margin: 0 0 6px; + color: var(--ink); + font-size: 14px; + font-weight: 500; + } + .world-evidence-columns ul { + margin: 0; + padding-left: 18px; + } + .world-source-panel { + border-top: 1px solid var(--line); + padding-top: 12px; + } + .world-runbook-panel { + border-top: 1px solid var(--line); + padding-top: 12px; + } + .world-runbook-panel h4, + .world-source-panel h4 { + margin: 0 0 8px; + color: var(--ink); + font-size: 14px; + font-weight: 500; + } + .world-runbook-panel ul { + margin: 0; + padding-left: 18px; + } + .world-source-checks { + list-style: none; + padding: 0; + margin: 0; + display: grid; + gap: 8px; + } + .world-source-check { + display: grid; + grid-template-columns: minmax(0, .7fr) minmax(0, .6fr) minmax(0, 1fr); + gap: 10px; + align-items: start; + min-width: 0; + padding: 9px 0 0; + border-top: 1px solid var(--line); + } + .world-source-check span { + color: var(--ink); + font-size: 14px; + } + .world-source-check code, + .world-source-check small { + color: var(--muted); + font-size: 13px; + overflow-wrap: anywhere; + } + .world-source-check.pass { border-left: 3px solid var(--pass); padding-left: 8px; } + .world-source-check.blocked { border-left: 3px solid var(--warn); padding-left: 8px; } + .output-review-grid { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 16px; + margin-top: 16px; + } + .output-review-card { + border: 1px solid var(--line); + border-radius: 8px; + padding: 18px; + background: #fff; + display: grid; + gap: 12px; + min-width: 0; + } + .output-review-card.awaiting-decision, + .output-review-card.fix-decision { border-left: 4px solid var(--warn); } + .output-review-card.adjudicated { border-left: 4px solid var(--pass); } + .output-review-card span, + .output-review-card p, + .output-review-card dd, + .output-review-card li { + color: var(--muted); + font-size: 14px; + overflow-wrap: anywhere; + } + .output-review-card dl { + display: grid; + grid-template-columns: 86px minmax(0, 1fr); + gap: 6px 10px; + margin: 0; + } + .output-review-card dt { color: var(--ink); font-size: 14px; } + .output-review-card dd { margin: 0; min-width: 0; } + .output-review-steps { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 12px; + border-top: 1px solid var(--line); + padding-top: 12px; + } + .output-review-steps h4 { + margin: 0 0 6px; + color: var(--ink); + font-size: 14px; + font-weight: 500; + } + .output-review-steps ul { + margin: 0; + padding-left: 18px; + } + .output-review-commands, + .output-review-fields { + list-style: none; + padding: 0; + display: grid; + gap: 8px; + } + .output-review-commands li, + .output-review-fields li { + display: grid; + gap: 2px; + min-width: 0; + padding: 8px 0 0; + border-top: 1px solid var(--line); + } + .output-review-commands code { + overflow-wrap: anywhere; + white-space: normal; + display: block; + } + .world-intake-grid { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 16px; + margin-top: 16px; + } + .world-intake-card { + border: 1px solid var(--line); + border-radius: 8px; + padding: 18px; + background: #fff; + display: grid; + gap: 12px; + min-width: 0; + } + .world-intake-card.awaiting-submission, + .world-intake-card.fix-submission, + .world-intake-card.fix-template { border-left: 4px solid var(--warn); } + .world-intake-card.ready-for-ledger-review, + .world-intake-card.accepted { border-left: 4px solid var(--pass); } + .world-intake-card span, + .world-intake-card p, + .world-intake-card dd, + .world-intake-card li { + color: var(--muted); + font-size: 14px; + overflow-wrap: anywhere; + } + .world-intake-card dl { + display: grid; + grid-template-columns: 86px minmax(0, 1fr); + gap: 6px 10px; + margin: 0; + } + .world-intake-card dt { color: var(--ink); font-size: 14px; } + .world-intake-card dd { margin: 0; min-width: 0; } + .world-intake-steps { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 12px; + border-top: 1px solid var(--line); + padding-top: 12px; + } + .world-intake-steps h4 { + margin: 0 0 6px; + color: var(--ink); + font-size: 14px; + font-weight: 500; + } + .world-intake-steps ul { + margin: 0; + padding-left: 18px; + } + .world-intake-commands { + list-style: none; + padding: 0; + display: grid; + gap: 8px; + } + .world-intake-commands li { + display: grid; + gap: 2px; + min-width: 0; + padding: 8px 0 0; + border-top: 1px solid var(--line); + } + .world-intake-commands code { + overflow-wrap: anywhere; + white-space: normal; + display: block; + } + .section-subtitle { + margin-top: 22px; + margin-bottom: 12px; + color: var(--ink); + } + .waiver-summary { margin-top: 16px; } + .waiver-candidate-grid { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 16px; + } + .waiver-card { + border: 1px solid var(--line); + border-radius: 8px; + padding: 18px; + background: #fff; + display: grid; + gap: 12px; + min-width: 0; + } + .waiver-card.allowed { border-left: 4px solid var(--warn); } + .waiver-card.blocked { border-left: 4px solid var(--block); } + .waiver-card span, + .waiver-card p, + .waiver-card dd, + .waiver-card li { + color: var(--muted); + font-size: 14px; + overflow-wrap: anywhere; + } + .waiver-card dl { + display: grid; + grid-template-columns: 86px minmax(0, 1fr); + gap: 6px 10px; + margin: 0; + } + .waiver-card dt { + color: var(--ink); + font-size: 14px; + } + .waiver-card dd { margin: 0; min-width: 0; } + .waiver-review { + border-top: 1px solid var(--line); + padding-top: 12px; + } + .waiver-review h4 { + margin: 0 0 6px; + color: var(--ink); + font-size: 14px; + font-weight: 500; + } + .waiver-review ul { + margin: 0; + padding-left: 18px; + } + .waiver-command { + display: grid; + gap: 4px; + border-top: 1px solid var(--line); + padding-top: 12px; + } + .waiver-command span { + color: var(--ink); + font-size: 14px; + } + .waiver-command code { + display: block; + max-width: 100%; + overflow-wrap: anywhere; + white-space: normal; + } + .action-card span, + .annotation-card span, + .action-card small, + .annotation-card small, + .action-card footer, + .annotation-card footer, + .action-card dd { + color: var(--muted); + font-size: 14px; + overflow-wrap: anywhere; + } + .annotation-card dd { color: var(--muted); font-size: 14px; overflow-wrap: anywhere; } + .action-card dl, .annotation-card dl { + display: grid; + grid-template-columns: 80px minmax(0, 1fr); + gap: 6px 10px; + margin: 0; + } + .action-card dt, .annotation-card dt { color: var(--ink); font-size: 14px; } + .action-card dd, .annotation-card dd { margin: 0; } + .source-ref-list { + list-style: none; + padding: 0; + margin: 0; + display: grid; + gap: 6px; + } + .source-ref-list li { + display: grid; + gap: 2px; + min-width: 0; + padding: 8px 0 0; + border-top: 1px solid var(--line); + } + .source-ref-list a, + .source-ref-list span { + overflow-wrap: anywhere; + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 13px; + } + .source-ref-list small { + font-size: 12px; + color: var(--muted); + } + .source-ref-list blockquote { + margin: 2px 0 0; + padding: 7px 9px; + border-left: 3px solid var(--line); + background: var(--soft); + color: var(--muted); + font-size: 12px; + overflow-wrap: anywhere; + } + code { + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 13px; + } + @media (max-width: 980px) { + .metrics, .gates, .twocol, .actions-grid, .annotations-grid, .action-evidence-grid, .action-evidence-item dl, .action-collection-grid, .output-review-grid, .output-review-steps, .world-evidence-grid, .world-evidence-columns, .world-source-check, .world-intake-grid, .world-intake-steps, .waiver-candidate-grid, .waiver-card dl, .kv-grid { grid-template-columns: 1fr; } + main { padding: 32px 18px 60px; } + nav { justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; } + nav a { flex: 0 0 auto; } + } diff --git a/references/review-studio-method.md b/references/review-studio-method.md index 4f36f2c4..4674fbd4 100644 --- a/references/review-studio-method.md +++ b/references/review-studio-method.md @@ -69,6 +69,8 @@ Each action must include: The HTML page should render these actions before the detailed supporting sections so a reviewer can move directly from warning to fix. Action entries do not change gate count or score; they make the current decision more operational. +For `world-class-evidence`, the action should also expose an evidence-step card for every pending evidence key. Each card should show the submission path, template path, blocked source checks, command handoff, first runbook steps, provenance requirements, success checks, evidence artifacts, and privacy boundary. These cards are collection guidance only; they must not count as accepted evidence or change world-class readiness. + ## Review Annotations `reports/review_annotations.json` is the structured ledger, and `reports/review_annotations.md` is the human-readable review note surface. Each annotation should include: diff --git a/registry/index.json b/registry/index.json index 477f68ff..c76819f0 100644 --- a/registry/index.json +++ b/registry/index.json @@ -16,7 +16,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] } diff --git a/registry/packages/yao-meta-skill.json b/registry/packages/yao-meta-skill.json index c6e937ea..1fbf98e7 100644 --- a/registry/packages/yao-meta-skill.json +++ b/registry/packages/yao-meta-skill.json @@ -16,8 +16,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, "compatibility": { "openai": "pass", @@ -48,7 +48,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" diff --git a/reports/architecture_maintainability.json b/reports/architecture_maintainability.json index d9f48288..4c185ceb 100644 --- a/reports/architecture_maintainability.json +++ b/reports/architecture_maintainability.json @@ -52,7 +52,7 @@ }, { "path": "tests/verify_review_studio.py", - "lines": 803, + "lines": 816, "kind": "test", "severity": "pass", "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." @@ -100,9 +100,9 @@ "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." }, { - "path": "scripts/review_studio_layout.py", - "lines": 703, - "kind": "internal-module", + "path": "scripts/render_world_class_preflight.py", + "lines": 693, + "kind": "cli-script", "severity": "pass", "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." } @@ -138,7 +138,7 @@ }, { "path": "tests/verify_review_studio.py", - "lines": 803, + "lines": 816, "kind": "test", "severity": "pass", "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." diff --git a/reports/architecture_maintainability.md b/reports/architecture_maintainability.md index eaeaa4cc..3ab9682b 100644 --- a/reports/architecture_maintainability.md +++ b/reports/architecture_maintainability.md @@ -33,7 +33,7 @@ No file-size hotspots found. | `scripts/yao_cli_parser.py` | `870` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `scripts/render_evidence_consistency.py` | `859` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `tests/verify_world_class_evidence_intake.py` | `842` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. | -| `tests/verify_review_studio.py` | `803` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. | +| `tests/verify_review_studio.py` | `816` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. | | `scripts/skill_report_model.py` | `800` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `scripts/build_skill_atlas.py` | `730` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `scripts/compile_skill.py` | `723` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | @@ -47,14 +47,14 @@ No file-size hotspots found. | `scripts/yao_cli_parser.py` | `870` | `internal-module` | `pass` | | `scripts/render_evidence_consistency.py` | `859` | `cli-script` | `pass` | | `tests/verify_world_class_evidence_intake.py` | `842` | `test` | `pass` | -| `tests/verify_review_studio.py` | `803` | `test` | `pass` | +| `tests/verify_review_studio.py` | `816` | `test` | `pass` | | `scripts/skill_report_model.py` | `800` | `internal-module` | `pass` | | `scripts/build_skill_atlas.py` | `730` | `cli-script` | `pass` | | `scripts/compile_skill.py` | `723` | `cli-script` | `pass` | | `scripts/optimize_description.py` | `723` | `cli-script` | `pass` | | `scripts/trust_check.py` | `714` | `internal-module` | `pass` | | `scripts/apply_adaptation.py` | `706` | `cli-script` | `pass` | -| `scripts/review_studio_layout.py` | `703` | `internal-module` | `pass` | +| `scripts/render_world_class_preflight.py` | `693` | `cli-script` | `pass` | ## Release Rule diff --git a/reports/benchmark_reproducibility.json b/reports/benchmark_reproducibility.json index a9087324..916697ae 100644 --- a/reports/benchmark_reproducibility.json +++ b/reports/benchmark_reproducibility.json @@ -3,23 +3,36 @@ "ok": true, "generated_at": "2026-06-16", "skill_dir": ".", - "commit": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "commit": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "git_status": { "available": true, - "dirty": false, - "changed_file_count": 0, - "sample": [], + "dirty": true, + "changed_file_count": 52, + "sample": [ + " M AGENTS.md", + " M references/review-studio-method.md", + " M registry/index.json", + " M registry/packages/yao-meta-skill.json", + " M reports/architecture_maintainability.json", + " M reports/architecture_maintainability.md", + " M reports/benchmark_reproducibility.json", + " M reports/benchmark_reproducibility.md", + " M reports/compiled_targets.json", + " M reports/context_budget.json", + " M reports/context_budget.md", + " M reports/context_budget_summary.json" + ], "scope": "generation-time status before this report is written" }, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf", - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "evidence_bundle_sha256": "a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -37,14 +50,15 @@ "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 52 }, "public_claim": { "ready": false, "scope": "public benchmark or world-class readiness claim", "blockers": [ + "release lock is not clean or commit is unavailable", "provider-backed model holdout evidence is incomplete", "human blind-review adjudication is incomplete", "world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)", @@ -53,10 +67,10 @@ "policy": "Local reproducibility can pass before public claims; public claims require provider evidence, human adjudication, clean release lock, accepted world-class evidence, and complete source checks." }, "release_lock": { - "ready": true, - "commit": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "ready": false, + "commit": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "status_scope": "generation-time status before this report is written", - "reason": "clean generation-time HEAD" + "reason": "working tree was dirty at generation time" }, "evidence_bundle": { "algorithm": "sha256(path,label,exists,artifact_sha256)", @@ -64,7 +78,7 @@ "existing_count": 25, "missing_count": 0, "missing_paths": [], - "sha256": "95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf" + "sha256": "a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191" }, "methodology": { "path": "reports/benchmark_methodology.md", @@ -137,8 +151,8 @@ "label": "output_execution", "path": "reports/output_execution_runs.json", "exists": true, - "bytes": 7966, - "sha256": "cefdff4fe2a5d92ab32a6985046bcfe76af6676f376f2556347aa4ca623f47c9" + "bytes": 7967, + "sha256": "dc896e2929e25d8f517ded4024f2bce12030f4be14f885f76255be887117766c" }, { "label": "blind_review", @@ -173,7 +187,7 @@ "path": "reports/security_trust_report.json", "exists": true, "bytes": 117850, - "sha256": "10abf9ec2d104908bbdfa0d7b40c04977dd4c0c2361635d17f128e4ae2f0979a" + "sha256": "8a6f0eb0c627b1b8a7ffb45fd431b678827a91590028021e145d6b60d2fc4c2e" }, { "label": "python_compatibility", @@ -187,28 +201,28 @@ "path": "reports/registry_audit.json", "exists": true, "bytes": 3183, - "sha256": "ed24d67c538e61177dc30c2a6a9ae1daca9f73db0d61312f65bd97364c49e91f" + "sha256": "bd4b1f1cd5b21d0bda736ea14db4e6839e3729f66c787ef3be97619e8d069267" }, { "label": "package_verification", "path": "reports/package_verification.json", "exists": true, "bytes": 19338, - "sha256": "33b28ae80672acda503ef7fe032cecb5f80135f47e558b865da3bdbbd6a39250" + "sha256": "3fe267c06ebba290d312575d3042fc8a1125ebe7c07c1c555eae2948dbf845d0" }, { "label": "install_simulation", "path": "reports/install_simulation.json", "exists": true, "bytes": 8604, - "sha256": "60ca2069feba8af6f011888735eab5600d32c513d48f18cb960609850b9f312f" + "sha256": "0a127a000c337bf9d180b30ac7ff4fefd6a3392aa7c4c4b822f6b3727fbcfd50" }, { "label": "skill_os2_audit", "path": "reports/skill_os2_audit.json", "exists": true, "bytes": 14310, - "sha256": "d42e33630eb3fea284fb521c0dc33dca3d37bdcd8adec0518f77297098fdc0c1" + "sha256": "de180d2b67b017d5654e10e34d58d56ab0e4861968e282f34777f3677522027e" }, { "label": "world_class_evidence_plan", @@ -235,8 +249,8 @@ "label": "world_class_evidence_preflight", "path": "reports/world_class_evidence_preflight.json", "exists": true, - "bytes": 36073, - "sha256": "5576411ceb4aeb9d0c2fd1ecbcd78d08f49c62149615c20cc77d4ab5db1736cc" + "bytes": 36067, + "sha256": "1e6c66fc5e3ceec580313f3dbdc7e26d3526832c591c2c4281f52779d2f6242d" }, { "label": "world_class_submission_review", diff --git a/reports/benchmark_reproducibility.md b/reports/benchmark_reproducibility.md index 87b8c7c7..efda5b1c 100644 --- a/reports/benchmark_reproducibility.md +++ b/reports/benchmark_reproducibility.md @@ -1,19 +1,19 @@ # Benchmark Reproducibility Generated at: `2026-06-16` -Commit: `c325269f10a7c691646aefc5f48ca73e0a94542f` -Working tree dirty at generation: `false` -Evidence bundle SHA256: `95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf` +Commit: `5338a770167da589a140c71ff0cd589ee5a3e8f4` +Working tree dirty at generation: `true` +Evidence bundle SHA256: `a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191` ## Summary - reproducibility ready: `true` -- release lock ready: `true` +- release lock ready: `false` - methodology complete: `true` - required artifacts: `25` - missing artifacts: `0` -- source contract sha256: `f7b3e6749356` -- archive sha256: `c26d85598e49` +- source contract sha256: `1b03b1e4bab9` +- archive sha256: `38e8e607c1ed` - output cases: `5` - disclosed failure cases: `3` - reproduction commands: `23` @@ -22,8 +22,8 @@ Evidence bundle SHA256: `95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5 - world-class ready: `false` - world-class source checks: `6` pass / `13` total; `7` blocked - public claim ready: `false` -- public claim blockers: `4` -- changed files at generation: `0` +- public claim blockers: `5` +- changed files at generation: `52` This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete. The git commit is generation-time context; the evidence bundle SHA is the durable anchor for the artifacts listed below. @@ -35,6 +35,7 @@ This report proves local benchmark reproducibility only. It keeps external provi | Blocker | | --- | +| release lock is not clean or commit is unavailable | | provider-backed model holdout evidence is incomplete | | human blind-review adjudication is incomplete | | world-class evidence is not accepted yet (4 open gaps, 4 ledger pending) | @@ -42,15 +43,15 @@ This report proves local benchmark reproducibility only. It keeps external provi ## Release Lock -- ready: `true` -- reason: clean generation-time HEAD +- ready: `false` +- reason: working tree was dirty at generation time - status scope: generation-time status before this report is written ## Evidence Bundle - algorithm: `sha256(path,label,exists,artifact_sha256)` - artifacts: `25` / `25` -- sha256: `95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf` +- sha256: `a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191` ## Methodology Sections @@ -72,21 +73,21 @@ This report proves local benchmark reproducibility only. It keeps external provi | output_cases | `evals/output/cases.jsonl` | present | `a6ae96857116` | | output_schema | `evals/output/schema.json` | present | `8ee340c95064` | | output_scorecard | `reports/output_quality_scorecard.json` | present | `0806258a8e08` | -| output_execution | `reports/output_execution_runs.json` | present | `cefdff4fe2a5` | +| output_execution | `reports/output_execution_runs.json` | present | `dc896e2929e2` | | blind_review | `reports/output_blind_review_pack.json` | present | `bbe2db8ec277` | | review_adjudication | `reports/output_review_adjudication.json` | present | `bb8c72a9291e` | | trigger_scorecard | `reports/route_scorecard.json` | present | `c164e83e36d0` | | runtime_conformance | `reports/conformance_matrix.json` | present | `97f9ba949c23` | -| trust_report | `reports/security_trust_report.json` | present | `10abf9ec2d10` | +| trust_report | `reports/security_trust_report.json` | present | `8a6f0eb0c627` | | python_compatibility | `reports/python_compatibility.json` | present | `364e9bbc8dd4` | -| registry_audit | `reports/registry_audit.json` | present | `ed24d67c538e` | -| package_verification | `reports/package_verification.json` | present | `33b28ae80672` | -| install_simulation | `reports/install_simulation.json` | present | `60ca2069feba` | -| skill_os2_audit | `reports/skill_os2_audit.json` | present | `d42e33630eb3` | +| registry_audit | `reports/registry_audit.json` | present | `bd4b1f1cd5b2` | +| package_verification | `reports/package_verification.json` | present | `3fe267c06ebb` | +| install_simulation | `reports/install_simulation.json` | present | `0a127a000c33` | +| skill_os2_audit | `reports/skill_os2_audit.json` | present | `de180d2b67b0` | | world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `38e95161404d` | | world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `d08019f31a78` | | world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `4a9119aba62b` | -| world_class_evidence_preflight | `reports/world_class_evidence_preflight.json` | present | `5576411ceb4a` | +| world_class_evidence_preflight | `reports/world_class_evidence_preflight.json` | present | `1e6c66fc5e3c` | | world_class_submission_review | `reports/world_class_submission_review.json` | present | `6aaf868374ba` | | world_class_operator_runbook | `reports/world_class_operator_runbook.json` | present | `40d179696445` | | world_class_operator_runbook_markdown | `reports/world_class_operator_runbook.md` | present | `ebfa3a4b5280` | diff --git a/reports/compiled_targets.json b/reports/compiled_targets.json index 0fbe6c97..eeb3e744 100644 --- a/reports/compiled_targets.json +++ b/reports/compiled_targets.json @@ -272,6 +272,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -325,7 +326,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -596,7 +597,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -850,7 +851,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -1189,6 +1190,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -1242,7 +1244,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -1513,7 +1515,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -1767,7 +1769,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -2106,6 +2108,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -2159,7 +2162,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -2430,7 +2433,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -2677,7 +2680,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -3007,6 +3010,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -3060,7 +3064,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -3331,7 +3335,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -3578,7 +3582,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -3908,6 +3912,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -3961,7 +3966,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -4232,7 +4237,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -4483,7 +4488,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ diff --git a/reports/context_budget.json b/reports/context_budget.json index 53f3f56d..56194176 100644 --- a/reports/context_budget.json +++ b/reports/context_budget.json @@ -6,20 +6,20 @@ "context_budget_tier": "production", "context_budget_limit": 1000, "skill_body_tokens": 797, - "other_text_tokens": 1035917, + "other_text_tokens": 1037197, "estimated_initial_load_tokens": 990, - "estimated_total_text_tokens": 1036714, - "deferred_resource_tokens": 478069, + "estimated_total_text_tokens": 1037994, + "deferred_resource_tokens": 478929, "deferred_resource_warn_threshold": 120000, "deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 423106, + "estimated_tokens": 419118, "file_count": 121 }, { "path": "references", - "estimated_tokens": 27991, + "estimated_tokens": 28099, "file_count": 35 }, { @@ -29,14 +29,14 @@ }, { "path": "assets", - "estimated_tokens": 5137, - "file_count": 2 + "estimated_tokens": 9877, + "file_count": 3 } ], "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 423106, + "estimated_tokens": 419118, "file_count": 121 } ], @@ -59,14 +59,14 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 423106, + "estimated_tokens": 419118, "file_count": 121, "rationale": "Script resources are deterministic deferred tools, not initial-load prompt context." } ], "summary": "Large deferred resources are indexed and backed by evidence." }, - "relevant_file_count": 627, + "relevant_file_count": 628, "unused_resource_dirs": [], "quality_signal_points": 130, "quality_density": 131.3 diff --git a/reports/context_budget.md b/reports/context_budget.md index 4f06798a..4ff8d750 100644 --- a/reports/context_budget.md +++ b/reports/context_budget.md @@ -2,7 +2,7 @@ | Target | Path | Tier | Limit | Initial | SKILL | Deferred | Resource Governance | Large Deferred Dirs | Quality Density | Unused Dirs | Status | | --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | ---: | --- | --- | -| root | `.` | `production` | 1000 | 990 | 797 | 478069 | `governed` | scripts:423106 | 131.3 | - | ok | +| root | `.` | `production` | 1000 | 990 | 797 | 478929 | `governed` | scripts:419118 | 131.3 | - | ok | | complex-release-orchestrator | `examples/complex-release-orchestrator/generated-skill` | `production` | 1000 | 790 | 718 | 1657 | `not-required` | - | 164.6 | - | ok | | governed-incident-command | `examples/governed-incident-command/generated-skill` | `production` | 1000 | 760 | 658 | 1030 | `not-required` | - | 171.1 | - | ok | diff --git a/reports/context_budget_summary.json b/reports/context_budget_summary.json index 284b478c..fb75396d 100644 --- a/reports/context_budget_summary.json +++ b/reports/context_budget_summary.json @@ -8,11 +8,11 @@ "budget_limit": 1000, "initial_tokens": 990, "skill_body_tokens": 797, - "deferred_resource_tokens": 478069, + "deferred_resource_tokens": 478929, "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 423106, + "estimated_tokens": 419118, "file_count": 121 } ], @@ -35,7 +35,7 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 423106, + "estimated_tokens": 419118, "file_count": 121, "rationale": "Script resources are deterministic deferred tools, not initial-load prompt context." } diff --git a/reports/evidence_consistency.json b/reports/evidence_consistency.json index b636014a..2e22dbce 100644 --- a/reports/evidence_consistency.json +++ b/reports/evidence_consistency.json @@ -189,12 +189,12 @@ "status": "pass", "expected": { "status": "pass", - "detail": "initial load 990/1000; deferred 478069/120000; top deferred scripts 423106; resource governance governed; quality density 131.3", + "detail": "initial load 990/1000; deferred 478929/120000; top deferred scripts 419118; resource governance governed; quality density 131.3", "evidence": "reports/context_budget.json" }, "actual": { "status": "pass", - "detail": "initial load 990/1000; deferred 478069/120000; top deferred scripts 423106; resource governance governed; quality density 131.3", + "detail": "initial load 990/1000; deferred 478929/120000; top deferred scripts 419118; resource governance governed; quality density 131.3", "evidence": "reports/context_budget.json" }, "paths": [ @@ -207,8 +207,8 @@ "key": "benchmark-release-lock-self-consistency", "label": "Benchmark release lock matches git dirty state", "status": "pass", - "expected": true, - "actual": true, + "expected": false, + "actual": false, "paths": [ "reports/benchmark_reproducibility.json" ], @@ -248,8 +248,8 @@ "key": "overview-benchmark-commit", "label": "overview embeds the benchmark commit", "status": "pass", - "expected": "c325269f10a7c691646aefc5f48ca73e0a94542f", - "actual": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "expected": "5338a770167da589a140c71ff0cd589ee5a3e8f4", + "actual": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "paths": [ "reports/benchmark_reproducibility.json", "reports/skill-overview.json" @@ -261,30 +261,30 @@ "label": "overview embeds benchmark summary fields", "status": "pass", "expected": { - "release_lock_ready": true, + "release_lock_ready": false, "required_artifact_count": 25, "missing_artifact_count": 0, - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "world_class_ledger_pending_count": 4, "world_class_source_check_count": 13, "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4 + "public_claim_blocker_count": 5 }, "actual": { - "release_lock_ready": true, + "release_lock_ready": false, "required_artifact_count": 25, "missing_artifact_count": 0, - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "world_class_ledger_pending_count": 4, "world_class_source_check_count": 13, "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4 + "public_claim_blocker_count": 5 }, "paths": [ "reports/benchmark_reproducibility.json", @@ -394,8 +394,8 @@ "key": "interpretation-benchmark-commit", "label": "interpretation embeds the benchmark commit", "status": "pass", - "expected": "c325269f10a7c691646aefc5f48ca73e0a94542f", - "actual": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "expected": "5338a770167da589a140c71ff0cd589ee5a3e8f4", + "actual": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "paths": [ "reports/benchmark_reproducibility.json", "reports/skill-interpretation.json" @@ -407,30 +407,30 @@ "label": "interpretation embeds benchmark summary fields", "status": "pass", "expected": { - "release_lock_ready": true, + "release_lock_ready": false, "required_artifact_count": 25, "missing_artifact_count": 0, - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "world_class_ledger_pending_count": 4, "world_class_source_check_count": 13, "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4 + "public_claim_blocker_count": 5 }, "actual": { - "release_lock_ready": true, + "release_lock_ready": false, "required_artifact_count": 25, "missing_artifact_count": 0, - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "world_class_ledger_pending_count": 4, "world_class_source_check_count": 13, "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4 + "public_claim_blocker_count": 5 }, "paths": [ "reports/benchmark_reproducibility.json", @@ -598,7 +598,7 @@ "label": "上下文成本", "score": 42, "reasons": [ - "入口约 360 个词/字,references 约 16770 个词/字。", + "入口约 360 个词/字,references 约 16828 个词/字。", "分数越高代表上下文成本越低。", "上下文成本偏高,建议压缩入口或拆分 references。" ] @@ -662,7 +662,7 @@ "label": "上下文成本", "score": 42, "reasons": [ - "入口约 360 个词/字,references 约 16770 个词/字。", + "入口约 360 个词/字,references 约 16828 个词/字。", "分数越高代表上下文成本越低。", "上下文成本偏高,建议压缩入口或拆分 references。" ] @@ -894,7 +894,7 @@ "已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。" ], "gaps": [ - "上下文成本需要补强:入口约 360 个词/字,references 约 16770 个词/字。" + "上下文成本需要补强:入口约 360 个词/字,references 约 16828 个词/字。" ], "recommendations": [ "先改触发边界,再扩展工作流。", @@ -942,7 +942,7 @@ "已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。" ], "gaps": [ - "上下文成本需要补强:入口约 360 个词/字,references 约 16770 个词/字。" + "上下文成本需要补强:入口约 360 个词/字,references 约 16828 个词/字。" ], "recommendations": [ "先改触发边界,再扩展工作流。", @@ -2286,8 +2286,8 @@ "`3` warnings", "`35` declared internal modules", "`86 / 86` CLI help smoke checks passing across `121` scripts", - "`645` zip entries", - "archive with `645` entries", + "`646` zip entries", + "archive with `646` entries", "`12` installer permission checks enforced", "`0` permission failures", "`25` required artifacts", diff --git a/reports/install_simulation.json b/reports/install_simulation.json index 10e332bc..967d999f 100644 --- a/reports/install_simulation.json +++ b/reports/install_simulation.json @@ -8,7 +8,7 @@ "installed_skill_dir": "dist/install-simulation/simulate-yao-meta-skill/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 645, + "archive_entry_count": 646, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, diff --git a/reports/output_execution_runs.json b/reports/output_execution_runs.json index 2f4d9645..41f2ada6 100644 --- a/reports/output_execution_runs.json +++ b/reports/output_execution_runs.json @@ -34,7 +34,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 27.0, + "duration_ms": 26.75, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -62,7 +62,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.06, + "duration_ms": 25.99, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -85,7 +85,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.41, + "duration_ms": 26.29, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -113,7 +113,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.29, + "duration_ms": 29.72, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -136,7 +136,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.36, + "duration_ms": 29.38, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -164,7 +164,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.42, + "duration_ms": 37.41, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -187,7 +187,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.76, + "duration_ms": 26.96, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -214,7 +214,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.86, + "duration_ms": 26.52, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -237,7 +237,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.13, + "duration_ms": 27.23, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -266,7 +266,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.58, + "duration_ms": 26.38, "provider": "local-output-eval-runner", "model": "", "usage": { diff --git a/reports/output_execution_runs.md b/reports/output_execution_runs.md index a89f88e7..3db2c164 100644 --- a/reports/output_execution_runs.md +++ b/reports/output_execution_runs.md @@ -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 | 27.0 | 33 | 0.0 | pass | -| skill-package-contract | with_skill | command | local-output-eval-runner | 28.06 | 73 | 100.0 | pass | -| output-eval-expectation | baseline | command | local-output-eval-runner | 29.41 | 36 | 0.0 | pass | -| output-eval-expectation | with_skill | command | local-output-eval-runner | 29.29 | 80 | 100.0 | pass | -| ir-before-packaging | baseline | command | local-output-eval-runner | 30.36 | 33 | 0.0 | pass | -| ir-before-packaging | with_skill | command | local-output-eval-runner | 29.42 | 80 | 100.0 | pass | -| near-neighbor-boundary | baseline | command | local-output-eval-runner | 29.76 | 36 | 0.0 | pass | -| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 30.86 | 65 | 100.0 | pass | -| file-backed-governed-package | baseline | command | local-output-eval-runner | 30.13 | 37 | 0.0 | pass | -| file-backed-governed-package | with_skill | command | local-output-eval-runner | 29.58 | 98 | 100.0 | pass | +| skill-package-contract | baseline | command | local-output-eval-runner | 26.75 | 33 | 0.0 | pass | +| skill-package-contract | with_skill | command | local-output-eval-runner | 25.99 | 73 | 100.0 | pass | +| output-eval-expectation | baseline | command | local-output-eval-runner | 26.29 | 36 | 0.0 | pass | +| output-eval-expectation | with_skill | command | local-output-eval-runner | 29.72 | 80 | 100.0 | pass | +| ir-before-packaging | baseline | command | local-output-eval-runner | 29.38 | 33 | 0.0 | pass | +| ir-before-packaging | with_skill | command | local-output-eval-runner | 37.41 | 80 | 100.0 | pass | +| near-neighbor-boundary | baseline | command | local-output-eval-runner | 26.96 | 36 | 0.0 | pass | +| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 26.52 | 65 | 100.0 | pass | +| file-backed-governed-package | baseline | command | local-output-eval-runner | 27.23 | 37 | 0.0 | pass | +| file-backed-governed-package | with_skill | command | local-output-eval-runner | 26.38 | 98 | 100.0 | pass | ## Next Fixes diff --git a/reports/package_verification.json b/reports/package_verification.json index 834663a4..3653848c 100644 --- a/reports/package_verification.json +++ b/reports/package_verification.json @@ -8,8 +8,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", - "archive_entry_count": 645, + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", + "archive_entry_count": 646, "failure_count": 0, "warning_count": 0 }, diff --git a/reports/package_verification.md b/reports/package_verification.md index 7a679595..38993f02 100644 --- a/reports/package_verification.md +++ b/reports/package_verification.md @@ -4,7 +4,7 @@ - Package directory: `dist` - Targets: `4 / 4` adapters present - Archive present: `True` -- Archive SHA256: `c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6` +- Archive SHA256: `38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca` - Failures: `0` - Warnings: `0` diff --git a/reports/registry_audit.json b/reports/registry_audit.json index 2e97db00..8a45f874 100644 --- a/reports/registry_audit.json +++ b/reports/registry_audit.json @@ -21,8 +21,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, "compatibility": { "openai": "pass", @@ -53,7 +53,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096", "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": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] }, diff --git a/reports/registry_audit.md b/reports/registry_audit.md index b7b2f47b..faaa67f2 100644 --- a/reports/registry_audit.md +++ b/reports/registry_audit.md @@ -6,8 +6,8 @@ - Maturity: `governed` - Owner: `Yao Team` - License: `MIT` -- Package SHA256: `f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc` -- Archive SHA256: `c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6` +- Package SHA256: `1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60` +- Archive SHA256: `d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096` - Install simulated: `True` ## Compatibility diff --git a/reports/review-studio.html b/reports/review-studio.html index e1619029..04da47f0 100644 --- a/reports/review-studio.html +++ b/reports/review-studio.html @@ -209,23 +209,49 @@ gap: 8px; } .action-command-details, - .action-runbook-details { + .action-runbook-details, + .action-collection-details { border-top: 1px solid var(--line); padding-top: 10px; display: grid; gap: 8px; } .action-command-details summary, - .action-runbook-details summary { + .action-runbook-details summary, + .action-collection-details summary { cursor: pointer; color: var(--ink); font-size: 14px; font-weight: 500; } .action-command-details[open] summary, - .action-runbook-details[open] summary { + .action-runbook-details[open] summary, + .action-collection-details[open] summary { margin-bottom: 8px; } + .action-collection-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 12px; + } + .action-collection-grid section { + border-top: 1px solid var(--line); + padding-top: 8px; + display: grid; + gap: 6px; + } + .action-collection-grid ul, + .action-collection-grid ol { + margin: 0; + padding-left: 18px; + display: grid; + gap: 5px; + } + .action-collection-grid li { + color: var(--muted); + font-size: 13px; + overflow-wrap: anywhere; + } .action-evidence-item dl { display: grid; grid-template-columns: 76px minmax(0, 1fr); @@ -662,7 +688,7 @@ font-size: 13px; } @media (max-width: 980px) { - .metrics, .gates, .twocol, .actions-grid, .annotations-grid, .action-evidence-grid, .action-evidence-item dl, .output-review-grid, .output-review-steps, .world-evidence-grid, .world-evidence-columns, .world-source-check, .world-intake-grid, .world-intake-steps, .waiver-candidate-grid, .waiver-card dl, .kv-grid { grid-template-columns: 1fr; } + .metrics, .gates, .twocol, .actions-grid, .annotations-grid, .action-evidence-grid, .action-evidence-item dl, .action-collection-grid, .output-review-grid, .output-review-steps, .world-evidence-grid, .world-evidence-columns, .world-source-check, .world-intake-grid, .world-intake-steps, .waiver-candidate-grid, .waiver-card dl, .kv-grid { grid-template-columns: 1fr; } main { padding: 32px 18px 60px; } nav { justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; } nav a { flex: 0 0 auto; } @@ -685,12 +711,12 @@

核心指标

-
Skill IR2.0.0

5 targets in platform-neutral contract

Compiler5/5

target contracts compiled from Skill IR

Output Delta100.0

5 cases; 1 file-backed

Exec Runs10

command 10; model 0; recorded 0

Blind A/B5

review pairs hide baseline vs with-skill labels

Review Kit0/5

pending 5; answer key hidden

Review A/B0/5

adjudication decisions; pending 5

Public Claimblocked

4 blockers; local reproducible true

Blueprint21/21

2.0 coverage; extensions partial 0, planned 0; evidence pending 4

Runtime5/5

target conformance pass rate

Perm Probe4/4

0 native; 4 installer-enforced

Trust0

121 scripts scanned; secrets found

Py Compat0

193 files scanned for Python 3.11

Arch Debt0

899 largest lines; 9 watchlist; 68 CLI handlers; 18 in entrypoint

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Daily Ops5

proposal-review; approval 0; release lock true

Weekly Queue5

curator-review; ready 1; top score 88

Waivers0

0 gates covered; human risk decisions

Intake4/4

0 valid submissions; 0 invalid

Claim Guard0

180 public surfaces scanned

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

645 zip entries; package verification

Installpass

4 adapters; 12 permissions enforced; 0 permission failures

Upgrademinor

declared minor; 0 breaking changes

+
Skill IR2.0.0

5 targets in platform-neutral contract

Compiler5/5

target contracts compiled from Skill IR

Output Delta100.0

5 cases; 1 file-backed

Exec Runs10

command 10; model 0; recorded 0

Blind A/B5

review pairs hide baseline vs with-skill labels

Review Kit0/5

pending 5; answer key hidden

Review A/B0/5

adjudication decisions; pending 5

Public Claimblocked

5 blockers; local reproducible true

Blueprint21/21

2.0 coverage; extensions partial 0, planned 0; evidence pending 4

Runtime5/5

target conformance pass rate

Perm Probe4/4

0 native; 4 installer-enforced

Trust0

121 scripts scanned; secrets found

Py Compat0

193 files scanned for Python 3.11

Arch Debt0

899 largest lines; 9 watchlist; 68 CLI handlers; 18 in entrypoint

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Daily Ops5

proposal-review; approval 0; release lock false

Weekly Queue5

curator-review; ready 1; top score 88

Waivers0

0 gates covered; human risk decisions

Intake4/4

0 valid submissions; 0 invalid

Claim Guard0

180 public surfaces scanned

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

646 zip entries; package verification

Installpass

4 adapters; 12 permissions enforced; 0 permission failures

Upgrademinor

declared minor; 0 breaking changes

审查闸门

-
通过

意图画布

intent confidence 100/100; Intent is clear enough to package the first routeable version.

reports/intent-confidence.json 证据
通过

触发实验

13 trigger cases; 0 misroutes; 0 ambiguous

reports/route_scorecard.json 证据
关注

输出实验

5/5 cases; with-skill 100.0; baseline 0.0; file-backed 1; near-neighbor 1; blind A/B 5; exec 10; command 10; model 0; recorded 0; reviewed 0/5; review pending 5

reports/output_quality_scorecard.json 证据
通过

上下文

initial load 990/1000; deferred 478069/120000; top deferred scripts 423106; resource governance governed; quality density 131.3

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

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

reports/security_trust_report.json 证据
通过

Python 兼容

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

reports/python_compatibility.json 证据
通过

架构维护

190 Python files; 0 hotspots; 9 watchlist files; 0 blockers; largest 899 lines; 68 CLI handlers; 18 in entrypoint

reports/architecture_maintainability.json 证据
通过

权限批准

3/3 permissions approved; gaps 0; required file_write, network, subprocess

reports/security_trust_report.json + security/permission_policy.json 证据
通过

权限探针

4/4 targets probed; native 0; metadata fallback 4; installer 4; residual risks 4

reports/runtime_permission_probes.json 证据
通过

组合治理

12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues

reports/skill_atlas.json 证据
通过

运营回路

1 metadata events; adoption 0; missed 0; bad-output 0; risk low; daily proposals 5; daily decision proposal-review; daily release lock true; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock true

reports/adoption_drift_report.json + reports/skillops/daily + reports/skillops/weekly 证据
关注

人工批准

0 active waivers; 1 warning gates still need reviewer decision

reports/review_waivers.json 证据
关注

世界证据

4 pending world-class evidence entries; 1 human pending; 3 external pending; source checks 6/13 pass; 7 blocked; overclaim guard true

reports/world_class_evidence_ledger.json 证据
通过

注册审计

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

reports/registry_audit.json + reports/install_simulation.json 证据
通过

发布路线

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

reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md 证据
+
通过

意图画布

intent confidence 100/100; Intent is clear enough to package the first routeable version.

reports/intent-confidence.json 证据
通过

触发实验

13 trigger cases; 0 misroutes; 0 ambiguous

reports/route_scorecard.json 证据
关注

输出实验

5/5 cases; with-skill 100.0; baseline 0.0; file-backed 1; near-neighbor 1; blind A/B 5; exec 10; command 10; model 0; recorded 0; reviewed 0/5; review pending 5

reports/output_quality_scorecard.json 证据
通过

上下文

initial load 990/1000; deferred 478929/120000; top deferred scripts 419118; resource governance governed; quality density 131.3

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

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

reports/security_trust_report.json 证据
通过

Python 兼容

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

reports/python_compatibility.json 证据
通过

架构维护

190 Python files; 0 hotspots; 9 watchlist files; 0 blockers; largest 899 lines; 68 CLI handlers; 18 in entrypoint

reports/architecture_maintainability.json 证据
通过

权限批准

3/3 permissions approved; gaps 0; required file_write, network, subprocess

reports/security_trust_report.json + security/permission_policy.json 证据
通过

权限探针

4/4 targets probed; native 0; metadata fallback 4; installer 4; residual risks 4

reports/runtime_permission_probes.json 证据
通过

组合治理

12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues

reports/skill_atlas.json 证据
通过

运营回路

1 metadata events; adoption 0; missed 0; bad-output 0; risk low; daily proposals 5; daily decision proposal-review; daily release lock false; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock false

reports/adoption_drift_report.json + reports/skillops/daily + reports/skillops/weekly 证据
关注

人工批准

0 active waivers; 1 warning gates still need reviewer decision

reports/review_waivers.json 证据
关注

世界证据

4 pending world-class evidence entries; 1 human pending; 3 external pending; source checks 6/13 pass; 7 blocked; overclaim guard true

reports/world_class_evidence_ledger.json 证据
通过

注册审计

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

reports/registry_audit.json + reports/install_simulation.json 证据
通过

发布路线

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

reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md 证据
@@ -700,7 +726,7 @@

修复动作

-
关注

输出实验

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

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

人工批准

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

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

世界证据

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

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

证据采集

以下条目仍需真实外部或人工证据;提交文件、校验命令和阻断检查必须同时闭环。

pending · external

Provider Holdout

model-executed 0; token-observed 0

提交
evidence/world_class/submissions/provider-holdout.json
模板
evidence/world_class/templates/provider-holdout.intake.json
阻断
2 blocked / 1 pass
下一步
Run provider-backed holdout cases with real credentials and commit only aggregate evidence.
阻断检查
  • Provider model runmodel_executed_count: 0 / >0Run provider-backed output-exec with real credentials.
  • Token usage observedtoken_observed_count: 0 / >0Provider execution should return non-estimated token usage.
操作命令
  • 准备提交python3 scripts/yao.py world-class-submission-kit . --evidence-key provider-holdout --output-dir evidence/world_class/submissions
  • 校验入口python3 scripts/yao.py world-class-intake . --submissions-dir evidence/world_class/submissions
  • 审查提交python3 scripts/yao.py world-class-submission-review . --submissions-dir evidence/world_class/submissions
  • 刷新台账python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions
首要步骤
  1. YAO_OUTPUT_EVAL_MODEL=gpt-4.1-mini OPENAI_API_KEY=<redacted> python3 scripts/yao.py output-exec --provider-runner openai --timeout-seconds 60
  2. python3 scripts/yao.py skill-os2-audit . --generated-at <YYYY-MM-DD>
  3. Copy evidence/world_class/templates/provider-holdout.intake.json to evidence/world_class/submissions/provider-holdout.json and fill only real evidence fields.
pending · human

Human Adjudication

0/5 decisions; pending 5

提交
evidence/world_class/submissions/human-adjudication.json
模板
evidence/world_class/templates/human-adjudication.intake.json
阻断
2 blocked / 2 pass
下一步
Record real A/B choices in the decision template, then regenerate adjudication.
阻断检查
  • No pending decisionspending_count: 5 / ==0Record a reviewer choice for every pair.
  • Judgments completejudgment_count: 0 / ==pair_countEvery pair needs one valid human judgment.
操作命令
  • 准备提交python3 scripts/yao.py world-class-submission-kit . --evidence-key human-adjudication --output-dir evidence/world_class/submissions
  • 校验入口python3 scripts/yao.py world-class-intake . --submissions-dir evidence/world_class/submissions
  • 审查提交python3 scripts/yao.py world-class-submission-review . --submissions-dir evidence/world_class/submissions
  • 刷新台账python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions
首要步骤
  1. python3 scripts/yao.py output-review-kit --write-template
  2. Open reports/output_review_kit.md and choose A or B for each pair without opening the answer key.
  3. python3 scripts/adjudicate_output_review.py --write-template
pending · external

Native Permission Enforcement

native-enforced targets 0; installer-enforced targets 4

提交
evidence/world_class/submissions/native-permission-enforcement.json
模板
evidence/world_class/templates/native-permission-enforcement.intake.json
阻断
1 blocked / 2 pass
下一步
Integrate a real target-client or external installer runtime guard before claiming native permission enforcement.
阻断检查
  • Native enforcementnative_enforcement_count: 0 / >0Collect real target-client or external runtime guard proof.
操作命令
  • 准备提交python3 scripts/yao.py world-class-submission-kit . --evidence-key native-permission-enforcement --output-dir evidence/world_class/submissions
  • 校验入口python3 scripts/yao.py world-class-intake . --submissions-dir evidence/world_class/submissions
  • 审查提交python3 scripts/yao.py world-class-submission-review . --submissions-dir evidence/world_class/submissions
  • 刷新台账python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions
首要步骤
  1. Implement or connect a real target client or external installer runtime guard that blocks undeclared network, file_write, or subprocess capabilities.
  2. Update the generated target adapter only when the guard is actually enforced by that target.
  3. python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip
pending · external

Native Client Telemetry

external source events 0; adoption samples 0

提交
evidence/world_class/submissions/native-client-telemetry.json
模板
evidence/world_class/templates/native-client-telemetry.intake.json
阻断
2 blocked / 1 pass
下一步
Install a real client against the native host and import production metadata-only events.
阻断检查
  • External eventsexternal_source_events: 0 / >0Import at least one metadata-only event from a real client.
  • Adoption sampleadoption_sample_count: 0 / >0Telemetry must include adoption outcome evidence.
操作命令
  • 准备提交python3 scripts/yao.py world-class-submission-kit . --evidence-key native-client-telemetry --output-dir evidence/world_class/submissions
  • 校验入口python3 scripts/yao.py world-class-intake . --submissions-dir evidence/world_class/submissions
  • 审查提交python3 scripts/yao.py world-class-submission-review . --submissions-dir evidence/world_class/submissions
  • 刷新台账python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions
首要步骤
  1. python3 scripts/telemetry_native_host.py . --write-launcher /tmp/yao-telemetry-host.sh --write-manifest /tmp/yao-telemetry-host.json --allowed-origin chrome-extension://<extension-id>/
  2. Install the generated native messaging manifest for the real client and send at least one accepted skill_activation or skill_output event.
  3. python3 scripts/yao.py telemetry-import . --input-jsonl .yao/telemetry_spool/external_events.jsonl
+
关注

输出实验

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

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

人工批准

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

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

世界证据

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

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

证据采集

以下条目仍需真实外部或人工证据;提交文件、校验命令和阻断检查必须同时闭环。

pending · external

Provider Holdout

model-executed 0; token-observed 0

提交
evidence/world_class/submissions/provider-holdout.json
模板
evidence/world_class/templates/provider-holdout.intake.json
阻断
2 blocked / 1 pass
下一步
Run provider-backed holdout cases with real credentials and commit only aggregate evidence.
阻断检查
  • Provider model runmodel_executed_count: 0 / >0Run provider-backed output-exec with real credentials.
  • Token usage observedtoken_observed_count: 0 / >0Provider execution should return non-estimated token usage.
操作命令
  • 准备提交python3 scripts/yao.py world-class-submission-kit . --evidence-key provider-holdout --output-dir evidence/world_class/submissions
  • 校验入口python3 scripts/yao.py world-class-intake . --submissions-dir evidence/world_class/submissions
  • 审查提交python3 scripts/yao.py world-class-submission-review . --submissions-dir evidence/world_class/submissions
  • 刷新台账python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions
首要步骤
  1. YAO_OUTPUT_EVAL_MODEL=gpt-4.1-mini OPENAI_API_KEY=<redacted> python3 scripts/yao.py output-exec --provider-runner openai --timeout-seconds 60
  2. python3 scripts/yao.py skill-os2-audit . --generated-at <YYYY-MM-DD>
  3. Copy evidence/world_class/templates/provider-holdout.intake.json to evidence/world_class/submissions/provider-holdout.json and fill only real evidence fields.
采集契约
来源要求
  • provider-backed model run
  • observed timing
  • observed token metadata
通过条件
  • reports/output_execution_runs.json summary.model_executed_count > 0
  • reports/output_execution_runs.json summary.timing_observed_count > 0
  • reports/output_execution_runs.json summary.token_observed_count > 0
  • reports/skill_os2_audit.json item provider-holdout status becomes pass
证据资产
  • reports/output_execution_runs.json
  • reports/output_execution_runs.md
  • reports/skill_os2_audit.json
  • evidence/world_class/intake.schema.json
  • evidence/world_class/templates/provider-holdout.intake.json
隐私边界
  • Do not commit provider credentials or environment dumps.
  • The output execution report records output hashes and aggregate run metadata, not raw provider prompts.
pending · human

Human Adjudication

0/5 decisions; pending 5

提交
evidence/world_class/submissions/human-adjudication.json
模板
evidence/world_class/templates/human-adjudication.intake.json
阻断
2 blocked / 2 pass
下一步
Record real A/B choices in the decision template, then regenerate adjudication.
阻断检查
  • No pending decisionspending_count: 5 / ==0Record a reviewer choice for every pair.
  • Judgments completejudgment_count: 0 / ==pair_countEvery pair needs one valid human judgment.
操作命令
  • 准备提交python3 scripts/yao.py world-class-submission-kit . --evidence-key human-adjudication --output-dir evidence/world_class/submissions
  • 校验入口python3 scripts/yao.py world-class-intake . --submissions-dir evidence/world_class/submissions
  • 审查提交python3 scripts/yao.py world-class-submission-review . --submissions-dir evidence/world_class/submissions
  • 刷新台账python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions
首要步骤
  1. python3 scripts/yao.py output-review-kit --write-template
  2. Open reports/output_review_kit.md and choose A or B for each pair without opening the answer key.
  3. python3 scripts/adjudicate_output_review.py --write-template
采集契约
来源要求
  • real reviewer identity
  • blind A/B decisions
  • answer key unopened until decisions exist
通过条件
  • reports/output_review_adjudication.json summary.pending_count == 0
  • reports/output_review_adjudication.json summary.judgment_count == summary.pair_count
  • reports/output_review_adjudication.json summary.invalid_decision_count == 0
  • reports/skill_os2_audit.json item human-adjudication status becomes pass
证据资产
  • reports/output_blind_review_pack.md
  • reports/output_review_kit.md
  • reports/output_review_decisions.json
  • reports/output_review_adjudication.json
  • reports/output_review_adjudication.md
隐私边界
  • Reviewer decisions should not include raw user data or private customer detail.
  • The decision importer rejects raw prompt, output, transcript, message, and answer-key fields.
  • Keep the answer key separate until after decisions are recorded.
pending · external

Native Permission Enforcement

native-enforced targets 0; installer-enforced targets 4

提交
evidence/world_class/submissions/native-permission-enforcement.json
模板
evidence/world_class/templates/native-permission-enforcement.intake.json
阻断
1 blocked / 2 pass
下一步
Integrate a real target-client or external installer runtime guard before claiming native permission enforcement.
阻断检查
  • Native enforcementnative_enforcement_count: 0 / >0Collect real target-client or external runtime guard proof.
操作命令
  • 准备提交python3 scripts/yao.py world-class-submission-kit . --evidence-key native-permission-enforcement --output-dir evidence/world_class/submissions
  • 校验入口python3 scripts/yao.py world-class-intake . --submissions-dir evidence/world_class/submissions
  • 审查提交python3 scripts/yao.py world-class-submission-review . --submissions-dir evidence/world_class/submissions
  • 刷新台账python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions
首要步骤
  1. Implement or connect a real target client or external installer runtime guard that blocks undeclared network, file_write, or subprocess capabilities.
  2. Update the generated target adapter only when the guard is actually enforced by that target.
  3. python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip
采集契约
来源要求
  • real target client or external installer runtime guard
  • native enforcement flag or externally accepted guard proof
  • residual risk retained for fallback targets
通过条件
  • reports/runtime_permission_probes.json summary.native_enforcement_count > 0
  • reports/runtime_permission_probes.json summary.failure_count == 0
  • reports/runtime_permission_probes.json summary.installer_enforcement_pass_count records local installer enforcement but does not replace native evidence
  • reports/skill_os2_audit.json item native-permission-enforcement status becomes pass
证据资产
  • dist/targets/*/adapter.json
  • reports/runtime_permission_probes.json
  • reports/runtime_permission_probes.md
  • reports/install_simulation.json
  • reports/install_simulation.md
隐私边界
  • Do not mark native_enforcement true for metadata-only fallbacks.
  • Keep residual risks visible for targets that still rely on operator enforcement.
pending · external

Native Client Telemetry

external source events 0; adoption samples 0

提交
evidence/world_class/submissions/native-client-telemetry.json
模板
evidence/world_class/templates/native-client-telemetry.intake.json
阻断
2 blocked / 1 pass
下一步
Install a real client against the native host and import production metadata-only events.
阻断检查
  • External eventsexternal_source_events: 0 / >0Import at least one metadata-only event from a real client.
  • Adoption sampleadoption_sample_count: 0 / >0Telemetry must include adoption outcome evidence.
操作命令
  • 准备提交python3 scripts/yao.py world-class-submission-kit . --evidence-key native-client-telemetry --output-dir evidence/world_class/submissions
  • 校验入口python3 scripts/yao.py world-class-intake . --submissions-dir evidence/world_class/submissions
  • 审查提交python3 scripts/yao.py world-class-submission-review . --submissions-dir evidence/world_class/submissions
  • 刷新台账python3 scripts/yao.py world-class-ledger . --submissions-dir evidence/world_class/submissions
首要步骤
  1. python3 scripts/telemetry_native_host.py . --write-launcher /tmp/yao-telemetry-host.sh --write-manifest /tmp/yao-telemetry-host.json --allowed-origin chrome-extension://<extension-id>/
  2. Install the generated native messaging manifest for the real client and send at least one accepted skill_activation or skill_output event.
  3. python3 scripts/yao.py telemetry-import . --input-jsonl .yao/telemetry_spool/external_events.jsonl
采集契约
来源要求
  • real external client source
  • metadata-only event
  • local-first import path
通过条件
  • reports/adoption_drift_report.json summary.source_types.external > 0
  • reports/adoption_drift_report.json summary.adoption_sample_count > 0
  • reports/skill_os2_audit.json item native-client-telemetry status becomes pass
证据资产
  • reports/adoption_drift_report.json
  • reports/adoption_drift_report.md
  • reports/telemetry_hook_recipes.json
  • scripts/telemetry_native_host.py
  • evidence/world_class/intake.schema.json
隐私边界
  • Telemetry must remain metadata-only and local-first.
  • Do not package reports/telemetry_events.jsonl or any raw prompt, output, transcript, note, or message field.
@@ -752,12 +778,12 @@
-

上下文

initial load 990/1000; deferred 478069/120000; top deferred scripts 423106; resource governance governed; quality density 131.3

+

上下文

initial load 990/1000; deferred 478929/120000; top deferred scripts 419118; resource governance governed; quality density 131.3

编译证据

Review reports/compiled_targets.md before packaging to inspect target adapter modes, generated files, preserved semantics, warnings, and unsupported features.

-

信任报告

Secret
0
脚本数
121
网络脚本
3
Help 失败
0
包体哈希
f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc
+

信任报告

Secret
0
脚本数
121
网络脚本
3
Help 失败
0
包体哈希
1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60

安全边界

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

@@ -782,14 +808,14 @@
-

运营回路

1 metadata events; adoption 0; missed 0; bad-output 0; risk low; daily proposals 5; daily decision proposal-review; daily release lock true; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock true

+

运营回路

1 metadata events; adoption 0; missed 0; bad-output 0; risk low; daily proposals 5; daily decision proposal-review; daily release lock false; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock false

漂移信号

事件数
1
采用率
0
漏触发
0
Bad Output Count
0
风险带
low
-

日常运维

决策
proposal-review
提案数
5
Approval Count
0
Pending Review Count
0
发布锁
世界级
Writes Source Files
Auto Patch Enabled
-

周度队列

决策
curator-review
Week Id
2026-W25
日报数
1
唯一机会
5
待批准复核
1
提案复核
4
Top Score
88
发布锁
Writes Source Files
Auto Patch Enabled
+

日常运维

决策
proposal-review
提案数
5
Approval Count
0
Pending Review Count
0
发布锁
世界级
Writes Source Files
Auto Patch Enabled
+

周度队列

决策
curator-review
Week Id
2026-W25
日报数
1
唯一机会
5
待批准复核
1
提案复核
4
Top Score
88
发布锁
Writes Source Files
Auto Patch Enabled
@@ -822,8 +848,8 @@
-

公开声明

本地复现
发布锁
可公开声明
声明阻断
4
Provider 证据
人审完成
世界级就绪
-

声明阻断

  • 阻断provider-backed model holdout evidence is incomplete
  • 阻断human blind-review adjudication is incomplete
  • 阻断world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)
  • 阻断world-class source checks are not all accepted (6/13 pass, 7 blocked)
+

公开声明

本地复现
发布锁
可公开声明
声明阻断
5
Provider 证据
人审完成
世界级就绪
+

声明阻断

  • 阻断release lock is not clean or commit is unavailable
  • 阻断provider-backed model holdout evidence is incomplete
  • 阻断human blind-review adjudication is incomplete
  • 阻断world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)
  • 阻断world-class source checks are not all accepted (6/13 pass, 7 blocked)
@@ -843,12 +869,12 @@

注册审计

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

-

包体元数据

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

包体元数据

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

发布路线

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

-

包体验证

目标数
4
Adapter
4
归档存在
Zip 条目
645
失败数
0
警告数
0
归档哈希
c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6
+

包体验证

目标数
4
Adapter
4
归档存在
Zip 条目
646
失败数
0
警告数
0
归档哈希
38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca
diff --git a/reports/review-studio.json b/reports/review-studio.json index 4294f439..f8c6ee04 100644 --- a/reports/review-studio.json +++ b/reports/review-studio.json @@ -43,7 +43,7 @@ "key": "context-budget", "label": "上下文", "status": "pass", - "detail": "initial load 990/1000; deferred 478069/120000; top deferred scripts 423106; resource governance governed; quality density 131.3", + "detail": "initial load 990/1000; deferred 478929/120000; top deferred scripts 419118; resource governance governed; quality density 131.3", "evidence": "reports/context_budget.json", "link": "context_budget.md" }, @@ -107,7 +107,7 @@ "key": "operations-loop", "label": "运营回路", "status": "pass", - "detail": "1 metadata events; adoption 0; missed 0; bad-output 0; risk low; daily proposals 5; daily decision proposal-review; daily release lock true; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock true", + "detail": "1 metadata events; adoption 0; missed 0; bad-output 0; risk low; daily proposals 5; daily decision proposal-review; daily release lock false; weekly queue 5 unique; weekly ready 1; weekly top 88; weekly release lock false", "evidence": "reports/adoption_drift_report.json + reports/skillops/daily + reports/skillops/weekly", "link": "adoption_drift_report.md" }, @@ -497,6 +497,28 @@ "YAO_OUTPUT_EVAL_MODEL=gpt-4.1-mini OPENAI_API_KEY= python3 scripts/yao.py output-exec --provider-runner openai --timeout-seconds 60", "python3 scripts/yao.py skill-os2-audit . --generated-at ", "Copy evidence/world_class/templates/provider-holdout.intake.json to evidence/world_class/submissions/provider-holdout.json and fill only real evidence fields." + ], + "provenance_requirements": [ + "provider-backed model run", + "observed timing", + "observed token metadata" + ], + "success_checks": [ + "reports/output_execution_runs.json summary.model_executed_count > 0", + "reports/output_execution_runs.json summary.timing_observed_count > 0", + "reports/output_execution_runs.json summary.token_observed_count > 0", + "reports/skill_os2_audit.json item provider-holdout status becomes pass" + ], + "evidence_artifacts": [ + "reports/output_execution_runs.json", + "reports/output_execution_runs.md", + "reports/skill_os2_audit.json", + "evidence/world_class/intake.schema.json", + "evidence/world_class/templates/provider-holdout.intake.json" + ], + "privacy_contract": [ + "Do not commit provider credentials or environment dumps.", + "The output execution report records output hashes and aggregate run metadata, not raw provider prompts." ] }, { @@ -560,6 +582,29 @@ "python3 scripts/yao.py output-review-kit --write-template", "Open reports/output_review_kit.md and choose A or B for each pair without opening the answer key.", "python3 scripts/adjudicate_output_review.py --write-template" + ], + "provenance_requirements": [ + "real reviewer identity", + "blind A/B decisions", + "answer key unopened until decisions exist" + ], + "success_checks": [ + "reports/output_review_adjudication.json summary.pending_count == 0", + "reports/output_review_adjudication.json summary.judgment_count == summary.pair_count", + "reports/output_review_adjudication.json summary.invalid_decision_count == 0", + "reports/skill_os2_audit.json item human-adjudication status becomes pass" + ], + "evidence_artifacts": [ + "reports/output_blind_review_pack.md", + "reports/output_review_kit.md", + "reports/output_review_decisions.json", + "reports/output_review_adjudication.json", + "reports/output_review_adjudication.md" + ], + "privacy_contract": [ + "Reviewer decisions should not include raw user data or private customer detail.", + "The decision importer rejects raw prompt, output, transcript, message, and answer-key fields.", + "Keep the answer key separate until after decisions are recorded." ] }, { @@ -615,6 +660,28 @@ "Implement or connect a real target client or external installer runtime guard that blocks undeclared network, file_write, or subprocess capabilities.", "Update the generated target adapter only when the guard is actually enforced by that target.", "python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip" + ], + "provenance_requirements": [ + "real target client or external installer runtime guard", + "native enforcement flag or externally accepted guard proof", + "residual risk retained for fallback targets" + ], + "success_checks": [ + "reports/runtime_permission_probes.json summary.native_enforcement_count > 0", + "reports/runtime_permission_probes.json summary.failure_count == 0", + "reports/runtime_permission_probes.json summary.installer_enforcement_pass_count records local installer enforcement but does not replace native evidence", + "reports/skill_os2_audit.json item native-permission-enforcement status becomes pass" + ], + "evidence_artifacts": [ + "dist/targets/*/adapter.json", + "reports/runtime_permission_probes.json", + "reports/runtime_permission_probes.md", + "reports/install_simulation.json", + "reports/install_simulation.md" + ], + "privacy_contract": [ + "Do not mark native_enforcement true for metadata-only fallbacks.", + "Keep residual risks visible for targets that still rely on operator enforcement." ] }, { @@ -678,6 +745,27 @@ "python3 scripts/telemetry_native_host.py . --write-launcher /tmp/yao-telemetry-host.sh --write-manifest /tmp/yao-telemetry-host.json --allowed-origin chrome-extension:///", "Install the generated native messaging manifest for the real client and send at least one accepted skill_activation or skill_output event.", "python3 scripts/yao.py telemetry-import . --input-jsonl .yao/telemetry_spool/external_events.jsonl" + ], + "provenance_requirements": [ + "real external client source", + "metadata-only event", + "local-first import path" + ], + "success_checks": [ + "reports/adoption_drift_report.json summary.source_types.external > 0", + "reports/adoption_drift_report.json summary.adoption_sample_count > 0", + "reports/skill_os2_audit.json item native-client-telemetry status becomes pass" + ], + "evidence_artifacts": [ + "reports/adoption_drift_report.json", + "reports/adoption_drift_report.md", + "reports/telemetry_hook_recipes.json", + "scripts/telemetry_native_host.py", + "evidence/world_class/intake.schema.json" + ], + "privacy_contract": [ + "Telemetry must remain metadata-only and local-first.", + "Do not package reports/telemetry_events.jsonl or any raw prompt, output, transcript, note, or message field." ] } ] @@ -829,7 +917,7 @@ "label": "上下文成本", "score": 42, "reasons": [ - "入口约 360 个词/字,references 约 16770 个词/字。", + "入口约 360 个词/字,references 约 16828 个词/字。", "分数越高代表上下文成本越低。", "上下文成本偏高,建议压缩入口或拆分 references。" ] @@ -933,7 +1021,7 @@ "已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。" ], "gaps": [ - "上下文成本需要补强:入口约 360 个词/字,references 约 16770 个词/字。" + "上下文成本需要补强:入口约 360 个词/字,references 约 16828 个词/字。" ], "recommendations": [ "先改触发边界,再扩展工作流。", @@ -1724,13 +1812,13 @@ "ok": true, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf", - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "evidence_bundle_sha256": "a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1748,11 +1836,11 @@ "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 52 }, - "commit": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "commit": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "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.", @@ -1836,7 +1924,7 @@ "failures": [] }, "trust_security": { - "scanned_files": 211, + "scanned_files": 212, "script_count": 121, "internal_module_count": 35, "secret_findings": 0, @@ -1856,8 +1944,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 211, - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_hash_file_count": 212, + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" }, "skill_atlas": { "skill_count": 12, @@ -1895,8 +1983,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, "compatibility": { "openai": "pass", @@ -1927,7 +2015,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1943,8 +2031,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", - "archive_entry_count": 645, + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", + "archive_entry_count": 646, "failure_count": 0, "warning_count": 0 }, @@ -1955,7 +2043,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 645, + "archive_entry_count": 646, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -2022,12 +2110,12 @@ { "field": "archive_sha256", "from": "", - "to": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "to": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "to": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] }, @@ -4400,7 +4488,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 27.0, + "duration_ms": 26.75, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4428,7 +4516,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 28.06, + "duration_ms": 25.99, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4451,7 +4539,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.41, + "duration_ms": 26.29, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4479,7 +4567,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.29, + "duration_ms": 29.72, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4502,7 +4590,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.36, + "duration_ms": 29.38, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4530,7 +4618,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.42, + "duration_ms": 37.41, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4553,7 +4641,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.76, + "duration_ms": 26.96, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4580,7 +4668,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.86, + "duration_ms": 26.52, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4603,7 +4691,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.13, + "duration_ms": 27.23, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4632,7 +4720,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.58, + "duration_ms": 26.38, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -5358,23 +5446,36 @@ "ok": true, "generated_at": "2026-06-16", "skill_dir": ".", - "commit": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "commit": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "git_status": { "available": true, - "dirty": false, - "changed_file_count": 0, - "sample": [], + "dirty": true, + "changed_file_count": 52, + "sample": [ + " M AGENTS.md", + " M references/review-studio-method.md", + " M registry/index.json", + " M registry/packages/yao-meta-skill.json", + " M reports/architecture_maintainability.json", + " M reports/architecture_maintainability.md", + " M reports/benchmark_reproducibility.json", + " M reports/benchmark_reproducibility.md", + " M reports/compiled_targets.json", + " M reports/context_budget.json", + " M reports/context_budget.md", + " M reports/context_budget_summary.json" + ], "scope": "generation-time status before this report is written" }, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf", - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "evidence_bundle_sha256": "a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -5392,14 +5493,15 @@ "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 52 }, "public_claim": { "ready": false, "scope": "public benchmark or world-class readiness claim", "blockers": [ + "release lock is not clean or commit is unavailable", "provider-backed model holdout evidence is incomplete", "human blind-review adjudication is incomplete", "world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)", @@ -5408,10 +5510,10 @@ "policy": "Local reproducibility can pass before public claims; public claims require provider evidence, human adjudication, clean release lock, accepted world-class evidence, and complete source checks." }, "release_lock": { - "ready": true, - "commit": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "ready": false, + "commit": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "status_scope": "generation-time status before this report is written", - "reason": "clean generation-time HEAD" + "reason": "working tree was dirty at generation time" }, "evidence_bundle": { "algorithm": "sha256(path,label,exists,artifact_sha256)", @@ -5419,7 +5521,7 @@ "existing_count": 25, "missing_count": 0, "missing_paths": [], - "sha256": "95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf" + "sha256": "a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191" }, "methodology": { "path": "reports/benchmark_methodology.md", @@ -5492,8 +5594,8 @@ "label": "output_execution", "path": "reports/output_execution_runs.json", "exists": true, - "bytes": 7966, - "sha256": "cefdff4fe2a5d92ab32a6985046bcfe76af6676f376f2556347aa4ca623f47c9" + "bytes": 7967, + "sha256": "dc896e2929e25d8f517ded4024f2bce12030f4be14f885f76255be887117766c" }, { "label": "blind_review", @@ -5528,7 +5630,7 @@ "path": "reports/security_trust_report.json", "exists": true, "bytes": 117850, - "sha256": "10abf9ec2d104908bbdfa0d7b40c04977dd4c0c2361635d17f128e4ae2f0979a" + "sha256": "8a6f0eb0c627b1b8a7ffb45fd431b678827a91590028021e145d6b60d2fc4c2e" }, { "label": "python_compatibility", @@ -5542,28 +5644,28 @@ "path": "reports/registry_audit.json", "exists": true, "bytes": 3183, - "sha256": "ed24d67c538e61177dc30c2a6a9ae1daca9f73db0d61312f65bd97364c49e91f" + "sha256": "bd4b1f1cd5b21d0bda736ea14db4e6839e3729f66c787ef3be97619e8d069267" }, { "label": "package_verification", "path": "reports/package_verification.json", "exists": true, "bytes": 19338, - "sha256": "33b28ae80672acda503ef7fe032cecb5f80135f47e558b865da3bdbbd6a39250" + "sha256": "3fe267c06ebba290d312575d3042fc8a1125ebe7c07c1c555eae2948dbf845d0" }, { "label": "install_simulation", "path": "reports/install_simulation.json", "exists": true, "bytes": 8604, - "sha256": "60ca2069feba8af6f011888735eab5600d32c513d48f18cb960609850b9f312f" + "sha256": "0a127a000c337bf9d180b30ac7ff4fefd6a3392aa7c4c4b822f6b3727fbcfd50" }, { "label": "skill_os2_audit", "path": "reports/skill_os2_audit.json", "exists": true, "bytes": 14310, - "sha256": "d42e33630eb3fea284fb521c0dc33dca3d37bdcd8adec0518f77297098fdc0c1" + "sha256": "de180d2b67b017d5654e10e34d58d56ab0e4861968e282f34777f3677522027e" }, { "label": "world_class_evidence_plan", @@ -5590,8 +5692,8 @@ "label": "world_class_evidence_preflight", "path": "reports/world_class_evidence_preflight.json", "exists": true, - "bytes": 36073, - "sha256": "5576411ceb4aeb9d0c2fd1ecbcd78d08f49c62149615c20cc77d4ab5db1736cc" + "bytes": 36067, + "sha256": "1e6c66fc5e3ceec580313f3dbdc7e26d3526832c591c2c4281f52779d2f6242d" }, { "label": "world_class_submission_review", @@ -5969,7 +6071,7 @@ "label": "Registry Distribution", "status": "pass", "objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.", - "current": "archive entries 645; install failures 0", + "current": "archive entries 646; install failures 0", "command": "python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .", "test": "python3 tests/verify_registry_audit.py", "evidence": [ @@ -6848,6 +6950,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -6901,7 +7004,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -7172,7 +7275,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -7426,7 +7529,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -7765,6 +7868,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -7818,7 +7922,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -8089,7 +8193,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -8343,7 +8447,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -8682,6 +8786,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -8735,7 +8840,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -9006,7 +9111,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -9253,7 +9358,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -9583,6 +9688,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -9636,7 +9742,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -9907,7 +10013,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -10154,7 +10260,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -10484,6 +10590,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -10537,7 +10644,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 } }, @@ -10808,7 +10915,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -11059,7 +11166,7 @@ "counts": { "references": 35, "scripts": 121, - "assets": 4, + "assets": 5, "reports": 43 }, "generated_files": [ @@ -11777,7 +11884,7 @@ "ok": true, "skill_dir": ".", "summary": { - "scanned_files": 211, + "scanned_files": 212, "script_count": 121, "internal_module_count": 35, "secret_findings": 0, @@ -11797,8 +11904,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 211, - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_hash_file_count": 212, + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" }, "failures": [], "warnings": [], @@ -15986,7 +16093,7 @@ }, { "path": "tests/verify_review_studio.py", - "lines": 803, + "lines": 816, "kind": "test", "severity": "pass", "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." @@ -16034,9 +16141,9 @@ "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." }, { - "path": "scripts/review_studio_layout.py", - "lines": 703, - "kind": "internal-module", + "path": "scripts/render_world_class_preflight.py", + "lines": 693, + "kind": "cli-script", "severity": "pass", "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." } @@ -16072,7 +16179,7 @@ }, { "path": "tests/verify_review_studio.py", - "lines": 803, + "lines": 816, "kind": "test", "severity": "pass", "recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands." @@ -16121,20 +16228,20 @@ "context_budget_tier": "production", "context_budget_limit": 1000, "skill_body_tokens": 797, - "other_text_tokens": 1035917, + "other_text_tokens": 1037197, "estimated_initial_load_tokens": 990, - "estimated_total_text_tokens": 1036714, - "deferred_resource_tokens": 478069, + "estimated_total_text_tokens": 1037994, + "deferred_resource_tokens": 478929, "deferred_resource_warn_threshold": 120000, "deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 423106, + "estimated_tokens": 419118, "file_count": 121 }, { "path": "references", - "estimated_tokens": 27991, + "estimated_tokens": 28099, "file_count": 35 }, { @@ -16144,14 +16251,14 @@ }, { "path": "assets", - "estimated_tokens": 5137, - "file_count": 2 + "estimated_tokens": 9877, + "file_count": 3 } ], "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 423106, + "estimated_tokens": 419118, "file_count": 121 } ], @@ -16174,14 +16281,14 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 423106, + "estimated_tokens": 419118, "file_count": 121, "rationale": "Script resources are deterministic deferred tools, not initial-load prompt context." } ], "summary": "Large deferred resources are indexed and backed by evidence." }, - "relevant_file_count": 627, + "relevant_file_count": 628, "unused_resource_dirs": [], "quality_signal_points": 130, "quality_density": 131.3 @@ -17201,6 +17308,7 @@ "references/telemetry-drift-method.md", "references/trust-security-method.md", "references/user-memory-policy.md", + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", @@ -18163,7 +18271,7 @@ "local_blueprint_ready": true, "public_world_class_ready": false, "world_class_pending_count": 4, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "writes_source_files": false, "auto_patch_enabled": false, @@ -18180,7 +18288,7 @@ "local_blueprint_ready": true, "public_world_class_ready": false, "world_class_pending_count": 4, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "writes_source_files": false, "auto_patch_enabled": false, @@ -18629,7 +18737,7 @@ "local_blueprint_ready": true, "public_world_class_ready": false, "world_class_pending_count": 4, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true }, "actions": [ @@ -18678,7 +18786,7 @@ "top_score": 88, "skill_count": 12, "actionable_portfolio_issue_count": 0, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "public_world_class_ready": false, "world_class_pending_count": 4, @@ -18698,7 +18806,7 @@ "top_score": 88, "skill_count": 12, "actionable_portfolio_issue_count": 0, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "public_world_class_ready": false, "world_class_pending_count": 4, @@ -18950,7 +19058,7 @@ "no_route_opportunity_count": 0 }, "release_state": { - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "public_world_class_ready": false, "world_class_pending_count": 4 @@ -22053,8 +22161,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, "compatibility": { "openai": "pass", @@ -22085,7 +22193,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -22110,7 +22218,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] }, @@ -22133,8 +22241,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", - "archive_entry_count": 645, + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", + "archive_entry_count": 646, "failure_count": 0, "warning_count": 0 }, @@ -22799,7 +22907,7 @@ "installed_skill_dir": "dist/install-simulation/simulate-yao-meta-skill/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 645, + "archive_entry_count": 646, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -23141,12 +23249,12 @@ { "field": "archive_sha256", "from": "", - "to": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "to": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "to": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] }, diff --git a/reports/review-viewer.json b/reports/review-viewer.json index 1bbfcb42..a8519ae1 100644 --- a/reports/review-viewer.json +++ b/reports/review-viewer.json @@ -102,7 +102,7 @@ "label": "上下文成本", "score": 42, "reasons": [ - "入口约 360 个词/字,references 约 16770 个词/字。", + "入口约 360 个词/字,references 约 16828 个词/字。", "分数越高代表上下文成本越低。", "上下文成本偏高,建议压缩入口或拆分 references。" ] @@ -206,7 +206,7 @@ "已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。" ], "gaps": [ - "上下文成本需要补强:入口约 360 个词/字,references 约 16770 个词/字。" + "上下文成本需要补强:入口约 360 个词/字,references 约 16828 个词/字。" ], "recommendations": [ "先改触发边界,再扩展工作流。", @@ -997,13 +997,13 @@ "ok": true, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf", - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "evidence_bundle_sha256": "a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1021,11 +1021,11 @@ "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 52 }, - "commit": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "commit": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "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.", @@ -1109,7 +1109,7 @@ "failures": [] }, "trust_security": { - "scanned_files": 211, + "scanned_files": 212, "script_count": 121, "internal_module_count": 35, "secret_findings": 0, @@ -1129,8 +1129,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 211, - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_hash_file_count": 212, + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" }, "skill_atlas": { "skill_count": 12, @@ -1168,8 +1168,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, "compatibility": { "openai": "pass", @@ -1200,7 +1200,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1216,8 +1216,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", - "archive_entry_count": 645, + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", + "archive_entry_count": 646, "failure_count": 0, "warning_count": 0 }, @@ -1228,7 +1228,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 645, + "archive_entry_count": 646, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1295,12 +1295,12 @@ { "field": "archive_sha256", "from": "", - "to": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "to": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "to": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] }, diff --git a/reports/security_trust_report.json b/reports/security_trust_report.json index 3cce7cf4..0c16d1cd 100644 --- a/reports/security_trust_report.json +++ b/reports/security_trust_report.json @@ -2,7 +2,7 @@ "ok": true, "skill_dir": ".", "summary": { - "scanned_files": 211, + "scanned_files": 212, "script_count": 121, "internal_module_count": 35, "secret_findings": 0, @@ -22,8 +22,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 211, - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_hash_file_count": 212, + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" }, "failures": [], "warnings": [], diff --git a/reports/security_trust_report.md b/reports/security_trust_report.md index 9743d81b..ea2d035b 100644 --- a/reports/security_trust_report.md +++ b/reports/security_trust_report.md @@ -1,7 +1,7 @@ # Security Trust Report - OK: `True` -- Scanned files: `211` +- Scanned files: `212` - Scripts: `121` - Internal script modules: `35` - Secret findings: `0` @@ -15,8 +15,8 @@ - CLI help smoke failures: `0` - Interactive scripts: `0` - Package hash scope: `source-contract-without-generated-reports` -- Package hash files: `211` -- Package SHA256: `f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc` +- Package hash files: `212` +- Package SHA256: `1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60` ## Failures diff --git a/reports/skill-interpretation.html b/reports/skill-interpretation.html index d14535ab..8435d941 100644 --- a/reports/skill-interpretation.html +++ b/reports/skill-interpretation.html @@ -764,7 +764,7 @@
  • 把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。Turn one-off experience into a reusable, evaluable, and portable skill package.
  • Skill 作者、复用团队和后续 reviewer。Skill authors, reuse teams, and later reviewers.
  • 创建完成后建议先打开 reports/skill-interpretation.html,再继续扩展包体。After creation, open reports/skill-interpretation.html before expanding the package further.
-
完整度Completeness100SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
触发清晰Trigger clarity100frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
证据充分Evidence depth100已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
上下文成本Context cost42入口约 360 个词/字,references 约 16770 个词/字。Entrypoint is about 360 words/characters; references are about 16770.
+
完整度Completeness100SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
触发清晰Trigger clarity100frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
证据充分Evidence depth100已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
上下文成本Context cost42入口约 360 个词/字,references 约 16828 个词/字。Entrypoint is about 360 words/characters; references are about 16828.
@@ -800,10 +800,10 @@
评分雷达Rating Radar完整度Completeness触发清晰Trigger clarity证据充分Evidence depth可维护性Maintainability可迁移性Portability
评分雷达展示结构完整度、触发边界、证据、维护和迁移的相对强弱。The radar chart compares completeness, trigger clarity, evidence, maintainability, and portability.

成熟度条Maturity Bar

-
  1. 稳定Stable完整度Completeness100SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
  2. 稳定Stable触发清晰Trigger clarity100frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
  3. 稳定Stable证据充分Evidence depth100已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
  4. 稳定Stable可维护性Maintainability100SKILL.md 约 360 个词/字。SKILL.md is about 360 words/characters.
  5. 稳定Stable可迁移性Portability100agents/interface.yaml 已存在。agents/interface.yaml exists.
  6. 关注Watch上下文成本Context cost42入口约 360 个词/字,references 约 16770 个词/字。Entrypoint is about 360 words/characters; references are about 16770.
+
  1. 稳定Stable完整度Completeness100SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
  2. 稳定Stable触发清晰Trigger clarity100frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
  3. 稳定Stable证据充分Evidence depth100已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
  4. 稳定Stable可维护性Maintainability100SKILL.md 约 360 个词/字。SKILL.md is about 360 words/characters.
  5. 稳定Stable可迁移性Portability100agents/interface.yaml 已存在。agents/interface.yaml exists.
  6. 关注Watch上下文成本Context cost42入口约 360 个词/字,references 约 16828 个词/字。Entrypoint is about 360 words/characters; references are about 16828.
-
完整度Completeness100
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
  • README.md 已存在,便于人工阅读。README.md exists for human-readable usage.
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml exists for cross-platform adaptation.
触发清晰Trigger clarity100
  • frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
  • description 有足够长度说明任务边界。The description is long enough to explain the task boundary.
  • description 已包含使用场景或排除边界信号。The description includes usage-scenario or exclusion-boundary signals.
证据充分Evidence depth100
  • 已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
  • skill-ir.json 已存在。Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.
  • compiled_targets.json 已存在。Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.
可维护性Maintainability100
  • SKILL.md 约 360 个词/字。SKILL.md is about 360 words/characters.
  • 入口文件保持克制,可维护性较好。The entrypoint stays restrained, which supports maintainability.
  • references/ 已承载扩展指导。references/ carries extended guidance.
可迁移性Portability100
  • agents/interface.yaml 已存在。agents/interface.yaml exists.
  • manifest.json 已存在。manifest.json exists.
  • 目标平台或 adapter target 已声明。Target platforms or adapter targets are declared.
上下文成本Context cost42
  • 入口约 360 个词/字,references 约 16770 个词/字。Entrypoint is about 360 words/characters; references are about 16770.
  • 分数越高代表上下文成本越低。A higher score means lower context cost.
  • 上下文成本偏高,建议压缩入口或拆分 references。Context cost is high; compress the entrypoint or split references further.
+
完整度Completeness100
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
  • README.md 已存在,便于人工阅读。README.md exists for human-readable usage.
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml exists for cross-platform adaptation.
触发清晰Trigger clarity100
  • frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
  • description 有足够长度说明任务边界。The description is long enough to explain the task boundary.
  • description 已包含使用场景或排除边界信号。The description includes usage-scenario or exclusion-boundary signals.
证据充分Evidence depth100
  • 已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
  • skill-ir.json 已存在。Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.
  • compiled_targets.json 已存在。Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.
可维护性Maintainability100
  • SKILL.md 约 360 个词/字。SKILL.md is about 360 words/characters.
  • 入口文件保持克制,可维护性较好。The entrypoint stays restrained, which supports maintainability.
  • references/ 已承载扩展指导。references/ carries extended guidance.
可迁移性Portability100
  • agents/interface.yaml 已存在。agents/interface.yaml exists.
  • manifest.json 已存在。manifest.json exists.
  • 目标平台或 adapter target 已声明。Target platforms or adapter targets are declared.
上下文成本Context cost42
  • 入口约 360 个词/字,references 约 16828 个词/字。Entrypoint is about 360 words/characters; references are about 16828.
  • 分数越高代表上下文成本越低。A higher score means lower context cost.
  • 上下文成本偏高,建议压缩入口或拆分 references。Context cost is high; compress the entrypoint or split references further.
@@ -878,7 +878,7 @@
- +
类型Type证据Evidence建议Action
强项Strength触发面保持精简,并锚定在 frontmatter description。The trigger surface stays lean and anchored in the frontmatter description.保留并复用Keep
强项Strength已生成 Skill IR,核心语义可先于平台打包被审查和迁移。Skill IR is generated so core semantics can be reviewed and migrated before platform packaging.保留并复用Keep
强项Strength已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。Target compilation evidence is generated to review how IR maps to OpenAI, Claude, generic, and other target contracts.保留并复用Keep
缺口Gap上下文成本需要补强:入口约 360 个词/字,references 约 16770 个词/字。Context cost needs improvement: Entrypoint is about 360 words/characters; references are about 16770.纳入下一轮修复Fix next
强项Strength触发面保持精简,并锚定在 frontmatter description。The trigger surface stays lean and anchored in the frontmatter description.保留并复用Keep
强项Strength已生成 Skill IR,核心语义可先于平台打包被审查和迁移。Skill IR is generated so core semantics can be reviewed and migrated before platform packaging.保留并复用Keep
强项Strength已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。Target compilation evidence is generated to review how IR maps to OpenAI, Claude, generic, and other target contracts.保留并复用Keep
缺口Gap上下文成本需要补强:入口约 360 个词/字,references 约 16828 个词/字。Context cost needs improvement: Entrypoint is about 360 words/characters; references are about 16828.纳入下一轮修复Fix next
diff --git a/reports/skill-interpretation.json b/reports/skill-interpretation.json index 0a386136..b27648f2 100644 --- a/reports/skill-interpretation.json +++ b/reports/skill-interpretation.json @@ -102,7 +102,7 @@ "label": "上下文成本", "score": 42, "reasons": [ - "入口约 360 个词/字,references 约 16770 个词/字。", + "入口约 360 个词/字,references 约 16828 个词/字。", "分数越高代表上下文成本越低。", "上下文成本偏高,建议压缩入口或拆分 references。" ] @@ -206,7 +206,7 @@ "已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。" ], "gaps": [ - "上下文成本需要补强:入口约 360 个词/字,references 约 16770 个词/字。" + "上下文成本需要补强:入口约 360 个词/字,references 约 16828 个词/字。" ], "recommendations": [ "先改触发边界,再扩展工作流。", @@ -1001,13 +1001,13 @@ "ok": true, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf", - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "evidence_bundle_sha256": "a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1025,11 +1025,11 @@ "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 52 }, - "commit": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "commit": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "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.", @@ -1113,7 +1113,7 @@ "failures": [] }, "trust_security": { - "scanned_files": 211, + "scanned_files": 212, "script_count": 121, "internal_module_count": 35, "secret_findings": 0, @@ -1133,8 +1133,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 211, - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_hash_file_count": 212, + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" }, "skill_atlas": { "skill_count": 12, @@ -1172,8 +1172,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, "compatibility": { "openai": "pass", @@ -1204,7 +1204,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1220,8 +1220,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", - "archive_entry_count": 645, + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", + "archive_entry_count": 646, "failure_count": 0, "warning_count": 0 }, @@ -1232,7 +1232,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 645, + "archive_entry_count": 646, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1299,12 +1299,12 @@ { "field": "archive_sha256", "from": "", - "to": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "to": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "to": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] }, diff --git a/reports/skill-os-2-review.md b/reports/skill-os-2-review.md index 8187ecf6..ed6b7353 100644 --- a/reports/skill-os-2-review.md +++ b/reports/skill-os-2-review.md @@ -15,6 +15,8 @@ Yao Meta Skill is no longer only a Meta Skill factory. The current working tree - Bilingual Skill Overview v2 that includes these evidence surfaces. - Skill Overview Asset Split v0 so long report CSS and JavaScript live in `assets/skill-overview.css` and `assets/skill-overview.js`, while the Python layout module keeps the generated report single-file by inlining those assets at render time. - Review Studio Source Anchor Excerpts v0 so every non-pass action source ref carries a matched pattern and short line excerpt, letting reviewers understand the anchor before opening the full artifact. +- Review Studio World-Class Collection Contract v0 so each pending world-class evidence action card shows provenance requirements, success checks, evidence artifacts, and privacy boundaries alongside commands and blocked checks. +- Review Studio Asset Split v0 so long Review Studio CSS lives in `assets/review-studio.css`, while the Python layout module still inlines it into the generated static HTML report. - Skill OS 2.0 Audit v0 for requirement-by-requirement evidence mapping, with explicit separation between local evidence, human-required review, and external-required provider/client integrations. - World-Class Evidence Plan v0 that turns the remaining provider holdout, human adjudication, native permission enforcement, and native client telemetry gaps into executable runbooks with success checks and privacy contracts. - World-Class Evidence Ledger v0 that records current acceptance state, provenance requirements, privacy contracts, and anti-overclaim guards for those remaining gaps. @@ -129,8 +131,8 @@ Next move: add real client or installer permission enforcement integration. | Runtime Permission Probes | `4 / 4` target adapters probed, `0` native-enforcement adapters, `4` explicit metadata fallbacks, `4` residual risks retained for reviewer visibility | | Skill Atlas | `12` scanned skills, `1` actionable root skill, `1` telemetry report, `0` actionable route collisions, `0` actionable owner gaps, `0` actionable stale skills, `0` actionable drift signals, `24` scoped non-actionable issue signals retained for visibility | | Registry Audit | package metadata generated with version, owner, license, source checksum, archive checksum, Skill IR provenance, and compatibility matrix | -| Package Verification | `4 / 4` target adapters present, archive verified, `645` zip entries, `0` failures, `0` warnings | -| Install Simulation | archive with `645` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `4` adapters readable, `12` installer permission checks enforced, `0` permission failures, `0` failures, `0` warnings | +| Package Verification | `4 / 4` target adapters present, archive verified, `646` zip entries, `0` failures, `0` warnings | +| Install Simulation | archive with `646` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `4` adapters readable, `12` installer permission checks enforced, `0` permission failures, `0` failures, `0` warnings | | Local Install Sync Preflight | `make sync-local-install` and `make sync-active-install` rebuild the package first, then sync only after install simulation passes with `12` enforced installer permission checks and `0` permission failures | | Upgrade Check | current package declares `minor` over the 1.0.0 baseline, recommended bump is `minor`, and release notes include added targets plus checksum changes | | Adoption Drift | `1` metadata-only review event, `1` adoption sample, adoption `100`, risk band `low`; optional `yao.py` CLI capture, external client `telemetry-emit`, `5` `telemetry-hooks` recipes, Browser/Chrome native messaging host, and validated external JSONL import are available but off by default for reproducible release evidence; raw `reports/telemetry_events.jsonl` is gitignored and blocked from zip packages | diff --git a/reports/skill-overview.html b/reports/skill-overview.html index 497f2426..e839fcb8 100644 --- a/reports/skill-overview.html +++ b/reports/skill-overview.html @@ -764,7 +764,7 @@
  • 把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。Turn one-off experience into a reusable, evaluable, and portable skill package.
  • Skill 作者、复用团队和后续 reviewer。Skill authors, reuse teams, and later reviewers.
  • 创建完成后建议先打开 reports/skill-overview.html,再继续扩展包体。After creation, open reports/skill-overview.html before expanding the package further.
-
完整度Completeness100SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
触发清晰Trigger clarity100frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
证据充分Evidence depth100已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
上下文成本Context cost42入口约 360 个词/字,references 约 16770 个词/字。Entrypoint is about 360 words/characters; references are about 16770.
+
完整度Completeness100SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
触发清晰Trigger clarity100frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
证据充分Evidence depth100已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
上下文成本Context cost42入口约 360 个词/字,references 约 16828 个词/字。Entrypoint is about 360 words/characters; references are about 16828.
@@ -800,10 +800,10 @@
评分雷达Rating Radar完整度Completeness触发清晰Trigger clarity证据充分Evidence depth可维护性Maintainability可迁移性Portability
评分雷达展示结构完整度、触发边界、证据、维护和迁移的相对强弱。The radar chart compares completeness, trigger clarity, evidence, maintainability, and portability.

成熟度条Maturity Bar

-
  1. 稳定Stable完整度Completeness100SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
  2. 稳定Stable触发清晰Trigger clarity100frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
  3. 稳定Stable证据充分Evidence depth100已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
  4. 稳定Stable可维护性Maintainability100SKILL.md 约 360 个词/字。SKILL.md is about 360 words/characters.
  5. 稳定Stable可迁移性Portability100agents/interface.yaml 已存在。agents/interface.yaml exists.
  6. 关注Watch上下文成本Context cost42入口约 360 个词/字,references 约 16770 个词/字。Entrypoint is about 360 words/characters; references are about 16770.
+
  1. 稳定Stable完整度Completeness100SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
  2. 稳定Stable触发清晰Trigger clarity100frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
  3. 稳定Stable证据充分Evidence depth100已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
  4. 稳定Stable可维护性Maintainability100SKILL.md 约 360 个词/字。SKILL.md is about 360 words/characters.
  5. 稳定Stable可迁移性Portability100agents/interface.yaml 已存在。agents/interface.yaml exists.
  6. 关注Watch上下文成本Context cost42入口约 360 个词/字,references 约 16828 个词/字。Entrypoint is about 360 words/characters; references are about 16828.
-
完整度Completeness100
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
  • README.md 已存在,便于人工阅读。README.md exists for human-readable usage.
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml exists for cross-platform adaptation.
触发清晰Trigger clarity100
  • frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
  • description 有足够长度说明任务边界。The description is long enough to explain the task boundary.
  • description 已包含使用场景或排除边界信号。The description includes usage-scenario or exclusion-boundary signals.
证据充分Evidence depth100
  • 已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
  • skill-ir.json 已存在。Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.
  • compiled_targets.json 已存在。Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.
可维护性Maintainability100
  • SKILL.md 约 360 个词/字。SKILL.md is about 360 words/characters.
  • 入口文件保持克制,可维护性较好。The entrypoint stays restrained, which supports maintainability.
  • references/ 已承载扩展指导。references/ carries extended guidance.
可迁移性Portability100
  • agents/interface.yaml 已存在。agents/interface.yaml exists.
  • manifest.json 已存在。manifest.json exists.
  • 目标平台或 adapter target 已声明。Target platforms or adapter targets are declared.
上下文成本Context cost42
  • 入口约 360 个词/字,references 约 16770 个词/字。Entrypoint is about 360 words/characters; references are about 16770.
  • 分数越高代表上下文成本越低。A higher score means lower context cost.
  • 上下文成本偏高,建议压缩入口或拆分 references。Context cost is high; compress the entrypoint or split references further.
+
完整度Completeness100
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md exists and acts as the skill entrypoint.
  • README.md 已存在,便于人工阅读。README.md exists for human-readable usage.
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml exists for cross-platform adaptation.
触发清晰Trigger clarity100
  • frontmatter description 已存在,具备基础路由面。The frontmatter description exists, giving the skill a basic routing surface.
  • description 有足够长度说明任务边界。The description is long enough to explain the task boundary.
  • description 已包含使用场景或排除边界信号。The description includes usage-scenario or exclusion-boundary signals.
证据充分Evidence depth100
  • 已生成 20 / 20 类报告证据。Generated 20 / 20 evidence report types.
  • skill-ir.json 已存在。Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.
  • compiled_targets.json 已存在。Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.
可维护性Maintainability100
  • SKILL.md 约 360 个词/字。SKILL.md is about 360 words/characters.
  • 入口文件保持克制,可维护性较好。The entrypoint stays restrained, which supports maintainability.
  • references/ 已承载扩展指导。references/ carries extended guidance.
可迁移性Portability100
  • agents/interface.yaml 已存在。agents/interface.yaml exists.
  • manifest.json 已存在。manifest.json exists.
  • 目标平台或 adapter target 已声明。Target platforms or adapter targets are declared.
上下文成本Context cost42
  • 入口约 360 个词/字,references 约 16828 个词/字。Entrypoint is about 360 words/characters; references are about 16828.
  • 分数越高代表上下文成本越低。A higher score means lower context cost.
  • 上下文成本偏高,建议压缩入口或拆分 references。Context cost is high; compress the entrypoint or split references further.
@@ -878,7 +878,7 @@
- +
类型Type证据Evidence建议Action
强项Strength触发面保持精简,并锚定在 frontmatter description。The trigger surface stays lean and anchored in the frontmatter description.保留并复用Keep
强项Strength已生成 Skill IR,核心语义可先于平台打包被审查和迁移。Skill IR is generated so core semantics can be reviewed and migrated before platform packaging.保留并复用Keep
强项Strength已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。Target compilation evidence is generated to review how IR maps to OpenAI, Claude, generic, and other target contracts.保留并复用Keep
缺口Gap上下文成本需要补强:入口约 360 个词/字,references 约 16770 个词/字。Context cost needs improvement: Entrypoint is about 360 words/characters; references are about 16770.纳入下一轮修复Fix next
强项Strength触发面保持精简,并锚定在 frontmatter description。The trigger surface stays lean and anchored in the frontmatter description.保留并复用Keep
强项Strength已生成 Skill IR,核心语义可先于平台打包被审查和迁移。Skill IR is generated so core semantics can be reviewed and migrated before platform packaging.保留并复用Keep
强项Strength已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。Target compilation evidence is generated to review how IR maps to OpenAI, Claude, generic, and other target contracts.保留并复用Keep
缺口Gap上下文成本需要补强:入口约 360 个词/字,references 约 16828 个词/字。Context cost needs improvement: Entrypoint is about 360 words/characters; references are about 16828.纳入下一轮修复Fix next
diff --git a/reports/skill-overview.json b/reports/skill-overview.json index b4f97142..3557b89f 100644 --- a/reports/skill-overview.json +++ b/reports/skill-overview.json @@ -101,7 +101,7 @@ "label": "上下文成本", "score": 42, "reasons": [ - "入口约 360 个词/字,references 约 16770 个词/字。", + "入口约 360 个词/字,references 约 16828 个词/字。", "分数越高代表上下文成本越低。", "上下文成本偏高,建议压缩入口或拆分 references。" ] @@ -205,7 +205,7 @@ "已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。" ], "gaps": [ - "上下文成本需要补强:入口约 360 个词/字,references 约 16770 个词/字。" + "上下文成本需要补强:入口约 360 个词/字,references 约 16828 个词/字。" ], "recommendations": [ "先改触发边界,再扩展工作流。", @@ -996,13 +996,13 @@ "ok": true, "summary": { "reproducibility_ready": true, - "release_lock_ready": true, + "release_lock_ready": false, "methodology_complete": true, "required_artifact_count": 25, "missing_artifact_count": 0, - "evidence_bundle_sha256": "95a01210eb2bacbef1d295e72bd60fdcce075db27930533679397b5aad82e4cf", - "source_contract_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "evidence_bundle_sha256": "a6a800e88be9348c69020f14560db3a902a8e24bbafc79b5d31200f42d3a6191", + "source_contract_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1020,11 +1020,11 @@ "world_class_source_pass_count": 6, "world_class_source_blocked_count": 7, "public_claim_ready": false, - "public_claim_blocker_count": 4, - "working_tree_dirty": false, - "changed_file_count": 0 + "public_claim_blocker_count": 5, + "working_tree_dirty": true, + "changed_file_count": 52 }, - "commit": "c325269f10a7c691646aefc5f48ca73e0a94542f", + "commit": "5338a770167da589a140c71ff0cd589ee5a3e8f4", "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.", @@ -1108,7 +1108,7 @@ "failures": [] }, "trust_security": { - "scanned_files": 211, + "scanned_files": 212, "script_count": 121, "internal_module_count": 35, "secret_findings": 0, @@ -1128,8 +1128,8 @@ "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 211, - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "package_hash_file_count": 212, + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" }, "skill_atlas": { "skill_count": 12, @@ -1167,8 +1167,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc", - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "package_sha256": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, "compatibility": { "openai": "pass", @@ -1199,7 +1199,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", + "archive_sha256": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1215,8 +1215,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6", - "archive_entry_count": 645, + "archive_sha256": "38e8e607c1ed5bd016ea242f8fac3e8dfdfe16b165876bc4e19f587481e7c5ca", + "archive_entry_count": 646, "failure_count": 0, "warning_count": 0 }, @@ -1227,7 +1227,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 645, + "archive_entry_count": 646, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1294,12 +1294,12 @@ { "field": "archive_sha256", "from": "", - "to": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "to": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "to": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] }, diff --git a/reports/skill_atlas.json b/reports/skill_atlas.json index d44aa90e..7ada18de 100644 --- a/reports/skill_atlas.json +++ b/reports/skill_atlas.json @@ -220,6 +220,7 @@ "references/telemetry-drift-method.md", "references/trust-security-method.md", "references/user-memory-policy.md", + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", diff --git a/reports/skill_os2_audit.json b/reports/skill_os2_audit.json index f711c637..f4bc065d 100644 --- a/reports/skill_os2_audit.json +++ b/reports/skill_os2_audit.json @@ -285,7 +285,7 @@ "key": "registry-distribution", "label": "Registry Distribution", "status": "pass", - "current": "zip entries 645; install failures 0; permission failures 0", + "current": "zip entries 646; install failures 0; permission failures 0", "target": "Package metadata, archive checksum, package verification, and install simulation pass", "evidence": [ { diff --git a/reports/skill_os2_audit.md b/reports/skill_os2_audit.md index 42d17f47..d0db1403 100644 --- a/reports/skill_os2_audit.md +++ b/reports/skill_os2_audit.md @@ -27,7 +27,7 @@ Generated at: `2026-06-16` | Permission Metadata | pass | 4/4 target probes pass; metadata fallback 4; installer enforcement 4 | Packaged adapters expose explicit permission metadata, residual risks, and installer enforcement evidence when available | Preserve residual-risk notes until real native enforcement exists. | | Native Permission Enforcement | external-required | native-enforced targets 0; installer-enforced targets 4 | At least one target/client enforces approved permissions at runtime | Integrate a real target-client or external installer runtime guard before claiming native permission enforcement. | | Skill Atlas | pass | 12 skills; actionable collisions 0 | Workspace catalog, route overlap, stale/owner gaps, drift, and no-route opportunities | Feed real drift data into Atlas once client telemetry is installed. | -| Registry Distribution | pass | zip entries 645; install failures 0; permission failures 0 | Package metadata, archive checksum, package verification, and install simulation pass | Regenerate registry after package verification so checksums stay aligned. | +| Registry Distribution | pass | zip entries 646; install failures 0; permission failures 0 | Package metadata, archive checksum, package verification, and install simulation pass | Regenerate registry after package verification so checksums stay aligned. | | Review Studio | pass | decision review; warnings 3; score 91 | One page shows gates, evidence paths, blockers, warnings, actions, waivers, and annotations | Resolve human/external warning gates before claiming full release readiness. | | Telemetry Drift | pass | events 1; risk low; recipes 5 | Local-first metadata-only event contract, aggregate drift report, hook recipes, and import path | Keep raw JSONL out of distributed packages and use aggregate reports for Atlas. | | Native Client Telemetry | external-required | external source events 0; adoption samples 0 | A real Browser/Chrome/provider client sends production metadata events | Install a real client against the native host and import production metadata-only events. | diff --git a/reports/skill_os2_coverage.json b/reports/skill_os2_coverage.json index 165dceca..51521ec9 100644 --- a/reports/skill_os2_coverage.json +++ b/reports/skill_os2_coverage.json @@ -204,7 +204,7 @@ "label": "Registry Distribution", "status": "pass", "objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.", - "current": "archive entries 645; install failures 0", + "current": "archive entries 646; install failures 0", "command": "python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .", "test": "python3 tests/verify_registry_audit.py", "evidence": [ diff --git a/reports/skill_os2_coverage.md b/reports/skill_os2_coverage.md index 007c9599..8f4ff34a 100644 --- a/reports/skill_os2_coverage.md +++ b/reports/skill_os2_coverage.md @@ -28,7 +28,7 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts, | Runtime Conformance | `pass` | 5/5 targets pass | `python3 scripts/yao.py conformance .` | `python3 tests/verify_conformance_suite.py` | | Trust Security | `pass` | 121 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` | | Skill Atlas | `pass` | 12 scanned skills; actionable collisions 0 | `python3 scripts/yao.py skill-atlas --workspace-root .` | `python3 tests/verify_skill_atlas.py` | -| Registry Distribution | `pass` | archive entries 645; install failures 0 | `python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .` | `python3 tests/verify_registry_audit.py` | +| Registry Distribution | `pass` | archive entries 646; install failures 0 | `python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .` | `python3 tests/verify_registry_audit.py` | | Review Studio | `pass` | 16 gates; decision review; warnings 3 | `python3 scripts/yao.py review-studio .` | `python3 tests/verify_review_studio.py` | | Telemetry Drift | `pass` | events 1; recipes 5; risk low | `python3 scripts/yao.py telemetry-hooks . && python3 scripts/yao.py adoption-drift .` | `python3 tests/verify_telemetry_hooks.py` | diff --git a/reports/skillops/daily/2026-06-16.json b/reports/skillops/daily/2026-06-16.json index a35cbc88..386b0613 100644 --- a/reports/skillops/daily/2026-06-16.json +++ b/reports/skillops/daily/2026-06-16.json @@ -14,7 +14,7 @@ "local_blueprint_ready": true, "public_world_class_ready": false, "world_class_pending_count": 4, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "writes_source_files": false, "auto_patch_enabled": false, @@ -31,7 +31,7 @@ "local_blueprint_ready": true, "public_world_class_ready": false, "world_class_pending_count": 4, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "writes_source_files": false, "auto_patch_enabled": false, @@ -480,7 +480,7 @@ "local_blueprint_ready": true, "public_world_class_ready": false, "world_class_pending_count": 4, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true }, "actions": [ diff --git a/reports/skillops/daily/2026-06-16.md b/reports/skillops/daily/2026-06-16.md index 105c41c3..d0fbea0f 100644 --- a/reports/skillops/daily/2026-06-16.md +++ b/reports/skillops/daily/2026-06-16.md @@ -14,7 +14,7 @@ Generated at: `2026-06-16` - local blueprint ready: `true` - public world-class ready: `false` - world-class pending: `4` -- release lock ready: `true` +- release lock ready: `false` - evidence consistency ok: `true` This report is an operations cockpit for explicit-source SkillOps. It does not scan private logs, write source files, apply patches, or count as world-class external or human evidence. diff --git a/reports/skillops/weekly/2026-W25.json b/reports/skillops/weekly/2026-W25.json index 998d23ea..65c79eb3 100644 --- a/reports/skillops/weekly/2026-W25.json +++ b/reports/skillops/weekly/2026-W25.json @@ -15,7 +15,7 @@ "top_score": 88, "skill_count": 12, "actionable_portfolio_issue_count": 0, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "public_world_class_ready": false, "world_class_pending_count": 4, @@ -35,7 +35,7 @@ "top_score": 88, "skill_count": 12, "actionable_portfolio_issue_count": 0, - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "public_world_class_ready": false, "world_class_pending_count": 4, @@ -287,7 +287,7 @@ "no_route_opportunity_count": 0 }, "release_state": { - "release_lock_ready": true, + "release_lock_ready": false, "evidence_consistency_ok": true, "public_world_class_ready": false, "world_class_pending_count": 4 diff --git a/reports/skillops/weekly/2026-W25.md b/reports/skillops/weekly/2026-W25.md index 4d75fc31..1fd6a716 100644 --- a/reports/skillops/weekly/2026-W25.md +++ b/reports/skillops/weekly/2026-W25.md @@ -13,7 +13,7 @@ Week: `2026-W25` - top_score: `88` - skill_count: `12` - actionable_portfolio_issue_count: `0` -- release_lock_ready: `True` +- release_lock_ready: `False` - evidence_consistency_ok: `True` - public_world_class_ready: `False` - world_class_pending_count: `4` diff --git a/reports/upgrade_check.json b/reports/upgrade_check.json index d2f4ab57..b51ba0e6 100644 --- a/reports/upgrade_check.json +++ b/reports/upgrade_check.json @@ -70,12 +70,12 @@ { "field": "archive_sha256", "from": "", - "to": "c26d85598e496b35e5ae4d0867a58652c62541c505c12fab5a9d6ea0598b99a6" + "to": "d543b93ac3b301b4abfb6f749509fac8234e501b2a5e2af93361a7250f8e5096" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "f7b3e6749356356d3cc8b8e36bdf46a9eeedd6615f6831e033540d5bdda2b2bc" + "to": "1b03b1e4bab90eac18aa1ee7f0ddd1d7293c3bdfb32620531c4fc231e33e2b60" } ] }, diff --git a/scripts/review_studio_action_evidence.py b/scripts/review_studio_action_evidence.py index da5de735..80478633 100644 --- a/scripts/review_studio_action_evidence.py +++ b/scripts/review_studio_action_evidence.py @@ -22,6 +22,13 @@ def action_command_rows(commands: dict[str, Any]) -> list[dict[str, str]]: return rows +def first_text_items(*values: Any, limit: int = 4) -> list[str]: + for value in values: + if isinstance(value, list) and value: + return [str(item) for item in value[:limit]] + return [] + + def world_class_action_steps(data: dict[str, Any]) -> list[dict[str, Any]]: ledger = data.get("world_class_evidence_ledger", {}) if isinstance(data, dict) else {} entries = ledger.get("entries", []) if isinstance(ledger, dict) else [] @@ -58,6 +65,7 @@ def world_class_action_steps(data: dict[str, Any]) -> list[dict[str, Any]]: runbook = entry.get("runbook", []) if not runbook and isinstance(checklist.get("must_collect", {}), dict): runbook = checklist["must_collect"].get("runbook", []) + must_collect = checklist.get("must_collect", {}) if isinstance(checklist.get("must_collect", {}), dict) else {} steps.append( { "key": key, @@ -74,11 +82,31 @@ def world_class_action_steps(data: dict[str, Any]) -> list[dict[str, Any]]: "blocked_checks": blocked_checks, "commands": action_command_rows(checklist.get("commands", {}) if isinstance(checklist.get("commands", {}), dict) else {}), "runbook": [str(item) for item in runbook[:3]], + "provenance_requirements": first_text_items( + must_collect.get("provenance_requirements"), + entry.get("provenance_requirements"), + limit=3, + ), + "success_checks": first_text_items(must_collect.get("success_checks"), entry.get("success_checks")), + "evidence_artifacts": first_text_items( + must_collect.get("evidence_artifacts"), + entry.get("evidence_artifacts"), + limit=5, + ), + "privacy_contract": first_text_items(must_collect.get("privacy_contract"), entry.get("privacy_contract"), limit=3), } ) return steps +def render_small_list(items: list[Any], empty: str, ordered: bool = False) -> str: + if not items: + return f"

{html.escape(empty)}

" + tag = "ol" if ordered else "ul" + rows = "".join(f"
  • {html.escape(str(item))}
  • " for item in items) + return f"<{tag}>{rows}" + + def render_action_evidence_steps(steps: list[dict[str, Any]]) -> str: if not steps: return "" @@ -136,6 +164,22 @@ def render_action_evidence_steps(steps: list[dict[str, Any]]) -> str: else "

    暂无首要步骤。

    " ) + "" + "
    采集契约" + "
    " + "
    来源要求
    " + + render_small_list(step.get("provenance_requirements", []), "暂无来源要求。") + + "
    " + "
    通过条件
    " + + render_small_list(step.get("success_checks", []), "暂无通过条件。") + + "
    " + "
    证据资产
    " + + render_small_list(step.get("evidence_artifacts", []), "暂无证据资产。") + + "
    " + "
    隐私边界
    " + + render_small_list(step.get("privacy_contract", []), "暂无隐私边界。") + + "
    " + "
    " + "
    " "
    " ) return ( diff --git a/scripts/review_studio_layout.py b/scripts/review_studio_layout.py index 3e246710..95bfe4a3 100644 --- a/scripts/review_studio_layout.py +++ b/scripts/review_studio_layout.py @@ -2,12 +2,17 @@ """Static layout contract for Review Studio HTML.""" import html +from pathlib import Path SCRIPT_INTERFACE = "internal-module" SCRIPT_INTERFACE_REASON = "Imported by render_review_studio.py to keep Review Studio layout and CSS out of gate logic." +ROOT = Path(__file__).resolve().parent.parent +ASSET_DIR = ROOT / "assets" + + REVIEW_STUDIO_NAV = [ ("#overview", "审查总览"), ("#intent", "意图画布"), @@ -28,6 +33,10 @@ REVIEW_STUDIO_NAV = [ ] +def read_layout_asset(filename: str) -> str: + return (ASSET_DIR / filename).read_text(encoding="utf-8").strip() + + def render_review_nav(nav_items: list[tuple[str, str]] | None = None) -> str: items = REVIEW_STUDIO_NAV if nav_items is None else nav_items return "".join( @@ -37,667 +46,4 @@ def render_review_nav(nav_items: list[tuple[str, str]] | None = None) -> str: def review_studio_css() -> str: - return """ - :root { - --ink: #1B365D; - --text: #24201d; - --muted: #746d66; - --line: #e7ded2; - --soft: #faf8f5; - --pass: #1e6b52; - --warn: #9a6718; - --block: #9b2c2c; - } - * { box-sizing: border-box; } - html { scroll-behavior: smooth; } - body { - margin: 0; - background: #ffffff; - color: var(--text); - font-family: Georgia, "Times New Roman", "Songti SC", serif; - line-height: 1.58; - } - nav { - position: sticky; - top: 0; - z-index: 10; - display: flex; - gap: 4px; - justify-content: center; - flex-wrap: wrap; - padding: 10px 16px; - background: rgba(255,255,255,0.94); - border-bottom: 1px solid var(--line); - backdrop-filter: blur(10px); - } - nav a { - color: var(--ink); - text-decoration: none; - font-size: 14px; - padding: 7px 10px; - border-radius: 6px; - } - nav a:hover { background: var(--soft); } - main { max-width: 1180px; margin: 0 auto; padding: 44px 28px 76px; } - header { border-bottom: 1px solid var(--line); padding-bottom: 28px; margin-bottom: 28px; } - .eyebrow { color: var(--ink); font-size: 14px; letter-spacing: .08em; text-transform: uppercase; } - h1, h2, h3 { color: var(--text); font-weight: 500; margin: 0; letter-spacing: 0; } - h1 { font-size: clamp(34px, 5vw, 64px); line-height: 1.03; max-width: 920px; margin-top: 12px; } - h2 { font-size: 30px; margin-bottom: 14px; } - h3 { font-size: 19px; } - p { margin: 0; } - .lede { max-width: 820px; color: var(--muted); font-size: 20px; margin-top: 18px; } - .decision { - display: inline-flex; - align-items: baseline; - gap: 12px; - margin-top: 24px; - padding: 12px 16px; - border: 1px solid var(--line); - border-radius: 8px; - color: var(--ink); - background: var(--soft); - } - .decision strong { font-size: 28px; } - section { padding: 30px 0; border-bottom: 1px solid var(--line); scroll-margin-top: 76px; } - .metrics, .gates { - display: grid; - grid-template-columns: repeat(5, minmax(0, 1fr)); - gap: 14px; - } - .gates { grid-template-columns: repeat(4, minmax(0, 1fr)); } - .metric, .gate { - border: 1px solid var(--line); - border-radius: 8px; - padding: 16px; - background: #fff; - min-width: 0; - } - .metric span, .gate span { display: block; color: var(--muted); font-size: 13px; } - .metric strong { display: block; color: var(--ink); font-size: 34px; line-height: 1.1; margin: 8px 0; } - .metric p, .gate p, .gate footer, .issues span, .evidence span { color: var(--muted); font-size: 14px; overflow-wrap: anywhere; } - .gate { display: flex; flex-direction: column; gap: 10px; } - .gate.pass { border-top: 4px solid var(--pass); } - .gate.warn { border-top: 4px solid var(--warn); } - .gate.block { border-top: 4px solid var(--block); } - .gate footer { border-top: 1px solid var(--line); padding-top: 10px; } - a { color: var(--ink); } - .twocol { - display: grid; - grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); - gap: 22px; - align-items: start; - } - .panel { - border: 1px solid var(--line); - border-radius: 8px; - padding: 18px; - background: #fff; - } - .panel p { color: var(--muted); } - .kv-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 10px 12px; - margin: 2px 0 0; - } - .kv-grid div { - min-width: 0; - padding: 9px 0 0; - border-top: 1px solid var(--line); - } - .kv-grid dt { - color: var(--muted); - font-size: 13px; - } - .kv-grid dd { - margin: 2px 0 0; - color: var(--ink); - font-size: 15px; - overflow-wrap: anywhere; - } - .issues, .evidence { - list-style: none; - padding: 0; - margin: 0; - display: grid; - gap: 12px; - } - .issues li, .evidence li { - border-left: 3px solid var(--line); - padding-left: 12px; - display: grid; - gap: 3px; - } - .muted { color: var(--muted); } - .actions-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 16px; - } - .annotations-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 16px; - } - .action-card { - border: 1px solid var(--line); - border-radius: 8px; - padding: 18px; - background: #fff; - display: grid; - gap: 10px; - min-width: 0; - } - .action-card.warn { border-left: 4px solid var(--warn); } - .action-card.block { border-left: 4px solid var(--block); } - .action-card.with-evidence { - grid-column: 1 / -1; - } - .action-evidence-panel { - display: grid; - gap: 12px; - border-top: 1px solid var(--line); - padding-top: 12px; - margin-top: 2px; - } - .action-evidence-panel h4 { - margin: 0; - color: var(--ink); - font-size: 16px; - font-weight: 500; - } - .action-evidence-panel p { - color: var(--muted); - font-size: 14px; - } - .action-evidence-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 14px; - } - .action-evidence-item { - border: 1px solid var(--line); - border-radius: 8px; - padding: 14px; - display: grid; - gap: 10px; - min-width: 0; - background: var(--soft); - } - .action-evidence-item.pending { border-left: 4px solid var(--warn); } - .action-evidence-item.accepted { border-left: 4px solid var(--pass); } - .action-evidence-item h4, - .action-evidence-item h5 { - margin: 0; - color: var(--ink); - font-weight: 500; - } - .action-evidence-item h4 { font-size: 16px; } - .action-evidence-item h5 { font-size: 14px; } - .action-evidence-item section { - border-top: 1px solid var(--line); - padding-top: 10px; - display: grid; - gap: 8px; - } - .action-command-details, - .action-runbook-details { - border-top: 1px solid var(--line); - padding-top: 10px; - display: grid; - gap: 8px; - } - .action-command-details summary, - .action-runbook-details summary { - cursor: pointer; - color: var(--ink); - font-size: 14px; - font-weight: 500; - } - .action-command-details[open] summary, - .action-runbook-details[open] summary { - margin-bottom: 8px; - } - .action-evidence-item dl { - display: grid; - grid-template-columns: 76px minmax(0, 1fr); - gap: 6px 10px; - margin: 0; - } - .action-evidence-item dt { - color: var(--ink); - font-size: 14px; - } - .action-evidence-item dd { - margin: 0; - min-width: 0; - } - .action-evidence-checks, - .action-command-list, - .action-runbook-list { - margin: 0; - display: grid; - gap: 8px; - } - .action-evidence-checks, - .action-command-list { - padding: 0; - list-style: none; - } - .action-runbook-list { - padding-left: 20px; - } - .action-evidence-check, - .action-command-list li { - display: grid; - gap: 3px; - min-width: 0; - border-top: 1px solid var(--line); - padding-top: 8px; - } - .action-evidence-check.blocked { border-left: 3px solid var(--warn); padding-left: 8px; } - .action-evidence-check.pass { border-left: 3px solid var(--pass); padding-left: 8px; } - .action-evidence-check span, - .action-command-list span { - color: var(--ink); - font-size: 13px; - } - .action-evidence-check code, - .action-evidence-check small, - .action-command-list code, - .action-runbook-list li { - color: var(--muted); - font-size: 13px; - overflow-wrap: anywhere; - } - .action-command-list code { - display: block; - white-space: normal; - } - .annotation-card { - border: 1px solid var(--line); - border-radius: 8px; - padding: 18px; - background: #fff; - display: grid; - gap: 10px; - min-width: 0; - } - .annotation-card.warning { border-left: 4px solid var(--warn); } - .annotation-card.blocker { border-left: 4px solid var(--block); } - .annotation-card.resolved { opacity: .72; } - .world-evidence-grid { - display: grid; - grid-template-columns: minmax(0, 1fr); - gap: 16px; - margin-top: 16px; - } - .world-evidence-card { - border: 1px solid var(--line); - border-radius: 8px; - padding: 18px; - background: #fff; - display: grid; - gap: 12px; - min-width: 0; - } - .world-evidence-card.pending { border-left: 4px solid var(--warn); } - .world-evidence-card.accepted { border-left: 4px solid var(--pass); } - .world-evidence-card span, - .world-evidence-card p, - .world-evidence-card dd, - .world-evidence-card li { - color: var(--muted); - font-size: 14px; - overflow-wrap: anywhere; - } - .world-evidence-card dl { - display: grid; - grid-template-columns: 86px minmax(0, 1fr); - gap: 6px 10px; - margin: 0; - } - .world-evidence-card dt { color: var(--ink); font-size: 14px; } - .world-evidence-card dd { margin: 0; } - .world-evidence-columns { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 12px; - border-top: 1px solid var(--line); - padding-top: 12px; - } - .world-evidence-columns h4 { - margin: 0 0 6px; - color: var(--ink); - font-size: 14px; - font-weight: 500; - } - .world-evidence-columns ul { - margin: 0; - padding-left: 18px; - } - .world-source-panel { - border-top: 1px solid var(--line); - padding-top: 12px; - } - .world-runbook-panel { - border-top: 1px solid var(--line); - padding-top: 12px; - } - .world-runbook-panel h4, - .world-source-panel h4 { - margin: 0 0 8px; - color: var(--ink); - font-size: 14px; - font-weight: 500; - } - .world-runbook-panel ul { - margin: 0; - padding-left: 18px; - } - .world-source-checks { - list-style: none; - padding: 0; - margin: 0; - display: grid; - gap: 8px; - } - .world-source-check { - display: grid; - grid-template-columns: minmax(0, .7fr) minmax(0, .6fr) minmax(0, 1fr); - gap: 10px; - align-items: start; - min-width: 0; - padding: 9px 0 0; - border-top: 1px solid var(--line); - } - .world-source-check span { - color: var(--ink); - font-size: 14px; - } - .world-source-check code, - .world-source-check small { - color: var(--muted); - font-size: 13px; - overflow-wrap: anywhere; - } - .world-source-check.pass { border-left: 3px solid var(--pass); padding-left: 8px; } - .world-source-check.blocked { border-left: 3px solid var(--warn); padding-left: 8px; } - .output-review-grid { - display: grid; - grid-template-columns: minmax(0, 1fr); - gap: 16px; - margin-top: 16px; - } - .output-review-card { - border: 1px solid var(--line); - border-radius: 8px; - padding: 18px; - background: #fff; - display: grid; - gap: 12px; - min-width: 0; - } - .output-review-card.awaiting-decision, - .output-review-card.fix-decision { border-left: 4px solid var(--warn); } - .output-review-card.adjudicated { border-left: 4px solid var(--pass); } - .output-review-card span, - .output-review-card p, - .output-review-card dd, - .output-review-card li { - color: var(--muted); - font-size: 14px; - overflow-wrap: anywhere; - } - .output-review-card dl { - display: grid; - grid-template-columns: 86px minmax(0, 1fr); - gap: 6px 10px; - margin: 0; - } - .output-review-card dt { color: var(--ink); font-size: 14px; } - .output-review-card dd { margin: 0; min-width: 0; } - .output-review-steps { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 12px; - border-top: 1px solid var(--line); - padding-top: 12px; - } - .output-review-steps h4 { - margin: 0 0 6px; - color: var(--ink); - font-size: 14px; - font-weight: 500; - } - .output-review-steps ul { - margin: 0; - padding-left: 18px; - } - .output-review-commands, - .output-review-fields { - list-style: none; - padding: 0; - display: grid; - gap: 8px; - } - .output-review-commands li, - .output-review-fields li { - display: grid; - gap: 2px; - min-width: 0; - padding: 8px 0 0; - border-top: 1px solid var(--line); - } - .output-review-commands code { - overflow-wrap: anywhere; - white-space: normal; - display: block; - } - .world-intake-grid { - display: grid; - grid-template-columns: minmax(0, 1fr); - gap: 16px; - margin-top: 16px; - } - .world-intake-card { - border: 1px solid var(--line); - border-radius: 8px; - padding: 18px; - background: #fff; - display: grid; - gap: 12px; - min-width: 0; - } - .world-intake-card.awaiting-submission, - .world-intake-card.fix-submission, - .world-intake-card.fix-template { border-left: 4px solid var(--warn); } - .world-intake-card.ready-for-ledger-review, - .world-intake-card.accepted { border-left: 4px solid var(--pass); } - .world-intake-card span, - .world-intake-card p, - .world-intake-card dd, - .world-intake-card li { - color: var(--muted); - font-size: 14px; - overflow-wrap: anywhere; - } - .world-intake-card dl { - display: grid; - grid-template-columns: 86px minmax(0, 1fr); - gap: 6px 10px; - margin: 0; - } - .world-intake-card dt { color: var(--ink); font-size: 14px; } - .world-intake-card dd { margin: 0; min-width: 0; } - .world-intake-steps { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 12px; - border-top: 1px solid var(--line); - padding-top: 12px; - } - .world-intake-steps h4 { - margin: 0 0 6px; - color: var(--ink); - font-size: 14px; - font-weight: 500; - } - .world-intake-steps ul { - margin: 0; - padding-left: 18px; - } - .world-intake-commands { - list-style: none; - padding: 0; - display: grid; - gap: 8px; - } - .world-intake-commands li { - display: grid; - gap: 2px; - min-width: 0; - padding: 8px 0 0; - border-top: 1px solid var(--line); - } - .world-intake-commands code { - overflow-wrap: anywhere; - white-space: normal; - display: block; - } - .section-subtitle { - margin-top: 22px; - margin-bottom: 12px; - color: var(--ink); - } - .waiver-summary { margin-top: 16px; } - .waiver-candidate-grid { - display: grid; - grid-template-columns: minmax(0, 1fr); - gap: 16px; - } - .waiver-card { - border: 1px solid var(--line); - border-radius: 8px; - padding: 18px; - background: #fff; - display: grid; - gap: 12px; - min-width: 0; - } - .waiver-card.allowed { border-left: 4px solid var(--warn); } - .waiver-card.blocked { border-left: 4px solid var(--block); } - .waiver-card span, - .waiver-card p, - .waiver-card dd, - .waiver-card li { - color: var(--muted); - font-size: 14px; - overflow-wrap: anywhere; - } - .waiver-card dl { - display: grid; - grid-template-columns: 86px minmax(0, 1fr); - gap: 6px 10px; - margin: 0; - } - .waiver-card dt { - color: var(--ink); - font-size: 14px; - } - .waiver-card dd { margin: 0; min-width: 0; } - .waiver-review { - border-top: 1px solid var(--line); - padding-top: 12px; - } - .waiver-review h4 { - margin: 0 0 6px; - color: var(--ink); - font-size: 14px; - font-weight: 500; - } - .waiver-review ul { - margin: 0; - padding-left: 18px; - } - .waiver-command { - display: grid; - gap: 4px; - border-top: 1px solid var(--line); - padding-top: 12px; - } - .waiver-command span { - color: var(--ink); - font-size: 14px; - } - .waiver-command code { - display: block; - max-width: 100%; - overflow-wrap: anywhere; - white-space: normal; - } - .action-card span, - .annotation-card span, - .action-card small, - .annotation-card small, - .action-card footer, - .annotation-card footer, - .action-card dd { - color: var(--muted); - font-size: 14px; - overflow-wrap: anywhere; - } - .annotation-card dd { color: var(--muted); font-size: 14px; overflow-wrap: anywhere; } - .action-card dl, .annotation-card dl { - display: grid; - grid-template-columns: 80px minmax(0, 1fr); - gap: 6px 10px; - margin: 0; - } - .action-card dt, .annotation-card dt { color: var(--ink); font-size: 14px; } - .action-card dd, .annotation-card dd { margin: 0; } - .source-ref-list { - list-style: none; - padding: 0; - margin: 0; - display: grid; - gap: 6px; - } - .source-ref-list li { - display: grid; - gap: 2px; - min-width: 0; - padding: 8px 0 0; - border-top: 1px solid var(--line); - } - .source-ref-list a, - .source-ref-list span { - overflow-wrap: anywhere; - font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - font-size: 13px; - } - .source-ref-list small { - font-size: 12px; - color: var(--muted); - } - .source-ref-list blockquote { - margin: 2px 0 0; - padding: 7px 9px; - border-left: 3px solid var(--line); - background: var(--soft); - color: var(--muted); - font-size: 12px; - overflow-wrap: anywhere; - } - code { - font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; - font-size: 13px; - } - @media (max-width: 980px) { - .metrics, .gates, .twocol, .actions-grid, .annotations-grid, .action-evidence-grid, .action-evidence-item dl, .output-review-grid, .output-review-steps, .world-evidence-grid, .world-evidence-columns, .world-source-check, .world-intake-grid, .world-intake-steps, .waiver-candidate-grid, .waiver-card dl, .kv-grid { grid-template-columns: 1fr; } - main { padding: 32px 18px 60px; } - nav { justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; } - nav a { flex: 0 0 auto; } - } - """.strip() + return read_layout_asset("review-studio.css") diff --git a/skill-ir/examples/yao-meta-skill.json b/skill-ir/examples/yao-meta-skill.json index abaf5e22..54379903 100644 --- a/skill-ir/examples/yao-meta-skill.json +++ b/skill-ir/examples/yao-meta-skill.json @@ -235,6 +235,7 @@ "scripts/yao_cli_telemetry.py" ], "assets": [ + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", diff --git a/skill_atlas/catalog.json b/skill_atlas/catalog.json index 66b06d9a..f4a13edf 100644 --- a/skill_atlas/catalog.json +++ b/skill_atlas/catalog.json @@ -176,6 +176,7 @@ "references/telemetry-drift-method.md", "references/trust-security-method.md", "references/user-memory-policy.md", + "assets/review-studio.css", "assets/skill-overview.css", "assets/skill-overview.js", "templates/basic_skill.md.j2", diff --git a/tests/verify_evidence_consistency.py b/tests/verify_evidence_consistency.py index da34d165..af38af3b 100644 --- a/tests/verify_evidence_consistency.py +++ b/tests/verify_evidence_consistency.py @@ -55,7 +55,6 @@ def copy_reports(dst: Path) -> None: def refresh_embedded_reports() -> None: script_names = [ "render_context_reports.py", - "render_benchmark_reproducibility.py", "render_skill_os2_coverage.py", "render_world_class_evidence_plan.py", "render_world_class_evidence_ledger.py", @@ -64,6 +63,7 @@ def refresh_embedded_reports() -> None: "render_world_class_submission_review.py", "render_world_class_operator_runbook.py", "render_world_class_claim_guard.py", + "render_benchmark_reproducibility.py", "render_skill_overview.py", "render_skill_interpretation.py", "render_review_viewer.py", diff --git a/tests/verify_review_studio.py b/tests/verify_review_studio.py index 05959de0..c0261314 100644 --- a/tests/verify_review_studio.py +++ b/tests/verify_review_studio.py @@ -540,6 +540,10 @@ def main() -> None: assert any("world-class-intake" in item["command"] for item in provider_action_step["commands"]), provider_action_step assert any("world-class-ledger" in item["command"] for item in provider_action_step["commands"]), provider_action_step assert any("output-exec --provider-runner openai" in item for item in provider_action_step["runbook"]), provider_action_step + assert "provider-backed model run" in provider_action_step["provenance_requirements"], provider_action_step + assert "reports/output_execution_runs.json summary.model_executed_count > 0" in provider_action_step["success_checks"], provider_action_step + assert "reports/output_execution_runs.json" in provider_action_step["evidence_artifacts"], provider_action_step + assert any("provider credentials" in item for item in provider_action_step["privacy_contract"]), provider_action_step assert full_payload["data"]["world_class_evidence_ledger"]["summary"]["pending_count"] == 4, full_payload["data"]["world_class_evidence_ledger"] assert full_payload["data"]["world_class_evidence_intake"]["summary"]["decision"] == "awaiting-submissions", full_payload["data"]["world_class_evidence_intake"] assert full_payload["data"]["world_class_submission_review"]["summary"]["decision"] == "awaiting-submissions", full_payload["data"]["world_class_submission_review"] @@ -662,6 +666,12 @@ def main() -> None: assert "action-evidence-checks" in html, html assert "action-command-list" in html, html assert "action-runbook-list" in html, html + assert "采集契约" in html, html + assert "action-collection-grid" in html, html + assert "来源要求" in html, html + assert "通过条件" in html, html + assert "证据资产" in html, html + assert "隐私边界" in html, html assert "世界证据" in html, html assert "证据台账" in html, html assert "证据入口" in html, html @@ -793,6 +803,9 @@ def main() -> None: assert len(review_layout.REVIEW_STUDIO_NAV) == 16, review_layout.REVIEW_STUDIO_NAV assert ("#world-class", "世界证据") in review_layout.REVIEW_STUDIO_NAV, review_layout.REVIEW_STUDIO_NAV assert "position: sticky" in review_layout.review_studio_css(), review_layout.review_studio_css()[:400] + assert review_layout.review_studio_css() == (ROOT / "assets" / "review-studio.css").read_text( + encoding="utf-8" + ).strip() assert "#overview" in review_layout.render_review_nav(), review_layout.render_review_nav() assert "审查总览" in review_layout.render_review_nav(), review_layout.render_review_nav() assert review_layout.render_review_nav([]) == "" diff --git a/tests/verify_skill_ir.py b/tests/verify_skill_ir.py index 107159a2..f475c7ae 100644 --- a/tests/verify_skill_ir.py +++ b/tests/verify_skill_ir.py @@ -53,6 +53,7 @@ def main() -> None: assert expected_scripts <= actual_scripts, sorted(expected_scripts - actual_scripts) assert "assets/skill-overview.css" in payload["resources"]["assets"], payload["resources"]["assets"] assert "assets/skill-overview.js" in payload["resources"]["assets"], payload["resources"]["assets"] + assert "assets/review-studio.css" in payload["resources"]["assets"], payload["resources"]["assets"] assert payload["resources"]["reports"], payload assert "evals/trigger_cases.json" in payload["eval_plan"]["trigger"], payload["eval_plan"] assert payload["risk"]["trust_boundary"] == "external", payload diff --git a/tests/verify_trust_check.py b/tests/verify_trust_check.py index 59ff3cca..5156dba3 100644 --- a/tests/verify_trust_check.py +++ b/tests/verify_trust_check.py @@ -66,6 +66,7 @@ def main() -> None: scanned_paths = {relpath(ROOT, path) for path in iter_scan_files(ROOT)} assert "assets/skill-overview.css" in scanned_paths, scanned_paths assert "assets/skill-overview.js" in scanned_paths, scanned_paths + assert "assets/review-studio.css" in scanned_paths, scanned_paths assert payload["summary"]["internal_module_count"] >= 3, payload assert payload["summary"]["network_script_count"] == 3, payload assert payload["summary"]["network_policy_covered_count"] == payload["summary"]["network_script_count"], payload