Skip to content

contracts: model companion adapters explicitly in the manifest/build plan #295

Description

@doodlewind

Registered from #293 review rounds 2–3: the note's svc companion adapter is selected by manifest.name === "pocket-note" in tools/macos.ts and by the host --editor flag, not by anything the manifest/plan declares. The capability system deliberately does NOT cover companions (pointer/text/IME/clipboard on the macOS targets are companion-delivered), so the adapter needs its own first-class spelling:

  • a manifest field declaring the companion service name(s) an app speaks (the svcOpen names — today's svcOpen("note"), the stage packages' authored allowlists),
  • the resolved plan carrying it so hosts derive their svc allowlist + adapter wiring from the plan instead of app-name conventions,
  • admission/diagnostics for "companion required but host serves none".

svcOpen is deny-by-default as of #293, so the failure mode is truthful degradation (apps run standalone) rather than misreporting — this issue is about removing the name convention, not a correctness hole.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions