fix(messaging): support ordinary bound workspaces inside private homes #344
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/nested-workspace-file-export"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up found in final generic-installation audit for #343/#89: container agents commonly bind their ordinary workspace under .hayate-agent/workspace. Preserve the credential/foreign-store boundary while allowing files under an explicitly bound workspace/workspaces/work/projects subtree. Sibling stores, hidden descendants, sessions and a workspace rooted at .ssh remain denied. No arbitrary host file export or path widening. New tests cover normal binary, private-home workspace, hidden child, private sessions and external .ssh. Four outbound-file tests pass; TypeScript clean. Same release/native rollout requested by operator.
Final exact candidate full suite: 1887 passed, 1 existing skip, zero failures. TypeScript and diff checks pass. This follow-up has no matching mandatory CI context; no failed/pending check was bypassed. Ordinary private-home workspace export is tested alongside .ssh, sessions and hidden-descendant refusal.
Live rollout completed on native Karsten (work): released Core 0.1.238 /
43f30c7a64and exact five-file Slack snapshot 86853e3a4bbfb083c9171bafa84ebd00fce16dee. Native owner prepared/activated Core through fresh idle admission; subsequent module/config selection also used a real admitted lease and graceful restart. Actual owner PID/identity and all module SHA256 values verified; authenticated API HTTP 200; real final POST admission 201 admitted blockers=[], verification lease released.Effective config: gateways.overrides.slack.conversation = {allowedChannels:"", defaults:{users:"", activation:"threads", replyLocation:"thread"}}. No channel-specific exceptions. Actual model queried native gateway facts and correctly explained all-user/new-channel admission, no repeat mention in engaged threads and no admin grant. Removed an old conflicting hard-coded every-message mention gate from local SOUL, replacing only technical transport rules with effective-policy reference; business role/privacy/liaison routing preserved.
Actual model used only plugin_message to send a 46-byte binary file with caption as a new post in private operator channel. Slack history + authenticated binary download verified exact SHA256 31a0c6349f024fe431b6808131385d86c506b6ac29ca1403d5f86d8aa4158f1d. Identical native retry returned same delivered receipt; provider file count remained one. Actual model also sent 68-byte PNG, independently downloaded and hash-verified c6ad2c0b6723a3d103ee5587f2e5f4fc0c95efc3b322c84536e6c4f47469eade, count one. No shell/HTTP/credential workarounds in model runs.
54 Slack tests pass on the actual Darwin host, no skips; full Plugins suite 106 passed; final Core full suite 1887 passed/1 existing skip. Includes actual Core-to-Slack file-tool integration, C/G/D root uploads, policy inheritance/denials/races, immutable staging and replay refusal. Per-channel ingress modes/access are native regression tested; no fabricated human Slack event or claimed live-human message roundtrip.
Generic docs: Core docs/conversation-policy.md and docs/messaging.md; Slack docs/slack-gateway.md. Existing admins/tokens/models/history and paused/waiting mandates preserved. File support is byte transfer, not a claim of universal PDF/audio/video understanding. Private receipts on work: ~/.local/share/vanillacore-karsten/policy-files-{activation,final-verification,final-policy-verification,binary-readback}.json and policy-files-native-tests.log. Local summary ~/.cache/hayate-maintenance/channel-policy-files/summary.json.