psyclaw 0.27.22 → 0.28.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/README.md +11 -5
- package/dist/apps/panel/index.html +2 -2
- package/dist/src/adapters/pi/extension.js +225 -92
- package/dist/src/adapters/pi/extension.js.map +1 -1
- package/dist/src/agents/import.js +44 -32
- package/dist/src/agents/import.js.map +1 -1
- package/dist/src/analysis/hooks.d.ts +1 -0
- package/dist/src/analysis/hooks.js +20 -1
- package/dist/src/analysis/hooks.js.map +1 -1
- package/dist/src/ars/bridge.d.ts +20 -0
- package/dist/src/ars/bridge.js +132 -0
- package/dist/src/ars/bridge.js.map +1 -0
- package/dist/src/ars/contracts.d.ts +55 -0
- package/dist/src/ars/contracts.js +2 -0
- package/dist/src/ars/contracts.js.map +1 -0
- package/dist/src/ars/panel-plan.d.ts +4 -0
- package/dist/src/ars/panel-plan.js +11 -0
- package/dist/src/ars/panel-plan.js.map +1 -0
- package/dist/src/ars/pi-panel-executor.d.ts +30 -0
- package/dist/src/ars/pi-panel-executor.js +140 -0
- package/dist/src/ars/pi-panel-executor.js.map +1 -0
- package/dist/src/ars/profile.d.ts +36 -0
- package/dist/src/ars/profile.js +119 -0
- package/dist/src/ars/profile.js.map +1 -0
- package/dist/src/ars/re-review.d.ts +22 -0
- package/dist/src/ars/re-review.js +172 -0
- package/dist/src/ars/re-review.js.map +1 -0
- package/dist/src/branding.d.ts +2 -4
- package/dist/src/branding.js +3 -5
- package/dist/src/branding.js.map +1 -1
- package/dist/src/bundled-tools.d.ts +3 -0
- package/dist/src/bundled-tools.js +21 -0
- package/dist/src/bundled-tools.js.map +1 -0
- package/dist/src/chat.js +6 -5
- package/dist/src/chat.js.map +1 -1
- package/dist/src/creation/contracts.d.ts +38 -0
- package/dist/src/creation/contracts.js +2 -0
- package/dist/src/creation/contracts.js.map +1 -0
- package/dist/src/creation/service.d.ts +7 -0
- package/dist/src/creation/service.js +196 -0
- package/dist/src/creation/service.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.js +10 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/install/installer.js +32 -10
- package/dist/src/install/installer.js.map +1 -1
- package/dist/src/orchestration/personas.d.ts +15 -0
- package/dist/src/orchestration/personas.js +51 -0
- package/dist/src/orchestration/personas.js.map +1 -0
- package/dist/src/orchestration/pi-executor.d.ts +1 -0
- package/dist/src/orchestration/pi-executor.js +1 -1
- package/dist/src/orchestration/pi-executor.js.map +1 -1
- package/dist/src/panel/extension.js +29 -8
- package/dist/src/panel/extension.js.map +1 -1
- package/dist/src/panel/server.js +14 -5
- package/dist/src/panel/server.js.map +1 -1
- package/dist/src/project/paths.d.ts +3 -0
- package/dist/src/project/paths.js +7 -0
- package/dist/src/project/paths.js.map +1 -1
- package/dist/src/rules/user-rules.d.ts +8 -0
- package/dist/src/rules/user-rules.js +36 -0
- package/dist/src/rules/user-rules.js.map +1 -0
- package/dist/src/skills/contracts.d.ts +4 -4
- package/dist/src/skills/recommended.js +1 -1
- package/dist/src/skills/registry.js +49 -28
- package/dist/src/skills/registry.js.map +1 -1
- package/dist/src/style/cli-ui.js +0 -1
- package/dist/src/style/cli-ui.js.map +1 -1
- package/package.json +14 -3
- package/scripts/rebrand-pi.mjs +6 -0
- package/skills/recommended/catalog.json +2 -11
- package/vendor/ars/.claude/CLAUDE.md +371 -0
- package/vendor/ars/.command-invariants.toml +24 -0
- package/vendor/ars/CITATION.cff +35 -0
- package/vendor/ars/LICENSE +417 -0
- package/vendor/ars/MODE_REGISTRY.md +76 -0
- package/vendor/ars/NOTICE.md +26 -0
- package/vendor/ars/POSITIONING.md +99 -0
- package/vendor/ars/PSYCLAW_SOURCE.json +10 -0
- package/vendor/ars/README.md +751 -0
- package/vendor/ars/SECURITY.md +52 -0
- package/vendor/ars/THIRD_PARTY.md +70 -0
- package/vendor/ars/academic-paper/SKILL.md +542 -0
- package/vendor/ars/academic-paper/agents/abstract_bilingual_agent.md +171 -0
- package/vendor/ars/academic-paper/agents/argument_builder_agent.md +276 -0
- package/vendor/ars/academic-paper/agents/citation_compliance_agent.md +422 -0
- package/vendor/ars/academic-paper/agents/draft_writer_agent.md +656 -0
- package/vendor/ars/academic-paper/agents/formatter_agent.md +999 -0
- package/vendor/ars/academic-paper/agents/intake_agent.md +393 -0
- package/vendor/ars/academic-paper/agents/literature_strategist_agent.md +626 -0
- package/vendor/ars/academic-paper/agents/peer_reviewer_agent.md +516 -0
- package/vendor/ars/academic-paper/agents/revision_coach_agent.md +334 -0
- package/vendor/ars/academic-paper/agents/socratic_mentor_agent.md +527 -0
- package/vendor/ars/academic-paper/agents/structure_architect_agent.md +401 -0
- package/vendor/ars/academic-paper/agents/visualization_agent.md +441 -0
- package/vendor/ars/academic-paper/examples/chinese_paper_example.md +278 -0
- package/vendor/ars/academic-paper/examples/clinical_citation_verification_checklist.md +95 -0
- package/vendor/ars/academic-paper/examples/clinical_epistemic_status_example.md +100 -0
- package/vendor/ars/academic-paper/examples/commitment_ledger_example.md +147 -0
- package/vendor/ars/academic-paper/examples/imrad_hei_example.md +234 -0
- package/vendor/ars/academic-paper/examples/literature_review_example.md +260 -0
- package/vendor/ars/academic-paper/examples/plan_mode_guided_writing.md +600 -0
- package/vendor/ars/academic-paper/examples/revision_mode_example.md +344 -0
- package/vendor/ars/academic-paper/examples/revision_recovery_example.md +506 -0
- package/vendor/ars/academic-paper/examples/version_family_reconciliation_example.md +89 -0
- package/vendor/ars/academic-paper/references/abstract_writing_guide.md +169 -0
- package/vendor/ars/academic-paper/references/academic_writing_style.md +188 -0
- package/vendor/ars/academic-paper/references/anti_leakage_protocol.md +83 -0
- package/vendor/ars/academic-paper/references/apa7_chinese_citation_guide.md +364 -0
- package/vendor/ars/academic-paper/references/apa7_extended_guide.md +198 -0
- package/vendor/ars/academic-paper/references/changelog.md +11 -0
- package/vendor/ars/academic-paper/references/citation_format_switcher.md +228 -0
- package/vendor/ars/academic-paper/references/committee_correspondence_protocol.md +158 -0
- package/vendor/ars/academic-paper/references/credit_authorship_guide.md +308 -0
- package/vendor/ars/academic-paper/references/disclosure_mode_protocol.md +478 -0
- package/vendor/ars/academic-paper/references/domain_evidence_profiles.md +38 -0
- package/vendor/ars/academic-paper/references/failure_paths.md +349 -0
- package/vendor/ars/academic-paper/references/funding_statement_guide.md +319 -0
- package/vendor/ars/academic-paper/references/hei_domain_glossary.md +169 -0
- package/vendor/ars/academic-paper/references/intro_title_rhetoric_guide.md +114 -0
- package/vendor/ars/academic-paper/references/journal_submission_guide.md +249 -0
- package/vendor/ars/academic-paper/references/latex_template_reference.md +378 -0
- package/vendor/ars/academic-paper/references/mode_selection_guide.md +378 -0
- package/vendor/ars/academic-paper/references/paper_structure_patterns.md +330 -0
- package/vendor/ars/academic-paper/references/plan_mode_protocol.md +112 -0
- package/vendor/ars/academic-paper/references/policy_anchor_disclosure_protocol.md +200 -0
- package/vendor/ars/academic-paper/references/policy_anchor_table.md +157 -0
- package/vendor/ars/academic-paper/references/revision_patch_protocol.md +173 -0
- package/vendor/ars/academic-paper/references/statistical_visualization_standards.md +750 -0
- package/vendor/ars/academic-paper/references/venue_disclosure_policies.md +259 -0
- package/vendor/ars/academic-paper/references/vlm_figure_verification.md +126 -0
- package/vendor/ars/academic-paper/references/workflow_phase_details.md +135 -0
- package/vendor/ars/academic-paper/references/writing_judgment_framework.md +59 -0
- package/vendor/ars/academic-paper/references/writing_quality_check.md +173 -0
- package/vendor/ars/academic-paper/templates/bilingual_abstract_template.md +78 -0
- package/vendor/ars/academic-paper/templates/case_study_template.md +129 -0
- package/vendor/ars/academic-paper/templates/conference_paper_template.md +108 -0
- package/vendor/ars/academic-paper/templates/credit_statement_template.md +132 -0
- package/vendor/ars/academic-paper/templates/funding_statement_template.md +290 -0
- package/vendor/ars/academic-paper/templates/imrad_template.md +183 -0
- package/vendor/ars/academic-paper/templates/latex_article_template.tex +199 -0
- package/vendor/ars/academic-paper/templates/literature_review_template.md +135 -0
- package/vendor/ars/academic-paper/templates/policy_brief_template.md +139 -0
- package/vendor/ars/academic-paper/templates/revision_tracking_template.md +199 -0
- package/vendor/ars/academic-paper/templates/theoretical_paper_template.md +119 -0
- package/vendor/ars/academic-paper-reviewer/SKILL.md +491 -0
- package/vendor/ars/academic-paper-reviewer/agents/devils_advocate_reviewer_agent.md +443 -0
- package/vendor/ars/academic-paper-reviewer/agents/domain_reviewer_agent.md +412 -0
- package/vendor/ars/academic-paper-reviewer/agents/editorial_synthesizer_agent.md +478 -0
- package/vendor/ars/academic-paper-reviewer/agents/eic_agent.md +339 -0
- package/vendor/ars/academic-paper-reviewer/agents/field_analyst_agent.md +221 -0
- package/vendor/ars/academic-paper-reviewer/agents/methodology_reviewer_agent.md +449 -0
- package/vendor/ars/academic-paper-reviewer/agents/perspective_reviewer_agent.md +427 -0
- package/vendor/ars/academic-paper-reviewer/examples/hei_paper_review_example.md +391 -0
- package/vendor/ars/academic-paper-reviewer/examples/interdisciplinary_review_example.md +299 -0
- package/vendor/ars/academic-paper-reviewer/examples/subclaim_decomposition_example.md +80 -0
- package/vendor/ars/academic-paper-reviewer/references/calibration_mode_protocol.md +256 -0
- package/vendor/ars/academic-paper-reviewer/references/changelog.md +10 -0
- package/vendor/ars/academic-paper-reviewer/references/editorial_decision_standards.md +236 -0
- package/vendor/ars/academic-paper-reviewer/references/guided_mode_protocol.md +34 -0
- package/vendor/ars/academic-paper-reviewer/references/integration_guide.md +15 -0
- package/vendor/ars/academic-paper-reviewer/references/quality_rubrics.md +84 -0
- package/vendor/ars/academic-paper-reviewer/references/re_review_mode_protocol.md +340 -0
- package/vendor/ars/academic-paper-reviewer/references/review_criteria_framework.md +98 -0
- package/vendor/ars/academic-paper-reviewer/references/review_panel_provenance_protocol.md +197 -0
- package/vendor/ars/academic-paper-reviewer/references/review_quality_thinking.md +58 -0
- package/vendor/ars/academic-paper-reviewer/references/reviewer_sprint_prompt_source.md +324 -0
- package/vendor/ars/academic-paper-reviewer/references/sprint_contract_protocol.md +296 -0
- package/vendor/ars/academic-paper-reviewer/references/statistical_reporting_standards.md +505 -0
- package/vendor/ars/academic-paper-reviewer/references/top_journals_by_field.md +206 -0
- package/vendor/ars/academic-paper-reviewer/templates/editorial_decision_template.md +235 -0
- package/vendor/ars/academic-paper-reviewer/templates/peer_review_report_template.md +305 -0
- package/vendor/ars/academic-paper-reviewer/templates/revision_response_template.md +248 -0
- package/vendor/ars/academic-pipeline/SKILL.md +736 -0
- package/vendor/ars/academic-pipeline/agents/claim_ref_alignment_audit_agent.md +382 -0
- package/vendor/ars/academic-pipeline/agents/collaboration_depth_agent.md +164 -0
- package/vendor/ars/academic-pipeline/agents/integrity_verification_agent.md +870 -0
- package/vendor/ars/academic-pipeline/agents/pipeline_orchestrator_agent.md +1379 -0
- package/vendor/ars/academic-pipeline/agents/state_tracker_agent.md +622 -0
- package/vendor/ars/academic-pipeline/examples/full_pipeline_example.md +482 -0
- package/vendor/ars/academic-pipeline/examples/integrity_failure_recovery.md +389 -0
- package/vendor/ars/academic-pipeline/examples/mid_entry_example.md +414 -0
- package/vendor/ars/academic-pipeline/references/adapters/.gitkeep +0 -0
- package/vendor/ars/academic-pipeline/references/adapters/overview.md +153 -0
- package/vendor/ars/academic-pipeline/references/ai_research_failure_modes.md +185 -0
- package/vendor/ars/academic-pipeline/references/changelog.md +14 -0
- package/vendor/ars/academic-pipeline/references/claim_audit_calibration_protocol.md +175 -0
- package/vendor/ars/academic-pipeline/references/claim_verification_protocol.md +282 -0
- package/vendor/ars/academic-pipeline/references/external_review_protocol.md +131 -0
- package/vendor/ars/academic-pipeline/references/integrity_review_protocol.md +110 -0
- package/vendor/ars/academic-pipeline/references/literature_corpus_consumers.md +193 -0
- package/vendor/ars/academic-pipeline/references/mode_advisor.md +135 -0
- package/vendor/ars/academic-pipeline/references/passport_as_reset_boundary.md +132 -0
- package/vendor/ars/academic-pipeline/references/pipeline_state_machine.md +405 -0
- package/vendor/ars/academic-pipeline/references/plagiarism_detection_protocol.md +239 -0
- package/vendor/ars/academic-pipeline/references/process_summary_protocol.md +209 -0
- package/vendor/ars/academic-pipeline/references/progress_dashboard_template.md +38 -0
- package/vendor/ars/academic-pipeline/references/reinforcement_content.md +15 -0
- package/vendor/ars/academic-pipeline/references/reproducibility_audit.md +55 -0
- package/vendor/ars/academic-pipeline/references/score_trajectory_protocol.md +78 -0
- package/vendor/ars/academic-pipeline/references/team_collaboration_protocol.md +261 -0
- package/vendor/ars/academic-pipeline/references/two_stage_review_protocol.md +27 -0
- package/vendor/ars/academic-pipeline/templates/pipeline_status_template.md +146 -0
- package/vendor/ars/agents/report_compiler_agent.md +341 -0
- package/vendor/ars/agents/research_architect_agent.md +298 -0
- package/vendor/ars/agents/synthesis_agent.md +356 -0
- package/vendor/ars/commands/ars-3w.md +10 -0
- package/vendor/ars/commands/ars-abstract.md +10 -0
- package/vendor/ars/commands/ars-cache-invalidate.md +20 -0
- package/vendor/ars/commands/ars-citation-check.md +10 -0
- package/vendor/ars/commands/ars-disclosure.md +10 -0
- package/vendor/ars/commands/ars-format-convert.md +10 -0
- package/vendor/ars/commands/ars-full.md +9 -0
- package/vendor/ars/commands/ars-lit-review.md +12 -0
- package/vendor/ars/commands/ars-mark-read.md +18 -0
- package/vendor/ars/commands/ars-outline.md +10 -0
- package/vendor/ars/commands/ars-plan.md +10 -0
- package/vendor/ars/commands/ars-rebuttal-audit.md +12 -0
- package/vendor/ars/commands/ars-reviewer.md +9 -0
- package/vendor/ars/commands/ars-revision-coach.md +9 -0
- package/vendor/ars/commands/ars-revision.md +10 -0
- package/vendor/ars/commands/ars-unmark-read.md +16 -0
- package/vendor/ars/deep-research/SKILL.md +600 -0
- package/vendor/ars/deep-research/agents/bibliography_agent.md +473 -0
- package/vendor/ars/deep-research/agents/devils_advocate_agent.md +192 -0
- package/vendor/ars/deep-research/agents/editor_in_chief_agent.md +167 -0
- package/vendor/ars/deep-research/agents/ethics_review_agent.md +267 -0
- package/vendor/ars/deep-research/agents/meta_analysis_agent.md +325 -0
- package/vendor/ars/deep-research/agents/monitoring_agent.md +209 -0
- package/vendor/ars/deep-research/agents/report_compiler_agent.md +341 -0
- package/vendor/ars/deep-research/agents/research_architect_agent.md +298 -0
- package/vendor/ars/deep-research/agents/research_question_agent.md +216 -0
- package/vendor/ars/deep-research/agents/risk_of_bias_agent.md +231 -0
- package/vendor/ars/deep-research/agents/socratic_mentor_agent.md +764 -0
- package/vendor/ars/deep-research/agents/source_verification_agent.md +219 -0
- package/vendor/ars/deep-research/agents/synthesis_agent.md +356 -0
- package/vendor/ars/deep-research/agents/timeline_extraction_agent.md +99 -0
- package/vendor/ars/deep-research/examples/exploratory_research.md +157 -0
- package/vendor/ars/deep-research/examples/fact_check_mode.md +173 -0
- package/vendor/ars/deep-research/examples/handoff_to_paper.md +318 -0
- package/vendor/ars/deep-research/examples/idea_diversity_coverage_gap_advisory.md +64 -0
- package/vendor/ars/deep-research/examples/policy_analysis.md +161 -0
- package/vendor/ars/deep-research/examples/review_mode.md +253 -0
- package/vendor/ars/deep-research/examples/socratic_guided_research.md +331 -0
- package/vendor/ars/deep-research/examples/systematic_review.md +133 -0
- package/vendor/ars/deep-research/references/apa7_style_guide.md +162 -0
- package/vendor/ars/deep-research/references/argumentation_reasoning_framework.md +68 -0
- package/vendor/ars/deep-research/references/arxiv_api_protocol.md +76 -0
- package/vendor/ars/deep-research/references/changelog.md +22 -0
- package/vendor/ars/deep-research/references/chinese_literature_api_protocol.md +317 -0
- package/vendor/ars/deep-research/references/cross_agent_quality_definitions.md +14 -0
- package/vendor/ars/deep-research/references/crossref_api_protocol.md +84 -0
- package/vendor/ars/deep-research/references/equator_reporting_guidelines.md +482 -0
- package/vendor/ars/deep-research/references/ethics_checklist.md +282 -0
- package/vendor/ars/deep-research/references/failure_paths.md +355 -0
- package/vendor/ars/deep-research/references/interdisciplinary_bridges.md +292 -0
- package/vendor/ars/deep-research/references/irb_decision_tree.md +315 -0
- package/vendor/ars/deep-research/references/literature_monitoring_strategies.md +263 -0
- package/vendor/ars/deep-research/references/logical_fallacies.md +192 -0
- package/vendor/ars/deep-research/references/methodology_patterns.md +462 -0
- package/vendor/ars/deep-research/references/mode_selection_guide.md +331 -0
- package/vendor/ars/deep-research/references/openalex_api_protocol.md +82 -0
- package/vendor/ars/deep-research/references/preregistration_guide.md +324 -0
- package/vendor/ars/deep-research/references/semantic_scholar_api_protocol.md +107 -0
- package/vendor/ars/deep-research/references/socratic_mode_protocol.md +99 -0
- package/vendor/ars/deep-research/references/socratic_questioning_framework.md +232 -0
- package/vendor/ars/deep-research/references/source_quality_hierarchy.md +188 -0
- package/vendor/ars/deep-research/references/systematic_review_protocol.md +95 -0
- package/vendor/ars/deep-research/references/systematic_review_toolkit.md +353 -0
- package/vendor/ars/deep-research/templates/evidence_assessment_template.md +127 -0
- package/vendor/ars/deep-research/templates/literature_matrix_template.md +85 -0
- package/vendor/ars/deep-research/templates/preregistration_template.md +318 -0
- package/vendor/ars/deep-research/templates/prisma_protocol_template.md +248 -0
- package/vendor/ars/deep-research/templates/prisma_report_template.md +415 -0
- package/vendor/ars/deep-research/templates/research_brief_template.md +93 -0
- package/vendor/ars/package.json +24 -0
- package/vendor/ars/pi/README.md +161 -0
- package/vendor/ars/pi/package.json +26 -0
- package/vendor/ars/pi/wrapper.js +193 -0
- package/vendor/ars/pi/wrapper.test.mjs +201 -0
- package/vendor/ars/pyproject.toml +2 -0
- package/vendor/ars/requirements-pdf-content-classifier.txt +5 -0
- package/vendor/ars/scripts/_block_parser.py +396 -0
- package/vendor/ars/scripts/_ci_pytest_manifest.toml +661 -0
- package/vendor/ars/scripts/_claim_audit_constants.py +268 -0
- package/vendor/ars/scripts/_e4_evidence.py +110 -0
- package/vendor/ars/scripts/_eval_threshold_gate.py +73 -0
- package/vendor/ars/scripts/_markdown_lint_util.py +224 -0
- package/vendor/ars/scripts/_next_verified_at_ms.py +176 -0
- package/vendor/ars/scripts/_passport_yaml.py +53 -0
- package/vendor/ars/scripts/_skill_lint.py +254 -0
- package/vendor/ars/scripts/_text_similarity.py +141 -0
- package/vendor/ars/scripts/adapters/README.md +89 -0
- package/vendor/ars/scripts/adapters/_common.py +209 -0
- package/vendor/ars/scripts/adapters/examples/folder_scan/expected_passport.yaml +25 -0
- package/vendor/ars/scripts/adapters/examples/folder_scan/expected_rejection_log.yaml +18 -0
- package/vendor/ars/scripts/adapters/examples/folder_scan/input_fixture/Chen2024_AIAssessment.pdf +0 -0
- package/vendor/ars/scripts/adapters/examples/folder_scan/input_fixture/Wang_2023_formative_feedback.pdf +0 -0
- package/vendor/ars/scripts/adapters/examples/folder_scan/input_fixture/paper1.pdf +0 -0
- package/vendor/ars/scripts/adapters/examples/folder_scan/input_fixture//344/270/255/346/226/207/346/252/224/345/220/215_2024.pdf +0 -0
- package/vendor/ars/scripts/adapters/examples/obsidian/expected_passport.yaml +40 -0
- package/vendor/ars/scripts/adapters/examples/obsidian/expected_rejection_log.yaml +13 -0
- package/vendor/ars/scripts/adapters/examples/obsidian/input_fixture/vault/.gitkeep +0 -0
- package/vendor/ars/scripts/adapters/examples/obsidian/input_fixture/vault/.obsidian/app.json +1 -0
- package/vendor/ars/scripts/adapters/examples/obsidian/input_fixture/vault/_templates/tmpl.md +7 -0
- package/vendor/ars/scripts/adapters/examples/obsidian/input_fixture/vault/chen2024ai.md +13 -0
- package/vendor/ars/scripts/adapters/examples/obsidian/input_fixture/vault/invalid.md +1 -0
- package/vendor/ars/scripts/adapters/examples/obsidian/input_fixture/vault/wang2023formative.md +10 -0
- package/vendor/ars/scripts/adapters/examples/zotero/expected_passport.yaml +34 -0
- package/vendor/ars/scripts/adapters/examples/zotero/expected_rejection_log.yaml +34 -0
- package/vendor/ars/scripts/adapters/examples/zotero/input_fixture/.gitkeep +0 -0
- package/vendor/ars/scripts/adapters/examples/zotero/input_fixture/export.json +43 -0
- package/vendor/ars/scripts/adapters/folder_scan.py +214 -0
- package/vendor/ars/scripts/adapters/obsidian.py +336 -0
- package/vendor/ars/scripts/adapters/tests/.gitkeep +0 -0
- package/vendor/ars/scripts/adapters/tests/conftest.py +77 -0
- package/vendor/ars/scripts/adapters/tests/test_check_corpus_consumer_protocol.py +632 -0
- package/vendor/ars/scripts/adapters/tests/test_check_literature_corpus_schema.py +631 -0
- package/vendor/ars/scripts/adapters/tests/test_common.py +365 -0
- package/vendor/ars/scripts/adapters/tests/test_conftest.py +96 -0
- package/vendor/ars/scripts/adapters/tests/test_folder_scan.py +260 -0
- package/vendor/ars/scripts/adapters/tests/test_literature_corpus_entry_schema.py +745 -0
- package/vendor/ars/scripts/adapters/tests/test_obsidian.py +357 -0
- package/vendor/ars/scripts/adapters/tests/test_rejection_log_schema.py +271 -0
- package/vendor/ars/scripts/adapters/tests/test_sync_adapter_docs.py +88 -0
- package/vendor/ars/scripts/adapters/tests/test_zotero.py +454 -0
- package/vendor/ars/scripts/adapters/zotero.py +318 -0
- package/vendor/ars/scripts/adjudication_activity.py +1592 -0
- package/vendor/ars/scripts/announce-ars-loaded.sh +144 -0
- package/vendor/ars/scripts/ars_anchorize_draft.py +170 -0
- package/vendor/ars/scripts/ars_apply_revision_patch.py +912 -0
- package/vendor/ars/scripts/ars_cache_invalidate.py +40 -0
- package/vendor/ars/scripts/ars_mark_read.py +521 -0
- package/vendor/ars/scripts/ars_phase_scope_manifest.json +33 -0
- package/vendor/ars/scripts/ars_update_check.sh +215 -0
- package/vendor/ars/scripts/ars_write_scope_guard.py +506 -0
- package/vendor/ars/scripts/arxiv_client.py +222 -0
- package/vendor/ars/scripts/audit_snapshot.py +572 -0
- package/vendor/ars/scripts/bibliographic_integrity_signals.py +800 -0
- package/vendor/ars/scripts/bootstrap_timeline_yaml.py +146 -0
- package/vendor/ars/scripts/build_claim_standing_candidate_ledger.py +1238 -0
- package/vendor/ars/scripts/build_claim_standing_query_plan.py +643 -0
- package/vendor/ars/scripts/build_content_coverage_advisory.py +1205 -0
- package/vendor/ars/scripts/build_cross_document_consistency_advisory.py +2332 -0
- package/vendor/ars/scripts/build_review_pathway_rule_trace.py +830 -0
- package/vendor/ars/scripts/build_submission_packet_manifest.py +2310 -0
- package/vendor/ars/scripts/check_215_field_norm.py +173 -0
- package/vendor/ars/scripts/check_216_surface_form.py +250 -0
- package/vendor/ars/scripts/check_268_nested_commitment_ledger.py +180 -0
- package/vendor/ars/scripts/check_390_revision_patch_discipline.py +296 -0
- package/vendor/ars/scripts/check_392_citation_verification_intake.py +126 -0
- package/vendor/ars/scripts/check_394_submission_policy.py +178 -0
- package/vendor/ars/scripts/check_439_format_profile.py +307 -0
- package/vendor/ars/scripts/check_619_disclosure_closeout.py +237 -0
- package/vendor/ars/scripts/check_630_codex_subscription_transport.py +456 -0
- package/vendor/ars/scripts/check_669_review_pathway_rule_trace.py +662 -0
- package/vendor/ars/scripts/check_670_revision_roadmap_integration.py +518 -0
- package/vendor/ars/scripts/check_673_adjudication_activity.py +684 -0
- package/vendor/ars/scripts/check_684_review_criteria_binding.py +557 -0
- package/vendor/ars/scripts/check_agents_mirror_sync.py +115 -0
- package/vendor/ars/scripts/check_audit_artifact_consistency.py +2313 -0
- package/vendor/ars/scripts/check_benchmark_report.py +79 -0
- package/vendor/ars/scripts/check_bibliographic_integrity_signals.py +831 -0
- package/vendor/ars/scripts/check_calibration_tiers.py +235 -0
- package/vendor/ars/scripts/check_changelog_covers_merges.py +289 -0
- package/vendor/ars/scripts/check_ci_pytest_manifest.py +204 -0
- package/vendor/ars/scripts/check_claim_audit_consistency.py +1664 -0
- package/vendor/ars/scripts/check_claim_standing_candidate_ledger_integration.py +500 -0
- package/vendor/ars/scripts/check_claim_standing_freshness.py +253 -0
- package/vendor/ars/scripts/check_claim_standing_transmissions.py +449 -0
- package/vendor/ars/scripts/check_collaboration_depth_rubric.py +180 -0
- package/vendor/ars/scripts/check_command_frontmatter_name.py +116 -0
- package/vendor/ars/scripts/check_committee_correspondence.py +333 -0
- package/vendor/ars/scripts/check_compliance_report.py +108 -0
- package/vendor/ars/scripts/check_content_coverage_advisory_integration.py +796 -0
- package/vendor/ars/scripts/check_control_availability.py +172 -0
- package/vendor/ars/scripts/check_corpus_consumer_protocol.py +404 -0
- package/vendor/ars/scripts/check_cross_document_consistency_advisory_integration.py +1191 -0
- package/vendor/ars/scripts/check_cross_model_handoff_contract.py +234 -0
- package/vendor/ars/scripts/check_cross_model_verification_sync.py +261 -0
- package/vendor/ars/scripts/check_data_access_level.py +131 -0
- package/vendor/ars/scripts/check_data_flows.py +252 -0
- package/vendor/ars/scripts/check_decision_contract.py +464 -0
- package/vendor/ars/scripts/check_degradation_registry.py +326 -0
- package/vendor/ars/scripts/check_distribution_surface_claims.py +226 -0
- package/vendor/ars/scripts/check_domain_evidence_profile.py +538 -0
- package/vendor/ars/scripts/check_e4_promotion.py +195 -0
- package/vendor/ars/scripts/check_evals_gold_set.py +279 -0
- package/vendor/ars/scripts/check_evidence_row_integration.py +396 -0
- package/vendor/ars/scripts/check_experiment_provenance.py +117 -0
- package/vendor/ars/scripts/check_field_norm_severity.py +144 -0
- package/vendor/ars/scripts/check_firm_rules_sync.py +375 -0
- package/vendor/ars/scripts/check_heldout_measurement_report.py +1179 -0
- package/vendor/ars/scripts/check_human_subjects_output_contract.py +139 -0
- package/vendor/ars/scripts/check_human_subjects_reference_migration.py +844 -0
- package/vendor/ars/scripts/check_indirect_prompt_injection_no_call.py +328 -0
- package/vendor/ars/scripts/check_instruction_data_boundary.py +236 -0
- package/vendor/ars/scripts/check_judge_prompt_version.py +125 -0
- package/vendor/ars/scripts/check_literature_corpus_schema.py +402 -0
- package/vendor/ars/scripts/check_model_tiering.py +223 -0
- package/vendor/ars/scripts/check_panel_synthesis.py +1331 -0
- package/vendor/ars/scripts/check_passport_reset_contract.py +214 -0
- package/vendor/ars/scripts/check_pattern_eval_manifest.py +422 -0
- package/vendor/ars/scripts/check_persuasion_invariance_fixtures.py +637 -0
- package/vendor/ars/scripts/check_phase_conformance.py +2180 -0
- package/vendor/ars/scripts/check_pipeline_boundary_semantics.py +600 -0
- package/vendor/ars/scripts/check_pipeline_integrity.py +340 -0
- package/vendor/ars/scripts/check_policy_anchor_protocol.py +159 -0
- package/vendor/ars/scripts/check_policy_anchor_table.py +286 -0
- package/vendor/ars/scripts/check_preprint_venues_consistency.py +123 -0
- package/vendor/ars/scripts/check_prisma_trAIce_freshness.py +84 -0
- package/vendor/ars/scripts/check_promotion_bakeoff_preregistration.py +1303 -0
- package/vendor/ars/scripts/check_ranking_lift.py +323 -0
- package/vendor/ars/scripts/check_re_review_synthesis.py +2719 -0
- package/vendor/ars/scripts/check_receipt_enum_sync.py +203 -0
- package/vendor/ars/scripts/check_repro_lock.py +85 -0
- package/vendor/ars/scripts/check_review_pathway_output.py +276 -0
- package/vendor/ars/scripts/check_reviewer_data_fences.py +224 -0
- package/vendor/ars/scripts/check_reviewer_finding_contract.py +783 -0
- package/vendor/ars/scripts/check_reviewer_role_label.py +447 -0
- package/vendor/ars/scripts/check_reviewer_scoring_honesty.py +292 -0
- package/vendor/ars/scripts/check_reviewer_sprint_prompt_sync.py +409 -0
- package/vendor/ars/scripts/check_revision_claim_drift_suite_v2.py +1622 -0
- package/vendor/ars/scripts/check_revision_token_conservation.py +263 -0
- package/vendor/ars/scripts/check_risk_register.py +280 -0
- package/vendor/ars/scripts/check_role_scoped_contract.py +702 -0
- package/vendor/ars/scripts/check_rq_framing_patterns.py +184 -0
- package/vendor/ars/scripts/check_rubric_weight_consistency.py +32 -0
- package/vendor/ars/scripts/check_seeded_defect_fixtures.py +425 -0
- package/vendor/ars/scripts/check_setup_cross_model_parity.py +139 -0
- package/vendor/ars/scripts/check_spec_consistency.py +1249 -0
- package/vendor/ars/scripts/check_sprint_contract.py +371 -0
- package/vendor/ars/scripts/check_stage_capability_matrix.py +784 -0
- package/vendor/ars/scripts/check_submission_packet_manifest_integration.py +358 -0
- package/vendor/ars/scripts/check_surface_form_parity.py +445 -0
- package/vendor/ars/scripts/check_task_type.py +22 -0
- package/vendor/ars/scripts/check_tools_allowlist.py +538 -0
- package/vendor/ars/scripts/check_tortured_phrase_screening_integration.py +1974 -0
- package/vendor/ars/scripts/check_v3_10_134_write_scope.py +286 -0
- package/vendor/ars/scripts/check_v3_10_policy.py +656 -0
- package/vendor/ars/scripts/check_v3_6_6_ab_manifest.py +364 -0
- package/vendor/ars/scripts/check_v3_6_7_pattern_protection.py +1366 -0
- package/vendor/ars/scripts/check_v3_6_8_audit_scope_block.py +464 -0
- package/vendor/ars/scripts/check_v3_6_8_cite_provenance_pipeline.py +231 -0
- package/vendor/ars/scripts/check_v3_6_8_frontmatter_trust_schema.py +248 -0
- package/vendor/ars/scripts/check_v3_6_8_mark_read_commands.py +79 -0
- package/vendor/ars/scripts/check_v3_6_8_pattern_protection.py +941 -0
- package/vendor/ars/scripts/check_v3_7_3_three_layer_citation.py +318 -0
- package/vendor/ars/scripts/check_v3_8_annotation_literal_sync.py +228 -0
- package/vendor/ars/scripts/check_v3_9_0_triangulation.py +366 -0
- package/vendor/ars/scripts/check_v3_9_2_phase_boundary.py +270 -0
- package/vendor/ars/scripts/check_v3_9_4_temporal_verification.py +139 -0
- package/vendor/ars/scripts/check_venue_disclosure_policies.py +63 -0
- package/vendor/ars/scripts/check_version_consistency.py +826 -0
- package/vendor/ars/scripts/check_workflow_classification.py +223 -0
- package/vendor/ars/scripts/chinese_literature_client.py +1938 -0
- package/vendor/ars/scripts/citation_verification_summary.py +85 -0
- package/vendor/ars/scripts/claim_audit_calibration.py +517 -0
- package/vendor/ars/scripts/claim_audit_finalizer.py +456 -0
- package/vendor/ars/scripts/claim_audit_pipeline.py +1594 -0
- package/vendor/ars/scripts/claim_registry_coverage.py +493 -0
- package/vendor/ars/scripts/claim_standing_discovery.py +784 -0
- package/vendor/ars/scripts/claim_standing_stance_runner.py +758 -0
- package/vendor/ars/scripts/claim_standing_stance_scorer.py +239 -0
- package/vendor/ars/scripts/claim_strength_drift_disposition.py +666 -0
- package/vendor/ars/scripts/contamination_signals.py +689 -0
- package/vendor/ars/scripts/corpus_consumer_manifest.json +19 -0
- package/vendor/ars/scripts/cross_model_codex_transport.py +1374 -0
- package/vendor/ars/scripts/cross_model_codex_verify.sh +6 -0
- package/vendor/ars/scripts/cross_model_handoff.py +359 -0
- package/vendor/ars/scripts/cross_model_smoke_test.sh +183 -0
- package/vendor/ars/scripts/cross_model_smoke_test_codex.sh +35 -0
- package/vendor/ars/scripts/cross_model_verification/gemini_is_grounded.jq +45 -0
- package/vendor/ars/scripts/cross_model_verification/gemini_sources.jq +45 -0
- package/vendor/ars/scripts/cross_model_verification/normalize_compat_verdict.py +57 -0
- package/vendor/ars/scripts/cross_model_verification/openai_has_completed_web_search.jq +15 -0
- package/vendor/ars/scripts/cross_model_verification/openai_sources.jq +17 -0
- package/vendor/ars/scripts/cross_model_verification/openai_text.jq +11 -0
- package/vendor/ars/scripts/crossref_client.py +225 -0
- package/vendor/ars/scripts/dispatch_e4_panel.py +2731 -0
- package/vendor/ars/scripts/evidence_rows.py +2043 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/author_stage3.json +32 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/author_stage3_input.json +27 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/author_stage3_prime.json +32 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/author_stage3_prime_input.json +27 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/compliance_override.json +50 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/compliance_override_action.json +14 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/compliance_pass.json +44 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/explicit_user_request_log.json +26 -0
- package/vendor/ars/scripts/fixtures/adjudication_activity/mandatory_checkpoint_log.json +116 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/README.md +56 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/negative/a1_pass_with_p1/2026-04-30T15-22-04Z-d8f3.audit_artifact_entry.json +24 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/negative/a1_pass_with_p1/2026-04-30T15-22-04Z-d8f3.jsonl +4 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/negative/a1_pass_with_p1/2026-04-30T15-22-04Z-d8f3.meta.json +43 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/negative/a1_pass_with_p1/2026-04-30T15-22-04Z-d8f3.verdict.yaml +19 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/negative/a7_orphan_completion/2026-04-30T15-22-04Z-d8f3.jsonl +3 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/positive/persisted_minor/2026-04-30T15-22-04Z-d8f3.audit_artifact_entry.json +26 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/positive/persisted_minor/2026-04-30T15-22-04Z-d8f3.jsonl +4 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/positive/persisted_minor/2026-04-30T15-22-04Z-d8f3.meta.json +43 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/positive/persisted_minor/2026-04-30T15-22-04Z-d8f3.verdict.yaml +19 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/positive/proposal_pass/2026-04-30T15-22-04Z-d8f3.audit_artifact_entry.json +24 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/positive/proposal_pass/2026-04-30T15-22-04Z-d8f3.jsonl +4 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/positive/proposal_pass/2026-04-30T15-22-04Z-d8f3.meta.json +43 -0
- package/vendor/ars/scripts/fixtures/audit_artifact_consistency/positive/proposal_pass/2026-04-30T15-22-04Z-d8f3.verdict.yaml +12 -0
- package/vendor/ars/scripts/fixtures/bibliographic_integrity_signals/retraction.json +46 -0
- package/vendor/ars/scripts/fixtures/bibliographic_integrity_signals/retraction_check_attestation.json +44 -0
- package/vendor/ars/scripts/fixtures/bibliographic_integrity_signals/tortured_phrase.json +44 -0
- package/vendor/ars/scripts/fixtures/bibliographic_integrity_signals/tortured_phrase_v1_2_abstract_missing.json +107 -0
- package/vendor/ars/scripts/fixtures/bibliographic_integrity_signals/tortured_phrase_v1_2_detected.json +124 -0
- package/vendor/ars/scripts/fixtures/check_evals_gold_set/clean/expected_outcomes.json +77 -0
- package/vendor/ars/scripts/fixtures/check_evals_gold_set/clean/manifest.yaml +37 -0
- package/vendor/ars/scripts/fixtures/check_evals_gold_set/clean/tuples/001-valid-doi-test.json +20 -0
- package/vendor/ars/scripts/fixtures/check_evals_gold_set/clean/tuples/002-valid-arxiv-test.json +19 -0
- package/vendor/ars/scripts/fixtures/check_evals_gold_set/clean/tuples/003-fabricated-test.json +20 -0
- package/vendor/ars/scripts/fixtures/claim_audit_calibration/gold_set.json +344 -0
- package/vendor/ars/scripts/fixtures/claim_standing_candidate_ledger/query_plan.json +108 -0
- package/vendor/ars/scripts/fixtures/claim_standing_candidate_ledger/retrieval_input.json +179 -0
- package/vendor/ars/scripts/fixtures/committee_correspondence/16fd83f6aec7/concern_tracker.json +129 -0
- package/vendor/ars/scripts/fixtures/committee_correspondence/16fd83f6aec7/response_skeleton.md +19 -0
- package/vendor/ars/scripts/fixtures/committee_correspondence/16fd83f6aec7/source_letter.txt +9 -0
- package/vendor/ars/scripts/fixtures/content_coverage_advisory/base_draft.json +48 -0
- package/vendor/ars/scripts/fixtures/content_coverage_advisory/base_inventory.json +38 -0
- package/vendor/ars/scripts/fixtures/content_coverage_advisory/packet/consent.txt +1 -0
- package/vendor/ars/scripts/fixtures/content_coverage_advisory/session_sources.json +3 -0
- package/vendor/ars/scripts/fixtures/cross_document_consistency/README.md +6 -0
- package/vendor/ars/scripts/fixtures/cross_document_consistency/accepted_draft.md +35 -0
- package/vendor/ars/scripts/fixtures/cross_document_consistency/cases.json +75 -0
- package/vendor/ars/scripts/fixtures/cross_document_consistency/preregistration.md +5 -0
- package/vendor/ars/scripts/fixtures/cross_model_codex_transport/forbidden_event.jsonl +4 -0
- package/vendor/ars/scripts/fixtures/cross_model_codex_transport/grounded_verified.jsonl +3 -0
- package/vendor/ars/scripts/fixtures/cross_model_codex_transport/malformed.jsonl +3 -0
- package/vendor/ars/scripts/fixtures/cross_model_codex_transport/missing_search.jsonl +2 -0
- package/vendor/ars/scripts/fixtures/cross_model_codex_transport/multiple_finals.jsonl +4 -0
- package/vendor/ars/scripts/fixtures/cross_model_codex_transport/not_found.jsonl +3 -0
- package/vendor/ars/scripts/fixtures/cross_model_codex_transport/unbound_source.jsonl +3 -0
- package/vendor/ars/scripts/fixtures/cross_model_codex_transport/wrong_search_shape.jsonl +3 -0
- package/vendor/ars/scripts/fixtures/evidence_rows/phase_e_inputs.json +114 -0
- package/vendor/ars/scripts/fixtures/evidence_rows/session_sources.json +5 -0
- package/vendor/ars/scripts/fixtures/human_subjects_authority/cross-border-us-tw-gdpr.json +71 -0
- package/vendor/ars/scripts/fixtures/human_subjects_authority/gdpr-member-state-unresolved.json +62 -0
- package/vendor/ars/scripts/fixtures/human_subjects_authority/missing-data-axis.json +45 -0
- package/vendor/ars/scripts/fixtures/human_subjects_authority/no-profile.json +33 -0
- package/vendor/ars/scripts/fixtures/human_subjects_authority/tw-gdpr-two-axis.json +74 -0
- package/vendor/ars/scripts/fixtures/human_subjects_authority/us-gdpr-two-axis.json +74 -0
- package/vendor/ars/scripts/fixtures/review_pathway_rule_trace/lint-near-misses.json +72 -0
- package/vendor/ars/scripts/fixtures/review_pathway_rule_trace/no-profile-request.json +18 -0
- package/vendor/ars/scripts/fixtures/review_pathway_rule_trace/tw-candidates-request.json +63 -0
- package/vendor/ars/scripts/fixtures/review_pathway_rule_trace/us-candidates-request.json +77 -0
- package/vendor/ars/scripts/fixtures/review_target_context/exact-declaration.json +24 -0
- package/vendor/ars/scripts/fixtures/review_target_context/field-general-declaration.json +24 -0
- package/vendor/ars/scripts/fixtures/review_target_context/msr-2027-technical-full-declaration.json +24 -0
- package/vendor/ars/scripts/fixtures/review_target_context/synthetic-registry.json +92 -0
- package/vendor/ars/scripts/fixtures/revision_claim_drift_v2/README.md +21 -0
- package/vendor/ars/scripts/fixtures/revision_claim_drift_v2/subject_context_attested_only.json +55 -0
- package/vendor/ars/scripts/fixtures/revision_claim_drift_v2/subject_context_machine_supported.json +49 -0
- package/vendor/ars/scripts/fixtures/revision_claim_drift_v2/subject_context_not_isolated.json +56 -0
- package/vendor/ars/scripts/fixtures/revision_claim_drift_v2/subject_context_unknown.json +49 -0
- package/vendor/ars/scripts/fixtures/submission_package/clean/paper.md +16 -0
- package/vendor/ars/scripts/fixtures/submission_package/clean/references.bib +13 -0
- package/vendor/ars/scripts/fixtures/submission_package/fallback_authoryear/paper.md +11 -0
- package/vendor/ars/scripts/fixtures/submission_package/fallback_authoryear/references.bib +13 -0
- package/vendor/ars/scripts/fixtures/submission_package/fallback_latex/paper.tex +9 -0
- package/vendor/ars/scripts/fixtures/submission_package/fallback_latex/references.bib +13 -0
- package/vendor/ars/scripts/fixtures/submission_package/marker_no_join/paper.md +7 -0
- package/vendor/ars/scripts/fixtures/submission_package/orphan_intext/paper.md +8 -0
- package/vendor/ars/scripts/fixtures/submission_package/orphan_intext/references.bib +6 -0
- package/vendor/ars/scripts/fixtures/submission_package/passports/corpus_only.yaml +9 -0
- package/vendor/ars/scripts/fixtures/submission_package/passports/summary_join.yaml +16 -0
- package/vendor/ars/scripts/fixtures/submission_package/profiles/full.yaml +15 -0
- package/vendor/ars/scripts/fixtures/submission_package/profiles/tight.yaml +15 -0
- package/vendor/ars/scripts/fixtures/submission_package/summary_join/paper.md +7 -0
- package/vendor/ars/scripts/fixtures/submission_package/uncited_reference/paper.md +9 -0
- package/vendor/ars/scripts/fixtures/submission_package/uncited_reference/references.bib +13 -0
- package/vendor/ars/scripts/fixtures/submission_package/venue_clean/paper.md +26 -0
- package/vendor/ars/scripts/fixtures/submission_package/venue_clean/references.bib +13 -0
- package/vendor/ars/scripts/fixtures/submission_package/venue_violations/paper.md +20 -0
- package/vendor/ars/scripts/fixtures/submission_package/venue_violations/references.bib +13 -0
- package/vendor/ars/scripts/fixtures/submission_packet_manifest/base_inventory.json +101 -0
- package/vendor/ars/scripts/fixtures/submission_packet_manifest/packet/consent-materials.txt +3 -0
- package/vendor/ars/scripts/fixtures/submission_packet_manifest/packet/training-certificate.txt +2 -0
- package/vendor/ars/scripts/fixtures/submission_packet_manifest/packet/tw-consent-materials.txt +3 -0
- package/vendor/ars/scripts/fixtures/tortured_phrase_screening/corpus_input.yaml +30 -0
- package/vendor/ars/scripts/fixtures/tortured_phrase_screening/own_draft.md +36 -0
- package/vendor/ars/scripts/fixtures/tortured_phrase_screening/own_draft.tex +21 -0
- package/vendor/ars/scripts/fixtures/tortured_phrase_screening/seed_expectations.json +218 -0
- package/vendor/ars/scripts/fixtures/tortured_phrase_screening/snapshot.json +164 -0
- package/vendor/ars/scripts/fixtures/tortured_phrase_screening/snapshot_manifest.json +29 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/README.md +55 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/arxiv/empty_feed.xml +10 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/arxiv/error_5xx.html +7 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/arxiv/id_hit.xml +26 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/README.md +69 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/cnki_landing_page.html +13 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/error_5xx.html +2 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esearch_coordinate_ambiguous.json +16 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esearch_coordinate_hit.json +16 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esearch_coordinate_zero.json +14 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esearch_coverage_hit.json +15 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esearch_coverage_zero.json +13 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esummary_hit.json +43 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esummary_issn_mismatch.json +31 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esummary_no_doi.json +31 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esummary_unknown_ra.json +34 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/esummary_year_mismatch.json +31 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/handle_absent.json +4 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/handle_exists.json +16 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/handle_internal_error.json +4 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/istic_csl_hit.json +25 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/istic_csl_other_title.json +18 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/ra_cnki.json +6 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/ra_crossref.json +6 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/ra_istic.json +6 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/chinese_literature/ra_unknown_prefix.json +6 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/crossref/doi_hit.json +24 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/crossref/error_5xx.html +7 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/crossref/title_search_miss.json +15 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/openalex/doi_hit.json +29 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/openalex/error_5xx.json +4 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/openalex/title_search_miss.json +11 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/semantic_scholar/doi_hit.json +14 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/semantic_scholar/error_5xx.json +3 -0
- package/vendor/ars/scripts/fixtures/transport_bodies/semantic_scholar/title_search_miss.json +5 -0
- package/vendor/ars/scripts/human_read_attestation_resolver.py +467 -0
- package/vendor/ars/scripts/ideation_diversity_assignment_gate.py +430 -0
- package/vendor/ars/scripts/inquiry_branch_ledger.py +2540 -0
- package/vendor/ars/scripts/legacy/ars_apply_revision_patch_v1_0.py +715 -0
- package/vendor/ars/scripts/legacy/check_re_review_synthesis_v1_0.py +2215 -0
- package/vendor/ars/scripts/migrate_literature_corpus_to_v3_10.py +223 -0
- package/vendor/ars/scripts/migrate_literature_corpus_to_v3_7_3.py +277 -0
- package/vendor/ars/scripts/migrate_literature_corpus_to_v3_9_0.py +304 -0
- package/vendor/ars/scripts/model_tiering_manifest.json +46 -0
- package/vendor/ars/scripts/openalex_client.py +232 -0
- package/vendor/ars/scripts/parse_audit_verdict.py +802 -0
- package/vendor/ars/scripts/pdf_content_classifier_worker.py +176 -0
- package/vendor/ars/scripts/pdf_read_preflight.py +1455 -0
- package/vendor/ars/scripts/policy_anchor_disclosure_referee.py +354 -0
- package/vendor/ars/scripts/recompute_receipts.py +1414 -0
- package/vendor/ars/scripts/render_claim_standing_view.py +374 -0
- package/vendor/ars/scripts/render_eval_comment.py +130 -0
- package/vendor/ars/scripts/render_harness_retirement_issue.py +167 -0
- package/vendor/ars/scripts/repro_lock_validation.py +90 -0
- package/vendor/ars/scripts/research_workflow_profile.py +1079 -0
- package/vendor/ars/scripts/resolve_human_subjects_authority.py +1158 -0
- package/vendor/ars/scripts/resolve_review_target_context.py +683 -0
- package/vendor/ars/scripts/resume_e4_record.py +509 -0
- package/vendor/ars/scripts/retraction_status.py +484 -0
- package/vendor/ars/scripts/review_criteria_binding.py +889 -0
- package/vendor/ars/scripts/review_panel_provenance.py +744 -0
- package/vendor/ars/scripts/revision_roadmap.py +1967 -0
- package/vendor/ars/scripts/run_ci_pytest_manifest.py +116 -0
- package/vendor/ars/scripts/run_codex_audit.sh +1191 -0
- package/vendor/ars/scripts/run_evals.py +513 -0
- package/vendor/ars/scripts/run_ideation_diversity_no_call.py +3505 -0
- package/vendor/ars/scripts/run_indirect_prompt_injection_no_call.py +3330 -0
- package/vendor/ars/scripts/run_indirect_prompt_injection_probe.py +399 -0
- package/vendor/ars/scripts/run_review_criteria_constructive_value.py +1895 -0
- package/vendor/ars/scripts/run_role_topology_utility_dry_run.py +606 -0
- package/vendor/ars/scripts/score_review_criteria_constructive_value.py +617 -0
- package/vendor/ars/scripts/semantic_scholar_client.py +291 -0
- package/vendor/ars/scripts/slr_lineage.py +59 -0
- package/vendor/ars/scripts/sync_adapter_docs.py +118 -0
- package/vendor/ars/scripts/temporal_integrity_audit.py +840 -0
- package/vendor/ars/scripts/test_431_exact_or_bust.py +253 -0
- package/vendor/ars/scripts/test__eval_threshold_gate.py +125 -0
- package/vendor/ars/scripts/test__markdown_lint_util.py +129 -0
- package/vendor/ars/scripts/test__next_verified_at_ms.py +256 -0
- package/vendor/ars/scripts/test_adjacent_framing_probe_lint.py +171 -0
- package/vendor/ars/scripts/test_adjudication_activity.py +1515 -0
- package/vendor/ars/scripts/test_ars_anchorize_draft.py +178 -0
- package/vendor/ars/scripts/test_ars_apply_revision_patch.py +1335 -0
- package/vendor/ars/scripts/test_ars_cache_invalidate.py +51 -0
- package/vendor/ars/scripts/test_ars_mark_read.py +910 -0
- package/vendor/ars/scripts/test_ars_update_check.py +816 -0
- package/vendor/ars/scripts/test_ars_write_scope_guard.py +790 -0
- package/vendor/ars/scripts/test_arxiv_client.py +374 -0
- package/vendor/ars/scripts/test_audit_schemas.py +560 -0
- package/vendor/ars/scripts/test_audit_snapshot_render_section_0.py +105 -0
- package/vendor/ars/scripts/test_block_parser.py +259 -0
- package/vendor/ars/scripts/test_bootstrap_timeline_yaml.py +148 -0
- package/vendor/ars/scripts/test_build_claim_standing_candidate_ledger.py +1203 -0
- package/vendor/ars/scripts/test_build_claim_standing_query_plan.py +791 -0
- package/vendor/ars/scripts/test_build_submission_packet_manifest.py +2644 -0
- package/vendor/ars/scripts/test_check_215_field_norm.py +238 -0
- package/vendor/ars/scripts/test_check_216_surface_form.py +341 -0
- package/vendor/ars/scripts/test_check_268_nested_commitment_ledger.py +194 -0
- package/vendor/ars/scripts/test_check_390_revision_patch_discipline.py +279 -0
- package/vendor/ars/scripts/test_check_392_citation_verification_intake.py +144 -0
- package/vendor/ars/scripts/test_check_394_submission_policy.py +200 -0
- package/vendor/ars/scripts/test_check_439_format_profile.py +252 -0
- package/vendor/ars/scripts/test_check_619_disclosure_closeout.py +158 -0
- package/vendor/ars/scripts/test_check_630_codex_subscription_transport.py +245 -0
- package/vendor/ars/scripts/test_check_669_review_pathway_rule_trace.py +304 -0
- package/vendor/ars/scripts/test_check_670_revision_roadmap_integration.py +260 -0
- package/vendor/ars/scripts/test_check_673_adjudication_activity.py +367 -0
- package/vendor/ars/scripts/test_check_684_review_criteria_binding.py +274 -0
- package/vendor/ars/scripts/test_check_agents_mirror_sync.py +137 -0
- package/vendor/ars/scripts/test_check_audit_artifact_consistency.py +2133 -0
- package/vendor/ars/scripts/test_check_benchmark_report.py +117 -0
- package/vendor/ars/scripts/test_check_bibliographic_integrity_signals.py +609 -0
- package/vendor/ars/scripts/test_check_calibration_tiers.py +376 -0
- package/vendor/ars/scripts/test_check_changelog_covers_merges.py +509 -0
- package/vendor/ars/scripts/test_check_ci_pytest_manifest.py +425 -0
- package/vendor/ars/scripts/test_check_claim_standing_candidate_ledger_integration.py +256 -0
- package/vendor/ars/scripts/test_check_claim_standing_freshness.py +277 -0
- package/vendor/ars/scripts/test_check_collaboration_depth_rubric.py +239 -0
- package/vendor/ars/scripts/test_check_command_frontmatter_name.py +178 -0
- package/vendor/ars/scripts/test_check_committee_correspondence.py +298 -0
- package/vendor/ars/scripts/test_check_compliance_report.py +381 -0
- package/vendor/ars/scripts/test_check_content_coverage_advisory_integration.py +308 -0
- package/vendor/ars/scripts/test_check_control_availability.py +361 -0
- package/vendor/ars/scripts/test_check_cross_document_consistency_advisory_integration.py +698 -0
- package/vendor/ars/scripts/test_check_cross_model_handoff_contract.py +301 -0
- package/vendor/ars/scripts/test_check_cross_model_verification_sync.py +203 -0
- package/vendor/ars/scripts/test_check_data_access_level.py +227 -0
- package/vendor/ars/scripts/test_check_data_flows.py +382 -0
- package/vendor/ars/scripts/test_check_decision_contract.py +387 -0
- package/vendor/ars/scripts/test_check_degradation_registry.py +270 -0
- package/vendor/ars/scripts/test_check_distribution_surface_claims.py +225 -0
- package/vendor/ars/scripts/test_check_domain_evidence_profile.py +439 -0
- package/vendor/ars/scripts/test_check_e4_promotion.py +163 -0
- package/vendor/ars/scripts/test_check_evals_gold_set.py +312 -0
- package/vendor/ars/scripts/test_check_evidence_row_integration.py +187 -0
- package/vendor/ars/scripts/test_check_field_norm_severity.py +173 -0
- package/vendor/ars/scripts/test_check_firm_rules_sync.py +342 -0
- package/vendor/ars/scripts/test_check_heldout_measurement_report.py +1508 -0
- package/vendor/ars/scripts/test_check_human_subjects_output_contract.py +129 -0
- package/vendor/ars/scripts/test_check_human_subjects_reference_migration.py +756 -0
- package/vendor/ars/scripts/test_check_instruction_data_boundary.py +204 -0
- package/vendor/ars/scripts/test_check_judge_prompt_version.py +90 -0
- package/vendor/ars/scripts/test_check_model_tiering.py +236 -0
- package/vendor/ars/scripts/test_check_panel_synthesis.py +1658 -0
- package/vendor/ars/scripts/test_check_passport_reset_contract.py +249 -0
- package/vendor/ars/scripts/test_check_pattern_eval_manifest.py +381 -0
- package/vendor/ars/scripts/test_check_persuasion_invariance_fixtures.py +591 -0
- package/vendor/ars/scripts/test_check_phase_conformance.py +4366 -0
- package/vendor/ars/scripts/test_check_pipeline_boundary_semantics.py +931 -0
- package/vendor/ars/scripts/test_check_pipeline_integrity.py +243 -0
- package/vendor/ars/scripts/test_check_policy_anchor_protocol.py +236 -0
- package/vendor/ars/scripts/test_check_policy_anchor_table.py +295 -0
- package/vendor/ars/scripts/test_check_prisma_trAIce_freshness.py +68 -0
- package/vendor/ars/scripts/test_check_promotion_bakeoff_preregistration.py +799 -0
- package/vendor/ars/scripts/test_check_ranking_lift.py +377 -0
- package/vendor/ars/scripts/test_check_re_review_synthesis.py +3398 -0
- package/vendor/ars/scripts/test_check_receipt_enum_sync.py +176 -0
- package/vendor/ars/scripts/test_check_repro_lock.py +107 -0
- package/vendor/ars/scripts/test_check_reviewer_data_fences.py +334 -0
- package/vendor/ars/scripts/test_check_reviewer_finding_contract.py +1107 -0
- package/vendor/ars/scripts/test_check_reviewer_role_label.py +491 -0
- package/vendor/ars/scripts/test_check_reviewer_scoring_honesty.py +222 -0
- package/vendor/ars/scripts/test_check_reviewer_sprint_prompt_sync.py +373 -0
- package/vendor/ars/scripts/test_check_revision_claim_drift_suite_v2.py +1925 -0
- package/vendor/ars/scripts/test_check_revision_token_conservation.py +398 -0
- package/vendor/ars/scripts/test_check_risk_register.py +336 -0
- package/vendor/ars/scripts/test_check_role_scoped_contract.py +1104 -0
- package/vendor/ars/scripts/test_check_rq_framing_patterns.py +110 -0
- package/vendor/ars/scripts/test_check_rubric_weight_consistency.py +32 -0
- package/vendor/ars/scripts/test_check_seeded_defect_fixtures.py +392 -0
- package/vendor/ars/scripts/test_check_setup_cross_model_parity.py +121 -0
- package/vendor/ars/scripts/test_check_spec_consistency.py +1081 -0
- package/vendor/ars/scripts/test_check_sprint_contract.py +458 -0
- package/vendor/ars/scripts/test_check_stage_capability_matrix.py +698 -0
- package/vendor/ars/scripts/test_check_submission_packet_manifest_integration.py +177 -0
- package/vendor/ars/scripts/test_check_surface_form_parity.py +417 -0
- package/vendor/ars/scripts/test_check_task_type.py +116 -0
- package/vendor/ars/scripts/test_check_tools_allowlist.py +835 -0
- package/vendor/ars/scripts/test_check_tortured_phrase_screening_integration.py +1306 -0
- package/vendor/ars/scripts/test_check_v3_10_134_write_scope.py +251 -0
- package/vendor/ars/scripts/test_check_v3_10_policy.py +547 -0
- package/vendor/ars/scripts/test_check_v3_6_7_pattern_protection.py +960 -0
- package/vendor/ars/scripts/test_check_v3_6_8_audit_scope_block.py +1000 -0
- package/vendor/ars/scripts/test_check_v3_6_8_cite_provenance_pipeline.py +454 -0
- package/vendor/ars/scripts/test_check_v3_6_8_frontmatter_trust_schema.py +581 -0
- package/vendor/ars/scripts/test_check_v3_6_8_mark_read_commands.py +120 -0
- package/vendor/ars/scripts/test_check_v3_6_8_pattern_protection.py +1138 -0
- package/vendor/ars/scripts/test_check_v3_7_3_three_layer_citation.py +566 -0
- package/vendor/ars/scripts/test_check_v3_8_annotation_literal_sync.py +262 -0
- package/vendor/ars/scripts/test_check_v3_9_0_triangulation.py +321 -0
- package/vendor/ars/scripts/test_check_v3_9_2_phase_boundary.py +190 -0
- package/vendor/ars/scripts/test_check_v3_9_4_temporal_verification.py +471 -0
- package/vendor/ars/scripts/test_check_version_consistency.py +1462 -0
- package/vendor/ars/scripts/test_check_workflow_classification.py +225 -0
- package/vendor/ars/scripts/test_chinese_literature_client.py +1889 -0
- package/vendor/ars/scripts/test_citation_existence_policy.py +480 -0
- package/vendor/ars/scripts/test_citation_verification_summary.py +342 -0
- package/vendor/ars/scripts/test_claim_audit_calibration.py +882 -0
- package/vendor/ars/scripts/test_claim_audit_finalizer.py +979 -0
- package/vendor/ars/scripts/test_claim_audit_pipeline.py +2398 -0
- package/vendor/ars/scripts/test_claim_audit_schema.py +1778 -0
- package/vendor/ars/scripts/test_claim_intent_manifest.py +666 -0
- package/vendor/ars/scripts/test_claim_registry_coverage.py +246 -0
- package/vendor/ars/scripts/test_claim_standing_discovery.py +579 -0
- package/vendor/ars/scripts/test_claim_standing_pipeline_wiring.py +290 -0
- package/vendor/ars/scripts/test_claim_standing_stance_assets.py +399 -0
- package/vendor/ars/scripts/test_claim_standing_stance_contracts.py +383 -0
- package/vendor/ars/scripts/test_claim_standing_stance_runner.py +349 -0
- package/vendor/ars/scripts/test_claim_standing_transmissions.py +605 -0
- package/vendor/ars/scripts/test_claim_strength_drift_disposition.py +517 -0
- package/vendor/ars/scripts/test_claim_verification_coverage_contract.py +104 -0
- package/vendor/ars/scripts/test_contamination_signals.py +1086 -0
- package/vendor/ars/scripts/test_content_coverage_advisory.py +1767 -0
- package/vendor/ars/scripts/test_cross_document_consistency_advisory.py +1270 -0
- package/vendor/ars/scripts/test_cross_model_codex_transport.py +1152 -0
- package/vendor/ars/scripts/test_cross_model_handoff.py +571 -0
- package/vendor/ars/scripts/test_cross_model_verification_guards.py +792 -0
- package/vendor/ars/scripts/test_crossref_client.py +393 -0
- package/vendor/ars/scripts/test_dispatch_e4_panel.py +4235 -0
- package/vendor/ars/scripts/test_e2e_claim_audit.py +540 -0
- package/vendor/ars/scripts/test_eval_harness_workflow.py +140 -0
- package/vendor/ars/scripts/test_evals_citation_extraction.py +150 -0
- package/vendor/ars/scripts/test_evals_lift_report_schema.py +108 -0
- package/vendor/ars/scripts/test_evidence_rows.py +2593 -0
- package/vendor/ars/scripts/test_experiment_provenance.py +915 -0
- package/vendor/ars/scripts/test_human_read_attestation_resolver.py +477 -0
- package/vendor/ars/scripts/test_ideation_diversity_assignment_gate.py +615 -0
- package/vendor/ars/scripts/test_indirect_prompt_injection_behavior_probe.py +250 -0
- package/vendor/ars/scripts/test_inquiry_branch_ledger.py +2296 -0
- package/vendor/ars/scripts/test_migrate_literature_corpus_to_v3_10.py +248 -0
- package/vendor/ars/scripts/test_migrate_literature_corpus_to_v3_7_3.py +545 -0
- package/vendor/ars/scripts/test_migrate_literature_corpus_to_v3_9_0.py +497 -0
- package/vendor/ars/scripts/test_normalize_compat_verdict.py +149 -0
- package/vendor/ars/scripts/test_openalex_client.py +490 -0
- package/vendor/ars/scripts/test_passport_yaml.py +104 -0
- package/vendor/ars/scripts/test_pattern_eval_runtime.py +1295 -0
- package/vendor/ars/scripts/test_pdf_read_preflight.py +1943 -0
- package/vendor/ars/scripts/test_policy_anchor_disclosure.py +666 -0
- package/vendor/ars/scripts/test_reading_probe_lint.py +218 -0
- package/vendor/ars/scripts/test_recompute_receipts.py +778 -0
- package/vendor/ars/scripts/test_render_claim_standing_view.py +192 -0
- package/vendor/ars/scripts/test_render_eval_comment.py +162 -0
- package/vendor/ars/scripts/test_render_harness_retirement_issue.py +110 -0
- package/vendor/ars/scripts/test_repro_lock_validation_drift.py +100 -0
- package/vendor/ars/scripts/test_research_workflow_profile.py +734 -0
- package/vendor/ars/scripts/test_resolve_human_subjects_authority.py +1219 -0
- package/vendor/ars/scripts/test_resolve_review_target_context.py +703 -0
- package/vendor/ars/scripts/test_resume_e4_record.py +315 -0
- package/vendor/ars/scripts/test_retraction_status.py +456 -0
- package/vendor/ars/scripts/test_review_criteria_binding.py +629 -0
- package/vendor/ars/scripts/test_review_panel_provenance.py +565 -0
- package/vendor/ars/scripts/test_review_pathway_rule_trace.py +821 -0
- package/vendor/ars/scripts/test_revision_roadmap.py +1255 -0
- package/vendor/ars/scripts/test_run_ci_pytest_manifest.py +186 -0
- package/vendor/ars/scripts/test_run_codex_audit_e2e.py +369 -0
- package/vendor/ars/scripts/test_run_evals.py +430 -0
- package/vendor/ars/scripts/test_run_guard_launcher.py +500 -0
- package/vendor/ars/scripts/test_run_ideation_diversity_no_call.py +1833 -0
- package/vendor/ars/scripts/test_run_indirect_prompt_injection_no_call.py +1889 -0
- package/vendor/ars/scripts/test_run_review_criteria_constructive_value.py +586 -0
- package/vendor/ars/scripts/test_run_role_topology_utility_dry_run.py +428 -0
- package/vendor/ars/scripts/test_score_review_criteria_constructive_value.py +340 -0
- package/vendor/ars/scripts/test_semantic_scholar_client.py +554 -0
- package/vendor/ars/scripts/test_slr_lineage_emission.py +230 -0
- package/vendor/ars/scripts/test_socratic_rq_non_generation_contract.py +173 -0
- package/vendor/ars/scripts/test_temporal_integrity_audit.py +438 -0
- package/vendor/ars/scripts/test_text_similarity.py +95 -0
- package/vendor/ars/scripts/test_title_fuzzy_false_positive.py +111 -0
- package/vendor/ars/scripts/test_tortured_phrase_screening.py +2959 -0
- package/vendor/ars/scripts/test_transport_fixture_citation_gate.py +338 -0
- package/vendor/ars/scripts/test_uncited_assertion.py +558 -0
- package/vendor/ars/scripts/test_v3_6_7_phase_6_6.py +1279 -0
- package/vendor/ars/scripts/test_validate_compliance_fixtures.py +36 -0
- package/vendor/ars/scripts/test_validate_ideation_diversity_assets.py +230 -0
- package/vendor/ars/scripts/test_venue_disclosure_contract.py +755 -0
- package/vendor/ars/scripts/test_verification_cache.py +280 -0
- package/vendor/ars/scripts/test_verification_gate.py +461 -0
- package/vendor/ars/scripts/test_verify_passport_cli.py +123 -0
- package/vendor/ars/scripts/test_verify_submission_package.py +1407 -0
- package/vendor/ars/scripts/test_version_records_schema.py +211 -0
- package/vendor/ars/scripts/tortured_phrase_screening.py +3502 -0
- package/vendor/ars/scripts/uncited_assertion_detector.py +254 -0
- package/vendor/ars/scripts/v3_6_7_inversion_manifest.json +9 -0
- package/vendor/ars/scripts/v3_6_8_inversion_manifest.json +10 -0
- package/vendor/ars/scripts/validate_claim_standing_stance_assets.py +249 -0
- package/vendor/ars/scripts/validate_compliance_fixtures.py +56 -0
- package/vendor/ars/scripts/validate_ideation_diversity_assets.py +303 -0
- package/vendor/ars/scripts/venue_disclosure_contract_harness.py +837 -0
- package/vendor/ars/scripts/verification_cache.py +276 -0
- package/vendor/ars/scripts/verification_gate/__init__.py +345 -0
- package/vendor/ars/scripts/verify_passport.py +133 -0
- package/vendor/ars/scripts/verify_submission_package.py +1657 -0
- package/vendor/ars/shared/agents/compliance_agent.md +136 -0
- package/vendor/ars/shared/artifact_reproducibility_pattern.md +173 -0
- package/vendor/ars/shared/benchmark_report.schema.json +81 -0
- package/vendor/ars/shared/benchmark_report_pattern.md +180 -0
- package/vendor/ars/shared/bibliographic_integrity_signals.md +142 -0
- package/vendor/ars/shared/collaboration_depth_rubric.md +154 -0
- package/vendor/ars/shared/compliance_checkpoint_protocol.md +162 -0
- package/vendor/ars/shared/compliance_report.schema.json +187 -0
- package/vendor/ars/shared/contracts/README.md +938 -0
- package/vendor/ars/shared/contracts/activity/adjudication_activity_input.schema.json +555 -0
- package/vendor/ars/shared/contracts/activity/adjudication_activity_store.schema.json +560 -0
- package/vendor/ars/shared/contracts/audit/audit_jsonl.schema.json +128 -0
- package/vendor/ars/shared/contracts/audit/audit_sidecar.schema.json +169 -0
- package/vendor/ars/shared/contracts/audit/audit_verdict.schema.json +133 -0
- package/vendor/ars/shared/contracts/audit/cross_document_consistency_advisory.schema.json +480 -0
- package/vendor/ars/shared/contracts/audit/cross_document_consistency_advisory_draft.schema.json +564 -0
- package/vendor/ars/shared/contracts/audit/cross_document_source_manifest.schema.json +202 -0
- package/vendor/ars/shared/contracts/audit/tortured_phrase_advisory.schema.json +1362 -0
- package/vendor/ars/shared/contracts/audit/tortured_phrase_snapshot.schema.json +208 -0
- package/vendor/ars/shared/contracts/audit/tortured_phrase_snapshot_manifest.schema.json +335 -0
- package/vendor/ars/shared/contracts/capability/stage_capability_matrix.json +434 -0
- package/vendor/ars/shared/contracts/claim_standing/candidate_ledger.schema.json +705 -0
- package/vendor/ars/shared/contracts/claim_standing/query_plan.schema.json +389 -0
- package/vendor/ars/shared/contracts/claim_standing/query_plan_v1_1.schema.json +782 -0
- package/vendor/ars/shared/contracts/claim_standing/retrieval_input.schema.json +440 -0
- package/vendor/ars/shared/contracts/claim_standing/stance_record.schema.json +460 -0
- package/vendor/ars/shared/contracts/claim_standing/transmission_ledger.schema.json +282 -0
- package/vendor/ars/shared/contracts/cross_model/codex_citation_receipt.schema.json +157 -0
- package/vendor/ars/shared/contracts/cross_model/codex_citation_request.schema.json +23 -0
- package/vendor/ars/shared/contracts/cross_model/promotion_bakeoff_sealed_commitment.schema.json +55 -0
- package/vendor/ars/shared/contracts/cross_model/promotion_bakeoff_sealed_reveal.schema.json +50 -0
- package/vendor/ars/shared/contracts/degradation_registry.json +428 -0
- package/vendor/ars/shared/contracts/evaluator/full.json +126 -0
- package/vendor/ars/shared/contracts/evidence/claim_registry.schema.json +50 -0
- package/vendor/ars/shared/contracts/evidence/claim_registry_coverage_report.schema.json +79 -0
- package/vendor/ars/shared/contracts/evidence/evidence_row.schema.json +504 -0
- package/vendor/ars/shared/contracts/evidence/evidence_row_v1_1.schema.json +364 -0
- package/vendor/ars/shared/contracts/evidence/evidence_row_v1_2.schema.json +714 -0
- package/vendor/ars/shared/contracts/evidence/evidence_row_v1_3.schema.json +524 -0
- package/vendor/ars/shared/contracts/human_subjects/authority_profile_registry.schema.json +497 -0
- package/vendor/ars/shared/contracts/human_subjects/committee_correspondence.schema.json +253 -0
- package/vendor/ars/shared/contracts/human_subjects/content_coverage_advisory.schema.json +620 -0
- package/vendor/ars/shared/contracts/human_subjects/irb_context_record.schema.json +329 -0
- package/vendor/ars/shared/contracts/human_subjects/resolved_authority_context.schema.json +347 -0
- package/vendor/ars/shared/contracts/human_subjects/review_pathway_rule_trace.schema.json +265 -0
- package/vendor/ars/shared/contracts/human_subjects/review_pathway_trace_request.schema.json +127 -0
- package/vendor/ars/shared/contracts/human_subjects/submission_packet_inventory.schema.json +240 -0
- package/vendor/ars/shared/contracts/human_subjects/submission_packet_manifest.schema.json +999 -0
- package/vendor/ars/shared/contracts/passport/audit_artifact_entry.schema.json +266 -0
- package/vendor/ars/shared/contracts/passport/bibliographic_integrity_signal.schema.json +1676 -0
- package/vendor/ars/shared/contracts/passport/citation_provenance.schema.json +107 -0
- package/vendor/ars/shared/contracts/passport/citation_verification_summary.schema.json +164 -0
- package/vendor/ars/shared/contracts/passport/claim_audit_result.schema.json +124 -0
- package/vendor/ars/shared/contracts/passport/claim_drift.schema.json +58 -0
- package/vendor/ars/shared/contracts/passport/claim_intent_manifest.schema.json +107 -0
- package/vendor/ars/shared/contracts/passport/constraint_violation.schema.json +65 -0
- package/vendor/ars/shared/contracts/passport/experiment_alignment_result.schema.json +69 -0
- package/vendor/ars/shared/contracts/passport/experiment_provenance_entry.schema.json +169 -0
- package/vendor/ars/shared/contracts/passport/human_read_log.schema.json +86 -0
- package/vendor/ars/shared/contracts/passport/inquiry_ledger_ref.schema.json +22 -0
- package/vendor/ars/shared/contracts/passport/literature_corpus_entry.schema.json +650 -0
- package/vendor/ars/shared/contracts/passport/preregistration_artifact.schema.json +132 -0
- package/vendor/ars/shared/contracts/passport/rejection_log.schema.json +89 -0
- package/vendor/ars/shared/contracts/passport/reset_ledger_entry.schema.json +158 -0
- package/vendor/ars/shared/contracts/passport/temporal_audit_results.schema.json +208 -0
- package/vendor/ars/shared/contracts/passport/terminal_policies.schema.json +50 -0
- package/vendor/ars/shared/contracts/passport/timeline.schema.json +102 -0
- package/vendor/ars/shared/contracts/passport/uncited_assertion.schema.json +56 -0
- package/vendor/ars/shared/contracts/passport/uncited_audit_failure.schema.json +72 -0
- package/vendor/ars/shared/contracts/passport/user_attested_read_resolution.schema.json +87 -0
- package/vendor/ars/shared/contracts/passport/version_records.schema.json +138 -0
- package/vendor/ars/shared/contracts/patch/block_manifest.schema.json +45 -0
- package/vendor/ars/shared/contracts/patch/legacy/v1_0/revision_patch.schema.json +110 -0
- package/vendor/ars/shared/contracts/patch/revision_patch.schema.json +250 -0
- package/vendor/ars/shared/contracts/pdf/pdf_content_classifier_diagnostic.schema.json +39 -0
- package/vendor/ars/shared/contracts/pdf/pdf_content_classifier_worker.schema.json +88 -0
- package/vendor/ars/shared/contracts/pdf/pdf_read_preflight.schema.json +227 -0
- package/vendor/ars/shared/contracts/re_review/input_manifest.schema.json +161 -0
- package/vendor/ars/shared/contracts/re_review/legacy/v1_0/input_manifest.schema.json +134 -0
- package/vendor/ars/shared/contracts/re_review/legacy/v1_0/precommitment.schema.json +193 -0
- package/vendor/ars/shared/contracts/re_review/legacy/v1_0/traceability.schema.json +841 -0
- package/vendor/ars/shared/contracts/re_review/legacy/v1_0/verdict_record.schema.json +244 -0
- package/vendor/ars/shared/contracts/re_review/precommitment.schema.json +193 -0
- package/vendor/ars/shared/contracts/re_review/traceability.schema.json +916 -0
- package/vendor/ars/shared/contracts/re_review/verdict_record.schema.json +245 -0
- package/vendor/ars/shared/contracts/research_workflow/inquiry_branch_ledger.schema.json +449 -0
- package/vendor/ars/shared/contracts/research_workflow/research_workflow_profile.schema.json +222 -0
- package/vendor/ars/shared/contracts/research_workflow/research_workflow_profile_selection_receipt.schema.json +111 -0
- package/vendor/ars/shared/contracts/review_target/constructive_review_findings.schema.json +172 -0
- package/vendor/ars/shared/contracts/review_target/criteria_registry.schema.json +97 -0
- package/vendor/ars/shared/contracts/review_target/review_criteria_binding_manifest.schema.json +235 -0
- package/vendor/ars/shared/contracts/review_target/review_criteria_source_receipt.schema.json +158 -0
- package/vendor/ars/shared/contracts/review_target/review_target_context.schema.json +106 -0
- package/vendor/ars/shared/contracts/review_target/review_target_declaration.schema.json +118 -0
- package/vendor/ars/shared/contracts/reviewer/full.json +114 -0
- package/vendor/ars/shared/contracts/reviewer/methodology_focus.json +75 -0
- package/vendor/ars/shared/contracts/reviewer/review_panel_provenance.schema.json +263 -0
- package/vendor/ars/shared/contracts/reviewer/review_panel_provenance_carrier.schema.json +122 -0
- package/vendor/ars/shared/contracts/reviewer/review_panel_provenance_input.schema.json +120 -0
- package/vendor/ars/shared/contracts/revision/author_adjudication.schema.json +251 -0
- package/vendor/ars/shared/contracts/revision/author_adjudication_input.schema.json +25 -0
- package/vendor/ars/shared/contracts/revision/claim_strength_drift_disposition.schema.json +97 -0
- package/vendor/ars/shared/contracts/revision/claim_strength_drift_disposition_input.schema.json +80 -0
- package/vendor/ars/shared/contracts/revision/claim_strength_drift_findings.schema.json +139 -0
- package/vendor/ars/shared/contracts/revision/claim_surface_manifest.schema.json +99 -0
- package/vendor/ars/shared/contracts/revision/integrity_correction_authorization.schema.json +140 -0
- package/vendor/ars/shared/contracts/revision/integrity_correction_authorization_input.schema.json +28 -0
- package/vendor/ars/shared/contracts/revision/integrity_correction_list.schema.json +48 -0
- package/vendor/ars/shared/contracts/revision/integrity_pass_receipt.schema.json +16 -0
- package/vendor/ars/shared/contracts/revision/revision_evidence_bundle.schema.json +134 -0
- package/vendor/ars/shared/contracts/revision/revision_roadmap.schema.json +334 -0
- package/vendor/ars/shared/contracts/submission/format_profile.example.yaml +33 -0
- package/vendor/ars/shared/contracts/submission/format_profile.schema.json +102 -0
- package/vendor/ars/shared/contracts/submission/submission_verification_report.schema.json +233 -0
- package/vendor/ars/shared/contracts/submission/venue_profile.schema.json +114 -0
- package/vendor/ars/shared/contracts/writer/full.json +87 -0
- package/vendor/ars/shared/cross_model_verification.md +714 -0
- package/vendor/ars/shared/evals_lift_report.schema.json +141 -0
- package/vendor/ars/shared/ground_truth_isolation_pattern.md +275 -0
- package/vendor/ars/shared/handoff_schemas.md +1209 -0
- package/vendor/ars/shared/human_subjects_authority_registry.json +1278 -0
- package/vendor/ars/shared/mode_spectrum.md +57 -0
- package/vendor/ars/shared/model_tiering.md +83 -0
- package/vendor/ars/shared/policy_data/nature_policy.md +56 -0
- package/vendor/ars/shared/prisma_trAIce_protocol.md +157 -0
- package/vendor/ars/shared/raise_framework.md +129 -0
- package/vendor/ars/shared/references/authority_content_coverage_advisory_protocol.md +275 -0
- package/vendor/ars/shared/references/claim_standing_candidate_ledger_protocol.md +66 -0
- package/vendor/ars/shared/references/claim_strength_ladder.md +93 -0
- package/vendor/ars/shared/references/cross_document_consistency_advisory_protocol.md +263 -0
- package/vendor/ars/shared/references/evidence_row_protocol.md +260 -0
- package/vendor/ars/shared/references/firm_rules.md +90 -0
- package/vendor/ars/shared/references/human_subjects_authority_protocol.md +274 -0
- package/vendor/ars/shared/references/intent_clarification_protocol.md +168 -0
- package/vendor/ars/shared/references/irb_terminology_glossary.md +229 -0
- package/vendor/ars/shared/references/protected_hedging_phrases.md +118 -0
- package/vendor/ars/shared/references/psychometric_terminology_glossary.md +109 -0
- package/vendor/ars/shared/references/review_criteria_consumer_protocol.md +238 -0
- package/vendor/ars/shared/references/review_pathway_rule_trace_protocol.md +166 -0
- package/vendor/ars/shared/references/submission_packet_manifest_protocol.md +292 -0
- package/vendor/ars/shared/references/word_count_conventions.md +124 -0
- package/vendor/ars/shared/research_workflow_profiles/field_general.json +1 -0
- package/vendor/ars/shared/review_criteria_registry.json +207 -0
- package/vendor/ars/shared/review_criteria_sources/msr-2027-technical-papers.2026-08-24.json +46 -0
- package/vendor/ars/shared/review_criteria_sources/sigsoft-empirical-standards.2026-08-24.json +31 -0
- package/vendor/ars/shared/sprint_contract.schema.json +482 -0
- package/vendor/ars/shared/style_calibration_protocol.md +151 -0
- package/vendor/ars/shared/templates/codex_audit_multifile_template.md +263 -0
- package/vendor/ars/tools/release-discipline/.toolkit-version +1 -0
- package/vendor/ars/tools/release-discipline/README.md +4 -0
- package/vendor/ars/tools/release-discipline/scripts/_release_doc_alignment_schema.py +1011 -0
- package/vendor/ars/tools/release-discipline/scripts/check_command_invariants.py +497 -0
- package/vendor/ars/tools/release-discipline/scripts/check_release_doc_alignment.py +263 -0
- package/vendor/ars/tools/release-discipline/scripts/sync-toolkit.sh +147 -0
- package/vendor/windows/NOTICE.md +12 -0
- package/vendor/windows/arm64/fd.exe +0 -0
- package/vendor/windows/arm64/licenses/fd/LICENSE-APACHE +201 -0
- package/vendor/windows/arm64/licenses/fd/LICENSE-MIT +21 -0
- package/vendor/windows/arm64/licenses/ripgrep/COPYING +3 -0
- package/vendor/windows/arm64/licenses/ripgrep/LICENSE-MIT +21 -0
- package/vendor/windows/arm64/licenses/ripgrep/UNLICENSE +24 -0
- package/vendor/windows/arm64/rg.exe +0 -0
- package/vendor/windows/x64/fd.exe +0 -0
- package/vendor/windows/x64/licenses/fd/LICENSE-APACHE +201 -0
- package/vendor/windows/x64/licenses/fd/LICENSE-MIT +21 -0
- package/vendor/windows/x64/licenses/ripgrep/COPYING +3 -0
- package/vendor/windows/x64/licenses/ripgrep/LICENSE-MIT +21 -0
- package/vendor/windows/x64/licenses/ripgrep/UNLICENSE +24 -0
- package/vendor/windows/x64/rg.exe +0 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"""Mutation tests for check_distribution_surface_claims.py (#753)."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import json
|
|
5
|
+
import sys
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
9
|
+
if str(REPO_ROOT / "scripts") not in sys.path:
|
|
10
|
+
sys.path.insert(0, str(REPO_ROOT / "scripts"))
|
|
11
|
+
|
|
12
|
+
from check_distribution_surface_claims import run # noqa: E402
|
|
13
|
+
|
|
14
|
+
CLEAN_PLUGIN = {
|
|
15
|
+
"name": "fixture",
|
|
16
|
+
"description": "Contract-audited academic research pipeline. "
|
|
17
|
+
"4 skills, 27 modes, 39 prompt roles.",
|
|
18
|
+
}
|
|
19
|
+
CLEAN_MARKETPLACE = {
|
|
20
|
+
"name": "fixture",
|
|
21
|
+
"description": "Contract-audited research and writing skills.",
|
|
22
|
+
"plugins": [
|
|
23
|
+
{"name": "fixture", "description": "4 skills + 27 modes."},
|
|
24
|
+
],
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _write(root: Path, plugin=CLEAN_PLUGIN, marketplace=CLEAN_MARKETPLACE,
|
|
29
|
+
plugin_raw: str | None = None) -> Path:
|
|
30
|
+
d = root / ".claude-plugin"
|
|
31
|
+
d.mkdir(parents=True, exist_ok=True)
|
|
32
|
+
if plugin is not None or plugin_raw is not None:
|
|
33
|
+
(d / "plugin.json").write_text(
|
|
34
|
+
plugin_raw if plugin_raw is not None else json.dumps(plugin),
|
|
35
|
+
encoding="utf-8",
|
|
36
|
+
)
|
|
37
|
+
if marketplace is not None:
|
|
38
|
+
(d / "marketplace.json").write_text(
|
|
39
|
+
json.dumps(marketplace), encoding="utf-8"
|
|
40
|
+
)
|
|
41
|
+
return root
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _fires(errors: list[str], fragment: str) -> None:
|
|
45
|
+
assert any(fragment in e for e in errors), (
|
|
46
|
+
f"expected an error containing {fragment!r}, got: {errors}"
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_shipped_manifests_pass():
|
|
51
|
+
assert run(REPO_ROOT) == []
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_clean_synthetic_manifests_pass(tmp_path):
|
|
55
|
+
assert run(_write(tmp_path)) == []
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def test_missing_plugin_json_fails_closed(tmp_path):
|
|
59
|
+
_write(tmp_path, plugin=None)
|
|
60
|
+
_fires(run(tmp_path), "D1")
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_missing_marketplace_json_fails_closed(tmp_path):
|
|
64
|
+
_write(tmp_path, marketplace=None)
|
|
65
|
+
_fires(run(tmp_path), "D1")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_unparseable_plugin_json_fails_closed(tmp_path):
|
|
69
|
+
_write(tmp_path, plugin_raw="{not json", plugin=None)
|
|
70
|
+
_fires(run(tmp_path), "D1")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def test_non_object_top_level_fails_closed(tmp_path):
|
|
74
|
+
_write(tmp_path, plugin_raw='["a list"]', plugin=None)
|
|
75
|
+
_fires(run(tmp_path), "D1")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_nonstandard_json_nan_fails_closed(tmp_path):
|
|
79
|
+
# json.loads accepts NaN by default; strict consumers reject it
|
|
80
|
+
_write(tmp_path, plugin=None,
|
|
81
|
+
plugin_raw='{"description": "39 prompt roles", "score": NaN}')
|
|
82
|
+
_fires(run(tmp_path), "D1")
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def test_nonstandard_json_infinity_fails_closed(tmp_path):
|
|
86
|
+
_write(tmp_path, plugin=None,
|
|
87
|
+
plugin_raw='{"description": "39 prompt roles", "x": Infinity}')
|
|
88
|
+
_fires(run(tmp_path), "D1")
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def test_missing_description_fires_d2(tmp_path):
|
|
92
|
+
_write(tmp_path, plugin={"name": "fixture"})
|
|
93
|
+
_fires(run(tmp_path), "D2")
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def test_empty_description_fires_d2(tmp_path):
|
|
97
|
+
_write(tmp_path, plugin={"name": "fixture", "description": " "})
|
|
98
|
+
_fires(run(tmp_path), "D2")
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def test_empty_plugins_list_fires_d2(tmp_path):
|
|
102
|
+
_write(tmp_path, marketplace={"name": "f", "description": "ok",
|
|
103
|
+
"plugins": []})
|
|
104
|
+
_fires(run(tmp_path), "D2")
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def test_production_grade_fires_d3(tmp_path):
|
|
108
|
+
_write(tmp_path, plugin={
|
|
109
|
+
"name": "f", "description": "Production-grade research pipeline."
|
|
110
|
+
})
|
|
111
|
+
_fires(run(tmp_path), "production-grade")
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def test_production_grade_space_spelling_fires_d3(tmp_path):
|
|
115
|
+
_write(tmp_path, plugin={
|
|
116
|
+
"name": "f", "description": "A production grade pipeline."
|
|
117
|
+
})
|
|
118
|
+
_fires(run(tmp_path), "production-grade")
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def test_agent_ensemble_fires_d3(tmp_path):
|
|
122
|
+
_write(tmp_path, plugin={
|
|
123
|
+
"name": "f", "description": "A 39-agent ensemble for research."
|
|
124
|
+
})
|
|
125
|
+
_fires(run(tmp_path), "agent ensemble")
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def test_effectiveness_stems_fire_d3(tmp_path):
|
|
129
|
+
for phrase in ("guaranteed accuracy", "proven results",
|
|
130
|
+
"state-of-the-art pipeline", "improves error rates",
|
|
131
|
+
"outperforms manual review"):
|
|
132
|
+
errors = run(_write(tmp_path, plugin={
|
|
133
|
+
"name": "f", "description": f"A pipeline with {phrase}."
|
|
134
|
+
}))
|
|
135
|
+
_fires(errors, "D3")
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def test_provenance_does_not_false_fire(tmp_path):
|
|
139
|
+
# word boundary: "proven" must not fire inside "provenance"
|
|
140
|
+
assert run(_write(tmp_path, plugin={
|
|
141
|
+
"name": "f",
|
|
142
|
+
"description": "Citation provenance tracking — 39 prompt roles.",
|
|
143
|
+
})) == []
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def test_marketplace_plugin_entry_description_covered(tmp_path):
|
|
147
|
+
_write(tmp_path, marketplace={
|
|
148
|
+
"name": "f", "description": "ok",
|
|
149
|
+
"plugins": [{"name": "f",
|
|
150
|
+
"description": "Production-grade skills."}],
|
|
151
|
+
})
|
|
152
|
+
_fires(run(tmp_path), "plugins[0]")
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def test_percentage_figure_fires_d3(tmp_path):
|
|
156
|
+
# the T-3 class: "31% -> ~5-10%" style numbers on a marketing surface
|
|
157
|
+
_write(tmp_path, plugin={
|
|
158
|
+
"name": "f",
|
|
159
|
+
"description": "Cuts citation errors by 31% — 39 prompt roles.",
|
|
160
|
+
})
|
|
161
|
+
_fires(run(tmp_path), "percentage")
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def test_missing_count_token_fires_d4(tmp_path):
|
|
165
|
+
_write(tmp_path, plugin={
|
|
166
|
+
"name": "f", "description": "Contract-audited research pipeline."
|
|
167
|
+
})
|
|
168
|
+
_fires(run(tmp_path), "D4")
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def test_unbindable_count_spelling_fires_d4(tmp_path):
|
|
172
|
+
# "39 agents" is a spelling invariant 8 cannot bind — the number would
|
|
173
|
+
# silently detach from the tree count
|
|
174
|
+
_write(tmp_path, plugin={
|
|
175
|
+
"name": "f", "description": "A pipeline with 39 agents."
|
|
176
|
+
})
|
|
177
|
+
_fires(run(tmp_path), "D4")
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def test_plugin_exposed_count_drift_fires_d5(tmp_path):
|
|
181
|
+
_write(tmp_path, plugin={
|
|
182
|
+
"name": "f",
|
|
183
|
+
"description": "39 prompt roles (4 plugin-exposed agents).",
|
|
184
|
+
})
|
|
185
|
+
_fires(run(tmp_path), "D5")
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def test_plugin_exposed_count_matching_passes(tmp_path):
|
|
189
|
+
assert run(_write(tmp_path, plugin={
|
|
190
|
+
"name": "f",
|
|
191
|
+
"description": "39 prompt roles (3 plugin-exposed agents).",
|
|
192
|
+
})) == []
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def test_percentage_case_variant_fires_d3(tmp_path):
|
|
196
|
+
# "_PERCENT_RE" is lowercase-only; the caller must lowercase first
|
|
197
|
+
_write(tmp_path, plugin={
|
|
198
|
+
"name": "f",
|
|
199
|
+
"description": "A 31 Percent reduction — 39 prompt roles.",
|
|
200
|
+
})
|
|
201
|
+
_fires(run(tmp_path), "percentage")
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def test_plugin_exposed_case_variant_fires_d5(tmp_path):
|
|
205
|
+
_write(tmp_path, plugin={
|
|
206
|
+
"name": "f",
|
|
207
|
+
"description": "39 prompt roles (4 Plugin-Exposed agents).",
|
|
208
|
+
})
|
|
209
|
+
_fires(run(tmp_path), "D5")
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
def test_near_miss_spelling_agentic_fires_d4(tmp_path):
|
|
213
|
+
# "39-agentic" must not count as a bound "N-agent" token
|
|
214
|
+
_write(tmp_path, plugin={
|
|
215
|
+
"name": "f", "description": "A 39-agentic workflow suite."
|
|
216
|
+
})
|
|
217
|
+
_fires(run(tmp_path), "D4")
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
def test_near_miss_spelling_singular_role_fires_d4(tmp_path):
|
|
221
|
+
# "39 prompt role" (singular) is not the licensed plural spelling
|
|
222
|
+
_write(tmp_path, plugin={
|
|
223
|
+
"name": "f", "description": "A suite with 39 prompt role."
|
|
224
|
+
})
|
|
225
|
+
_fires(run(tmp_path), "D4")
|
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
"""Mutation suite for check_domain_evidence_profile.py (#259).
|
|
2
|
+
|
|
3
|
+
Per the iron law: positive + negative tests for every check. Each negative
|
|
4
|
+
fixture mutates ONE artifact so exactly one check (C1-C7) fails, proving the
|
|
5
|
+
linter cannot trivially accept-all. Fixtures use cwd-swap (REPO_ROOT = Path.cwd()).
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import shutil
|
|
10
|
+
import subprocess
|
|
11
|
+
import sys
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
import pytest
|
|
15
|
+
|
|
16
|
+
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
17
|
+
LINT = REPO_ROOT / "scripts" / "check_domain_evidence_profile.py"
|
|
18
|
+
|
|
19
|
+
# The four files the lint reads.
|
|
20
|
+
INTAKE = "academic-paper/agents/intake_agent.md"
|
|
21
|
+
PROFILES = "academic-paper/references/domain_evidence_profiles.md"
|
|
22
|
+
CONSUMER = "academic-paper/agents/literature_strategist_agent.md"
|
|
23
|
+
SQH = "deep-research/references/source_quality_hierarchy.md"
|
|
24
|
+
|
|
25
|
+
# Heading literals the C8/C10 fixtures mutate, kept here (not imported from the
|
|
26
|
+
# lint module) deliberately: the suite drives the lint via subprocess, so it
|
|
27
|
+
# stays import-free. Names match the lint module's constants
|
|
28
|
+
# (INTAKE_NO_HANDOFF_HEADING / DECISION_TREE_HEADING) so a future heading reword
|
|
29
|
+
# is easy to keep in sync; if it drifts, the fixture precondition assert in the
|
|
30
|
+
# affected test fails loudly in CI rather than silently passing.
|
|
31
|
+
INTAKE_NO_HANDOFF_HEADING = "### When No Handoff Materials Are Detected"
|
|
32
|
+
DECISION_TREE_HEADING = "### Literature Screening Decision Tree"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def run_lint(cwd: Path) -> subprocess.CompletedProcess:
|
|
36
|
+
return subprocess.run(
|
|
37
|
+
[sys.executable, str(LINT)], cwd=str(cwd),
|
|
38
|
+
capture_output=True, text=True,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def test_integration_passes_against_real_repo():
|
|
43
|
+
"""The lint passes against the actual repo after Tasks 1-3 land."""
|
|
44
|
+
result = run_lint(REPO_ROOT)
|
|
45
|
+
assert result.returncode == 0, result.stderr
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _clone_repo(tmp_path: Path) -> Path:
|
|
49
|
+
"""Copy the four lint-relevant files into a minimal repo tree under tmp_path."""
|
|
50
|
+
dst = tmp_path / "repo"
|
|
51
|
+
for rel in (INTAKE, PROFILES, CONSUMER, SQH):
|
|
52
|
+
target = dst / rel
|
|
53
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
54
|
+
shutil.copy(REPO_ROOT / rel, target)
|
|
55
|
+
return dst
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _mutate(repo: Path, rel: str, old: str, new: str) -> None:
|
|
59
|
+
"""Replace ALL occurrences of `old` (not just the first).
|
|
60
|
+
|
|
61
|
+
A single-occurrence replace silently self-breaks a mutation test when the
|
|
62
|
+
token appears more than once in the file: the lint's `if token not in text`
|
|
63
|
+
check still finds the surviving copy, the lint passes, and the negative
|
|
64
|
+
test's `assert returncode != 0` fails. We replace all, then assert the token
|
|
65
|
+
is actually gone so a future multi-occurrence token can't reintroduce the bug.
|
|
66
|
+
"""
|
|
67
|
+
p = repo / rel
|
|
68
|
+
text = p.read_text(encoding="utf-8")
|
|
69
|
+
assert old in text, f"fixture precondition: '{old}' not found in {rel}"
|
|
70
|
+
p.write_text(text.replace(old, new), encoding="utf-8")
|
|
71
|
+
assert old not in p.read_text(encoding="utf-8"), (
|
|
72
|
+
f"fixture postcondition: '{old}' still present in {rel} after replace-all"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def test_clone_passes_clean():
|
|
77
|
+
"""Sanity: an unmutated clone passes (so each negative isolates one break)."""
|
|
78
|
+
import tempfile
|
|
79
|
+
with tempfile.TemporaryDirectory() as d:
|
|
80
|
+
repo = _clone_repo(Path(d))
|
|
81
|
+
assert run_lint(repo).returncode == 0
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def test_neg_a_drop_ship_enum(tmp_path):
|
|
85
|
+
"""(a) make a ship-ready enum value go missing (rename all copies) -> C2's
|
|
86
|
+
closed-set table check fails. `humanities_interpretive` occurs twice in the
|
|
87
|
+
profiles doc (table row + carry-forward fold), so _mutate must replace ALL."""
|
|
88
|
+
repo = _clone_repo(tmp_path)
|
|
89
|
+
_mutate(repo, PROFILES, "humanities_interpretive", "humanities_BOGUS")
|
|
90
|
+
r = run_lint(repo)
|
|
91
|
+
assert r.returncode != 0 and "C2" in r.stderr
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def test_neg_a2_fifth_effective_row(tmp_path):
|
|
95
|
+
"""(a2) add a 5th effective profile row (`clinical`) to the table -> C2's
|
|
96
|
+
closed-set check fails (extra row not in SHIP_ENUM). This is the spec's
|
|
97
|
+
'add a 5th effective enum value' mutation strategy; the bare-presence check
|
|
98
|
+
would have missed it. (closed-set regression coverage.)"""
|
|
99
|
+
repo = _clone_repo(tmp_path)
|
|
100
|
+
p = repo / PROFILES
|
|
101
|
+
text = p.read_text(encoding="utf-8")
|
|
102
|
+
# Insert a 5th data row right after the unknown_user_defined table row.
|
|
103
|
+
marker = "| `unknown_user_defined` |"
|
|
104
|
+
assert marker in text
|
|
105
|
+
idx = text.index(marker)
|
|
106
|
+
line_end = text.index("\n", idx)
|
|
107
|
+
injected = "\n| `clinical` | RCTs | journal | gaps | smuggled-in effective |"
|
|
108
|
+
p.write_text(text[:line_end] + injected + text[line_end:], encoding="utf-8")
|
|
109
|
+
r = run_lint(repo)
|
|
110
|
+
assert r.returncode != 0 and "C2" in r.stderr
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def test_neg_a3_intake_drop_enum_C1(tmp_path):
|
|
114
|
+
"""(a3) drop a ship enum value from INTAKE (not PROFILES) -> C1 fails. test_neg_a
|
|
115
|
+
only mutates PROFILES (proves C2); this one proves C1 actually fires on the
|
|
116
|
+
intake surface. (C1/C4 negative-fixture coverage.)"""
|
|
117
|
+
repo = _clone_repo(tmp_path)
|
|
118
|
+
_mutate(repo, INTAKE, "general_social_science", "general_BOGUS")
|
|
119
|
+
r = run_lint(repo)
|
|
120
|
+
assert r.returncode != 0 and "C1" in r.stderr
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def test_neg_c4_drop_advisory_or_246(tmp_path):
|
|
124
|
+
"""(c4) remove the advisory-only statement -> C4 fails. C4 previously had no
|
|
125
|
+
negative fixture at all. (C1/C4 negative-fixture coverage.)"""
|
|
126
|
+
repo = _clone_repo(tmp_path)
|
|
127
|
+
_mutate(repo, PROFILES, "Advisory only", "Mandatory grading")
|
|
128
|
+
r = run_lint(repo)
|
|
129
|
+
assert r.returncode != 0 and "C4" in r.stderr
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def test_neg_b_disqualifying_rename(tmp_path):
|
|
133
|
+
"""(b) rename gaps column back to 'disqualifying' -> C2 fails."""
|
|
134
|
+
repo = _clone_repo(tmp_path)
|
|
135
|
+
_mutate(repo, PROFILES, "Critical gaps to surface", "Disqualifying gaps")
|
|
136
|
+
r = run_lint(repo)
|
|
137
|
+
assert r.returncode != 0 and "C2" in r.stderr
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def test_neg_c_strip_fallback_case(tmp_path):
|
|
141
|
+
"""(c) strip a graceful-fallback case from the consumer -> C3 fails."""
|
|
142
|
+
repo = _clone_repo(tmp_path)
|
|
143
|
+
_mutate(repo, CONSUMER, "[PROFILE-UNRESOLVED]", "REMOVED-TAG")
|
|
144
|
+
r = run_lint(repo)
|
|
145
|
+
assert r.returncode != 0 and "C3" in r.stderr
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def test_neg_d_delete_legacy_text(tmp_path):
|
|
149
|
+
"""(d) delete the preserved Medicine/Health legacy row -> C5 fails. We mutate
|
|
150
|
+
the distinctive verbatim phrase ('evidence-based-medicine') that C5 now binds
|
|
151
|
+
to the Medicine/Health row, NOT the bare 'Medicine/Health' label (which could
|
|
152
|
+
survive elsewhere). Replace-all removes every copy of the phrase."""
|
|
153
|
+
repo = _clone_repo(tmp_path)
|
|
154
|
+
_mutate(repo, PROFILES, "evidence-based-medicine", "REMOVED")
|
|
155
|
+
r = run_lint(repo)
|
|
156
|
+
assert r.returncode != 0 and "C5" in r.stderr
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def test_neg_e_remove_policy_fold(tmp_path):
|
|
160
|
+
"""(e) delete ONLY the Policy fold line (not Social Science's identical fold)
|
|
161
|
+
-> C5 fails. This is the real regression a review round flagged: the phrase
|
|
162
|
+
'folded into general_social_science' appears for BOTH Social Science and
|
|
163
|
+
Policy, so a phrase-only check (or replace-all) would miss a Policy-only
|
|
164
|
+
deletion. C5 now binds 'Policy' to the fold on the same line; this fixture
|
|
165
|
+
removes exactly that line and the bound check must fire."""
|
|
166
|
+
repo = _clone_repo(tmp_path)
|
|
167
|
+
p = repo / PROFILES
|
|
168
|
+
lines = p.read_text(encoding="utf-8").splitlines(keepends=True)
|
|
169
|
+
kept = [ln for ln in lines if not ("Policy" in ln and "folded into" in ln)]
|
|
170
|
+
assert len(kept) == len(lines) - 1, "fixture expects exactly one Policy-fold line"
|
|
171
|
+
p.write_text("".join(kept), encoding="utf-8")
|
|
172
|
+
r = run_lint(repo)
|
|
173
|
+
assert r.returncode != 0 and "C5" in r.stderr
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def test_neg_f_leak_into_deep_research(tmp_path):
|
|
177
|
+
"""(f) add a Domain Evidence Profiles section to source_quality_hierarchy.md
|
|
178
|
+
-> C6 R-5 leak guard (heading branch) fails."""
|
|
179
|
+
repo = _clone_repo(tmp_path)
|
|
180
|
+
p = repo / SQH
|
|
181
|
+
p.write_text(p.read_text() + "\n## Domain Evidence Profiles\nleak\n", encoding="utf-8")
|
|
182
|
+
r = run_lint(repo)
|
|
183
|
+
assert r.returncode != 0 and "C6" in r.stderr
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def test_neg_f2_edit_fsa_table_cell(tmp_path):
|
|
187
|
+
"""(f2) edit ONE cell of the Field-Specific Adjustments table (no leaked
|
|
188
|
+
heading) -> C6's SHA-256 pin branch fails. Fixture (f) only trips the leaked-
|
|
189
|
+
heading guard; without this, the hash-pin behavior could regress while C6
|
|
190
|
+
still has a passing negative. Mutate a distinctive cell substring that exists
|
|
191
|
+
in the real table (e.g. the Medicine/Health 'evidence-based medicine' note)."""
|
|
192
|
+
repo = _clone_repo(tmp_path)
|
|
193
|
+
p = repo / SQH
|
|
194
|
+
text = p.read_text(encoding="utf-8")
|
|
195
|
+
# Pick a substring guaranteed to be inside the FSA table; edit it so the
|
|
196
|
+
# block digest changes but no `## Domain Evidence Profiles` heading appears.
|
|
197
|
+
assert "Evidence-based medicine tradition" in text, "fixture expects the EBM note cell"
|
|
198
|
+
p.write_text(text.replace("Evidence-based medicine tradition", "EDITED note"), encoding="utf-8")
|
|
199
|
+
r = run_lint(repo)
|
|
200
|
+
assert r.returncode != 0 and "C6" in r.stderr
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def test_neg_g_carrier_regression(tmp_path):
|
|
204
|
+
"""(g) inside the Step 12 block, store the profile via Material Passport
|
|
205
|
+
-> C7 carrier-regression guard fails."""
|
|
206
|
+
repo = _clone_repo(tmp_path)
|
|
207
|
+
# Insert a forbidden carrier line right after the Step 12 heading.
|
|
208
|
+
p = repo / INTAKE
|
|
209
|
+
text = p.read_text(encoding="utf-8")
|
|
210
|
+
text = text.replace(
|
|
211
|
+
"### Step 12: Domain Evidence Profile",
|
|
212
|
+
"### Step 12: Domain Evidence Profile\n\nStore the profile on the Material Passport.",
|
|
213
|
+
1,
|
|
214
|
+
)
|
|
215
|
+
p.write_text(text, encoding="utf-8")
|
|
216
|
+
r = run_lint(repo)
|
|
217
|
+
assert r.returncode != 0 and "C7" in r.stderr
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
def test_neg_g2_carrier_regression_with_distant_negation(tmp_path):
|
|
221
|
+
"""(g2) C7 false-negative guard: a regression line that ALSO contains a
|
|
222
|
+
distant negation word ("Store on the Material Passport, do not use the PCR")
|
|
223
|
+
must STILL fail C7. A per-line "any negation anywhere" filter would wrongly
|
|
224
|
+
let this through; C7's per-occurrence "negation immediately before the token"
|
|
225
|
+
rule catches it (the 'do not' negates the PCR, not the carrier)."""
|
|
226
|
+
repo = _clone_repo(tmp_path)
|
|
227
|
+
p = repo / CONSUMER
|
|
228
|
+
text = p.read_text(encoding="utf-8")
|
|
229
|
+
text = text.replace(
|
|
230
|
+
"### Domain Evidence Profile Resolution",
|
|
231
|
+
"### Domain Evidence Profile Resolution\n\nStore on the Material Passport, do not use the PCR.",
|
|
232
|
+
1,
|
|
233
|
+
)
|
|
234
|
+
p.write_text(text, encoding="utf-8")
|
|
235
|
+
r = run_lint(repo)
|
|
236
|
+
assert r.returncode != 0 and "C7" in r.stderr
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def test_neg_g3_carrier_regression_not_only(tmp_path):
|
|
240
|
+
"""(g3) C7 'not only/not just' guard: "Store not only on the Material Passport
|
|
241
|
+
but also in the PCR" AFFIRMS the carrier (not only X = also X), so it must FAIL
|
|
242
|
+
C7. C7's negation exemption uses a `(?!\\s+only|\\s+just)` lookahead so 'not
|
|
243
|
+
only' is not treated as a negation. This fixture locks that branch — without
|
|
244
|
+
it, a future edit could drop the lookahead while the other C7 fixtures still
|
|
245
|
+
pass."""
|
|
246
|
+
repo = _clone_repo(tmp_path)
|
|
247
|
+
p = repo / CONSUMER
|
|
248
|
+
text = p.read_text(encoding="utf-8")
|
|
249
|
+
text = text.replace(
|
|
250
|
+
"### Domain Evidence Profile Resolution",
|
|
251
|
+
"### Domain Evidence Profile Resolution\n\nStore not only on the Material Passport but also in the PCR.",
|
|
252
|
+
1,
|
|
253
|
+
)
|
|
254
|
+
p.write_text(text, encoding="utf-8")
|
|
255
|
+
r = run_lint(repo)
|
|
256
|
+
assert r.returncode != 0 and "C7" in r.stderr
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def test_pos_historical_contrast_does_not_trip_c7(tmp_path):
|
|
260
|
+
"""Scope-lock: a Material Passport mention OUTSIDE the heading ranges (e.g.
|
|
261
|
+
historical-contrast prose) must NOT trip C7."""
|
|
262
|
+
repo = _clone_repo(tmp_path)
|
|
263
|
+
p = repo / CONSUMER
|
|
264
|
+
# Append contrast prose far from the resolution heading range.
|
|
265
|
+
p.write_text(
|
|
266
|
+
p.read_text() + "\n\n## History\nThe R1-R6 design used the Material Passport and Schema 13.\n",
|
|
267
|
+
encoding="utf-8",
|
|
268
|
+
)
|
|
269
|
+
r = run_lint(repo)
|
|
270
|
+
assert r.returncode == 0, r.stderr
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
# --- C8: no-handoff flow directive upper bound covers Step 12 (#327 P1) ---------
|
|
274
|
+
#
|
|
275
|
+
# Bug (#327 P1): intake_agent.md's ONLY no-handoff control-flow directive bounded
|
|
276
|
+
# the interview at "Step 1-11", but the Domain Evidence Profile producer is
|
|
277
|
+
# Step 12. An agent following the directive literally never runs Step 12, never
|
|
278
|
+
# writes the PCR row, and the consumer silently takes the [NO-PROFILE-NEUTRAL]
|
|
279
|
+
# fallback — the feature never activates on the most common path. C8 pins the
|
|
280
|
+
# directive's upper bound so this cannot silently regress; the runtime fix is in
|
|
281
|
+
# intake_agent.md line ~63.
|
|
282
|
+
|
|
283
|
+
def test_neg_h_step12_bound_regression(tmp_path):
|
|
284
|
+
"""(h) revert the no-handoff flow directive to a Step-11 upper bound (drop the
|
|
285
|
+
Step 12 coverage) -> C8 fails. This is the exact #327 P1 regression: the
|
|
286
|
+
directive that bounds the no-handoff interview must reach Step 12, or the
|
|
287
|
+
Domain Evidence Profile producer is orphaned. Mutate within the no-handoff
|
|
288
|
+
block so we exercise C8's scoped detection, not a global token scan."""
|
|
289
|
+
repo = _clone_repo(tmp_path)
|
|
290
|
+
p = repo / INTAKE
|
|
291
|
+
text = p.read_text(encoding="utf-8")
|
|
292
|
+
# Find the no-handoff block and strip every "Step 12" mention inside it,
|
|
293
|
+
# simulating the orphaned-bound regression.
|
|
294
|
+
idx = text.index(INTAKE_NO_HANDOFF_HEADING)
|
|
295
|
+
nxt = text.index("\n## ", idx) # next H2 (Plan Mode Detection) ends the block
|
|
296
|
+
block = text[idx:nxt]
|
|
297
|
+
assert "then Step 12" in block, "fixture precondition: no-handoff block must execute Step 12"
|
|
298
|
+
mutated = block.replace("then Step 12", "then Step 11")
|
|
299
|
+
p.write_text(text[:idx] + mutated + text[nxt:], encoding="utf-8")
|
|
300
|
+
r = run_lint(repo)
|
|
301
|
+
assert r.returncode != 0 and "C8" in r.stderr
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
def test_neg_h2_step12_mentioned_but_negated(tmp_path):
|
|
305
|
+
"""(h2) C8 strength: a directive that MENTIONS the Step 12 token but negates
|
|
306
|
+
its execution ("Do not run Step 12 in this flow") must STILL fail C8. A bare
|
|
307
|
+
token-presence guard would let this orphan the producer; C8 requires the
|
|
308
|
+
affirmative 'then Step 12' directive. (Hardening from codex review.)"""
|
|
309
|
+
repo = _clone_repo(tmp_path)
|
|
310
|
+
p = repo / INTAKE
|
|
311
|
+
text = p.read_text(encoding="utf-8")
|
|
312
|
+
idx = text.index(INTAKE_NO_HANDOFF_HEADING)
|
|
313
|
+
nxt = text.index("\n## ", idx)
|
|
314
|
+
block = text[idx:nxt]
|
|
315
|
+
# Replace the affirmative directive with one that mentions but negates Step 12.
|
|
316
|
+
# Anchored on the period-less core phrase so directive-tail extensions
|
|
317
|
+
# (e.g. #392's ", then Step 13 (...)") don't break the fixture.
|
|
318
|
+
mutated = block.replace(
|
|
319
|
+
"then Step 12 (Domain Evidence Profile) per its own gating in that step",
|
|
320
|
+
"Do not run Step 12 in this flow",
|
|
321
|
+
)
|
|
322
|
+
assert mutated != block, "fixture precondition: affirmative directive must be present to replace"
|
|
323
|
+
p.write_text(text[:idx] + mutated + text[nxt:], encoding="utf-8")
|
|
324
|
+
r = run_lint(repo)
|
|
325
|
+
assert r.returncode != 0 and "C8" in r.stderr
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
def test_pos_step11_outside_nohandoff_block_does_not_trip_c8(tmp_path):
|
|
329
|
+
"""Scope-lock: a "Step 1-11" mention OUTSIDE the no-handoff block (e.g. the
|
|
330
|
+
plan-mode "instead of the full 11" prose) must NOT trip C8. C8 only inspects
|
|
331
|
+
the no-handoff directive's own block."""
|
|
332
|
+
repo = _clone_repo(tmp_path)
|
|
333
|
+
p = repo / INTAKE
|
|
334
|
+
# Append unrelated prose mentioning Step 1-11 far from the no-handoff block.
|
|
335
|
+
p.write_text(
|
|
336
|
+
p.read_text() + "\n\n## Misc\nSome other flow uses Step 1-11 only, unrelated.\n",
|
|
337
|
+
encoding="utf-8",
|
|
338
|
+
)
|
|
339
|
+
r = run_lint(repo)
|
|
340
|
+
assert r.returncode == 0, r.stderr
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
# --- C9: reserved-fallback row gets its own advisory, not malformed (#327 P2#2) -
|
|
344
|
+
#
|
|
345
|
+
# Bug (#327 P2#2): intake writes a reserved request as the display form
|
|
346
|
+
# `unknown_user_defined (requested: <reserved>)`. The consumer's case (c) (value
|
|
347
|
+
# not in the 4 enum) then swept that valid reserved fallback into
|
|
348
|
+
# [PROFILE-UNRESOLVED] — the "malformed/hallucinated row" signal. C9 pins that
|
|
349
|
+
# the consumer resolution block (1) carries a distinct reserved-fallback advisory
|
|
350
|
+
# tag and (2) actually parses the `(requested: …)` parenthetical, so a future
|
|
351
|
+
# edit can't collapse the reserved-fallback path back into the malformed signal.
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
def test_neg_i_reserved_fallback_tag_removed(tmp_path):
|
|
355
|
+
"""(i) drop the reserved-fallback advisory tag from the consumer -> C9 fails.
|
|
356
|
+
Without a distinct tag the reserved-fallback path collapses back into the
|
|
357
|
+
[PROFILE-UNRESOLVED] malformed signal (the #327 P2#2 regression)."""
|
|
358
|
+
repo = _clone_repo(tmp_path)
|
|
359
|
+
_mutate(repo, CONSUMER, "[PROFILE-RESERVED-FALLBACK]", "[PROFILE-UNRESOLVED]")
|
|
360
|
+
r = run_lint(repo)
|
|
361
|
+
assert r.returncode != 0 and "C9" in r.stderr
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
def test_neg_i2_reserved_parse_removed(tmp_path):
|
|
365
|
+
"""(i2) remove the `(requested:` display form from the consumer block ->
|
|
366
|
+
C9 fails. The distinct tag is useless if the block never carries the
|
|
367
|
+
`(requested: <reserved>)` form the agent must route on."""
|
|
368
|
+
repo = _clone_repo(tmp_path)
|
|
369
|
+
_mutate(repo, CONSUMER, "(requested:", "(legacy-noparse:")
|
|
370
|
+
r = run_lint(repo)
|
|
371
|
+
assert r.returncode != 0 and "C9" in r.stderr
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
def test_neg_i3_form_present_but_no_parse_instruction(tmp_path):
|
|
375
|
+
"""(i3) C9 strength: keep the `(requested: …)` display form but strip the
|
|
376
|
+
explicit parse INSTRUCTION -> C9 must still fail. A block can show the form
|
|
377
|
+
as an example while losing the "parse the parenthetical" directive, leaving
|
|
378
|
+
the agent on exact-string equality so the reserved fallback routes to (c).
|
|
379
|
+
(Hardening from codex review.)"""
|
|
380
|
+
repo = _clone_repo(tmp_path)
|
|
381
|
+
p = repo / CONSUMER
|
|
382
|
+
text = p.read_text(encoding="utf-8")
|
|
383
|
+
# Remove the two parse/parsing instruction phrases inside the resolution
|
|
384
|
+
# block (verified by grep to be the block's only parse-instruction wording)
|
|
385
|
+
# while leaving the `(requested: …)` display form intact.
|
|
386
|
+
assert "parse the leading" in text and "Resolve by parsing" in text, (
|
|
387
|
+
"fixture precondition: both parse-instruction phrases must be present"
|
|
388
|
+
)
|
|
389
|
+
mutated = text.replace("parse the leading", "use the leading").replace(
|
|
390
|
+
"Resolve by parsing", "Resolve by reading"
|
|
391
|
+
)
|
|
392
|
+
assert "(requested:" in mutated, "fixture: display form must survive the mutation"
|
|
393
|
+
p.write_text(mutated, encoding="utf-8")
|
|
394
|
+
r = run_lint(repo)
|
|
395
|
+
assert r.returncode != 0 and "C9" in r.stderr
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
# --- C10: currency/date gate is profile-aware in the decision tree (#327 P2#3) --
|
|
399
|
+
#
|
|
400
|
+
# Bug (#327 P2#3): currency_window is in PROFILE_LOOSENABLE and four prose
|
|
401
|
+
# passages say the year-range relaxes for humanities_interpretive canonical
|
|
402
|
+
# texts, but the time-range NODE in the screening decision tree had no profile
|
|
403
|
+
# branch — so a canonical humanities source admitted at the peer-review node was
|
|
404
|
+
# RE-EXCLUDED at the time-range node unless it had >100 cites (an INVARIANT 5
|
|
405
|
+
# monotonic-admit violation). The prose just below the tree also said the profile
|
|
406
|
+
# admits "at the peer-review node only", encoding the bug AND contradicting the
|
|
407
|
+
# four other passages. C10 pins, inside the decision-tree block, that (1) the
|
|
408
|
+
# currency node consults the profile and (2) the "peer-review node only" fossil
|
|
409
|
+
# wording is gone.
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
def test_neg_j_currency_node_not_profile_aware(tmp_path):
|
|
413
|
+
"""(j) strip the currency-node profile branch from the decision tree -> C10
|
|
414
|
+
fails. This is the #327 P2#3 regression: without it, a canonical humanities
|
|
415
|
+
source is re-excluded at the time-range node, violating INVARIANT 5. C10 keys
|
|
416
|
+
on the branch-exclusive 'recency is not a quality signal' rationale (occurs
|
|
417
|
+
once, only in that admit branch), so deleting the branch trips it."""
|
|
418
|
+
repo = _clone_repo(tmp_path)
|
|
419
|
+
_mutate(repo, CONSUMER, "recency is not a quality signal", "REMOVED-PHRASE")
|
|
420
|
+
r = run_lint(repo)
|
|
421
|
+
assert r.returncode != 0 and "C10" in r.stderr
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
def test_neg_j2_peer_review_node_only_fossil(tmp_path):
|
|
425
|
+
"""(j2) reintroduce the "peer-review node only" fossil wording -> C10 fails.
|
|
426
|
+
That phrasing both encodes the bug (profile can't touch the currency node) and
|
|
427
|
+
contradicts the four prose passages that say currency relaxes for humanities.
|
|
428
|
+
The fix reworded it to name the PROFILE_LOOSENABLE gates; this fixture proves
|
|
429
|
+
C10 catches a regression back to the narrow wording."""
|
|
430
|
+
repo = _clone_repo(tmp_path)
|
|
431
|
+
p = repo / CONSUMER
|
|
432
|
+
text = p.read_text(encoding="utf-8")
|
|
433
|
+
block_idx = text.index(DECISION_TREE_HEADING)
|
|
434
|
+
# Inject the fossil phrase into the post-tree prose within the tree block.
|
|
435
|
+
nxt = text.index("\n### ", block_idx + len(DECISION_TREE_HEADING))
|
|
436
|
+
injected = text[:nxt] + "\nThe profile is added at the peer-review node only.\n" + text[nxt:]
|
|
437
|
+
p.write_text(injected, encoding="utf-8")
|
|
438
|
+
r = run_lint(repo)
|
|
439
|
+
assert r.returncode != 0 and "C10" in r.stderr
|