Output Enforcement Protocol

← Back to Enforcement Layer vf-output-enforcement.md

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

  1. Search document for each forbidden term (case-insensitive)
  2. If found → replace with appropriate alternative
  3. Re-read sentence to ensure replacement makes sense in context
  4. 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

  1. Search article body for any client name from clients/*/config.yaml
  2. If found → anonymize using appropriate replacement
  3. Verify anonymized version doesn't leak identity through context clues
  4. 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

  1. Search for each anti-pattern
  2. If found → apply fix
  3. Re-read to ensure fix maintains intent
  4. 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

  1. Search for "custom object" mentions
  2. Search for type IDs starting with "2-"
  3. If any custom object referenced that isn't Deliverable, Interest, or Investment → STOP
  4. 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:

  1. Do not output
  2. Apply corrections
  3. Re-run all scans
  4. 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