@rubytech/create-maxy-code 0.1.99 → 0.1.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy-code",
3
- "version": "0.1.99",
3
+ "version": "0.1.100",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy-code": "./dist/index.js"
@@ -144,7 +144,7 @@ References: `references/business-plan-template.md` for the section-by-section te
144
144
 
145
145
  ## Stage 3b — Term sheet synthesis
146
146
 
147
- Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 6-to-8-page formal term sheet** sectioned as:
147
+ Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 10-page formal term sheet** sectioned as:
148
148
 
149
149
  1. Cover + preamble + parties (Issuer / Founders / Investors / round size / minimum cheque / target close)
150
150
  2. Share economics & use of proceeds (instrument, valuation, dilution, issue price, share count, use of funds)
@@ -152,8 +152,9 @@ Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 6-to-8-page form
152
152
  4. Governance & shareholder protections (board, info rights, pre-emption, drag/tag, SEIS/EIS posture)
153
153
  5. Closing terms (governing law, IP assignment, conditions to closing, long-form docs timeline)
154
154
  6. Signatures (Company + Investor blocks)
155
- 7. Investor self-certification (UK self-cert criteria, declarations)
156
- 8. Backpage (contact)
155
+ 7. **Appendix A — High Net Worth Individual Investor Statement** (FSMA 2000 / FCA COBS 4 Annex 2 verbatim)
156
+ 8. **Appendix B — Self-Certified Sophisticated Investor Statement** (FSMA 2000 / FCA COBS 4 Annex 4 verbatim)
157
+ 9. Backpage (contact)
157
158
 
158
159
  **Doctrine for the term sheet:**
159
160
 
@@ -163,6 +164,7 @@ Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 6-to-8-page form
163
164
  - **Sole director on IN01 is the director-designate.** A term sheet that names two directors when IN01 names one is a defect.
164
165
  - **SEIS/EIS posture is post-funding obligation, not closing contingency.** Never assured prior to distribution; no representation as to qualifying status. Forms no part of consideration.
165
166
  - **Confidentiality and exclusivity provisions are the only binding clauses.** Everything else non-binding until long-form docs.
167
+ - **FCA self-certification statements are appendices to the term sheet, not separate documents.** The High Net Worth Individual Investor Statement (FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 2) and the Self-Certified Sophisticated Investor Statement (COBS 4 Annex 4) ship as Appendix A and Appendix B. **Use verbatim wording**; never paraphrase regulatory text. Current source: UKBAA's templated PDFs (Feb 2024 versions reflect the post-31 Jan 2024 reverted thresholds: HNW £170k income or £430k net assets; sophisticated director threshold £1.6m turnover). When the regulatory wording changes, the templates change first at UKBAA / FCA COBS Annexes; re-fetch before issue.
166
168
 
167
169
  References: `references/termsheet-template.md`.
168
170
 
@@ -12,8 +12,9 @@ A4-portrait, 6-to-8-page formal term sheet, same render pipeline as the business
12
12
  | 4 | Governance & shareholder protections | Board composition (director-designate per IN01), information rights (≥5% threshold), pre-emption, drag-along / tag-along, share-transfer good-leaver / bad-leaver, SEIS/EIS posture, confidentiality (binding), exclusivity (binding) |
13
13
  | 5 | Closing terms | Governing law (English), expenses (each party bears own), founder IP assignment (deed at first close, no licence-back, no royalty), conditions to closing, long-form documentation timeline |
14
14
  | 6 | Signatures | Company block (director-designate per IN01) + Investor block (name / entity / commitment / signature line) |
15
- | 7 | Investor self-certification (optional) | UK self-cert criteria check-list with signature block |
16
- | 8 | Backpage | Contact card + confidentiality reminder + companies-house identifier |
15
+ | 7 | **Appendix A — High Net Worth Individual Investor Statement** | FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 2 statement, verbatim. Income £170,000 / net assets £430,000 thresholds (post-31 Jan 2024 reverted thresholds). Checkboxes, declaration callout, signature lines. |
16
+ | 8 | **Appendix B — Self-Certified Sophisticated Investor Statement** | FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 4 statement, verbatim. Conditions A (PE / SME finance professional past 2yr), B (director of company with £1.6m+ turnover past 2yr), C (business-angel network member 6m+). Checkboxes, declaration callout, signature lines. |
17
+ | 9 | Backpage | Contact card (2×2 founder grid: role / name / email / phone) + confidentiality reminder + companies-house identifier |
17
18
 
