Reject blank or location-free cause in Research#verify! #1001

Closed
opened 2026-10-12 14:33:29 +00:00 by jared · 2 comments
Owner

Problem

One unchecked researcher cause steers the designers and grades them in live mode (lib/takedown/query/live_grade_inputs.rb:13-16), and a blank or location-free cause passes Research#verify!. Child of #980 (AC 1-2); parent work #974. Constraint: do not change harness/cards/grader.md or its schema.

Approach

Add a shape check to CHECKS in plugins/os-sdlc/eval/ticket-takedown/lib/takedown/model/research.rb: refuse a blank cause.mechanism or cause.defect_class, and refuse a mechanism that does not match the existing LOCATION pattern (path:line). This checks shape only; ADR-0288 allows shape checks and forbids truth checks.

Required work:

  1. Reject a blank or location-free cause in Research#verify! — check: present defect_class in plugins/os-sdlc/eval/ticket-takedown/lib/takedown/model/research.rb

Acceptance criteria

  1. Given a research reply with a blank mechanism or defect_class, when Research#verify! runs, then it rejects the reply.
  2. Given a mechanism with no path:line anywhere in it, when Research#verify! runs, then it rejects the reply; the shape check looks for a path:line anywhere in the mechanism, not only at its start.

Note (2026-10-27): the former AC 3 (a filled cause is accepted) was removed: it described existing behavior, so its test could never be red (implementation 183, test-reviewer dispatch 1594). Acceptance of a path:line in mid-prose is now part of AC 2.

Owner sketch

class Takedown::Research
  CHECKS = {}.freeze
  def verify!
end

Takedown::Research already owns reply validation.

Origin

  • Trigger: decomposition of #980 on 2026-10-12
  • Improvised this session: none
  • Chain: unchecked cause steers and grades designs ← ADR-0285 added cause with no check (ADR-0285) ← DESIGN (ADR-0285)
  • Root candidate: none
  • Where: plugins/os-sdlc/eval/ticket-takedown/lib/takedown/model/research.rb
  • Skeptic: VERDICT: CREATE
## Problem One unchecked researcher `cause` steers the designers and grades them in live mode (`lib/takedown/query/live_grade_inputs.rb:13-16`), and a blank or location-free cause passes `Research#verify!`. Child of #980 (AC 1-2); parent work #974. Constraint: do not change `harness/cards/grader.md` or its schema. ## Approach Add a shape check to `CHECKS` in `plugins/os-sdlc/eval/ticket-takedown/lib/takedown/model/research.rb`: refuse a blank `cause.mechanism` or `cause.defect_class`, and refuse a `mechanism` that does not match the existing `LOCATION` pattern (`path:line`). This checks shape only; ADR-0288 allows shape checks and forbids truth checks. Required work: 1. Reject a blank or location-free cause in `Research#verify!` — check: present `defect_class` in `plugins/os-sdlc/eval/ticket-takedown/lib/takedown/model/research.rb` ## Acceptance criteria 1. Given a research reply with a blank `mechanism` or `defect_class`, when `Research#verify!` runs, then it rejects the reply. 2. Given a `mechanism` with no `path:line` anywhere in it, when `Research#verify!` runs, then it rejects the reply; the shape check looks for a `path:line` anywhere in the mechanism, not only at its start. Note (2026-10-27): the former AC 3 (a filled cause is accepted) was removed: it described existing behavior, so its test could never be red (implementation 183, test-reviewer dispatch 1594). Acceptance of a `path:line` in mid-prose is now part of AC 2. ## Owner sketch ```ruby class Takedown::Research CHECKS = {}.freeze def verify! end ``` `Takedown::Research` already owns reply validation. ## Origin - Trigger: decomposition of #980 on 2026-10-12 - Improvised this session: none - Chain: unchecked cause steers and grades designs ← ADR-0285 added `cause` with no check (ADR-0285) ← DESIGN (ADR-0285) - Root candidate: none - Where: plugins/os-sdlc/eval/ticket-takedown/lib/takedown/model/research.rb - Skeptic: VERDICT: CREATE
Author
Owner

Work started on branch ticket-1001 through /os-sdlc:implement (map poodr-ticket-implementation, target takedown). Note: ADR-0288 was deleted in c5240610 as habit-only, so the shape check needs no ADR permission.

Work started on branch ticket-1001 through /os-sdlc:implement (map poodr-ticket-implementation, target takedown). Note: ADR-0288 was deleted in c5240610 as habit-only, so the shape check needs no ADR permission.
Author
Owner

Resolution

Done: Research#verify! now refuses a blank cause mechanism or defect_class (AC1) and a mechanism with no path:line anywhere in it (AC2), through a caused? entry in Research::CHECKS with an unanchored CAUSE_LOCATION. The RESEARCH fixture mechanism gained a path:line. A live run with no researched cause now fails at the research step, not at the first grade. The former AC3 was removed mid-run because it only described existing behavior.

Evidence: Commits 5f5eed1a and 06533959, implementation 183: 13 dispatches, 2 retries, takedown suite green on reroute (12.97 s), contract-auditor pass. Escalation 85: programmer-repair could not edit the stale run_cli_test.rb assertion; the orchestrator hand-fixed it and rerouted to suite-check.

Follow-ups: none

## Resolution **Done:** Research#verify! now refuses a blank cause mechanism or defect_class (AC1) and a mechanism with no path:line anywhere in it (AC2), through a caused? entry in Research::CHECKS with an unanchored CAUSE_LOCATION. The RESEARCH fixture mechanism gained a path:line. A live run with no researched cause now fails at the research step, not at the first grade. The former AC3 was removed mid-run because it only described existing behavior. **Evidence:** Commits 5f5eed1a and 06533959, implementation 183: 13 dispatches, 2 retries, takedown suite green on reroute (12.97 s), contract-auditor pass. Escalation 85: programmer-repair could not edit the stale run_cli_test.rb assertion; the orchestrator hand-fixed it and rerouted to suite-check. **Follow-ups:** none
jared closed this issue 2026-10-27 16:15:06 +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#1001
No description provided.