Data Model: Merge-seam placement, test-isolation sweep & model-slot verdict

No persistent product data changes. The entities below are code-level value objects and test-gate records.

Merge domain (#5119)

EntityFieldsInvariants
MergeDriverOutcome (frozen dataclass)`notice: str \None`
MergeDriverError (exception)message = str(exc)Wraps foreign errors with from exc; message text is what stderr prints.
MergeDriverBody (callable)(base: str, ours: str, theirs: str) -> MergeDriverOutcomeWrites the reconciled result to ours; never exits the process; never imports specify_cli.cli.
MERGE_DRIVER_BODIES (mapping)command name → bodyKeys == _MERGE_DRIVERS-derived command names == merge-driver-* registrars (6).
Golden caseO, A, B, expected_A, case.json{exit_code, stdout, stderr, absent}Captured pre-move; post-move diff over the goldens dir is empty.

Census gate (#5118)

EntityFieldsInvariants
Sitefile, qualname, kind, lineno (display only), token_line (display only)Detected in test code only; excludes SPEC_KITTY_HOME writes owned by _home_pin_scan and patch.dict calls.
Key(file, qualname, kind)No line numbers.
Allowlist rowkey + count + class + reasoncount == actual site count for the key; reason non-empty for non-transitional classes.
ShardS1..S8 \deferred-01M3EW3Z
Justification classtransitional-sweep, process-bootstrap, subprocess-entry, leak-sentinel, deferred-01M3EW3ZAfter Seal: transitional-sweep forbidden; each other class capped (6 / 13 / 2 / 16).

Lifecycle

stateDiagram-v2
  [*] --> Red: WP01-A gate + empty allowlist (471 unallowlisted)
  Red --> Green_transitional: WP01-B shards S1..S8 + deferred-01M3EW3Z.yaml
  Green_transitional --> Green_transitional: sweep WP drains its shard's transitional rows
  Green_transitional --> Sealed: Seal test (no transitional rows; caps frozen)

Agent profile (#5117)

EntityFieldInvariants
AgentProfileSchema.preferred_model (schema_models.py)YAML key model, `str \None`, description = consumer-authored routing preference
Routing recommendation candidateprovenance = profile, model_id = authored modelReached from a profile YAML on disk via the profile repository and invocation.executor._compute_recommendation.