Status (2026-10-13): The framework this brief proposed has been built, so the gap statement below describes the July 2026 starting point, not today. The
wikantik-connectorsmodule (v2.3.6, July 2026) implements theSourceConnectorSPI (com.wikantik.api.connectors, inwikantik-api) and aSyncOrchestratorwith hash-dedup, cursor resume and tombstones, and ships seven connector types: filesystem, web crawler, sitemap, RSS/Atom feed, Google Drive (OAuth2), GitHub and Confluence. Six are admin-creatable (ConnectorConfigCodec.UI_TYPES:webcrawler,sitemap,feed,gdrive,github,confluence);filesystemstays properties-only because it reads arbitrary server paths. Since v2.3.7, definitions live in theconnector_configstable (V048) and are hot-applied without a restart; sync state is inconnector_sync_stateandconnector_synced_item(V046), per-run history inconnector_sync_run(V049), and secrets in the AES-GCM encryptedconnector_credentialsstore (V047), bound to the origin they were stored for. Admin UI:/admin/connectorswith a guided add-connector wizard;wikantik.connectors.enabledis the kill switch (default true). Connector-synced pages are derived pages (ADR-0004). Still open: S3, SharePoint and Slack connectors, webhook/push receivers (sync is scheduled pull with cursors), and ACL enforcement. Source ACL references are carried inconnector_synced_item.acl_refsbut nothing reads them at retrieval time (see RoadmapExternalAclInheritance). Operator guide:docs/admin/Connectors.mdin the repository.
Wikantik ingests wiki-native pages, Tika-extracted document uploads (POST /api/ingest), and MCP writes. It has no connectors to external systems, no continuous synchronization, and no incremental change detection. Every surveyed source names connector breadth and production-grade sync the primary differentiator among enterprise RAG platforms. This is the widest gap in the portfolio and the one that most limits the "RAG-as-a-service" claim.
).
).
).
).The derived-pages machinery is the right foundation — what is missing is the source side:
wikantik-ingest (com.wikantik.ingest.{SourceExtractor, TikaSourceExtractor, ExtractionResult}) — pure Tika 3.3 extraction, isolated from wikantik-main.com.wikantik.derived.* — a page is derived iff frontmatter has derived_from; body is machine-owned and regenerable (ADR-0004); reflow re-extracts while preserving body-independent curation. Surfaces: POST /api/ingest, /admin/derived/{reflow,status}.IngestDocumentsCli (wikantik-extract-cli) — batch folder-walking HTTP client, effectively a proto-connector.PageProvider, AttachmentProvider) is the established extension idiom to model a connector SPI on.docs/superpowers/specs/2026-06-14-derived-pages-design.md.wikantik-connectors module: SourceConnector interface (enumerate, fetch, cursor/checkpoint, delete-detection), per-connector sync state persisted in PostgreSQL, scheduled incremental runs modeled on OntologyRebuildScheduler.derived_from pointing at a connector-scoped URI, source metadata mapped into frontmatter, and reflow semantics reused for re-sync.First session scope: the SourceConnector SPI in wikantik-connectors + the sync-state migration + ONE read-only connector against a local fixture (filesystem tree or static HTTP fixture). No OAuth, no scheduler, no webhooks, no real external service.
Phase 1 is done when these integration tests are green (TDD: write them first):
derived_from carries the connector-scoped URI, source metadata lands in frontmatter, and the pages pass the frontmatter schema validator.Out of Phase 1's DoD: scheduler wiring, credential encryption, any real-service connector. Those are Phase 2, gated on the Phase-1 SPI surviving review.
ee/ (Enterprise Edition) directories.[AGENT] Read Onyx's open-source connector interface as the reference design (core only, not ee/ — see above) — what does its checkpoint/state model look like, and what did they get wrong?[AGENT] Schema design for sync state (cursors, content hashes, tombstones) — must be a numbered migration under bin/db/migrations/.[OWNER] Identity and auth per connector: OAuth 2.0 app registrations vs service accounts, where refresh tokens live, and the encryption-at-rest approach (note: CryptoUtil is hash-only today; reversible credential encryption is greenfield, and the key-management choice is a security-posture/spend decision).[AGENT] How does connector-sourced frontmatter interact with StructuralSpinePageFilter's save-time canonical_id enforcement and the frontmatter schema validator?[AGENT] Rate-limit and backoff behavior per source API; resumability of a half-failed sync.[AGENT] Co-design constraint: the item schema must carry source ACL references from day one, even if enforcement lands later — the ACL semantics are decided in RoadmapExternalAclInheritance (where the security-posture questions are [OWNER]).