18
19
  ## Cap table reconciliation
19
20
 
@@ -50,6 +51,27 @@ Issue price = pre-money / pre-investment shares = £1,400,000 / 500,000 = **£2.
50
51
  - **SEIS/EIS posture is post-funding obligation, never closing contingency.** Never assured prior to distribution; no representation as to qualifying status. Forms no part of consideration.
51
52
  - **Confidentiality + exclusivity bind; everything else is non-binding** until subscription & shareholders' agreement.
52
53
 
54
+ ## FCA self-certification appendices — sourcing the verbatim wording
55
+
56
+ Both appendices reproduce the FCA template **word-for-word**. Never paraphrase regulatory text. The FCA Handbook pages (COBS 4 Annex 2 / Annex 4) are JavaScript-rendered and not directly fetchable; the most reliable verbatim source is the **UK Business Angels Association** templated PDFs, updated whenever HM Treasury or the FCA change the thresholds:
57
+
58
+ - High Net Worth: <https://ukbaa.org.uk/wp-content/uploads/2024/02/HighNetWorthStatement.pdf>
59
+ - Sophisticated: <https://ukbaa.org.uk/wp-content/uploads/2024/02/SelfCertifiedStatement.pdf>
60
+
61
+ These are the **Feb 2024 versions**, reflecting the thresholds in force after HM Treasury reverted the January-2024 increases. Current thresholds:
62
+
63
+ | Statement | Condition | Threshold |
64
+ |---|---|---|
65
+ | HNW | A — income | £170,000 in last financial year (excludes one-off pension withdrawals) |
66
+ | HNW | B — net assets | £430,000 (excludes primary residence, loan secured on it, equity released from it, pension, insurance rights) |
67
+ | Sophisticated | A — PE / SME finance professional | last two years |
68
+ | Sophisticated | B — director of company | annual turnover ≥ £1.6 million, last two years |
69
+ | Sophisticated | C — business-angel network | member ≥ 6 months, still a member |
70
+
71
+ **Re-fetch before issue.** Thresholds change. The Feb 2024 templates were issued after HM Treasury reverted a Jan 2024 increase to £170k income / £430k net assets / £1.6m turnover (the original 2023 thresholds were £100k / £250k / £1m). The pattern: if it changes again, UKBAA reissues; re-fetch their PDF and re-render the appendix.
72
+
73
+ Render the appendices in the **same A4 stylesheet as the term sheet** but with a `.page--appendix` class that tightens `h2` (22pt instead of 26pt), `.form-question` margins (2.5mm instead of 4mm), and `.form-declaration` padding (3mm instead of 4mm). Without these overrides, the Sophisticated page (3 questions + 4 declarations + signature) overflows A4.
74
+
53
75
  ## Render
54
76
 
55
77
  Same `render-pdf.mjs` pattern as the business plan; viewport 794×1123 (A4 portrait at 96 dpi), deviceScaleFactor 3.125 (300 dpi PNG), `img2pdf --pagesize 210mmx297mm`, `qpdf --linearize`. Output: `html/prospectus/term_sheet.pdf`.
@@ -144,7 +144,7 @@ References: `references/business-plan-template.md` for the section-by-section te
144
144
 
145
145
  ## Stage 3b — Term sheet synthesis
146
146
 
147
- Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 6-to-8-page formal term sheet** sectioned as:
147
+ Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 10-page formal term sheet** sectioned as:
148
148
 
149
149
  1. Cover + preamble + parties (Issuer / Founders / Investors / round size / minimum cheque / target close)
150
150
  2. Share economics & use of proceeds (instrument, valuation, dilution, issue price, share count, use of funds)
@@ -152,8 +152,9 @@ Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 6-to-8-page form
152
152
  4. Governance & shareholder protections (board, info rights, pre-emption, drag/tag, SEIS/EIS posture)
153
153
  5. Closing terms (governing law, IP assignment, conditions to closing, long-form docs timeline)
154
154
  6. Signatures (Company + Investor blocks)
