# Clean-room fork from claude_skill_owl with hard freeze on the sister project

## Status

accepted (2026-05-28)

## Context

spt-core is the rebuild of `claude_skill_owl` (today's modern SPT) into a harness-independent core. The sister project works but is fragile: each feature release introduces 2–5 regressions, often in unprecedented ways, because the substrate grew rapidly from a much narrower starting point and carries the resulting tech debt. spt-core also commits day-one to several architectural shapes (endpoint type system, networking, terminal wrapper as backbone, untethering from Claude Code) that change foundational invariants the sister project assumes.

## Decision

Build spt-core as a clean-room fork. Empty workspace, new crate boundaries, fresh lifecycle invariants. Rejected alternatives: rename-and-evolve in-place (preserves the fragility) and a hybrid crate-restructure-with-bulk-port (still drags fragile foundations into the new shape).

**Mitigations baked in:**

1. **Copy-verbatim the commodity layer.** Wire formats (`<EVENT>` envelope grammar, TCP registry RPC), the SQLite spool schema/DDL, `info.json` perch metadata shape, and self-contained utility modules are stable and well-tested. Reimplementing them clean-room reintroduces bugs that took months to find in the sister project. Clean-room applies to architecture and lifecycle, not to every artifact.

2. **Harvest hazards before coding.** Author `KNOWN-HAZARDS.md` from the sister project's invariants and historical bug surface (pid reuse, ephemeral perch lifetimes in `ring`, binary handoff state migration, orphan false-positives during `/clear`, working perch teardown ordering, etc.). It becomes a test checklist for spt-core so rediscovery cost is paid once.

3. **Hard freeze on claude_skill_owl from 2026-05-28.** Only security and breakage fixes during the rebuild — no new features, no refactors. Soft and no-freeze policies expand the parity moving target indefinitely; hard freeze accepts living with the sister project's current bugs in exchange for finishing.

## Consequences

- Dual-maintenance burden is bounded by the freeze, not eliminated. Any breakage fix landed on claude_skill_owl must be considered for porting into spt-core's design (often shape-different, sometimes obsolete).
- The sister project keeps shipping until the rebuilt spt plugin (built atop spt-core) reaches feature parity. Until then, the user runs claude_skill_owl in production.
- The "feature parity" bar is whatever the sister project does on the freeze date — not a moving target.
