Pin the os-backlog rules that have no test before the port #1614

Closed
opened 2026-11-06 20:06:20 +00:00 by jared · 2 comments
Owner

Problem

The os-backlog port moves every command onto new domain objects. Some rules in the rule inventory have no test. A move can break such a rule, and no test fails.

Approach

Add tests against the current code. Change no production code. A test for a known defect records today's behavior and names the slice that changes it.

Required work:

  1. Add the activemodel gem for the later slices — check: present activemodel in plugins/os-backlog/Gemfile
  2. Pin the occurrence missing-parts message and the close --needs-review repeat.
  3. Pin the argument gates of bounce and checkout, and the unknown-label failure.
  4. Pin the close ArgumentError prefix and the decision-sweep number gate.
  5. Pin comments on the GitHub backend and the repo: backend.
  6. Record inventory defects 1 to 4 as characterization tests.

Acceptance criteria

  1. Given unchanged code in lib/, when the os-backlog suite runs, then each new test passes.
  2. Given a new test that records a defect, when a reader opens it, then its name states the defect and the slice that changes it.
  3. Given the Gemfile, when Bundler loads os-backlog, then active_model can be required.

Owner sketch

This slice adds no production object. The tests pin the existing owners:

class Backlog::Close
class Backlog::Checkout
class Backlog::DecisionSweep
class Backlog::Issues::GhBackend
class Backlog::Issues::FileBackend

Non-goals

No production code changes in this slice.

Do not rename a command before slice 9. Do not change ## Resolution, **Follow-ups:**, the body headings, the check form, the label names, or the issue-show JSON keys. Do not make a behavior change that this ticket does not name.

Origin

  • Trigger: port plan, section 5 of docs/system-design-format/proof/2026-11-06-os-backlog-domain-objects.md, slice 1
  • Improvised this session: none
  • Chain: os-backlog code has no domain objects ← commands own their own reads and writes ← DESIGN (ADR-0307, plugins/os-backlog/CONTEXT.md)
  • Root candidate: none found; searched os-backlog, characterization, domain objects, ADR-0307
  • Where: plugins/os-backlog/tests, plugins/os-backlog/Gemfile
  • Session: 9d8c2e15-00c1-4dec-b177-e749fa05ec67
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/9d8c2e15-00c1-4dec-b177-e749fa05ec67.jsonl

VERDICT: CREATE

## Problem The os-backlog port moves every command onto new domain objects. Some rules in the rule inventory have no test. A move can break such a rule, and no test fails. ## Approach Add tests against the current code. Change no production code. A test for a known defect records today's behavior and names the slice that changes it. Required work: 1. Add the `activemodel` gem for the later slices — check: present `activemodel` in `plugins/os-backlog/Gemfile` 2. Pin the `occurrence` missing-parts message and the `close --needs-review` repeat. 3. Pin the argument gates of `bounce` and `checkout`, and the unknown-label failure. 4. Pin the `close` ArgumentError prefix and the `decision-sweep` number gate. 5. Pin `comments` on the GitHub backend and the `repo:` backend. 6. Record inventory defects 1 to 4 as characterization tests. ## Acceptance criteria 1. Given unchanged code in `lib/`, when the os-backlog suite runs, then each new test passes. 2. Given a new test that records a defect, when a reader opens it, then its name states the defect and the slice that changes it. 3. Given the Gemfile, when Bundler loads os-backlog, then `active_model` can be required. ## Owner sketch This slice adds no production object. The tests pin the existing owners: ```ruby class Backlog::Close class Backlog::Checkout class Backlog::DecisionSweep class Backlog::Issues::GhBackend class Backlog::Issues::FileBackend ``` ## Non-goals No production code changes in this slice. Do not rename a command before slice 9. Do not change `## Resolution`, `**Follow-ups:**`, the body headings, the check form, the label names, or the `issue-show` JSON keys. Do not make a behavior change that this ticket does not name. ## Origin - Trigger: port plan, section 5 of `docs/system-design-format/proof/2026-11-06-os-backlog-domain-objects.md`, slice 1 - Improvised this session: none - Chain: os-backlog code has no domain objects ← commands own their own reads and writes ← DESIGN (ADR-0307, `plugins/os-backlog/CONTEXT.md`) - Root candidate: none found; searched os-backlog, characterization, domain objects, ADR-0307 - Where: plugins/os-backlog/tests, plugins/os-backlog/Gemfile - Session: 9d8c2e15-00c1-4dec-b177-e749fa05ec67 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/9d8c2e15-00c1-4dec-b177-e749fa05ec67.jsonl VERDICT: CREATE
Author
Owner

Work started on branch ticket-1614.

Work started on branch ticket-1614.
Author
Owner

Resolution

Done: Added 8 test files that pin rules with no test, recorded inventory defects 1 to 4 and others as named defect tests, and added activemodel to the Gemfile. lib/ is unchanged.

Evidence: Merged to main in 8938e737 (commit c2dc215e). Suite: 382 runs, 931 assertions, 0 failures. Rubocop clean on the new tests. Design audit findings fixed or answered.

Follow-ups: none

## Resolution **Done:** Added 8 test files that pin rules with no test, recorded inventory defects 1 to 4 and others as named defect tests, and added activemodel to the Gemfile. lib/ is unchanged. **Evidence:** Merged to main in 8938e737 (commit c2dc215e). Suite: 382 runs, 931 assertions, 0 failures. Rubocop clean on the new tests. Design audit findings fixed or answered. **Follow-ups:** none
jared closed this issue 2026-11-06 20:25: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#1614
No description provided.