Verify against a real Claude Code whether a sidechain transcript line can omit both isSidechain and agentId, the shape the settle.js guard cannot distinguish from a main-loop line

Open
#2,151 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
30/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
javascript

Research direction

Read hypaware-core/plugins-workspace/claude/src/settle.js around line 478 and the replayed-parent regression test referenced in the issue. Observe real Claude Code subagent sidecar and main-loop transcript lines, or add an automated check, to establish whether a sidechain line can omit both fields. Done means documenting the result in LLP 0435 and closing if the shape cannot occur, or adding a discriminator and regression test if it can.

Written by the indexing model from the issue text.

Description

Source: #2143 at 0a5f656db1f0d8c06707a5a27fec43ea6247ca5e
Location: hypaware-core/plugins-workspace/claude/src/settle.js:478
Severity: minor

Evidence

!match.is_sidechain is true for undefined, so a matched transcript line naming neither isSidechain nor agentId still clears a header-derived agent_id: the same hazard finding 1 fixed, one field weaker. The looseness is deliberate and load-bearing (round 2 proved tightening the guard to match.is_sidechain === false fails the replayed-parent regression test 9 pass / 1 fail), so the two shapes are indistinguishable to this guard given the fixtures on hand; only a real client can say whether subagent sidecar lines ever arrive with neither field. No incorrect behavior has been observed, which is why this is not filed as a defect. Round 2 folded this into a claude_otel_shape_check 'eyeball list', but that home no longer exists: docs/ACCEPTANCE.md was deleted and the written manual acceptance procedures retired by LLP 0430 (#2133), which predates this PR's merge-base, and per LLP 0430's Consequences the recourse for a gap only a real client can show is an automated check or a new LLP reviving a specific gate. This issue is therefore the durable home.

Why deferral is safe

Safe outside PR #2143: the exposure is a hypothesis about wild transcript shapes, not an observed behavior; the guard's loose form is required by the replayed-parent case the PR exists to fix; and if the shape does occur, the affected row still gains correct native identity, losing only its header-derived agent_id label, which is the pre-round-1-fix status quo for that shape.

Acceptance condition

Observe real Claude Code subagent sidecar and main-loop transcript lines (a real client run, or an automated check per LLP 0430) and record whether any sidechain line arrives with neither isSidechain nor agentId. If the shape occurs, add a discriminator the guard can use (with a regression test that fails on the loose guard); if it cannot occur, record that in LLP 0435's orbit and close.

Review preference; backlog only. A human may explicitly delegate it with neutral:fix.

Dominant language
JavaScript
Stars
11
Forks
0
Avg merge
2h 49m
Merged PRs (30d)
302

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from hyparam/hypaware

All issues in hyparam/hypaware

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.