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,294 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Provenance-as-authorization for ARIS auto-authored artifacts.
|
|
3
|
+
|
|
4
|
+
The primitive ARIS needs the MOMENT it auto-writes a skill / memory node: a
|
|
5
|
+
record of WHO authored an artifact and WHO acquitted it, so that (a) auto-curation
|
|
6
|
+
(meta-optimize, a future skill-curator) only ever touches MACHINE-authored
|
|
7
|
+
artifacts — never the hand-written canonical skills or the user's own notes — and
|
|
8
|
+
(b) it is provably true that no single model both wrote and approved an artifact.
|
|
9
|
+
|
|
10
|
+
This is the provenance-as-authorization-boundary pattern (adapted from
|
|
11
|
+
NousResearch/hermes-agent's skill_provenance ContextVar, MIT). ARIS's increment:
|
|
12
|
+
Hermes records only `created_by`, and its cross-model curator is OPTIONAL config
|
|
13
|
+
(defaults to the SAME chat model). ARIS records the RICHER tuple
|
|
14
|
+
{author_model, reviewer_model, verdict_id, content_hash}. Strict `stamp()` keeps
|
|
15
|
+
cross-family acceptance NON-NEGOTIABLE. Codex-only workflows may instead write
|
|
16
|
+
an explicit same-family `stamp_provisional()` receipt; it is traceable but never
|
|
17
|
+
authorizes future automatic curation. See shared-references/skill-governance.md.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
from __future__ import annotations
|
|
21
|
+
|
|
22
|
+
import argparse
|
|
23
|
+
import hashlib
|
|
24
|
+
import json
|
|
25
|
+
import re
|
|
26
|
+
import sys
|
|
27
|
+
from datetime import datetime, timezone
|
|
28
|
+
from pathlib import Path
|
|
29
|
+
from typing import Optional
|
|
30
|
+
|
|
31
|
+
# Model-name → family. Match model/vendor needles at token boundaries so wrapper
|
|
32
|
+
# or provider names cannot substring-bleed into unrelated families (for example,
|
|
33
|
+
# ``ollama/deepseek-r1`` must be DeepSeek only, not DeepSeek + Llama). Version
|
|
34
|
+
# suffixes remain supported. ARIS routes oracle-pro to a GPT-Pro tier, so
|
|
35
|
+
# `oracle` is the OPENAI family (NOT a separate one) — getting this wrong would
|
|
36
|
+
# let oracle "cross-check" a GPT executor.
|
|
37
|
+
_FAMILY = [
|
|
38
|
+
("anthropic", ("claude", "opus", "sonnet", "haiku")),
|
|
39
|
+
("openai", ("gpt", "codex", "oracle", "chatgpt", "o1", "o3", "o4")),
|
|
40
|
+
("google", ("gemini", "palm", "bard")),
|
|
41
|
+
("deepseek", ("deepseek",)),
|
|
42
|
+
("zhipu", ("glm", "zhipu")),
|
|
43
|
+
("minimax", ("minimax", "abab")),
|
|
44
|
+
("moonshot", ("kimi", "moonshot")),
|
|
45
|
+
("qwen", ("qwen", "tongyi")),
|
|
46
|
+
("xiaomi", ("mimo", "xiaomi")),
|
|
47
|
+
("bytedance", ("doubao", "bytedance", "volcengine")),
|
|
48
|
+
("xai", ("grok",)),
|
|
49
|
+
("meta", ("llama",)),
|
|
50
|
+
("mistral", ("mistral", "mixtral")),
|
|
51
|
+
]
|
|
52
|
+
_SHORT = {"o1", "o3", "o4"} # ambiguous → exact-token match only
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def model_family(name: str) -> str:
|
|
56
|
+
"""Map a model/reviewer name to a coarse family ('unknown' if unrecognized).
|
|
57
|
+
|
|
58
|
+
A 'deterministic:<verifier>' reviewer maps to 'deterministic' — a verifier is
|
|
59
|
+
a process, not a model family, and is always a valid cross-check.
|
|
60
|
+
|
|
61
|
+
Fails closed on COLLISION: a name that matches TWO families' needles (e.g. a
|
|
62
|
+
mislabeled 'claude-gpt-4') returns 'unknown' rather than letting first-match-wins
|
|
63
|
+
silently pick one — so a colliding name can never slip through assert_cross_family
|
|
64
|
+
as a (wrong) cross-family pair; it raises instead.
|
|
65
|
+
"""
|
|
66
|
+
n = (name or "").strip().lower()
|
|
67
|
+
if n.startswith("deterministic:") or n == "deterministic":
|
|
68
|
+
return "deterministic"
|
|
69
|
+
matched = set()
|
|
70
|
+
for fam, needles in _FAMILY:
|
|
71
|
+
for needle in needles:
|
|
72
|
+
suffix = "" if needle in _SHORT else r"[0-9.]*"
|
|
73
|
+
pattern = rf"(^|[^a-z0-9]){re.escape(needle)}{suffix}([^a-z0-9]|$)"
|
|
74
|
+
if re.search(pattern, n):
|
|
75
|
+
matched.add(fam)
|
|
76
|
+
break
|
|
77
|
+
return next(iter(matched)) if len(matched) == 1 else "unknown"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def assert_cross_family(author_model: str, reviewer_model: str) -> None:
|
|
81
|
+
"""Raise unless the reviewer is a different model family than the author (or a
|
|
82
|
+
deterministic verifier). This is the structural cross-model invariant — a
|
|
83
|
+
same-family acquittal is forbidden, and an unrecognized family fails closed."""
|
|
84
|
+
fr = model_family(reviewer_model)
|
|
85
|
+
if fr == "deterministic":
|
|
86
|
+
return
|
|
87
|
+
fa = model_family(author_model)
|
|
88
|
+
if fa == "unknown" or fr == "unknown":
|
|
89
|
+
raise ValueError(
|
|
90
|
+
f"unrecognized model family for author={author_model!r} ({fa}) / "
|
|
91
|
+
f"reviewer={reviewer_model!r} ({fr}) — cannot assert the cross-model "
|
|
92
|
+
f"invariant; use a recognized reviewer or a 'deterministic:<verifier>'.")
|
|
93
|
+
if fa == fr:
|
|
94
|
+
raise ValueError(
|
|
95
|
+
f"author ({author_model}={fa}) and reviewer ({reviewer_model}={fr}) are "
|
|
96
|
+
f"the SAME model family — self-acquittal is forbidden. The reviewer must "
|
|
97
|
+
f"be a different family (e.g. executor=Claude → reviewer=codex/gemini) "
|
|
98
|
+
f"or a deterministic verifier.")
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def content_hash(path: str) -> str:
|
|
102
|
+
"""SHA-256 of the file at `path` (tamper-evident anchor for the provenance)."""
|
|
103
|
+
h = hashlib.sha256()
|
|
104
|
+
h.update(Path(path).read_bytes())
|
|
105
|
+
return h.hexdigest()
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def _sidecar(target: str) -> Path:
|
|
109
|
+
p = Path(target)
|
|
110
|
+
return (p / ".provenance.json") if p.is_dir() else p.with_name(p.name + ".provenance.json")
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def _stamp_record(target: str, author_model: str, reviewer_model: str,
|
|
114
|
+
verdict_id: str, review_independence: str,
|
|
115
|
+
acceptance_status: str, created_by: str,
|
|
116
|
+
ts: Optional[str]) -> dict:
|
|
117
|
+
if not verdict_id:
|
|
118
|
+
raise ValueError("provenance requires a non-empty verdict_id (the reviewer's "
|
|
119
|
+
"thread/trace id, or the verifier report path/sha).")
|
|
120
|
+
p = Path(target)
|
|
121
|
+
hash_target = (p / "SKILL.md") if p.is_dir() and (p / "SKILL.md").is_file() else p
|
|
122
|
+
record = {
|
|
123
|
+
"created_by": created_by,
|
|
124
|
+
"author_model": author_model,
|
|
125
|
+
"author_family": model_family(author_model),
|
|
126
|
+
"reviewer_model": reviewer_model,
|
|
127
|
+
"reviewer_family": model_family(reviewer_model),
|
|
128
|
+
"review_independence": review_independence,
|
|
129
|
+
"acceptance_status": acceptance_status,
|
|
130
|
+
"verdict_id": verdict_id,
|
|
131
|
+
"content_hash": content_hash(str(hash_target)) if hash_target.is_file() else None,
|
|
132
|
+
"stamped_at": ts or datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
|
|
133
|
+
}
|
|
134
|
+
_sidecar(target).write_text(json.dumps(record, ensure_ascii=False, indent=2), encoding="utf-8")
|
|
135
|
+
return record
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def stamp(target: str, author_model: str, reviewer_model: str, verdict_id: str,
|
|
139
|
+
created_by: str = "aris-auto", ts: Optional[str] = None) -> dict:
|
|
140
|
+
"""Record accepted provenance for an auto-authored artifact.
|
|
141
|
+
|
|
142
|
+
REFUSES (raises) if author and reviewer are the same model family, or if the
|
|
143
|
+
verdict id is empty. Deterministic reviewers remain valid acceptance gates.
|
|
144
|
+
"""
|
|
145
|
+
assert_cross_family(author_model, reviewer_model)
|
|
146
|
+
independence = (
|
|
147
|
+
"deterministic"
|
|
148
|
+
if model_family(reviewer_model) == "deterministic"
|
|
149
|
+
else "cross-family"
|
|
150
|
+
)
|
|
151
|
+
return _stamp_record(
|
|
152
|
+
target, author_model, reviewer_model, verdict_id,
|
|
153
|
+
independence, "accepted", created_by, ts,
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def stamp_provisional(target: str, author_model: str, reviewer_model: str,
|
|
158
|
+
verdict_id: str, created_by: str = "aris-auto",
|
|
159
|
+
ts: Optional[str] = None) -> dict:
|
|
160
|
+
"""Record an explicit same-family review without granting acceptance.
|
|
161
|
+
|
|
162
|
+
Both model names must resolve to the same non-deterministic family. A
|
|
163
|
+
different-family reviewer must use :func:`stamp`; unknown model families
|
|
164
|
+
fail closed so a provisional receipt cannot conceal ambiguous provenance.
|
|
165
|
+
"""
|
|
166
|
+
author_family = model_family(author_model)
|
|
167
|
+
reviewer_family = model_family(reviewer_model)
|
|
168
|
+
if author_family == "unknown" or reviewer_family == "unknown":
|
|
169
|
+
raise ValueError(
|
|
170
|
+
f"unrecognized model family for provisional author={author_model!r} "
|
|
171
|
+
f"({author_family}) / reviewer={reviewer_model!r} ({reviewer_family})")
|
|
172
|
+
if reviewer_family == "deterministic" or author_family != reviewer_family:
|
|
173
|
+
raise ValueError(
|
|
174
|
+
"stamp_provisional is only for same-family model review; use stamp "
|
|
175
|
+
"for a cross-family or deterministic acceptance gate.")
|
|
176
|
+
# MONOTONIC: a provisional receipt must never silently replace an accepted
|
|
177
|
+
# one — acceptance can only be superseded by a new accepted stamp.
|
|
178
|
+
existing = read(target)
|
|
179
|
+
if existing and _record_is_accepted(existing):
|
|
180
|
+
raise ValueError(
|
|
181
|
+
"refusing to overwrite an ACCEPTED provenance record with a "
|
|
182
|
+
"provisional one (acceptance is monotonic; re-run the cross-family "
|
|
183
|
+
"gate via stamp() if the artifact changed).")
|
|
184
|
+
return _stamp_record(
|
|
185
|
+
target, author_model, reviewer_model, verdict_id,
|
|
186
|
+
"same-family", "provisional", created_by, ts,
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def read(target: str) -> Optional[dict]:
|
|
191
|
+
sc = _sidecar(target)
|
|
192
|
+
return json.loads(sc.read_text(encoding="utf-8")) if sc.exists() else None
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def is_auto_authored(target: str) -> bool:
|
|
196
|
+
"""True iff the artifact has a provenance record marking it machine-authored.
|
|
197
|
+
Auto-curation (meta-optimize etc.) may ONLY touch artifacts where this is True —
|
|
198
|
+
canonical hand-written skills and user notes have no such record and are off-limits."""
|
|
199
|
+
rec = read(target)
|
|
200
|
+
return bool(rec and rec.get("created_by") == "aris-auto")
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def _record_is_accepted(rec: dict) -> bool:
|
|
204
|
+
"""A record counts as ACCEPTED only when its own stored fields survive
|
|
205
|
+
re-verification — a sidecar is plain JSON on disk, so nothing in it is
|
|
206
|
+
trusted at face value:
|
|
207
|
+
|
|
208
|
+
- families are RECOMPUTED from the stored model names (a hand-edited
|
|
209
|
+
``reviewer_family`` cannot fake independence);
|
|
210
|
+
- the recomputed pair must be cross-family or reviewer-deterministic;
|
|
211
|
+
- ``acceptance_status`` must be explicitly "accepted", or absent
|
|
212
|
+
(legacy record — those predate the field but were only creatable via the
|
|
213
|
+
strict cross-family stamp(), and the recomputation above re-checks that);
|
|
214
|
+
- ``review_independence``, when present, must agree with the RECOMPUTED
|
|
215
|
+
families ("cross-family", or "deterministic" for a deterministic reviewer);
|
|
216
|
+
- ``verdict_id`` must be non-empty.
|
|
217
|
+
"""
|
|
218
|
+
if not isinstance(rec, dict):
|
|
219
|
+
return False
|
|
220
|
+
if rec.get("acceptance_status", None) not in ("accepted", None):
|
|
221
|
+
return False
|
|
222
|
+
if rec.get("review_independence") not in (None, "cross-family", "deterministic"):
|
|
223
|
+
return False
|
|
224
|
+
if not str(rec.get("verdict_id") or "").strip():
|
|
225
|
+
return False
|
|
226
|
+
author_family = model_family(str(rec.get("author_model") or ""))
|
|
227
|
+
reviewer_family = model_family(str(rec.get("reviewer_model") or ""))
|
|
228
|
+
if rec.get("review_independence") == "deterministic" and reviewer_family != "deterministic":
|
|
229
|
+
return False # a label cannot make a model deterministic
|
|
230
|
+
if reviewer_family == "deterministic":
|
|
231
|
+
return True
|
|
232
|
+
return ("unknown" not in (author_family, reviewer_family)
|
|
233
|
+
and author_family != reviewer_family)
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def is_auto_curatable(target: str) -> bool:
|
|
237
|
+
"""Whether an auto-authored artifact carries accepted authorization that
|
|
238
|
+
still HOLDS. Beyond :func:`_record_is_accepted` (fields re-verified, never
|
|
239
|
+
trusted), the stored ``content_hash`` must match the CURRENT artifact — a
|
|
240
|
+
stamp for a file that has since been edited authorizes nothing. Explicit
|
|
241
|
+
provisional records are never sufficient authorization for automatic
|
|
242
|
+
rewrites."""
|
|
243
|
+
rec = read(target)
|
|
244
|
+
if not (rec and rec.get("created_by") == "aris-auto" and _record_is_accepted(rec)):
|
|
245
|
+
return False
|
|
246
|
+
p = Path(target)
|
|
247
|
+
hash_target = (p / "SKILL.md") if p.is_dir() and (p / "SKILL.md").is_file() else p
|
|
248
|
+
if not hash_target.is_file():
|
|
249
|
+
return False
|
|
250
|
+
stored = rec.get("content_hash")
|
|
251
|
+
return bool(stored) and stored == content_hash(str(hash_target))
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
__all__ = [
|
|
255
|
+
"model_family", "assert_cross_family", "content_hash", "stamp",
|
|
256
|
+
"stamp_provisional", "read", "is_auto_authored", "is_auto_curatable",
|
|
257
|
+
]
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
def main() -> int:
|
|
261
|
+
ap = argparse.ArgumentParser(description="ARIS provenance-as-authorization.")
|
|
262
|
+
sub = ap.add_subparsers(dest="cmd", required=True)
|
|
263
|
+
s = sub.add_parser("stamp"); s.add_argument("target"); s.add_argument("--author", required=True)
|
|
264
|
+
s.add_argument("--reviewer", required=True); s.add_argument("--verdict-id", required=True)
|
|
265
|
+
s = sub.add_parser("stamp-provisional"); s.add_argument("target"); s.add_argument("--author", required=True)
|
|
266
|
+
s.add_argument("--reviewer", required=True); s.add_argument("--verdict-id", required=True)
|
|
267
|
+
s = sub.add_parser("read"); s.add_argument("target")
|
|
268
|
+
s = sub.add_parser("is-auto"); s.add_argument("target")
|
|
269
|
+
s = sub.add_parser("check"); s.add_argument("--author", required=True); s.add_argument("--reviewer", required=True)
|
|
270
|
+
a = ap.parse_args()
|
|
271
|
+
try:
|
|
272
|
+
if a.cmd == "stamp":
|
|
273
|
+
print(json.dumps(stamp(a.target, a.author, a.reviewer, a.verdict_id), ensure_ascii=False, indent=2))
|
|
274
|
+
elif a.cmd == "stamp-provisional":
|
|
275
|
+
print(json.dumps(stamp_provisional(a.target, a.author, a.reviewer, a.verdict_id), ensure_ascii=False, indent=2))
|
|
276
|
+
elif a.cmd == "read":
|
|
277
|
+
rec = read(a.target)
|
|
278
|
+
print(json.dumps(rec, ensure_ascii=False, indent=2) if rec else "no provenance record")
|
|
279
|
+
return 0 if rec else 1
|
|
280
|
+
elif a.cmd == "is-auto":
|
|
281
|
+
ok = is_auto_authored(a.target)
|
|
282
|
+
print("aris-auto" if ok else "not aris-auto (canonical/user — off-limits to auto-curation)")
|
|
283
|
+
return 0 if ok else 1
|
|
284
|
+
elif a.cmd == "check":
|
|
285
|
+
assert_cross_family(a.author, a.reviewer)
|
|
286
|
+
print(f"OK: {model_family(a.author)} ≠ {model_family(a.reviewer)} (cross-family)")
|
|
287
|
+
except ValueError as e:
|
|
288
|
+
print(f"REJECTED: {e}", file=sys.stderr)
|
|
289
|
+
return 1
|
|
290
|
+
return 0
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
if __name__ == "__main__":
|
|
294
|
+
raise SystemExit(main())
|