Skip to content

revert(daemon): drop the #801 tool-precedence bullet after a live in-thread regression - #861

Merged
Poytr1 merged 1 commit into
mainfrom
revert-801-tool-precedence-bullet
Aug 11, 2026
Merged

revert(daemon): drop the #801 tool-precedence bullet after a live in-thread regression#861
Poytr1 merged 1 commit into
mainfrom
revert-801-tool-precedence-bullet

Conversation

@Poytr1

@Poytr1 Poytr1 commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Reverts #801 (commit 29feb9b) on the user's direct order, after a live in-thread regression traced to the tool-precedence bullet it added to the standing collaboration guidance.

The live regression

In a real Slack channel, a turn-taking counting game was started in a thread ("@test @test2 你们轮流报数, 报到30 停" — take turns counting to 30). The test agent (Claude Agent runtime) stopped playing through ordinary thread replies and instead routed every turn through sendMessage, "handing off" each next number to its peer and posting only meta-narration into the thread, e.g.:

Count so far: 1, 2, 3 (@test2) → 4 (me). Handing off for 5

The visible count skipped and duplicated numbers (1 → 4 → 6 → "8****8") instead of a clean 1..30 alternation.

Mechanism

The bullet said AgentConnect's MCP tools are the ONLY channel that reaches other agents and humans. That over-generalizes: the product convention is that current-thread communication is the ordinary reply — sendMessage deliberately has no in-thread form. The bullet taught the model that plain replies reach nobody, so it routed in-thread turns through sendMessage too.

The A/B measurements that validated #801 only exercised the parent-session report-back scenario, never an in-thread conversation — which is exactly how this escaped.

What this restores / costs

🤖 Generated with Claude Code

@agentconnect-md-test agentconnect-md-test Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved at head f985b0410397ec1271a0ac589fcda727d47c2254. No blocking findings.

The revert is internally consistent: it removes only the over-broad “ONLY channel” precedence guidance and the test that pinned that wording. The resulting collaboration prompt still explicitly instructs agents to use an ordinary reply for the current conversation and states that visible sendMessage calls land at a channel root, matching docs/product-conventions.md. Both touched files are byte-identical to their versions at the parent of #801 (1dccbc26ce432807d2555b531762a2485cf4f0bb), and git diff --check passes.

The known #800 built-in SendMessage collision returns with this revert, but that is an explicit, tracked tradeoff and is non-blocking for this regression fix.

Verification gap: the focused daemon test and daemon typecheck could not run because dependencies are absent and Corepack could not reach registry.npmjs.org (EAI_AGAIN), including after retrying with an isolated cache.

sent by review-bot (Codex · gpt-5.6-sol) · open in session

@Poytr1 Poytr1 changed the title revert(daemon): drop the #801 tool-precedence bullet after a live in-thread regression fix(daemon): drop the #801 tool-precedence bullet after a live in-thread regression Aug 11, 2026
…thread regression

This reverts commit 29feb9b (#801, the
prompt-side mitigation for #800). The bullet said AgentConnect MCP tools
are the ONLY channel that reaches agents and humans; that over-generalized
and taught models that ordinary in-thread replies reach nobody, so a live
turn-taking thread degraded into sendMessage hand-offs with meta-narration
and a broken count. The standing collaboration guidance returns to its
pre-#801 form byte-for-byte; #800 is reopened for scoped follow-ups.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Poytr1
Poytr1 force-pushed the revert-801-tool-precedence-bullet branch from f985b04 to 44067ce Compare August 11, 2026 15:10
@Poytr1 Poytr1 changed the title fix(daemon): drop the #801 tool-precedence bullet after a live in-thread regression revert(daemon): drop the #801 tool-precedence bullet after a live in-thread regression Aug 11, 2026

@agentconnect-md-test agentconnect-md-test Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved at synchronized head 44067ce926bfb5c099d78331dfdbc7b33d64e37e. No blocking findings.

The head’s source tree is identical to the previously inspected revision, and the merge-base patch remains limited to removing the over-broad “ONLY channel” precedence guidance plus the test that pinned it (33 deletions across two files). The resulting prompt still explicitly instructs agents to use an ordinary reply in the current conversation and states that visible sendMessage calls land at a channel root, matching docs/product-conventions.md.

The target branch advanced to 3d96c5fa6e040022b0dd3af83d0b74fb8a3327ab; git merge-tree confirms this patch merges cleanly with that base, with no intervening changes to either touched file. git diff --check also passes.

The known #800 built-in SendMessage collision returns as an explicit, tracked, non-blocking tradeoff.

Verification gap: focused daemon tests and typecheck were not rerun because dependencies are absent and the pinned package manager could not be downloaded from registry.npmjs.org (EAI_AGAIN).

sent by review-bot (Codex · gpt-5.6-sol) · open in session

@Poytr1
Poytr1 merged commit c1a5253 into main Aug 11, 2026
11 checks passed
@Poytr1
Poytr1 deleted the revert-801-tool-precedence-bullet branch August 11, 2026 15:18
Poytr1 added a commit that referenced this pull request Aug 11, 2026
…ion gate

The A/B matrix's four scenarios each demand one explicit send, so the #801
tool-precedence bullet could score 10/10 on parent-session while breaking
ordinary thread play (the live counting-game regression that #861 reverted;
issue #800 records the lesson). Scenario 5 is the missing coverage: one
plaza thread, BOTH agents on the arm's surface, a human kickoff
@-mentioning both, and the count carried by ordinary replies through the
platform echo and the #549 continuation ladder.

- `THREAD_COUNT_SCENARIO` + `judgeThreadCount` (daemon-judged): hard pass =
  count reaches 6 via delivered thread replies, ZERO messaging-tool calls
  by either participant (product surface, other arm's tool, or the runtime
  built-in — delivered or refused), no rejected participant reply. Soft
  (reported, never failed on): duplicates, skips, overshoot,
  meta-narration beyond the bare number, reply length, turns per number.
- Wired into the real-run matrix at index 4: same counterbalancing, seed
  derivation, validity rules (failed/timed-out turn => invalid), artifact
  layout, and summary; rides the existing scenario/arm env filters.
- Contract tests (eval:collab:contracts): the #801 handoff trace scores
  FAIL, a clean reply-only trace scores PASS, built-in SendMessage and
  arm-B `post` variants fail identically, soft-metric traces pass while
  measured; plus a scripted end-to-end fixture test proving a
  both-mentioned kickoff plus ordinary replies really carries the count
  peer-to-peer on a real daemon.
- Arm-B guidance parity: drop the #800 precedence bullet from
  POST_COLLAB_GUIDANCE, mirroring the production revert (#861) — both arms
  are back at the 24-run revision's text (2,718 / 2,394 chars, measured).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Poytr1 added a commit that referenced this pull request Aug 11, 2026
…nge gate

messaging-primitives-ab.md: §8 documents the in-thread turn-taking
scenario (the #801 incident, shape, daemon judge, and the 2026-08-11
post-revert baseline — 6/6 clean passes across both arms, zero
messaging-tool calls, zero meta-narration) plus the standing rule; §2/§4
updated for the scenario list and the parity revert (guidance back to the
24-run revision, re-measured at 2,718/2,394 chars).

collaboration-arena-baseline.md: §4.2 states the prompt-change gate — any
change to the standing collaboration guidance or parent-report append must
be validated against BOTH the parent-session scenario AND the in-thread
scenario before landing, citing #801/#861 as the incident that created the
rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant