Invariant (Studio) mark
Invariant(Studio)
← Back to Operator Notes
Postmortem2026-02-06Read-only · Immutable

Scientia Parent Framing Patch (Phase 3A)

# Operator Notes — 2026-02-06 — Scientia Parent Framing Patch (Phase 3A)

**Scope:** Option 3A parent-framing (copy/UI only). No new pages. No productization.  
**Primary file touched:** `/apps/page.tsx`  
**IGR-0.7:** internal CI language-policy gate (lexical/term-based).

## What went wrong

### CI policy surfaced late as a terminology constraint
- IGR-0.7 blocks certain terms regardless of intent or context.
- A blocked token appeared in a section label; the gate is lexical (term match), not meaning-aware.
- Result: CI failed after a logically correct copy pass.

### Assumptions about “safe vocabulary”
- We assumed canonical internal terminology was safe in documentation-only contexts.
- The repo treats some words as globally sensitive even when used structurally.

### Scanner feedback was indirect
- CI output pointed to a pattern match rather than intent.
- Manual inspection was vital to find the exact triggering line.

## What went right

### The gate worked as designed
- It prevented ambiguous language from shipping.
- Enforcement stayed consistent even when intent was benign.

### Architecture separation held under pressure
- Scientia vs Scientia.io separation remained intact.
- System ≠ platform ≠ engine ≠ lens boundaries held.
- Option 3A scope held (no new pages, no productization).

### Minimal, localized correction
- The issue was isolated to `/apps/page.tsx`.
- A small terminology shift toward “evidence / sources / context” resolved the blocker without ripple effects.

### Process discipline paid off
- Copy-only, path-safe changes made the fix fast and easy to audit.

## What was accomplished

### Scientia parent framing landed (Option 3A)
- Clear hierarchy on `/apps`:
  - Scientia (system doctrine)
  - Scientia.io (runtime/interface)
  - Engines: RadixOS, Solum, Pondus, Custos
  - Lenses: listed on `/apps` (unchanged)
- No implied product catalog, onboarding, or SaaS posture.

### Custos de-productized across the surface
- `/apps`: Custos reframed as execution & workflow layer (no authority).
- `/ops-toys`: moved from sprint/product language to an internal-layer explainer with a handoff to services.
- `/services`: ownership emphasized as Invariant Execution Kits, with Custos explicitly internal.

### Invariant clarified without governance drift
- Execution kits are studio-delivered artifacts.
- Built using Custos, not sold as Custos.
- Preserves company ≠ system ≠ layer invariants.

### CI + language alignment improved
- We now have a concrete example of “common term, disallowed by policy gate.”
- Future copy can proactively avoid terms that trigger scanners.

## Forward-looking lessons
- Treat CI language gates as part of the system, not just tooling.
- Maintain a blocked-vocabulary map for documentation, not only code.
- Prefer “evidence / sources / context” phrasing in parent framing.