Output Enforcement Protocol
Run this protocol before delivering any document, specification, code, or communication. Purpose: catch violations before output reaches Chris. This protocol applies equally to all AI leaders (V, Sage, Pax) — not just V.
When to Run
- Before presenting any document
- Before finalizing any specification
- Before committing any code
- Before sending any client communication
- Before creating any HubSpot content
Scan 1: Language Violations
Search your output for forbidden terms. These are not suggestions—they are violations.
Forbidden → Required Replacements
| Forbidden | Replace With |
|---|---|
| leads | relationships, signals |
| prospects | relationships |
| conversion | natural progression |
| convert | progress naturally |
| funnel | Value Path |
| pipeline (for progression) | Value Path |
| MQL | (remove or) early-stage signal |
| SQL | (remove or) readiness signal |
| nurture | support, enable, serve |
| nurturing | supporting, enabling |
| targets | relationships, goals |
| closed-won | partnership formed |
| closed-lost | (remove or) didn't proceed |
| quick wins | (remove entirely) |
| low-hanging fruit | (remove entirely) |
Scan Process
- Search document for each forbidden term (case-insensitive)
- If found → replace with appropriate alternative
- Re-read sentence to ensure replacement makes sense in context
- If no good replacement exists → restructure sentence
Do not output documents containing forbidden terms.
Scan 1b: Client Confidentiality
Published content (articles, social posts, website pages) must NEVER name specific clients. Client work is confidential. Anonymize all references.
Forbidden → Required Replacements (Published Content Only)
| Forbidden | Replace With |
|---|---|
| Specific client names (e.g., "Paragon", "SecuredTech") | "a client", "an enterprise client", "a coaching engagement" |
| Industry + detail that identifies a client | Generalize: "a Napa winery" → "a hospitality business" |
| Exact revenue figures tied to a client | "a six-figure engagement", "a retainer client" |
Scope
This applies to:
- Articles published via
publish-article.ts - Social posts generated via
distribute-article.ts - Website pages visible to the public
- Any content that will be indexed or shared externally
This does NOT apply to:
- Internal documents (session syntheses, relationship briefs, HubSpot notes)
- Client communications (emails, Slack)
- Internal briefings (
/daily-ops,/meeting-prep) - Portal content (authenticated, per-client)
Scan Process
- Search article body for any client name from
clients/*/config.yaml - If found → anonymize using appropriate replacement
- Verify anonymized version doesn't leak identity through context clues
- Re-read to ensure the point still lands without the name
Do not publish content containing identifiable client references.
Scan 2: Architecture Anti-Patterns
Search for structural violations in specifications and code.
Code Anti-Patterns
| Pattern | Violation | Fix |
|---|---|---|
clientId: "xyz" |
Hardcoded client ID | Query from HubSpot |
slug: "client-name" |
Hardcoded slug | Query from HubSpot Company |
clients: { paragon: {...} } |
Client config object | Use HubSpot Company properties |
if (client === "xyz") |
Client-specific logic | Use data-driven approach |
hubspot-list-properties |
Times out on complex objects | Sample records instead |
2-[new-id] |
Unknown custom object | Only 2-18484424, 2-54301725, and 2-53994804 exist |
Specification Anti-Patterns
| Pattern | Violation | Fix |
|---|---|---|
| "Phase 1 (Weeks 1-4)" | Calendar-based phases | Trust-based milestones |
| "Week 1-2: Setup" | Time-bound tasks | Architectural dependencies |
| "Start with X, then Y" | Sequential prioritization | State complete target |
| "Quick wins include..." | Fallback framing | Remove, state full scope |
| "If time permits..." | Scope hedging | State complete architecture |
| "Priority 1, 2, 3" | Human-paced ordering | Architectural dependencies |
| "MVP includes..." | Scope reduction | State complete target |
Scan Process
- Search for each anti-pattern
- If found → apply fix
- Re-read to ensure fix maintains intent
- If uncertain → flag for review rather than output
Do not output specifications containing anti-patterns.
Scan 3: Framing Check
Evaluate overall document framing.
Questions to Ask
| Question | If Yes → |
|---|---|
| Does this assume human-paced execution? | Reframe for AI execution |
| Does this include fallback options? | Remove, specify complete target |
| Does this hedge scope? | State complete architecture |
| Does this ask "which first?" | Remove, state dependencies only |
| Does this soften with "initially" or "to start"? | Remove qualifier, state target |
| Does this include "success metrics"? | Remove unless explicitly requested |
| Does this sequence by difficulty? | Reframe as dependencies |
Framing Corrections
Wrong: "We'll start with the dashboard, then add other sections as time permits." Right: "The portal has 10 sections. All are required. Dashboard depends on authentication; authentication depends on Company properties."
Wrong: "Phase 1 focuses on quick wins to demonstrate value." Right: "Target state includes [complete list]. Architectural dependencies: [what must exist first]."
Wrong: "Priority 1 is authentication because it's foundational." Right: "Authentication requires Company properties to exist. All other sections require authentication."
Scan 4: Custom Object Verification
If document references HubSpot objects, verify custom object claims.
Rule
There are exactly 3 custom objects:
- Deliverable (2-18484424)
- Interest (2-54301725)
- Investment (2-53994804)
Scan Process
- Search for "custom object" mentions
- Search for type IDs starting with "2-"
- If any custom object referenced that isn't Deliverable, Interest, or Investment → STOP
- This is a bias error. Correct before output.
Common Bias Errors
| Assumed Custom Object | Reality |
|---|---|
| "Signals custom object" | Interest is the custom object (2-54301725) |
| "Project custom object" | Project is NATIVE (0-970) |
| "Appointment custom object" | Appointment is NATIVE (0-421) |
| "Course custom object" | Course is NATIVE (0-410) |
| "Listing custom object" | Listing is NATIVE (0-420) |
Enforcement Complete
When all scans pass:
- Document is cleared for output
- Proceed with delivery
When any scan fail:
- Do not output
- Apply corrections
- Re-run all scans
- Output only when all pass
Quick Checklist
Before any output:
- No forbidden language (leads, funnel, conversion, etc.)
- No client names in published content (articles, social, website)
- No hardcoded client configuration
- No calendar-based phases
- No sequential prioritization
- No scope hedging or fallback framing
- No custom objects beyond Deliverable/Interest/Investment
- Framing is AI-native, not human-paced