155
- 7. Investor self-certification (UK self-cert criteria, declarations)
156
- 8. Backpage (contact)
155
+ 7. **Appendix A — High Net Worth Individual Investor Statement** (FSMA 2000 / FCA COBS 4 Annex 2 verbatim)
156
+ 8. **Appendix B — Self-Certified Sophisticated Investor Statement** (FSMA 2000 / FCA COBS 4 Annex 4 verbatim)
157
+ 9. Backpage (contact)
157
158
 
158
159
  **Doctrine for the term sheet:**
159
160
 
@@ -163,6 +164,7 @@ Generate `html/prospectus/term_sheet.html` as an **A4 portrait, 6-to-8-page form
163
164
  - **Sole director on IN01 is the director-designate.** A term sheet that names two directors when IN01 names one is a defect.
164
165
  - **SEIS/EIS posture is post-funding obligation, not closing contingency.** Never assured prior to distribution; no representation as to qualifying status. Forms no part of consideration.
165
166
  - **Confidentiality and exclusivity provisions are the only binding clauses.** Everything else non-binding until long-form docs.
167
+ - **FCA self-certification statements are appendices to the term sheet, not separate documents.** The High Net Worth Individual Investor Statement (FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 2) and the Self-Certified Sophisticated Investor Statement (COBS 4 Annex 4) ship as Appendix A and Appendix B. **Use verbatim wording**; never paraphrase regulatory text. Current source: UKBAA's templated PDFs (Feb 2024 versions reflect the post-31 Jan 2024 reverted thresholds: HNW £170k income or £430k net assets; sophisticated director threshold £1.6m turnover). When the regulatory wording changes, the templates change first at UKBAA / FCA COBS Annexes; re-fetch before issue.
166
168
 
167
169
  References: `references/termsheet-template.md`.
168
170
 
@@ -12,8 +12,9 @@ A4-portrait, 6-to-8-page formal term sheet, same render pipeline as the business
12
12
  | 4 | Governance &amp; shareholder protections | Board composition (director-designate per IN01), information rights (≥5% threshold), pre-emption, drag-along / tag-along, share-transfer good-leaver / bad-leaver, SEIS/EIS posture, confidentiality (binding), exclusivity (binding) |
13
13
  | 5 | Closing terms | Governing law (English), expenses (each party bears own), founder IP assignment (deed at first close, no licence-back, no royalty), conditions to closing, long-form documentation timeline |
14
14
  | 6 | Signatures | Company block (director-designate per IN01) + Investor block (name / entity / commitment / signature line) |
15
- | 7 | Investor self-certification (optional) | UK self-cert criteria check-list with signature block |
16
- | 8 | Backpage | Contact card + confidentiality reminder + companies-house identifier |
15
+ | 7 | **Appendix A — High Net Worth Individual Investor Statement** | FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 2 statement, verbatim. Income £170,000 / net assets £430,000 thresholds (post-31 Jan 2024 reverted thresholds). Checkboxes, declaration callout, signature lines. |
16
+ | 8 | **Appendix B — Self-Certified Sophisticated Investor Statement** | FSMA 2000 (Financial Promotion) Order 2005 / FCA COBS 4 Annex 4 statement, verbatim. Conditions A (PE / SME finance professional past 2yr), B (director of company with £1.6m+ turnover past 2yr), C (business-angel network member 6m+). Checkboxes, declaration callout, signature lines. |
17
+ | 9 | Backpage | Contact card (2×2 founder grid: role / name / email / phone) + confidentiality reminder + companies-house identifier |
17
18
 
18
19
  ## Cap table reconciliation
19
20
 
@@ -50,6 +51,27 @@ Issue price = pre-money / pre-investment shares = £1,400,000 / 500,000 = **£2.
50
51
  - **SEIS/EIS posture is post-funding obligation, never closing contingency.** Never assured prior to distribution; no representation as to qualifying status. Forms no part of consideration.
51
52
  - **Confidentiality + exclusivity bind; everything else is non-binding** until subscription &amp; shareholders' agreement.
52
53
 
