Repository navigation
Pin the room envelope hold rule and the local-room room_id guard - #902
Conversation
Nothing in the suite held the two rules #882 names: widening autoSendRoomEnvelope's hold test, or dropping the attachment guard at its call site, left plugins/social green (#882). Three new cases on the fake holding server: - a room envelope whose hold carries attachment, policy or risk keeps its card and the connector never decides it; - an envelope carrying a file is not cleared even on a clean blanket hold, after the owner approves the local file card; - the local-room guard from #881: a via room / room-share line names no room even when both Bots are also in one open face room. No production code changes. Docs-not-needed: test-only coverage for rules already stated in docs/subsystems/social.md.
|
Verdict: PASS at 1ac693f Reviewed the merge tree, not the PR's base: All of
Ran (merge tree described above): Each knife reds exactly one case and nothing else, and the source was restored byte-identical after each ( Non-blocking, no code change and no new tip needed:
Enqueueing now. |
Owner: Dev
Reviewer: Reviewer
Fixes #882
Refs #881
Tip SHA: 1ac693f
What changed
Tests only —
plugins/social/test/social.test.js+75/−0, no production code. The two rules #882 names were code and docs only; widening either kept the suite green.via: 'room-share'envelope whose hold carrieshold_reasonattachment,policyorrisk(with the blanket reason still inreasons, the real server shape): the connector reads the pending list, calls nodecide_approval, the item stays pending and its card is listed.#847's clean-envelope case stays green beside it.blanket_outboundhold: the owner's local file card comes first, and after approving it the transport must still leave Bot Social's hold to the owner.#881follow-up (Reviewer's request on Send a room-scoped line by naming the room #886): the local-room guard had no case. Avia: 'room'/'room-share'line names no room even when both Bots are also in one open face room — asserted on the recordedsend_as_memberarguments — with the plain 1:1 line as the control that does namefrm_123456.Evidence
At
1ac693faon base0c487992:node --import ./test/resolve.mjs --test "test/*.test.js"inplugins/social→ 402/402 pass (base 399 + 3).oxlint -c core/.oxlintrc.json plugins/social→ 0 errors (35 warnings, same as base).Knives (source restored and byte-compared after each):
autoSendRoomEnvelope'sif (!holdIsBlanket(held)) return falseto accept any non-emptyhold_reason→ case 1 reds, and only that case.#847's finding case at:1280usesreasons: [..., 'dlp.commitment']with nohold_reason, so a non-empty-hold_reasonwidening does not reach it; the clean-envelope case stays green.!msg.attachments?.lengthguard at its call site → case 2 reds.msg.via === 'room' || 'room-share'guard insendOut→ case 3 reds (that was the unpinned hole Reviewer measured on Send a room-scoped line by naming the room #886).Not run: the core suite and
npm run verify— only one test file changed.Docs-not-needed: test-only coverage for rules already stated in docs/subsystems/social.md (branch commit message carries the same trailer).