dsh-aris-panel 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +98 -0
- package/README_CN.md +87 -0
- package/dsh/checkout.patch.yml +38 -0
- package/dsh/client.js +634 -0
- package/dsh/cordis.patch.yml +44 -0
- package/dsh/index.mjs +76 -0
- package/dsh/run-status.mjs +182 -0
- package/dsh/scope-limits.mjs +50 -0
- package/dsh/workbench.mjs +291 -0
- package/mcp-servers/claude-review/README.md +93 -0
- package/mcp-servers/claude-review/run_with_claude_aws.sh +49 -0
- package/mcp-servers/claude-review/server.py +718 -0
- package/mcp-servers/codex-image2/README.md +65 -0
- package/mcp-servers/codex-image2/server.py +893 -0
- package/mcp-servers/feishu-bridge/requirements.txt +1 -0
- package/mcp-servers/feishu-bridge/server.py +240 -0
- package/mcp-servers/gemini-review/README.md +171 -0
- package/mcp-servers/gemini-review/server.py +1856 -0
- package/mcp-servers/llm-chat/requirements.txt +1 -0
- package/mcp-servers/llm-chat/server.py +664 -0
- package/mcp-servers/manual-review/README.md +133 -0
- package/mcp-servers/manual-review/server.py +910 -0
- package/mcp-servers/manual-review/ui.html +279 -0
- package/mcp-servers/minimax-chat/requirements.txt +1 -0
- package/mcp-servers/minimax-chat/server.py +381 -0
- package/package.json +51 -0
- package/skills/ablation-planner/SKILL.md +123 -0
- package/skills/alphaxiv/SKILL.md +196 -0
- package/skills/analyze-results/SKILL.md +46 -0
- package/skills/arxiv/SKILL.md +248 -0
- package/skills/auto-paper-improvement-loop/SKILL.md +651 -0
- package/skills/auto-review-loop/SKILL.md +1137 -0
- package/skills/auto-review-loop-llm/SKILL.md +259 -0
- package/skills/auto-review-loop-minimax/SKILL.md +302 -0
- package/skills/citation-audit/SKILL.md +502 -0
- package/skills/claims-drafting/SKILL.md +227 -0
- package/skills/comm-lit-review/SKILL.md +297 -0
- package/skills/deepxiv/SKILL.md +263 -0
- package/skills/dse-loop/SKILL.md +296 -0
- package/skills/embodiment-description/SKILL.md +129 -0
- package/skills/exa-search/SKILL.md +205 -0
- package/skills/experiment-audit/SKILL.md +311 -0
- package/skills/experiment-bridge/SKILL.md +376 -0
- package/skills/experiment-plan/SKILL.md +249 -0
- package/skills/experiment-queue/SKILL.md +431 -0
- package/skills/experiment-queue/scripts/build_manifest.py +142 -0
- package/skills/experiment-queue/scripts/queue_manager.py +433 -0
- package/skills/feishu-notify/SKILL.md +156 -0
- package/skills/figure-description/SKILL.md +138 -0
- package/skills/figure-spec/SKILL.md +262 -0
- package/skills/figure-spec/scripts/figure_renderer.py +799 -0
- package/skills/formula-derivation/SKILL.md +280 -0
- package/skills/gemini-search/SKILL.md +231 -0
- package/skills/grant-proposal/SKILL.md +698 -0
- package/skills/idea-creator/SKILL.md +542 -0
- package/skills/idea-discovery/SKILL.md +521 -0
- package/skills/idea-discovery-robot/SKILL.md +363 -0
- package/skills/integrity-forensics/SKILL.md +284 -0
- package/skills/interview-cheatsheet/SKILL.md +245 -0
- package/skills/invention-structuring/SKILL.md +188 -0
- package/skills/jurisdiction-format/SKILL.md +192 -0
- package/skills/kill-argument/SKILL.md +437 -0
- package/skills/mermaid-diagram/SKILL.md +419 -0
- package/skills/meta-apply/SKILL.md +141 -0
- package/skills/meta-optimize/SKILL.md +437 -0
- package/skills/monitor-experiment/SKILL.md +140 -0
- package/skills/novelty-check/SKILL.md +101 -0
- package/skills/openalex/SKILL.md +237 -0
- package/skills/overleaf-sync/SKILL.md +220 -0
- package/skills/paper-claim-audit/SKILL.md +348 -0
- package/skills/paper-compile/SKILL.md +266 -0
- package/skills/paper-figure/SKILL.md +312 -0
- package/skills/paper-illustration/SKILL.md +736 -0
- package/skills/paper-illustration-image2/SKILL.md +391 -0
- package/skills/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
- package/skills/paper-plan/SKILL.md +386 -0
- package/skills/paper-poster/SKILL.md +19 -0
- package/skills/paper-poster-html/DESIGN_FINAL.md +176 -0
- package/skills/paper-poster-html/IMPLEMENTATION_CONVENTIONS.md +161 -0
- package/skills/paper-poster-html/LICENSES/posterly-MIT.txt +21 -0
- package/skills/paper-poster-html/NOTICE.md +57 -0
- package/skills/paper-poster-html/SKILL.md +323 -0
- package/skills/paper-poster-html/scripts/_posterly/__init__.py +0 -0
- package/skills/paper-poster-html/scripts/_posterly/canvas.py +200 -0
- package/skills/paper-poster-html/scripts/_posterly/measure.py +588 -0
- package/skills/paper-poster-html/scripts/_posterly/polish.py +498 -0
- package/skills/paper-poster-html/scripts/_posterly/preflight.py +489 -0
- package/skills/paper-poster-html/scripts/_posterly/render.py +215 -0
- package/skills/paper-poster-html/scripts/_posterly/textutil.py +16 -0
- package/skills/paper-poster-html/scripts/_posterly/verify_final.py +171 -0
- package/skills/paper-poster-html/scripts/asset_check.py +897 -0
- package/skills/paper-poster-html/scripts/extract_pdf_figures.py +666 -0
- package/skills/paper-poster-html/scripts/poster_check.py +251 -0
- package/skills/paper-poster-html/scripts/preprocess_figures.py +238 -0
- package/skills/paper-poster-html/scripts/render_preview.py +217 -0
- package/skills/paper-poster-html/scripts/run_gates.py +556 -0
- package/skills/paper-poster-html/scripts/style_check.py +1324 -0
- package/skills/paper-poster-html/templates/COMPONENTS.md +462 -0
- package/skills/paper-poster-html/templates/README.md +170 -0
- package/skills/paper-poster-html/templates/landscape_4col.html +1032 -0
- package/skills/paper-poster-html/templates/landscape_hero.html +1046 -0
- package/skills/paper-poster-html/templates/portrait_2col.html +947 -0
- package/skills/paper-poster-html/templates/tokens/acl.json +9 -0
- package/skills/paper-poster-html/templates/tokens/cvpr.json +9 -0
- package/skills/paper-poster-html/templates/tokens/generic.json +9 -0
- package/skills/paper-poster-html/templates/tokens/iclr.json +9 -0
- package/skills/paper-poster-html/templates/tokens/icml.json +9 -0
- package/skills/paper-poster-html/templates/tokens/neurips.json +9 -0
- package/skills/paper-slides/SKILL.md +635 -0
- package/skills/paper-talk/SKILL.md +381 -0
- package/skills/paper-write/SKILL.md +604 -0
- package/skills/paper-write/templates/IEEEtran.bst +2409 -0
- package/skills/paper-write/templates/IEEEtran.cls +6347 -0
- package/skills/paper-write/templates/iclr2026.tex +84 -0
- package/skills/paper-write/templates/icml2025.tex +87 -0
- package/skills/paper-write/templates/ieee_conference.tex +89 -0
- package/skills/paper-write/templates/ieee_journal.tex +93 -0
- package/skills/paper-write/templates/math_commands.tex +48 -0
- package/skills/paper-write/templates/neurips2025.tex +80 -0
- package/skills/paper-writing/SKILL.md +916 -0
- package/skills/patent-novelty-check/SKILL.md +153 -0
- package/skills/patent-pipeline/SKILL.md +344 -0
- package/skills/patent-review/SKILL.md +203 -0
- package/skills/pixel-art/SKILL.md +137 -0
- package/skills/prior-art-search/SKILL.md +146 -0
- package/skills/proof-checker/SKILL.md +866 -0
- package/skills/proof-orchestrator/NOTICE.md +24 -0
- package/skills/proof-orchestrator/SKILL.md +254 -0
- package/skills/proof-orchestrator/references/audit-output-contract.md +126 -0
- package/skills/proof-orchestrator/references/deepseek-routing.md +74 -0
- package/skills/proof-orchestrator/references/dispatch-prompts.md +227 -0
- package/skills/proof-orchestrator/references/notation-audit.md +135 -0
- package/skills/proof-orchestrator/references/proof-audit-rubric.md +70 -0
- package/skills/proof-orchestrator/references/stress-tests.md +38 -0
- package/skills/proof-writer/SKILL.md +223 -0
- package/skills/qzcli/SKILL.md +324 -0
- package/skills/rebuttal/SKILL.md +376 -0
- package/skills/render-html/SKILL.md +316 -0
- package/skills/render-html/scripts/render_html.py +1006 -0
- package/skills/render-html/scripts/templates/academic.html +703 -0
- package/skills/render-html/scripts/templates/dashboard.html +333 -0
- package/skills/research-lit/SKILL.md +756 -0
- package/skills/research-pipeline/SKILL.md +384 -0
- package/skills/research-refine/SKILL.md +770 -0
- package/skills/research-refine-pipeline/SKILL.md +186 -0
- package/skills/research-review/SKILL.md +198 -0
- package/skills/research-wiki/SKILL.md +461 -0
- package/skills/resubmit-pipeline/SKILL.md +447 -0
- package/skills/result-to-claim/SKILL.md +311 -0
- package/skills/run-experiment/SKILL.md +313 -0
- package/skills/semantic-scholar/SKILL.md +236 -0
- package/skills/serverless-modal/SKILL.md +335 -0
- package/skills/shared-references/acceptance-gate.md +324 -0
- package/skills/shared-references/assurance-contract.md +248 -0
- package/skills/shared-references/capture-antipatterns.md +78 -0
- package/skills/shared-references/citation-discipline.md +583 -0
- package/skills/shared-references/compute-env-contract.md +163 -0
- package/skills/shared-references/effort-contract.md +183 -0
- package/skills/shared-references/evidence-precheck.md +65 -0
- package/skills/shared-references/experiment-integrity.md +49 -0
- package/skills/shared-references/external-cadence.md +326 -0
- package/skills/shared-references/fan-out-pattern.md +366 -0
- package/skills/shared-references/injection-hygiene.md +127 -0
- package/skills/shared-references/integration-contract.md +461 -0
- package/skills/shared-references/output-composition.md +93 -0
- package/skills/shared-references/output-language.md +45 -0
- package/skills/shared-references/output-manifest.md +49 -0
- package/skills/shared-references/output-versioning.md +111 -0
- package/skills/shared-references/patent-format-cn.md +199 -0
- package/skills/shared-references/patent-format-ep.md +173 -0
- package/skills/shared-references/patent-format-us.md +161 -0
- package/skills/shared-references/patent-writing-principles.md +197 -0
- package/skills/shared-references/prior-art-databases.md +141 -0
- package/skills/shared-references/resumable-runs.md +109 -0
- package/skills/shared-references/review-scope-limits.md +81 -0
- package/skills/shared-references/review-tracing.md +391 -0
- package/skills/shared-references/reviewer-independence.md +79 -0
- package/skills/shared-references/reviewer-routing.md +852 -0
- package/skills/shared-references/skill-governance.md +104 -0
- package/skills/shared-references/taste-calibration.md +85 -0
- package/skills/shared-references/venue-checklists.md +114 -0
- package/skills/shared-references/wiki-helper-resolution.md +134 -0
- package/skills/shared-references/writing-principles.md +525 -0
- package/skills/skills-codex/README.md +102 -0
- package/skills/skills-codex/README_CN.md +100 -0
- package/skills/skills-codex/ablation-planner/SKILL.md +126 -0
- package/skills/skills-codex/alphaxiv/SKILL.md +186 -0
- package/skills/skills-codex/analyze-results/SKILL.md +45 -0
- package/skills/skills-codex/arxiv/SKILL.md +210 -0
- package/skills/skills-codex/auto-paper-improvement-loop/SKILL.md +574 -0
- package/skills/skills-codex/auto-review-loop/SKILL.md +500 -0
- package/skills/skills-codex/auto-review-loop-llm/SKILL.md +247 -0
- package/skills/skills-codex/auto-review-loop-minimax/SKILL.md +290 -0
- package/skills/skills-codex/citation-audit/SKILL.md +504 -0
- package/skills/skills-codex/claims-drafting/SKILL.md +239 -0
- package/skills/skills-codex/comm-lit-review/SKILL.md +299 -0
- package/skills/skills-codex/comm-lit-review/references/domain-taxonomy.md +57 -0
- package/skills/skills-codex/comm-lit-review/references/output-template.md +37 -0
- package/skills/skills-codex/comm-lit-review/references/source-policy.md +99 -0
- package/skills/skills-codex/comm-lit-review/references/venue-tiering.md +112 -0
- package/skills/skills-codex/deepxiv/SKILL.md +142 -0
- package/skills/skills-codex/dse-loop/SKILL.md +285 -0
- package/skills/skills-codex/embodiment-description/SKILL.md +129 -0
- package/skills/skills-codex/exa-search/SKILL.md +192 -0
- package/skills/skills-codex/experiment-audit/SKILL.md +286 -0
- package/skills/skills-codex/experiment-bridge/SKILL.md +356 -0
- package/skills/skills-codex/experiment-plan/SKILL.md +249 -0
- package/skills/skills-codex/experiment-queue/SKILL.md +401 -0
- package/skills/skills-codex/feishu-notify/SKILL.md +155 -0
- package/skills/skills-codex/figure-description/SKILL.md +138 -0
- package/skills/skills-codex/figure-spec/SKILL.md +252 -0
- package/skills/skills-codex/formula-derivation/SKILL.md +280 -0
- package/skills/skills-codex/gemini-search/SKILL.md +205 -0
- package/skills/skills-codex/grant-proposal/SKILL.md +626 -0
- package/skills/skills-codex/idea-creator/SKILL.md +405 -0
- package/skills/skills-codex/idea-discovery/SKILL.md +475 -0
- package/skills/skills-codex/idea-discovery-robot/SKILL.md +362 -0
- package/skills/skills-codex/integrity-forensics/SKILL.md +106 -0
- package/skills/skills-codex/interview-cheatsheet/SKILL.md +245 -0
- package/skills/skills-codex/invention-structuring/SKILL.md +188 -0
- package/skills/skills-codex/jurisdiction-format/SKILL.md +192 -0
- package/skills/skills-codex/kill-argument/SKILL.md +403 -0
- package/skills/skills-codex/mermaid-diagram/SKILL.md +379 -0
- package/skills/skills-codex/meta-apply/SKILL.md +154 -0
- package/skills/skills-codex/meta-optimize/SKILL.md +348 -0
- package/skills/skills-codex/monitor-experiment/SKILL.md +98 -0
- package/skills/skills-codex/novelty-check/SKILL.md +89 -0
- package/skills/skills-codex/openalex/SKILL.md +228 -0
- package/skills/skills-codex/overleaf-sync/SKILL.md +220 -0
- package/skills/skills-codex/paper-claim-audit/SKILL.md +350 -0
- package/skills/skills-codex/paper-compile/SKILL.md +253 -0
- package/skills/skills-codex/paper-figure/SKILL.md +311 -0
- package/skills/skills-codex/paper-illustration/SKILL.md +690 -0
- package/skills/skills-codex/paper-illustration-image2/SKILL.md +383 -0
- package/skills/skills-codex/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
- package/skills/skills-codex/paper-plan/SKILL.md +278 -0
- package/skills/skills-codex/paper-poster/SKILL.md +19 -0
- package/skills/skills-codex/paper-poster-html/SKILL.md +377 -0
- package/skills/skills-codex/paper-slides/SKILL.md +571 -0
- package/skills/skills-codex/paper-talk/SKILL.md +381 -0
- package/skills/skills-codex/paper-write/SKILL.md +411 -0
- package/skills/skills-codex/paper-write/templates/IEEEtran.bst +2409 -0
- package/skills/skills-codex/paper-write/templates/IEEEtran.cls +6347 -0
- package/skills/skills-codex/paper-write/templates/aaai2026.bst +1493 -0
- package/skills/skills-codex/paper-write/templates/aaai2026.sty +315 -0
- package/skills/skills-codex/paper-write/templates/aaai2026.tex +952 -0
- package/skills/skills-codex/paper-write/templates/acl.sty +312 -0
- package/skills/skills-codex/paper-write/templates/acl2026.tex +377 -0
- package/skills/skills-codex/paper-write/templates/acl_natbib.bst +1940 -0
- package/skills/skills-codex/paper-write/templates/acm.bst +3081 -0
- package/skills/skills-codex/paper-write/templates/acm_mm2026.tex +204 -0
- package/skills/skills-codex/paper-write/templates/acmart.cls +3520 -0
- package/skills/skills-codex/paper-write/templates/cvpr.bst +1448 -0
- package/skills/skills-codex/paper-write/templates/cvpr.sty +508 -0
- package/skills/skills-codex/paper-write/templates/cvpr2026.tex +63 -0
- package/skills/skills-codex/paper-write/templates/iclr2026.tex +84 -0
- package/skills/skills-codex/paper-write/templates/iclr2026_conference.bst +1440 -0
- package/skills/skills-codex/paper-write/templates/iclr2026_conference.sty +246 -0
- package/skills/skills-codex/paper-write/templates/icml2026.sty +767 -0
- package/skills/skills-codex/paper-write/templates/icml2026.tex +662 -0
- package/skills/skills-codex/paper-write/templates/ieee_conference.tex +89 -0
- package/skills/skills-codex/paper-write/templates/ieee_journal.tex +93 -0
- package/skills/skills-codex/paper-write/templates/math_commands.tex +48 -0
- package/skills/skills-codex/paper-write/templates/neurips2026.tex +493 -0
- package/skills/skills-codex/paper-write/templates/neurips_2026.sty +437 -0
- package/skills/skills-codex/paper-writing/SKILL.md +731 -0
- package/skills/skills-codex/patent-novelty-check/SKILL.md +153 -0
- package/skills/skills-codex/patent-pipeline/SKILL.md +344 -0
- package/skills/skills-codex/patent-review/SKILL.md +202 -0
- package/skills/skills-codex/pixel-art/SKILL.md +139 -0
- package/skills/skills-codex/prior-art-search/SKILL.md +146 -0
- package/skills/skills-codex/proof-checker/SKILL.md +554 -0
- package/skills/skills-codex/proof-orchestrator/SKILL.md +260 -0
- package/skills/skills-codex/proof-orchestrator/references/audit-output-contract.md +126 -0
- package/skills/skills-codex/proof-orchestrator/references/deepseek-routing.md +76 -0
- package/skills/skills-codex/proof-orchestrator/references/dispatch-prompts.md +227 -0
- package/skills/skills-codex/proof-orchestrator/references/notation-audit.md +135 -0
- package/skills/skills-codex/proof-orchestrator/references/proof-audit-rubric.md +70 -0
- package/skills/skills-codex/proof-orchestrator/references/stress-tests.md +38 -0
- package/skills/skills-codex/proof-writer/SKILL.md +222 -0
- package/skills/skills-codex/qzcli/SKILL.md +324 -0
- package/skills/skills-codex/rebuttal/SKILL.md +305 -0
- package/skills/skills-codex/render-html/SKILL.md +305 -0
- package/skills/skills-codex/render-html/scripts/__pycache__/render_html.cpython-314.pyc +0 -0
- package/skills/skills-codex/render-html/scripts/render_html.py +909 -0
- package/skills/skills-codex/render-html/scripts/templates/academic.html +342 -0
- package/skills/skills-codex/render-html/scripts/templates/dashboard.html +333 -0
- package/skills/skills-codex/research-lit/SKILL.md +464 -0
- package/skills/skills-codex/research-pipeline/SKILL.md +340 -0
- package/skills/skills-codex/research-refine/SKILL.md +721 -0
- package/skills/skills-codex/research-refine-pipeline/SKILL.md +186 -0
- package/skills/skills-codex/research-review/SKILL.md +135 -0
- package/skills/skills-codex/research-wiki/SKILL.md +421 -0
- package/skills/skills-codex/resubmit-pipeline/SKILL.md +444 -0
- package/skills/skills-codex/result-to-claim/SKILL.md +246 -0
- package/skills/skills-codex/run-experiment/SKILL.md +236 -0
- package/skills/skills-codex/semantic-scholar/SKILL.md +219 -0
- package/skills/skills-codex/serverless-modal/SKILL.md +335 -0
- package/skills/skills-codex/shared-references/acceptance-gate.md +336 -0
- package/skills/skills-codex/shared-references/assurance-contract.md +139 -0
- package/skills/skills-codex/shared-references/capture-antipatterns.md +84 -0
- package/skills/skills-codex/shared-references/citation-discipline.md +452 -0
- package/skills/skills-codex/shared-references/compute-env-contract.md +163 -0
- package/skills/skills-codex/shared-references/effort-contract.md +143 -0
- package/skills/skills-codex/shared-references/evidence-precheck.md +73 -0
- package/skills/skills-codex/shared-references/experiment-integrity.md +49 -0
- package/skills/skills-codex/shared-references/external-cadence.md +334 -0
- package/skills/skills-codex/shared-references/fan-out-pattern.md +375 -0
- package/skills/skills-codex/shared-references/injection-hygiene.md +132 -0
- package/skills/skills-codex/shared-references/integration-contract.md +372 -0
- package/skills/skills-codex/shared-references/output-composition.md +98 -0
- package/skills/skills-codex/shared-references/output-language.md +45 -0
- package/skills/skills-codex/shared-references/output-manifest.md +40 -0
- package/skills/skills-codex/shared-references/output-versioning.md +111 -0
- package/skills/skills-codex/shared-references/patent-format-cn.md +199 -0
- package/skills/skills-codex/shared-references/patent-format-ep.md +173 -0
- package/skills/skills-codex/shared-references/patent-format-us.md +161 -0
- package/skills/skills-codex/shared-references/patent-writing-principles.md +197 -0
- package/skills/skills-codex/shared-references/prior-art-databases.md +141 -0
- package/skills/skills-codex/shared-references/resumable-runs.md +125 -0
- package/skills/skills-codex/shared-references/review-scope-limits.md +81 -0
- package/skills/skills-codex/shared-references/review-tracing.md +144 -0
- package/skills/skills-codex/shared-references/reviewer-independence.md +66 -0
- package/skills/skills-codex/shared-references/reviewer-routing.md +128 -0
- package/skills/skills-codex/shared-references/skill-governance.md +119 -0
- package/skills/skills-codex/shared-references/taste-calibration.md +90 -0
- package/skills/skills-codex/shared-references/venue-checklists.md +73 -0
- package/skills/skills-codex/shared-references/wiki-helper-resolution.md +69 -0
- package/skills/skills-codex/shared-references/writing-principles.md +525 -0
- package/skills/skills-codex/slides-polish/SKILL.md +563 -0
- package/skills/skills-codex/specification-writing/SKILL.md +211 -0
- package/skills/skills-codex/system-profile/SKILL.md +103 -0
- package/skills/skills-codex/training-check/SKILL.md +83 -0
- package/skills/skills-codex/vast-gpu/SKILL.md +394 -0
- package/skills/skills-codex/web-debug-search/SKILL.md +334 -0
- package/skills/skills-codex/wiki-enrich/SKILL.md +255 -0
- package/skills/skills-codex/writing-systems-papers/SKILL.md +184 -0
- package/skills/skills-codex-claude-review/README.md +79 -0
- package/skills/skills-codex-claude-review/README_CN.md +78 -0
- package/skills/skills-codex-claude-review/auto-paper-improvement-loop/SKILL.md +581 -0
- package/skills/skills-codex-claude-review/auto-review-loop/SKILL.md +510 -0
- package/skills/skills-codex-claude-review/novelty-check/SKILL.md +102 -0
- package/skills/skills-codex-claude-review/paper-figure/SKILL.md +319 -0
- package/skills/skills-codex-claude-review/paper-plan/SKILL.md +287 -0
- package/skills/skills-codex-claude-review/paper-write/SKILL.md +420 -0
- package/skills/skills-codex-claude-review/research-refine/SKILL.md +732 -0
- package/skills/skills-codex-claude-review/research-review/SKILL.md +149 -0
- package/skills/skills-codex-gemini-review/README.md +176 -0
- package/skills/skills-codex-gemini-review/README_CN.md +175 -0
- package/skills/skills-codex-gemini-review/auto-paper-improvement-loop/SKILL.md +331 -0
- package/skills/skills-codex-gemini-review/auto-review-loop/SKILL.md +304 -0
- package/skills/skills-codex-gemini-review/grant-proposal/SKILL.md +630 -0
- package/skills/skills-codex-gemini-review/idea-creator/SKILL.md +263 -0
- package/skills/skills-codex-gemini-review/idea-discovery/SKILL.md +275 -0
- package/skills/skills-codex-gemini-review/idea-discovery-robot/SKILL.md +365 -0
- package/skills/skills-codex-gemini-review/novelty-check/SKILL.md +92 -0
- package/skills/skills-codex-gemini-review/paper-figure/SKILL.md +289 -0
- package/skills/skills-codex-gemini-review/paper-plan/SKILL.md +265 -0
- package/skills/skills-codex-gemini-review/paper-poster-html/SKILL.md +102 -0
- package/skills/skills-codex-gemini-review/paper-slides/SKILL.md +582 -0
- package/skills/skills-codex-gemini-review/paper-write/SKILL.md +346 -0
- package/skills/skills-codex-gemini-review/paper-writing/SKILL.md +312 -0
- package/skills/skills-codex-gemini-review/research-refine/SKILL.md +674 -0
- package/skills/skills-codex-gemini-review/research-review/SKILL.md +112 -0
- package/skills/slides-polish/SKILL.md +565 -0
- package/skills/specification-writing/SKILL.md +211 -0
- package/skills/system-profile/SKILL.md +103 -0
- package/skills/training-check/SKILL.md +132 -0
- package/skills/vast-gpu/SKILL.md +394 -0
- package/skills/web-debug-search/SKILL.md +334 -0
- package/skills/wiki-enrich/SKILL.md +257 -0
- package/skills/writing-systems-papers/SKILL.md +184 -0
- package/templates/CLAUDE_MD_TEMPLATE.md +29 -0
- package/templates/EXPERIMENT_LOG_TEMPLATE.md +47 -0
- package/templates/EXPERIMENT_PLAN_TEMPLATE.md +51 -0
- package/templates/EXPERIMENT_PLAN_TEMPLATE_CN.md +53 -0
- package/templates/FINDINGS_TEMPLATE.md +52 -0
- package/templates/IDEA_CANDIDATES_TEMPLATE.md +47 -0
- package/templates/IDEA_CANDIDATES_TEMPLATE_CN.md +47 -0
- package/templates/INVENTION_BRIEF_TEMPLATE.md +87 -0
- package/templates/MANIFEST_TEMPLATE.md +7 -0
- package/templates/NARRATIVE_REPORT_TEMPLATE.md +49 -0
- package/templates/PAPER_PLAN_TEMPLATE.md +47 -0
- package/templates/PATENT_CLAIMS_TEMPLATE.md +78 -0
- package/templates/PATENT_SPECIFICATION_TEMPLATE.md +68 -0
- package/templates/README.md +57 -0
- package/templates/RESEARCH_BRIEF_TEMPLATE.md +35 -0
- package/templates/RESEARCH_BRIEF_TEMPLATE_CN.md +41 -0
- package/templates/RESEARCH_CONTRACT_TEMPLATE.md +60 -0
- package/templates/claude-hooks/corpus_write_guard.json +16 -0
- package/templates/claude-hooks/corpus_write_guard.py +85 -0
- package/templates/claude-hooks/meta_logging.json +74 -0
- package/templates/gitignore-trace.txt +3 -0
- package/tools/__pycache__/check_skills_inventory.cpython-314.pyc +0 -0
- package/tools/arxiv_fetch.py +311 -0
- package/tools/capture_filter.py +126 -0
- package/tools/check_skills_inventory.py +273 -0
- package/tools/convert_skills_to_llm_chat.py +282 -0
- package/tools/copilot_native_evidence.py +818 -0
- package/tools/deepxiv_fetch.py +213 -0
- package/tools/evidence_check.py +212 -0
- package/tools/exa_search.py +425 -0
- package/tools/experiment_queue/README.md +118 -0
- package/tools/experiment_queue/build_manifest.py +44 -0
- package/tools/experiment_queue/queue_manager.py +44 -0
- package/tools/extract_paper_style.py +560 -0
- package/tools/figure_renderer.py +69 -0
- package/tools/forensics_gate.py +669 -0
- package/tools/generate_codex_claude_review_overrides.py +299 -0
- package/tools/idea_discovery_gate.py +256 -0
- package/tools/install_aris.ps1 +1372 -0
- package/tools/install_aris.sh +1370 -0
- package/tools/install_aris_codex.sh +1023 -0
- package/tools/install_aris_copilot.sh +1052 -0
- package/tools/iteration_log.py +143 -0
- package/tools/lint_skills_helpers.sh +84 -0
- package/tools/meta_opt/check_ready.sh +80 -0
- package/tools/meta_opt/log_event.sh +91 -0
- package/tools/meta_opt/trigger_eval.py +280 -0
- package/tools/meta_opt/trigger_evals.sample.json +28 -0
- package/tools/openalex_fetch.py +326 -0
- package/tools/overleaf_audit.sh +104 -0
- package/tools/overleaf_setup.sh +150 -0
- package/tools/paper_illustration_image2.py +62 -0
- package/tools/provenance.py +294 -0
- package/tools/research_wiki.py +1720 -0
- package/tools/review_gate.py +502 -0
- package/tools/run_state.py +399 -0
- package/tools/save_trace.sh +477 -0
- package/tools/semantic_scholar_fetch.py +438 -0
- package/tools/skill-groups.tsv +116 -0
- package/tools/skill_picker.py +238 -0
- package/tools/smart_update.ps1 +521 -0
- package/tools/smart_update.sh +591 -0
- package/tools/smart_update_codex.sh +419 -0
- package/tools/smart_update_copilot.sh +605 -0
- package/tools/threat_scan.py +222 -0
- package/tools/verify_paper_audits.sh +487 -0
- package/tools/verify_papers.py +613 -0
- package/tools/verify_wiki_coverage.sh +176 -0
- package/tools/watchdog.py +485 -0
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Deterministic state transitions for /auto-review-loop reviewer backends.
|
|
3
|
+
|
|
4
|
+
The skill remains the orchestrator. This helper owns only the stop/continue/
|
|
5
|
+
escalate decision so that the safety-critical transition table is executable
|
|
6
|
+
and testable instead of existing solely as prose in SKILL.md.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import argparse
|
|
12
|
+
import json
|
|
13
|
+
import math
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
import re
|
|
16
|
+
import sys
|
|
17
|
+
from dataclasses import asdict, dataclass
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
TOOLS_DIR = str(Path(__file__).resolve().parent)
|
|
21
|
+
if TOOLS_DIR not in sys.path:
|
|
22
|
+
sys.path.insert(0, TOOLS_DIR)
|
|
23
|
+
|
|
24
|
+
KNOWN_FAMILIES = {
|
|
25
|
+
"openai", "anthropic", "google", "deepseek", "moonshot", "qwen",
|
|
26
|
+
"zhipu", "minimax", "xiaomi", "bytedance", "xai", "meta", "mistral",
|
|
27
|
+
}
|
|
28
|
+
POSITIVE_VERDICTS = {"ready", "almost"}
|
|
29
|
+
VALID_BACKENDS = {"codex", "manual", "copilot", "copilot-native", "oracle-pro", "agy", "llm-chat"}
|
|
30
|
+
VALID_VERDICTS = POSITIVE_VERDICTS | {"not ready"}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass(frozen=True)
|
|
34
|
+
class Transition:
|
|
35
|
+
decision: str
|
|
36
|
+
next_backend: str | None
|
|
37
|
+
requires_external_acquittal: bool
|
|
38
|
+
identity_assurance: str
|
|
39
|
+
reason: str
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@dataclass(frozen=True)
|
|
43
|
+
class NativeEvidence:
|
|
44
|
+
evidence_id: str
|
|
45
|
+
executor_model: str
|
|
46
|
+
reviewer_model: str
|
|
47
|
+
score: float
|
|
48
|
+
verdict: str
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class NativeEvidenceError(RuntimeError):
|
|
52
|
+
"""Native evidence is missing, malformed, or cannot be validated."""
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _normalized(value: str) -> str:
|
|
56
|
+
return value.strip().lower()
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def derive_model_family(model: str) -> str:
|
|
60
|
+
name = _normalized(model)
|
|
61
|
+
families: set[str] = set()
|
|
62
|
+
if re.search(r"(^|[^a-z0-9])(gpt|chatgpt|codex|oracle|o1|o3|o4)([^a-z0-9]|$)", name):
|
|
63
|
+
families.add("openai")
|
|
64
|
+
if re.search(r"(^|[^a-z0-9])(claude|sonnet|opus|haiku|anthropic)([^a-z0-9]|$)", name):
|
|
65
|
+
families.add("anthropic")
|
|
66
|
+
if re.search(r"(^|[^a-z0-9])(gemini|google)([^a-z0-9]|$)", name):
|
|
67
|
+
families.add("google")
|
|
68
|
+
# [0-9.]* so versioned names (qwen3-max, qwen2.5-72b) still match.
|
|
69
|
+
if re.search(r"(^|[^a-z0-9])(deepseek)[0-9.]*([^a-z0-9]|$)", name):
|
|
70
|
+
families.add("deepseek")
|
|
71
|
+
if re.search(r"(^|[^a-z0-9])(kimi|moonshot)[0-9.]*([^a-z0-9]|$)", name):
|
|
72
|
+
families.add("moonshot")
|
|
73
|
+
if re.search(r"(^|[^a-z0-9])(qwen|tongyi)[0-9.]*([^a-z0-9]|$)", name):
|
|
74
|
+
families.add("qwen")
|
|
75
|
+
if re.search(r"(^|[^a-z0-9])(glm|zhipu)[0-9.]*([^a-z0-9]|$)", name):
|
|
76
|
+
families.add("zhipu")
|
|
77
|
+
if re.search(r"(^|[^a-z0-9])(minimax|abab)[0-9.]*([^a-z0-9]|$)", name):
|
|
78
|
+
families.add("minimax")
|
|
79
|
+
if re.search(r"(^|[^a-z0-9])(mimo|xiaomi)[0-9.]*([^a-z0-9]|$)", name):
|
|
80
|
+
families.add("xiaomi")
|
|
81
|
+
if re.search(r"(^|[^a-z0-9])(doubao|bytedance|volcengine)[0-9.]*([^a-z0-9]|$)", name):
|
|
82
|
+
families.add("bytedance")
|
|
83
|
+
if re.search(r"(^|[^a-z0-9])(grok)[0-9.]*([^a-z0-9]|$)", name):
|
|
84
|
+
families.add("xai")
|
|
85
|
+
if re.search(r"(^|[^a-z0-9])(llama)[0-9.]*([^a-z0-9]|$)", name):
|
|
86
|
+
families.add("meta")
|
|
87
|
+
if re.search(r"(^|[^a-z0-9])(mistral|mixtral)[0-9.]*([^a-z0-9]|$)", name):
|
|
88
|
+
families.add("mistral")
|
|
89
|
+
return next(iter(families)) if len(families) == 1 else "unknown"
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _parse_native_assessment(response: str) -> tuple[float, str]:
|
|
93
|
+
score_matches = re.findall(
|
|
94
|
+
r"(?im)^\s*(?:[-*]\s*)?score:\s*([0-9]+(?:\.[0-9]+)?)\s*/\s*10\s*$",
|
|
95
|
+
response,
|
|
96
|
+
)
|
|
97
|
+
verdict_matches = re.findall(
|
|
98
|
+
r"(?im)^\s*(?:[-*]\s*)?verdict:\s*(ready|almost|not\s+ready)\s*$",
|
|
99
|
+
response,
|
|
100
|
+
)
|
|
101
|
+
if len(score_matches) != 1 or len(verdict_matches) != 1:
|
|
102
|
+
raise NativeEvidenceError(
|
|
103
|
+
"native reviewer response must contain exactly one anchored Score and Verdict field"
|
|
104
|
+
)
|
|
105
|
+
return float(score_matches[0]), re.sub(r"\s+", " ", verdict_matches[0].lower())
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def load_native_evidence(path: str | Path) -> NativeEvidence:
|
|
109
|
+
try:
|
|
110
|
+
from copilot_native_evidence import (
|
|
111
|
+
EvidenceError as HostEvidenceError,
|
|
112
|
+
validate_evidence_artifact,
|
|
113
|
+
)
|
|
114
|
+
except ImportError as exc:
|
|
115
|
+
raise NativeEvidenceError(
|
|
116
|
+
"copilot_native_evidence.py is unavailable beside review_gate.py"
|
|
117
|
+
) from exc
|
|
118
|
+
try:
|
|
119
|
+
artifact = validate_evidence_artifact(Path(path))
|
|
120
|
+
except HostEvidenceError as exc:
|
|
121
|
+
raise NativeEvidenceError(str(exc)) from exc
|
|
122
|
+
response_path = artifact.get("response_path")
|
|
123
|
+
if not isinstance(response_path, str) or not response_path:
|
|
124
|
+
raise NativeEvidenceError("native evidence is missing response_path")
|
|
125
|
+
response = Path(response_path).read_text(encoding="utf-8")
|
|
126
|
+
score, verdict = _parse_native_assessment(response)
|
|
127
|
+
return NativeEvidence(
|
|
128
|
+
evidence_id=str(artifact["evidence_id"]),
|
|
129
|
+
executor_model=str(artifact["executor_model"]),
|
|
130
|
+
reviewer_model=str(artifact["reviewer_model"]),
|
|
131
|
+
score=score,
|
|
132
|
+
verdict=verdict,
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def evaluate_transition(
|
|
137
|
+
*,
|
|
138
|
+
round_backend: str,
|
|
139
|
+
score: float,
|
|
140
|
+
verdict: str,
|
|
141
|
+
requires_external_acquittal: bool = False,
|
|
142
|
+
executor_model: str = "",
|
|
143
|
+
reviewer_model: str = "",
|
|
144
|
+
codex_available: bool = False,
|
|
145
|
+
manual_available: bool = False,
|
|
146
|
+
manual_identity_reported: bool = False,
|
|
147
|
+
native_evidence: NativeEvidence | None = None,
|
|
148
|
+
) -> Transition:
|
|
149
|
+
"""Return the authoritative transition for one completed review round.
|
|
150
|
+
|
|
151
|
+
``executor_model`` is caller-declared in the compatibility Copilot drive
|
|
152
|
+
integration. It is useful for fail-closed route selection, but the
|
|
153
|
+
resulting family relation is not independent identity attestation.
|
|
154
|
+
``copilot-native`` never uses those caller model fields: its identities and
|
|
155
|
+
structured verdict are loaded from a revalidated host event artifact.
|
|
156
|
+
Family strings are never accepted as inputs; this helper derives them from
|
|
157
|
+
the model identities itself.
|
|
158
|
+
"""
|
|
159
|
+
|
|
160
|
+
backend = _normalized(round_backend)
|
|
161
|
+
normalized_verdict = _normalized(verdict)
|
|
162
|
+
executor = derive_model_family(executor_model)
|
|
163
|
+
reviewer = derive_model_family(reviewer_model)
|
|
164
|
+
|
|
165
|
+
if backend not in VALID_BACKENDS:
|
|
166
|
+
return Transition(
|
|
167
|
+
"review_unavailable",
|
|
168
|
+
None,
|
|
169
|
+
requires_external_acquittal,
|
|
170
|
+
"unverified",
|
|
171
|
+
f"unknown reviewer backend: {round_backend}",
|
|
172
|
+
)
|
|
173
|
+
if normalized_verdict not in VALID_VERDICTS:
|
|
174
|
+
return Transition(
|
|
175
|
+
"review_unavailable",
|
|
176
|
+
None,
|
|
177
|
+
requires_external_acquittal,
|
|
178
|
+
"unverified",
|
|
179
|
+
f"unknown verdict: {verdict}",
|
|
180
|
+
)
|
|
181
|
+
if not math.isfinite(score) or not 1 <= score <= 10:
|
|
182
|
+
return Transition(
|
|
183
|
+
"review_unavailable",
|
|
184
|
+
None,
|
|
185
|
+
requires_external_acquittal,
|
|
186
|
+
"unverified",
|
|
187
|
+
f"score must be finite and within 1..10: {score}",
|
|
188
|
+
)
|
|
189
|
+
if backend != "copilot-native" and native_evidence is not None:
|
|
190
|
+
return Transition(
|
|
191
|
+
"review_unavailable",
|
|
192
|
+
None,
|
|
193
|
+
requires_external_acquittal,
|
|
194
|
+
"failed",
|
|
195
|
+
"native Copilot evidence was supplied for a non-native backend",
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
positive = score >= 6 and normalized_verdict in POSITIVE_VERDICTS
|
|
199
|
+
|
|
200
|
+
if backend == "copilot-native":
|
|
201
|
+
if requires_external_acquittal:
|
|
202
|
+
return Transition(
|
|
203
|
+
"review_unavailable",
|
|
204
|
+
None,
|
|
205
|
+
True,
|
|
206
|
+
"unverified",
|
|
207
|
+
"invalid state: native Copilot review cannot inherit a compatibility-finalizer obligation",
|
|
208
|
+
)
|
|
209
|
+
if native_evidence is None:
|
|
210
|
+
return Transition(
|
|
211
|
+
"review_unavailable",
|
|
212
|
+
None,
|
|
213
|
+
False,
|
|
214
|
+
"unverified",
|
|
215
|
+
"native Copilot round is missing host-event evidence",
|
|
216
|
+
)
|
|
217
|
+
native_executor = derive_model_family(native_evidence.executor_model)
|
|
218
|
+
native_reviewer = derive_model_family(native_evidence.reviewer_model)
|
|
219
|
+
if native_executor not in KNOWN_FAMILIES or native_reviewer not in KNOWN_FAMILIES:
|
|
220
|
+
return Transition(
|
|
221
|
+
"review_unavailable",
|
|
222
|
+
None,
|
|
223
|
+
False,
|
|
224
|
+
"failed",
|
|
225
|
+
"native Copilot evidence contains an unknown model family",
|
|
226
|
+
)
|
|
227
|
+
if native_executor == native_reviewer:
|
|
228
|
+
return Transition(
|
|
229
|
+
"review_unavailable",
|
|
230
|
+
None,
|
|
231
|
+
False,
|
|
232
|
+
"failed",
|
|
233
|
+
"native Copilot reviewer is same-family as the host-reported executor",
|
|
234
|
+
)
|
|
235
|
+
if not math.isclose(score, native_evidence.score, rel_tol=0.0, abs_tol=1e-9):
|
|
236
|
+
return Transition(
|
|
237
|
+
"review_unavailable",
|
|
238
|
+
None,
|
|
239
|
+
False,
|
|
240
|
+
"failed",
|
|
241
|
+
"declared score does not match the host-bound native reviewer response",
|
|
242
|
+
)
|
|
243
|
+
if normalized_verdict != _normalized(native_evidence.verdict):
|
|
244
|
+
return Transition(
|
|
245
|
+
"review_unavailable",
|
|
246
|
+
None,
|
|
247
|
+
False,
|
|
248
|
+
"failed",
|
|
249
|
+
"declared verdict does not match the host-bound native reviewer response",
|
|
250
|
+
)
|
|
251
|
+
if not positive:
|
|
252
|
+
return Transition(
|
|
253
|
+
"continue",
|
|
254
|
+
"copilot-native",
|
|
255
|
+
False,
|
|
256
|
+
"host_event_verified",
|
|
257
|
+
f"native cross-family reviewer {native_evidence.evidence_id} did not meet the positive threshold",
|
|
258
|
+
)
|
|
259
|
+
return Transition(
|
|
260
|
+
"stop",
|
|
261
|
+
None,
|
|
262
|
+
False,
|
|
263
|
+
"host_event_verified",
|
|
264
|
+
f"native cross-family reviewer {native_evidence.evidence_id} returned a host-bound positive verdict",
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
if backend == "copilot":
|
|
268
|
+
if requires_external_acquittal:
|
|
269
|
+
return Transition(
|
|
270
|
+
"review_unavailable",
|
|
271
|
+
None,
|
|
272
|
+
True,
|
|
273
|
+
"unverified",
|
|
274
|
+
"invalid state: copilot cannot resume after finalizer escalation",
|
|
275
|
+
)
|
|
276
|
+
if not positive:
|
|
277
|
+
return Transition(
|
|
278
|
+
"continue",
|
|
279
|
+
"copilot",
|
|
280
|
+
False,
|
|
281
|
+
"unverified",
|
|
282
|
+
"copilot drive verdict is not positive",
|
|
283
|
+
)
|
|
284
|
+
if executor not in KNOWN_FAMILIES:
|
|
285
|
+
return Transition(
|
|
286
|
+
"review_unavailable",
|
|
287
|
+
None,
|
|
288
|
+
False,
|
|
289
|
+
"unverified",
|
|
290
|
+
"cannot select an opposite-family finalizer from an unknown executor family",
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
if executor == "openai":
|
|
294
|
+
if not manual_available:
|
|
295
|
+
return Transition(
|
|
296
|
+
"review_unavailable",
|
|
297
|
+
None,
|
|
298
|
+
False,
|
|
299
|
+
"caller_declared",
|
|
300
|
+
"OpenAI-family executor requires a non-OpenAI manual finalizer",
|
|
301
|
+
)
|
|
302
|
+
next_backend = "manual"
|
|
303
|
+
elif codex_available:
|
|
304
|
+
next_backend = "codex"
|
|
305
|
+
elif manual_available:
|
|
306
|
+
next_backend = "manual"
|
|
307
|
+
else:
|
|
308
|
+
return Transition(
|
|
309
|
+
"review_unavailable",
|
|
310
|
+
None,
|
|
311
|
+
False,
|
|
312
|
+
"caller_declared",
|
|
313
|
+
"no policy-approved finalizer is available",
|
|
314
|
+
)
|
|
315
|
+
|
|
316
|
+
return Transition(
|
|
317
|
+
"escalate",
|
|
318
|
+
next_backend,
|
|
319
|
+
True,
|
|
320
|
+
"caller_declared",
|
|
321
|
+
"copilot is drive-only; a positive verdict requires an external finalizer",
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
if not positive:
|
|
325
|
+
return Transition(
|
|
326
|
+
"continue",
|
|
327
|
+
backend,
|
|
328
|
+
requires_external_acquittal,
|
|
329
|
+
"unverified",
|
|
330
|
+
"positive threshold not met",
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
if backend == "llm-chat":
|
|
334
|
+
if requires_external_acquittal:
|
|
335
|
+
return Transition(
|
|
336
|
+
"review_unavailable",
|
|
337
|
+
None,
|
|
338
|
+
True,
|
|
339
|
+
"unverified",
|
|
340
|
+
"Copilot finalizer state permits only codex or manual",
|
|
341
|
+
)
|
|
342
|
+
if executor not in KNOWN_FAMILIES or reviewer not in KNOWN_FAMILIES:
|
|
343
|
+
return Transition(
|
|
344
|
+
"review_unavailable",
|
|
345
|
+
None,
|
|
346
|
+
False,
|
|
347
|
+
"unverified",
|
|
348
|
+
"HTTP reviewer family relation cannot be derived",
|
|
349
|
+
)
|
|
350
|
+
if executor == reviewer:
|
|
351
|
+
return Transition(
|
|
352
|
+
"review_unavailable",
|
|
353
|
+
None,
|
|
354
|
+
False,
|
|
355
|
+
"failed",
|
|
356
|
+
"HTTP reviewer is same-family as the declared executor model",
|
|
357
|
+
)
|
|
358
|
+
return Transition(
|
|
359
|
+
"stop",
|
|
360
|
+
None,
|
|
361
|
+
False,
|
|
362
|
+
"caller_declared",
|
|
363
|
+
"HTTP reviewer returned a positive cross-family verdict; executor identity remains caller-declared",
|
|
364
|
+
)
|
|
365
|
+
|
|
366
|
+
if backend in {"codex", "oracle-pro", "agy"} and not requires_external_acquittal:
|
|
367
|
+
return Transition(
|
|
368
|
+
"stop",
|
|
369
|
+
None,
|
|
370
|
+
False,
|
|
371
|
+
"not_required",
|
|
372
|
+
"non-Copilot backend preserves the pre-Copilot positive-stop contract",
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
if backend in {"oracle-pro", "agy"} and requires_external_acquittal:
|
|
376
|
+
return Transition(
|
|
377
|
+
"review_unavailable",
|
|
378
|
+
None,
|
|
379
|
+
True,
|
|
380
|
+
"unverified",
|
|
381
|
+
"Copilot finalizer state permits only codex or manual",
|
|
382
|
+
)
|
|
383
|
+
|
|
384
|
+
if backend == "manual" and not manual_identity_reported:
|
|
385
|
+
return Transition(
|
|
386
|
+
"review_unavailable",
|
|
387
|
+
None,
|
|
388
|
+
requires_external_acquittal,
|
|
389
|
+
"unverified",
|
|
390
|
+
"manual final verdict is missing its required reported model identity",
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
if backend == "manual":
|
|
394
|
+
if executor not in KNOWN_FAMILIES or reviewer not in KNOWN_FAMILIES:
|
|
395
|
+
return Transition(
|
|
396
|
+
"review_unavailable",
|
|
397
|
+
None,
|
|
398
|
+
requires_external_acquittal,
|
|
399
|
+
"unverified",
|
|
400
|
+
"manual verdict family relation cannot be derived",
|
|
401
|
+
)
|
|
402
|
+
if executor == reviewer:
|
|
403
|
+
return Transition(
|
|
404
|
+
"review_unavailable",
|
|
405
|
+
None,
|
|
406
|
+
requires_external_acquittal,
|
|
407
|
+
"failed",
|
|
408
|
+
"manual reviewer is same-family as the declared executor model",
|
|
409
|
+
)
|
|
410
|
+
|
|
411
|
+
if requires_external_acquittal:
|
|
412
|
+
if executor not in KNOWN_FAMILIES or reviewer not in KNOWN_FAMILIES:
|
|
413
|
+
return Transition(
|
|
414
|
+
"review_unavailable",
|
|
415
|
+
None,
|
|
416
|
+
True,
|
|
417
|
+
"unverified",
|
|
418
|
+
"finalizer family relation cannot be derived",
|
|
419
|
+
)
|
|
420
|
+
if executor == reviewer:
|
|
421
|
+
return Transition(
|
|
422
|
+
"review_unavailable",
|
|
423
|
+
None,
|
|
424
|
+
True,
|
|
425
|
+
"failed",
|
|
426
|
+
"finalizer is same-family as the declared executor model",
|
|
427
|
+
)
|
|
428
|
+
return Transition(
|
|
429
|
+
"stop",
|
|
430
|
+
None,
|
|
431
|
+
False,
|
|
432
|
+
"caller_declared",
|
|
433
|
+
"policy-approved finalizer returned a positive verdict; executor identity remains caller-declared",
|
|
434
|
+
)
|
|
435
|
+
|
|
436
|
+
return Transition(
|
|
437
|
+
"stop",
|
|
438
|
+
None,
|
|
439
|
+
False,
|
|
440
|
+
"caller_declared",
|
|
441
|
+
"explicit manual backend returned a positive verdict with its required model identity",
|
|
442
|
+
)
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
def build_parser() -> argparse.ArgumentParser:
|
|
446
|
+
parser = argparse.ArgumentParser(description=__doc__)
|
|
447
|
+
parser.add_argument("--round-backend", required=True, choices=sorted(VALID_BACKENDS))
|
|
448
|
+
parser.add_argument("--score", required=True, type=float)
|
|
449
|
+
parser.add_argument("--verdict", required=True, choices=sorted(VALID_VERDICTS))
|
|
450
|
+
parser.add_argument("--requires-external-acquittal", action=argparse.BooleanOptionalAction, default=False)
|
|
451
|
+
parser.add_argument("--executor-model", default="")
|
|
452
|
+
parser.add_argument("--reviewer-model", default="")
|
|
453
|
+
parser.add_argument("--codex-available", action=argparse.BooleanOptionalAction, default=False)
|
|
454
|
+
parser.add_argument("--manual-available", action=argparse.BooleanOptionalAction, default=False)
|
|
455
|
+
parser.add_argument("--manual-identity-reported", action=argparse.BooleanOptionalAction, default=False)
|
|
456
|
+
parser.add_argument("--native-evidence", default="")
|
|
457
|
+
return parser
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
def main() -> None:
|
|
461
|
+
args = build_parser().parse_args()
|
|
462
|
+
native_evidence = None
|
|
463
|
+
if args.native_evidence and args.round_backend != "copilot-native":
|
|
464
|
+
transition = Transition(
|
|
465
|
+
"review_unavailable",
|
|
466
|
+
None,
|
|
467
|
+
args.requires_external_acquittal,
|
|
468
|
+
"failed",
|
|
469
|
+
"native Copilot evidence is valid only for --round-backend copilot-native",
|
|
470
|
+
)
|
|
471
|
+
print(json.dumps(asdict(transition), sort_keys=True))
|
|
472
|
+
return
|
|
473
|
+
if args.native_evidence:
|
|
474
|
+
try:
|
|
475
|
+
native_evidence = load_native_evidence(args.native_evidence)
|
|
476
|
+
except (NativeEvidenceError, OSError, UnicodeError, KeyError) as exc:
|
|
477
|
+
transition = Transition(
|
|
478
|
+
"review_unavailable",
|
|
479
|
+
None,
|
|
480
|
+
args.requires_external_acquittal,
|
|
481
|
+
"failed",
|
|
482
|
+
f"invalid native Copilot evidence: {exc}",
|
|
483
|
+
)
|
|
484
|
+
print(json.dumps(asdict(transition), sort_keys=True))
|
|
485
|
+
return
|
|
486
|
+
transition = evaluate_transition(
|
|
487
|
+
round_backend=args.round_backend,
|
|
488
|
+
score=args.score,
|
|
489
|
+
verdict=args.verdict,
|
|
490
|
+
requires_external_acquittal=args.requires_external_acquittal,
|
|
491
|
+
executor_model=args.executor_model,
|
|
492
|
+
reviewer_model=args.reviewer_model,
|
|
493
|
+
codex_available=args.codex_available,
|
|
494
|
+
manual_available=args.manual_available,
|
|
495
|
+
manual_identity_reported=args.manual_identity_reported,
|
|
496
|
+
native_evidence=native_evidence,
|
|
497
|
+
)
|
|
498
|
+
print(json.dumps(asdict(transition), sort_keys=True))
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
if __name__ == "__main__":
|
|
502
|
+
main()
|