Audit agent-to-agent steps that pass markdown where YAML or JSON belongs #1290

Open
opened 2026-10-23 21:43:11 +00:00 by jared · 0 comments
Owner

Problem

Jared's standing rule: agent output that code or another agent reads is machine-readable (JSON or YAML). Some os-* steps still pass markdown or Key: value line blocks that code parses with regexes. Each such parser breaks silently when a model adds bold, a heading, a code fence, or reorders lines. No list of these steps exists, so each one is found only when it fails.

Deliverable: a table with one row per step that passes agent output to code or to another agent:

step producer consumer current format parser site (path:line) proposed format

Then one follow-up ticket, through /os-backlog:capture, for each conversion worth doing. A row whose consumer is a human only gets no ticket.

Scope: the os-* plugins in plugins/: agent definitions (agents/*.md), skills (skills/*/SKILL.md and their references), the os-me Store ENTRY.md (~/dev/os-me-store/ENTRY.md), and the hooks and CLIs that parse agent output.

Observed

The os-me predictor returns a Key: value line block that regexes parse.

  • Producer format: ~/dev/os-me-store/ENTRY.md section 5, lines 50-52 and on (PREDICTION, Action:, Toward:, He would type:, Why:, Confidence:), plus the four lever lines Source:, Cost:, Band:, Evidence: that plugins/os-me/skills/predict/SKILL.md:27 adds.
  • Parser: plugins/os-me/lib/os_me/prediction_parser.rb:6 (RULING), :7 (CONFIDENCE, which allows optional ** bold), :10 (LEVER_LINES).
  • Consumer: plugins/os-me/lib/os_me/cli/append_request.rb:12 and :17 (append, called by the Stop hook record_prediction.rb).
  • The change of this case to YAML is a separate ticket; the audit lists it and does not ticket it again.

Reproduce

n/a: audit ticket

Origin

  • Trigger: Jared asked in session 2026-10-23 after the S9 clustering finding
  • Improvised this session: none
  • Chain: regex parsers over agent prose (plugins/os-me/lib/os_me/prediction_parser.rb:6-10) ← agent output specified as Key: value lines (~/dev/os-me-store/ENTRY.md section 5) ← DESIGN: no rule at write time that agent-to-code output is JSON or YAML
  • Root candidate: none found
  • Where: plugins/ (os-* agents, skills, parsers)
  • Session: 4f3f95ea-3c6f-4d23-a0ea-e349d6ab02a5
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/4f3f95ea-3c6f-4d23-a0ea-e349d6ab02a5.jsonl

VERDICT: CREATE (user-approved; backlog search only)

## Problem Jared's standing rule: agent output that code or another agent reads is machine-readable (JSON or YAML). Some os-* steps still pass markdown or `Key: value` line blocks that code parses with regexes. Each such parser breaks silently when a model adds bold, a heading, a code fence, or reorders lines. No list of these steps exists, so each one is found only when it fails. Deliverable: a table with one row per step that passes agent output to code or to another agent: | step | producer | consumer | current format | parser site (path:line) | proposed format | | --- | --- | --- | --- | --- | --- | Then one follow-up ticket, through `/os-backlog:capture`, for each conversion worth doing. A row whose consumer is a human only gets no ticket. Scope: the os-* plugins in `plugins/`: agent definitions (`agents/*.md`), skills (`skills/*/SKILL.md` and their references), the os-me Store `ENTRY.md` (`~/dev/os-me-store/ENTRY.md`), and the hooks and CLIs that parse agent output. ## Observed The os-me predictor returns a `Key: value` line block that regexes parse. - Producer format: `~/dev/os-me-store/ENTRY.md` section 5, lines 50-52 and on (`PREDICTION`, `Action:`, `Toward:`, `He would type:`, `Why:`, `Confidence:`), plus the four lever lines `Source:`, `Cost:`, `Band:`, `Evidence:` that `plugins/os-me/skills/predict/SKILL.md:27` adds. - Parser: `plugins/os-me/lib/os_me/prediction_parser.rb:6` (`RULING`), `:7` (`CONFIDENCE`, which allows optional `**` bold), `:10` (`LEVER_LINES`). - Consumer: `plugins/os-me/lib/os_me/cli/append_request.rb:12` and `:17` (`append`, called by the Stop hook `record_prediction.rb`). - The change of this case to YAML is a separate ticket; the audit lists it and does not ticket it again. ## Reproduce n/a: audit ticket ## Origin - Trigger: Jared asked in session 2026-10-23 after the S9 clustering finding - Improvised this session: none - Chain: regex parsers over agent prose (`plugins/os-me/lib/os_me/prediction_parser.rb:6-10`) ← agent output specified as `Key: value` lines (`~/dev/os-me-store/ENTRY.md` section 5) ← DESIGN: no rule at write time that agent-to-code output is JSON or YAML - Root candidate: none found - Where: plugins/ (os-* agents, skills, parsers) - Session: 4f3f95ea-3c6f-4d23-a0ea-e349d6ab02a5 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/4f3f95ea-3c6f-4d23-a0ea-e349d6ab02a5.jsonl VERDICT: CREATE (user-approved; backlog search only)
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#1290
No description provided.