Skip to content

wr-risk-scorer: external-comms PASS marker lands in subagent's own session dir — main session's gate never sees it (P260/ADR-050 race; sibling of #317) #400

Description

@tompahoward

Description

When the orchestrator's main turn dispatches wr-risk-scorer:external-comms via the Agent tool to satisfy the external-comms gate, the subagent's PostToolUse marker hook writes the PASS marker into the subagent's OWN session marker directory. The orchestrator's main session's gate then looks for the marker under the main session's directory and fails to find it — even though the subagent emitted EXTERNAL_COMMS_RISK_VERDICT: PASS. This is the P260 / ADR-050 last-writer-wins runtime-sid race on the risk-scorer external-comms gate — the same class as the architect edit-gate race (#317), on a hook (packages/risk-scorer) that has NOT adopted the ADR-050 Option C candidate-SID marker-write mitigation the itil create-gate uses.

Symptoms

  • Main turn delegates to wr-risk-scorer:external-comms; subagent emits PASS.
  • Main turn retries the gated command (e.g. git commit) — still blocked with "draft has not been reviewed".
  • The marker file exists under the subagent's session dir, not the main session's.

Workaround

Reconcile the marker under the main session's SID manually, or re-dispatch the reviewer such that its PostToolUse hook observes the main session SID. (The former BYPASS_RISK_GATE=1 escape was removed per P377 / RFC-029.)

Affected plugin / component

@windyroad/risk-scorer — external-comms gate PostToolUse marker hook (session-dir / SID resolution).

Frequency

Every cross-session subagent dispatch to satisfy the external-comms gate under an orchestrator.

Versions

  • Local plugin: @windyroad/risk-scorer (not detected — marketplace install)
  • Upstream package: @windyroad/risk-scorer (not detected)
  • Claude Code CLI: 2.1.219
  • Node: v24.16.0
  • OS: Darwin 25.3.0 arm64

Evidence

Two fix shapes: (1) the subagent's marker hook writes to a shared root read by the main session's gate; (2) parent-session-SID propagation into the subagent dispatch so the marker lands under the parent SID (mirrors ADR-050 Option C candidate-SID marker-write). Sibling to #317 on the architect gate.

Cross-reference

Reported from https://github.com/voder-ai/dry-aged-deps — tracked locally as problem ticket P024 in docs/problems/.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions