briefloop 0.11.12__py3-none-any.whl

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.
Files changed (424) hide show
  1. briefloop-0.11.12.dist-info/METADATA +473 -0
  2. briefloop-0.11.12.dist-info/RECORD +424 -0
  3. briefloop-0.11.12.dist-info/WHEEL +5 -0
  4. briefloop-0.11.12.dist-info/entry_points.txt +3 -0
  5. briefloop-0.11.12.dist-info/licenses/LICENSE +22 -0
  6. briefloop-0.11.12.dist-info/top_level.txt +1 -0
  7. multi_agent_brief/__init__.py +36 -0
  8. multi_agent_brief/analysis_blocks/__init__.py +11 -0
  9. multi_agent_brief/analysis_blocks/builder.py +206 -0
  10. multi_agent_brief/analysis_blocks/renderer.py +237 -0
  11. multi_agent_brief/analysis_blocks/schemas.py +52 -0
  12. multi_agent_brief/analysis_modules/__init__.py +8 -0
  13. multi_agent_brief/analysis_modules/base.py +87 -0
  14. multi_agent_brief/analysis_modules/market_competitor/__init__.py +68 -0
  15. multi_agent_brief/analysis_modules/market_competitor/auditor.py +290 -0
  16. multi_agent_brief/analysis_modules/market_competitor/config.py +187 -0
  17. multi_agent_brief/analysis_modules/market_competitor/event_builder.py +226 -0
  18. multi_agent_brief/analysis_modules/market_competitor/renderer.py +199 -0
  19. multi_agent_brief/analysis_modules/market_competitor/schemas.py +518 -0
  20. multi_agent_brief/analysis_modules/policy_regulatory/__init__.py +7 -0
  21. multi_agent_brief/analysis_modules/policy_regulatory/audit.py +195 -0
  22. multi_agent_brief/analysis_modules/policy_regulatory/module.py +387 -0
  23. multi_agent_brief/analysis_modules/policy_regulatory/schemas.py +129 -0
  24. multi_agent_brief/analysis_modules/registry.py +73 -0
  25. multi_agent_brief/audience/__init__.py +19 -0
  26. multi_agent_brief/audience/profiles.py +246 -0
  27. multi_agent_brief/audience_memory/__init__.py +23 -0
  28. multi_agent_brief/audience_memory/profile.py +358 -0
  29. multi_agent_brief/audit/__init__.py +36 -0
  30. multi_agent_brief/audit/case_applicability.py +181 -0
  31. multi_agent_brief/audit/deterministic.py +471 -0
  32. multi_agent_brief/audit/editorial_governance.py +404 -0
  33. multi_agent_brief/audit/final_quality.py +764 -0
  34. multi_agent_brief/audit/harness.py +242 -0
  35. multi_agent_brief/audit/interfaces.py +96 -0
  36. multi_agent_brief/audit/limitation_hygiene.py +238 -0
  37. multi_agent_brief/audit/proposal_boundary.py +34 -0
  38. multi_agent_brief/audit/redaction.py +27 -0
  39. multi_agent_brief/audit/rule_packs.py +96 -0
  40. multi_agent_brief/audit/semantic.py +435 -0
  41. multi_agent_brief/capabilities/__init__.py +22 -0
  42. multi_agent_brief/capabilities/catalog.py +215 -0
  43. multi_agent_brief/capabilities/detect.py +199 -0
  44. multi_agent_brief/capabilities/models.py +60 -0
  45. multi_agent_brief/capabilities/recommend.py +206 -0
  46. multi_agent_brief/cli/__init__.py +2 -0
  47. multi_agent_brief/cli/analysis_commands.py +140 -0
  48. multi_agent_brief/cli/approval_commands.py +107 -0
  49. multi_agent_brief/cli/audit_commands.py +59 -0
  50. multi_agent_brief/cli/capability_commands.py +548 -0
  51. multi_agent_brief/cli/claude_commands.py +159 -0
  52. multi_agent_brief/cli/competitors_commands.py +182 -0
  53. multi_agent_brief/cli/controls_commands.py +137 -0
  54. multi_agent_brief/cli/deliver_commands.py +942 -0
  55. multi_agent_brief/cli/eval_cases_commands.py +99 -0
  56. multi_agent_brief/cli/experiments_commands.py +395 -0
  57. multi_agent_brief/cli/feedback_commands.py +192 -0
  58. multi_agent_brief/cli/finalize_commands.py +153 -0
  59. multi_agent_brief/cli/gates_commands.py +174 -0
  60. multi_agent_brief/cli/hermes_commands.py +356 -0
  61. multi_agent_brief/cli/improve_commands.py +224 -0
  62. multi_agent_brief/cli/init_commands.py +564 -0
  63. multi_agent_brief/cli/init_wizard.py +1473 -0
  64. multi_agent_brief/cli/input_commands.py +237 -0
  65. multi_agent_brief/cli/main.py +288 -0
  66. multi_agent_brief/cli/onboard_commands.py +193 -0
  67. multi_agent_brief/cli/product_commands.py +1449 -0
  68. multi_agent_brief/cli/provenance_commands.py +100 -0
  69. multi_agent_brief/cli/release_commands.py +68 -0
  70. multi_agent_brief/cli/repair_commands.py +169 -0
  71. multi_agent_brief/cli/run_commands.py +292 -0
  72. multi_agent_brief/cli/runtime_commands.py +81 -0
  73. multi_agent_brief/cli/secrets_commands.py +232 -0
  74. multi_agent_brief/cli/semantic_support_commands.py +80 -0
  75. multi_agent_brief/cli/sources_commands.py +647 -0
  76. multi_agent_brief/cli/start_commands.py +8 -0
  77. multi_agent_brief/cli/state_commands.py +446 -0
  78. multi_agent_brief/cli/status_commands.py +26 -0
  79. multi_agent_brief/cli/workbuddy_commands.py +103 -0
  80. multi_agent_brief/configs/artifact_contracts.yaml +514 -0
  81. multi_agent_brief/configs/orchestrator_contract.yaml +181 -0
  82. multi_agent_brief/configs/policy_packs/default.yaml +65 -0
  83. multi_agent_brief/configs/policy_profiles/evidence_extract_default.yaml +58 -0
  84. multi_agent_brief/configs/policy_profiles/finance_default.yaml +44 -0
  85. multi_agent_brief/configs/policy_profiles/internet_default.yaml +44 -0
  86. multi_agent_brief/configs/policy_profiles/manufacturing_default.yaml +33 -0
  87. multi_agent_brief/configs/policy_profiles/solar_manufacturing_default.yaml +64 -0
  88. multi_agent_brief/configs/report_packs/evidence_extract.yaml +48 -0
  89. multi_agent_brief/configs/report_packs/management_monthly.yaml +36 -0
  90. multi_agent_brief/configs/report_packs/market_weekly.yaml +36 -0
  91. multi_agent_brief/configs/report_packs/solar_industry_periodic.yaml +50 -0
  92. multi_agent_brief/configs/report_templates/evidence_extract.yaml +55 -0
  93. multi_agent_brief/configs/report_templates/management_monthly.yaml +48 -0
  94. multi_agent_brief/configs/report_templates/market_weekly.yaml +49 -0
  95. multi_agent_brief/configs/report_templates/solar_industry_periodic.yaml +75 -0
  96. multi_agent_brief/configs/stage_specs.yaml +180 -0
  97. multi_agent_brief/contracts/__init__.py +41 -0
  98. multi_agent_brief/contracts/base.py +99 -0
  99. multi_agent_brief/contracts/errors.py +41 -0
  100. multi_agent_brief/contracts/migrations/__init__.py +5 -0
  101. multi_agent_brief/contracts/migrations/claim_v1_to_v2.py +33 -0
  102. multi_agent_brief/contracts/registry.py +159 -0
  103. multi_agent_brief/contracts/role_topology.py +25 -0
  104. multi_agent_brief/contracts/schemas/__init__.py +35 -0
  105. multi_agent_brief/contracts/schemas/analysis_pack.py +135 -0
  106. multi_agent_brief/contracts/schemas/atomic_claim_graph.py +304 -0
  107. multi_agent_brief/contracts/schemas/audit_report.py +80 -0
  108. multi_agent_brief/contracts/schemas/candidate_item.py +51 -0
  109. multi_agent_brief/contracts/schemas/claim.py +197 -0
  110. multi_agent_brief/contracts/schemas/claim_draft.py +386 -0
  111. multi_agent_brief/contracts/schemas/claim_support_matrix.py +334 -0
  112. multi_agent_brief/contracts/schemas/evidence_span_registry.py +270 -0
  113. multi_agent_brief/contracts/schemas/policy_profile.py +247 -0
  114. multi_agent_brief/contracts/schemas/report_spec.py +257 -0
  115. multi_agent_brief/contracts/schemas/semantic_assessment_report.py +480 -0
  116. multi_agent_brief/contracts/schemas/source_evidence_pack_manifest.py +233 -0
  117. multi_agent_brief/contracts/schemas/source_item.py +96 -0
  118. multi_agent_brief/contracts/semantic_assessment_status.py +12 -0
  119. multi_agent_brief/contracts/source_metadata.py +252 -0
  120. multi_agent_brief/contracts/target_contract.py +460 -0
  121. multi_agent_brief/contracts/validator.py +225 -0
  122. multi_agent_brief/controls/__init__.py +23 -0
  123. multi_agent_brief/controls/contract.py +106 -0
  124. multi_agent_brief/controls/switchboard.py +1076 -0
  125. multi_agent_brief/core/__init__.py +2 -0
  126. multi_agent_brief/core/citations.py +14 -0
  127. multi_agent_brief/core/claim_ledger.py +94 -0
  128. multi_agent_brief/core/config.py +191 -0
  129. multi_agent_brief/core/env.py +69 -0
  130. multi_agent_brief/core/previous.py +83 -0
  131. multi_agent_brief/core/schemas.py +181 -0
  132. multi_agent_brief/core/selection.py +189 -0
  133. multi_agent_brief/delivery/__init__.py +6 -0
  134. multi_agent_brief/delivery/base.py +36 -0
  135. multi_agent_brief/delivery/feishu.py +204 -0
  136. multi_agent_brief/delivery/gws.py +237 -0
  137. multi_agent_brief/evaluation_cases/__init__.py +15 -0
  138. multi_agent_brief/evaluation_cases/contract.py +429 -0
  139. multi_agent_brief/evaluation_cases/fixtures/cases/approved_guidance_materialized/workspace/config.yaml +18 -0
  140. multi_agent_brief/evaluation_cases/fixtures/cases/approved_guidance_materialized/workspace/improvement/ledger.jsonl +2 -0
  141. multi_agent_brief/evaluation_cases/fixtures/cases/approved_guidance_materialized/workspace/sources.yaml +2 -0
  142. multi_agent_brief/evaluation_cases/fixtures/cases/approved_guidance_materialized/workspace/user.md +4 -0
  143. multi_agent_brief/evaluation_cases/fixtures/cases/company_event_missing_latest_official_check/workspace/config.yaml +13 -0
  144. multi_agent_brief/evaluation_cases/fixtures/cases/company_event_missing_latest_official_check/workspace/sources.yaml +9 -0
  145. multi_agent_brief/evaluation_cases/fixtures/cases/company_event_missing_latest_official_check/workspace/user.md +4 -0
  146. multi_agent_brief/evaluation_cases/fixtures/cases/control_switchboard_selection_is_not_execution/workspace/config.yaml +12 -0
  147. multi_agent_brief/evaluation_cases/fixtures/cases/control_switchboard_selection_is_not_execution/workspace/sources.yaml +6 -0
  148. multi_agent_brief/evaluation_cases/fixtures/cases/control_switchboard_selection_is_not_execution/workspace/user.md +4 -0
  149. multi_agent_brief/evaluation_cases/fixtures/cases/feedback_triage_required/workspace/config.yaml +6 -0
  150. multi_agent_brief/evaluation_cases/fixtures/cases/feedback_triage_required/workspace/input/human_feedback.md +1 -0
  151. multi_agent_brief/evaluation_cases/fixtures/cases/feedback_triage_required/workspace/sources.yaml +2 -0
  152. multi_agent_brief/evaluation_cases/fixtures/cases/feedback_triage_required/workspace/user.md +3 -0
  153. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/config.yaml +8 -0
  154. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/output/brief.md +14 -0
  155. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/output/intermediate/audit_report.json +1 -0
  156. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/output/intermediate/audited_brief.md +5 -0
  157. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/output/intermediate/candidate_claims.json +1 -0
  158. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/output/intermediate/claim_ledger.json +1 -0
  159. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/output/intermediate/screened_candidates.json +1 -0
  160. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/sources.yaml +2 -0
  161. multi_agent_brief/evaluation_cases/fixtures/cases/final_abstract_quality_warning_surface/workspace/user.md +3 -0
  162. multi_agent_brief/evaluation_cases/fixtures/cases/formal_release_missing_human_approval/workspace/config.yaml +13 -0
  163. multi_agent_brief/evaluation_cases/fixtures/cases/formal_release_missing_human_approval/workspace/sources.yaml +9 -0
  164. multi_agent_brief/evaluation_cases/fixtures/cases/formal_release_missing_human_approval/workspace/user.md +4 -0
  165. multi_agent_brief/evaluation_cases/fixtures/cases/guidance_manifestation_not_observable/workspace/config.yaml +4 -0
  166. multi_agent_brief/evaluation_cases/fixtures/cases/guidance_manifestation_not_observable/workspace/sources.yaml +2 -0
  167. multi_agent_brief/evaluation_cases/fixtures/cases/guidance_manifestation_not_observable/workspace/user.md +3 -0
  168. multi_agent_brief/evaluation_cases/fixtures/cases/media_only_legal_policy_blocks_research_review/workspace/config.yaml +13 -0
  169. multi_agent_brief/evaluation_cases/fixtures/cases/media_only_legal_policy_blocks_research_review/workspace/sources.yaml +9 -0
  170. multi_agent_brief/evaluation_cases/fixtures/cases/media_only_legal_policy_blocks_research_review/workspace/user.md +4 -0
  171. multi_agent_brief/evaluation_cases/fixtures/cases/mixed_metric_scope_support_blocker/workspace/config.yaml +13 -0
  172. multi_agent_brief/evaluation_cases/fixtures/cases/mixed_metric_scope_support_blocker/workspace/sources.yaml +9 -0
  173. multi_agent_brief/evaluation_cases/fixtures/cases/mixed_metric_scope_support_blocker/workspace/user.md +5 -0
  174. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/config.yaml +6 -0
  175. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/output/intermediate/audited_brief.md +3 -0
  176. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/output/intermediate/candidate_claims.json +1 -0
  177. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/output/intermediate/claim_ledger.json +1 -0
  178. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/output/intermediate/feedback_issues.json +25 -0
  179. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/output/intermediate/repair_plan.json +27 -0
  180. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/output/intermediate/screened_candidates.json +1 -0
  181. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/sources.yaml +2 -0
  182. multi_agent_brief/evaluation_cases/fixtures/cases/planned_blocking_issue_cannot_continue/workspace/user.md +3 -0
  183. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/config.yaml +8 -0
  184. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/output/intermediate/audit_report.json +1 -0
  185. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/output/intermediate/audited_brief.md +3 -0
  186. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/output/intermediate/candidate_claims.json +1 -0
  187. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/output/intermediate/claim_ledger.json +11 -0
  188. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/output/intermediate/quality_gate_report.json +22 -0
  189. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/output/intermediate/screened_candidates.json +1 -0
  190. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/sources.yaml +2 -0
  191. multi_agent_brief/evaluation_cases/fixtures/cases/provenance_projection_minimal/workspace/user.md +3 -0
  192. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_source_appendix/workspace/config.yaml +13 -0
  193. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_source_appendix/workspace/output/intermediate/audit_report.json +1 -0
  194. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_source_appendix/workspace/output/intermediate/audited_brief.md +5 -0
  195. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_source_appendix/workspace/output/intermediate/candidate_claims.json +1 -0
  196. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_source_appendix/workspace/output/intermediate/claim_ledger.json +40 -0
  197. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_source_appendix/workspace/output/intermediate/screened_candidates.json +1 -0
  198. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_source_appendix/workspace/sources.yaml +3 -0
  199. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_source_appendix/workspace/user.md +3 -0
  200. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/config.yaml +8 -0
  201. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/output/brief.md +3 -0
  202. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/output/intermediate/audit_report.json +1 -0
  203. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/output/intermediate/audited_brief.md +3 -0
  204. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/output/intermediate/candidate_claims.json +1 -0
  205. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/output/intermediate/claim_ledger.json +13 -0
  206. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/output/intermediate/screened_candidates.json +1 -0
  207. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/sources.yaml +2 -0
  208. multi_agent_brief/evaluation_cases/fixtures/cases/reader_facing_target_relevance/workspace/user.md +3 -0
  209. multi_agent_brief/evaluation_cases/fixtures/cases/release_readiness_forged_event_blocker/workspace/config.yaml +13 -0
  210. multi_agent_brief/evaluation_cases/fixtures/cases/release_readiness_forged_event_blocker/workspace/output/intermediate/release_readiness_report.json +31 -0
  211. multi_agent_brief/evaluation_cases/fixtures/cases/release_readiness_forged_event_blocker/workspace/sources.yaml +9 -0
  212. multi_agent_brief/evaluation_cases/fixtures/cases/release_readiness_forged_event_blocker/workspace/user.md +4 -0
  213. multi_agent_brief/evaluation_cases/fixtures/cases/reverted_entry_removed_from_next_snapshot/workspace/config.yaml +18 -0
  214. multi_agent_brief/evaluation_cases/fixtures/cases/reverted_entry_removed_from_next_snapshot/workspace/improvement/ledger.jsonl +3 -0
  215. multi_agent_brief/evaluation_cases/fixtures/cases/reverted_entry_removed_from_next_snapshot/workspace/improvement/memory.md +3 -0
  216. multi_agent_brief/evaluation_cases/fixtures/cases/reverted_entry_removed_from_next_snapshot/workspace/output/intermediate/improvement_memory_snapshot.md +3 -0
  217. multi_agent_brief/evaluation_cases/fixtures/cases/reverted_entry_removed_from_next_snapshot/workspace/sources.yaml +2 -0
  218. multi_agent_brief/evaluation_cases/fixtures/cases/reverted_entry_removed_from_next_snapshot/workspace/user.md +4 -0
  219. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/config.yaml +12 -0
  220. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/input/sources/source-001.txt +1 -0
  221. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/brief.md +37 -0
  222. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/delivery/brief.md +37 -0
  223. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/atomic_claim_graph.json +17 -0
  224. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/audit_report.json +5 -0
  225. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/audited_brief.md +37 -0
  226. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/claim_ledger.json +20 -0
  227. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/evidence_span_registry.json +20 -0
  228. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/finalize_report.json +40 -0
  229. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/gates/auditor_quality_gate_report.json +42 -0
  230. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/gates/finalize_quality_gate_report.json +42 -0
  231. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/intermediate/screened_candidates.json +33 -0
  232. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/source_appendix.md +12 -0
  233. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/output/source_appendix_trace.md +10 -0
  234. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/report_spec.yaml +24 -0
  235. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/sources.yaml +4 -0
  236. multi_agent_brief/evaluation_cases/fixtures/cases/same_evidence_reader_quality_regression/workspace/user.md +3 -0
  237. multi_agent_brief/evaluation_cases/fixtures/cases/source_evidence_pack_blocks_non_evidence_file/workspace/config.yaml +13 -0
  238. multi_agent_brief/evaluation_cases/fixtures/cases/source_evidence_pack_blocks_non_evidence_file/workspace/input/sources/README.md +4 -0
  239. multi_agent_brief/evaluation_cases/fixtures/cases/source_evidence_pack_blocks_non_evidence_file/workspace/output/intermediate/source_evidence_pack_manifest.json +26 -0
  240. multi_agent_brief/evaluation_cases/fixtures/cases/source_evidence_pack_blocks_non_evidence_file/workspace/sources.yaml +9 -0
  241. multi_agent_brief/evaluation_cases/fixtures/cases/source_evidence_pack_blocks_non_evidence_file/workspace/user.md +4 -0
  242. multi_agent_brief/evaluation_cases/fixtures/cases/stale_current_claim/workspace/config.yaml +9 -0
  243. multi_agent_brief/evaluation_cases/fixtures/cases/stale_current_claim/workspace/output/intermediate/audit_report.json +1 -0
  244. multi_agent_brief/evaluation_cases/fixtures/cases/stale_current_claim/workspace/output/intermediate/audited_brief.md +3 -0
  245. multi_agent_brief/evaluation_cases/fixtures/cases/stale_current_claim/workspace/output/intermediate/candidate_claims.json +1 -0
  246. multi_agent_brief/evaluation_cases/fixtures/cases/stale_current_claim/workspace/output/intermediate/claim_ledger.json +13 -0
  247. multi_agent_brief/evaluation_cases/fixtures/cases/stale_current_claim/workspace/output/intermediate/screened_candidates.json +1 -0
  248. multi_agent_brief/evaluation_cases/fixtures/cases/stale_current_claim/workspace/sources.yaml +2 -0
  249. multi_agent_brief/evaluation_cases/fixtures/cases/stale_current_claim/workspace/user.md +3 -0
  250. multi_agent_brief/evaluation_cases/fixtures/cases/third_party_price_snapshot_formal_block/workspace/config.yaml +13 -0
  251. multi_agent_brief/evaluation_cases/fixtures/cases/third_party_price_snapshot_formal_block/workspace/sources.yaml +9 -0
  252. multi_agent_brief/evaluation_cases/fixtures/cases/third_party_price_snapshot_formal_block/workspace/user.md +4 -0
  253. multi_agent_brief/evaluation_cases/fixtures/cases/trajectory_retry_budget_exhausted/workspace/config.yaml +4 -0
  254. multi_agent_brief/evaluation_cases/fixtures/cases/trajectory_retry_budget_exhausted/workspace/sources.yaml +2 -0
  255. multi_agent_brief/evaluation_cases/fixtures/cases/trajectory_retry_budget_exhausted/workspace/user.md +3 -0
  256. multi_agent_brief/evaluation_cases/fixtures/cases/unapproved_entry_not_materialized/workspace/config.yaml +18 -0
  257. multi_agent_brief/evaluation_cases/fixtures/cases/unapproved_entry_not_materialized/workspace/improvement/ledger.jsonl +1 -0
  258. multi_agent_brief/evaluation_cases/fixtures/cases/unapproved_entry_not_materialized/workspace/sources.yaml +2 -0
  259. multi_agent_brief/evaluation_cases/fixtures/cases/unapproved_entry_not_materialized/workspace/user.md +4 -0
  260. multi_agent_brief/evaluation_cases/fixtures/cases/unauthorized_institution_branding_blocks_release/workspace/config.yaml +18 -0
  261. multi_agent_brief/evaluation_cases/fixtures/cases/unauthorized_institution_branding_blocks_release/workspace/sources.yaml +9 -0
  262. multi_agent_brief/evaluation_cases/fixtures/cases/unauthorized_institution_branding_blocks_release/workspace/user.md +5 -0
  263. multi_agent_brief/evaluation_cases/fixtures/cases/unsupported_material_fact/workspace/config.yaml +8 -0
  264. multi_agent_brief/evaluation_cases/fixtures/cases/unsupported_material_fact/workspace/output/intermediate/audit_report.json +1 -0
  265. multi_agent_brief/evaluation_cases/fixtures/cases/unsupported_material_fact/workspace/output/intermediate/audited_brief.md +8 -0
  266. multi_agent_brief/evaluation_cases/fixtures/cases/unsupported_material_fact/workspace/output/intermediate/candidate_claims.json +1 -0
  267. multi_agent_brief/evaluation_cases/fixtures/cases/unsupported_material_fact/workspace/output/intermediate/claim_ledger.json +1 -0
  268. multi_agent_brief/evaluation_cases/fixtures/cases/unsupported_material_fact/workspace/output/intermediate/screened_candidates.json +1 -0
  269. multi_agent_brief/evaluation_cases/fixtures/cases/unsupported_material_fact/workspace/sources.yaml +2 -0
  270. multi_agent_brief/evaluation_cases/fixtures/cases/unsupported_material_fact/workspace/user.md +3 -0
  271. multi_agent_brief/evaluation_cases/fixtures/manifest.yaml +861 -0
  272. multi_agent_brief/evaluation_cases/fixtures.py +20 -0
  273. multi_agent_brief/evaluation_cases/runner.py +1603 -0
  274. multi_agent_brief/experiments/__init__.py +45 -0
  275. multi_agent_brief/experiments/experiment_080.py +5835 -0
  276. multi_agent_brief/experiments/schemas.py +63 -0
  277. multi_agent_brief/experiments/target_contract.py +10 -0
  278. multi_agent_brief/feedback/__init__.py +17 -0
  279. multi_agent_brief/feedback/feedback_contract.py +482 -0
  280. multi_agent_brief/feedback/feedback_state.py +898 -0
  281. multi_agent_brief/hermes/__init__.py +25 -0
  282. multi_agent_brief/hermes/adapter.py +832 -0
  283. multi_agent_brief/improvement/__init__.py +83 -0
  284. multi_agent_brief/improvement/contract.py +1114 -0
  285. multi_agent_brief/improvement/memory.py +451 -0
  286. multi_agent_brief/improvement/product_definition.py +228 -0
  287. multi_agent_brief/improvement/state.py +961 -0
  288. multi_agent_brief/inputs/__init__.py +2 -0
  289. multi_agent_brief/inputs/classifier.py +322 -0
  290. multi_agent_brief/inputs/contracts.py +59 -0
  291. multi_agent_brief/inputs/extractor.py +310 -0
  292. multi_agent_brief/install/__init__.py +2 -0
  293. multi_agent_brief/install/writer.py +97 -0
  294. multi_agent_brief/onboarding/__init__.py +11 -0
  295. multi_agent_brief/onboarding/io.py +103 -0
  296. multi_agent_brief/onboarding/mapper.py +484 -0
  297. multi_agent_brief/onboarding/schema.py +46 -0
  298. multi_agent_brief/orchestrator/__init__.py +2 -0
  299. multi_agent_brief/orchestrator/fact_layer_import.py +352 -0
  300. multi_agent_brief/orchestrator/handoff.py +2209 -0
  301. multi_agent_brief/orchestrator/role_topology.py +42 -0
  302. multi_agent_brief/orchestrator/run_archive.py +888 -0
  303. multi_agent_brief/orchestrator/run_integrity.py +346 -0
  304. multi_agent_brief/orchestrator/runtime_state/__init__.py +70 -0
  305. multi_agent_brief/orchestrator/runtime_state/_io.py +167 -0
  306. multi_agent_brief/orchestrator/runtime_state/_transactions.py +298 -0
  307. multi_agent_brief/orchestrator/runtime_state/artifact_registry.py +1825 -0
  308. multi_agent_brief/orchestrator/runtime_state/atomic_claim_graph.py +96 -0
  309. multi_agent_brief/orchestrator/runtime_state/claim_ledger_freeze.py +510 -0
  310. multi_agent_brief/orchestrator/runtime_state/claim_metadata_enrichment.py +836 -0
  311. multi_agent_brief/orchestrator/runtime_state/claim_support_matrix.py +582 -0
  312. multi_agent_brief/orchestrator/runtime_state/completion_gates.py +672 -0
  313. multi_agent_brief/orchestrator/runtime_state/contracts_loader.py +66 -0
  314. multi_agent_brief/orchestrator/runtime_state/decisions.py +239 -0
  315. multi_agent_brief/orchestrator/runtime_state/errors.py +61 -0
  316. multi_agent_brief/orchestrator/runtime_state/event_log.py +256 -0
  317. multi_agent_brief/orchestrator/runtime_state/evidence_span_registry.py +233 -0
  318. multi_agent_brief/orchestrator/runtime_state/fact_layer.py +755 -0
  319. multi_agent_brief/orchestrator/runtime_state/identity.py +90 -0
  320. multi_agent_brief/orchestrator/runtime_state/lifecycle.py +675 -0
  321. multi_agent_brief/orchestrator/runtime_state/manifest.py +82 -0
  322. multi_agent_brief/orchestrator/runtime_state/operations.py +224 -0
  323. multi_agent_brief/orchestrator/runtime_state/paths.py +38 -0
  324. multi_agent_brief/orchestrator/runtime_state/repair.py +984 -0
  325. multi_agent_brief/orchestrator/runtime_state/safety_surfaces.py +147 -0
  326. multi_agent_brief/orchestrator/runtime_state/semantic_assessment_report.py +692 -0
  327. multi_agent_brief/orchestrator/runtime_state/semantic_support_acceptance.py +683 -0
  328. multi_agent_brief/orchestrator/runtime_state/source_evidence_pack.py +131 -0
  329. multi_agent_brief/orchestrator/runtime_state/stage_completion.py +1320 -0
  330. multi_agent_brief/orchestrator/runtime_state/trajectory.py +200 -0
  331. multi_agent_brief/orchestrator/runtime_state/workflow.py +350 -0
  332. multi_agent_brief/orchestrator/source_evidence.py +43 -0
  333. multi_agent_brief/orchestrator/timing.py +410 -0
  334. multi_agent_brief/orchestrator_contract.py +96 -0
  335. multi_agent_brief/outputs/__init__.py +2 -0
  336. multi_agent_brief/outputs/atomic_reader_projection.py +288 -0
  337. multi_agent_brief/outputs/docx.py +32 -0
  338. multi_agent_brief/outputs/finalize.py +1036 -0
  339. multi_agent_brief/outputs/ib_docx.py +983 -0
  340. multi_agent_brief/outputs/naming.py +38 -0
  341. multi_agent_brief/outputs/pdf.py +20 -0
  342. multi_agent_brief/outputs/reader_final_gate.py +509 -0
  343. multi_agent_brief/outputs/reader_projection.py +397 -0
  344. multi_agent_brief/outputs/source_appendix.py +753 -0
  345. multi_agent_brief/outputs/templates/__init__.py +112 -0
  346. multi_agent_brief/product/__init__.py +49 -0
  347. multi_agent_brief/product/bundle_projection.py +686 -0
  348. multi_agent_brief/product/citation_profile.py +145 -0
  349. multi_agent_brief/product/guidance_manifestation.py +421 -0
  350. multi_agent_brief/product/materiality_selection.py +472 -0
  351. multi_agent_brief/product/policy_gate_adapter.py +116 -0
  352. multi_agent_brief/product/policy_profile.py +39 -0
  353. multi_agent_brief/product/policy_projection.py +161 -0
  354. multi_agent_brief/product/policy_registry.py +83 -0
  355. multi_agent_brief/product/policy_resolver.py +225 -0
  356. multi_agent_brief/product/quality_closeout.py +188 -0
  357. multi_agent_brief/product/quality_panel.py +2217 -0
  358. multi_agent_brief/product/release_approval.py +1034 -0
  359. multi_agent_brief/product/report_pack.py +130 -0
  360. multi_agent_brief/product/report_pack_aliases.py +68 -0
  361. multi_agent_brief/product/report_registry.py +101 -0
  362. multi_agent_brief/product/report_spec.py +181 -0
  363. multi_agent_brief/product/support_wording.py +525 -0
  364. multi_agent_brief/product/template_conformance.py +516 -0
  365. multi_agent_brief/product/template_projection.py +123 -0
  366. multi_agent_brief/product/template_registry.py +244 -0
  367. multi_agent_brief/product/template_render_plan.py +315 -0
  368. multi_agent_brief/product/template_renderer.py +224 -0
  369. multi_agent_brief/product/trajectory_regulation.py +441 -0
  370. multi_agent_brief/provenance/__init__.py +5 -0
  371. multi_agent_brief/provenance/builder.py +841 -0
  372. multi_agent_brief/provenance/contract.py +21 -0
  373. multi_agent_brief/provenance/io.py +144 -0
  374. multi_agent_brief/provenance/model.py +110 -0
  375. multi_agent_brief/provenance/references.py +43 -0
  376. multi_agent_brief/provenance/validator.py +135 -0
  377. multi_agent_brief/quality_gates/__init__.py +19 -0
  378. multi_agent_brief/quality_gates/contract.py +581 -0
  379. multi_agent_brief/quality_gates/state.py +2498 -0
  380. multi_agent_brief/repair/__init__.py +5 -0
  381. multi_agent_brief/repair/router.py +842 -0
  382. multi_agent_brief/runtime_assets.py +431 -0
  383. multi_agent_brief/sources/__init__.py +16 -0
  384. multi_agent_brief/sources/api_filings.py +236 -0
  385. multi_agent_brief/sources/api_news.py +174 -0
  386. multi_agent_brief/sources/base.py +142 -0
  387. multi_agent_brief/sources/cached_package.py +119 -0
  388. multi_agent_brief/sources/cli_provider.py +263 -0
  389. multi_agent_brief/sources/coverage.py +336 -0
  390. multi_agent_brief/sources/decider.py +756 -0
  391. multi_agent_brief/sources/doctor.py +373 -0
  392. multi_agent_brief/sources/evidence_pack.py +364 -0
  393. multi_agent_brief/sources/feishu_provider.py +326 -0
  394. multi_agent_brief/sources/filing_resolver.py +400 -0
  395. multi_agent_brief/sources/industry_packs.py +130 -0
  396. multi_agent_brief/sources/join.py +206 -0
  397. multi_agent_brief/sources/local_signal.py +81 -0
  398. multi_agent_brief/sources/local_signal_planner.py +636 -0
  399. multi_agent_brief/sources/manual.py +259 -0
  400. multi_agent_brief/sources/mcp_provider.py +309 -0
  401. multi_agent_brief/sources/mineru_provider.py +601 -0
  402. multi_agent_brief/sources/normalizer.py +95 -0
  403. multi_agent_brief/sources/opencli_provider.py +282 -0
  404. multi_agent_brief/sources/planner.py +178 -0
  405. multi_agent_brief/sources/registry.py +367 -0
  406. multi_agent_brief/sources/rss.py +190 -0
  407. multi_agent_brief/sources/search_backends/__init__.py +31 -0
  408. multi_agent_brief/sources/search_backends/base.py +51 -0
  409. multi_agent_brief/sources/search_backends/brave.py +192 -0
  410. multi_agent_brief/sources/search_backends/capabilities.py +94 -0
  411. multi_agent_brief/sources/search_backends/exa.py +180 -0
  412. multi_agent_brief/sources/search_backends/firecrawl.py +164 -0
  413. multi_agent_brief/sources/search_backends/serper.py +241 -0
  414. multi_agent_brief/sources/search_backends/tavily.py +124 -0
  415. multi_agent_brief/sources/sourcehub.py +505 -0
  416. multi_agent_brief/sources/web_search.py +267 -0
  417. multi_agent_brief/status.py +966 -0
  418. multi_agent_brief/tools/__init__.py +3 -0
  419. multi_agent_brief/tools/draft_cleanup.py +198 -0
  420. multi_agent_brief/workbuddy/__init__.py +1 -0
  421. multi_agent_brief/workbuddy/diagnose.py +569 -0
  422. multi_agent_brief/workbuddy/skill_pack.py +309 -0
  423. multi_agent_brief/workspace/__init__.py +1 -0
  424. multi_agent_brief/workspace/init_profile.py +45 -0
