os-backlog body checker rejects a check: without a backticked command #817

Closed
opened 2026-09-28 21:48:59 +00:00 by jared · 3 comments
Owner

Problem

ADR-0244 makes the required-work gate step run each check: `<command>` from a ticket's Required work list. A check: written as free text cannot run. #814 makes TicketShape at implementation-open reject such a line. ADR-0209 requires the os-backlog ticket body checker to apply the same rule, so a malformed check fails when the ticket is written, not when a pipeline opens.

Reproduce

n/a: design ticket. The os-sdlc half is #814.

Approach

Add the rule to the os-backlog ticket body checker that ADR-0209 pairs with TicketShape::RequiredWork. A Required work item that contains check: must follow it with a backticked command. The checker rejects the body and names the item otherwise. Use the same wording as the os-sdlc refusal from #814.

Decision record: ADR-0244 (amends ADR-0209).

Required work:

  1. The os-backlog ticket body checker rejects a Required work item whose check: has no backticked command, and names the item.

Acceptance criteria

  1. Given a ready-for-agent ticket body with a Required work item check: grep foo prints nothing, when the os-backlog body checker runs, then it rejects the body and names that item.
  2. Given a ticket body whose check: items each have a backticked command, when the checker runs, then it accepts the body.
  3. Given a ticket body with Required work items and no check:, when the checker runs, then it accepts the body.

Owner sketch

class Backlog::TicketBodyChecker
  def problems
end

Origin

  • Trigger: /os-sdlc:implement 814 needs one --target; #814 spans os-sdlc and os-backlog
  • Improvised this session: none
  • Chain: os-backlog half of #814 cannot run in the os-sdlc target <- one target per implementation-open <- DESIGN (ADR-0209 lockstep across two plugins)
  • Root candidate: this ticket
  • Where: plugins/os-backlog (TicketBodyChecker)
  • Session: 47a537c2-08a1-4d3c-9688-75df56dfdd3d
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-ticket-808/47a537c2-08a1-4d3c-9688-75df56dfdd3d.jsonl
  • Related: #814
## Problem ADR-0244 makes the `required-work` gate step run each ``check: `<command>` `` from a ticket's `Required work` list. A `check:` written as free text cannot run. #814 makes `TicketShape` at `implementation-open` reject such a line. ADR-0209 requires the os-backlog ticket body checker to apply the same rule, so a malformed check fails when the ticket is written, not when a pipeline opens. ## Reproduce n/a: design ticket. The os-sdlc half is #814. ## Approach Add the rule to the os-backlog ticket body checker that ADR-0209 pairs with `TicketShape::RequiredWork`. A `Required work` item that contains `check:` must follow it with a backticked command. The checker rejects the body and names the item otherwise. Use the same wording as the os-sdlc refusal from #814. Decision record: ADR-0244 (amends ADR-0209). Required work: 1. The os-backlog ticket body checker rejects a `Required work` item whose `check:` has no backticked command, and names the item. ## Acceptance criteria 1. Given a ready-for-agent ticket body with a `Required work` item `check: grep foo prints nothing`, when the os-backlog body checker runs, then it rejects the body and names that item. 2. Given a ticket body whose `check:` items each have a backticked command, when the checker runs, then it accepts the body. 3. Given a ticket body with `Required work` items and no `check:`, when the checker runs, then it accepts the body. ## Owner sketch ```ruby class Backlog::TicketBodyChecker def problems end ``` ## Origin - Trigger: `/os-sdlc:implement 814` needs one `--target`; #814 spans os-sdlc and os-backlog - Improvised this session: none - Chain: os-backlog half of #814 cannot run in the os-sdlc target <- one target per implementation-open <- DESIGN (ADR-0209 lockstep across two plugins) - Root candidate: this ticket - Where: plugins/os-backlog (TicketBodyChecker) - Session: 47a537c2-08a1-4d3c-9688-75df56dfdd3d - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-ticket-808/47a537c2-08a1-4d3c-9688-75df56dfdd3d.jsonl - Related: #814
Author
Owner

Work started on branch ticket-817 via /os-sdlc:implement, target os-backlog.

Work started on branch ticket-817 via /os-sdlc:implement, target os-backlog.
Author
Owner

Dropped follow-up (ticket-skeptic): implementation 72 left plugins/os-backlog/lib/backlog/.sdlc/pipeline.db and pipeline.db.stale (2026-09-28 18:12:01), removed by hand before commit. No command was identified as the creator; file a ticket only if a specific command reproduces a database bound from a subdirectory cwd.

Dropped follow-up (ticket-skeptic): implementation 72 left plugins/os-backlog/lib/backlog/.sdlc/pipeline.db and pipeline.db.stale (2026-09-28 18:12:01), removed by hand before commit. No command was identified as the creator; file a ticket only if a specific command reproduces a database bound from a subdirectory cwd.
Author
Owner

Resolution

Done: os-backlog body checker refuses a numbered Required work item whose check: has no backticked command after it, with the os-sdlc refusal text; check: is found anywhere on the numbered line and backticks before check: do not count.

Evidence: Implementation 72 complete: 12 dispatches, 9 min 49 s, one behavior-verifier fail (check: only at item start) fixed in round 2. main c4f39d26 (ca843850). os-backlog suite 268 runs, 0 failures. Pipeline lint and test-lint green. First live run of the #814 [required-work, suite] gate call passed.

Follow-ups: #821 (checker ignores a check: on a later line of an item; lockstep with #820). #820 (os-sdlc parser misses mid-line check:). Stray pipeline.db under lib/backlog: dropped by ticket-skeptic, note posted on this ticket.

## Resolution **Done:** os-backlog body checker refuses a numbered Required work item whose check: has no backticked command after it, with the os-sdlc refusal text; check: is found anywhere on the numbered line and backticks before check: do not count. **Evidence:** Implementation 72 complete: 12 dispatches, 9 min 49 s, one behavior-verifier fail (check: only at item start) fixed in round 2. main c4f39d26 (ca843850). os-backlog suite 268 runs, 0 failures. Pipeline lint and test-lint green. First live run of the #814 [required-work, suite] gate call passed. **Follow-ups:** #821 (checker ignores a check: on a later line of an item; lockstep with #820). #820 (os-sdlc parser misses mid-line check:). Stray pipeline.db under lib/backlog: dropped by ticket-skeptic, note posted on this ticket.
jared closed this issue 2026-09-28 22:20:38 +00:00
jared referenced this issue from a commit 2026-09-29 13:12:09 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jared/cc-os#817
No description provided.