feat(planner): run private jobs with the node-owned sealing key #141
No Reviewers
Labels
Clear labels
accessibility
all-platforms
area:agents
area:ai
area:chain
area:ci
area:client
area:daemon
area:p2p
area:project
area:protocol
area:runtime
area:storage
bug
chore
community
dependencies
discussion
discussion/Announcements
discussion/General
discussion/Ideas
discussion/Q&A
discussion/Show and tell
discussion/answered
documentation
duplicate
enhancement
good first issue
help wanted
i18n
infra
invalid
needs:decision
needs:hardware
paired
question
research
security
status:in-review
test
testing
tracking
wontfix
Barrier affecting people with disabilities
Run every platform's packaging and checks on this pull request, not only the three main ones
MCP server, skill, and thinking on the pool
Planner and model providers
Blockchain, SISY, verification
Continuous integration and build workflows
Desktop and web clients
sisyphusd coordinator, worker, scheduler
libp2p hosts, relays, discovery, connections between nodes
Project planning, roadmap, and governance
Protobuf schemas and RPC contracts
Workload execution and environments
Content-addressed storage, IPFS, Kubo, Cluster, S3, names, pinning
Something isn't working
Repository health, templates, Discussions, contributor experience
Updates to actions, Go modules or npm packages
Migrated from GitHub Discussions
GitHub Discussions category: Announcements
GitHub Discussions category: General
GitHub Discussions category: Ideas
GitHub Discussions category: Q&A
GitHub Discussions category: Show and tell
Q&A discussion with an accepted answer
Improvements or additions to documentation
This issue or pull request already exists
New feature or request
Good for newcomers
Extra attention is needed
Translations and right-to-left layouts
Build, CI, releases
This doesn't seem right
Waits on a decision from both owners
Waits on a machine we do not have yet
Built together by both maintainers, with co-authored commits
Further information is requested
Needs investigation or a design decision
Sealing, keys, access control, tokens, the security model
Built and in an open pull request; closes when it merges
Tests, test harnesses and the rehearsal
Roadmap and meta issues
This will not be worked on
type
Feature
A request, idea, or new functionality (GitHub issue type)
type
Task
A specific piece of work (GitHub issue type)
Milestone
No items
No Milestone
V0: prove the loop
Projects
Clear projects
No projects
Sisyphus roadmap
Done
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Sisyphus/Sisyphus#141
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Refs #117 (prerequisite for encrypted chat attachments). Stacked on #139; rebase/retarget after preceding squash merges.
Add an optional private boolean to run_job. Resolve the key internally using the node's existing SealingKey callback, shared with private-file uploads and explicit job submissions. Never accept or expose encryption key bytes as a model tool argument. Missing/erroring key providers reject before pool submission, with no public fallback; public jobs do not load keys. Explain private inputs and trusted-worker key access in planner instructions.
Four planner tests cover key propagation, fail-closed behavior, public-job compatibility and schema key isolation. go test ./apps/sisyphusd/planner and git diff --check passed with the pinned Go 1.27.1 dev shell. The broader go test ./apps/sisyphusd is still running locally at PR creation; no full-daemon success claimed yet.
This adds the backend prerequisite, not encrypted chat upload defaults, reference-safe attachment cleanup, real-model compliance or complete end-to-end acceptance. Those remain pending and #117 is not closed.
Validation update: the broader ./apps/sisyphusd suite completed with failure (119s). One observed failure was TestAnAgentUsesThePoolThroughTheNode: cancel_job attempted to cancel a detached primes job that had already succeeded. This test goes through MCP rather than the changed planner. That does not yet establish it is unrelated; I am repeating it separately and will compare baseline if it reproduces. The focused planner tests passed. Keeping this PR draft; no full-daemon success claimed.
Baseline comparison: the isolated TestAnAgentUsesThePoolThroughTheNode failed identically on both this branch and clean current dev (
dca38b5), each ~4.26s: the detached primes job succeeded before cancel_job. Both runs used the same Nix Go 1.27.1 compiler. This establishes that specific cancellation-test failure predates this PR, but does not prove every full-suite failure is baseline. Continuing focused planner/private-file integration checks; draft status remains.Focused daemon integration checks passed: go test ./apps/sisyphusd -run '^(TestAQuestionIsPlannedComputedAndAnswered|TestTheDesktopSetsTheModelAndTheKeyStaysPut|TestTheDesktop|TestTheNodesSealingKey)' -count=1. This includes the existing private desktop file/job flow, planner compute loop and node-key persistence. It does not replace a full-suite green run or validate private chat attachment uploads (still unimplemented).