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/.
Description
When the orchestrator's main turn dispatches
wr-risk-scorer:external-commsvia 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 emittedEXTERNAL_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
wr-risk-scorer:external-comms; subagent emits PASS.git commit) — still blocked with "draft has not been reviewed".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=1escape 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
@windyroad/risk-scorer(not detected — marketplace install)@windyroad/risk-scorer(not detected)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/.