54
+ ## FCA self-certification appendices — sourcing the verbatim wording
55
+
56
+ Both appendices reproduce the FCA template **word-for-word**. Never paraphrase regulatory text. The FCA Handbook pages (COBS 4 Annex 2 / Annex 4) are JavaScript-rendered and not directly fetchable; the most reliable verbatim source is the **UK Business Angels Association** templated PDFs, updated whenever HM Treasury or the FCA change the thresholds:
57
+
58
+ - High Net Worth: <https://ukbaa.org.uk/wp-content/uploads/2024/02/HighNetWorthStatement.pdf>
59
+ - Sophisticated: <https://ukbaa.org.uk/wp-content/uploads/2024/02/SelfCertifiedStatement.pdf>
60
+
61
+ These are the **Feb 2024 versions**, reflecting the thresholds in force after HM Treasury reverted the January-2024 increases. Current thresholds:
62
+
63
+ | Statement | Condition | Threshold |
64
+ |---|---|---|
65
+ | HNW | A — income | £170,000 in last financial year (excludes one-off pension withdrawals) |
66
+ | HNW | B — net assets | £430,000 (excludes primary residence, loan secured on it, equity released from it, pension, insurance rights) |
67
+ | Sophisticated | A — PE / SME finance professional | last two years |
68
+ | Sophisticated | B — director of company | annual turnover ≥ £1.6 million, last two years |
69
+ | Sophisticated | C — business-angel network | member ≥ 6 months, still a member |
70
+
71
+ **Re-fetch before issue.** Thresholds change. The Feb 2024 templates were issued after HM Treasury reverted a Jan 2024 increase to £170k income / £430k net assets / £1.6m turnover (the original 2023 thresholds were £100k / £250k / £1m). The pattern: if it changes again, UKBAA reissues; re-fetch their PDF and re-render the appendix.
72
+
73
+ Render the appendices in the **same A4 stylesheet as the term sheet** but with a `.page--appendix` class that tightens `h2` (22pt instead of 26pt), `.form-question` margins (2.5mm instead of 4mm), and `.form-declaration` padding (3mm instead of 4mm). Without these overrides, the Sophisticated page (3 questions + 4 declarations + signature) overflows A4.
74
+
53
75
  ## Render
54
76
 
55
77
  Same `render-pdf.mjs` pattern as the business plan; viewport 794×1123 (A4 portrait at 96 dpi), deviceScaleFactor 3.125 (300 dpi PNG), `img2pdf --pagesize 210mmx297mm`, `qpdf --linearize`. Output: `html/prospectus/term_sheet.pdf`.
@@ -342,6 +342,7 @@ Report `DONE` only after:
342
342
  - The **web bundle** exists at `output/web/` and as a zipped `output/<slug>-web.zip` — see `property-brochure → Web bundle` for what it contains. The bundle includes both `brochure.html` and the companion `index.html` (see `property-brochure → Page`), plus a copy of the web PDF named simply `<property_slug>-brochure.pdf` to match the in-page Download links. Smoke-test was performed: an isolated HTTP server returned 200 for every referenced asset (HTML, web-tier images, jpg snapshots, the bundled PDF), and **both** `brochure.html` and `index.html` rendered correctly. Typical zip is 30–50 MB for a 16-page folio.
343
343
  - **Back-page QR codes are clickable.** Each QR is wrapped in an `<a target="_blank">` tag and accompanied by a visible underlined URL beneath the label, so a digital reader can click instead of scan. See `property-brochure → Back-page QR codes`.
344
344
  - The user-facing report names which steps ran and which were reused, **and the chosen orientation**, **and the path to both the canonical print archive and the web zip**.
345
+ - **The web PDF and the web zip are delivered to the user via `SendUserFile` (Claude Code native), not via `admin: file-attach`.** Call `SendUserFile` with both paths in one call: `<property_dir>/output/<property_slug>-brochure-web.pdf` and `<property_dir>/output/<property_slug>-web.zip`. Include a one-line caption naming the property and the bundle size. `admin: file-attach` writes the file into the admin attachment store and returns an `attachmentId` envelope that LOOKS like success, but produces no visible attachment in the chat surface for this channel — that's the wasted first-turn failure mode that ships on every make-brochure run when the agent reaches for the admin tool. Reach for `SendUserFile` first, every time. **30 MiB ceiling:** `SendUserFile` accepts files up to 30 MiB each. The web PDF is well within (~7–15 MB at JPEG-embedded). The web zip can exceed when the bundle carries many photos — if `du -h <slug>-web.zip` reports > 30 MiB, do NOT call `SendUserFile` with it; instead, send the operator the public URL at `<tunnel-url>/files/output/<slug>-web.zip` (the bundle already lives under `output/` which the tunnel serves). The web PDF still goes via `SendUserFile`. Per `system-prompt.ts:267`: *"The tool returns 'N files delivered to user' even when the byte upload silently fails, so the response is not evidence of delivery."* Treat the operator's visible-attachment tile as the only evidence of delivery; if they don't see it, retry once with the public-URL path.
345
346
  - No image was read in violation of the 2000px rule (verifiable: every image read should have been preceded by a `sips`/`identify` measurement, and any over-threshold image was previewed via `/tmp/`).
