fullbleed 2.2.4__tar.gz → 2.3.0__tar.gz

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 (196) hide show
  1. {fullbleed-2.2.4 → fullbleed-2.3.0}/Cargo.lock +1 -1
  2. {fullbleed-2.2.4 → fullbleed-2.3.0}/Cargo.toml +1 -1
  3. fullbleed-2.2.4/README.md → fullbleed-2.3.0/PKG-INFO +102 -14
  4. fullbleed-2.2.4/PKG-INFO → fullbleed-2.3.0/README.md +59 -51
  5. fullbleed-2.3.0/fullbleed-agent-contract.json +6094 -0
  6. fullbleed-2.3.0/llms.txt +66 -0
  7. {fullbleed-2.2.4 → fullbleed-2.3.0}/pyproject.toml +36 -3
  8. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/_abi.py +37 -4
  9. fullbleed-2.3.0/python/fullbleed_cli/agent.py +161 -0
  10. fullbleed-2.3.0/python/fullbleed_cli/agent_acceptance.py +499 -0
  11. fullbleed-2.3.0/python/fullbleed_cli/agent_contract.py +1101 -0
  12. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/cli.py +474 -36
  13. fullbleed-2.3.0/python/fullbleed_cli/mcp.py +579 -0
  14. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold.py +82 -1
  15. fullbleed-2.3.0/python/fullbleed_cli/scaffold_templates/init/AGENTS.md +14 -0
  16. fullbleed-2.3.0/skills/fullbleed/SKILL.md +37 -0
  17. fullbleed-2.3.0/skills/fullbleed/agents/openai.yaml +4 -0
  18. fullbleed-2.3.0/skills/fullbleed/references/compliance.md +31 -0
  19. fullbleed-2.3.0/skills/fullbleed/references/selection.md +21 -0
  20. fullbleed-2.3.0/skills/fullbleed/references/workflows.md +66 -0
  21. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/flate_native.rs +34 -11
  22. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/flowable.rs +12 -0
  23. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/lib.rs +177 -5
  24. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/pdf.rs +27 -4
  25. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/python/abi_exports.rs +34 -4
  26. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/python.rs +5 -0
  27. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/style.rs +19 -1
  28. {fullbleed-2.2.4 → fullbleed-2.3.0}/COPYRIGHT +0 -0
  29. {fullbleed-2.2.4 → fullbleed-2.3.0}/FONT_LICENSE_AUDIT.json +0 -0
  30. {fullbleed-2.2.4 → fullbleed-2.3.0}/FONT_LICENSE_AUDIT.md +0 -0
  31. {fullbleed-2.2.4 → fullbleed-2.3.0}/LICENSE +0 -0
  32. {fullbleed-2.2.4 → fullbleed-2.3.0}/LICENSING.md +0 -0
  33. {fullbleed-2.2.4 → fullbleed-2.3.0}/THIRD_PARTY_LICENSES.md +0 -0
  34. {fullbleed-2.2.4 → fullbleed-2.3.0}/build.rs +0 -0
  35. {fullbleed-2.2.4 → fullbleed-2.3.0}/build_backend/fullbleed_build_backend.py +0 -0
  36. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/Cargo.lock +0 -0
  37. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/Cargo.toml +0 -0
  38. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/LICENSE +0 -0
  39. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/README.md +0 -0
  40. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/specs/fullbleed.audit_registry.v1.yaml +0 -0
  41. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/specs/section508_html_registry.v1.yaml +0 -0
  42. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/specs/wcag20aa_registry.v1.yaml +0 -0
  43. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/src/json.rs +0 -0
  44. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/src/lib.rs +0 -0
  45. {fullbleed-2.2.4 → fullbleed-2.3.0}/crates/fullbleed_audit_contract/src/sha256.rs +0 -0
  46. {fullbleed-2.2.4 → fullbleed-2.3.0}/docs/specs/fullbleed.a11y.verify.v1.schema.json +0 -0
  47. {fullbleed-2.2.4 → fullbleed-2.3.0}/docs/specs/fullbleed.audit_registry.v1.yaml +0 -0
  48. {fullbleed-2.2.4 → fullbleed-2.3.0}/docs/specs/fullbleed.pmr.v1.schema.json +0 -0
  49. {fullbleed-2.2.4 → fullbleed-2.3.0}/docs/specs/section508_html_registry.v1.yaml +0 -0
  50. {fullbleed-2.2.4 → fullbleed-2.3.0}/docs/specs/wcag20aa_registry.v1.yaml +0 -0
  51. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/__init__.py +0 -0
  52. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/__main__.py +0 -0
  53. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/accessibility/__init__.py +0 -0
  54. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/accessibility/engine.py +0 -0
  55. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/accessibility/runtime.py +0 -0
  56. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/accessibility/types.py +0 -0
  57. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/audit_prototype.py +0 -0
  58. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/audit_section508.py +0 -0
  59. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/audit_wcag.py +0 -0
  60. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/__init__.py +0 -0
  61. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/accessibility.py +0 -0
  62. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/__init__.py +0 -0
  63. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/_core.py +0 -0
  64. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/agency_letter.py +0 -0
  65. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/court_motion_form.py +0 -0
  66. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/declaration_form.py +0 -0
  67. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/instruction_sheet.py +0 -0
  68. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/investment_portfolio_report.py +0 -0
  69. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/marriage_record.py +0 -0
  70. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/profiles.py +0 -0
  71. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/recorded_plat.py +0 -0
  72. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/redaction_request_form.py +0 -0
  73. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/cav/warranty_deed.py +0 -0
  74. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/core.py +0 -0
  75. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/primitives.py +0 -0
  76. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed/ui/style.py +0 -0
  77. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_assets/__init__.py +0 -0
  78. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_assets/bootstrap.min.css +0 -0
  79. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_assets/fonts/Inter-Variable.ttf +0 -0
  80. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_assets/fonts/NotoSans-Regular.ttf +0 -0
  81. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_assets/fonts/NotoSansMath-Regular.ttf +0 -0
  82. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_assets/fonts/NotoSansSymbols-Regular.ttf +0 -0
  83. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_assets/fonts/NotoSansSymbols2-Regular.ttf +0 -0
  84. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_assets/icons/bootstrap-icons.svg +0 -0
  85. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/__init__.py +0 -0
  86. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/__main__.py +0 -0
  87. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/assets.py +0 -0
  88. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/cache.py +0 -0
  89. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/finalize.py +0 -0
  90. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/__init__.py +0 -0
  91. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/.gitignore +0 -0
  92. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/COMPLIANCE.md +0 -0
  93. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/SCAFFOLDING.md +0 -0
  94. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/__init__.py +0 -0
  95. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/body.py +0 -0
  96. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/fb_ui.py +0 -0
  97. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/footer.py +0 -0
  98. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/header.py +0 -0
  99. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/primitives.py +0 -0
  100. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/body.css +0 -0
  101. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/footer.css +0 -0
  102. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/header.css +0 -0
  103. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/components/styles/primitives.css +0 -0
  104. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/report.py +0 -0
  105. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/styles/report.css +0 -0
  106. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/init/styles/tokens.css +0 -0
  107. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/accessible/README.md +0 -0
  108. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/accessible/output/.gitignore +0 -0
  109. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/accessible/output/.gitkeep +0 -0
  110. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/accessible/report.py +0 -0
  111. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/accessible/styles/report.css +0 -0
  112. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/accessible/vendor/fonts/Inter-Variable.ttf +0 -0
  113. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/invoice/output/.gitignore +0 -0
  114. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/invoice/output/.gitkeep +0 -0
  115. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/invoice/report.py +0 -0
  116. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/invoice/templates/invoice.css +0 -0
  117. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/invoice/templates/invoice.html +0 -0
  118. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/COMPLIANCE.md +0 -0
  119. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/README.md +0 -0
  120. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/SCAFFOLDING.md +0 -0
  121. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/assets/brand-mark.svg +0 -0
  122. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/assets/reference-pattern.svg +0 -0
  123. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/__init__.py +0 -0
  124. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/appendix.py +0 -0
  125. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/architecture.py +0 -0
  126. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/cover.py +0 -0
  127. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/data_pages.py +0 -0
  128. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/fb_ui.py +0 -0
  129. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/primitives.py +0 -0
  130. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/appendix.css +0 -0
  131. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/architecture.css +0 -0
  132. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/cover.css +0 -0
  133. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/data.css +0 -0
  134. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/primitives.css +0 -0
  135. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/styles/visuals.css +0 -0
  136. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/components/visuals.py +0 -0
  137. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/data/reference.json +0 -0
  138. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/output/.gitignore +0 -0
  139. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/report.py +0 -0
  140. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/styles/report.css +0 -0
  141. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/reference/styles/tokens.css +0 -0
  142. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/statement/output/.gitignore +0 -0
  143. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/statement/output/.gitkeep +0 -0
  144. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/statement/report.py +0 -0
  145. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/statement/templates/statement.css +0 -0
  146. {fullbleed-2.2.4 → fullbleed-2.3.0}/python/fullbleed_cli/scaffold_templates/new/statement/templates/statement.html +0 -0
  147. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/assets.rs +0 -0
  148. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/base64.rs +0 -0
  149. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/canvas.rs +0 -0
  150. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/css_native.rs +0 -0
  151. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/css_queries.rs +0 -0
  152. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/debug.rs +0 -0
  153. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/doc_context.rs +0 -0
  154. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/doc_template.rs +0 -0
  155. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/error.rs +0 -0
  156. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/finalize.rs +0 -0
  157. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/font.rs +0 -0
  158. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/font_subset.rs +0 -0
  159. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/frame.rs +0 -0
  160. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/glyph_report.rs +0 -0
  161. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html.rs +0 -0
  162. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html_dom.rs +0 -0
  163. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html_entities.rs +0 -0
  164. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html_entities_0.rs +0 -0
  165. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html_entities_1.rs +0 -0
  166. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html_entities_2.rs +0 -0
  167. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html_entities_3.rs +0 -0
  168. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html_entities_4.rs +0 -0
  169. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/html_entities_5.rs +0 -0
  170. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/image_native.rs +0 -0
  171. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/jit.rs +0 -0
  172. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/jpeg_native.rs +0 -0
  173. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/math.rs +0 -0
  174. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/metrics.rs +0 -0
  175. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/native_shape.rs +0 -0
  176. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/page_data.rs +0 -0
  177. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/page_template.rs +0 -0
  178. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/parallel.rs +0 -0
  179. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/pdf_encodings.rs +0 -0
  180. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/pdf_native.rs +0 -0
  181. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/pdf_raster.rs +0 -0
  182. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/pdfinspect.rs +0 -0
  183. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/perf.rs +0 -0
  184. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/plan.rs +0 -0
  185. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/python_abi.rs +0 -0
  186. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/raster.rs +0 -0
  187. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/raster_native.rs +0 -0
  188. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/sfnt.rs +0 -0
  189. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/sfnt_cff.rs +0 -0
  190. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/sfnt_outline.rs +0 -0
  191. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/spill.rs +0 -0
  192. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/svg.rs +0 -0
  193. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/text_shape.rs +0 -0
  194. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/types.rs +0 -0
  195. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/unicode_data.rs +0 -0
  196. {fullbleed-2.2.4 → fullbleed-2.3.0}/src/xml.rs +0 -0
