#534 F: Handoff facts by convention #542

Closed
opened 2026-09-08 20:15:35 +00:00 by jared · 3 comments
Owner

Context

Child of #534 (ADR-0169). Parent design points and comments on #534. Lands after #535.

Tasks

  • Update map validator in lib/os_sdlc/runner/map/validator.rb to validate enrich against BriefFacts::FACTS and AgentType::ALL
  • Update poodr-implementation.yaml map: enrich lines 74, 109, 127 to use new agent/section names
  • In map/node.rb and node_spec.rb, document that enrich is carried opaque with no existing validator
  • Rename label sweep across documentation and code: interpreted_behavior -> change-interpreter, probe_evidence -> code-probe, seam -> seam-designer
  • Update agents/programmer.md, agents/code-probe.md, agents/message-tracer.md, agents/seam-designer.md, agents/test-writer.md to use new brief section labels
  • Update skills/code-probe/SKILL.md and skills/code-probe/references/yaml-rules.md to use new labels
  • Update pattern-catalog.md, cheatsheet.md, skills/fix-lints/references/sweep-remediation.md to use new labels
  • Delete HANDOFF_FACT_AGENT_TYPES constant from brief_facts.rb

Pseudo-Ruby:

# validator
def validate_enrich!(node)
  bad = node.enrich - BriefFacts::FACTS - AgentType::ALL
  raise InvalidMap, "node #{node.name}: unknown enrich #{bad.join(', ')}" unless bad.empty?
end

# Map updates: interpreted_behavior -> change-interpreter, probe_evidence -> code-probe, seam -> seam-designer

