Repository navigation
ci: slim Test matrix to ubuntu Node 24 + DSH 0.2.0-rc.2 - #31
Merged
Merged
Conversation
Keep a cheap PR/push shipgate: one required job (ubuntu-latest · Node 24 · DSH 0.2.0-rc.2). Drop windows, Node 22, and DSH 0.2.1-alpha.1 from the required matrix; they can return later as nightly/manual. Lint, npm test, and build-client --check are unchanged. Verifier: not run (workflow-only change; CI will exercise on this PR).
Birfy
referenced
this pull request
in Birfy/FlyBot
Oct 14, 2026
- Test (PR gate, one job as in #31, same required name): lint and bundle check first, ds-bot + social + tree suites (incl. tree-host and plugins/tree/test/tree.test.js) in one coverage run (job summary + lcov artifact); main's runs are never cancelled. - package: npm-pack ds-bot, social and tree and check main/exports/files are packed and no test/dev files; strict tsc on types/*.d.ts; CHANGELOG Unreleased check; actionlint. - tests-ok: one aggregate check. - Compatibility (nightly, manual, and on PRs touching it): Windows, macOS, Node 22 and DSH 0.2.1-alpha.1 through the same composite action, job names prefixed 'compat ·'. - Release on v* tags: version check, wait for a green Test run, tarballs + CHANGELOG notes. - CodeQL (javascript-typescript, actions) and Dependabot; actions pinned to SHAs with persist-credentials off and read-only permissions. No secrets.
This was referenced Oct 14, 2026
ci: CI modeled on yetone/magpie (macOS leg, plugin tests + coverage, package check, tag release)
#29
Merged
4 tasks
github-merge-queue Bot
pushed a commit
that referenced
this pull request
Oct 19, 2026
Fixes #442 Server half: [Birfy/bot-social#31](Birfy/bot-social#31) (Fixes Birfy/bot-social#30; owner decision option b: write the grant first, then confirm the join). Not deployed; production deploy needs the owner's yes. This PR works against the current production server too (see Compatibility). ## What was wrong Right after an invite join, the inviter's home had not yet synced the new friend's grant (`syncOutgoingGrants` ran only on a roster fetch). The friend's first message hit the core owner policy (`reach()`, `by: 'owner-policy'`), was refused, logged and dropped, and the sender saw nothing. ## Fix (plugins/social only; no core change) - **Join event records the grant.** `pollOnce` now reads `relationship.changed` (`status: "active"`) and `grant.changed` (`status: "granted"`) in a Bot's queue and runs `syncOutgoingGrants({ only })` for that Bot before the next event. Bot Social #31 commits the join's grants before announcing it and always queues that event before the friend's first message, so the message is judged with the grant. - **One sync-and-retry on a refusal.** If an inbound message is still refused by the owner policy (a server without #31, a lost event), the plugin syncs that Bot's grants once and judges the message again. Delivered at most once. - **The sender is told.** Still refused: the plugin calls `report_not_delivered { message_id, reason: "not_shared_yet" }`. On the sender's home, the `message.not_delivered` event writes *"Not sent: Coder (Bob) was not ready to talk with you yet, so it did not get your message. Send it again."* into the owner's chat with that Bot, in the same place a failed send shows its Not sent line. ## Decisions (minor, made here) - The plugin syncs that Bot's grants through the existing `list_bot_grants` path and does not build grant records from the event's `grants` field. That keeps one mapping (talk-through classification, canonical handles). The event only triggers the sync. - One retry only, with no timer or held queue (simplicity). A message that is still refused is reported, not held. - The Not sent line goes only into the owner's own friend chat (`settings.via`). When a Bot sent the message with `message_friend_bot`, the plugin only logs it and does not wake the Bot. - Grants stay per Bot. Nothing is published, granted or approved on this path. There is no typed-reply approval and no turn limit. ## Compatibility - **Current production Bot Social (no #31):** it already emits `relationship.changed` (active) after writing grants, so the join-time sync works now. The retry works too. `report_not_delivered` does not exist there yet, so the refusal is only logged and the sender still sees nothing until #31 is deployed. - **After #31 is deployed:** the full behavior, including the sender's Not sent line. ## Tests Four new tests in `plugins/social/test/social.test.js` (`#442: …`): - The join event alone syncs the grant. The next "Hi" is then delivered with no refusal, no second sync and no report. Join and message in the same poll also work. - With no join event (older server), a refused first message triggers one sync and is delivered once. - A sender with no grant at all: nothing is delivered and `report_not_delivered` is called once per message. An older server that lacks the tool only logs it. - `message.not_delivered` writes the Not sent line once into the owner's chat with that Bot, never shown as the friend typing it. No chat line when no owner chat goes through that Bot. Verify at tip `b7e0b27`: `ARCH_DOCS_BASE=upstream/main TZ=UTC npm run verify`: pass (core 1011, social 273, tree 56, timeline 80, scripts 88, interop 37, live-e2e 16; lint, plugin lint, client bundle check and ds-bot patches check green). I did not run the smoke test (no `core/` or `src/host/` change), a live two-home test or a test against production Bot Social. Docs: `docs/subsystems/social.md` item 11. Changelog: `changelog.d/442-message-after-invite-join.fixed.md`. Risk tier: T3 (risk-gate report at b7e0b27: path plugins/social/src/social.js)
Birfy
added a commit
that referenced
this pull request
Oct 23, 2026
Daily mechanical release: folds the changelog fragments into `## [0.2.5] - 2026-10-24` and bumps the core to `0.2.5`. Covered by the standing approval for mechanical release PRs (AGENTS.md, maintainer decision 2026-10-19 07:02 Asia/Shanghai). Only the mechanical release files changed: `CHANGELOG.md`, `changelog.d/*` (6 fragments removed), `core/package.json`, `core/package-lock.json`, `patches/ds-bot/0007-version-and-tooling.patch`. Since v0.2.4: the commits merged on main up to 61a6af6.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ubuntu-latest · Node 24 · DSH 0.2.0-rc.2windows-latest · Node 24 · DSH 0.2.0-rc.2ubuntu-latest · Node 22 · DSH 0.2.0-rc.2ubuntu-latest · Node 24 · DSH 0.2.1-alpha.1npm test,build-client --check,npm run lintVerifier
Test plan