Phase 1 Data Model: Implement-Loop Friction Quick-Wins II
This mission mutates behavior around existing artifacts rather than introducing new schemas. The "entities" are the artifacts the guards read/write and the invariants each fix must preserve.
E-01 — WP runtime frontmatter (in tasks/WP##.md)
block the allocator's uncommitted-artifact check; any other diff still blocks. (#2093 lineage.)
- Fields:
shell_pid,shell_pid_created_at,base_branch,base_commit,planning_base_branch. - Nature: dynamic runtime state written by a claim; NOT operator-authored planning content.
- Invariant (FR-001): a WP file whose only diff vs the placement ref is these fields must not
E-02 — Analysis-report freshness hash inputs
is normalized out of the tasks.md digest; a change to substantive row text still changes it.
- Inputs: normalized digest of
spec.md,plan.md,tasks.md(+ charter). - Invariant (FR-002): status-cell churn (
[ ]↔[x]/[X]/[D]/[P]) — bullet OR pipe-table —
E-03 — Pre-review gate verdict
no_coverage due to a missing-pytest interpreter or a contention-driven false timeout. Gate still enforces by default (skip only via the shipped --skip-pre-review-gate / disable env).
- States:
pass/fail/no_coverage(inconclusive) / timeout→no_coverage. - Interpreter: resolved via
uv run(project venv) withsys.executablefallback. - Invariant (FR-003/004): when
uv run pytestis green, the verdict is a real pass/fail — never
E-04 — agent_profiles_manifest.json entry
output_path (target of this mission).
(POSIX), out-of-tree falls back absolute; the reader reconstructs an absolute live Path from either form. In-memory output_path and the internal manifest key stay absolute.
- Fields:
id,file_hash,source_hash,source_path(already repo-relative),projection_version, - On-disk invariant (FR-006/NFR-004):
output_pathfor an in-tree entry is stored repo-root-relative
E-05 — Issue-matrix approval blocker message
detail (found/normalized columns).
detail (offending/normalized column); "Missing rows: …" appears only when rows actually parsed.
- Shape: a human-facing blocker string; carries
ISSUE_MATRIX_SCHEMA_DRIFTdiagnostics with a - Invariant (FR-007): when a mandatory column is malformed, the message leads with the schema-drift
E-06 — Bulk-edit inference score
triggered sum; a genuine bulk edit ("rename all occurrences", "rename … across the codebase") still yields triggered = True.
- Fields:
triggered: bool,matched_phrases: list, weighted keyword sum vsINFERENCE_THRESHOLD. - Invariant (FR-008):
LOW_WEIGHT_KEYWORDScontribute tomatched_phrases(display) but not to the
E-07 — setup-plan/setup-specify result
populated-but-insufficient artifact still yields blocked; a substantive committed artifact yields success. Slash-command templates that branch on result handle the new state.
- States:
success/blocked/ (new)scaffolded/awaiting_content. - Invariant (FR-009): first happy-path scaffold write yields the new non-error state; a
E-08 — move-task planning-artifact staging (coord topology)
resolver in tasks_move_task.
is never asked to commit kitty-specs/; STATUS_STATE placement semantics are byte-for-byte unchanged vs merged #168.
- Surfaces:
commit_guard.block_mission_specs(lane-branchkitty-specs/protection), the staging - Invariant (FR-010/C-002): staging routes through the established authority path; the lane branch