346
347
 
347
348
  If any condition is unmet, report `DONE_WITH_CONCERNS` and list the gap.
@@ -174,7 +174,7 @@ When any field above is unresolved after consulting its primary source, **stop b
174
174
  - **Doc-comment strip pass runs against BOTH templates.** After substitution, the `<!-- REPLACE … -->` authoring notes must be removed from both `brochure.html` AND `index.html`. A strip pass that covers only the brochure leaves landing-page authoring notes rendering as visible body text whenever a comment delimiter is misplaced. The companion source-side check in `references/build.md → Template authoring hygiene + CI lint` catches the same defect class at template-edit time.
175
175
  - **EPC is mandatory — `TBC` is not shippable.** UK law requires an EPC for any marketed property. The brochure must not render with `epc_rating: "TBC"`, no matter what `property-extract` returned. If the rating is missing or the listing displayed `TBC`, the operator confirmation prompt must demand an actual A–G band (plus current/potential scores and the certificate path) before substitution proceeds. The operator's authoritative fallback is the [EPC Register](https://www.epcregister.com/) — look up by address or postcode, download the certificate, supply the values. `TBC` is the one answer the operator cannot confirm for this field.
176
176
  - **Web bundle ships the PDF, not per-page JPGs.** The bundle does not include `cover-print.jpg … backpage-print.jpg` — those duplicate the brochure content already embedded in `<slug>-brochure.pdf`. The web copy of `brochure.html` has its `.print-img` src attributes cleared so the print stylesheet drops to the live-DOM fallback; operators who want a printable PDF download the bundled PDF directly. See `references/build.md → Clear .print-img src in the web copy`. Shipping both was the historical bundle-bloat defect.
177
- - **Pages with absolutely-positioned bottom elements must reserve their footprint in the in-flow content's padding.** Two absolute elements live at the bottom of every `.page`: the `.folio` page-number strip (`bottom: 8mm`, ~8mm tall → occupies bottom ~16mm) and, on the back page only, the `.back-disclaimer` (`bottom: 16mm`, wraps to up to 5 lines × 3.7mm → occupies bottom ~34.5mm). In-flow content above them (`.mi-foot` with `margin-top: auto` inside `.mi-page`, or `.backpage-inner` content with `justify-content: center`) is a SIBLING of those absolute elements — nothing in CSS structure enforces clearance. The fix is always to pull the in-flow container UP via its parent's `padding-bottom`: `.mi-page` uses **22mm** (folio clearance), `.backpage-inner` uses **42mm** (folio + disclaimer clearance with 4mm gap). Any future page that adds an absolute bottom element must update the in-flow parent's `padding-bottom` accordingly never try to push the absolute element down with `margin-*` (no positional effect on `position: absolute` whose anchor is `bottom`). This is the "Absolute vs in-flow" lesson from the recommendations doc pull the in-flow element, never the absolute one.
177
+ - **Bottom chrome on `.page` is absolutely-positioned and stacks deterministically.** Three classes of bottom element exist: (1) the `.folio` page-number strip (`bottom: 8mm`, ~8mm tall → occupies bottom ~16mm of every page); (2) `.back-disclaimer` on the back page (`bottom: 16mm`, wraps to up to 5 lines × 3.7mm → occupies bottom ~34.5mm); (3) `.mi-foot` on the Material Information page (`bottom: 22mm`, ~7mm tall → occupies bottom ~22–29mm). All are `position: absolute`, anchored to their nearest positioned ancestor (`.page` which is `position: relative`). In-flow content above (e.g. `.mi-grid` inside `.mi-page`, `.backpage-inner` centred content) is a SIBLING in the stacking flow — nothing in CSS structure enforces clearance from the absolute layer. The fix is to either (a) **make the relevant footer absolute** (the approach used for `.mi-foot` to prevent oversized `.mi-grid` from pushing the disclaimer into the folio), or (b) **pull the in-flow container up via its parent's `padding-bottom`** when the footer is small and predictable (e.g. `.backpage-inner` uses 42mm to clear folio + disclaimer with a 4mm gap). Never use `margin-*` on a `position: absolute` element whose anchor is `bottom` — it has no positional effect.
178
178
  - **Folio is plain text on whitespace or absent — never chrome over imagery.** The `.folio > span` carries no background, blur, padding, border-radius, or shadow. It is plain text in `--teal-900` that sits on the clean whitespace reserved at the page bottom (see the previous rule on padding-bottom clearance). The folio is **hidden entirely** on full-bleed-bottom pages: `.cover`, `.page.intermission`, `.page.folio-dark`, and any `.page` whose body wraps a `.feature-page` (photo+panel layout where the photo bleeds to the page bottom). Never reintroduce a folio-pill background to "make it readable over the image" — that's competing chrome on the page; suppress the folio on that page instead. Any new full-bleed-bottom page class must be added to the `.folio` `display: none` selector in `references/template.html`.
