# INTERCAL Tripwire ## Role INTERCAL does not execute production workloads. It acts as a compiler-shaped customs checkpoint: unpleasant, deterministic, and impossible for spaghetti code to charm its way through. Julia and ASP decide whether code is safe. INTERCAL encodes their decision into a compiler-enforced tripwire. ## Design The INTERCAL generator takes the verified borrow chain and structural analysis, then produces: - For a valid borrow graph: one exact compiler-valid INTERCAL program - For an invalid graph: a deterministic rejection artifact by violation class ## Violation Encoding | Violation Class | INTERCAL Artifact | |----------------|-------------------| | Alias violation | Invalid SELECT mask | | Ownership cycle | Unresolved label dependency | | Use-after-move | Missing resource array slot | | Hidden mutation | Etiquette imbalance marker | | Undeclared effect | Forbidden COME FROM edge | | Type instability | Invalid width transition | ## Encoding Elements - `MINGLE` for resource aggregation - `SELECT` for mode validation - Arrays for resource state tracking - Labels for scope boundaries - Controlled `COME FROM` for ownership edges - Compiler etiquette distribution for validity checksums ## Critical Rule ``` INTERCAL does not decide whether code is safe. Julia and ASP decide. INTERCAL encodes their decision into a compiler-enforced tripwire. ``` This prevents the comedy language from becoming the source of truth. ## Profiles Compiler profiles are stored in `intercal/profiles/`. The default profile (`default.toml`) configures: - Etiquette level (strict) - Label resolution mode (deterministic) - MINGLE/SELECT distribution rules - COME FROM edge restrictions ## Templates Templates in `intercal/templates/` define the structure for: - Valid chains (all checks pass) - Alias violations - Cycle violations - Spaghetti violations