P11-S-001record 1
{
"id": "P11-S-001",
"evidence_class": "observed",
"source": "clients/actionmodel/research/connectors-licensing-2026-08-27.md",
"observed": "2026-08-27",
"kind": "local-research-report",
"claim": "Licensing map verified from LICENSE bodies: OpenConnector Apache-2.0 (1,445 provider dirs confirmed via git trees API, truncated false, 7,338 entries, 39.5MB provider source; definition.ts 1445/1445, executors.ts 1445/1445, actions.ts 1443/1445); Activepieces MIT except packages/ee; Composio MIT covers the SDK only with toolkits behind a paid API; Nango and Airbyte ELv2 with the hosting clause quoted; n8n fair-code; dify bars multi-tenant operation verbatim; panoratech/Panora AGPL-3.0; langgenius/dify-plugins licence NONE. Auth-type mix from the live Activepieces API: 761 pieces, SECRET_TEXT 374, CUSTOM_AUTH 205, OAUTH2 96, none 75, BASIC_AUTH 11. Nango 982 providers with 91.1% pure data (895 of 982 carry no scripts) but 17 of the 36 'popular' providers are scripted. Activepieces-Nango overlap only 182 of ~1,500 distinct services. jentic/jentic-public-apis CC0-1.0 with 4,140 vendor dirs verified via git trees.",
"limitations": "Provider icon licensing UNVERIFIED and gates any client-facing picker. Second-sweep rows other than the three re-read licences are sweep receipts not independently re-verified. GitHub code search indexes rather than greps, so the per-file header scan is strong evidence not proof.",
"disposition": "load-bearing"
}
P11-S-002record 2
{
"id": "P11-S-002",
"evidence_class": "observed",
"source": "clients/actionmodel/research/openconnector-spike-2026-08-27.md",
"observed": "2026-08-27",
"kind": "local-execution-receipt",
"claim": "Executed spike, since cleaned up: local generator produced 1,445 providers and 15,156 actions from repo source with no network; server booted with 11 migrations in 10ms; a no-auth Hacker News action and an authenticated GitHub action both executed live; credentials verified encrypted at rest by reading the SQLite file directly; a fake token was rejected by live credential verification before persistence; CredentialProfile auto-resolved; a correctly parameterized Google Drive OAuth authorization URL was generated with access_type=offline and encrypted state. Corrected auth-type counts from the running server: api_key 1302, oauth2 103, custom_credential 75, no_auth 20. Tenancy falsifier demonstrated not inferred: two tenant connections returned together in one flat list under a single admin token; connections keyed (service, connection_name) with no tenant column; oauth_client_configs keyed on service alone; keySalt a hardcoded constant; secret codec silently returns PlainTextSecretCodec when the key is unset; runtime API auth is a third switch separate from admin auth.",
"limitations": "OAuth callback completion and token refresh untested (needs a real Google OAuth app). Postgres backend untested (ran SQLite). Web console not built. Spike artifacts deleted; the report is the durable receipt.",
"disposition": "load-bearing"
}
P11-S-003record 3
{
"id": "P11-S-003",
"evidence_class": "observed",
"source": "clients/actionmodel/research/actionmodel-builder-research-2026-08-26/phase-8/external-opus-inputs/connectors/connector-research-summary.md",
"observed": "2026-08-27",
"kind": "local-research-input",
"claim": "Architecture implications already settled: treat catalogue, credential runtime and tenant connection store as separate governed blocks; import declarative provider metadata where rights permit; generate setup forms from constrained provider schemas rather than one React component per connector; use short-lived capability-scoped runtime tokens, stable external IDs, refresh locks, explicit refresh errors, envelope-encryption AAD and lazy executor loading; keep catalogue-only, needs-credential and locally-executable states distinct.",
"limitations": "Open gates recorded: provider icon licensing unverified, Actionist tenancy/ownership/audit/secret-store contracts undefined, no connector admitted as a governed block.",
"disposition": "governing"
}
P11-S-004record 4
{
"id": "P11-S-004",
"evidence_class": "observed",
"source": "clients/actionmodel/knowledge/02-ASSUMPTION-LEDGER.md",
"observed": "2026-08-27",
"kind": "local-synthesis",
"claim": "A26 connector catalogues cannot be adopted with their storage layers (rejected, with the OpenConnector admin-token receipt); A27 OpenConnector catalogue/OAuth/action mechanics are reusable, observed at spike level.",
"limitations": "Ledger states, not new evidence.",
"disposition": "governing"
}
P11-S-005record 5
{
"id": "P11-S-005",
"evidence_class": "observed",
"source": "clients/actionmodel/research/lovable-teardown-2026-08-26.md",
"observed": "2026-08-27",
"kind": "local-research-report",
"claim": "The 27 Aug correction: the teardown's 'connectors = ZERO for the scoped case' row was wrong because owning Actionist's own DB says nothing about a client dashboard wanting Gmail, Slack, Stripe, HubSpot or Notion. Records the method lesson that a confident ZERO in a buy-vs-build table deserves one search before it ships. Lovable ships roughly 100 connectors.",
"limitations": "Competitor teardown; connector counts for Lovable are secondary-sourced.",
"disposition": "supporting"
}
P11-S-006record 6
{
"id": "P11-S-006",
"evidence_class": "observed",
"source": "clients/actionmodel/research/workstreams/p11-connectors-integration-runtime/runs/2026-08-27-sprint-1-fable/top-repos.jsonl",
"observed": "2026-08-27",
"kind": "this-run-packet",
"claim": "45 OSS projects on the execution-safety layer, 10 top10, 8 licence bodies read. Landmines all invisible at badge level: Vault BSL 1.1 under IBM (OpenBao is the MPL-2.0 LF fork answer), Inngest SSPL-1.0, Restate BSL with a nuanced grant that permits executing services the licensee wrote but forbids letting third parties register their own, Convoy ELv2, Infisical MIT with an ee/ carve-out, both MCP repos NOASSERTION because they are mid-relicence with per-file provenance, hookdeck-cli Apache on the CLI only with the gateway closed SaaS, Skyvern AGPL-3.0. Four repo identities corrected. Gap map names three must-builds: idempotency has no production OSS supply (most-starred result 14 stars), outbound token brokering does not exist (every mature project runs inbound), egress policy enforcement is unbuilt (OPA and Cerbos decide, neither enforces).",
"limitations": "37 of 45 rows are badge-level licence only. No repo cloned or run, so all claims are documentary. Open-core scope for Hatchet and DBOS unestablished; Svix server self-host terms vs MIT SDKs unestablished; Postgres-backed queue throughput ceilings unknown.",
"disposition": "this-run-evidence"
}
P11-S-007record 7
{
"id": "P11-S-007",
"evidence_class": "observed",
"source": "clients/actionmodel/research/workstreams/p11-connectors-integration-runtime/runs/2026-08-27-sprint-1-fable/top-companies.jsonl",
"observed": "2026-08-27",
"kind": "this-run-packet",
"claim": "Commercial safety-mechanics survey (18 rows at first pass, backfill pending). Named convergent patterns: connect-session tokens; the caller passes an identity not a secret with the broker injecting server-side; scope narrowing at connect time; consent graded by consequence not resource; approval as a composable workflow step; per-tenant instance rather than per-tenant row; receipts excluding payload; retry without idempotency as the norm. Best primitive found: Zapier preview_only dry-run returning exact resolved arguments with no side effect, on by default and not tenant-disableable. Two hazards: Pipedream silently selects the most-recently-created account when several exist for one app; Browserbase Contexts replay cookies and tokens with MFA completed once and reused, a durable bearer blob outside any scope or revocation model.",
"limitations": "Incomplete at first pass (18 of ~33). Paragon isolation detail rests on its own marketing blog after the docs security URL 404'd; Anon's 'never stores credentials' is marketing-site only and must not be repeated as fact; compliance certifications are logos not inspected reports; Zapier AI Actions is documented as no longer developed.",
"disposition": "this-run-evidence"
}