Acceptance criteria

  • validator rejects enrich: [nonsense]
  • validator accepts an agent type
  • brief for test-writer contains the change-interpreter handoff under the new heading
  • grep agents/*.md and skills for the three old labels returns zero matches

Blocking edges

Blocked by: #535 and #541

Origin

  • Trigger: Agent-initiated from ticket-skeptic gate (CREATE verdict)
  • Improvised this session: none
  • Chain: DESIGN ← ADR-0169
  • Root candidate: #534
  • Where: n/a
  • Session: 1a3b7fd0-0319-465b-8414-0ab70560de3d
  • Transcript: (from session context)
  • Judge: claude-sonnet-5 on 2026-09-08; user-decided reframe recorded in ADR-0169; former child G merged into B
## Context Child of #534 (ADR-0169). Parent design points and comments on #534. Lands after #535. ## Tasks - [ ] Update map validator in lib/os_sdlc/runner/map/validator.rb to validate enrich against BriefFacts::FACTS and AgentType::ALL - [ ] Update poodr-implementation.yaml map: enrich lines 74, 109, 127 to use new agent/section names - [ ] In map/node.rb and node_spec.rb, document that enrich is carried opaque with no existing validator - [ ] Rename label sweep across documentation and code: interpreted_behavior -> change-interpreter, probe_evidence -> code-probe, seam -> seam-designer - [ ] Update agents/programmer.md, agents/code-probe.md, agents/message-tracer.md, agents/seam-designer.md, agents/test-writer.md to use new brief section labels - [ ] Update skills/code-probe/SKILL.md and skills/code-probe/references/yaml-rules.md to use new labels - [ ] Update pattern-catalog.md, cheatsheet.md, skills/fix-lints/references/sweep-remediation.md to use new labels - [ ] Delete HANDOFF_FACT_AGENT_TYPES constant from brief_facts.rb Pseudo-Ruby: ```ruby # validator def validate_enrich!(node) bad = node.enrich - BriefFacts::FACTS - AgentType::ALL raise InvalidMap, "node #{node.name}: unknown enrich #{bad.join(', ')}" unless bad.empty? end # Map updates: interpreted_behavior -> change-interpreter, probe_evidence -> code-probe, seam -> seam-designer ``` ## Acceptance criteria - [ ] validator rejects enrich: [nonsense] - [ ] validator accepts an agent type - [ ] brief for test-writer contains the change-interpreter handoff under the new heading - [ ] grep agents/*.md and skills for the three old labels returns zero matches ## Blocking edges Blocked by: #535 and #541 ## Origin - Trigger: Agent-initiated from ticket-skeptic gate (CREATE verdict) - Improvised this session: none - Chain: DESIGN ← ADR-0169 - Root candidate: #534 - Where: n/a - Session: 1a3b7fd0-0319-465b-8414-0ab70560de3d - Transcript: (from session context) - Judge: claude-sonnet-5 on 2026-09-08; user-decided reframe recorded in ADR-0169; former child G merged into B
Author
Owner

Work started via /os-sdlc:implement on branch ticket-542 (session d233a2f7-977a-419d-99ea-011b6e1e66f8).

Work started via /os-sdlc:implement on branch ticket-542 (session d233a2f7-977a-419d-99ea-011b6e1e66f8).
Author
Owner

Pipeline implementation 5 (dispatches 110-123) landed the enrich validator, BriefFacts::FACTS and the map rename (commit 8a05410 on ticket-542), then ended implementation_failed verdict:error: the refactorer's comment-only edit to map/node.rb and node_spec.rb tripped the #535 diff-test raise (no mapped test file) and it settled with an error verdict. The markdown label sweep (tasks 4-7) runs by hand as a mechanical edit; the alias-constant deletion (task 8) re-enters the pipeline as a new implementation.

Pipeline implementation 5 (dispatches 110-123) landed the enrich validator, BriefFacts::FACTS and the map rename (commit 8a05410 on ticket-542), then ended implementation_failed verdict:error: the refactorer's comment-only edit to map/node.rb and node_spec.rb tripped the #535 diff-test raise (no mapped test file) and it settled with an error verdict. The markdown label sweep (tasks 4-7) runs by hand as a mechanical edit; the alias-constant deletion (task 8) re-enters the pipeline as a new implementation.
Author
Owner

Resolution

Done: Handoff facts resolve by convention. Map::Validator#check_enrich_facts! rejects any node enrich name outside BriefFacts::FACTS and AgentType::ALL (InvalidMapError :unknown_enrich). BriefFacts::FACTS lists the four direct facts. poodr-implementation.yaml and the agent prompts (programmer.md, test-writer.md) name change-interpreter, code-probe and seam-designer; the other listed docs had no label uses. map/node.rb and node_spec.rb document that enrich is carried opaque. HANDOFF_FACT_AGENT_TYPES is deleted: fact(interpreted_behavior), fact(probe_evidence) and fact(seam) raise UnknownFact; the agent-type names resolve to that agent's latest handoff.

Evidence: Pipeline /os-sdlc:implement 542, session d233a2f7-977a-419d-99ea-011b6e1e66f8. Implementation 5 (dispatches 110-123) landed the validator, FACTS and the map rename, then ended implementation_failed verdict:error because the refactorer's comment-only edit under lib/os_sdlc/runner/map/ hit the #535 diff-test raise (no mapped test file) and it settled with an error verdict. Implementation 6 (dispatches 124-135) landed the alias deletion and ended implementation_complete. Commits 8a05410, 1b2b75b, ea20e0b and history row c265f9f on branch ticket-542, merged to main 2026-09-09. Suite 1121 runs green. Deviations: markdown label sweep done by hand (3 label uses in 2 agent prompts); two pre-existing tests renamed by hand to the agent-type labels (#544 shape); three agents could not run subagent-stop in their sandbox and were settled by hand; two agents left their dispatch open and were gated and settled by hand.

Follow-ups: none new; #544 (test-side conflict routing), #545 (Project.load outside runner/), #546 (verifier early-complete and dispatch cap) already track the gaps seen; comment-only edits to lib files without a mapped test trip the #535 raise, noted on this ticket for #544's design

## Resolution **Done:** Handoff facts resolve by convention. Map::Validator#check_enrich_facts! rejects any node enrich name outside BriefFacts::FACTS and AgentType::ALL (InvalidMapError :unknown_enrich). BriefFacts::FACTS lists the four direct facts. poodr-implementation.yaml and the agent prompts (programmer.md, test-writer.md) name change-interpreter, code-probe and seam-designer; the other listed docs had no label uses. map/node.rb and node_spec.rb document that enrich is carried opaque. HANDOFF_FACT_AGENT_TYPES is deleted: fact(interpreted_behavior), fact(probe_evidence) and fact(seam) raise UnknownFact; the agent-type names resolve to that agent's latest handoff. **Evidence:** Pipeline /os-sdlc:implement 542, session d233a2f7-977a-419d-99ea-011b6e1e66f8. Implementation 5 (dispatches 110-123) landed the validator, FACTS and the map rename, then ended implementation_failed verdict:error because the refactorer's comment-only edit under lib/os_sdlc/runner/map/ hit the #535 diff-test raise (no mapped test file) and it settled with an error verdict. Implementation 6 (dispatches 124-135) landed the alias deletion and ended implementation_complete. Commits 8a05410, 1b2b75b, ea20e0b and history row c265f9f on branch ticket-542, merged to main 2026-09-09. Suite 1121 runs green. Deviations: markdown label sweep done by hand (3 label uses in 2 agent prompts); two pre-existing tests renamed by hand to the agent-type labels (#544 shape); three agents could not run subagent-stop in their sandbox and were settled by hand; two agents left their dispatch open and were gated and settled by hand. **Follow-ups:** none new; #544 (test-side conflict routing), #545 (Project.load outside runner/), #546 (verifier early-complete and dispatch cap) already track the gaps seen; comment-only edits to lib files without a mapped test trip the #535 raise, noted on this ticket for #544's design
jared closed this issue 2026-09-09 18:53:35 +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#542
No description provided.