# Phase 03 – Rigid Frontend API & PBS Leak Containment (Junie PR Templates) > Goal: **finish Phase 03 with JVM-like discipline** by making the **Backend (BE) the source of truth** and forcing the PBS Frontend (FE) to implement a **strict, minimal, canonical** contract (`frontend-api`). > > Strategy: **surgical PRs** that (1) stop PBS types from leaking, (2) replace stringy protocols with canonical models, and (3) make imports/exports/overloads deterministic across deps. # Notes / Operating Rules (for Junie) 1. **BE is the source of truth**: `frontend-api` defines canonical models; FE conforms. 2. **No string protocols** across layers. Strings may exist only as *display/debug*. 3. **No FE implementation imports from other FE implementations**. 4. **No BE imports PBS modules** (hard boundary). 5. **Overload resolution is signature-based** (arity alone is not valid). --- ## PR-03.07 — Phase 03 cleanup: remove legacy compatibility branches and document boundary ### Title Remove legacy string protocol branches and document FE/BE boundary rules ### Briefing / Context After canonical models are in place, we must delete compatibility code paths (`alias/module`, `svc:` prefixes, prefix matching, etc.) to prevent regressions. ### Target * No legacy synthetic module path support. * No string prefix matching for overloads. * Documentation: “BE owns the contract; FE implements it.” ### Scope * Delete dead code. * Add `docs/phase-03-frontend-api.md` (or in-crate docs) summarizing invariants. * Add CI/lints to prevent BE from importing PBS modules. ### Checklist * [ ] Remove legacy branches. * [ ] Add boundary docs. * [ ] Add lint/CI guard. ### Tests * Full workspace tests. * Golden tests. ### Risk Low/Medium. Mostly deletion + docs, but could expose hidden dependencies.