Skip to content

Add social connector host foundation#324

Merged
oratis merged 1 commit into
mainfrom
codex/sense-social-foundation
Jul 27, 2026
Merged

Add social connector host foundation#324
oratis merged 1 commit into
mainfrom
codex/sense-social-foundation

Conversation

@oratis

@oratis oratis commented Jul 26, 2026

Copy link
Copy Markdown
Owner

What changed

  • adds the researched Sense social connector architecture and platform rollout plan
  • defines and strictly validates social-connector.json manifests
  • adds revisioned social drafts with immutable SHA-256 approval snapshots, expiry, and one-shot claim semantics
  • surfaces connector manifests and draft state through lisa sense social
  • preserves MCP tool annotations as metadata without treating untrusted hints as authorization

Why

Conversation-driven publishing needs a host-enforced trust boundary before any platform connector can publish. Connecting an account must not silently authorize a post, and model-visible tools must not bypass the user final confirmation.

Impact

This is the host foundation only; it does not publish to a live platform. Follow-up stacked PRs add the draft-only host tool/API/UI and the first Bluesky/Mastodon connectors.

Validation

  • npm run typecheck
  • node --import tsx --test src/mcp/client.test.ts src/sense/social/manifest.test.ts src/sense/social/drafts.test.ts
  • git diff --check

@oratis
oratis force-pushed the codex/sense-social-foundation branch from caaec5d to c0510db Compare July 27, 2026 05:41
@oratis
oratis marked this pull request as ready for review July 27, 2026 05:43
@oratis
oratis merged commit cea0ffc into main Jul 27, 2026
1 check passed
@oratis

oratis commented Jul 27, 2026

Copy link
Copy Markdown
Owner Author

Post-merge review finding:

mutate() currently sorts every draft and applies .slice(-MAX_DRAFTS). That can evict a non-terminal draft (approved/publishing) when enough newer drafts exist. A connector may then publish successfully while completeSocialDraftPublish() can no longer find the draft to persist receipts, leaving an externally visible post with no durable host outcome.

I am addressing this in a dedicated follow-up: retain every non-terminal draft, prune only terminal history, and reject new drafts once the active-draft ceiling is reached.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant