diff --git a/AGENTS.md b/AGENTS.md index 5a2b422a..e105f794 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -54,6 +54,7 @@ python3 scripts/render_world_class_evidence_intake.py . --generated-at "$GENERAT python3 scripts/render_world_class_submission_review.py . --generated-at "$GENERATED_AT" python3 scripts/render_world_class_operator_runbook.py . --generated-at "$GENERATED_AT" python3 scripts/render_world_class_claim_guard.py . --generated-at "$GENERATED_AT" +python3 scripts/render_daily_skillops_report.py . --generated-at "$GENERATED_AT" python3 scripts/render_skill_os2_audit.py . --generated-at "$GENERATED_AT" python3 scripts/render_skill_os2_coverage.py . --generated-at "$GENERATED_AT" python3 scripts/render_context_reports.py --generated-at "$GENERATED_AT" @@ -71,6 +72,7 @@ For final release evidence, commit source and generated package evidence first, ```bash python3 scripts/render_context_reports.py --generated-at "$GENERATED_AT" python3 scripts/render_benchmark_reproducibility.py . --generated-at "$GENERATED_AT" +python3 scripts/render_daily_skillops_report.py . --generated-at "$GENERATED_AT" python3 scripts/render_skill_overview.py . python3 scripts/render_skill_interpretation.py . python3 scripts/render_review_viewer.py . diff --git a/Makefile b/Makefile index 7901605a..9ee58fff 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ PYTHON ?= python3 LOCAL_SKILL_INSTALL_DIR ?= $(HOME)/.agents/skills.disabled/yao-meta-skill ACTIVE_SKILL_INSTALL_DIR ?= $(HOME)/.agents/skills/yao-meta-skill -.PHONY: eval eval-suite route-scorecard route-confusion-check description-optimization judge-blind-eval description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check skill-overview-check skill-interpretation-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-kit-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-preflight-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check evidence-consistency-check feedback-check adaptation-safety-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger results-panel regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check sync-local-install sync-active-install test ci-test clean +.PHONY: eval eval-suite route-scorecard route-confusion-check description-optimization judge-blind-eval description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check skill-overview-check skill-interpretation-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-kit-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-preflight-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check evidence-consistency-check feedback-check adaptation-safety-check daily-skillops-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger results-panel regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check sync-local-install sync-active-install test ci-test clean eval: $(PYTHON) scripts/trigger_eval.py --description-file evals/improved_description.txt --cases evals/trigger_cases.json --baseline-description-file evals/baseline_description.txt @@ -140,6 +140,9 @@ feedback-check: adaptation-safety-check: $(PYTHON) tests/verify_adaptation_safety.py +daily-skillops-check: + $(PYTHON) tests/verify_daily_skillops.py + adoption-drift-check: $(PYTHON) tests/verify_adoption_drift.py @@ -251,11 +254,11 @@ sync-local-install: package-check sync-active-install: package-check $(PYTHON) scripts/sync_local_install.py --install-dir "$(ACTIVE_SKILL_INSTALL_DIR)" -test: eval eval-suite route-scorecard route-confusion-check description-optimization description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check skill-overview-check skill-interpretation-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-preflight-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check evidence-consistency-check feedback-check adaptation-safety-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check +test: eval eval-suite route-scorecard route-confusion-check description-optimization description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check skill-overview-check skill-interpretation-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-preflight-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check evidence-consistency-check feedback-check adaptation-safety-check daily-skillops-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check ci-test: $(PYTHON) scripts/ci_test.py clean: - rm -rf dist tests/tmp tests/tmp_snapshot tests/tmp_cli tests/tmp_python_compat tests/tmp_architecture_maintainability tests/tmp_skill_overview tests/tmp_skill_interpretation tests/tmp_skill_report_metrics tests/tmp_skill_report_charts tests/tmp_skill_ir tests/tmp_compile_skill tests/tmp_output_eval tests/tmp_output_execution tests/tmp_output_review_adjudication tests/tmp_conformance tests/tmp_runtime_permission tests/tmp_trust tests/tmp_skill_atlas tests/tmp_registry tests/tmp_package_verification tests/tmp_install_simulation tests/tmp_upgrade_check tests/tmp_reference_scan tests/tmp_iteration_directions tests/tmp_review_viewer tests/tmp_review_studio tests/tmp_skill_os2_audit tests/tmp_skill_os2_coverage tests/tmp_world_class_evidence tests/tmp_world_class_evidence_ledger tests/tmp_world_class_evidence_intake tests/tmp_world_class_submission_review tests/tmp_world_class_operator_runbook tests/tmp_world_class_claim_guard tests/tmp_benchmark_reproducibility tests/tmp_evidence_consistency tests/tmp_feedback tests/tmp_adoption_drift tests/tmp_telemetry_import tests/tmp_telemetry_emit tests/tmp_telemetry_hooks tests/tmp_telemetry_native_host tests/tmp_review_waivers tests/tmp_review_annotations tests/tmp_github_benchmark_scan tests/tmp_intent_confidence tests/tmp_reference_synthesis tests/tmp_output_risk_profile tests/tmp_artifact_design_profile tests/tmp_prompt_quality_profile tests/tmp_system_model tests/tmp_security tests/tmp_baseline_compare.json tests/tmp_baseline_compare.md + rm -rf dist tests/tmp tests/tmp_snapshot tests/tmp_cli tests/tmp_python_compat tests/tmp_architecture_maintainability tests/tmp_skill_overview tests/tmp_skill_interpretation tests/tmp_skill_report_metrics tests/tmp_skill_report_charts tests/tmp_skill_ir tests/tmp_compile_skill tests/tmp_output_eval tests/tmp_output_execution tests/tmp_output_review_adjudication tests/tmp_conformance tests/tmp_runtime_permission tests/tmp_trust tests/tmp_skill_atlas tests/tmp_registry tests/tmp_package_verification tests/tmp_install_simulation tests/tmp_upgrade_check tests/tmp_reference_scan tests/tmp_iteration_directions tests/tmp_review_viewer tests/tmp_review_studio tests/tmp_skill_os2_audit tests/tmp_skill_os2_coverage tests/tmp_world_class_evidence tests/tmp_world_class_evidence_ledger tests/tmp_world_class_evidence_intake tests/tmp_world_class_submission_review tests/tmp_world_class_operator_runbook tests/tmp_world_class_claim_guard tests/tmp_benchmark_reproducibility tests/tmp_evidence_consistency tests/tmp_feedback tests/tmp_daily_skillops tests/tmp_adoption_drift tests/tmp_telemetry_import tests/tmp_telemetry_emit tests/tmp_telemetry_hooks tests/tmp_telemetry_native_host tests/tmp_review_waivers tests/tmp_review_annotations tests/tmp_github_benchmark_scan tests/tmp_intent_confidence tests/tmp_reference_synthesis tests/tmp_output_risk_profile tests/tmp_artifact_design_profile tests/tmp_prompt_quality_profile tests/tmp_system_model tests/tmp_security tests/tmp_baseline_compare.json tests/tmp_baseline_compare.md find . -type d -name __pycache__ -prune -exec rm -rf {} + diff --git a/README.md b/README.md index 11553ebe..70c2d287 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ python3 scripts/yao.py system-model my-skill python3 scripts/yao.py feedback my-skill --note "Tighten exclusions before adding scripts." --rating 4 --category boundary python3 scripts/yao.py adapt-scan my-skill --source ./curated-user-signals.jsonl python3 scripts/yao.py adapt-propose my-skill +python3 scripts/yao.py daily-skillops my-skill --source ./curated-user-signals.jsonl python3 scripts/yao.py adoption-drift my-skill --record-event skill_activation --activation-type explicit --outcome accepted YAO_CLI_TELEMETRY=1 python3 scripts/yao.py validate my-skill python3 scripts/yao.py telemetry-emit my-skill --event skill_activation --activation-type explicit --outcome accepted --command browser-extension @@ -432,7 +433,7 @@ Utility scripts that make the meta-skill operational: - `run_description_optimization_suite.py`: runs description optimization across the root skill and governed examples, then writes reusable reports and optional drift snapshots with calibration and family summaries - `promotion_checker.py`: applies promotion policy to current description candidates, writes promotion decisions, builds candidate registries, and emits iteration bundles with review stubs - `create_iteration_snapshot.py`: freezes the current promotion decision into a versioned release snapshot with review, route, and context evidence -- `yao.py`: unified authoring CLI that exposes init, validate, optimize-description, promote-check, python-compat, review, release-snapshot, workspace-flow, report, skill-report, skill-interpretation, skill-ir, compile-skill, output-exec, output-review, skill-os2-audit, skill-os2-coverage, world-class-evidence, world-class-ledger, world-class-intake, world-class-preflight, world-class-submission-kit, world-class-submission-review, world-class-runbook, world-class-claim-guard, benchmark-reproducibility, evidence-consistency, telemetry-emit, telemetry-hooks, telemetry-import, package, registry-audit, package-verify, install-simulate, upgrade-check, review-waivers, and test as one entrypoint +- `yao.py`: unified authoring CLI that exposes init, validate, optimize-description, promote-check, python-compat, review, release-snapshot, workspace-flow, report, skill-report, skill-interpretation, skill-ir, compile-skill, output-exec, output-review, skill-os2-audit, skill-os2-coverage, world-class-evidence, world-class-ledger, world-class-intake, world-class-preflight, world-class-submission-kit, world-class-submission-review, world-class-runbook, world-class-claim-guard, benchmark-reproducibility, evidence-consistency, adapt-scan, adapt-propose, adapt-apply, daily-skillops, telemetry-emit, telemetry-hooks, telemetry-import, package, registry-audit, package-verify, install-simulate, upgrade-check, review-waivers, and test as one entrypoint - `render_description_drift_history.py`: turns description-optimization snapshots into a readable drift-history report - `build_confusion_matrix.py`: scores route confusion across tracked sibling skills and `no_route` cases, then writes a route scorecard and optional milestone snapshot - `render_iteration_ledger.py`: compresses regression milestones, description optimization drift, and route scorecards into one iteration-facing ledger @@ -443,6 +444,7 @@ Utility scripts that make the meta-skill operational: - `render_regression_history.py`: turns milestone snapshots into a readable regression history report - `render_skill_os2_audit.py`: renders a requirement-by-requirement Skill OS 2.0 audit that separates landed local evidence from human-required and external-required gaps - `render_skill_os2_coverage.py`: maps the Skill OS 2.0 upgrade blueprint to local artifacts, commands, tests, and remaining evidence boundaries +- `render_daily_skillops_report.py`: renders an explicit-source Daily SkillOps operations report that summarizes redacted user patterns, proposal-only adaptations, approval state, release evidence, and world-class evidence gaps without scanning private logs or applying patches - `render_world_class_evidence_plan.py`: renders executable evidence tasks for remaining world-class gaps without treating planned external work as completed evidence - `render_world_class_evidence_ledger.py`: renders a machine-checkable ledger for current world-class evidence acceptance, anti-overclaim guards, provenance requirements, and privacy contracts - `render_world_class_evidence_intake.py`: validates world-class external and human evidence packets against provenance, privacy, artifact, and anti-overclaim requirements before ledger review diff --git a/registry/index.json b/registry/index.json index 1c0c75d6..a9f4f97e 100644 --- a/registry/index.json +++ b/registry/index.json @@ -16,7 +16,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] } diff --git a/registry/packages/yao-meta-skill.json b/registry/packages/yao-meta-skill.json index 7fcccb7c..ff6ab5f0 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": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, "compatibility": { "openai": "pass", @@ -48,7 +48,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" diff --git a/reports/adaptation_proposals.json b/reports/adaptation_proposals.json index ac00ff33..f0073bf7 100644 --- a/reports/adaptation_proposals.json +++ b/reports/adaptation_proposals.json @@ -1,7 +1,7 @@ { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-15T00:00:00Z", + "generated_at": "2026-06-15T20:28:47Z", "skill_dir": ".", "source_patterns": "reports/user_patterns.json", "pattern_count": 5, diff --git a/reports/adaptation_proposals.md b/reports/adaptation_proposals.md index 95aa6b0c..153f5e9c 100644 --- a/reports/adaptation_proposals.md +++ b/reports/adaptation_proposals.md @@ -1,6 +1,6 @@ # Adaptation Proposals -- Generated at: `2026-06-15T00:00:00Z` +- Generated at: `2026-06-15T20:28:47Z` - Pattern report: `reports/user_patterns.json` - Proposal only: `true` - Writes repository files: `false` diff --git a/reports/adoption_drift_report.json b/reports/adoption_drift_report.json index 71fe0fda..da12292f 100644 --- a/reports/adoption_drift_report.json +++ b/reports/adoption_drift_report.json @@ -1,7 +1,7 @@ { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-16", + "generated_at": "2026-06-15T20:28:46Z", "skill_dir": ".", "privacy_contract": { "storage": "local-first", diff --git a/reports/architecture_maintainability.json b/reports/architecture_maintainability.json index 03fc3a98..47a12e55 100644 --- a/reports/architecture_maintainability.json +++ b/reports/architecture_maintainability.json @@ -4,12 +4,12 @@ "generated_at": "2026-06-16", "skill_dir": ".", "summary": { - "python_file_count": 179, - "script_file_count": 114, - "test_file_count": 65, + "python_file_count": 181, + "script_file_count": 115, + "test_file_count": 66, "internal_module_count": 34, - "cli_script_count": 82, - "command_handler_count": 65, + "cli_script_count": 83, + "command_handler_count": 66, "entrypoint_command_handler_count": 18, "command_module_count": 6, "warn_line_threshold": 900, @@ -38,7 +38,7 @@ }, { "path": "scripts/yao_cli_parser.py", - "lines": 827, + "lines": 843, "kind": "internal-module", "severity": "pass", "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." @@ -124,7 +124,7 @@ }, { "path": "scripts/yao_cli_parser.py", - "lines": 827, + "lines": 843, "kind": "internal-module", "severity": "pass", "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." diff --git a/reports/architecture_maintainability.md b/reports/architecture_maintainability.md index ea5b543b..cd0a19aa 100644 --- a/reports/architecture_maintainability.md +++ b/reports/architecture_maintainability.md @@ -5,12 +5,12 @@ Generated at: `2026-06-16` ## Summary - decision: `pass` -- python files: `179` -- scripts: `114` -- tests: `65` +- python files: `181` +- scripts: `115` +- tests: `66` - internal modules: `34` -- CLI scripts: `82` -- Yao CLI command handlers: `65` +- CLI scripts: `83` +- Yao CLI command handlers: `66` - entrypoint command handlers: `18` - command modules: `6` - largest file lines: `899` @@ -31,7 +31,7 @@ No file-size hotspots found. | --- | ---: | --- | --- | | `tests/verify_yao_cli.py` | `899` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. | | `scripts/render_evidence_consistency.py` | `859` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | -| `scripts/yao_cli_parser.py` | `827` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | +| `scripts/yao_cli_parser.py` | `843` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `scripts/skill_report_layout.py` | `808` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `scripts/skill_report_model.py` | `800` | `internal-module` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. | | `tests/verify_world_class_evidence_intake.py` | `795` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. | @@ -47,7 +47,7 @@ No file-size hotspots found. | --- | ---: | --- | --- | | `tests/verify_yao_cli.py` | `899` | `test` | `pass` | | `scripts/render_evidence_consistency.py` | `859` | `cli-script` | `pass` | -| `scripts/yao_cli_parser.py` | `827` | `internal-module` | `pass` | +| `scripts/yao_cli_parser.py` | `843` | `internal-module` | `pass` | | `scripts/skill_report_layout.py` | `808` | `internal-module` | `pass` | | `scripts/skill_report_model.py` | `800` | `internal-module` | `pass` | | `tests/verify_world_class_evidence_intake.py` | `795` | `test` | `pass` | diff --git a/reports/benchmark_reproducibility.json b/reports/benchmark_reproducibility.json index c46e95c6..ca29ca75 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": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "commit": "5cb10444c49c40d58b76784e6c4bf993c863e827", "git_status": { "available": true, - "dirty": false, - "changed_file_count": 0, - "sample": [], + "dirty": true, + "changed_file_count": 60, + "sample": [ + " M AGENTS.md", + " M Makefile", + " M README.md", + " M registry/index.json", + " M registry/packages/yao-meta-skill.json", + " M reports/adaptation_proposals.json", + " M reports/adaptation_proposals.md", + " M reports/adoption_drift_report.json", + " M reports/architecture_maintainability.json", + " M reports/architecture_maintainability.md", + " M reports/benchmark_reproducibility.json", + " M reports/benchmark_reproducibility.md" + ], "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": "04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31", - "source_contract_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "evidence_bundle_sha256": "4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": 60 }, "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": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "ready": false, + "commit": "5cb10444c49c40d58b76784e6c4bf993c863e827", "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": "04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31" + "sha256": "4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd" }, "methodology": { "path": "reports/benchmark_methodology.md", @@ -138,7 +152,7 @@ "path": "reports/output_execution_runs.json", "exists": true, "bytes": 7966, - "sha256": "309b2847cf0db6119af307ae7bbb2d573ddfa47518fa9205143addb444a9f410" + "sha256": "6fa9f0b5a294f5373de752e5881c1e6c1a996b65995bd83517a10e691c5e4abd" }, { "label": "blind_review", @@ -172,43 +186,43 @@ "label": "trust_report", "path": "reports/security_trust_report.json", "exists": true, - "bytes": 112030, - "sha256": "d9f521542fc5c6a231fe875979ac2dcae170d603678935a6d8645c52a1ed669b" + "bytes": 113207, + "sha256": "ba3b69b8eb33e907fb14a4e86c70bc6dd05d666baa6b8dbce787a03a156663a7" }, { "label": "python_compatibility", "path": "reports/python_compatibility.json", "exists": true, - "bytes": 23652, - "sha256": "64047e1708873e20cd99a85bca88bdd36417cbda432ba2b5cb14b84558ace814" + "bytes": 23905, + "sha256": "aa89183f58b2f29927cb6ce07465985583cb3ae410f0cbb48813cd10e6687743" }, { "label": "registry_audit", "path": "reports/registry_audit.json", "exists": true, "bytes": 3183, - "sha256": "3c4b554a46465d08f18530ad004ab46f7f6b10f14f733190e4c63ce47b2c881e" + "sha256": "ba8c24683f0e4d89d3d77f90c3cce8fa9dea52c93f8da8f23da127abe634eda3" }, { "label": "package_verification", "path": "reports/package_verification.json", "exists": true, "bytes": 19338, - "sha256": "eb9916629437168ba93bbc2f47bc25154442edcc458071e50e0cbbf826d4452b" + "sha256": "667250d991ae62ae20562fe195a7ebc8357d55e723e17a084c94fd432420da8e" }, { "label": "install_simulation", "path": "reports/install_simulation.json", "exists": true, "bytes": 8604, - "sha256": "e865fd484bd4eec278c36247ba60eb1496ffd9c7978cfbfb10e69ead744f04f3" + "sha256": "df390c15745131f8c626a0782c89c10c47a2293e8a92f84c997f477f2078bd76" }, { "label": "skill_os2_audit", "path": "reports/skill_os2_audit.json", "exists": true, "bytes": 14310, - "sha256": "eb21ab4344a64605f6dc6cba058aa6a51cfc15113a4529b1687230cd5cbe8e60" + "sha256": "e12318b1e083aaa85ffc81d142bb82c1e4bdee1caf0e4bcb0879e4a3ae2faf31" }, { "label": "world_class_evidence_plan", @@ -270,8 +284,8 @@ "label": "world_class_claim_guard", "path": "reports/world_class_claim_guard.json", "exists": true, - "bytes": 18028, - "sha256": "06921f060b4c800128558bccacd6096f66b8f1b8ca76d316e5b6289609d9c415" + "bytes": 18218, + "sha256": "7359ad2ef09dc0863014aab541a92a1f3e55f18f0c0446816c1c7333cba256e9" } ], "missing_artifacts": [], diff --git a/reports/benchmark_reproducibility.md b/reports/benchmark_reproducibility.md index 50d988f3..3c9ab73b 100644 --- a/reports/benchmark_reproducibility.md +++ b/reports/benchmark_reproducibility.md @@ -1,19 +1,19 @@ # Benchmark Reproducibility Generated at: `2026-06-16` -Commit: `c5165be99c8b5c2c9c07bd6017716e874567920c` -Working tree dirty at generation: `false` -Evidence bundle SHA256: `04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31` +Commit: `5cb10444c49c40d58b76784e6c4bf993c863e827` +Working tree dirty at generation: `true` +Evidence bundle SHA256: `4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd` ## Summary - reproducibility ready: `true` -- release lock ready: `true` +- release lock ready: `false` - methodology complete: `true` - required artifacts: `25` - missing artifacts: `0` -- source contract sha256: `bcfcc1a7fc34` -- archive sha256: `feb9e0ecf839` +- source contract sha256: `b6abceeea0f2` +- archive sha256: `a521b75a29e5` - output cases: `5` - disclosed failure cases: `3` - reproduction commands: `23` @@ -22,8 +22,8 @@ Evidence bundle SHA256: `04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271e - 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: `60` 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: `04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31` +- sha256: `4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd` ## Methodology Sections @@ -72,17 +73,17 @@ This report proves local benchmark reproducibility only. It keeps external provi | output_cases | `evals/output/cases.jsonl` | present | `a6ae96857116` | | output_schema | `evals/output/schema.json` | present | `8ee340c95064` | | output_scorecard | `reports/output_quality_scorecard.json` | present | `0806258a8e08` | -| output_execution | `reports/output_execution_runs.json` | present | `309b2847cf0d` | +| output_execution | `reports/output_execution_runs.json` | present | `6fa9f0b5a294` | | blind_review | `reports/output_blind_review_pack.json` | present | `bbe2db8ec277` | | review_adjudication | `reports/output_review_adjudication.json` | present | `240485a721af` | | trigger_scorecard | `reports/route_scorecard.json` | present | `c164e83e36d0` | | runtime_conformance | `reports/conformance_matrix.json` | present | `97f9ba949c23` | -| trust_report | `reports/security_trust_report.json` | present | `d9f521542fc5` | -| python_compatibility | `reports/python_compatibility.json` | present | `64047e170887` | -| registry_audit | `reports/registry_audit.json` | present | `3c4b554a4646` | -| package_verification | `reports/package_verification.json` | present | `eb9916629437` | -| install_simulation | `reports/install_simulation.json` | present | `e865fd484bd4` | -| skill_os2_audit | `reports/skill_os2_audit.json` | present | `eb21ab4344a6` | +| trust_report | `reports/security_trust_report.json` | present | `ba3b69b8eb33` | +| python_compatibility | `reports/python_compatibility.json` | present | `aa89183f58b2` | +| registry_audit | `reports/registry_audit.json` | present | `ba8c24683f0e` | +| package_verification | `reports/package_verification.json` | present | `667250d991ae` | +| install_simulation | `reports/install_simulation.json` | present | `df390c157451` | +| skill_os2_audit | `reports/skill_os2_audit.json` | present | `e12318b1e083` | | world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `76a3f8e2b12b` | | world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `1cb74eaa978b` | | world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `99a0ba234d59` | @@ -91,7 +92,7 @@ This report proves local benchmark reproducibility only. It keeps external provi | world_class_operator_runbook | `reports/world_class_operator_runbook.json` | present | `f5ca32d5ea8b` | | world_class_operator_runbook_markdown | `reports/world_class_operator_runbook.md` | present | `260d5e03c52e` | | world_class_operator_runbook_html | `reports/world_class_operator_runbook.html` | present | `04cc091b113f` | -| world_class_claim_guard | `reports/world_class_claim_guard.json` | present | `06921f060b4c` | +| world_class_claim_guard | `reports/world_class_claim_guard.json` | present | `7359ad2ef09d` | ## Reproduction Commands diff --git a/reports/compiled_targets.json b/reports/compiled_targets.json index c53dc830..8032bb49 100644 --- a/reports/compiled_targets.json +++ b/reports/compiled_targets.json @@ -421,7 +421,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -451,6 +451,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -532,14 +533,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -561,7 +562,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -674,7 +675,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -704,6 +705,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -785,14 +787,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -812,7 +814,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -1322,7 +1324,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -1352,6 +1354,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -1433,14 +1436,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -1462,7 +1465,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -1575,7 +1578,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -1605,6 +1608,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -1686,14 +1690,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -1713,7 +1717,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -2223,7 +2227,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -2253,6 +2257,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -2334,14 +2339,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -2363,7 +2368,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -2469,7 +2474,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -2499,6 +2504,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -2580,14 +2586,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -2607,7 +2613,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -3108,7 +3114,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -3138,6 +3144,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -3219,14 +3226,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -3248,7 +3255,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -3354,7 +3361,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -3384,6 +3391,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -3465,14 +3473,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -3492,7 +3500,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -3993,7 +4001,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -4023,6 +4031,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -4104,14 +4113,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -4133,7 +4142,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -4243,7 +4252,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -4273,6 +4282,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -4354,14 +4364,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -4381,7 +4391,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, diff --git a/reports/context_budget.json b/reports/context_budget.json index bcac3a49..0d91a6b1 100644 --- a/reports/context_budget.json +++ b/reports/context_budget.json @@ -6,16 +6,16 @@ "context_budget_tier": "production", "context_budget_limit": 1000, "skill_body_tokens": 767, - "other_text_tokens": 987793, + "other_text_tokens": 1001283, "estimated_initial_load_tokens": 960, - "estimated_total_text_tokens": 988560, - "deferred_resource_tokens": 454804, + "estimated_total_text_tokens": 1002050, + "deferred_resource_tokens": 461032, "deferred_resource_warn_threshold": 120000, "deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 405593, - "file_count": 114 + "estimated_tokens": 411821, + "file_count": 115 }, { "path": "references", @@ -31,8 +31,8 @@ "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 405593, - "file_count": 114 + "estimated_tokens": 411821, + "file_count": 115 } ], "deferred_resource_governance": { @@ -54,14 +54,14 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 405593, - "file_count": 114, + "estimated_tokens": 411821, + "file_count": 115, "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": 563, + "relevant_file_count": 570, "unused_resource_dirs": [], "quality_signal_points": 130, "quality_density": 135.4 diff --git a/reports/context_budget.md b/reports/context_budget.md index 7944e78a..d58edfaf 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 | 960 | 767 | 454804 | `governed` | scripts:405593 | 135.4 | - | ok | +| root | `.` | `production` | 1000 | 960 | 767 | 461032 | `governed` | scripts:411821 | 135.4 | - | 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 7eda83a8..4d0a791e 100644 --- a/reports/context_budget_summary.json +++ b/reports/context_budget_summary.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-06-16", + "generated_at": "2026-03-31", "targets": [ { "label": "root", @@ -8,12 +8,12 @@ "budget_limit": 1000, "initial_tokens": 960, "skill_body_tokens": 767, - "deferred_resource_tokens": 454804, + "deferred_resource_tokens": 461032, "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 405593, - "file_count": 114 + "estimated_tokens": 411821, + "file_count": 115 } ], "deferred_resource_governance": { @@ -35,8 +35,8 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 405593, - "file_count": 114, + "estimated_tokens": 411821, + "file_count": 115, "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 ebbef32d..12711c97 100644 --- a/reports/evidence_consistency.json +++ b/reports/evidence_consistency.json @@ -74,6 +74,7 @@ "python3 scripts/render_world_class_submission_review.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_world_class_operator_runbook.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_world_class_claim_guard.py . --generated-at \"$GENERATED_AT\"": true, + "python3 scripts/render_daily_skillops_report.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_skill_os2_audit.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_skill_os2_coverage.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_context_reports.py --generated-at \"$GENERATED_AT\"": true, @@ -88,6 +89,7 @@ "clean_lock_commands": { "python3 scripts/render_context_reports.py --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_benchmark_reproducibility.py . --generated-at \"$GENERATED_AT\"": true, + "python3 scripts/render_daily_skillops_report.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_skill_overview.py .": true, "python3 scripts/render_skill_interpretation.py .": true, "python3 scripts/render_review_viewer.py .": true, @@ -122,6 +124,7 @@ "python3 scripts/render_world_class_submission_review.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_world_class_operator_runbook.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_world_class_claim_guard.py . --generated-at \"$GENERATED_AT\"": true, + "python3 scripts/render_daily_skillops_report.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_skill_os2_audit.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_skill_os2_coverage.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_context_reports.py --generated-at \"$GENERATED_AT\"": true, @@ -136,6 +139,7 @@ "clean_lock_commands": { "python3 scripts/render_context_reports.py --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_benchmark_reproducibility.py . --generated-at \"$GENERATED_AT\"": true, + "python3 scripts/render_daily_skillops_report.py . --generated-at \"$GENERATED_AT\"": true, "python3 scripts/render_skill_overview.py .": true, "python3 scripts/render_skill_interpretation.py .": true, "python3 scripts/render_review_viewer.py .": true, @@ -168,6 +172,7 @@ "reports/skill-interpretation.json", "reports/review-viewer.json", "reports/world_class_evidence_preflight.json", + "reports/skillops/daily", "reports/review-studio.json", "reports/evidence_consistency.json" ], @@ -179,12 +184,12 @@ "status": "pass", "expected": { "status": "pass", - "detail": "initial load 960/1000; deferred 454804/120000; top deferred scripts 405593; resource governance governed; quality density 135.4", + "detail": "initial load 960/1000; deferred 461032/120000; top deferred scripts 411821; resource governance governed; quality density 135.4", "evidence": "reports/context_budget.json" }, "actual": { "status": "pass", - "detail": "initial load 960/1000; deferred 454804/120000; top deferred scripts 405593; resource governance governed; quality density 135.4", + "detail": "initial load 960/1000; deferred 461032/120000; top deferred scripts 411821; resource governance governed; quality density 135.4", "evidence": "reports/context_budget.json" }, "paths": [ @@ -197,8 +202,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" ], @@ -238,8 +243,8 @@ "key": "overview-benchmark-commit", "label": "overview embeds the benchmark commit", "status": "pass", - "expected": "c5165be99c8b5c2c9c07bd6017716e874567920c", - "actual": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "expected": "5cb10444c49c40d58b76784e6c4bf993c863e827", + "actual": "5cb10444c49c40d58b76784e6c4bf993c863e827", "paths": [ "reports/benchmark_reproducibility.json", "reports/skill-overview.json" @@ -251,30 +256,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": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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", @@ -384,8 +389,8 @@ "key": "interpretation-benchmark-commit", "label": "interpretation embeds the benchmark commit", "status": "pass", - "expected": "c5165be99c8b5c2c9c07bd6017716e874567920c", - "actual": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "expected": "5cb10444c49c40d58b76784e6c4bf993c863e827", + "actual": "5cb10444c49c40d58b76784e6c4bf993c863e827", "paths": [ "reports/benchmark_reproducibility.json", "reports/skill-interpretation.json" @@ -397,30 +402,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": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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", @@ -1502,7 +1507,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -1514,10 +1519,10 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], - "file_count": 406, + "file_count": 411, "folder_count": 4, "distribution": [ { @@ -1542,7 +1547,7 @@ }, { "label": "scripts", - "value": 114 + "value": 115 }, { "label": "evals", @@ -1550,7 +1555,7 @@ }, { "label": "reports", - "value": 225 + "value": 229 } ] }, @@ -1590,7 +1595,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -1602,10 +1607,10 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], - "file_count": 406, + "file_count": 411, "folder_count": 4, "distribution": [ { @@ -1630,7 +1635,7 @@ }, { "label": "scripts", - "value": 114 + "value": 115 }, { "label": "evals", @@ -1638,7 +1643,7 @@ }, { "label": "reports", - "value": 225 + "value": 229 } ] }, @@ -2275,15 +2280,15 @@ "`16` gates", "`3` warnings", "`31` declared internal modules", - "`83 / 83` CLI help smoke checks passing across `114` scripts", - "`626` zip entries", - "archive with `626` entries", + "`84 / 84` CLI help smoke checks passing across `115` scripts", + "`630` zip entries", + "archive with `630` entries", "`12` installer permission checks enforced", "`0` permission failures", "`25` required artifacts", "`23` reproduction commands", "initial load `960/1000`", - "target count is `77`" + "target count is `78`" ], "actual": "all present", "paths": [ diff --git a/reports/evidence_consistency.md b/reports/evidence_consistency.md index 1db09a2a..803d0e5a 100644 --- a/reports/evidence_consistency.md +++ b/reports/evidence_consistency.md @@ -17,7 +17,7 @@ This gate compares generated evidence reports against each other. It does not cr | Check | Status | Detail | Paths | | --- | --- | --- | --- | | Required report artifacts are readable | `pass` | The consistency gate can only be trusted when every source JSON report parses and every source Markdown report is readable. | `reports/benchmark_reproducibility.json`, `reports/skill-overview.json`, `reports/skill-interpretation.json`, `reports/adoption_drift_report.json`, `reports/world_class_evidence_ledger.json`, `reports/world_class_evidence_plan.json`, `reports/world_class_evidence_intake.json`, `reports/world_class_evidence_preflight.json`, `reports/world_class_submission_review.json`, `reports/world_class_operator_runbook.json`, `reports/skill_os2_coverage.json`, `reports/review-studio.json`, `reports/package_verification.json`, `reports/install_simulation.json`, `reports/security_trust_report.json`, `reports/context_budget.json`, `reports/world_class_claim_guard.json`, `reports/skill-os-2-review.md` | -| Release evidence flow covers first-class reports | `pass` | Release refresh and clean-lock instructions must regenerate every first-class report before evidence consistency can be trusted. | `AGENTS.md`, `reports/output_execution_runs.json`, `reports/install_simulation.json`, `reports/security_trust_report.json`, `reports/registry_audit.json`, `reports/package_verification.json`, `reports/upgrade_check.json`, `reports/adoption_drift_report.json`, `reports/architecture_maintainability.json`, `reports/python_compatibility.json`, `reports/runtime_permission_probes.json`, `reports/review_waivers.json`, `reports/review_annotations.json`, `reports/skill_atlas.json`, `reports/skill_os2_audit.json`, `reports/skill_os2_coverage.json`, `reports/context_budget.json`, `reports/context_budget_summary.json`, `reports/benchmark_reproducibility.json`, `reports/skill-overview.json`, `reports/skill-interpretation.json`, `reports/review-viewer.json`, `reports/world_class_evidence_preflight.json`, `reports/review-studio.json`, `reports/evidence_consistency.json` | +| Release evidence flow covers first-class reports | `pass` | Release refresh and clean-lock instructions must regenerate every first-class report before evidence consistency can be trusted. | `AGENTS.md`, `reports/output_execution_runs.json`, `reports/install_simulation.json`, `reports/security_trust_report.json`, `reports/registry_audit.json`, `reports/package_verification.json`, `reports/upgrade_check.json`, `reports/adoption_drift_report.json`, `reports/architecture_maintainability.json`, `reports/python_compatibility.json`, `reports/runtime_permission_probes.json`, `reports/review_waivers.json`, `reports/review_annotations.json`, `reports/skill_atlas.json`, `reports/skill_os2_audit.json`, `reports/skill_os2_coverage.json`, `reports/context_budget.json`, `reports/context_budget_summary.json`, `reports/benchmark_reproducibility.json`, `reports/skill-overview.json`, `reports/skill-interpretation.json`, `reports/review-viewer.json`, `reports/world_class_evidence_preflight.json`, `reports/skillops/daily`, `reports/review-studio.json`, `reports/evidence_consistency.json` | | Review Studio mirrors context budget governance | `pass` | Review Studio must not keep stale context warnings after context reports prove large deferred resources are governed. | `reports/context_budget.json`, `reports/review-studio.json` | | Benchmark release lock matches git dirty state | `pass` | The benchmark release lock must reflect the generation-time git dirty flag. | `reports/benchmark_reproducibility.json` | | Human-facing reports expose the canonical Skill IR artifact | `pass` | Skill IR is the 2.0 platform-neutral semantic source, so user-facing reports must link to the artifact that actually exists. | `reports/skill-overview.json`, `reports/skill-interpretation.json`, `reports/review-studio.json`, `skill-ir/examples/yao-meta-skill.json` | diff --git a/reports/install_simulation.json b/reports/install_simulation.json index 934c04eb..fe6b31c1 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": 626, + "archive_entry_count": 630, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, diff --git a/reports/output_execution_runs.json b/reports/output_execution_runs.json index bbe6bae4..54e058be 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": 26.99, + "duration_ms": 26.59, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -62,7 +62,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 26.18, + "duration_ms": 26.63, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -85,7 +85,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 27.21, + "duration_ms": 26.48, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -113,7 +113,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.96, + "duration_ms": 26.32, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -136,7 +136,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.52, + "duration_ms": 26.47, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -164,7 +164,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 27.04, + "duration_ms": 25.93, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -187,7 +187,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 26.2, + "duration_ms": 27.1, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -214,7 +214,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 26.13, + "duration_ms": 26.64, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -237,7 +237,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 37.37, + "duration_ms": 26.21, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -266,7 +266,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.83, + "duration_ms": 25.96, "provider": "local-output-eval-runner", "model": "", "usage": { diff --git a/reports/output_execution_runs.md b/reports/output_execution_runs.md index 44a29b86..25000e36 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 | 26.99 | 33 | 0.0 | pass | -| skill-package-contract | with_skill | command | local-output-eval-runner | 26.18 | 73 | 100.0 | pass | -| output-eval-expectation | baseline | command | local-output-eval-runner | 27.21 | 36 | 0.0 | pass | -| output-eval-expectation | with_skill | command | local-output-eval-runner | 29.96 | 80 | 100.0 | pass | -| ir-before-packaging | baseline | command | local-output-eval-runner | 29.52 | 33 | 0.0 | pass | -| ir-before-packaging | with_skill | command | local-output-eval-runner | 27.04 | 80 | 100.0 | pass | -| near-neighbor-boundary | baseline | command | local-output-eval-runner | 26.2 | 36 | 0.0 | pass | -| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 26.13 | 65 | 100.0 | pass | -| file-backed-governed-package | baseline | command | local-output-eval-runner | 37.37 | 37 | 0.0 | pass | -| file-backed-governed-package | with_skill | command | local-output-eval-runner | 29.83 | 98 | 100.0 | pass | +| skill-package-contract | baseline | command | local-output-eval-runner | 26.59 | 33 | 0.0 | pass | +| skill-package-contract | with_skill | command | local-output-eval-runner | 26.63 | 73 | 100.0 | pass | +| output-eval-expectation | baseline | command | local-output-eval-runner | 26.48 | 36 | 0.0 | pass | +| output-eval-expectation | with_skill | command | local-output-eval-runner | 26.32 | 80 | 100.0 | pass | +| ir-before-packaging | baseline | command | local-output-eval-runner | 26.47 | 33 | 0.0 | pass | +| ir-before-packaging | with_skill | command | local-output-eval-runner | 25.93 | 80 | 100.0 | pass | +| near-neighbor-boundary | baseline | command | local-output-eval-runner | 27.1 | 36 | 0.0 | pass | +| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 26.64 | 65 | 100.0 | pass | +| file-backed-governed-package | baseline | command | local-output-eval-runner | 26.21 | 37 | 0.0 | pass | +| file-backed-governed-package | with_skill | command | local-output-eval-runner | 25.96 | 98 | 100.0 | pass | ## Next Fixes diff --git a/reports/package_verification.json b/reports/package_verification.json index 8c9d8b9a..e5437749 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": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", - "archive_entry_count": 626, + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", + "archive_entry_count": 630, "failure_count": 0, "warning_count": 0 }, diff --git a/reports/package_verification.md b/reports/package_verification.md index 670257dd..4cb26b4a 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: `feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53` +- Archive SHA256: `a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0` - Failures: `0` - Warnings: `0` diff --git a/reports/python_compatibility.json b/reports/python_compatibility.json index 046b2c98..c97d415f 100644 --- a/reports/python_compatibility.json +++ b/reports/python_compatibility.json @@ -5,7 +5,7 @@ "root": ".", "summary": { "target_python": "3.11", - "file_count": 182, + "file_count": 184, "issue_count": 0, "syntax_error_count": 0, "fstring_311_violation_count": 0, @@ -274,6 +274,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "scripts/render_daily_skillops_report.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "scripts/render_description_drift_history.py", "ok": true, @@ -778,6 +784,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "tests/verify_daily_skillops.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "tests/verify_description_optimization.py", "ok": true, diff --git a/reports/python_compatibility.md b/reports/python_compatibility.md index 0a99e1b0..f81138a7 100644 --- a/reports/python_compatibility.md +++ b/reports/python_compatibility.md @@ -6,7 +6,7 @@ Generated at: `2026-06-16` - decision: `pass` - target python: `3.11` -- files scanned: `182` +- files scanned: `184` - issues: `0` - syntax errors: `0` - f-string 3.11 violations: `0` diff --git a/reports/registry_audit.json b/reports/registry_audit.json index a2037dfc..a1ae29b5 100644 --- a/reports/registry_audit.json +++ b/reports/registry_audit.json @@ -21,8 +21,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, "compatibility": { "openai": "pass", @@ -53,7 +53,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] }, diff --git a/reports/registry_audit.md b/reports/registry_audit.md index 008deb6e..e980e7cc 100644 --- a/reports/registry_audit.md +++ b/reports/registry_audit.md @@ -6,8 +6,8 @@ - Maturity: `governed` - Owner: `Yao Team` - License: `MIT` -- Package SHA256: `bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf` -- Archive SHA256: `feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53` +- Package SHA256: `b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083` +- Archive SHA256: `a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0` - Install simulated: `True` ## Compatibility diff --git a/reports/review-studio.html b/reports/review-studio.html index 5529c829..02a8da0c 100644 --- a/reports/review-studio.html +++ b/reports/review-studio.html @@ -676,12 +676,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

114 scripts scanned; secrets found

Py Compat0

182 files scanned for Python 3.11

Arch Debt0

899 largest lines; 11 watchlist; 65 CLI handlers; 18 in entrypoint

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Waivers0

0 gates covered; human risk decisions

Intake4/4

0 valid submissions; 0 invalid

Claim Guard0

176 public surfaces scanned

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

626 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

115 scripts scanned; secrets found

Py Compat0

184 files scanned for Python 3.11

Arch Debt0

899 largest lines; 11 watchlist; 66 CLI handlers; 18 in entrypoint

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Waivers0

0 gates covered; human risk decisions

Intake4/4

0 valid submissions; 0 invalid

Claim Guard0

178 public surfaces scanned

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

630 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 960/1000; deferred 454804/120000; top deferred scripts 405593; resource governance governed; quality density 135.4

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

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

reports/security_trust_report.json 证据
通过

Python 兼容

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

reports/python_compatibility.json 证据
通过

架构维护

179 Python files; 0 hotspots; 11 watchlist files; 0 blockers; largest 899 lines; 65 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

reports/adoption_drift_report.json 证据
关注

人工批准

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 960/1000; deferred 461032/120000; top deferred scripts 411821; resource governance governed; quality density 135.4

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

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

reports/security_trust_report.json 证据
通过

Python 兼容

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

reports/python_compatibility.json 证据
通过

架构维护

181 Python files; 0 hotspots; 11 watchlist files; 0 blockers; largest 899 lines; 66 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

reports/adoption_drift_report.json 证据
关注

人工批准

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

@@ -743,17 +743,17 @@
-

上下文

initial load 960/1000; deferred 454804/120000; top deferred scripts 405593; resource governance governed; quality density 135.4

+

上下文

initial load 960/1000; deferred 461032/120000; top deferred scripts 411821; resource governance governed; quality density 135.4

编译证据

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

-

信任报告

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

信任报告

Secret
0
脚本数
115
网络脚本
3
Help 失败
0
包体哈希
b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083

安全边界

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

-

Python 兼容

目标 Python
3.11
文件数
182
问题数
0
语法错误
0
F-string 3.11
0
+

Python 兼容

目标 Python
3.11
文件数
184
问题数
0
语法错误
0
F-string 3.11
0

解释器边界

CI 和发布审查以 Python 3.11 兼容为底线;本地更高版本允许的新语法不能绕过兼容门禁。

@@ -801,13 +801,13 @@
-

蓝图覆盖

项目数
21
模块数
8
建议 PR
13
通过数
21
Warn Count
0
缺失数
0
Extension Track Count
2
Extension Covered Count
2
Extension Partial Count
0
Extension Planned Count
0
Adaptive Extension Ready
本地蓝图
世界级
待补证据
4
+

蓝图覆盖

项目数
21
模块数
8
建议 PR
13
通过数
21
Warn Count
0
缺失数
0
Extension Track Count
3
Extension Covered Count
3
Extension Partial Count
0
Extension Planned Count
0
Adaptive Extension Ready
本地蓝图
世界级
待补证据
4

覆盖边界

蓝图覆盖只证明 2.0 模块、建议 PR、脚本、报告和测试在本地闭环;public world-class 仍以 world-class evidence ledger 的真人和外部证据为准。

-

公开声明

本地复现
发布锁
可公开声明
声明阻断
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)
@@ -821,18 +821,18 @@
-

