Tasks: Op record auto-commit skips repos that do not track kitty-ops
Mission: op-record-commit-skip-untracked-01M57Z15 · Branch: issue-6410-op-record-commit-target (plans and lands here; it reaches main through a PR) · Topology: single_branch (WPs run in sequence in the write checkout)
WP01 — Op commit policy and operator-facing reporting (code_change)
Prompt: tasks/WP01-op-commit-policy.md · Requirements: FR-001..FR-006, NFR-001, NFR-002, C-001, C-002
- T001 Red-first: issue-pinned
@pytest.mark.regressionrepro. It runscompletethrough the CLI on an issue branch, in a repository whosemaintracks no Op record, and asserts the branch's commit list is unchanged. It must be RED on the base. - T002 Add
src/specify_cli/invocation/op_commit_policy.py: unbiased primary refs, the ULID-record tracked probe, thecheck-ignore --no-indexprobe and the skip reason. - T003 Wire it into
ProfileInvocationExecutor._commit_op_recordwith a per-executor cache. AddOpCommitOutcome.skipped. A probe error becomes a skip. - T004 Render it: the CLI
completeskip line and a corrected refusal warning; the doctor sweep'sskipped:<reason>value and the doctor human output; thestate/contract.pynote; the executor comment. - T005 Tests: focused unit tests for the policy module, covering positive controls for every predicate,
trunk-only origin-less, special files, stale local ref and the ignore of a tracked spine. Rework the existing executor, doctor and e2e fixtures to track one ULID record onmain. Convert the regression repro into focused tests.
WP02 — Docs and changelog (planning_artifact)
Prompt: tasks/WP02-docs-changelog.md · Depends on WP01 · Requirements: FR-004, FR-005
- T006
docs/architecture/trail-model.md: describe the conditional commit and the skip, and state durability truthfully. - T007
docs/changelog/CHANGELOG.md[Unreleased]→ Fixed entry (#6410), impact-first, before → after.