Skip to content

Pin the details slot and the same-home filter of the removal line (#1033) - #1116

Merged
Birfy merged 1 commit into
mainfrom
dev3/fix/1033-details-seams
Oct 25, 2026
Merged

Birfy merged 1 commit into
mainfrom
dev3/fix/1033-details-seams

Conversation

@Birfy

@Birfy Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

Owner: Dev3
Reviewer: Reviewer
Written-by: Dev3
Fixes #1033
Tip SHA: 5ed6504

Docs-not-needed: test-only cases for the details slot wiring and the same-home filter (#1033)

Reproduce

#1001's case calls FriendChatSettings directly (plugins/social/test/social.test.js, the #1001 test), so two
seams that carry its copy were never exercised:

  • client.js BotSocialDetails renders h(FriendChatSettings, { bot, actions, roster }); that component is what
    flybot.bot.details registers (client.js:3855), and the host mounts it with { bot, roster, actions, call }.
    Delete roster there and every test stayed green.
  • FriendChatSettings's stillLinked filter compares (other.home ?? other.handle) === (home ?? handle). The only
    roster in the suite held two Bots of the same friend, so deleting the comparison stayed green — while real data
    would print another friend's Bot as "still shared through X".

What changed

Two cases in plugins/social/test/social.test.js only, no source change:

  1. #1033: the details slot hands the roster to the removal question — takes the entry the plugin registers for
    flybot.bot.details, asserts its component is BotSocialDetails, and mounts that with
    { bot, actions, roster }, then reads the inline question and expects "still shared through Writer".
  2. #1033: only the same home's Bot is named as the link that keeps the friend — a roster with two friends whose
    Bots are both named Writer on different homes; asserts the sentence names Writer exactly once, so the other
    friend's Bot cannot be counted as the link.

What I ran

cd plugins/social && node --import ./test/resolve.mjs --test test/social.test.js

  • tip 5ed65043: 426/426, 0 skipped (424 before these two cases; the run also prints the expected
    Model flybot-remote/... is not available diagnostics for the fake roster, as base does).
  • Knife A — h(FriendChatSettings, { bot, actions }) (drop roster): 425/426, the only red is case 1.
  • Knife B — stillLinked filter with the home comparison removed: 425/426, the only red is case 2
    (Writer, Writer where one name is expected).
  • Restored with cmp on client.js and re-ran: 426/426.

Red without the source change

This is test-only, so the base tree is green: both cases describe behaviour #1001 already ships, and the issue
says so (main + the two cases is green by design). The evidence that they are worth having is the two knives above:
each seam, deleted one at a time, turns exactly one case red and nothing else, so a refactor that drops the slot's
roster or the home comparison can no longer pass unnoticed.

Not run

  • oxlint / npm run verify — neither binary exists on this box; CI's plugins (social) job covers lint and the
    suite (tests-ok).
  • The other two plugin suites — the diff is one test file under plugins/social.
  • arch-docs — needs git; the trailer is in the commit message above and in the PR body (the queue squashes the
    body into the landed commit), so both places carry it.

Risk

Low. No production code changes; the cases read the tree the app builds. If BotSocialDetails ever stops reading
roster from props, case 1 is meant to fail. No changelog fragment: nothing a user sees.

)

#1001's own case calls FriendChatSettings directly, so the two seams that carry
the copy were unpinned: dropping `roster` from the BotSocialDetails call kept
the suite green, and so did removing the home comparison in `stillLinked`,
which would print another friend's Bot as the link that keeps this one.

Case 1 mounts through the component the plugin registers for
flybot.bot.details; case 2 builds a roster with two friends whose Bots share a
display name and asserts only the same home's Bot is named. Test-only, no
source change.

Docs-not-needed: test-only cases for the details slot wiring and the same-home filter (#1033)
@Birfy

Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator Author

Verdict: PASS at 5ed6504

Written-by: Reviewer

Test-only: one file, plugins/social/test/social.test.js, +37/−0, no source line touched, so the two seams it pins are checked against the code as it stands on main c653a5dc.

The seams are real, and each case fails on the seam it names, not on something nearby:

  • BotSocialDetails (client.js:3374) renders h(FriendChatSettings, { bot, actions, roster }) and that component is what flybot.bot.details registers (:3855). The new case mounts the registered component, so the indirection is covered; the A friend survives removal because another Bot of theirs is still linked, and nothing says which #1001 case called FriendChatSettings directly and that is exactly why a dropped roster stayed green.
  • stillLinked (:3328-3331) filters (other.home ?? other.handle) === (home ?? handle). The second case puts a same-named Writer on another home in the roster; without that comparison the copy names both, and the case counts Writer in the sentence.

Ran:

  • cd plugins/social && TZ=UTC node --import ./test/resolve.mjs --test "test/*.test.js" → 481/481.
  • Knife 1: roster deleted from the FriendChatSettings call in BotSocialDetails → 425/426, red is #1033: the details slot hands the roster to the removal question, and nothing else.
  • Knife 2: (other.home ?? other.handle) === (home ?? handle) deleted from the stillLinked filter → 425/426, red is #1033: only the same home's Bot is named as the link that keeps the friend, and nothing else.
  • Each knife was a separate tree copied from this tip; the source was restored by copying, not edited back by hand.

Ghost check per #972: pulls/1116/files is one added test block, no deletions.

Not run: nothing else changes. CI at this tip: tests-ok, plugins (social/tree/timeline), Node 24, package, merge-gate, agent-audience all success; enqueue-guard is red only because no verdict named this tip until this comment.

No blocking or non-blocking findings.

@github-actions github-actions Bot added the pass label Oct 25, 2026
@Birfy
Birfy added this pull request to the merge queue Oct 25, 2026
Merged via the queue into main with commit 199b9bc Oct 25, 2026
11 of 13 checks passed
@Birfy
Birfy deleted the dev3/fix/1033-details-seams branch October 25, 2026 05:33
@Birfy Birfy removed the agent-pr Pull request opened by an agent label Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The #1001 removal line: its details-slot wiring and its same-home filter are unpinned

1 participant