声明守卫

台账可声明
台账待补
4
声明面
176
违规数
0
Overclaim Guard Active
+

声明守卫

台账可声明
台账待补
4
声明面
178
违规数
0
Overclaim Guard Active

声明边界

claim guard 扫描 README、docs 和 reports 中的完成态表述;ledger 未 ready 时,任何英文完成断言、true 状态声明或中文完成态都会阻断发布审查。

注册审计

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
归档哈希
feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53
+

包体元数据

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

发布路线

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

-

包体验证

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

包体验证

目标数
4
Adapter
4
归档存在
Zip 条目
630
失败数
0
警告数
0
归档哈希
a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0
diff --git a/reports/review-studio.json b/reports/review-studio.json index 3c40acb1..abd24050 100644 --- a/reports/review-studio.json +++ b/reports/review-studio.json @@ -43,7 +43,7 @@ "key": "context-budget", "label": "上下文", "status": "pass", - "detail": "initial load 960/1000; deferred 454804/120000; top deferred scripts 405593; resource governance governed; quality density 135.4", + "detail": "initial load 960/1000; deferred 461032/120000; top deferred scripts 411821; resource governance governed; quality density 135.4", "evidence": "reports/context_budget.json", "link": "context_budget.md" }, @@ -59,7 +59,7 @@ "key": "trust-report", "label": "信任报告", "status": "pass", - "detail": "0 secrets; 114 scripts; 3 network-capable scripts; 0 help smoke failures", + "detail": "0 secrets; 115 scripts; 3 network-capable scripts; 0 help smoke failures", "evidence": "reports/security_trust_report.json", "link": "security_trust_report.md" }, @@ -67,7 +67,7 @@ "key": "python-compat", "label": "Python 兼容", "status": "pass", - "detail": "Python 3.11; 182 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards", + "detail": "Python 3.11; 184 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards", "evidence": "reports/python_compatibility.json", "link": "python_compatibility.md" }, @@ -75,7 +75,7 @@ "key": "architecture-maintainability", "label": "架构维护", "status": "pass", - "detail": "179 Python files; 0 hotspots; 11 watchlist files; 0 blockers; largest 899 lines; 65 CLI handlers; 18 in entrypoint", + "detail": "181 Python files; 0 hotspots; 11 watchlist files; 0 blockers; largest 899 lines; 66 CLI handlers; 18 in entrypoint", "evidence": "reports/architecture_maintainability.json", "link": "architecture_maintainability.md" }, @@ -1194,7 +1194,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -1206,10 +1206,10 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], - "file_count": 406, + "file_count": 411, "folder_count": 4, "distribution": [ { @@ -1234,7 +1234,7 @@ }, { "label": "scripts", - "value": 114 + "value": 115 }, { "label": "evals", @@ -1242,7 +1242,7 @@ }, { "label": "reports", - "value": 225 + "value": 229 } ] }, @@ -1364,7 +1364,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -1376,7 +1376,7 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], "strengths": [ @@ -1678,13 +1678,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": "04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31", - "source_contract_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "evidence_bundle_sha256": "4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -1702,11 +1702,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": 60 }, - "commit": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "commit": "5cb10444c49c40d58b76784e6c4bf993c863e827", "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.", @@ -1790,8 +1790,8 @@ "failures": [] }, "trust_security": { - "scanned_files": 201, - "script_count": 114, + "scanned_files": 202, + "script_count": 115, "internal_module_count": 31, "secret_findings": 0, "dependency_files": [ @@ -1800,18 +1800,18 @@ "network_script_count": 3, "network_policy_covered_count": 3, "network_policy_missing_count": 0, - "file_write_script_count": 70, + "file_write_script_count": 71, "permission_required_count": 3, "permission_approved_count": 3, "permission_missing_count": 0, "permission_invalid_count": 0, "permission_expired_count": 0, - "help_smoke_checked_count": 83, + "help_smoke_checked_count": 84, "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 201, - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_hash_file_count": 202, + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" }, "skill_atlas": { "skill_count": 12, @@ -1849,8 +1849,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, "compatibility": { "openai": "pass", @@ -1881,7 +1881,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1897,8 +1897,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", - "archive_entry_count": 626, + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", + "archive_entry_count": 630, "failure_count": 0, "warning_count": 0 }, @@ -1909,7 +1909,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 626, + "archive_entry_count": 630, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1976,12 +1976,12 @@ { "field": "archive_sha256", "from": "", - "to": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "to": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "to": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] }, @@ -4348,7 +4348,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 26.99, + "duration_ms": 26.59, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4376,7 +4376,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 26.18, + "duration_ms": 26.63, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4399,7 +4399,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 27.21, + "duration_ms": 26.48, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4427,7 +4427,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.96, + "duration_ms": 26.32, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4450,7 +4450,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.52, + "duration_ms": 26.47, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4478,7 +4478,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 27.04, + "duration_ms": 25.93, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4501,7 +4501,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 26.2, + "duration_ms": 27.1, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4528,7 +4528,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 26.13, + "duration_ms": 26.64, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4551,7 +4551,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 37.37, + "duration_ms": 26.21, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -4580,7 +4580,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.83, + "duration_ms": 25.96, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -5301,23 +5301,36 @@ "ok": true, "generated_at": "2026-06-16", "skill_dir": ".", - "commit": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "commit": "5cb10444c49c40d58b76784e6c4bf993c863e827", "git_status": { "available": true, - "dirty": false, - "changed_file_count": 0, - "sample": [], + "dirty": true, + "changed_file_count": 60, + "sample": [ + " M AGENTS.md", + " M Makefile", + " M README.md", + " M registry/index.json", + " M registry/packages/yao-meta-skill.json", + " M reports/adaptation_proposals.json", + " M reports/adaptation_proposals.md", + " M reports/adoption_drift_report.json", + " M reports/architecture_maintainability.json", + " M reports/architecture_maintainability.md", + " M reports/benchmark_reproducibility.json", + " M reports/benchmark_reproducibility.md" + ], "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": "04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31", - "source_contract_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "evidence_bundle_sha256": "4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "output_case_count": 5, "failure_disclosure_count": 3, "command_count": 23, @@ -5335,14 +5348,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": 60 }, "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)", @@ -5351,10 +5365,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": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "ready": false, + "commit": "5cb10444c49c40d58b76784e6c4bf993c863e827", "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)", @@ -5362,7 +5376,7 @@ "existing_count": 25, "missing_count": 0, "missing_paths": [], - "sha256": "04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31" + "sha256": "4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd" }, "methodology": { "path": "reports/benchmark_methodology.md", @@ -5436,7 +5450,7 @@ "path": "reports/output_execution_runs.json", "exists": true, "bytes": 7966, - "sha256": "309b2847cf0db6119af307ae7bbb2d573ddfa47518fa9205143addb444a9f410" + "sha256": "6fa9f0b5a294f5373de752e5881c1e6c1a996b65995bd83517a10e691c5e4abd" }, { "label": "blind_review", @@ -5470,43 +5484,43 @@ "label": "trust_report", "path": "reports/security_trust_report.json", "exists": true, - "bytes": 112030, - "sha256": "d9f521542fc5c6a231fe875979ac2dcae170d603678935a6d8645c52a1ed669b" + "bytes": 113207, + "sha256": "ba3b69b8eb33e907fb14a4e86c70bc6dd05d666baa6b8dbce787a03a156663a7" }, { "label": "python_compatibility", "path": "reports/python_compatibility.json", "exists": true, - "bytes": 23652, - "sha256": "64047e1708873e20cd99a85bca88bdd36417cbda432ba2b5cb14b84558ace814" + "bytes": 23905, + "sha256": "aa89183f58b2f29927cb6ce07465985583cb3ae410f0cbb48813cd10e6687743" }, { "label": "registry_audit", "path": "reports/registry_audit.json", "exists": true, "bytes": 3183, - "sha256": "3c4b554a46465d08f18530ad004ab46f7f6b10f14f733190e4c63ce47b2c881e" + "sha256": "ba8c24683f0e4d89d3d77f90c3cce8fa9dea52c93f8da8f23da127abe634eda3" }, { "label": "package_verification", "path": "reports/package_verification.json", "exists": true, "bytes": 19338, - "sha256": "eb9916629437168ba93bbc2f47bc25154442edcc458071e50e0cbbf826d4452b" + "sha256": "667250d991ae62ae20562fe195a7ebc8357d55e723e17a084c94fd432420da8e" }, { "label": "install_simulation", "path": "reports/install_simulation.json", "exists": true, "bytes": 8604, - "sha256": "e865fd484bd4eec278c36247ba60eb1496ffd9c7978cfbfb10e69ead744f04f3" + "sha256": "df390c15745131f8c626a0782c89c10c47a2293e8a92f84c997f477f2078bd76" }, { "label": "skill_os2_audit", "path": "reports/skill_os2_audit.json", "exists": true, "bytes": 14310, - "sha256": "eb21ab4344a64605f6dc6cba058aa6a51cfc15113a4529b1687230cd5cbe8e60" + "sha256": "e12318b1e083aaa85ffc81d142bb82c1e4bdee1caf0e4bcb0879e4a3ae2faf31" }, { "label": "world_class_evidence_plan", @@ -5568,8 +5582,8 @@ "label": "world_class_claim_guard", "path": "reports/world_class_claim_guard.json", "exists": true, - "bytes": 18028, - "sha256": "06921f060b4c800128558bccacd6096f66b8f1b8ca76d316e5b6289609d9c415" + "bytes": 18218, + "sha256": "7359ad2ef09dc0863014aab541a92a1f3e55f18f0c0446816c1c7333cba256e9" } ], "missing_artifacts": [], @@ -5718,10 +5732,10 @@ "pass_count": 21, "warn_count": 0, "missing_count": 0, - "extension_track_count": 2, + "extension_track_count": 3, "extension_partial_count": 0, "extension_planned_count": 0, - "extension_covered_count": 2, + "extension_covered_count": 3, "adaptive_extension_ready": true, "local_blueprint_ready": true, "public_world_class_ready": false, @@ -5734,7 +5748,7 @@ "missing": 0 }, "extension_status_counts": { - "covered": 2 + "covered": 3 }, "modules": [ { @@ -5838,7 +5852,7 @@ "label": "Trust Security", "status": "pass", "objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.", - "current": "114 scripts; secrets 0; help failures 0", + "current": "115 scripts; secrets 0; help failures 0", "command": "python3 scripts/yao.py trust .", "test": "python3 tests/verify_trust_check.py", "evidence": [ @@ -5912,7 +5926,7 @@ "label": "Registry Distribution", "status": "pass", "objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.", - "current": "archive entries 626; install failures 0", + "current": "archive entries 630; 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": [ @@ -6439,22 +6453,50 @@ } ], "next_action": "Start with policy and read-only scan tests; do not read shell history or private logs unless the user provides an explicit source path." + }, + { + "key": "daily-skillops-report", + "label": "Daily SkillOps Report", + "status": "covered", + "objective": "Daily operations layer summarizes explicit-source conversation patterns, proposal-only adaptation work, approval state, release locks, and world-class evidence gaps.", + "current": "Daily SkillOps report is a CLI-backed, explicit-source operations cockpit with tests and committed dated evidence.", + "target": "Generate reports/skillops/daily/YYYY-MM-DD.* from explicit sources without private log scanning, source writes, auto-patching, or world-class overclaiming.", + "evidence": [ + { + "path": "scripts/render_daily_skillops_report.py", + "exists": true + }, + { + "path": "tests/verify_daily_skillops.py", + "exists": true + }, + { + "path": "reports/skillops/daily/2026-06-16.json", + "exists": true + }, + { + "path": "reports/skillops/daily/2026-06-16.md", + "exists": true + } + ], + "next_action": "Keep Daily SkillOps report aligned with proposal, approval, coverage, and world-class ledger contracts as the operations layer evolves." } ], "next_highest_leverage": [ "Close the four world-class evidence ledger entries with accepted human or external evidence.", "Keep the first-class skill interpretation report and Skill Overview v2 contract synchronized as the report model evolves.", - "Start adaptive self-iteration as explicit-source, proposal-only, approval-gated work; do not scan private logs by default.", + "Use Daily SkillOps with explicit curated sources to review adaptation proposals without scanning private logs or auto-patching.", "Keep the blueprint coverage report in CI so 2.0 plan drift is visible." ], "source_blueprint": { "title": "Skill Overview / Skill OS 2.0 upgrade plan", "core_module_count": 8, "recommended_pr_count": 13, - "reference_extension_count": 2, + "reference_extension_count": 3, "reference_extensions": [ "Skill interpretation report", - "Adaptive self-iteration with local preference memory and approval gates" + "Adaptive self-iteration with local preference memory and approval gates", + "Daily SkillOps operations report" ] }, "artifacts": { @@ -6885,7 +6927,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -6915,6 +6957,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -6996,14 +7039,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -7025,7 +7068,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -7138,7 +7181,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -7168,6 +7211,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -7249,14 +7293,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -7276,7 +7320,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -7786,7 +7830,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -7816,6 +7860,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -7897,14 +7942,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -7926,7 +7971,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -8039,7 +8084,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -8069,6 +8114,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -8150,14 +8196,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -8177,7 +8223,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -8687,7 +8733,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -8717,6 +8763,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -8798,14 +8845,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -8827,7 +8874,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -8933,7 +8980,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -8963,6 +9010,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -9044,14 +9092,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -9071,7 +9119,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -9572,7 +9620,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -9602,6 +9650,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -9683,14 +9732,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -9712,7 +9761,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -9818,7 +9867,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -9848,6 +9897,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -9929,14 +9979,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -9956,7 +10006,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -10457,7 +10507,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -10487,6 +10537,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -10568,14 +10619,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -10597,7 +10648,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -10707,7 +10758,7 @@ }, "file_write": { "required": true, - "script_count": 70, + "script_count": 71, "scripts": [ "scripts/adjudicate_output_review.py", "scripts/apply_adaptation.py", @@ -10737,6 +10788,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -10818,14 +10870,14 @@ }, "help_smoke": { "enabled": true, - "checked_count": 83, + "checked_count": 84, "failed_count": 0, "failed_scripts": [] }, "trust_summary": { "secret_findings": 0, "network_script_count": 3, - "file_write_script_count": 70, + "file_write_script_count": 71, "subprocess_script_count": 10, "interactive_script_count": 0, "help_smoke_failed_count": 0 @@ -10845,7 +10897,7 @@ ], "capability_counts": { "network": 3, - "file_write": 70, + "file_write": 71, "subprocess": 10, "interactive": 0 }, @@ -11585,8 +11637,8 @@ "ok": true, "skill_dir": ".", "summary": { - "scanned_files": 201, - "script_count": 114, + "scanned_files": 202, + "script_count": 115, "internal_module_count": 31, "secret_findings": 0, "dependency_files": [ @@ -11595,18 +11647,18 @@ "network_script_count": 3, "network_policy_covered_count": 3, "network_policy_missing_count": 0, - "file_write_script_count": 70, + "file_write_script_count": 71, "permission_required_count": 3, "permission_approved_count": 3, "permission_missing_count": 0, "permission_invalid_count": 0, "permission_expired_count": 0, - "help_smoke_checked_count": 83, + "help_smoke_checked_count": 84, "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 201, - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_hash_file_count": 202, + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" }, "failures": [], "warnings": [], @@ -12171,6 +12223,20 @@ "network_urls": [], "network_hosts": [] }, + { + "path": "scripts/render_daily_skillops_report.py", + "interface": "cli", + "interface_declared": true, + "interface_reason": "Renders a Daily SkillOps report that summarizes explicit-source patterns, proposals, approval state, and release evidence without scanning private logs or applying patches.", + "has_argparse": true, + "has_main_guard": true, + "uses_input": false, + "uses_network": false, + "uses_file_write": true, + "uses_subprocess": false, + "network_urls": [], + "network_hosts": [] + }, { "path": "scripts/render_description_drift_history.py", "interface": "cli", @@ -13256,9 +13322,9 @@ "help_smoke": { "enabled": true, "timeout_seconds": 5.0, - "candidate_count": 83, - "checked_count": 83, - "passed_count": 83, + "candidate_count": 84, + "checked_count": 84, + "passed_count": 84, "failed_count": 0, "skipped_count": 31, "failed_scripts": [], @@ -13623,6 +13689,16 @@ "stdout_excerpt": "usage: render_context_reports.py [-h] [--generated-at GENERATED_AT]\n\nRender context budget reports for root and example skills.\n\noptions:\n -h, --help show this help message and exit\n --generated-at GENERATED_AT\n ", "stderr_excerpt": "" }, + { + "path": "scripts/render_daily_skillops_report.py", + "command": "python3 scripts/render_daily_skillops_report.py --help", + "returncode": 0, + "timed_out": false, + "passed": true, + "has_help_text": true, + "stdout_excerpt": "usage: render_daily_skillops_report.py [-h] [--source SOURCE]\n [--patterns-json PATTERNS_JSON]\n [--proposals-json PROPOSALS_JSON]\n ", + "stderr_excerpt": "" + }, { "path": "scripts/render_description_drift_history.py", "command": "python3 scripts/render_description_drift_history.py --help", @@ -14301,6 +14377,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -14411,7 +14488,7 @@ "root": ".", "summary": { "target_python": "3.11", - "file_count": 182, + "file_count": 184, "issue_count": 0, "syntax_error_count": 0, "fstring_311_violation_count": 0, @@ -14680,6 +14757,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "scripts/render_daily_skillops_report.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "scripts/render_description_drift_history.py", "ok": true, @@ -15184,6 +15267,12 @@ "issue_count": 0, "issues": [] }, + { + "path": "tests/verify_daily_skillops.py", + "ok": true, + "issue_count": 0, + "issues": [] + }, { "path": "tests/verify_description_optimization.py", "ok": true, @@ -15533,12 +15622,12 @@ "generated_at": "2026-06-16", "skill_dir": ".", "summary": { - "python_file_count": 179, - "script_file_count": 114, - "test_file_count": 65, + "python_file_count": 181, + "script_file_count": 115, + "test_file_count": 66, "internal_module_count": 34, - "cli_script_count": 82, - "command_handler_count": 65, + "cli_script_count": 83, + "command_handler_count": 66, "entrypoint_command_handler_count": 18, "command_module_count": 6, "warn_line_threshold": 900, @@ -15567,7 +15656,7 @@ }, { "path": "scripts/yao_cli_parser.py", - "lines": 827, + "lines": 843, "kind": "internal-module", "severity": "pass", "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." @@ -15653,7 +15742,7 @@ }, { "path": "scripts/yao_cli_parser.py", - "lines": 827, + "lines": 843, "kind": "internal-module", "severity": "pass", "recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates." @@ -15730,16 +15819,16 @@ "context_budget_tier": "production", "context_budget_limit": 1000, "skill_body_tokens": 767, - "other_text_tokens": 987793, + "other_text_tokens": 1001283, "estimated_initial_load_tokens": 960, - "estimated_total_text_tokens": 988560, - "deferred_resource_tokens": 454804, + "estimated_total_text_tokens": 1002050, + "deferred_resource_tokens": 461032, "deferred_resource_warn_threshold": 120000, "deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 405593, - "file_count": 114 + "estimated_tokens": 411821, + "file_count": 115 }, { "path": "references", @@ -15755,8 +15844,8 @@ "large_deferred_resource_dirs": [ { "path": "scripts", - "estimated_tokens": 405593, - "file_count": 114 + "estimated_tokens": 411821, + "file_count": 115 } ], "deferred_resource_governance": { @@ -15778,14 +15867,14 @@ ], "missing": [], "path": "scripts", - "estimated_tokens": 405593, - "file_count": 114, + "estimated_tokens": 411821, + "file_count": 115, "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": 563, + "relevant_file_count": 570, "unused_resource_dirs": [], "quality_signal_points": 130, "quality_density": 135.4 @@ -16688,6 +16777,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", @@ -17660,7 +17750,7 @@ "adoption_drift": { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-16", + "generated_at": "2026-06-15T20:28:46Z", "skill_dir": ".", "privacy_contract": { "storage": "local-first", @@ -17848,7 +17938,7 @@ "adaptation_proposals": { "schema_version": "1.0", "ok": true, - "generated_at": "2026-06-15T00:00:00Z", + "generated_at": "2026-06-15T20:28:47Z", "skill_dir": ".", "source_patterns": "reports/user_patterns.json", "pattern_count": 5, @@ -20013,9 +20103,9 @@ "summary": { "ledger_ready_to_claim_world_class": false, "ledger_pending_count": 4, - "claim_surface_count": 176, - "json_claim_surface_count": 86, - "metadata_claim_surface_count": 87, + "claim_surface_count": 178, + "json_claim_surface_count": 87, + "metadata_claim_surface_count": 88, "package_claim_surface_count": 17, "violation_count": 0, "overclaim_guard_active": true, @@ -20617,6 +20707,14 @@ "path": "reports/skill_os2_coverage.md", "violation_count": 0 }, + { + "path": "reports/skillops/daily/2026-06-16.json", + "violation_count": 0 + }, + { + "path": "reports/skillops/daily/2026-06-16.md", + "violation_count": 0 + }, { "path": "reports/system-model.json", "violation_count": 0 @@ -20787,8 +20885,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, "compatibility": { "openai": "pass", @@ -20819,7 +20917,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -20844,7 +20942,7 @@ "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] }, @@ -20867,8 +20965,8 @@ "target_count": 4, "adapter_count": 4, "archive_present": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", - "archive_entry_count": 626, + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", + "archive_entry_count": 630, "failure_count": 0, "warning_count": 0 }, @@ -21533,7 +21631,7 @@ "installed_skill_dir": "dist/install-simulation/simulate-yao-meta-skill/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 626, + "archive_entry_count": 630, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -21875,12 +21973,12 @@ { "field": "archive_sha256", "from": "", - "to": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "to": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "to": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] }, diff --git a/reports/review-viewer.json b/reports/review-viewer.json index 8981e326..5739f1a3 100644 --- a/reports/review-viewer.json +++ b/reports/review-viewer.json @@ -513,7 +513,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -525,10 +525,10 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], - "file_count": 406, + "file_count": 411, "folder_count": 4, "distribution": [ { @@ -553,7 +553,7 @@ }, { "label": "scripts", - "value": 114 + "value": 115 }, { "label": "evals", @@ -561,7 +561,7 @@ }, { "label": "reports", - "value": 225 + "value": 229 } ] }, @@ -683,7 +683,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -695,7 +695,7 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], "strengths": [ @@ -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": "04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31", - "source_contract_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "evidence_bundle_sha256": "4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": 60 }, - "commit": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "commit": "5cb10444c49c40d58b76784e6c4bf993c863e827", "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,8 +1109,8 @@ "failures": [] }, "trust_security": { - "scanned_files": 201, - "script_count": 114, + "scanned_files": 202, + "script_count": 115, "internal_module_count": 31, "secret_findings": 0, "dependency_files": [ @@ -1119,18 +1119,18 @@ "network_script_count": 3, "network_policy_covered_count": 3, "network_policy_missing_count": 0, - "file_write_script_count": 70, + "file_write_script_count": 71, "permission_required_count": 3, "permission_approved_count": 3, "permission_missing_count": 0, "permission_invalid_count": 0, "permission_expired_count": 0, - "help_smoke_checked_count": 83, + "help_smoke_checked_count": 84, "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 201, - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_hash_file_count": 202, + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" }, "skill_atlas": { "skill_count": 12, @@ -1168,8 +1168,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, "compatibility": { "openai": "pass", @@ -1200,7 +1200,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", - "archive_entry_count": 626, + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", + "archive_entry_count": 630, "failure_count": 0, "warning_count": 0 }, @@ -1228,7 +1228,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 626, + "archive_entry_count": 630, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1295,12 +1295,12 @@ { "field": "archive_sha256", "from": "", - "to": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "to": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "to": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] }, diff --git a/reports/security_trust_report.json b/reports/security_trust_report.json index 158b068d..2394d2c5 100644 --- a/reports/security_trust_report.json +++ b/reports/security_trust_report.json @@ -2,8 +2,8 @@ "ok": true, "skill_dir": ".", "summary": { - "scanned_files": 201, - "script_count": 114, + "scanned_files": 202, + "script_count": 115, "internal_module_count": 31, "secret_findings": 0, "dependency_files": [ @@ -12,18 +12,18 @@ "network_script_count": 3, "network_policy_covered_count": 3, "network_policy_missing_count": 0, - "file_write_script_count": 70, + "file_write_script_count": 71, "permission_required_count": 3, "permission_approved_count": 3, "permission_missing_count": 0, "permission_invalid_count": 0, "permission_expired_count": 0, - "help_smoke_checked_count": 83, + "help_smoke_checked_count": 84, "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 201, - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_hash_file_count": 202, + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" }, "failures": [], "warnings": [], @@ -588,6 +588,20 @@ "network_urls": [], "network_hosts": [] }, + { + "path": "scripts/render_daily_skillops_report.py", + "interface": "cli", + "interface_declared": true, + "interface_reason": "Renders a Daily SkillOps report that summarizes explicit-source patterns, proposals, approval state, and release evidence without scanning private logs or applying patches.", + "has_argparse": true, + "has_main_guard": true, + "uses_input": false, + "uses_network": false, + "uses_file_write": true, + "uses_subprocess": false, + "network_urls": [], + "network_hosts": [] + }, { "path": "scripts/render_description_drift_history.py", "interface": "cli", @@ -1673,9 +1687,9 @@ "help_smoke": { "enabled": true, "timeout_seconds": 5.0, - "candidate_count": 83, - "checked_count": 83, - "passed_count": 83, + "candidate_count": 84, + "checked_count": 84, + "passed_count": 84, "failed_count": 0, "skipped_count": 31, "failed_scripts": [], @@ -2040,6 +2054,16 @@ "stdout_excerpt": "usage: render_context_reports.py [-h] [--generated-at GENERATED_AT]\n\nRender context budget reports for root and example skills.\n\noptions:\n -h, --help show this help message and exit\n --generated-at GENERATED_AT\n ", "stderr_excerpt": "" }, + { + "path": "scripts/render_daily_skillops_report.py", + "command": "python3 scripts/render_daily_skillops_report.py --help", + "returncode": 0, + "timed_out": false, + "passed": true, + "has_help_text": true, + "stdout_excerpt": "usage: render_daily_skillops_report.py [-h] [--source SOURCE]\n [--patterns-json PATTERNS_JSON]\n [--proposals-json PROPOSALS_JSON]\n ", + "stderr_excerpt": "" + }, { "path": "scripts/render_description_drift_history.py", "command": "python3 scripts/render_description_drift_history.py --help", @@ -2718,6 +2742,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", diff --git a/reports/security_trust_report.md b/reports/security_trust_report.md index d4815883..a835f0df 100644 --- a/reports/security_trust_report.md +++ b/reports/security_trust_report.md @@ -1,22 +1,22 @@ # Security Trust Report - OK: `True` -- Scanned files: `201` -- Scripts: `114` +- Scanned files: `202` +- Scripts: `115` - Internal script modules: `31` - Secret findings: `0` - Network-capable scripts: `3` - Network policy covered scripts: `3` - Network policy missing scripts: `0` -- File-write scripts: `70` +- File-write scripts: `71` - Permission approvals: `3 / 3` - Permission approval gaps: `0` -- CLI help smoke checked: `83` +- CLI help smoke checked: `84` - CLI help smoke failures: `0` - Interactive scripts: `0` - Package hash scope: `source-contract-without-generated-reports` -- Package hash files: `201` -- Package SHA256: `bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf` +- Package hash files: `202` +- Package SHA256: `b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083` ## Failures @@ -54,8 +54,8 @@ - Enabled: `True` - Timeout seconds: `5.0` -- Checked scripts: `83` -- Passed scripts: `83` +- Checked scripts: `84` +- Passed scripts: `84` - Failed scripts: `none` ## Script Surface @@ -101,6 +101,7 @@ | scripts/render_baseline_compare.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | | scripts/render_benchmark_reproducibility.py | cli | True | True | True | False | False | True | True | Renders a release-facing benchmark reproducibility manifest and Markdown report. | | scripts/render_context_reports.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | +| scripts/render_daily_skillops_report.py | cli | True | True | True | False | False | True | False | Renders a Daily SkillOps report that summarizes explicit-source patterns, proposals, approval state, and release evidence without scanning private logs or applying patches. | | scripts/render_description_drift_history.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | | scripts/render_eval_dashboard.py | cli | False | True | True | False | False | True | True | Default CLI classification; add SCRIPT_INTERFACE for internal modules. | | scripts/render_evidence_consistency.py | cli | True | True | True | False | False | True | False | Renders a cross-report evidence consistency gate for generated Skill OS reports. | diff --git a/reports/skill-interpretation.html b/reports/skill-interpretation.html index 63517181..e0a39f16 100644 --- a/reports/skill-interpretation.html +++ b/reports/skill-interpretation.html @@ -930,7 +930,7 @@

让 reviewer 快速确认关键文件、目录和资产分布。Lets reviewers confirm key files, directories, and asset distribution quickly.

-
资产分布Asset Distribution406项406 itemsSKILL.mdSKILL.mdREADME.mdREADME.mdagents/interface.yamlagents/interface.yamlmanifest.jsonmanifest.jsonreferencesreferencesscriptsscripts
资产分布图展示当前包体的文件和目录重心。The asset distribution chart shows where files and directories are concentrated.
+
资产分布Asset Distribution411项411 itemsSKILL.mdSKILL.mdREADME.mdREADME.mdagents/interface.yamlagents/interface.yamlmanifest.jsonmanifest.jsonreferencesreferencesscriptsscripts
资产分布图展示当前包体的文件和目录重心。The asset distribution chart shows where files and directories are concentrated.
diff --git a/reports/skill-interpretation.json b/reports/skill-interpretation.json index f2e84859..cf2d4393 100644 --- a/reports/skill-interpretation.json +++ b/reports/skill-interpretation.json @@ -513,7 +513,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -525,10 +525,10 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], - "file_count": 406, + "file_count": 411, "folder_count": 4, "distribution": [ { @@ -553,7 +553,7 @@ }, { "label": "scripts", - "value": 114 + "value": 115 }, { "label": "evals", @@ -561,7 +561,7 @@ }, { "label": "reports", - "value": 225 + "value": 229 } ] }, @@ -687,7 +687,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -699,7 +699,7 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], "strengths": [ @@ -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": "04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31", - "source_contract_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "evidence_bundle_sha256": "4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": 60 }, - "commit": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "commit": "5cb10444c49c40d58b76784e6c4bf993c863e827", "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,8 +1113,8 @@ "failures": [] }, "trust_security": { - "scanned_files": 201, - "script_count": 114, + "scanned_files": 202, + "script_count": 115, "internal_module_count": 31, "secret_findings": 0, "dependency_files": [ @@ -1123,18 +1123,18 @@ "network_script_count": 3, "network_policy_covered_count": 3, "network_policy_missing_count": 0, - "file_write_script_count": 70, + "file_write_script_count": 71, "permission_required_count": 3, "permission_approved_count": 3, "permission_missing_count": 0, "permission_invalid_count": 0, "permission_expired_count": 0, - "help_smoke_checked_count": 83, + "help_smoke_checked_count": 84, "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 201, - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_hash_file_count": 202, + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" }, "skill_atlas": { "skill_count": 12, @@ -1172,8 +1172,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, "compatibility": { "openai": "pass", @@ -1204,7 +1204,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", - "archive_entry_count": 626, + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", + "archive_entry_count": 630, "failure_count": 0, "warning_count": 0 }, @@ -1232,7 +1232,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 626, + "archive_entry_count": 630, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1299,12 +1299,12 @@ { "field": "archive_sha256", "from": "", - "to": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "to": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "to": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] }, diff --git a/reports/skill-os-2-review.md b/reports/skill-os-2-review.md index 220007eb..bb9e4786 100644 --- a/reports/skill-os-2-review.md +++ b/reports/skill-os-2-review.md @@ -114,13 +114,13 @@ Next move: add real client or installer permission enforcement integration. | Output Eval | `5` cases, with-skill pass rate `100`, baseline pass rate `0`, with file-backed, near-neighbor, boundary coverage, `10` local command-runner execution runs, `0` recorded fixture runs, `0` provider model-executed runs in root release evidence, `10` estimated token counts, provider runner v0 available, `5` blind A/B review pairs, a generated `reports/output_review_decisions.json` template, `0 / 5` reviewer decisions pending, `0` answer keys revealed, and `5` pending answers hidden | | Runtime Conformance | `5 / 5` targets passing | | Target Compiler | `5 / 5` compiled target contracts generated for OpenAI, Claude, generic, Agent Skills compatible, and VS Code / Copilot outputs, including target permission contracts and target-native behavior contracts | -| Trust | `0` secret findings, `1` pinned dependency file, `31` declared internal modules, `3 / 3` network-capable scripts covered by bounded host policy, `83 / 83` CLI help smoke checks passing across `114` scripts, source-contract hash scope explicit | +| Trust | `0` secret findings, `1` pinned dependency file, `31` declared internal modules, `3 / 3` network-capable scripts covered by bounded host policy, `84 / 84` CLI help smoke checks passing across `115` scripts, source-contract hash scope explicit | | Permission Governance | `3 / 3` required high-permission capabilities approved, `0` missing, `0` invalid, `0` expired | | Runtime Permission Probes | `4 / 4` target adapters probed, `0` native-enforcement adapters, `4` explicit metadata fallbacks, `4` residual risks retained for reviewer visibility | | Skill Atlas | `12` scanned skills, `1` actionable root skill, `1` telemetry report, `0` actionable route collisions, `0` actionable owner gaps, `0` actionable stale skills, `0` actionable drift signals, `24` scoped non-actionable issue signals retained for visibility | | Registry Audit | package metadata generated with version, owner, license, source checksum, archive checksum, Skill IR provenance, and compatibility matrix | -| Package Verification | `4 / 4` target adapters present, archive verified, `626` zip entries, `0` failures, `0` warnings | -| Install Simulation | archive with `626` 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, `630` zip entries, `0` failures, `0` warnings | +| Install Simulation | archive with `630` 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 | @@ -133,7 +133,7 @@ Next move: add real client or installer permission enforcement integration. | Benchmark Reproducibility | local reproducibility ready with `25` required artifacts, `0` missing artifacts, `23` reproduction commands, and `3` disclosed failure cases; provider and human evidence remain explicit limitations | | IR-first Packaging | `openai`, `claude`, `generic`, and `vscode` adapters include compiler contracts, permission contracts, target-native behavior contracts, IR provenance, semantic parity checks, and install-scope notes where applicable | | Context Budget | initial load `960/1000`, under the production budget | -| CI | `make ci-test` target count is `77` after the world-class preflight gate update | +| CI | `make ci-test` target count is `78` after the Daily SkillOps gate update | ## Next Highest-Leverage Moves diff --git a/reports/skill-overview.html b/reports/skill-overview.html index bb580ada..01fbe5aa 100644 --- a/reports/skill-overview.html +++ b/reports/skill-overview.html @@ -930,7 +930,7 @@

