Skip to content

Standardize connector extension contracts - #151

Merged
Saga4 merged 13 commits into
mainfrom
feature/connector-manifest-v1
Aug 1, 2026
Merged

Standardize connector extension contracts#151
Saga4 merged 13 commits into
mainfrom
feature/connector-manifest-v1

Conversation

@Saga4

@Saga4 Saga4 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a versioned, language-neutral connector registry and strict JSON schema for all seven current connectors
  • parse and validate the manifest in locality-connector, and bind daemon registrations to it with exhaustive drift tests
  • add reusable credential-free conformance checks for identity, capabilities, operations, read-only policy, fixtures, assets, and redaction
  • model Slack public-channel membership mutation separately from content push operations and preserve an explicit auto-join opt-out
  • align representative Gmail, Calendar, and Slack runtime settings with their published schemas
  • add connector development documentation, Gmail/Granola public docs, docs navigation, and CI gates

Security and compatibility

  • the manifest is discovery metadata, not an authorization source or dynamic plugin ABI
  • credential-like setting keys, including separator, camelCase, compact, and suffixed forms, fail validation
  • every registered read-only connector is checked against code-owned host policy
  • existing connector IDs, CLI commands, OAuth routes, mount defaults, and projection behavior remain stable
  • explicit Slack auto_join_public_channels: false survives serialization and prevents join calls

Validation

  • connector: 35 tests
  • Slack: 151 tests
  • Gmail: 75 tests
  • Google Calendar: 66 tests
  • daemon manifest/source descriptors: 67 tests
  • CLI mount: 33 tests
  • docs validation and broken-link checks
  • full non-desktop workspace: cargo test --workspace --all-targets --exclude locality-desktop
  • multiple independent review passes; final focused review approved

Known host-only issue

The unchanged desktop agent-discovery test detects globally installed macOS agent applications despite a temporary HOME and PATH. The connector branch does not modify desktop discovery; 195 desktop tests pass before that environment-dependent failure and its poisoned-lock follow-on.

@vercel

vercel Bot commented Aug 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
locality Ready Ready Preview Aug 1, 2026 1:27am

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

Codex review

Findings

  • major crates/locality-slack/src/settings.rs: SlackMountSettings::normalize now rejects any persisted history_limit outside 1..=15, while the previous decoder repaired those values by clamping. That makes existing SQLite mount state with an older or manually-created out-of-range Slack setting fail to open/resolve instead of being automatically repaired, which violates the repo’s durable-state compatibility guidance. Minimal fix: keep the decode-time repair path for persisted settings, or add a state/settings migration plus a compatibility test that old Slack mount JSON such as {"slack":{"history_limit":50,"types":["public_channel"]}} still opens and normalizes to 15.

@Saga4

Saga4 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor Author

CI follow-up at 754765c2:

  • fixed the repeated Unix held-FD coordinator-lock race by explicitly releasing the root flock at SecureMount lifetime end
  • 25 repeated focused held-FD runs passed locally
  • full localityd library suite passed: 331 tests
  • independent review approved the exact head

Merge remains gated on the new Linux/macOS CI run.

@Saga4
Saga4 merged commit a2dfeeb into main Aug 1, 2026
11 of 13 checks passed
@Saga4
Saga4 deleted the feature/connector-manifest-v1 branch August 1, 2026 01:37
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