| name | triage-gate |
|---|---|
| created | 2026-04-25 |
| status | stable-interface |
| audience | every advisor skill in the biz pack (`/slo-legal`, `/slo-accounting`, `/slo-equity`, `/slo-fundraise`) |
| purpose | Single source of truth for the four hard-block predicates that every advisor skill cites. Adding a fifth predicate is a `/slo-architect` decision, not a per-milestone option. Predicate IDs are stable interface — renaming or removing one breaks the cross-skill citation contract enforced by `crates/sldo-install/tests/e2e_biz_a_m2.rs`. |
Every advisor skill (/slo-legal, /slo-accounting, /slo-equity, /slo-fundraise) reads this file and applies the four predicates BEFORE entering draft mode. If any predicate is true, the skill MUST refuse to draft and route to triage with the appropriate professional (lawyer / accountant / DPO / accountant + lawyer).
Predicate evaluation is the LLM's responsibility — these are natural-language tests that the skill applies to the founder's stated situation. The fingerprint of "did the gate fire?" goes into every drafted artifact's triage_gate_passed: bool frontmatter; firing routes to the triage mode output instead.
| id | name | predicate | if_true | route_to | rationale_doc |
|---|---|---|---|---|---|
gate-1-regulated |
Regulated domain | Is the matter touching FCA, MHRA, ICO, healthcare, financial services, or any other regulator with statutory enforcement powers over the founder or their counterparty? | route_to_triage |
lawyer |
references/biz/jurisdiction-uk.md (M2 — list of UK regulators in scope) |
gate-2-deal-value-over-5k |
Deal value above threshold | Is the deal value, contract value, or annual value of the engagement greater than £5,000 (GBP, exclusive of VAT)? | route_to_triage |
lawyer |
references/biz/cost-baseline-jpp-law-2026.md (the threshold tracks roughly half the cost of the cheapest fixed-fee solicitor engagement; see provenance) |
gate-3-counterparty-has-lawyer-or-their-paper |
Counterparty has a lawyer OR founder is signing their paper | Is the counterparty represented by a lawyer in this matter, OR is the founder being asked to sign a contract drafted by the counterparty (rather than send their own)? | route_to_triage |
lawyer |
none (operational principle: defending interests is harder than asserting them) |
gate-4-gdpr-document |
GDPR-related document | Does the requested artifact relate to GDPR / UK GDPR — privacy notice, ROPA (record of processing activities), DPA (data processing agreement), internal data-protection policy, lawful-basis statement, DPIA (data protection impact assessment), DSAR (data subject access request) procedure, breach-notification template, or any other document the ICO would expect to see in a controller's accountability file? | route_to_triage |
dpo (or lawyer + dpo if no DPO) |
references/biz/ico-duaa-index.md (M2 — DUAA 2025 commencement + lawful-basis examples), references/biz/ico-enforcement-reality.md (M2 — descriptive provenance for the broad block) |
- GDPR broad hard-block on
draft(locked 2026-04-25).gate-4-gdpr-documentis unconditional refusal ofdraftmode for ANY GDPR-related document. Translate and triage are permitted. Defensible on professional-negligence + upside-asymmetry grounds; the £17.5M PECR ceiling under DUAA 2025 (Stage 3 commenced 5 February 2026) makes the tail unbounded even though sub-£1M-turnover-private-company enforcement clusters at PECR direct marketing rather than Article 13. Reversal requires a fresh/slo-architectpass with new ICO enforcement evidence. - Deal-value threshold £5,000 (locked 2026-04-25). Deliberately conservative for a UK seed-stage founder. The threshold is a single number, not a complexity score — borderline cases (£4,800 + complex IP scope, £6,200 + simple month-to-month NDA) should be evaluated alongside the other three predicates. If gate-2 passes (under £5,000) but gate-1 or gate-3 fires, the skill still routes to
triage.
When a predicate fires, the skill MUST:
- Refuse to enter
draftmode for the requested artifact. - Produce a
triage-mode artifact instead atdocs/biz-public/<area>/triage-<slug>-<date>.md. - Frontmatter MUST carry
triage_gate_passed: falseand agates_fired:list naming every predicate that fired (e.g.,gates_fired: [gate-2-deal-value-over-5k, gate-3-counterparty-has-lawyer-or-their-paper]). - Body MUST cite each fired predicate by ID and quote the predicate text.
- Body MUST include a "what to bring to your [lawyer / accountant / DPO]" briefing checklist tailored to the founder's situation.
- Body MUST cite
cost_baseline_ref: references/biz/cost-baseline-jpp-law-2026.md@<retrieval-date>in the frontmatter even though no draft was produced (so the founder sees the cost-of-this-being-a-real-engagement number).
- This file is NOT executable code. The predicate-id strings are read by
/slo-critiqueand structural-contract tests as Markdown prose, never spliced into shell, never invoked as subprocess names. - This file is NOT a complete decision tree for whether to engage a professional. It is the floor: every advisor skill applies AT LEAST these four predicates. Skills MAY add domain-specific additional checks in their own SKILL.md prose (e.g.,
/slo-fundraiseadds an SEIS/EIS Advance Assurance check; that is skill-specific, not a fifth predicate here). - This file is NOT authorization to relax any predicate. Advisor SKILL.md prose may make a predicate's wording more concrete for that domain, but cannot override the routing or refuse-to-draft semantics.
- This file is NOT a substitute for
SECURITY.md(root) or the threat model. It is the operational source-of-truth for the gates;SECURITY.mddocuments project-wide rules and the threat model documents abuse cases.
Adding a fifth predicate, removing a predicate, or renaming a predicate ID requires:
- A fresh
/slo-architectpass against new evidence (typically a research dossier or an incident retrospective). - Update of
docs/slo/design/biz-skill-pack-{overview,interfaces,threat-model}.md. - Update of every advisor skill's SKILL.md to cite the new / renamed predicate.
- Update of
crates/sldo-install/tests/e2e_biz_a_m2.rs(cross-skill citation test) to expect the new predicate-id set. - Migration entry in
docs/slo/completed/RUNBOOK-BIZ-SKILL-PACK-A.md(or the runbook performing the change). /slo-critiquesecurity persona review of the change before it merges.
The structural-contract test triage_gate_predicate_set_unchanged_from_m1 in e2e_biz_a_m2.rs is the immutability enforcement mechanism. It asserts the predicate-id set is exactly {gate-1-regulated, gate-2-deal-value-over-5k, gate-3-counterparty-has-lawyer-or-their-paper, gate-4-gdpr-document}.