@@ -0,0 +1,861 @@
1
+ schema_version: multi-agent-brief-evaluation-cases/v1
2
+ synthetic: true
3
+ public_url_allowlist:
4
+ - example.com
5
+ cases:
6
+ - case_id: unsupported_material_fact
7
+ case_type: workspace
8
+ synthetic: true
9
+ description: Unsupported material number blocks the auditor gate.
10
+ initial_stage: auditor
11
+ commands:
12
+ - action: gates.check
13
+ args: {}
14
+ - action: state.check
15
+ args: {}
16
+ expected:
17
+ exit_code: 0
18
+ artifacts_exist:
19
+ - output/intermediate/quality_gate_report.json
20
+ findings_any:
21
+ - finding_type: number_without_source
22
+ blocking_level: blocking
23
+ gate_stage_id: auditor
24
+ workflow_state:
25
+ current_stage: auditor
26
+ blocked: true
27
+
28
+ - case_id: stale_current_claim
29
+ case_type: workspace
30
+ synthetic: true
31
+ description: Stale current-source metadata is deterministic and blocking in strict mode.
32
+ initial_stage: auditor
33
+ commands:
34
+ - action: gates.check
35
+ args:
36
+ report_date: "2026-06-08"
37
+ max_source_age_days: 14
38
+ strict: true
39
+ - action: state.check
40
+ args: {}
41
+ expected:
42
+ exit_code: 0
43
+ artifacts_exist:
44
+ - output/intermediate/quality_gate_report.json
45
+ findings_any:
46
+ - finding_type: stale_source
47
+ blocking_level: blocking
48
+ gate_stage_id: auditor
49
+ workflow_state:
50
+ current_stage: auditor
51
+ blocked: true
52
+
53
+ - case_id: reader_facing_target_relevance
54
+ case_type: workspace
55
+ synthetic: true
56
+ description: Reader-facing brief gates target relevance without requiring internal source refs.
57
+ initial_stage: finalize
58
+ commands:
59
+ - action: gates.check
60
+ args:
61
+ brief: output/brief.md
62
+ - action: state.check
63
+ args: {}
64
+ expected:
65
+ exit_code: 0
66
+ artifacts_exist:
67
+ - output/intermediate/quality_gate_report.json
68
+ findings_any:
69
+ - finding_type: target_relevance_gap
70
+ blocking_level: blocking
71
+ gate_stage_id: finalize
72
+ findings_absent:
73
+ - finding_type: target_priority_claim_missing_from_summary
74
+ - finding_type: number_without_source
75
+ workflow_state:
76
+ current_stage: finalize
77
+ blocked: true
78
+
79
+ - case_id: feedback_triage_required
80
+ case_type: workspace
81
+ synthetic: true
82
+ description: Human feedback without mappings becomes triage instead of guessed repair.
83
+ initial_stage: doctor
84
+ commands:
85
+ - action: feedback.ingest
86
+ args:
87
+ feedback: input/human_feedback.md
88
+ source: human
89
+ - action: feedback.validate
90
+ args: {}
91
+ expected:
92
+ exit_code: 0
93
+ artifacts_exist:
94
+ - output/intermediate/feedback_issues.json
95
+ issues_any:
96
+ - source: human
97
+ status: triage
98
+ severity: medium
99
+ workflow_state:
100
+ current_stage: doctor
101
+ blocked: false
102
+
103
+ - case_id: planned_blocking_issue_cannot_continue
104
+ case_type: workspace
105
+ synthetic: true
106
+ description: A planned blocking issue cannot be bypassed by state stage-complete.
107
+ initial_stage: analyst
108
+ commands:
109
+ - action: state.check
110
+ args: {}
111
+ - action: state.stage_complete
112
+ args:
113
+ stage: analyst
114
+ reason: Evaluation attempts to bypass planned blocking issue.
115
+ expected:
116
+ exit_code: 1
117
+ expected_actions:
118
+ - action: state.check
119
+ exit_code: 0
120
+ - action: state.stage_complete
121
+ exit_code: 1
122
+ error_contains: unresolved blocking feedback issues
123
+ artifacts_exist:
124
+ - output/intermediate/feedback_issues.json
125
+ - output/intermediate/repair_plan.json
126
+ workflow_state:
127
+ current_stage: analyst
128
+ blocked: true
129
+
130
+ - case_id: provenance_projection_minimal
131
+ case_type: workspace
132
+ synthetic: true
133
+ description: Provenance projection connects runtime, claims, draft refs, decisions, and gate findings.
134
+ initial_stage: auditor
135
+ commands:
136
+ - action: state.check
137
+ args: {}
138
+ - action: provenance.build
139
+ args: {}
140
+ - action: provenance.validate
141
+ args: {}
142
+ expected:
143
+ exit_code: 0
144
+ expected_actions:
145
+ - action: state.check
146
+ exit_code: 0
147
+ - action: provenance.build
148
+ exit_code: 0
149
+ - action: provenance.validate
150
+ exit_code: 0
151
+ artifacts_exist:
152
+ - output/intermediate/provenance_graph.json
153
+ graph_edges_any:
154
+ - type: claim_cites_source
155
+ - type: claim_recorded_in_artifact
156
+ - type: artifact_references_claim
157
+ - type: decision_applies_to_stage
158
+ - type: gate_finding_targets_stage
159
+ graph_absent_text:
160
+ - Full synthetic evidence text must stay out of provenance.
161
+
162
+ - case_id: control_switchboard_selection_is_not_execution
163
+ case_type: workspace
164
+ synthetic: true
165
+ description: Control selection records Orchestrator intent but does not execute the selected control.
166
+ initial_stage: doctor
167
+ commands:
168
+ - action: controls.build_switchboard
169
+ args: {}
170
+ - action: controls.select
171
+ args:
172
+ control: quality_gates
173
+ selection: enable
174
+ reason: Evaluation selects quality gates without executing them.
175
+ - action: state.check
176
+ args: {}
177
+ expected:
178
+ exit_code: 0
179
+ expected_actions:
180
+ - action: controls.build_switchboard
181
+ exit_code: 0
182
+ - action: controls.select
183
+ exit_code: 0
184
+ - action: state.check
185
+ exit_code: 0
186
+ artifacts_exist:
187
+ - output/intermediate/orchestrator_control_switchboard.json
188
+ - output/intermediate/control_selections.json
189
+ artifacts_absent:
190
+ - output/intermediate/quality_gate_report.json
191
+ workflow_state:
192
+ current_stage: doctor
193
+ blocked: false
194
+
195
+ - case_id: reader_facing_source_appendix
196
+ case_type: workspace
197
+ synthetic: true
198
+ description: Finalize writes a reader-facing source appendix for cited claims without leaking internal IDs.
199
+ initial_stage: finalize
200
+ commands:
201
+ - action: finalize
202
+ args: {}
203
+ expected:
204
+ exit_code: 0
205
+ expected_actions:
206
+ - action: finalize
207
+ exit_code: 0
208
+ artifacts_exist:
209
+ - output/delivery/brief.md
210
+ - output/source_appendix.md
211
+ - output/intermediate/finalize_report.json
212
+ contains_text:
213
+ - scope: workspace
214
+ file: output/delivery/brief.md
215
+ text: "Source Appendix"
216
+ - scope: workspace
217
+ file: output/source_appendix.md
218
+ text: "[S1] ExampleCo Opens Demo Facility"
219
+ - scope: workspace
220
+ file: output/source_appendix.md
221
+ text: "[S2] ExampleCo Q1 Results"
222
+ absent_text:
223
+ - scope: workspace
224
+ file: output/delivery/brief.md
225
+ text: "[src:"
226
+ - scope: workspace
227
+ file: output/source_appendix.md
228
+ text: "SYN_CLAIM_"
229
+ - scope: workspace
230
+ file: output/source_appendix.md
231
+ text: "SYN_SRC_"
232
+ - scope: workspace
233
+ file: output/source_appendix.md
234
+ text: "Full synthetic evidence text"
235
+ - scope: workspace
236
+ file: output/source_appendix.md
237
+ text: "Unused Source"
238
+
239
+ - case_id: final_abstract_quality_warning_surface
240
+ case_type: workspace
241
+ synthetic: true
242
+ description: Final reader quality risks are warning-only diagnostics surfaced through Quality Panel.
243
+ initial_stage: finalize
244
+ commands:
245
+ - action: gates.check
246
+ args:
247
+ stage: finalize
248
+ brief: output/brief.md
249
+ strict: true
250
+ - action: state.check
251
+ args: {}
252
+ - action: quality.summarize
253
+ args: {}
254
+ expected:
255
+ exit_code: 0
256
+ expected_actions:
257
+ - action: gates.check
258
+ exit_code: 0
259
+ - action: state.check
260
+ exit_code: 0
261
+ - action: quality.summarize
262
+ exit_code: 0
263
+ artifacts_exist:
264
+ - output/intermediate/gates/finalize_quality_gate_report.json
265
+ - output/intermediate/quality_panel.json
266
+ - output/intermediate/quality_summary.md
267
+ - output/intermediate/quality_panel.html
268
+ artifact_statuses:
269
+ - artifact_id: finalize_quality_gate_report
270
+ status: valid
271
+ findings_any:
272
+ - gate_id: final_abstract_quality
273
+ finding_type: final_scope_title_mismatch
274
+ blocking_level: warning
275
+ gate_stage_id: finalize
276
+ - gate_id: final_abstract_quality
277
+ finding_type: final_missing_comparison_basis
278
+ blocking_level: warning
279
+ gate_stage_id: finalize
280
+ - gate_id: final_abstract_quality
281
+ finding_type: final_missing_limitation_section
282
+ blocking_level: warning
283
+ gate_stage_id: finalize
284
+ - gate_id: final_abstract_quality
285
+ finding_type: final_incomplete_key_case_fields
286
+ blocking_level: warning
287
+ gate_stage_id: finalize
288
+ - gate_id: final_abstract_quality
289
+ finding_type: final_unsupported_superlative
290
+ blocking_level: warning
291
+ gate_stage_id: finalize
292
+ findings_absent:
293
+ - gate_id: final_abstract_quality
294
+ blocking_level: blocking
295
+ - gate_id: final_abstract_quality
296
+ repair_owner: editor
297
+ contains_text:
298
+ - scope: workspace
299
+ file: output/intermediate/quality_summary.md
300
+ text: "Quality gates report `5` warning finding(s)."
301
+ absent_text:
302
+ - scope: workspace
303
+ file: output/brief.md
304
+ text: "Add a limitations/scope/assumptions section"
305
+ - scope: workspace
306
+ file: output/brief.md
307
+ text: "downgrade the wording"
308
+ - scope: workspace
309
+ file: output/brief.md
310
+ text: "repair route"
311
+ workflow_state:
312
+ current_stage: finalize
313
+ blocked: false
314
+
315
+ - case_id: static_hermes_no_skip_finalize
316
+ case_type: static_contract
317
+ synthetic: true
318
+ description: Hermes guidance keeps gates and state decisions before finalize.
319
+ commands:
320
+ - action: static.hermes_no_skip_finalize
321
+ args: {}
322
+ expected:
323
+ exit_code: 0
324
+
325
+ - case_id: source_evidence_pack_blocks_non_evidence_file
326
+ case_type: workspace
327
+ synthetic: true
328
+ description: Durable source evidence pack manifests reject placeholder files as evidence.
329
+ initial_stage: scout
330
+ commands:
331
+ - action: state.check
332
+ args: {}
333
+ expected:
334
+ exit_code: 0
335
+ artifact_statuses:
336
+ - artifact_id: source_evidence_pack_manifest
337
+ status: invalid
338
+ validation_result: source_evidence_pack_manifest_validation_error:source_file_not_evidence:SYN_SRC_001
339
+
340
+ - case_id: release_readiness_forged_event_blocker
341
+ case_type: workspace
342
+ synthetic: true
343
+ description: Release readiness reports with forged event ids stay invalid.
344
+ initial_stage: finalize
345
+ commands:
346
+ - action: state.check
347
+ args: {}
348
+ expected:
349
+ exit_code: 0
350
+ artifact_statuses:
351
+ - artifact_id: release_readiness_report
352
+ status: invalid
353
+ validation_result: release_readiness_report_event_link_error:event_missing
354
+
355
+ - case_id: unauthorized_institution_branding_blocks_release
356
+ case_type: workspace
357
+ synthetic: true
358
+ description: Unauthorized synthetic institution branding blocks release readiness without authorizing public release.
359
+ initial_stage: finalize
360
+ commands:
361
+ - action: release.check
362
+ continue_on_failure: true
363
+ args:
364
+ mode: internal_draft
365
+ - action: state.check
366
+ args: {}
367
+ expected:
368
+ exit_code: 0
369
+ expected_actions:
370
+ - action: release.check
371
+ exit_code: 1
372
+ result_contains:
373
+ release_readiness:
374
+ status: blocked
375
+ blockers:
376
+ - institution_branding_not_authorized:unauthorized
377
+ branding_context:
378
+ status: blocked
379
+ institution_use_authorization: unauthorized
380
+ authorization: not_authorized_for_public_release
381
+ - action: state.check
382
+ exit_code: 0
383
+ artifact_statuses:
384
+ - artifact_id: release_readiness_report
385
+ status: valid
386
+ validation_result_contains: experimental_release_readiness_report
387
+
388
+ - case_id: mixed_metric_scope_support_blocker
389
+ case_type: workspace
390
+ synthetic: true
391
+ description: Mixed metric scopes are represented as explicit insufficient-evidence support records.
392
+ initial_stage: auditor
393
+ commands:
394
+ - action: synthetic.seed_claim_support_case
395
+ args:
396
+ scenario: mixed_metric_scope
397
+ - action: gates.check
398
+ args: {}
399
+ - action: state.check
400
+ args: {}
401
+ expected:
402
+ exit_code: 0
403
+ expected_actions:
404
+ - action: synthetic.seed_claim_support_case
405
+ exit_code: 0
406
+ - action: gates.check
407
+ exit_code: 0
408
+ - action: state.check
409
+ exit_code: 0
410
+ artifacts_exist:
411
+ - output/intermediate/claim_support_matrix.json
412
+ - output/intermediate/quality_gate_report.json
413
+ findings_any:
414
+ - finding_type: claim_support_matrix_blocking_support
415
+ blocking_level: blocking
416
+ gate_stage_id: auditor
417
+ contains_text:
418
+ - scope: workspace
419
+ file: output/intermediate/claim_support_matrix.json
420
+ text: metric_scope_conflict
421
+ workflow_state:
422
+ current_stage: auditor
423
+ blocked: true
424
+
425
+ - case_id: media_only_legal_policy_blocks_research_review
426
+ case_type: workspace
427
+ synthetic: true
428
+ description: Media-only legal or policy claims are represented as unsupported official-source-missing records.
429
+ initial_stage: auditor
430
+ commands:
431
+ - action: synthetic.seed_claim_support_case
432
+ args:
433
+ scenario: media_only_legal_policy
434
+ - action: gates.check
435
+ args: {}
436
+ - action: state.check
437
+ args: {}
438
+ expected:
439
+ exit_code: 0
440
+ artifacts_exist:
441
+ - output/intermediate/claim_support_matrix.json
442
+ - output/intermediate/quality_gate_report.json
443
+ findings_any:
444
+ - finding_type: claim_support_matrix_blocking_support
445
+ blocking_level: blocking
446
+ gate_stage_id: auditor
447
+ contains_text:
448
+ - scope: workspace
449
+ file: output/intermediate/claim_support_matrix.json
450
+ text: official_source_missing
451
+ workflow_state:
452
+ current_stage: auditor
453
+ blocked: true
454
+
455
+ - case_id: company_event_missing_latest_official_check
456
+ case_type: workspace
457
+ synthetic: true
458
+ description: Company-event claims missing latest official checks are represented as insufficient-evidence records.
459
+ initial_stage: auditor
460
+ commands:
461
+ - action: synthetic.seed_claim_support_case
462
+ args:
463
+ scenario: company_event_missing_latest_official_check
464
+ - action: gates.check
465
+ args: {}
466
+ - action: state.check
467
+ args: {}
468
+ expected:
469
+ exit_code: 0
470
+ artifacts_exist:
471
+ - output/intermediate/claim_support_matrix.json
472
+ - output/intermediate/quality_gate_report.json
473
+ findings_any:
474
+ - finding_type: claim_support_matrix_blocking_support
475
+ blocking_level: blocking
476
+ gate_stage_id: auditor
477
+ contains_text:
478
+ - scope: workspace
479
+ file: output/intermediate/claim_support_matrix.json
480
+ text: latest_official_check_missing
481
+ workflow_state:
482
+ current_stage: auditor
483
+ blocked: true
484
+
485
+ - case_id: third_party_price_snapshot_formal_block
486
+ case_type: workspace
487
+ synthetic: true
488
+ description: Third-party price snapshots are explicit weak support that block formal-release treatment.
489
+ initial_stage: auditor
490
+ commands:
491
+ - action: synthetic.seed_claim_support_case
492
+ args:
493
+ scenario: third_party_price_snapshot_formal_block
494
+ - action: gates.check
495
+ args: {}
496
+ - action: state.check
497
+ args: {}
498
+ expected:
499
+ exit_code: 0
500
+ artifacts_exist:
501
+ - output/intermediate/claim_support_matrix.json
502
+ - output/intermediate/quality_gate_report.json
503
+ findings_any:
504
+ - finding_type: claim_support_matrix_blocking_support
505
+ blocking_level: blocking
506
+ gate_stage_id: auditor
507
+ contains_text:
508
+ - scope: workspace
509
+ file: output/intermediate/claim_support_matrix.json
510
+ text: third_party_price_snapshot_formal_block
511
+ workflow_state:
512
+ current_stage: auditor
513
+ blocked: true
514
+
515
+ - case_id: formal_release_missing_human_approval
516
+ case_type: workspace
517
+ synthetic: true
518
+ description: Formal release-candidate checks remain blocked without required human approvals.
519
+ initial_stage: finalize
520
+ commands:
521
+ - action: release.check
522
+ continue_on_failure: true
523
+ args:
524
+ mode: formal_release_candidate
525
+ - action: state.check
526
+ args: {}
527
+ expected:
528
+ exit_code: 0
529
+ expected_actions:
530
+ - action: release.check
531
+ exit_code: 1
532
+ result_contains:
533
+ release_readiness:
534
+ mode: formal_release_candidate
535
+ status: blocked
536
+ missing_roles:
537
+ - content_owner
538
+ - evidence_reviewer
539
+ - legal_or_compliance_reviewer
540
+ blockers:
541
+ - missing_required_approval:content_owner
542
+ - missing_required_approval:evidence_reviewer
543
+ - missing_required_approval:legal_or_compliance_reviewer
544
+ authorization: not_authorized_for_public_release
545
+ - action: state.check
546
+ exit_code: 0
547
+ artifact_statuses:
548
+ - artifact_id: release_readiness_report
549
+ status: valid
550
+ validation_result_contains: experimental_release_readiness_report
551
+
552
+ - case_id: trajectory_retry_budget_exhausted
553
+ case_type: workspace
554
+ synthetic: true
555
+ description: Repeated retry decisions narrow current-stage decisions to human-review or block.
556
+ initial_stage: source-discovery
557
+ commands:
558
+ - action: state.decide
559
+ args:
560
+ stage: source-discovery
561
+ decision: retry_stage
562
+ reason: Synthetic retry one.
563
+ - action: state.decide
564
+ args:
565
+ stage: source-discovery
566
+ decision: retry_stage
567
+ reason: Synthetic retry two.
568
+ - action: state.decide
569
+ args:
570
+ stage: source-discovery
571
+ decision: retry_stage
572
+ reason: Synthetic retry three.
573
+ - action: status.show
574
+ args: {}
575
+ expected:
576
+ exit_code: 0
577
+ expected_actions:
578
+ - action: state.decide
579
+ exit_code: 0
580
+ - action: state.decide
581
+ exit_code: 0
582
+ - action: state.decide
583
+ exit_code: 0
584
+ - action: status.show
585
+ exit_code: 0
586
+ result_contains:
587
+ trajectory_regulation:
588
+ status: action_required
589
+ recommended_actions:
590
+ - action: request_human_review
591
+ stage_id: source-discovery
592
+ reason: retry_budget_exhausted
593
+ workflow_state:
594
+ current_stage: source-discovery
595
+ blocked: false
596
+ next_allowed_decisions:
597
+ - request_human_review
598
+ - block_run
599
+ contains_text:
600
+ - scope: workspace
601
+ file: output/intermediate/workflow_state.json
602
+ text: decision_narrowed
603
+ - scope: workspace
604
+ file: output/intermediate/workflow_state.json
605
+ text: retry_budget_exhausted
606
+
607
+ - case_id: guidance_manifestation_not_observable
608
+ case_type: workspace
609
+ synthetic: true
610
+ description: Approved guidance manifestation can be reported as not observable without mutating memory or gates.
611
+ initial_stage: doctor
612
+ commands:
613
+ - action: guidance_manifestation.seed_report
614
+ args:
615
+ entry_id: AG-0001
616
+ status: not_observable
617
+ - action: state.check
618
+ args: {}
619
+ - action: status.show
620
+ args: {}
621
+ expected:
622
+ exit_code: 0
623
+ expected_actions:
624
+ - action: guidance_manifestation.seed_report
625
+ exit_code: 0
626
+ - action: state.check
627
+ exit_code: 0
628
+ - action: status.show
629
+ exit_code: 0
630
+ result_contains:
631
+ guidance_manifestation:
632
+ status: present
633
+ summary_counts:
634
+ not_observable_count: 1
635
+ materialized_entry_count: 1
636
+ python_judged_manifestation: false
637
+ artifacts_exist:
638
+ - output/intermediate/guidance_manifestation_report.json
639
+ artifact_statuses:
640
+ - artifact_id: guidance_manifestation_report
641
+ status: valid
642
+ validation_result_contains: experimental_guidance_manifestation_report
643
+ workflow_state:
644
+ current_stage: doctor
645
+ blocked: false
646
+
647
+ - case_id: same_evidence_reader_quality_regression
648
+ case_type: workspace
649
+ synthetic: true
650
+ description: Same-evidence reader-quality surfaces stay visible through status, Quality Panel, and artifact validation.
651
+ initial_stage: finalize
652
+ commands:
653
+ - action: state.check
654
+ args: {}
655
+ - action: status.show
656
+ args: {}
657
+ - action: quality.summarize
658
+ args: {}
659
+ - action: packs.bundle
660
+ args: {}
661
+ - action: state.check
662
+ args: {}
663
+ - action: status.show
664
+ args: {}
665
+ expected:
666
+ exit_code: 0
667
+ expected_actions:
668
+ - action: state.check
669
+ exit_code: 0
670
+ - action: status.show
671
+ exit_code: 0
672
+ - action: quality.summarize
673
+ exit_code: 0
674
+ result_contains:
675
+ quality_panel: output/intermediate/quality_panel.json
676
+ quality_summary: output/intermediate/quality_summary.md
677
+ quality_panel_html: output/intermediate/quality_panel.html
678
+ - action: packs.bundle
679
+ exit_code: 0
680
+ result_contains:
681
+ report_bundle_manifest: output/report_bundle_manifest.json
682
+ delivery_bundle_archive: output/delivery_bundle.zip
683
+ audit_bundle_archive: output/audit_bundle.zip
684
+ delivery_artifact_count: 1
685
+ packaging_hygiene: clean
686
+ - action: state.check
687
+ exit_code: 0
688
+ - action: status.show
689
+ exit_code: 0
690
+ artifacts_exist:
691
+ - output/intermediate/quality_panel.json
692
+ - output/intermediate/quality_summary.md
693
+ - output/intermediate/quality_panel.html
694
+ - output/report_bundle_manifest.json
695
+ - output/delivery_bundle.zip
696
+ - output/audit_bundle.zip
697
+ artifact_statuses:
698
+ - artifact_id: quality_panel
699
+ status: valid
700
+ validation_result_contains: experimental_quality_panel
701
+ - artifact_id: quality_summary
702
+ status: valid
703
+ validation_result_contains: experimental_quality_summary
704
+ - artifact_id: quality_panel_html
705
+ status: valid
706
+ validation_result_contains: experimental_quality_panel_html
707
+ contains_text:
708
+ - scope: workspace
709
+ file: output/intermediate/quality_panel.json
710
+ text: materiality_selection
711
+ - scope: workspace
712
+ file: output/intermediate/quality_panel.json
713
+ text: support_wording
714
+ - scope: workspace
715
+ file: output/intermediate/quality_panel.json
716
+ text: report_template_conformance
717
+ - scope: workspace
718
+ file: output/intermediate/quality_panel.json
719
+ text: quality_panel_closeout
720
+ - scope: workspace
721
+ file: output/intermediate/quality_summary.md
722
+ text: "Materiality/focus exclusions: `2`"
723
+ - scope: workspace
724
+ file: output/intermediate/quality_summary.md
725
+ text: "Reader template warnings:"
726
+ - scope: workspace
727
+ file: output/intermediate/quality_summary.md
728
+ text: "Support wording warnings:"
729
+ - scope: workspace
730
+ file: output/intermediate/quality_panel.html
731
+ text: "Quality Panel"
732
+ - scope: workspace
733
+ file: output/report_bundle_manifest.json
734
+ text: "reader_facing_artifacts_only"
735
+ - scope: workspace
736
+ file: output/report_bundle_manifest.json
737
+ text: "audit_control_artifacts_only_not_reader_delivery"
738
+ absent_text:
739
+ - scope: workspace
740
+ file: output/delivery/brief.md
741
+ text: "[src:"
742
+ - scope: workspace
743
+ file: output/intermediate/quality_summary.md
744
+ text: "ready to publish"
745
+ - scope: workspace
746
+ file: output/intermediate/quality_panel.html
747
+ text: "approved for release"
748
+ workflow_state:
749
+ current_stage: finalize
750
+ blocked: false
751
+
752
+ - case_id: unapproved_entry_not_materialized
753
+ case_type: workspace
754
+ synthetic: true
755
+ description: Proposed improvement guidance is projected but not frozen into runtime handoff.
756
+ initial_stage: doctor
757
+ commands:
758
+ - action: runtime.run_handoff
759
+ args:
760
+ skip_doctor: true
761
+ expected:
762
+ exit_code: 0
763
+ expected_actions:
764
+ - action: runtime.run_handoff
765
+ exit_code: 0
766
+ artifacts_exist:
767
+ - improvement/memory.md
768
+ - output/intermediate/runtime_manifest.json
769
+ - output/intermediate/agent_handoff.json
770
+ artifacts_absent:
771
+ - output/intermediate/improvement_memory_snapshot.md
772
+ manifest_improvement:
773
+ ledger_sha256: non-null
774
+ memory_sha256: non-null
775
+ snapshot_path: null
776
+ snapshot_sha256: null
777
+ materialized_entry_ids: []
778
+ absent_text:
779
+ - scope: workspace
780
+ file: output/intermediate/agent_handoff.json
781
+ text: "improvement_memory_snapshot.md"
782
+
783
+ - case_id: approved_guidance_materialized
784
+ case_type: workspace
785
+ synthetic: true
786
+ description: Approved human-authored improvement guidance is frozen into a snapshot and exposed through handoff.
787
+ initial_stage: doctor
788
+ commands:
789
+ - action: runtime.run_handoff
790
+ args:
791
+ skip_doctor: true
792
+ - action: state.check
793
+ args:
794
+ strict: true
795
+ expected:
796
+ exit_code: 0
797
+ expected_actions:
798
+ - action: runtime.run_handoff
799
+ exit_code: 0
800
+ - action: state.check
801
+ exit_code: 0
802
+ artifacts_exist:
803
+ - improvement/memory.md
804
+ - output/intermediate/improvement_memory_snapshot.md
805
+ - output/intermediate/runtime_manifest.json
806
+ - output/intermediate/agent_handoff.json
807
+ manifest_improvement:
808
+ ledger_sha256: non-null
809
+ memory_sha256: non-null
810
+ snapshot_path: output/intermediate/improvement_memory_snapshot.md
811
+ snapshot_sha256: non-null
812
+ materialized_entry_ids:
813
+ - AG-0001
814
+ contains_text:
815
+ - scope: workspace
816
+ file: output/intermediate/improvement_memory_snapshot.md
817
+ text: "Start with the operational implication before implementation detail."
818
+ - scope: workspace
819
+ file: output/intermediate/agent_handoff.json
820
+ text: "output/intermediate/improvement_memory_snapshot.md"
821
+ absent_text:
822
+ - scope: workspace
823
+ file: output/intermediate/improvement_memory_snapshot.md
824
+ text: "Operator-created synthetic preference for public eval."
825
+ - scope: workspace
826
+ file: output/intermediate/agent_handoff.json
827
+ text: "improvement/memory.md"
828
+
829
+ - case_id: reverted_entry_removed_from_next_snapshot
830
+ case_type: workspace
831
+ synthetic: true
832
+ description: Reverted improvement guidance is removed from regenerated memory and no longer exposed through handoff.
833
+ initial_stage: doctor
834
+ commands:
835
+ - action: runtime.run_handoff
836
+ args:
837
+ skip_doctor: true
838
+ expected:
839
+ exit_code: 0
840
+ expected_actions:
841
+ - action: runtime.run_handoff
842
+ exit_code: 0
843
+ artifacts_exist:
844
+ - improvement/memory.md
845
+ - output/intermediate/runtime_manifest.json
846
+ - output/intermediate/agent_handoff.json
847
+ artifacts_absent:
848
+ - output/intermediate/improvement_memory_snapshot.md
849
+ manifest_improvement:
850
+ ledger_sha256: non-null
851
+ memory_sha256: non-null
852
+ snapshot_path: null
853
+ snapshot_sha256: null
854
+ materialized_entry_ids: []
855
+ absent_text:
856
+ - scope: workspace
857
+ file: improvement/memory.md
858
+ text: "Start with the operational implication before implementation detail."
859
+ - scope: workspace
860
+ file: output/intermediate/agent_handoff.json
861
+ text: "improvement_memory_snapshot.md"