179
179
  - **Page 13's `{{ siteplan_src }}` is never the floorplan.** Page 13 (the site-plan / plot page, `.page siteplan-page`, "Continued, Chapter VI · The plot") expects a plot drawing, site plan, or aerial photo — an image distinct from the floorplan that page 14 already carries. If no such image is naturally available (no `<slug>-siteplan.png` line-art, no aerial photo on disk), the operator confirmation prompt MUST list `{{ siteplan_src }}` as an unresolved field and request a substitute by name — a wide exterior, a paddock/grounds photo, a drone shot of the property in its setting, or a hand-marked site sketch. Silently falling back to the floorplan duplicates page 14's content and is a defect (the brochure ships with the same image on two consecutive pages — visible immediately on review). The fallback is forbidden by the same doctrine as `TBC`: never coerce a field to a default the operator did not confirm. If the operator cannot supply a substitute, the brochure drops to the 12-page reduced layout (no page 13) — not to a 16-page layout with a duplicated floorplan.
180
180
  - **Verification covers every page in the deliverable — sampling is a defect, not a shortcut.** `scrollHeight` fit checks, computed-style collision probes (`.mi-foot` ↔ `.folio` gap, `.back-disclaimer` ↔ in-flow content, any future absolute-bottom element vs in-flow neighbour), and visual review before declaring done all walk **every page** in the 16-page folio (or 12-page reduced layout). "Sample-checked 3 of 12 pages" or any variant ("spot-checked the spreads I changed", "skimmed a few representative pages") is not authorised — the skill explicitly says "verify every page" in `references/build.md → Live editing workflow` step 8 and in `references/structure.md`. The deliverable is the brochure as a whole; a defect on an unchecked page ships exactly as readily as a defect on a checked one. If a probe is expensive enough that walking 16 pages feels burdensome, the cost is the probe's, not the skill's — propose a faster probe rather than narrowing the coverage.
@@ -1023,7 +1023,16 @@
1023
1023
  letter-spacing: 0.01em;
1024
1024
  }
1025
1025
  .mi-foot {
1026
- margin-top: auto;
1026
+ /* Absolute positioning — anchored to page bottom so an oversized .mi-grid
1027
+ cannot push the disclaimer into the folio zone. The folio sits at
1028
+ bottom 8mm with ~8mm visible height (occupies 8-16mm from page bottom);
1029
+ this anchor at 22mm leaves a 6mm gap above the folio. Any .mi-grid
1030
+ overflow extends UNDERNEATH this footer (clipped by .page's
1031
+ overflow:hidden at 210mm) without disrupting the chrome layer. */
1032
+ position: absolute;
1033
+ left: 14mm; right: 14mm; bottom: 22mm;
1034
+ background: var(--paper-25);
1035
+ z-index: 3;
1027
1036
  padding-top: 14px;
1028
1037
  border-top: 1px solid var(--rule);
1029
1038
  font-family: var(--serif);