@@ -4,7 +4,7 @@ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "fullbleed"
7
- version = "2.2.4"
7
+ version = "2.3.0"
8
8
  dependencies = [
9
9
  "fullbleed_audit_contract",
10
10
  "subsetter",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fullbleed"
3
- version = "2.2.4"
3
+ version = "2.3.0"
4
4
  edition = "2024"
5
5
  rust-version = "1.85"
6
6
  license = "MIT"
@@ -1,7 +1,52 @@
1
+ Metadata-Version: 2.4
2
+ Name: fullbleed
3
+ Version: 2.3.0
4
+ Classifier: Development Status :: 5 - Production/Stable
5
+ Classifier: License :: OSI Approved :: MIT License
6
+ Classifier: Operating System :: MacOS
7
+ Classifier: Operating System :: Microsoft :: Windows
8
+ Classifier: Operating System :: POSIX :: Linux
9
+ Classifier: Programming Language :: Rust
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3 :: Only
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
18
+ Classifier: Topic :: Office/Business
19
+ Classifier: Topic :: Office/Business :: Financial
20
+ Classifier: Topic :: Printing
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: Text Processing :: Markup :: HTML
23
+ Provides-Extra: api
24
+ License-File: LICENSE
25
+ License-File: COPYRIGHT
26
+ License-File: LICENSING.md
27
+ License-File: THIRD_PARTY_LICENSES.md
28
+ License-File: FONT_LICENSE_AUDIT.md
29
+ License-File: FONT_LICENSE_AUDIT.json
30
+ Summary: Deterministic Python PDF engine for reports, invoices, accessible documents, print-ready output, and compiled VDP
31
+ Keywords: pdf-generation,document-generation,html-to-pdf,python-pdf-engine,deterministic-pdf,reports,invoices,statements,forms,transactional-documents,vdp,variable-data-printing,accessible-pdf,pdf-ua,pdf-a,pdf-x,ai-agents,agentic-document-generation,mcp
32
+ Home-Page: https://fullbleed.dev
33
+ License-Expression: MIT
34
+ Requires-Python: >=3.10
35
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
36
+ Project-URL: Agent-Contract, https://github.com/fullbleed-engine/fullbleed-official/blob/master/fullbleed-agent-contract.json
37
+ Project-URL: Agent-Skill, https://github.com/fullbleed-engine/fullbleed-official/tree/master/skills/fullbleed
38
+ Project-URL: Documentation, https://github.com/fullbleed-engine/fullbleed-official#readme
39
+ Project-URL: Homepage, https://fullbleed.dev
40
+ Project-URL: Issues, https://github.com/fullbleed-engine/fullbleed-official/issues
41
+ Project-URL: MCP, https://github.com/fullbleed-engine/fullbleed-official/tree/master/packages/fullbleed-mcp
42
+ Project-URL: Repository, https://github.com/fullbleed-engine/fullbleed-official
43
+
1
44
  <!-- SPDX-License-Identifier: MIT -->
2
- # Fullbleed
45
+ # Fullbleed PDF Engine
46
+
47
+ Fullbleed PDF Engine is a deterministic, self-contained document-generation runtime for Python and Rust. It turns structured data plus static HTML/CSS into reports, invoices, statements, letters, forms, certificates, accessible PDFs, print-ready documents, and high-volume compiled VDP output—without a browser or system PDF stack.
3
48
 
4
- Deterministic, self-contained HTML/CSS-to-PDF generation in Rust, with a Python-first CLI and Python engine bindings.
49
+ It is designed for human developers, automation, and AI agents alike: the installed runtime exposes its exact version, capabilities, commands, schemas, compliance profiles, examples, limitations, and tool-selection boundary as a generated machine contract.
5
50
 
6
51
 
7
52
  License: MIT.
@@ -10,16 +55,49 @@ License: MIT.
10
55
 
11
56
  - **Install:** `pip install fullbleed`
12
57
  - **Try:** `fullbleed init . && python report.py`
58
+ - **Discover:** `fullbleed agent-contract --format json`
13
59
  - **Outputs:** `output/report.pdf`
14
60
  - Deterministic + reproducible (`--repro-record` / `--repro-check`)
15
61
  - Agent-safe JSON schemas (`--json-only`, `--schema`)
16
62
 
17
63
  ## Positioning
18
64
 
19
- Fullbleed is a deterministic, offline-first document rendering engine for transactional/VDP pipelines (not a browser, not a hosted web-to-print SaaS).
65
+ Fullbleed is a deterministic, offline-first document rendering engine for structured print-document and transactional/VDP pipelines (not a browser, not a hosted web-to-print SaaS, and not a general editor for arbitrary existing PDF content).
20
66
 
21
67
  HTML and CSS are used as a familiar DSL for layout, styling, and data placement in transactional documents.
22
68
 
69
+ ## Agent discovery and integrations
70
+
71
+ An agent does not need release-specific Fullbleed knowledge. The installed binary generates one canonical contract containing its actual version, selection boundary, capabilities, parser-derived CLI surface, result schemas, PDF profiles, examples, limitations, Agent Skill metadata, MCP tools, and acceptance tasks:
72
+
73
+ ```bash
74
+ fullbleed agent-manifest --json
75
+ # Equivalent canonical form:
76
+ fullbleed agent-contract --format json
77
+ ```
78
+
79
+ The committed [`fullbleed-agent-contract.json`](fullbleed-agent-contract.json), [`cli_schema.md`](cli_schema.md), and [`llms.txt`](llms.txt) are generated from the built wheel. CI rejects version, command, schema, profile, or capability drift. Runtime introspection remains authoritative.
80
+
81
+ The first-party, versionless [`skills/fullbleed/SKILL.md`](skills/fullbleed/SKILL.md) teaches tool selection and the render/preview/diagnose/verify loop without duplicating the manual. It is bundled in the wheel and can be exported into any absent or empty agent-skill directory:
82
+
83
+ ```bash
84
+ fullbleed agent skill-path --json
85
+ fullbleed agent export-skill .agents/skills/fullbleed --json
86
+ ```
87
+
88
+ For tool-calling agents, install the separately versioned adapter so the core package remains dependency-free:
89
+
90
+ ```bash
91
+ python -m pip install fullbleed-mcp
92
+ fullbleed-mcp --root .
93
+ ```
94
+
95
+ The stdio server confines document paths to the selected workspace and delegates every engine operation to the installed Fullbleed runtime. It exposes semantic discovery, project creation, render/preview, inspect, verify, assets, and fixed/reflow compiled VDP tools. The dependency-free core also provides `fullbleed mcp --root .`.
96
+
97
+ Use Fullbleed when the requested artifact is a deterministic print document built from structured content. Use a browser when the requested artifact is a screenshot or interactive state of an arbitrary live website. Use a general PDF editor when existing page content itself must be rewritten.
98
+
99
+ Cold-agent testing is available through `fullbleed agent-acceptance`; compact copyable workflows live in [`examples/agent_workflows`](examples/agent_workflows), and the approach-neutral benchmark scaffold lives in [`agentdocbench`](agentdocbench).
100
+
23
101
 
24
102
  This README is the canonical usage guide for:
25
103
 
@@ -99,7 +177,7 @@ size-changing records render 200x faster. See
99
177
  [`docs/performance-architecture.md`](docs/performance-architecture.md) for the packed vector IR,
100
178
  typed-binding, virtual-linker, and shader roadmap.
101
179
 
102
- Fullbleed 2.2.4 adds a third compiler lane for
180
+ Fullbleed 2.2.5 hardens the third compiler lane introduced in 2.2.4 for
103
181
  size-changing records: `CompiledDocument.render_pdf_reflow_bindings(...)`. It parses and recovers
104
182
  the template DOM once and compiles encountered structural flow variants into guarded fixed-point
105
183
  display programs. Matching records bind directly into those programs; workers execute pre-shaped
@@ -107,15 +185,17 @@ text/TJ paint slots, cached static PDF page segments, page-local Deflate, and on
107
185
  Explicit trusted structural slots use `data-fb-bind-html="slot"`. A value that no compiled variant
108
186
  can safely place runs ordinary fixed-point layout once to add another variant.
109
187
 
110
- On the independent 1,000-distinct-record case study, the final ABI3 wheel's 29-sample hot
111
- direct-file run had a 168.839 ms median: **5,923 records/s and 10,365 pages/s**, with a 12,510
112
- pages/s best. It produced
188
+ On the independent 1,000-distinct-record case study, the 29-sample hot direct-file median was
189
+ 216.160 ms: **4,626 records/s and 8,096 pages/s**. The 168.995 ms best sample reached **5,917
190
+ records/s and 10,355 pages/s**. It produced
113
191
  the exact 1,750-page 500/300/150/50 reflow distribution and verified all 24,900 markers. The
114
192
  throughput-tuned 6,870,320-byte PDF was deterministic across all samples. With the compact
115
193
  compression setting, compiled output was also byte-for-byte identical to ordinary rendering:
116
194
  5,298,961 bytes and SHA-256 `bb3c441313a08fb00d3bd15f23a567981f3bbbd550908e3a9fe7a07ca5d7f138`.
117
- This is a hot compiled-variant result, not a claim for previously unseen structure; the first
118
- compile-on-demand batch measured 407.521 ms (4,294 pages/s).
195
+ This is a hot compiled-variant result, not a claim for previously unseen structure. The first
196
+ variant-discovery render measured 0.509 s (3,437 pages/s), and the fully cold job including setup,
197
+ bindings, compilation, discovery, and write measured 0.588 s (2,975 pages/s). The independently
198
+ observed hot-median speedup over the ordinary path was 43.8x.
119
199
 
120
200
  ## Install
121
201
 
@@ -128,7 +208,7 @@ python -m pip install fullbleed
128
208
  From a local wheel:
129
209
 
130
210
  ```bash
131
- python -m pip install C:\path\to\fullbleed-2.2.4-cp310-abi3-win_amd64.whl
211
+ python -m pip install C:\path\to\fullbleed-2.3.0-cp310-abi3-win_amd64.whl
132
212
  ```
133
213
 
134
214
  From a source checkout with Rust installed, no Python build package is needed:
@@ -186,6 +266,9 @@ Scaffolded components now include `components/primitives.py` with reusable
186
266
  layout/content helpers (`Stack`, `Row`, `Text`, table/list helpers, key/value rows, etc.).
187
267
  Each scaffolded project also includes `SCAFFOLDING.md`, which should be your
188
268
  first read before restructuring components.
269
+ It also includes `AGENTS.md`, which preserves the installed-runtime-first
270
+ document workflow across future coding-agent sessions without making other
271
+ document tools categorically forbidden.
189
272
 
190
273
  Install additional project assets (defaults to `./vendor/...` in project context):
191
274
 
@@ -581,7 +664,8 @@ Machine discovery:
581
664
  fullbleed capabilities --json
582
665
  ```
583
666
 
584
- Inspect the `svg` object in `fullbleed.capabilities.v1` for SVG support metadata.
667
+ Inspect the `svg` object in `fullbleed.capabilities.v1` for SVG support metadata. The `engine`
668
+ object also reports compiled-document/reflow availability and supported per-call compression modes.
585
669
  It reports the compiled `svg_raster` build feature plus a feature matrix for
586
670
  native-vector SVG, raster-fallback-required SVG, and unsupported/known-loss SVG
587
671
  features.
@@ -940,6 +1024,7 @@ Module exports:
940
1024
 
941
1025
  - `PdfEngine`
942
1026
  - `CompiledDocument`
1027
+ - `CompiledFlowCompression`
943
1028
  - `AssetBundle`
944
1029
  - `Asset`
945
1030
  - `AssetKind`
@@ -988,8 +1073,8 @@ Module exports:
988
1073
  | `render_pdf_batch(copies, deterministic_hash=None)` | `bytes` |
989
1074
  | `render_pdf_bindings(bindings, deterministic_hash=None)` | `bytes` |
990
1075
  | `render_pdf_bindings_to_file(bindings, path, deterministic_hash=None)` | `int` |
991
- | `render_pdf_reflow_bindings(bindings, deterministic_hash=None)` | `bytes` |
992
- | `render_pdf_reflow_bindings_to_file(bindings, path, deterministic_hash=None)` | `int` |
1076
+ | `render_pdf_reflow_bindings(bindings, deterministic_hash=None, *, compression="throughput")` | `bytes` |
1077
+ | `render_pdf_reflow_bindings_to_file(bindings, path, deterministic_hash=None, *, compression="throughput")` | `int` |
993
1078
 
994
1079
  The compiled lane runs parsing/layout once. `render_pdf_batch` virtualizes identical untagged page
995
1080
  content. The fixed binding methods accept columnar `dict[str, list[str]]` data and emit distinct
@@ -1001,7 +1086,10 @@ The reflow binding methods use the same exact-column contract but execute the co
1001
1086
  program. `{{slot}}` values are literal text and may reshape, wrap, resize blocks, and change page
1002
1087
  counts. Empty elements can opt into trusted generated markup with
1003
1088
  `data-fb-bind-html="slot"`; those values replace the element's children. One DOM is reused per
1004
- native worker and record output is linked in input order through a bounded queue. See
1089
+ native worker and record output is linked in input order through a bounded queue. Structural slot
1090
+ values are parsed as trusted markup: sanitize untrusted input or use scalar `{{slot}}` bindings,
1091
+ which remain literal text. Choose `CompiledFlowCompression.Throughput` (default) or
1092
+ `CompiledFlowCompression.Compact` per render; modes can be mixed safely in one process. See
1005
1093
  [`docs/python-api.md`](docs/python-api.md) for the trust boundary and current limitations.
1006
1094
 
1007
1095
  When `deterministic_hash` is set, engine writes PDF SHA-256 to the provided file path.
@@ -1,44 +1,9 @@
1
- Metadata-Version: 2.4
2
- Name: fullbleed
3
- Version: 2.2.4
4
- Classifier: Development Status :: 5 - Production/Stable
5
- Classifier: License :: OSI Approved :: MIT License
6
- Classifier: Operating System :: MacOS
7
- Classifier: Operating System :: Microsoft :: Windows
8
- Classifier: Operating System :: POSIX :: Linux
9
- Classifier: Programming Language :: Rust
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3 :: Only
12
- Classifier: Programming Language :: Python :: 3.10
13
- Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
- Classifier: Programming Language :: Python :: 3.13
16
- Classifier: Programming Language :: Python :: 3.14
17
- Classifier: Programming Language :: Python :: Implementation :: CPython
18
- Classifier: Topic :: Printing
19
- Classifier: Topic :: Text Processing :: Markup :: HTML
20
- Provides-Extra: api
21
- License-File: LICENSE
22
- License-File: COPYRIGHT
23
- License-File: LICENSING.md
24
- License-File: THIRD_PARTY_LICENSES.md
25
- License-File: FONT_LICENSE_AUDIT.md
26
- License-File: FONT_LICENSE_AUDIT.json
27
- Summary: Deterministic static HTML/CSS-to-PDF renderer built in Rust
28
- Keywords: pdf,html,css,rust,static-pdf,document-generation
29
- Home-Page: https://fullbleed.dev
30
- License-Expression: MIT
31
- Requires-Python: >=3.10
32
- Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
33
- Project-URL: Documentation, https://github.com/fullbleed-engine/fullbleed-official#readme
34
- Project-URL: Homepage, https://fullbleed.dev
35
- Project-URL: Issues, https://github.com/fullbleed-engine/fullbleed-official/issues
36
- Project-URL: Repository, https://github.com/fullbleed-engine/fullbleed-official
37
-
38
1
  <!-- SPDX-License-Identifier: MIT -->
39
- # Fullbleed
2
+ # Fullbleed PDF Engine
3
+
4
+ Fullbleed PDF Engine is a deterministic, self-contained document-generation runtime for Python and Rust. It turns structured data plus static HTML/CSS into reports, invoices, statements, letters, forms, certificates, accessible PDFs, print-ready documents, and high-volume compiled VDP output—without a browser or system PDF stack.
40
5
 
41
- Deterministic, self-contained HTML/CSS-to-PDF generation in Rust, with a Python-first CLI and Python engine bindings.
6
+ It is designed for human developers, automation, and AI agents alike: the installed runtime exposes its exact version, capabilities, commands, schemas, compliance profiles, examples, limitations, and tool-selection boundary as a generated machine contract.
42
7
 
43
8
 
44
9
  License: MIT.
@@ -47,16 +12,49 @@ License: MIT.
47
12
 
48
13
  - **Install:** `pip install fullbleed`
49
14
  - **Try:** `fullbleed init . && python report.py`
15
+ - **Discover:** `fullbleed agent-contract --format json`
50
16
  - **Outputs:** `output/report.pdf`
51
17
  - Deterministic + reproducible (`--repro-record` / `--repro-check`)
52
18
  - Agent-safe JSON schemas (`--json-only`, `--schema`)
53
19
 
54
20
  ## Positioning
55
21
 
56
- Fullbleed is a deterministic, offline-first document rendering engine for transactional/VDP pipelines (not a browser, not a hosted web-to-print SaaS).
22
+ Fullbleed is a deterministic, offline-first document rendering engine for structured print-document and transactional/VDP pipelines (not a browser, not a hosted web-to-print SaaS, and not a general editor for arbitrary existing PDF content).
57
23
 
58
24
  HTML and CSS are used as a familiar DSL for layout, styling, and data placement in transactional documents.
59
25
 
26
+ ## Agent discovery and integrations
27
+
28
+ An agent does not need release-specific Fullbleed knowledge. The installed binary generates one canonical contract containing its actual version, selection boundary, capabilities, parser-derived CLI surface, result schemas, PDF profiles, examples, limitations, Agent Skill metadata, MCP tools, and acceptance tasks:
29
+
30
+ ```bash
31
+ fullbleed agent-manifest --json
32
+ # Equivalent canonical form:
33
+ fullbleed agent-contract --format json
34
+ ```
35
+
36
+ The committed [`fullbleed-agent-contract.json`](fullbleed-agent-contract.json), [`cli_schema.md`](cli_schema.md), and [`llms.txt`](llms.txt) are generated from the built wheel. CI rejects version, command, schema, profile, or capability drift. Runtime introspection remains authoritative.
37
+
38
+ The first-party, versionless [`skills/fullbleed/SKILL.md`](skills/fullbleed/SKILL.md) teaches tool selection and the render/preview/diagnose/verify loop without duplicating the manual. It is bundled in the wheel and can be exported into any absent or empty agent-skill directory:
39
+
40
+ ```bash
41
+ fullbleed agent skill-path --json
42
+ fullbleed agent export-skill .agents/skills/fullbleed --json
43
+ ```
44
+
45
+ For tool-calling agents, install the separately versioned adapter so the core package remains dependency-free:
46
+
47
+ ```bash
48
+ python -m pip install fullbleed-mcp
49
+ fullbleed-mcp --root .
50
+ ```
51
+
52
+ The stdio server confines document paths to the selected workspace and delegates every engine operation to the installed Fullbleed runtime. It exposes semantic discovery, project creation, render/preview, inspect, verify, assets, and fixed/reflow compiled VDP tools. The dependency-free core also provides `fullbleed mcp --root .`.
53
+
54
+ Use Fullbleed when the requested artifact is a deterministic print document built from structured content. Use a browser when the requested artifact is a screenshot or interactive state of an arbitrary live website. Use a general PDF editor when existing page content itself must be rewritten.
55
+
56
+ Cold-agent testing is available through `fullbleed agent-acceptance`; compact copyable workflows live in [`examples/agent_workflows`](examples/agent_workflows), and the approach-neutral benchmark scaffold lives in [`agentdocbench`](agentdocbench).
57
+
60
58
 
61
59
  This README is the canonical usage guide for:
62
60
 
@@ -136,7 +134,7 @@ size-changing records render 200x faster. See
136
134
  [`docs/performance-architecture.md`](docs/performance-architecture.md) for the packed vector IR,
137
135
  typed-binding, virtual-linker, and shader roadmap.
138
136
 
139
- Fullbleed 2.2.4 adds a third compiler lane for
137
+ Fullbleed 2.2.5 hardens the third compiler lane introduced in 2.2.4 for
140
138
  size-changing records: `CompiledDocument.render_pdf_reflow_bindings(...)`. It parses and recovers
141
139
  the template DOM once and compiles encountered structural flow variants into guarded fixed-point
142
140
  display programs. Matching records bind directly into those programs; workers execute pre-shaped
@@ -144,15 +142,17 @@ text/TJ paint slots, cached static PDF page segments, page-local Deflate, and on
144
142
  Explicit trusted structural slots use `data-fb-bind-html="slot"`. A value that no compiled variant
145
143
  can safely place runs ordinary fixed-point layout once to add another variant.
146
144
 
147
- On the independent 1,000-distinct-record case study, the final ABI3 wheel's 29-sample hot
148
- direct-file run had a 168.839 ms median: **5,923 records/s and 10,365 pages/s**, with a 12,510
149
- pages/s best. It produced
145
+ On the independent 1,000-distinct-record case study, the 29-sample hot direct-file median was
146
+ 216.160 ms: **4,626 records/s and 8,096 pages/s**. The 168.995 ms best sample reached **5,917
147
+ records/s and 10,355 pages/s**. It produced
150
148
  the exact 1,750-page 500/300/150/50 reflow distribution and verified all 24,900 markers. The
151
149
  throughput-tuned 6,870,320-byte PDF was deterministic across all samples. With the compact
152
150
  compression setting, compiled output was also byte-for-byte identical to ordinary rendering:
153
151
  5,298,961 bytes and SHA-256 `bb3c441313a08fb00d3bd15f23a567981f3bbbd550908e3a9fe7a07ca5d7f138`.
154
- This is a hot compiled-variant result, not a claim for previously unseen structure; the first
155
- compile-on-demand batch measured 407.521 ms (4,294 pages/s).
152
+ This is a hot compiled-variant result, not a claim for previously unseen structure. The first
153
+ variant-discovery render measured 0.509 s (3,437 pages/s), and the fully cold job including setup,
154
+ bindings, compilation, discovery, and write measured 0.588 s (2,975 pages/s). The independently
155
+ observed hot-median speedup over the ordinary path was 43.8x.
156
156
 
157
157
  ## Install
158
158
 
@@ -165,7 +165,7 @@ python -m pip install fullbleed
165
165
  From a local wheel:
166
166
 
167
167
  ```bash
168
- python -m pip install C:\path\to\fullbleed-2.2.4-cp310-abi3-win_amd64.whl
168
+ python -m pip install C:\path\to\fullbleed-2.3.0-cp310-abi3-win_amd64.whl
169
169
  ```
170
170
 
171
171
  From a source checkout with Rust installed, no Python build package is needed:
@@ -223,6 +223,9 @@ Scaffolded components now include `components/primitives.py` with reusable
223
223
  layout/content helpers (`Stack`, `Row`, `Text`, table/list helpers, key/value rows, etc.).
224
224
  Each scaffolded project also includes `SCAFFOLDING.md`, which should be your
225
225
  first read before restructuring components.
226
+ It also includes `AGENTS.md`, which preserves the installed-runtime-first
227
+ document workflow across future coding-agent sessions without making other
228
+ document tools categorically forbidden.
226
229
 
227
230
  Install additional project assets (defaults to `./vendor/...` in project context):
228
231
 
@@ -618,7 +621,8 @@ Machine discovery:
618
621
  fullbleed capabilities --json
619
622
  ```
620
623
 
621
- Inspect the `svg` object in `fullbleed.capabilities.v1` for SVG support metadata.
624
+ Inspect the `svg` object in `fullbleed.capabilities.v1` for SVG support metadata. The `engine`
625
+ object also reports compiled-document/reflow availability and supported per-call compression modes.
622
626
  It reports the compiled `svg_raster` build feature plus a feature matrix for
623
627
  native-vector SVG, raster-fallback-required SVG, and unsupported/known-loss SVG
624
628
  features.
@@ -977,6 +981,7 @@ Module exports:
977
981
 
978
982
  - `PdfEngine`
979
983
  - `CompiledDocument`
984
+ - `CompiledFlowCompression`
980
985
  - `AssetBundle`
981
986
  - `Asset`
982
987
  - `AssetKind`
@@ -1025,8 +1030,8 @@ Module exports:
1025
1030
  | `render_pdf_batch(copies, deterministic_hash=None)` | `bytes` |
1026
1031
  | `render_pdf_bindings(bindings, deterministic_hash=None)` | `bytes` |
1027
1032
  | `render_pdf_bindings_to_file(bindings, path, deterministic_hash=None)` | `int` |
1028
- | `render_pdf_reflow_bindings(bindings, deterministic_hash=None)` | `bytes` |
1029
- | `render_pdf_reflow_bindings_to_file(bindings, path, deterministic_hash=None)` | `int` |
1033
+ | `render_pdf_reflow_bindings(bindings, deterministic_hash=None, *, compression="throughput")` | `bytes` |
1034
+ | `render_pdf_reflow_bindings_to_file(bindings, path, deterministic_hash=None, *, compression="throughput")` | `int` |
1030
1035
 
1031
1036
  The compiled lane runs parsing/layout once. `render_pdf_batch` virtualizes identical untagged page
1032
1037
  content. The fixed binding methods accept columnar `dict[str, list[str]]` data and emit distinct
@@ -1038,7 +1043,10 @@ The reflow binding methods use the same exact-column contract but execute the co
1038
1043
  program. `{{slot}}` values are literal text and may reshape, wrap, resize blocks, and change page
1039
1044
  counts. Empty elements can opt into trusted generated markup with
1040
1045
  `data-fb-bind-html="slot"`; those values replace the element's children. One DOM is reused per
1041
- native worker and record output is linked in input order through a bounded queue. See
1046
+ native worker and record output is linked in input order through a bounded queue. Structural slot
1047
+ values are parsed as trusted markup: sanitize untrusted input or use scalar `{{slot}}` bindings,
1048
+ which remain literal text. Choose `CompiledFlowCompression.Throughput` (default) or
1049
+ `CompiledFlowCompression.Compact` per render; modes can be mixed safely in one process. See
1042
1050
  [`docs/python-api.md`](docs/python-api.md) for the trust boundary and current limitations.
1043
1051
 
1044
1052
  When `deterministic_hash` is set, engine writes PDF SHA-256 to the provided file path.