让 reviewer 快速确认关键文件、目录和资产分布。Lets reviewers confirm key files, directories, and asset distribution quickly.

-
资产分布Asset Distribution406项406 itemsSKILL.mdSKILL.mdREADME.mdREADME.mdagents/interface.yamlagents/interface.yamlmanifest.jsonmanifest.jsonreferencesreferencesscriptsscripts
资产分布图展示当前包体的文件和目录重心。The asset distribution chart shows where files and directories are concentrated.
+
资产分布Asset Distribution411项411 itemsSKILL.mdSKILL.mdREADME.mdREADME.mdagents/interface.yamlagents/interface.yamlmanifest.jsonmanifest.jsonreferencesreferencesscriptsscripts
资产分布图展示当前包体的文件和目录重心。The asset distribution chart shows where files and directories are concentrated.
路径Path作用Role类型Type
SKILL.mdSkill 入口文件Skill entrypoint文件file
README.md人类可读使用说明Human-readable usage guide文件file
agents/interface.yaml跨平台接口元数据Neutral interface metadata文件file
manifest.json生命周期与打包元数据Lifecycle and portability metadata文件file
references扩展指导与复用资料Extended guidance and reusable notes目录folder
scripts确定性脚本或本地工具Deterministic helpers or local tooling目录folder
evals触发与质量检查Trigger and quality checks目录folder
reports生成的证据与总结报告Generated evidence and overview artifacts目录folder
diff --git a/reports/skill-overview.json b/reports/skill-overview.json index 7f0e9461..6593ffde 100644 --- a/reports/skill-overview.json +++ b/reports/skill-overview.json @@ -512,7 +512,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -524,10 +524,10 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], - "file_count": 406, + "file_count": 411, "folder_count": 4, "distribution": [ { @@ -552,7 +552,7 @@ }, { "label": "scripts", - "value": 114 + "value": 115 }, { "label": "evals", @@ -560,7 +560,7 @@ }, { "label": "reports", - "value": 225 + "value": 229 } ] }, @@ -682,7 +682,7 @@ "path": "scripts", "label": "Deterministic helpers or local tooling", "kind": "folder", - "file_count": 114 + "file_count": 115 }, { "path": "evals", @@ -694,7 +694,7 @@ "path": "reports", "label": "Generated evidence and overview artifacts", "kind": "folder", - "file_count": 225 + "file_count": 229 } ], "strengths": [ @@ -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": "04bfae8616aaeae0f2d12d92db024b7609b242428a81a40f6ac271ef42aa3f31", - "source_contract_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "evidence_bundle_sha256": "4e46ec51849a179cd6db9ea908a7d49df080b3f10463d4a98e54aaa5968e37cd", + "source_contract_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": 60 }, - "commit": "c5165be99c8b5c2c9c07bd6017716e874567920c", + "commit": "5cb10444c49c40d58b76784e6c4bf993c863e827", "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,8 +1108,8 @@ "failures": [] }, "trust_security": { - "scanned_files": 201, - "script_count": 114, + "scanned_files": 202, + "script_count": 115, "internal_module_count": 31, "secret_findings": 0, "dependency_files": [ @@ -1118,18 +1118,18 @@ "network_script_count": 3, "network_policy_covered_count": 3, "network_policy_missing_count": 0, - "file_write_script_count": 70, + "file_write_script_count": 71, "permission_required_count": 3, "permission_approved_count": 3, "permission_missing_count": 0, "permission_invalid_count": 0, "permission_expired_count": 0, - "help_smoke_checked_count": 83, + "help_smoke_checked_count": 84, "help_smoke_failed_count": 0, "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", - "package_hash_file_count": 201, - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "package_hash_file_count": 202, + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" }, "skill_atlas": { "skill_count": 12, @@ -1167,8 +1167,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf", - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "package_sha256": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, "compatibility": { "openai": "pass", @@ -1199,7 +1199,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", "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": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53", - "archive_entry_count": 626, + "archive_sha256": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0", + "archive_entry_count": 630, "failure_count": 0, "warning_count": 0 }, @@ -1227,7 +1227,7 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 626, + "archive_entry_count": 630, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, @@ -1294,12 +1294,12 @@ { "field": "archive_sha256", "from": "", - "to": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "to": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "to": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] }, diff --git a/reports/skill_atlas.json b/reports/skill_atlas.json index f12ead15..ca6de4a8 100644 --- a/reports/skill_atlas.json +++ b/reports/skill_atlas.json @@ -103,6 +103,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", diff --git a/reports/skill_os2_audit.json b/reports/skill_os2_audit.json index 7ad7693d..5ef6a807 100644 --- a/reports/skill_os2_audit.json +++ b/reports/skill_os2_audit.json @@ -197,7 +197,7 @@ "key": "trust-security", "label": "Trust Security", "status": "pass", - "current": "secrets 0; scripts 114; help failures 0", + "current": "secrets 0; scripts 115; help failures 0", "target": "Secrets, scripts, dependencies, permissions, and package hash are reviewable", "evidence": [ { @@ -285,7 +285,7 @@ "key": "registry-distribution", "label": "Registry Distribution", "status": "pass", - "current": "zip entries 626; install failures 0; permission failures 0", + "current": "zip entries 630; 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 ba924770..106717e6 100644 --- a/reports/skill_os2_audit.md +++ b/reports/skill_os2_audit.md @@ -23,11 +23,11 @@ Generated at: `2026-06-16` | Human Adjudication | human-required | 0/5 decisions; pending 5 | Real reviewer decisions recorded before claiming output review completion | Record real A/B choices in the decision template, then regenerate adjudication. | | Benchmark Reproducibility | pass | artifacts 25; missing 0; failures 3 | Public methodology, reproducible commands, required artifacts, and failure disclosure are machine-checkable | Keep the manifest current with every benchmark, package, and release evidence change. | | Runtime Conformance | pass | 5/5 targets pass | Target package structure, metadata, relative paths, and degradation notes pass | Keep target conformance fixtures updated as platform contracts change. | -| Trust Security | pass | secrets 0; scripts 114; help failures 0 | Secrets, scripts, dependencies, permissions, and package hash are reviewable | Keep high-permission approvals scoped, expiring, and target-mapped. | +| Trust Security | pass | secrets 0; scripts 115; help failures 0 | Secrets, scripts, dependencies, permissions, and package hash are reviewable | Keep high-permission approvals scoped, expiring, and target-mapped. | | Permission Metadata | pass | 4/4 target probes pass; metadata fallback 4; installer enforcement 4 | Packaged adapters expose explicit permission metadata, residual risks, and installer enforcement evidence when available | Preserve residual-risk notes until real native enforcement exists. | | Native Permission Enforcement | external-required | native-enforced targets 0; installer-enforced targets 4 | At least one target/client enforces approved permissions at runtime | Integrate a real target-client or external installer runtime guard before claiming native permission enforcement. | | Skill Atlas | pass | 12 skills; actionable collisions 0 | Workspace catalog, route overlap, stale/owner gaps, drift, and no-route opportunities | Feed real drift data into Atlas once client telemetry is installed. | -| Registry Distribution | pass | zip entries 626; 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 630; 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 04732a25..fb135df5 100644 --- a/reports/skill_os2_coverage.json +++ b/reports/skill_os2_coverage.json @@ -10,10 +10,10 @@ "pass_count": 21, "warn_count": 0, "missing_count": 0, - "extension_track_count": 2, + "extension_track_count": 3, "extension_partial_count": 0, "extension_planned_count": 0, - "extension_covered_count": 2, + "extension_covered_count": 3, "adaptive_extension_ready": true, "local_blueprint_ready": true, "public_world_class_ready": false, @@ -26,7 +26,7 @@ "missing": 0 }, "extension_status_counts": { - "covered": 2 + "covered": 3 }, "modules": [ { @@ -130,7 +130,7 @@ "label": "Trust Security", "status": "pass", "objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.", - "current": "114 scripts; secrets 0; help failures 0", + "current": "115 scripts; secrets 0; help failures 0", "command": "python3 scripts/yao.py trust .", "test": "python3 tests/verify_trust_check.py", "evidence": [ @@ -204,7 +204,7 @@ "label": "Registry Distribution", "status": "pass", "objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.", - "current": "archive entries 626; install failures 0", + "current": "archive entries 630; 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": [ @@ -731,22 +731,50 @@ } ], "next_action": "Start with policy and read-only scan tests; do not read shell history or private logs unless the user provides an explicit source path." + }, + { + "key": "daily-skillops-report", + "label": "Daily SkillOps Report", + "status": "covered", + "objective": "Daily operations layer summarizes explicit-source conversation patterns, proposal-only adaptation work, approval state, release locks, and world-class evidence gaps.", + "current": "Daily SkillOps report is a CLI-backed, explicit-source operations cockpit with tests and committed dated evidence.", + "target": "Generate reports/skillops/daily/YYYY-MM-DD.* from explicit sources without private log scanning, source writes, auto-patching, or world-class overclaiming.", + "evidence": [ + { + "path": "scripts/render_daily_skillops_report.py", + "exists": true + }, + { + "path": "tests/verify_daily_skillops.py", + "exists": true + }, + { + "path": "reports/skillops/daily/2026-06-16.json", + "exists": true + }, + { + "path": "reports/skillops/daily/2026-06-16.md", + "exists": true + } + ], + "next_action": "Keep Daily SkillOps report aligned with proposal, approval, coverage, and world-class ledger contracts as the operations layer evolves." } ], "next_highest_leverage": [ "Close the four world-class evidence ledger entries with accepted human or external evidence.", "Keep the first-class skill interpretation report and Skill Overview v2 contract synchronized as the report model evolves.", - "Start adaptive self-iteration as explicit-source, proposal-only, approval-gated work; do not scan private logs by default.", + "Use Daily SkillOps with explicit curated sources to review adaptation proposals without scanning private logs or auto-patching.", "Keep the blueprint coverage report in CI so 2.0 plan drift is visible." ], "source_blueprint": { "title": "Skill Overview / Skill OS 2.0 upgrade plan", "core_module_count": 8, "recommended_pr_count": 13, - "reference_extension_count": 2, + "reference_extension_count": 3, "reference_extensions": [ "Skill interpretation report", - "Adaptive self-iteration with local preference memory and approval gates" + "Adaptive self-iteration with local preference memory and approval gates", + "Daily SkillOps operations report" ] }, "artifacts": { diff --git a/reports/skill_os2_coverage.md b/reports/skill_os2_coverage.md index be57746d..a68bd477 100644 --- a/reports/skill_os2_coverage.md +++ b/reports/skill_os2_coverage.md @@ -10,8 +10,8 @@ Generated at: `2026-06-16` - pass: `21` / `21` - missing: `0` - warn: `0` -- reference extensions: `2` -- extension covered: `2` +- reference extensions: `3` +- extension covered: `3` - extension partial: `0` - extension planned: `0` - adaptive extension ready: `true` @@ -26,9 +26,9 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts, | Skill IR | `pass` | schema 2.0.0; targets 5 | `python3 scripts/yao.py skill-ir .` | `python3 tests/verify_skill_ir.py` | | Output Eval Lab | `pass` | 5 cases; delta 100.0; execution 10 | `python3 scripts/yao.py output-exec . && python3 scripts/yao.py output-review .` | `python3 tests/verify_output_eval_lab.py` | | Runtime Conformance | `pass` | 5/5 targets pass | `python3 scripts/yao.py conformance .` | `python3 tests/verify_conformance_suite.py` | -| Trust Security | `pass` | 114 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` | +| Trust Security | `pass` | 115 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 626; 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 630; 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` | @@ -56,6 +56,7 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts, | --- | --- | --- | --- | --- | | Skill Interpretation Report | `covered` | Skill Overview v2 is canonical and mirrored as first-class skill-interpretation HTML/JSON with schema and tests. | Either keep skill-overview as the canonical interpretation report with an explicit contract, or split a dedicated reports/skill-interpretation.* renderer and tests. | Keep overview and interpretation contracts in lockstep when report sections, metrics, or layout semantics change. | | Adaptive Self-Iteration | `covered` | Full adaptive loop includes proposal, approval, patch application, regression evidence, and rollback metadata. | Proposal-only adaptation with explicit input source, redaction, allowlisted write targets, approval ledger, regression report, and rollback plan. | Start with policy and read-only scan tests; do not read shell history or private logs unless the user provides an explicit source path. | +| Daily SkillOps Report | `covered` | Daily SkillOps report is a CLI-backed, explicit-source operations cockpit with tests and committed dated evidence. | Generate reports/skillops/daily/YYYY-MM-DD.* from explicit sources without private log scanning, source writes, auto-patching, or world-class overclaiming. | Keep Daily SkillOps report aligned with proposal, approval, coverage, and world-class ledger contracts as the operations layer evolves. | These extension tracks come from the user-supplied 2.0 reference plan. They are tracked separately from the formal Skill OS blueprint so the report can distinguish landed local architecture from planned explainer/adaptor evolution. @@ -63,7 +64,7 @@ These extension tracks come from the user-supplied 2.0 reference plan. They are - Close the four world-class evidence ledger entries with accepted human or external evidence. - Keep the first-class skill interpretation report and Skill Overview v2 contract synchronized as the report model evolves. -- Start adaptive self-iteration as explicit-source, proposal-only, approval-gated work; do not scan private logs by default. +- Use Daily SkillOps with explicit curated sources to review adaptation proposals without scanning private logs or auto-patching. - Keep the blueprint coverage report in CI so 2.0 plan drift is visible. ## Evidence Detail @@ -228,3 +229,10 @@ These extension tracks come from the user-supplied 2.0 reference plan. They are - status: `covered` - existing evidence: `references/autonomous-adaptation.md`, `references/user-memory-policy.md`, `schemas/adaptation-proposal.schema.json`, `scripts/summarize_user_signals.py`, `scripts/propose_adaptation.py`, `tests/verify_adaptation_safety.py`, `scripts/apply_adaptation.py`, `reports/adaptation_approval_ledger.json`, `reports/adaptation_regression_report.json`, `reports/user_patterns.json`, `reports/adaptation_proposals.json`, `reports/iteration-directions.md`, `reports/adoption_drift_report.md` - next action: Start with policy and read-only scan tests; do not read shell history or private logs unless the user provides an explicit source path. + +### Daily SkillOps Report + +- objective: Daily operations layer summarizes explicit-source conversation patterns, proposal-only adaptation work, approval state, release locks, and world-class evidence gaps. +- status: `covered` +- existing evidence: `scripts/render_daily_skillops_report.py`, `tests/verify_daily_skillops.py`, `reports/skillops/daily/2026-06-16.json`, `reports/skillops/daily/2026-06-16.md` +- next action: Keep Daily SkillOps report aligned with proposal, approval, coverage, and world-class ledger contracts as the operations layer evolves. diff --git a/reports/skillops/daily/2026-06-16.json b/reports/skillops/daily/2026-06-16.json new file mode 100644 index 00000000..6716c49e --- /dev/null +++ b/reports/skillops/daily/2026-06-16.json @@ -0,0 +1,311 @@ +{ + "schema_version": "1.0", + "ok": true, + "generated_at": "2026-06-16", + "skill_dir": ".", + "decision": "proposal-review", + "source_supplied": false, + "pattern_count": 5, + "proposal_count": 5, + "approval_count": 0, + "pending_review_count": 0, + "applied_count": 0, + "rollback_count": 0, + "local_blueprint_ready": true, + "public_world_class_ready": false, + "world_class_pending_count": 4, + "release_lock_ready": false, + "evidence_consistency_ok": true, + "writes_source_files": false, + "auto_patch_enabled": false, + "failure_count": 0, + "summary": { + "decision": "proposal-review", + "source_supplied": false, + "pattern_count": 5, + "proposal_count": 5, + "approval_count": 0, + "pending_review_count": 0, + "applied_count": 0, + "rollback_count": 0, + "local_blueprint_ready": true, + "public_world_class_ready": false, + "world_class_pending_count": 4, + "release_lock_ready": false, + "evidence_consistency_ok": true, + "writes_source_files": false, + "auto_patch_enabled": false, + "failure_count": 0 + }, + "operations_contract": { + "schema_version": "1.0", + "contract": "daily-skillops-report", + "explicit_source_required_for_scan": true, + "implicit_private_log_scan": false, + "raw_content_stored": false, + "redacted_excerpts_only": true, + "proposal_only": true, + "approval_required_for_writes": true, + "writes_source_files": false, + "auto_patch_enabled": false, + "daily_report_counts_as_world_class_evidence": false + }, + "report_contract": { + "schema_version": "1.0", + "contract": "daily-skillops-report", + "top_level_mirrors_summary": true, + "summary_fields": [ + "decision", + "source_supplied", + "pattern_count", + "proposal_count", + "approval_count", + "pending_review_count", + "applied_count", + "rollback_count", + "local_blueprint_ready", + "public_world_class_ready", + "world_class_pending_count", + "release_lock_ready", + "evidence_consistency_ok", + "writes_source_files", + "auto_patch_enabled", + "failure_count" + ], + "source_of_truth": [ + "summary", + "operations_contract" + ] + }, + "source": { + "path": "evals/adaptation/user_signals.example.jsonl", + "fingerprint_sha256": "48f94a4f3b82f90db29921c13d09c765ec10aabfde1adce65710c137cc6c5abf", + "record_count": 8, + "explicit_source": true, + "raw_content_stored": false, + "redacted_excerpts_only": true + }, + "patterns": [ + { + "pattern_id": "language_default", + "label": "Default language preference", + "signal_type": "report-language", + "support_count": 2, + "confidence": 0.79, + "reason": "2 redacted records matched repeated report-language signals.", + "recommended_action": "Keep generated reports Chinese-first with an English switch where user-facing.", + "evidence": [ + { + "record_id": "line-1", + "excerpt": "新生成的 Skill 报告默认使用中文简体,并在右上角提供英文切换。" + }, + { + "record_id": "line-2", + "excerpt": "HTML 报告需要双语能力,但默认内容应该保持中文简体。" + } + ] + }, + { + "pattern_id": "report_ui", + "label": "Report UI and visualization preference", + "signal_type": "artifact-design", + "support_count": 5, + "confidence": 0.95, + "reason": "5 redacted records matched repeated artifact-design signals.", + "recommended_action": "Prioritize white-background Kami-style reports with readable charts and stable navigation.", + "evidence": [ + { + "record_id": "line-1", + "excerpt": "新生成的 Skill 报告默认使用中文简体,并在右上角提供英文切换。" + }, + { + "record_id": "line-2", + "excerpt": "HTML 报告需要双语能力,但默认内容应该保持中文简体。" + }, + { + "record_id": "line-3", + "excerpt": "报告排版采用白底 Kami 风格,图表、模块和导航都要清晰。" + } + ] + }, + { + "pattern_id": "approval_safety", + "label": "Approval and privacy boundary", + "signal_type": "governance", + "support_count": 2, + "confidence": 0.79, + "reason": "2 redacted records matched repeated governance signals.", + "recommended_action": "Keep adaptive work proposal-only until a reviewer approves an allowlisted patch path.", + "evidence": [ + { + "record_id": "line-5", + "excerpt": "自适应升级必须先生成提案,不能直接自动修改源文件。" + }, + { + "record_id": "line-6", + "excerpt": "用户偏好扫描必须由用户提供明确路径,不要默认扫描私人日志。" + } + ] + }, + { + "pattern_id": "delivery_format", + "label": "Delivery format preference", + "signal_type": "artifact-format", + "support_count": 2, + "confidence": 0.79, + "reason": "2 redacted records matched repeated artifact-format signals.", + "recommended_action": "Surface stable artifact paths and formats in CLI output and generated summaries.", + "evidence": [ + { + "record_id": "line-2", + "excerpt": "HTML 报告需要双语能力,但默认内容应该保持中文简体。" + }, + { + "record_id": "line-6", + "excerpt": "用户偏好扫描必须由用户提供明确路径,不要默认扫描私人日志。" + } + ] + }, + { + "pattern_id": "evidence_testing", + "label": "Evidence and testing preference", + "signal_type": "quality-gate", + "support_count": 2, + "confidence": 0.79, + "reason": "2 redacted records matched repeated quality-gate signals.", + "recommended_action": "Attach focused tests and refreshed evidence reports to every non-trivial skill upgrade.", + "evidence": [ + { + "record_id": "line-7", + "excerpt": "每次升级都需要测试、覆盖报告和可审计证据,推送前要跑 CI。" + }, + { + "record_id": "line-8", + "excerpt": "涉及 GitHub 推送时,要保留证据链,避免把计划当作完成证明。" + } + ] + } + ], + "proposals": [ + { + "proposal_id": "adapt-18c7517f3d", + "pattern_id": "language_default", + "title": "Keep reports Chinese-first with optional English", + "risk_level": "low", + "status": "proposal-only", + "requires_approval": true, + "target_files": [ + "scripts/render_skill_overview.py", + "references/artifact-design-doctrine.md" + ], + "verification_commands": [ + "python3 tests/verify_skill_overview.py" + ] + }, + { + "proposal_id": "adapt-fbfe921ba5", + "pattern_id": "report_ui", + "title": "Improve report layout, visual hierarchy, and chart readability", + "risk_level": "medium", + "status": "proposal-only", + "requires_approval": true, + "target_files": [ + "scripts/render_skill_overview.py", + "references/artifact-design-doctrine.md", + "tests/verify_skill_overview.py" + ], + "verification_commands": [ + "python3 tests/verify_skill_overview.py", + "python3 tests/verify_skill_report_charts.py" + ] + }, + { + "proposal_id": "adapt-59d219a1fb", + "pattern_id": "approval_safety", + "title": "Keep adaptive iteration approval-gated", + "risk_level": "low", + "status": "proposal-only", + "requires_approval": true, + "target_files": [ + "references/user-memory-policy.md", + "references/autonomous-adaptation.md", + "schemas/adaptation-proposal.schema.json" + ], + "verification_commands": [ + "python3 tests/verify_adaptation_safety.py" + ] + }, + { + "proposal_id": "adapt-457baca160", + "pattern_id": "delivery_format", + "title": "Make generated artifact paths explicit in CLI output", + "risk_level": "low", + "status": "proposal-only", + "requires_approval": true, + "target_files": [ + "scripts/yao.py", + "README.md" + ], + "verification_commands": [ + "python3 tests/verify_yao_cli.py" + ] + }, + { + "proposal_id": "adapt-abfee25d3a", + "pattern_id": "evidence_testing", + "title": "Attach tests and evidence refresh to each upgrade", + "risk_level": "medium", + "status": "proposal-only", + "requires_approval": true, + "target_files": [ + "tests/verify_adaptation_safety.py", + "scripts/render_skill_os2_coverage.py", + "reports/skill_os2_coverage.json" + ], + "verification_commands": [ + "python3 tests/verify_adaptation_safety.py", + "python3 tests/verify_skill_os2_coverage.py" + ] + } + ], + "approval": { + "approval_count": 0, + "pending_review_count": 0, + "applied_count": 0, + "rollback_count": 0 + }, + "release_state": { + "local_blueprint_ready": true, + "public_world_class_ready": false, + "world_class_pending_count": 4, + "release_lock_ready": false, + "evidence_consistency_ok": true + }, + "actions": [ + { + "key": "review-adaptation-proposals", + "priority": "high", + "action": "Review proposal-only adaptation items before preparing any approval ledger entry." + }, + { + "key": "close-world-class-evidence", + "priority": "high", + "action": "Collect accepted external or human evidence for the pending world-class ledger entries." + } + ], + "failures": [], + "source_reports": { + "patterns": "reports/user_patterns.json", + "proposals": "reports/adaptation_proposals.json", + "approval_ledger": "reports/adaptation_approval_ledger.json", + "regression": "reports/adaptation_regression_report.json", + "skill_os2_coverage": "reports/skill_os2_coverage.json", + "world_class_ledger": "reports/world_class_evidence_ledger.json", + "evidence_consistency": "reports/evidence_consistency.json", + "benchmark_reproducibility": "reports/benchmark_reproducibility.json" + }, + "artifacts": { + "json": "reports/skillops/daily/2026-06-16.json", + "markdown": "reports/skillops/daily/2026-06-16.md" + } +} diff --git a/reports/skillops/daily/2026-06-16.md b/reports/skillops/daily/2026-06-16.md new file mode 100644 index 00000000..419683ec --- /dev/null +++ b/reports/skillops/daily/2026-06-16.md @@ -0,0 +1,128 @@ +# Daily SkillOps Report + +Generated at: `2026-06-16` + +## Summary + +- decision: `proposal-review` +- source supplied: `false` +- patterns: `5` +- proposals: `5` +- pending approvals: `0` +- applied patches: `0` +- rollbacks: `0` +- local blueprint ready: `true` +- public world-class ready: `false` +- world-class pending: `4` +- 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. + +## Privacy Boundary + +- explicit_source_required_for_scan: `true` +- implicit_private_log_scan: `false` +- raw_content_stored: `false` +- redacted_excerpts_only: `true` +- proposal_only: `true` +- approval_required_for_writes: `true` +- writes_source_files: `false` +- auto_patch_enabled: `false` +- daily_report_counts_as_world_class_evidence: `false` + +## Actions + +- `high` Review proposal-only adaptation items before preparing any approval ledger entry. +- `high` Collect accepted external or human evidence for the pending world-class ledger entries. + +## Patterns + +- `language_default`: Default language preference (support `2`, confidence `0.79`) +- `report_ui`: Report UI and visualization preference (support `5`, confidence `0.95`) +- `approval_safety`: Approval and privacy boundary (support `2`, confidence `0.79`) +- `delivery_format`: Delivery format preference (support `2`, confidence `0.79`) +- `evidence_testing`: Evidence and testing preference (support `2`, confidence `0.79`) + +## Proposals + +### Keep reports Chinese-first with optional English + +- ID: `adapt-18c7517f3d` +- Pattern: `language_default` +- Status: `proposal-only` +- Risk: `low` +- Requires approval: `true` +- Target files: + - `scripts/render_skill_overview.py` + - `references/artifact-design-doctrine.md` +- Verification: + - `python3 tests/verify_skill_overview.py` + +### Improve report layout, visual hierarchy, and chart readability + +- ID: `adapt-fbfe921ba5` +- Pattern: `report_ui` +- Status: `proposal-only` +- Risk: `medium` +- Requires approval: `true` +- Target files: + - `scripts/render_skill_overview.py` + - `references/artifact-design-doctrine.md` + - `tests/verify_skill_overview.py` +- Verification: + - `python3 tests/verify_skill_overview.py` + - `python3 tests/verify_skill_report_charts.py` + +### Keep adaptive iteration approval-gated + +- ID: `adapt-59d219a1fb` +- Pattern: `approval_safety` +- Status: `proposal-only` +- Risk: `low` +- Requires approval: `true` +- Target files: + - `references/user-memory-policy.md` + - `references/autonomous-adaptation.md` + - `schemas/adaptation-proposal.schema.json` +- Verification: + - `python3 tests/verify_adaptation_safety.py` + +### Make generated artifact paths explicit in CLI output + +- ID: `adapt-457baca160` +- Pattern: `delivery_format` +- Status: `proposal-only` +- Risk: `low` +- Requires approval: `true` +- Target files: + - `scripts/yao.py` + - `README.md` +- Verification: + - `python3 tests/verify_yao_cli.py` + +### Attach tests and evidence refresh to each upgrade + +- ID: `adapt-abfee25d3a` +- Pattern: `evidence_testing` +- Status: `proposal-only` +- Risk: `medium` +- Requires approval: `true` +- Target files: + - `tests/verify_adaptation_safety.py` + - `scripts/render_skill_os2_coverage.py` + - `reports/skill_os2_coverage.json` +- Verification: + - `python3 tests/verify_adaptation_safety.py` + - `python3 tests/verify_skill_os2_coverage.py` + +## Evidence + +- patterns: `reports/user_patterns.json` +- proposals: `reports/adaptation_proposals.json` +- approval_ledger: `reports/adaptation_approval_ledger.json` +- regression: `reports/adaptation_regression_report.json` +- skill_os2_coverage: `reports/skill_os2_coverage.json` +- world_class_ledger: `reports/world_class_evidence_ledger.json` +- evidence_consistency: `reports/evidence_consistency.json` +- benchmark_reproducibility: `reports/benchmark_reproducibility.json` diff --git a/reports/upgrade_check.json b/reports/upgrade_check.json index 6d4c7317..706ec20f 100644 --- a/reports/upgrade_check.json +++ b/reports/upgrade_check.json @@ -70,12 +70,12 @@ { "field": "archive_sha256", "from": "", - "to": "feb9e0ecf8390c4541b91b78c664d15dfffe7e8999a0602dcf9a44fd03afeb53" + "to": "a521b75a29e5761e4a90df6055d0c0316e615add8d32168960f80bf89a99c8a0" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "bcfcc1a7fc34bd4b70746355ca3627bebc8a3c57a4703c014192aabbf8296ddf" + "to": "b6abceeea0f2329299123b8e295469602f9e742298f729e60d9b56ef49b48083" } ] }, diff --git a/reports/world_class_claim_guard.json b/reports/world_class_claim_guard.json index 91fcc32f..a4f2f9c3 100644 --- a/reports/world_class_claim_guard.json +++ b/reports/world_class_claim_guard.json @@ -6,9 +6,9 @@ "summary": { "ledger_ready_to_claim_world_class": false, "ledger_pending_count": 4, - "claim_surface_count": 176, - "json_claim_surface_count": 86, - "metadata_claim_surface_count": 87, + "claim_surface_count": 178, + "json_claim_surface_count": 87, + "metadata_claim_surface_count": 88, "package_claim_surface_count": 17, "violation_count": 0, "overclaim_guard_active": true, @@ -610,6 +610,14 @@ "path": "reports/skill_os2_coverage.md", "violation_count": 0 }, + { + "path": "reports/skillops/daily/2026-06-16.json", + "violation_count": 0 + }, + { + "path": "reports/skillops/daily/2026-06-16.md", + "violation_count": 0 + }, { "path": "reports/system-model.json", "violation_count": 0 diff --git a/reports/world_class_claim_guard.md b/reports/world_class_claim_guard.md index e1467637..ee6c3083 100644 --- a/reports/world_class_claim_guard.md +++ b/reports/world_class_claim_guard.md @@ -7,9 +7,9 @@ Generated at: `2026-06-16` - decision: `claim-guard-pass-evidence-pending` - ledger ready to claim world-class: `false` - ledger pending evidence: `4` -- claim surfaces scanned: `176` -- JSON claim surfaces scanned: `86` -- metadata claim surfaces scanned: `87` +- claim surfaces scanned: `178` +- JSON claim surfaces scanned: `87` +- metadata claim surfaces scanned: `88` - package/runtime claim surfaces scanned: `17` - violations: `0` - overclaim guard active: `true` diff --git a/scripts/ci_test.py b/scripts/ci_test.py index 7a34f501..70c726d2 100644 --- a/scripts/ci_test.py +++ b/scripts/ci_test.py @@ -67,6 +67,7 @@ DEFAULT_TARGETS = [ "evidence-consistency-check", "feedback-check", "adaptation-safety-check", + "daily-skillops-check", "adoption-drift-check", "telemetry-import-check", "telemetry-emit-check", diff --git a/scripts/evidence_consistency_release.py b/scripts/evidence_consistency_release.py index ca797060..bca6a9f7 100644 --- a/scripts/evidence_consistency_release.py +++ b/scripts/evidence_consistency_release.py @@ -31,6 +31,7 @@ SOURCE_REFRESH_REPORT_COMMANDS = [ 'python3 scripts/render_world_class_submission_review.py . --generated-at "$GENERATED_AT"', 'python3 scripts/render_world_class_operator_runbook.py . --generated-at "$GENERATED_AT"', 'python3 scripts/render_world_class_claim_guard.py . --generated-at "$GENERATED_AT"', + 'python3 scripts/render_daily_skillops_report.py . --generated-at "$GENERATED_AT"', 'python3 scripts/render_skill_os2_audit.py . --generated-at "$GENERATED_AT"', 'python3 scripts/render_skill_os2_coverage.py . --generated-at "$GENERATED_AT"', 'python3 scripts/render_context_reports.py --generated-at "$GENERATED_AT"', @@ -45,6 +46,7 @@ SOURCE_REFRESH_REPORT_COMMANDS = [ CLEAN_LOCK_REPORT_COMMANDS = [ 'python3 scripts/render_context_reports.py --generated-at "$GENERATED_AT"', 'python3 scripts/render_benchmark_reproducibility.py . --generated-at "$GENERATED_AT"', + 'python3 scripts/render_daily_skillops_report.py . --generated-at "$GENERATED_AT"', "python3 scripts/render_skill_overview.py .", "python3 scripts/render_skill_interpretation.py .", "python3 scripts/render_review_viewer.py .", @@ -116,6 +118,7 @@ def build_release_evidence_flow_check(skill_dir: Path) -> dict[str, Any]: "reports/skill-interpretation.json", "reports/review-viewer.json", "reports/world_class_evidence_preflight.json", + "reports/skillops/daily", "reports/review-studio.json", "reports/evidence_consistency.json", ], diff --git a/scripts/render_daily_skillops_report.py b/scripts/render_daily_skillops_report.py new file mode 100644 index 00000000..f49ff8d1 --- /dev/null +++ b/scripts/render_daily_skillops_report.py @@ -0,0 +1,455 @@ +#!/usr/bin/env python3 +import argparse +import json +from datetime import date, datetime, timezone +from pathlib import Path +from tempfile import TemporaryDirectory +from typing import Any + +from propose_adaptation import build_report as build_proposal_report +from propose_adaptation import render_markdown as render_proposals_markdown +from summarize_user_signals import build_report as build_pattern_report +from summarize_user_signals import render_markdown as render_patterns_markdown + + +ROOT = Path(__file__).resolve().parent.parent +SCRIPT_INTERFACE = "cli" +SCRIPT_INTERFACE_REASON = "Renders a Daily SkillOps report that summarizes explicit-source patterns, proposals, approval state, and release evidence without scanning private logs or applying patches." + +SUMMARY_FIELDS = [ + "decision", + "source_supplied", + "pattern_count", + "proposal_count", + "approval_count", + "pending_review_count", + "applied_count", + "rollback_count", + "local_blueprint_ready", + "public_world_class_ready", + "world_class_pending_count", + "release_lock_ready", + "evidence_consistency_ok", + "writes_source_files", + "auto_patch_enabled", + "failure_count", +] + + +def utc_now() -> str: + return datetime.now(timezone.utc).replace(microsecond=0).isoformat().replace("+00:00", "Z") + + +def report_date(generated_at: str) -> str: + if len(generated_at) >= 10: + candidate = generated_at[:10] + try: + date.fromisoformat(candidate) + return candidate + except ValueError: + pass + return date.today().isoformat() + + +def display_path(path: Path, root: Path) -> str: + try: + return str(path.resolve().relative_to(root.resolve())) + except ValueError: + return f"[external-explicit-source]/{path.name}" + + +def resolve_output(skill_dir: Path, value: str) -> Path: + path = Path(value) + return path if path.is_absolute() else skill_dir / path + + +def load_json(path: Path) -> dict[str, Any]: + if not path.exists(): + return {} + try: + payload = json.loads(path.read_text(encoding="utf-8")) + except json.JSONDecodeError: + return {} + return payload if isinstance(payload, dict) else {} + + +def write_json(path: Path, payload: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(payload, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + + +def write_text(path: Path, text: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text, encoding="utf-8") + + +def default_daily_path(skill_dir: Path, generated_at: str, suffix: str) -> Path: + return skill_dir / "reports" / "skillops" / "daily" / f"{report_date(generated_at)}.{suffix}" + + +def source_summary(patterns: dict[str, Any]) -> dict[str, Any]: + source = patterns.get("source", {}) if isinstance(patterns.get("source"), dict) else {} + privacy = patterns.get("privacy_contract", {}) if isinstance(patterns.get("privacy_contract"), dict) else {} + return { + "path": source.get("path", ""), + "fingerprint_sha256": source.get("fingerprint_sha256", ""), + "record_count": source.get("record_count", 0), + "explicit_source": privacy.get("explicit_source_required") is True, + "raw_content_stored": privacy.get("raw_content_stored") is True, + "redacted_excerpts_only": privacy.get("redacted_excerpts_only") is True, + } + + +def compact_proposals(proposals: dict[str, Any]) -> list[dict[str, Any]]: + rows = [] + for item in proposals.get("proposals", []): + if not isinstance(item, dict): + continue + rows.append( + { + "proposal_id": item.get("proposal_id", ""), + "pattern_id": item.get("pattern_id", ""), + "title": item.get("title", ""), + "risk_level": item.get("risk_level", ""), + "status": item.get("status", ""), + "requires_approval": item.get("requires_approval") is True, + "target_files": item.get("target_files", []), + "verification_commands": item.get("verification_commands", []), + } + ) + return rows + + +def build_actions(summary: dict[str, Any], proposal_rows: list[dict[str, Any]]) -> list[dict[str, str]]: + actions: list[dict[str, str]] = [] + if summary["source_supplied"] is False and summary["pattern_count"] == 0: + actions.append( + { + "key": "provide-explicit-source", + "priority": "medium", + "action": "Run daily-skillops with --source pointing to a curated JSONL or Markdown conversation summary.", + } + ) + if proposal_rows: + actions.append( + { + "key": "review-adaptation-proposals", + "priority": "high", + "action": "Review proposal-only adaptation items before preparing any approval ledger entry.", + } + ) + if summary["pending_review_count"]: + actions.append( + { + "key": "resolve-pending-approvals", + "priority": "high", + "action": "Approve, reject, or expire pending adaptive approval ledger entries before applying patches.", + } + ) + if summary["world_class_pending_count"]: + actions.append( + { + "key": "close-world-class-evidence", + "priority": "high", + "action": "Collect accepted external or human evidence for the pending world-class ledger entries.", + } + ) + if summary["evidence_consistency_ok"] is not True: + actions.append( + { + "key": "refresh-evidence-consistency", + "priority": "high", + "action": "Regenerate evidence-consistency before using this report for release decisions.", + } + ) + if not actions: + actions.append( + { + "key": "monitor", + "priority": "low", + "action": "No action required beyond routine daily monitoring.", + } + ) + return actions + + +def build_report( + skill_dir: Path, + generated_at: str, + source: Path | None = None, + min_support: int = 2, + allow_history_source: bool = False, + patterns_json: Path | None = None, + proposals_json: Path | None = None, + write_source_reports: bool = True, +) -> dict[str, Any]: + skill_dir = skill_dir.resolve() + reports = skill_dir / "reports" + patterns_path = resolve_output(skill_dir, str(patterns_json or "reports/user_patterns.json")) + proposals_path = resolve_output(skill_dir, str(proposals_json or "reports/adaptation_proposals.json")) + failures: list[str] = [] + + if source is not None: + pattern_report = build_pattern_report( + skill_dir, + source, + min_support=max(2, min_support), + generated_at=generated_at, + allow_history_source=allow_history_source, + ) + if pattern_report.get("ok") is True and write_source_reports: + pattern_report["artifacts"] = { + "json": display_path(patterns_path, skill_dir), + "markdown": display_path(patterns_path.with_suffix(".md"), skill_dir), + } + write_json(patterns_path, pattern_report) + write_text(patterns_path.with_suffix(".md"), render_patterns_markdown(pattern_report)) + else: + failures.extend(pattern_report.get("failures", [])) + else: + pattern_report = load_json(patterns_path) + + if pattern_report and pattern_report.get("ok") is True: + proposal_source_path = patterns_path + with TemporaryDirectory() as temp_dir: + if source is not None and not write_source_reports: + proposal_source_path = Path(temp_dir) / "user_patterns.json" + write_json(proposal_source_path, pattern_report) + proposal_report = build_proposal_report(skill_dir, proposal_source_path, generated_at) + if proposal_report.get("ok") is True and write_source_reports: + proposal_report["artifacts"] = { + "json": display_path(proposals_path, skill_dir), + "markdown": display_path(proposals_path.with_suffix(".md"), skill_dir), + } + write_json(proposals_path, proposal_report) + write_text(proposals_path.with_suffix(".md"), render_proposals_markdown(proposal_report)) + elif proposal_report.get("ok") is not True: + failures.extend(proposal_report.get("failures", [])) + else: + proposal_report = load_json(proposals_path) + if source is not None and not pattern_report: + failures.append("Pattern report could not be built from the explicit source.") + + approval = load_json(reports / "adaptation_approval_ledger.json") + regression = load_json(reports / "adaptation_regression_report.json") + coverage = load_json(reports / "skill_os2_coverage.json") + ledger = load_json(reports / "world_class_evidence_ledger.json") + consistency = load_json(reports / "evidence_consistency.json") + benchmark = load_json(reports / "benchmark_reproducibility.json") + + pattern_summary = pattern_report.get("summary", {}) if isinstance(pattern_report.get("summary"), dict) else {} + proposal_summary = proposal_report.get("summary", {}) if isinstance(proposal_report.get("summary"), dict) else {} + approval_summary = approval.get("summary", {}) if isinstance(approval.get("summary"), dict) else {} + regression_summary = regression.get("summary", {}) if isinstance(regression.get("summary"), dict) else {} + coverage_summary = coverage.get("summary", {}) if isinstance(coverage.get("summary"), dict) else {} + ledger_summary = ledger.get("summary", {}) if isinstance(ledger.get("summary"), dict) else {} + benchmark_summary = benchmark.get("summary", {}) if isinstance(benchmark.get("summary"), dict) else {} + proposal_contract = proposal_report.get("proposal_contract", {}) if isinstance(proposal_report.get("proposal_contract"), dict) else {} + + proposal_rows = compact_proposals(proposal_report) + failure_count = len(failures) + summary = { + "decision": "blocked" if failure_count else "proposal-review" if proposal_rows else "monitor", + "source_supplied": source is not None, + "pattern_count": int(pattern_summary.get("pattern_count", 0) or 0), + "proposal_count": int(proposal_summary.get("proposal_count", 0) or len(proposal_rows)), + "approval_count": int(approval_summary.get("approval_count", 0) or 0), + "pending_review_count": int(approval_summary.get("pending_review_count", 0) or 0), + "applied_count": int(approval_summary.get("applied_count", 0) or regression_summary.get("applied_count", 0) or 0), + "rollback_count": int(approval_summary.get("rollback_count", 0) or regression_summary.get("rollback_count", 0) or 0), + "local_blueprint_ready": coverage_summary.get("local_blueprint_ready") is True, + "public_world_class_ready": coverage_summary.get("public_world_class_ready") is True, + "world_class_pending_count": int(ledger_summary.get("pending_count", coverage_summary.get("world_class_evidence_pending_count", 0)) or 0), + "release_lock_ready": benchmark_summary.get("release_lock_ready") is True, + "evidence_consistency_ok": consistency.get("ok") is True, + "writes_source_files": False, + "auto_patch_enabled": False, + "failure_count": failure_count, + } + actions = build_actions(summary, proposal_rows) + operations_contract = { + "schema_version": "1.0", + "contract": "daily-skillops-report", + "explicit_source_required_for_scan": True, + "implicit_private_log_scan": False, + "raw_content_stored": False, + "redacted_excerpts_only": True, + "proposal_only": proposal_contract.get("proposal_only") is not False, + "approval_required_for_writes": True, + "writes_source_files": False, + "auto_patch_enabled": False, + "daily_report_counts_as_world_class_evidence": False, + } + report = { + "schema_version": "1.0", + "ok": failure_count == 0, + "generated_at": generated_at, + "skill_dir": display_path(skill_dir, skill_dir), + **{key: summary[key] for key in SUMMARY_FIELDS}, + "summary": summary, + "operations_contract": operations_contract, + "report_contract": { + "schema_version": "1.0", + "contract": "daily-skillops-report", + "top_level_mirrors_summary": True, + "summary_fields": SUMMARY_FIELDS, + "source_of_truth": ["summary", "operations_contract"], + }, + "source": source_summary(pattern_report) if pattern_report else {}, + "patterns": pattern_report.get("patterns", []) if isinstance(pattern_report.get("patterns"), list) else [], + "proposals": proposal_rows, + "approval": { + "approval_count": summary["approval_count"], + "pending_review_count": summary["pending_review_count"], + "applied_count": summary["applied_count"], + "rollback_count": summary["rollback_count"], + }, + "release_state": { + "local_blueprint_ready": summary["local_blueprint_ready"], + "public_world_class_ready": summary["public_world_class_ready"], + "world_class_pending_count": summary["world_class_pending_count"], + "release_lock_ready": summary["release_lock_ready"], + "evidence_consistency_ok": summary["evidence_consistency_ok"], + }, + "actions": actions, + "failures": failures, + "source_reports": { + "patterns": display_path(patterns_path, skill_dir), + "proposals": display_path(proposals_path, skill_dir), + "approval_ledger": "reports/adaptation_approval_ledger.json", + "regression": "reports/adaptation_regression_report.json", + "skill_os2_coverage": "reports/skill_os2_coverage.json", + "world_class_ledger": "reports/world_class_evidence_ledger.json", + "evidence_consistency": "reports/evidence_consistency.json", + "benchmark_reproducibility": "reports/benchmark_reproducibility.json", + }, + "artifacts": { + "json": str(default_daily_path(skill_dir, generated_at, "json").relative_to(skill_dir)), + "markdown": str(default_daily_path(skill_dir, generated_at, "md").relative_to(skill_dir)), + }, + } + return report + + +def render_markdown(report: dict[str, Any]) -> str: + summary = report["summary"] + lines = [ + "# Daily SkillOps Report", + "", + f"Generated at: `{report['generated_at']}`", + "", + "## Summary", + "", + f"- decision: `{summary['decision']}`", + f"- source supplied: `{str(summary['source_supplied']).lower()}`", + f"- patterns: `{summary['pattern_count']}`", + f"- proposals: `{summary['proposal_count']}`", + f"- pending approvals: `{summary['pending_review_count']}`", + f"- applied patches: `{summary['applied_count']}`", + f"- rollbacks: `{summary['rollback_count']}`", + f"- local blueprint ready: `{str(summary['local_blueprint_ready']).lower()}`", + f"- public world-class ready: `{str(summary['public_world_class_ready']).lower()}`", + f"- world-class pending: `{summary['world_class_pending_count']}`", + f"- release lock ready: `{str(summary['release_lock_ready']).lower()}`", + f"- evidence consistency ok: `{str(summary['evidence_consistency_ok']).lower()}`", + "", + "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.", + "", + "## Privacy Boundary", + "", + ] + contract = report["operations_contract"] + for key in [ + "explicit_source_required_for_scan", + "implicit_private_log_scan", + "raw_content_stored", + "redacted_excerpts_only", + "proposal_only", + "approval_required_for_writes", + "writes_source_files", + "auto_patch_enabled", + "daily_report_counts_as_world_class_evidence", + ]: + lines.append(f"- {key}: `{str(contract[key]).lower()}`") + lines.extend(["", "## Actions", ""]) + for action in report["actions"]: + lines.append(f"- `{action['priority']}` {action['action']}") + lines.extend(["", "## Patterns", ""]) + patterns = report.get("patterns", []) + if not patterns: + lines.append("- No repeated pattern met the support threshold.") + for pattern in patterns: + lines.append( + f"- `{pattern.get('pattern_id', '')}`: {pattern.get('label', '')} " + f"(support `{pattern.get('support_count', 0)}`, confidence `{pattern.get('confidence', '')}`)" + ) + lines.extend(["", "## Proposals", ""]) + proposals = report.get("proposals", []) + if not proposals: + lines.append("- No adaptation proposals are waiting for review.") + for proposal in proposals: + lines.extend( + [ + f"### {proposal['title']}", + "", + f"- ID: `{proposal['proposal_id']}`", + f"- Pattern: `{proposal['pattern_id']}`", + f"- Status: `{proposal['status']}`", + f"- Risk: `{proposal['risk_level']}`", + f"- Requires approval: `{str(proposal['requires_approval']).lower()}`", + "- Target files:", + ] + ) + lines.extend(f" - `{path}`" for path in proposal.get("target_files", [])) + lines.append("- Verification:") + lines.extend(f" - `{command}`" for command in proposal.get("verification_commands", [])) + lines.append("") + lines.extend(["## Evidence", ""]) + for label, path in report["source_reports"].items(): + lines.append(f"- {label}: `{path}`") + if report["failures"]: + lines.extend(["", "## Failures", ""]) + lines.extend(f"- {failure}" for failure in report["failures"]) + return "\n".join(lines).rstrip() + "\n" + + +def main() -> None: + parser = argparse.ArgumentParser(description="Render a Daily SkillOps report from explicit-source adaptive evidence.") + parser.add_argument("skill_dir", nargs="?", default=".") + parser.add_argument("--source", help="Explicit curated source file to scan before rendering the daily report.") + parser.add_argument("--patterns-json", default="reports/user_patterns.json") + parser.add_argument("--proposals-json", default="reports/adaptation_proposals.json") + parser.add_argument("--output-json") + parser.add_argument("--output-md") + parser.add_argument("--min-support", type=int, default=2) + parser.add_argument("--generated-at", default=utc_now()) + parser.add_argument("--allow-history-source", action="store_true") + parser.add_argument("--no-refresh-source-reports", action="store_true") + args = parser.parse_args() + + skill_dir = Path(args.skill_dir).resolve() + report = build_report( + skill_dir, + args.generated_at, + source=Path(args.source) if args.source else None, + min_support=args.min_support, + allow_history_source=args.allow_history_source, + patterns_json=Path(args.patterns_json), + proposals_json=Path(args.proposals_json), + write_source_reports=not args.no_refresh_source_reports, + ) + output_json = resolve_output(skill_dir, args.output_json) if args.output_json else default_daily_path(skill_dir, args.generated_at, "json") + output_md = resolve_output(skill_dir, args.output_md) if args.output_md else default_daily_path(skill_dir, args.generated_at, "md") + report["artifacts"] = { + "json": display_path(output_json, skill_dir), + "markdown": display_path(output_md, skill_dir), + } + write_json(output_json, report) + write_text(output_md, render_markdown(report)) + print(json.dumps(report, ensure_ascii=False, indent=2)) + if not report["ok"]: + raise SystemExit(2) + + +if __name__ == "__main__": + main() diff --git a/scripts/render_skill_os2_coverage.py b/scripts/render_skill_os2_coverage.py index 80124acd..76a96cfe 100644 --- a/scripts/render_skill_os2_coverage.py +++ b/scripts/render_skill_os2_coverage.py @@ -55,6 +55,24 @@ def paths_exist(skill_dir: Path, paths: list[str]) -> bool: return all((skill_dir / item).exists() for item in paths) +def latest_daily_skillops_paths(skill_dir: Path) -> list[str]: + base_paths = [ + "scripts/render_daily_skillops_report.py", + "tests/verify_daily_skillops.py", + ] + daily_dir = skill_dir / "reports" / "skillops" / "daily" + daily_json_reports = sorted(daily_dir.glob("*.json")) if daily_dir.exists() else [] + if not daily_json_reports: + return [ + *base_paths, + "reports/skillops/daily/YYYY-MM-DD.json", + "reports/skillops/daily/YYYY-MM-DD.md", + ] + latest_json = daily_json_reports[-1] + latest_md = latest_json.with_suffix(".md") + return [*base_paths, rel_path(latest_json, skill_dir), rel_path(latest_md, skill_dir)] + + def condition_status(condition: bool, evidence_items: list[dict[str, Any]]) -> str: if not all_exist(evidence_items): return "missing" @@ -387,6 +405,26 @@ def build_coverage(skill_dir: Path, generated_at: str) -> dict[str, Any]: skill_dir=skill_dir, ) ) + daily_skillops_paths = latest_daily_skillops_paths(skill_dir) + daily_skillops_ready = paths_exist(skill_dir, daily_skillops_paths) + daily_skillops_status = "covered" if daily_skillops_ready else "partial" + extension_tracks.append( + build_extension_track( + key="daily-skillops-report", + label="Daily SkillOps Report", + status=daily_skillops_status, + objective="Daily operations layer summarizes explicit-source conversation patterns, proposal-only adaptation work, approval state, release locks, and world-class evidence gaps.", + current=( + "Daily SkillOps report is a CLI-backed, explicit-source operations cockpit with tests and committed dated evidence." + if daily_skillops_ready + else "Adaptive scan/propose exists, but the daily operations report is not fully wired into scripts, tests, and evidence artifacts." + ), + target="Generate reports/skillops/daily/YYYY-MM-DD.* from explicit sources without private log scanning, source writes, auto-patching, or world-class overclaiming.", + artifact_paths=daily_skillops_paths, + next_action="Keep Daily SkillOps report aligned with proposal, approval, coverage, and world-class ledger contracts as the operations layer evolves.", + skill_dir=skill_dir, + ) + ) extension_counts: dict[str, int] = {} for item in extension_tracks: extension_counts[item["status"]] = extension_counts.get(item["status"], 0) + 1 @@ -429,7 +467,7 @@ def build_coverage(skill_dir: Path, generated_at: str) -> dict[str, Any]: "next_highest_leverage": [ "Close the four world-class evidence ledger entries with accepted human or external evidence.", "Keep the first-class skill interpretation report and Skill Overview v2 contract synchronized as the report model evolves.", - "Start adaptive self-iteration as explicit-source, proposal-only, approval-gated work; do not scan private logs by default.", + "Use Daily SkillOps with explicit curated sources to review adaptation proposals without scanning private logs or auto-patching.", "Keep the blueprint coverage report in CI so 2.0 plan drift is visible.", ], "source_blueprint": { @@ -440,6 +478,7 @@ def build_coverage(skill_dir: Path, generated_at: str) -> dict[str, Any]: "reference_extensions": [ "Skill interpretation report", "Adaptive self-iteration with local preference memory and approval gates", + "Daily SkillOps operations report", ], }, "artifacts": { diff --git a/scripts/yao.py b/scripts/yao.py index 0113d5d5..5dd33f93 100644 --- a/scripts/yao.py +++ b/scripts/yao.py @@ -10,7 +10,7 @@ from yao_cli_config import ( resolve_promotion_target, resolve_target, ) -from yao_cli_adaptation_commands import command_adapt_apply, command_adapt_propose, command_adapt_scan +from yao_cli_adaptation_commands import command_adapt_apply, command_adapt_propose, command_adapt_scan, command_daily_skillops from yao_cli_create_commands import command_init, command_quickstart from yao_cli_distribution_commands import ( command_compile_skill, diff --git a/scripts/yao_cli_adaptation_commands.py b/scripts/yao_cli_adaptation_commands.py index f55c3ec3..9450f462 100644 --- a/scripts/yao_cli_adaptation_commands.py +++ b/scripts/yao_cli_adaptation_commands.py @@ -77,3 +77,29 @@ def command_adapt_apply(args: argparse.Namespace) -> int: result = run_script("apply_adaptation.py", cmd) print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2)) return 0 if result["ok"] else 2 + + +def command_daily_skillops(args: argparse.Namespace) -> int: + skill_dir = str(Path(args.skill_dir).resolve()) + cmd = [skill_dir] + if args.source: + cmd.extend(["--source", args.source]) + if args.patterns_json: + cmd.extend(["--patterns-json", args.patterns_json]) + if args.proposals_json: + cmd.extend(["--proposals-json", args.proposals_json]) + if args.output_json: + cmd.extend(["--output-json", args.output_json]) + if args.output_md: + cmd.extend(["--output-md", args.output_md]) + if args.min_support is not None: + cmd.extend(["--min-support", str(args.min_support)]) + if args.generated_at: + cmd.extend(["--generated-at", args.generated_at]) + if args.allow_history_source: + cmd.append("--allow-history-source") + if args.no_refresh_source_reports: + cmd.append("--no-refresh-source-reports") + result = run_script("render_daily_skillops_report.py", cmd) + print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2)) + return 0 if result["ok"] else 2 diff --git a/scripts/yao_cli_parser.py b/scripts/yao_cli_parser.py index 4ad7c453..3c69114a 100644 --- a/scripts/yao_cli_parser.py +++ b/scripts/yao_cli_parser.py @@ -459,6 +459,22 @@ def build_parser(command_handlers: dict[str, Callable[[argparse.Namespace], int] adapt_apply_cmd.set_defaults(rollback_on_failure=True) adapt_apply_cmd.set_defaults(func=_handler(command_handlers, "command_adapt_apply")) + daily_skillops_cmd = subparsers.add_parser( + "daily-skillops", + help="Render a Daily SkillOps report from explicit-source adaptive evidence without scanning private logs or applying patches.", + ) + daily_skillops_cmd.add_argument("skill_dir", nargs="?", default=".") + daily_skillops_cmd.add_argument("--source") + daily_skillops_cmd.add_argument("--patterns-json", default="reports/user_patterns.json") + daily_skillops_cmd.add_argument("--proposals-json", default="reports/adaptation_proposals.json") + daily_skillops_cmd.add_argument("--output-json") + daily_skillops_cmd.add_argument("--output-md") + daily_skillops_cmd.add_argument("--min-support", type=int, default=2) + daily_skillops_cmd.add_argument("--generated-at") + daily_skillops_cmd.add_argument("--allow-history-source", action="store_true") + daily_skillops_cmd.add_argument("--no-refresh-source-reports", action="store_true") + daily_skillops_cmd.set_defaults(func=_handler(command_handlers, "command_daily_skillops")) + adoption_drift_cmd = subparsers.add_parser( "adoption-drift", help="Render local-first metadata-only adoption and drift telemetry for a skill package.", diff --git a/scripts/yao_cli_report_commands.py b/scripts/yao_cli_report_commands.py index e77698c4..703638db 100644 --- a/scripts/yao_cli_report_commands.py +++ b/scripts/yao_cli_report_commands.py @@ -76,6 +76,7 @@ def command_report(args: argparse.Namespace) -> int: run_script("render_world_class_submission_review.py", [str(ROOT)]), run_script("render_world_class_operator_runbook.py", [str(ROOT)]), run_script("render_world_class_claim_guard.py", [str(ROOT)]), + run_script("render_daily_skillops_report.py", [str(ROOT)]), run_script("render_skill_os2_coverage.py", [str(ROOT)]), run_script("render_benchmark_reproducibility.py", [str(ROOT)]), run_script("render_skill_overview.py", [str(ROOT)]), @@ -120,6 +121,7 @@ def command_report(args: argparse.Namespace) -> int: "world_class_submission_review": "reports/world_class_submission_review.json", "world_class_operator_runbook": "reports/world_class_operator_runbook.json", "world_class_claim_guard": "reports/world_class_claim_guard.json", + "daily_skillops": "reports/skillops/daily", "skill_os2_coverage": "reports/skill_os2_coverage.json", "benchmark_reproducibility": "reports/benchmark_reproducibility.json", "skill_overview": "reports/skill-overview.json", diff --git a/skill_atlas/catalog.json b/skill_atlas/catalog.json index 6fc29338..29e6f30d 100644 --- a/skill_atlas/catalog.json +++ b/skill_atlas/catalog.json @@ -59,6 +59,7 @@ "scripts/render_baseline_compare.py", "scripts/render_benchmark_reproducibility.py", "scripts/render_context_reports.py", + "scripts/render_daily_skillops_report.py", "scripts/render_description_drift_history.py", "scripts/render_eval_dashboard.py", "scripts/render_evidence_consistency.py", diff --git a/tests/verify_daily_skillops.py b/tests/verify_daily_skillops.py new file mode 100644 index 00000000..9c9a830f --- /dev/null +++ b/tests/verify_daily_skillops.py @@ -0,0 +1,236 @@ +#!/usr/bin/env python3 +import json +import shutil +import subprocess +import sys +from pathlib import Path + + +ROOT = Path(__file__).resolve().parent.parent +SCRIPT = ROOT / "scripts" / "render_daily_skillops_report.py" +CLI = ROOT / "scripts" / "yao.py" +TMP = ROOT / "tests" / "tmp_daily_skillops" + + +def run_command(*args: str) -> subprocess.CompletedProcess[str]: + return subprocess.run( + [sys.executable, *args], + cwd=ROOT, + capture_output=True, + text=True, + ) + + +def write_json(path: Path, payload: dict) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(payload, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + + +def seed_release_reports(skill_dir: Path) -> None: + reports = skill_dir / "reports" + write_json( + reports / "skill_os2_coverage.json", + { + "ok": True, + "summary": { + "local_blueprint_ready": True, + "public_world_class_ready": False, + "world_class_evidence_pending_count": 4, + }, + }, + ) + write_json( + reports / "world_class_evidence_ledger.json", + { + "ok": True, + "summary": { + "pending_count": 4, + "accepted_count": 0, + "ready_to_claim_world_class": False, + }, + }, + ) + write_json(reports / "evidence_consistency.json", {"ok": True, "checks": [{"status": "pass"}]}) + write_json(reports / "benchmark_reproducibility.json", {"ok": True, "summary": {"release_lock_ready": True}}) + write_json( + reports / "adaptation_approval_ledger.json", + { + "ok": True, + "summary": { + "approval_count": 1, + "pending_review_count": 1, + "applied_count": 0, + "rollback_count": 0, + }, + }, + ) + write_json( + reports / "adaptation_regression_report.json", + { + "ok": True, + "summary": { + "attempt_count": 1, + "dry_run_count": 1, + "applied_count": 0, + "rollback_count": 0, + }, + }, + ) + + +def write_signal_source(path: Path) -> None: + path.write_text( + "\n".join( + [ + json.dumps({"text": "报告默认中文简体,同时右上角提供英文切换;敏感内容 token=abc123456789、sk-1234567890abcdef 和 /Users/laoyao/private/path 必须脱敏。"}, ensure_ascii=False), + json.dumps({"message": "新的 HTML 报告要双语,但默认中文简体。"}, ensure_ascii=False), + json.dumps({"content": "报告 UI 需要 Kami 白底排版、图表模块和清晰导航。"}, ensure_ascii=False), + json.dumps({"excerpt": "HTML 报告还是白底 Kami 风格,图表不要挤在一起。"}, ensure_ascii=False), + json.dumps({"note": "不要自动扫描私人日志;必须由用户提供明确路径。"}, ensure_ascii=False), + json.dumps({"body": "自适应升级需要先输出提案,授权后再修改,并能回滚。"}, ensure_ascii=False), + json.dumps({"text": "每次升级都要有测试、证据报告和 GitHub push。"}, ensure_ascii=False), + json.dumps({"text": "敏感内容也不能直接进入公开日报。"}, ensure_ascii=False), + ] + ) + + "\n", + encoding="utf-8", + ) + + +def assert_daily_contract(payload: dict) -> None: + assert payload["schema_version"] == "1.0", payload + assert payload["ok"] is True, payload + assert payload["report_contract"]["contract"] == "daily-skillops-report", payload + assert payload["report_contract"]["top_level_mirrors_summary"] is True, payload + for field in payload["report_contract"]["summary_fields"]: + assert payload[field] == payload["summary"][field], (field, payload.get(field), payload["summary"].get(field)) + contract = payload["operations_contract"] + assert contract["explicit_source_required_for_scan"] is True, payload + assert contract["implicit_private_log_scan"] is False, payload + assert contract["raw_content_stored"] is False, payload + assert contract["redacted_excerpts_only"] is True, payload + assert contract["proposal_only"] is True, payload + assert contract["approval_required_for_writes"] is True, payload + assert contract["writes_source_files"] is False, payload + assert contract["auto_patch_enabled"] is False, payload + assert contract["daily_report_counts_as_world_class_evidence"] is False, payload + + +def main() -> None: + shutil.rmtree(TMP, ignore_errors=True) + skill_dir = TMP / "daily-skillops-demo" + skill_dir.mkdir(parents=True) + seed_release_reports(skill_dir) + source = TMP / "curated-signals.jsonl" + write_signal_source(source) + source_before = source.read_text(encoding="utf-8") + + output_json = skill_dir / "reports" / "skillops" / "daily" / "2026-06-16.json" + output_md = skill_dir / "reports" / "skillops" / "daily" / "2026-06-16.md" + proc = run_command( + str(SCRIPT), + str(skill_dir), + "--source", + str(source), + "--output-json", + str(output_json), + "--output-md", + str(output_md), + "--generated-at", + "2026-06-16T08:00:00Z", + ) + assert proc.returncode == 0, proc.stderr + payload = json.loads(proc.stdout) + assert_daily_contract(payload) + assert payload["summary"]["source_supplied"] is True, payload + assert payload["summary"]["pattern_count"] >= 4, payload + assert payload["summary"]["proposal_count"] >= 4, payload + assert payload["summary"]["pending_review_count"] == 1, payload + assert payload["summary"]["world_class_pending_count"] == 4, payload + assert payload["summary"]["public_world_class_ready"] is False, payload + assert payload["summary"]["release_lock_ready"] is True, payload + assert payload["summary"]["evidence_consistency_ok"] is True, payload + action_keys = {item["key"] for item in payload["actions"]} + assert {"review-adaptation-proposals", "resolve-pending-approvals", "close-world-class-evidence"} <= action_keys, payload + assert output_json.exists(), output_json + assert output_md.exists(), output_md + assert (skill_dir / "reports" / "user_patterns.json").exists(), skill_dir + assert (skill_dir / "reports" / "adaptation_proposals.json").exists(), skill_dir + assert source.read_text(encoding="utf-8") == source_before, source + + serialized = json.dumps(payload, ensure_ascii=False) + assert "sk-1234567890abcdef" not in serialized, serialized + assert "token=abc123456789" not in serialized, serialized + assert "/Users/laoyao/private" not in serialized, serialized + assert "[REDACTED_SECRET]" in serialized, serialized + assert "[LOCAL_PATH]" in serialized, serialized + markdown = output_md.read_text(encoding="utf-8") + assert "Daily SkillOps Report" in markdown, markdown + assert "does not scan private logs" in markdown, markdown + assert "daily_report_counts_as_world_class_evidence: `false`" in markdown, markdown + + cli_dir = TMP / "cli-daily-skillops-demo" + cli_dir.mkdir(parents=True) + seed_release_reports(cli_dir) + cli_output_json = cli_dir / "reports" / "skillops" / "daily" / "cli.json" + cli_output_md = cli_dir / "reports" / "skillops" / "daily" / "cli.md" + cli_proc = run_command( + str(CLI), + "daily-skillops", + str(cli_dir), + "--source", + str(source), + "--output-json", + str(cli_output_json), + "--output-md", + str(cli_output_md), + "--generated-at", + "2026-06-16T08:00:00Z", + ) + assert cli_proc.returncode == 0, cli_proc.stderr + cli_payload = json.loads(cli_proc.stdout) + assert_daily_contract(cli_payload) + assert cli_payload["summary"]["proposal_count"] >= 4, cli_payload + assert cli_output_json.exists(), cli_output_json + assert cli_output_md.exists(), cli_output_md + + history_source = TMP / ".zsh_history" + history_source.write_text("报告默认中文\n报告默认中文\n", encoding="utf-8") + history_proc = run_command(str(SCRIPT), str(skill_dir), "--source", str(history_source)) + assert history_proc.returncode == 2, history_proc.stdout + history_payload = json.loads(history_proc.stdout) + assert history_payload["ok"] is False, history_payload + assert any("Refusing private history source" in item for item in history_payload["failures"]), history_payload + + no_refresh_dir = TMP / "no-refresh-daily-skillops-demo" + no_refresh_dir.mkdir(parents=True) + seed_release_reports(no_refresh_dir) + write_json( + no_refresh_dir / "reports" / "user_patterns.json", + {"ok": True, "summary": {"pattern_count": 0}, "patterns": []}, + ) + no_refresh_output_json = no_refresh_dir / "reports" / "skillops" / "daily" / "no-refresh.json" + no_refresh_proc = run_command( + str(SCRIPT), + str(no_refresh_dir), + "--source", + str(source), + "--no-refresh-source-reports", + "--output-json", + str(no_refresh_output_json), + "--generated-at", + "2026-06-16T08:00:00Z", + ) + assert no_refresh_proc.returncode == 0, no_refresh_proc.stderr + no_refresh_payload = json.loads(no_refresh_proc.stdout) + assert_daily_contract(no_refresh_payload) + assert no_refresh_payload["summary"]["source_supplied"] is True, no_refresh_payload + assert no_refresh_payload["summary"]["pattern_count"] >= 4, no_refresh_payload + assert no_refresh_payload["summary"]["proposal_count"] >= 4, no_refresh_payload + assert not (no_refresh_dir / "reports" / "adaptation_proposals.json").exists(), no_refresh_dir + + print(json.dumps({"ok": True}, ensure_ascii=False, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/tests/verify_skill_os2_coverage.py b/tests/verify_skill_os2_coverage.py index c01d96e3..4b648de3 100644 --- a/tests/verify_skill_os2_coverage.py +++ b/tests/verify_skill_os2_coverage.py @@ -44,10 +44,10 @@ def main() -> None: assert summary["pass_count"] == 21, summary assert summary["warn_count"] == 0, summary assert summary["missing_count"] == 0, summary - assert summary["extension_track_count"] == 2, summary + assert summary["extension_track_count"] == 3, summary assert summary["extension_partial_count"] == 0, summary assert summary["extension_planned_count"] == 0, summary - assert summary["extension_covered_count"] == 2, summary + assert summary["extension_covered_count"] == 3, summary assert summary["adaptive_extension_ready"] is True, summary assert summary["local_blueprint_ready"] is True, summary assert summary["public_world_class_ready"] is False, summary @@ -88,10 +88,11 @@ def main() -> None: assert any(entry["path"] == "reports/benchmark_reproducibility.json" and entry["exists"] for entry in prs["benchmark-methodology"]["evidence"]) assert payload["source_blueprint"]["core_module_count"] == 8, payload assert payload["source_blueprint"]["recommended_pr_count"] == 13, payload - assert payload["source_blueprint"]["reference_extension_count"] == 2, payload + assert payload["source_blueprint"]["reference_extension_count"] == 3, payload extension_tracks = {item["key"]: item for item in payload["reference_extension_tracks"]} assert extension_tracks["skill-interpretation-report"]["status"] == "covered", extension_tracks assert extension_tracks["adaptive-self-iteration"]["status"] == "covered", extension_tracks + assert extension_tracks["daily-skillops-report"]["status"] == "covered", extension_tracks assert any( entry["path"] == "reports/skill-overview.html" and entry["exists"] for entry in extension_tracks["skill-interpretation-report"]["evidence"] @@ -120,14 +121,34 @@ def main() -> None: entry["path"] == "reports/adaptation_regression_report.json" and entry["exists"] for entry in extension_tracks["adaptive-self-iteration"]["evidence"] ), extension_tracks["adaptive-self-iteration"] + assert any( + entry["path"] == "scripts/render_daily_skillops_report.py" and entry["exists"] + for entry in extension_tracks["daily-skillops-report"]["evidence"] + ), extension_tracks["daily-skillops-report"] + assert any( + entry["path"] == "tests/verify_daily_skillops.py" and entry["exists"] + for entry in extension_tracks["daily-skillops-report"]["evidence"] + ), extension_tracks["daily-skillops-report"] + assert any( + entry["path"].startswith("reports/skillops/daily/") + and entry["path"].endswith(".json") + and entry["exists"] + for entry in extension_tracks["daily-skillops-report"]["evidence"] + ), extension_tracks["daily-skillops-report"] + assert any( + entry["path"].startswith("reports/skillops/daily/") + and entry["path"].endswith(".md") + and entry["exists"] + for entry in extension_tracks["daily-skillops-report"]["evidence"] + ), extension_tracks["daily-skillops-report"] assert "Close the four world-class evidence ledger entries" in payload["next_highest_leverage"][0], payload assert "skill interpretation report" in " ".join(payload["next_highest_leverage"]), payload - assert "adaptive self-iteration" in " ".join(payload["next_highest_leverage"]), payload + assert "Daily SkillOps" in " ".join(payload["next_highest_leverage"]), payload markdown = output_md.read_text(encoding="utf-8") assert "Skill OS 2.0 Blueprint Coverage" in markdown, markdown assert "local blueprint ready: `true`" in markdown, markdown assert "public world-class ready: `false`" in markdown, markdown - assert "extension covered: `2`" in markdown, markdown + assert "extension covered: `3`" in markdown, markdown assert "extension partial: `0`" in markdown, markdown assert "## Core Modules" in markdown, markdown assert "## Recommended PR Coverage" in markdown, markdown @@ -135,6 +156,7 @@ def main() -> None: assert "## Reference Extension Tracks" in markdown, markdown assert "Skill Interpretation Report" in markdown, markdown assert "Adaptive Self-Iteration" in markdown, markdown + assert "Daily SkillOps Report" in markdown, markdown assert "user-supplied 2.0 reference plan" in markdown, markdown assert "`agent-skills-conformance`" not in markdown, markdown assert "Agent Skills Conformance" in markdown, markdown
路径Path作用Role类型Type
SKILL.mdSkill 入口文件Skill entrypoint文件file
README.md人类可读使用说明Human-readable usage guide文件file
agents/interface.yaml跨平台接口元数据Neutral interface metadata文件file
manifest.json生命周期与打包元数据Lifecycle and portability metadata文件file
references扩展指导与复用资料Extended guidance and reusable notes目录folder
scripts确定性脚本或本地工具Deterministic helpers or local tooling目录folder
evals触发与质量检查Trigger and quality checks目录folder
reports生成的证据与总结报告Generated evidence and overview artifacts目录folder