Tasks — add-polyfill-connector-system
Legend: [x] done, [~] in progress, [ ] pending, [!] blocked on user, [?] needs Tim's review on return.
Last revised: 2026-04-24.
Split-out follow-ups (2026-04-24)
The running connector-system change remains the home for MVP fleet operation, connector-specific live bugs, and near-term infrastructure. Three large backlog clusters have been split out so workers can execute them without dragging the entire connector program forward at once:
add-polyfill-layer-two-stream-coverageowns high-value stream additions and the Spotify/Reddit fake-data cleanup before those connectors are used as internal-demo evidence.add-connector-fixture-scrubber-pipelineowns raw capture, scrubbed fixture generation, and connector-specific redaction rules.define-partial-run-honestyowns skipped-stream/gap taxonomy, known-gaps summaries, and recovery hints.
Status at a glance (2026-04-21)
- 31 manifests total (30 + Chase added 2026-04-21). All validate against the reference AS.
- 951,313 real records across 8 active connectors in a unified 2.8 GB DB (
polyfill.sqlite):- slack 349,139 · claude-code 235,757 · codex 74,033 · gmail 50,407 · ynab 21,513 · chatgpt 11,341 · github 8,608 · usaa 924
- Data provenance caveat: any local Spotify or Reddit rows currently visible in the reference DB are not trusted as Tim-account data. Treat them as seed/demo/fake population until they are purged and replaced by a verified real-account ingest.
- All 8 connectors' most recent run committed state successfully.
- Browser daemon retired 2026-04-25 (
openspec/changes/retire-browser-daemon). The original USAA session-token-on-exit motivation never made it into the production runtime — the runtime path always launched per-connector isolated patchright profiles viaacquireIsolatedBrowser. Re-auth on each run viaensureSessionis the supported pattern for short-server-session sites. - Fleet-wide JSONL correctness fixes: U+2028/U+2029 escape + BigInt coercion + stdout backpressure drain in
src/safe-emit.js; Gmail 887-record crash and Slack 1,716-record truncation both traced to these. - USAA: credit-card CSV export working; PDF parser handles trailing-minus currency, non-statement filter, and year-assignment for December-on-January-statement cases.
- Slack: 24 GB archive, 196k distinct messages, 0 missing thread parents; retry-budget bump (
config/slackdump-api-config.toml) resolves eng_github-class 500-error cascade. - Chase v0.1 scaffolded: manifest + auto-login probe +
design-notes/chase.md(QFX-over-browser strategy; Direct Connect rejected per research). Auto-login probe verified end-to-end through full 2FA including mds-* shadow DOM. - Reference-impl fix: express.json body limit 100kb → 100mb so claude-code's file_mtimes cursor stops 413'ing state commits.
- Three new open-question notes documenting the partial-data honesty mechanism (decision deferred; must be decided together):
partial-run-semantics-open-question.md(production side)cursor-finality-and-gap-awareness-open-question.md(memory side)gap-recovery-execution-open-question.md(execution side, with 4-category skip taxonomy)
- Blob-hydration + storage-topology notes extended with Slack's 24 GB concrete scale data — rules out SQLite BLOB column, suggests hybrid content-addressed filesystem + metadata.
Per-connector status
| Connector | Status | Records in RS | Notes |
|---|---|---|---|
| ynab | ✅ done | 21,513 | Tombstones via op=delete. server_knowledge cursor is gap-free by construction. |
| gmail | ✅ done | 50,407 | IMAP + app password. BigInt crash fixed 2026-04-20 (shared stringifyForJsonl coerces BigInt; was dropping 887 records + state per run). |
| chatgpt | ✅ done | 11,341 | Browser fetch, tree-walk, bearer from #client-bootstrap. 4,188 durably-logged http_429 skips await the gap-recovery mechanism (see chatgpt.md). |
| usaa | 🟡 regression | 924 | accounts, transactions, statements, inbox_messages, credit_card_billing. Credit-card CSV export fixed 2026-04-20 (.as_credit__export selector, startDate input name). 2026-04-24 live run failed before browser interaction with net::ERR_HTTP2_PROTOCOL_ERROR on https://www.usaa.com/my/logon; investigate Playwright/network/session setup before calling USAA done again. 2026-04-25 schema replay flagged 6/924 records as drift: 4 transactions with currency: undefined and 1 with empty original_description from a 2026-04-19 emit batch that pre-dates the current parsers (today's csvRowToTransaction and buildStatementRecords set currency: "USD" and pass through original_description). 1 statement with empty account_reference from the same era. Schema is correct; current connector is correct. Data cleanup, not parser change: re-ingest the affected period to overwrite the stale-shaped historical records once the live-login regression is resolved. Do not loosen schemas. |
| claude_code | ✅ ingest fixed | 235,757 | 2.8 GB DB. state_streams_committed: 4/4 historically after the 413 fix. 2026-04-24 live run showed >1k IN_PROGRESS rows then failed /ingest/sessions with 500 Internal Server Error; root cause was controller-managed runtime ingest using the public composed web origin instead of the internal RS URL. Progress volume remains a separate follow-up. |
| codex | ✅ done | 74,033 | 0 nulls, 0 drops across function_calls + messages + sessions. |
| amazon | 🟡 v0.1 in progress | 0 | 2FA-on-wife's-phone blocker resolved 2026-04-21 (new account). Auto-login verified end-to-end (#ap_email_login + #ap_password selectors, OTP via INTERACTION). fetchOrderDetail intentionally stubbed pending live DOM probe. Manifest overclaims ~11 fields (see amazon.md). |
| chase | ✅ v0.1 working | 16 (1 account, 14 txns, 1 balance) | NEW 2026-04-21. End-to-end: auto-login via src/auto-login/chase.js (mds-* shadow DOM, text/role locators per Playwright best practices), discover accounts via #accounts-name-link-button-<id>-label pattern, QFX download via mds-select#downloadFileTypeOption + mds-button#download, parse via ofx-js. Only credit card so far (account-param CARD,BAC); checking/savings param shapes are placeholders. v0.2: date-range support (currently "Current display" ~30 days), statement PDFs. |
| github | ✅ (fixed 2026-04-24) | 8,608 | PAT auto-created via bin/bootstrap-github-pat.js (headless login → INTERACTION for 2FA → PAT form → token written to .env.local). Earlier progress_for_undeclared_stream failure was controller path-resolution colliding on connector_id; see GitHub section below. |
| oura | 🟡 ready | 0 | Awaits OURA_PERSONAL_ACCESS_TOKEN. |
| spotify | 🚫 blocked upstream + data cleanup | 0 trusted | Spotify froze new developer app creation in Feb 2026; OAuth-only anyway. Any local Spotify records are seed/demo/fake population, not Tim account data. Purge those rows or mark them non-trusted before using dashboard/API counts as evidence. Keep manifest, revisit real-account ingest when Spotify re-opens. |
| strava | 🟡 ready | 0 | Awaits STRAVA_ACCESS_TOKEN. |
| notion | 🟡 ready | 0 | Awaits NOTION_API_TOKEN. |
| 🟡 ready + data cleanup | 0 trusted | Awaits Reddit credentials; cursor fix landed. Any local Reddit records are seed/demo/fake population, not Tim account data. Purge those rows and re-ingest from Tim's Reddit credentials before using dashboard/API counts as evidence. | |
| 🚫 deprecated | 0 | Mozilla shut Pocket down 2025-07-08; all user data deleted 2025-10-08. Excluded from register-all. Connector retained as historical reference only. | |
| slack | ✅ done | 349,139 | slackdump subprocess, 24 GB archive, 196k messages, 73k reactions, 57k attachments, 17k files, 973 channels, 292 users, 0 missing thread parents. Retry-budget config + backpressure drain landed 2026-04-20. |
| anthropic | 🟡 scaffolded | 0 | Selectors TBD; needs live DOM walk. |
| shopify | 🟡 scaffolded | 0 | Selectors TBD. |
| heb | 🟡 scaffolded | 0 | Selectors TBD. |
| wholefoods | 🟡 scaffolded | 0 | Piggybacks on Amazon session; selectors TBD. |
| 🟡 scaffolded | 0 | Selectors TBD. | |
| meta (Instagram) | 🟡 scaffolded | 0 | Selectors TBD. |
| loom | 🟡 scaffolded | 0 | Selectors TBD. |
| uber | 🟡 scaffolded | 0 | Selectors TBD. |
| doordash | 🟡 scaffolded | 0 | Selectors TBD. |
| ✅ file-based | 0 | Drop .txt exports in ~/.pdpp/imports/whatsapp/. | |
| google_takeout | ✅ file-based | 0 | Extract into ~/.pdpp/imports/google_takeout/. |
| twitter_archive | ✅ file-based | 0 | Extract into ~/.pdpp/imports/twitter_archive/. |
| imessage | ✅ file-based | 0 | Auto-discovers ~/Library/Messages/chat.db. |
| apple_health | ✅ file-based | 0 | Extract into ~/.pdpp/imports/apple_health/. |
| ical | ✅ file-based | 0 | Drop .ics files or set ICAL_SUBSCRIPTION_URL. |
Infrastructure (delivered)
-
bin/bootstrap-github-pat.js— headless PAT creation with 2FA via INTERACTION. Pattern replicable for other PAT-capable platforms. -
src/interaction-handler.js— canonical onInteraction handler for CLI (file drop + TTY + ntfy) - Shared
src/scope-filters.jshelper (resourceSet,passesTimeRange,passesResourceFilter,makeEmitGate,emitTombstones,requireCredentialsOrAsk) - Shared
src/browser-scraper-runtime.jsharness with optionalensureSessionhook -
src/auto-login/{usaa,amazon,chatgpt}.js— stored-creds + 2FA-via-ntfy helpers -
bin/register-all.js— smoke test that all manifests parse + validate - Orchestrator respects
PDPP_DB_PATHenv override (enables parallel runs into separate DBs) -
flushAndExit(code)fix in every connector — prevents JSONL truncation at end of run -
filesystem: {}binding exposed by runtime (buildAvailableBindings) — enables local-file connectors
Infrastructure (still pending)
-
Browser daemon — long-lived Chromium, CDP-attached, session cookies persist across runs.Superseded 2026-04-25 bypdpp-connectors browser start|stop|status|restart|logsCLI. Resolves the USAA session-token-on-process-exit problem documented in the 2026-04-20 Opus research.openspec/changes/retire-browser-daemon. Production runtime never used the daemon path; the per-connector isolated patchright profile inacquireIsolatedBrowseris the only remaining browser-launch primitive. - Session keep-alive probes (
scripts/session-keepalive.mjs) — 8-min interval ping against Chase + Amazon authenticated URLs. - Scheduler persistence (SQLite-backed
run_history+last_run_time) - Inbox module (
reference-implementation/server/inbox.js) + routes + minimal HTML (reference-impl concern) -
ntfybridge module — exists atsrc/ntfy.js, used by scheduler-runner and the new CLI interaction handler - Orchestrator CLI now wires
onInteraction— file-drop response + ntfy + TTY prompt. Runs that need creds/OTP no longer fail silently. - Pause/resume INTERACTION handling — runtime supports parking, scheduler doesn't read the state yet
- [~] First-party connector progress reporting pass — audit core connectors and emit
PROGRESS { count, total }wherever the upstream exposes a bounded unit of work (pages, files, accounts, budgets, repositories, archive entries). Connectors that cannot know a total should still report phase/count honestly. Do not invent percentages.- 2026-04-24 worker pass patched bounded counters for ynab, gmail, github PR search, chase, usaa statement hydration, and chatgpt conversation detail batches; compacted duplicate Claude Code line progress. Audit captured in
design-notes/core-connector-progress-audit-2026-04-24.md.
- 2026-04-24 worker pass patched bounded counters for ynab, gmail, github PR search, chase, usaa statement hydration, and chatgpt conversation detail batches; compacted duplicate Claude Code line progress. Audit captured in
- Nightly status summary via ntfy — today still fires manually
- Partial-run honesty mechanism transferred to
define-partial-run-honesty(SKIP_RESULT taxonomy, known gaps, and recovery contract). The three linked*-open-question.mdnotes remain as source context.
Spec-conformance work (delivered today)
See design-notes/spec-conformance-upgrade-2026-04-19.md for the full retrofit table. Summary:
- All 28 connectors honor the
resourcesfilter on every stream - Mutable-state connectors emit tombstones (
op=delete) where the upstream exposes deletion signals (YNAB, Notion, Pocket, Gmail). Others deferred — see note below. - Runtime-binding violations now emit
INTERACTION kind=missing_credentialsinstead of failing silently - Reddit cursor replaced with
sinceEpochUtcstop-condition inpaginate()— resolves duplicate-across-runs bug -
flushAndExitpattern applied to every connector - USAA unattended re-auth (OTP via INTERACTION → ntfy → Tim's phone → wife's-phone forward)
- USAA brought to 5 streams (was 1)
- Amazon / ChatGPT re-auth via ensure-session helpers
Claude Code + Codex (delivered today)
-
connectors/claude_code/index.js+manifests/claude_code.json— parses~/.claude/projects/**/*.jsonl, emits sessions/messages/attachments. Incremental via file-mtime. -
connectors/codex/index.js+manifests/codex.json— parses~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl, emits sessions/messages/function_calls. Reasoning encrypted-content skipped intentionally. - Runtime filesystem binding exposed (buildAvailableBindings)
- Content preview capped at 5 KB (down from 20 KB) — plenty of signal, 4× smaller payloads
- PROGRESS every 2000 lines so long parses show liveness
-
CLAUDE_CODE_PROJECT_INCLUDE/EXCLUDEenv vars for optional scoping (trigger for the open-question note) - Historical live-run note: Claude Code ingest status is no longer tracked as an evergreen in-progress checkbox here. Current Claude Code bugs and Layer 2 gaps are tracked in the dedicated section below and
add-polyfill-layer-two-stream-coverage. - Historical live-run note: Codex ingest status is no longer tracked as an evergreen in-progress checkbox here. Current Codex Layer 2 gaps are tracked in the dedicated section below and
add-polyfill-layer-two-stream-coverage.
OpenSpec hygiene
- Change proposal written
- Design.md written
-
tasks.mdupdated (this file, 2026-04-19 EOD) -
design-notes/0-overnight-summary.md— 2026-04-19 morning -
design-notes/spec-conformance-upgrade-2026-04-19.md -
design-notes/unattended-operation.md -
design-notes/connector-configuration-open-question.md— new today -
design-notes/settings-stream-convention-open-question.md— new today (Layer 2 cross-cutting) -
design-notes/usaa-extra-streams.md - New
design-notes/claude-code-codex-connectors.md— rationale + schema decisions for the two local-file connectors. - Move OpenAI/Anthropic token data from "scaffolded" to "implemented" once selectors wired
Post-refactor quality follow-up (owner-approved 2026-04-23)
This section captures the durable outcome of the A++ follow-up review. It is the canonical execution list; the temporary response memo can be deleted once these tasks are tracked here.
Tranche A — establish truth first
- Compare every decomposed connector against the last pre-decomposition commit before changing behavior. Output must be a short matrix: connector, last pre-decomp commit, material differences, intentional vs regression, required action.
- Replace hand-rolled integration
emitRecordmocks with a helper that runs the real shape validator and records both emitted and skipped records. - Audit the remaining
@ts-expect-errordirectives insidepage.evaluate()and remove them unless they are still genuinely required. - Investigate the
apple_healthparser timeout hypothesis and record whether it was warmup-only or a real pathological test.
Tranche B — remove accidental complexity
- Replace the current
collect-helpers.tsworkaround with a small explicit entrypoint helper (isMainModule()/runConnectorIfMain()or equivalent) without overloadingrunConnector()with process-launch semantics. - Add package-scoped CI for
packages/polyfill-connectors/**runningverifyandtest. Start non-blocking first; only promote to required after a proving period.
Tranche C — behavior correction, only after Tranche A
- Standardize connector emit ordering on
parent-first, after the pre-decomposition audit confirmed gmail/chatgpt/claude_code child-first behavior was intentional pre-existing behavior rather than decomposition drift. - Update
packages/polyfill-connectors/docs/authoring-guide.mdso connector authors can rely onparent-firstexplicitly. Owner decision: keepparent-firstas the reference-quality default because the live-ingest contract benefits outweigh the measured wall-clock cost on large real corpora. This is a connector/runtime quality rule, not a core PDPP protocol requirement. Connector-specific exceptions require explicit owner sign-off after benchmarked evidence.
Tranche D — narrow protocol proof
- Build a subprocess-level protocol harness as a narrow Phase 1 only.
Success criteria: one non-browser connector test, one browser connector test, and evidence that the harness catches something helper-level tests do not.
- 2026-04-24 worker lane added
runConnectorProtocolSubprocess, proving START over stdin through RECORD / STATE / PROGRESS / SKIP_RESULT to DONE over stdout against a real child process. Coverage is synthetic and no-network: one non-browser fixture plus one browser-shaped no-browser fixture. The harness also rejects a child that exits without terminal DONE, covering process/stdio failure modes directmakeRecordingEmithelper tests cannot observe.
- 2026-04-24 worker lane added
- Decide on wider rollout of protocol subprocess tests only after Phase 1 proves stable and worth the maintenance cost.
- Decision: do not roll this out across the live connector fleet yet. Keep the subprocess harness as a narrow protocol sentinel because Phase 1 proves useful coverage for bootstrap/stdout/DONE behavior, but fleet-wide subprocess tests would duplicate existing collect-layer coverage and add maintenance cost around auth, fixtures, and browser setup. Add connector-specific subprocess cases only when a connector introduces a new entrypoint/auth/bootstrap pattern or regresses at the process boundary.
Explicitly deferred unless evidence changes
- Do not spend effort balancing parser-vs-integration test counts for aesthetic reasons. Reassess only if real blind spots remain after the protocol-harness phase.
- Do not rewrite history for commit-aesthetics cleanup.
- Do not add clever staged/unstaged merge machinery to lefthook unless a concrete reproducible data-loss case is demonstrated. If hook behavior becomes a real problem, prefer the simpler guard: refuse auto-format on partially staged same-file changes.
Deferred / open
- Tombstones for additional mutable_state streams. ChatGPT has no "deleted conversations" signal. USAA statements are append-only. ChatGPT memories mutate; needs a follow-up pass.
- USAA transfers, bill_payments, scheduled_transactions, external_accounts streams. Covered by
design-notes/usaa-extra-streams.md; wiring pending. - USAA history beyond 18 months. Statement-PDF parsing is the likely path; design not started.
- Browser connector selector-wiring. Nine connectors scaffolded but need live co-pilot DOM walks.
- Connector configuration surface. Open question — manifest-declared
credentials_schema+options_schema. Seedesign-notes/connector-configuration-open-question.md. Decision paused pending RFC. - RS storage topology. Open question — one DB per owner vs. per connector, or both under a unified query surface. See
design-notes/rs-storage-topology-open-question.md. Today Codex is split out underPDPP_DB_PATHto dodge SQLITE_BUSY; the split was tactical, not chosen. - Credential storage. Open question —
.env.localplaintext is the wrong answer for anything beyond single-user laptop dev. Seedesign-notes/credential-storage-open-question.md. Vault interface proposed; decision paused. - External-tool dependencies. Open question —
runtime_requirements.external_toolsfor subprocess binaries like slackdump (AGPL), osxphotos, Playwright browsers. Today invisible to spec, consent card, and auditors. Seedesign-notes/external-tool-dependencies-open-question.md. - Layer 2 manifest completeness. Open question — does a polyfill manifest commit to a coverage contract against the source's actual surface? See
design-notes/layer-2-completeness-open-question.md. - Owner self-export. Open question — should the RS expose a canonical owner-facing
GET /v1/connectors/ bulk-export surface? Seedesign-notes/owner-self-export-open-question.md. - Identity graph. Open question — should cross-connector followers/friends/orgs be promoted to a standard
identity_graphprofile? Seedesign-notes/identity-graph-open-question.md. - Settings/preferences stream convention. Open question — normalized
settingsstream shape across connectors. Every connector has user-authored settings; today most omit them. Seedesign-notes/settings-stream-convention-open-question.md. - SillyTavern re-ingest. Tim confirmed he wants it included. Re-run after current pass finishes (no EXCLUDE).
- Spotify/Reddit fake-data cleanup. Local rows for Spotify and Reddit must be treated as seed/demo/fake population until proven otherwise. Before internal demo or assistant evaluation, purge those rows from the reference DB and either re-ingest from Tim-owned credentials (Reddit) or keep the connector visibly blocked/untrusted until real-account access exists (Spotify).
Layer 2 implementation follow-up (raised 2026-04-19)
P0 stream additions identified by the Layer 2 audits (design-notes/layer-2-coverage-chatgpt-claude-codex.md, design-notes/layer-2-coverage-gmail-ynab-usaa-github.md) have been transferred to add-polyfill-layer-two-stream-coverage. The checklist below is retained as historical source material and intentionally marked transferred rather than implemented.
Query/API readiness follow-up (raised 2026-04-24)
These are the highest-leverage gaps surfaced by live assistant use of the reference API. Start with an audit matrix before adding new surface area: field/stream, current manifest declaration, current server behavior, docs/spec claim, tests, and recommended fix.
- Audit first-party stream schemas for useful range-filter declarations. Add every honest date/date-time/numeric
query.range_filtersentry that enables common windows like "last 7 days" or amount windows; document exclusions where field types, cursor semantics, or source data quality make range filtering unsafe. Seedesign-notes/query-api-readiness-audit-2026-04-24.md. - Schema discoverability audit and implementation completed by
define-field-level-query-capability-schemaand archived into canonical specs. -
expand[]audit and implementation completed byenable-safe-parent-child-expandand archived into canonical specs. -
changes_sinceinitial-bookmark usability completed bydefine-initial-changes-bookmarkand archived into canonical specs. - Gmail attachment byte/blob hydration completed by
hydrate-gmail-attachment-blobsand archived into canonical specs. - Public surfaces such as
/v1/timeline,/v1/entities, hybrid search, semantic reranking, webhooks, and broader facets remain deferred until proposed as separate OpenSpec changes.
ChatGPT
- Transferred to
add-polyfill-layer-two-stream-coverage: addcustom_gptsstream (from/backend-api/gizmos/mine). - Transferred to
add-polyfill-layer-two-stream-coverage: addcustom_instructionsstream (from/backend-api/user_system_messages). - Transferred to
add-polyfill-layer-two-stream-coverage: addshared_conversationsstream (from/backend-api/shared_conversations). - Transferred to
add-polyfill-layer-two-stream-coverage: re-run after ChatGPT extractor fix lands in next scheduled run.
Claude Code
- Fix live
sessionsingest regression: current run can emit >1kIN_PROGRESSevents then fail/ingest/sessionswith500 Internal Server Error. Captured with a safe synthetic Claude Code sessions fixture: controller-managed composed-mode runs were posting the NDJSON sessions batch to the public browser origin, so proxy/body handling could turn/v1/ingest/sessionsinto a 500. Regression test now traps the public origin and proves Claude Code ingest uses the internal RS URL. - Reduce or summarize Claude Code two-pass progress volume. The >1k
IN_PROGRESSrows were not the 500 root cause, but the connector currently emits per-file parse progress in both build and emit passes; decide whether to compact connector progress or summarize it in the operator UI.- 2026-04-24 worker pass keeps build-pass per-file liveness, suppresses duplicate build-pass per-line progress, and labels file progress as indexing vs emitting.
- Transferred to
add-polyfill-layer-two-stream-coverage: recursive session traversal forprojects/<p>/<session>/subagents/*.jsonl+/tool-results/*.txt. - Transferred to
add-polyfill-layer-two-stream-coverage: addmemory_notesstream (fromprojects/<p>/memory/*.md). - Transferred to
add-polyfill-layer-two-stream-coverage: addskillsstream (from~/.claude/skills/<name>/SKILL.md). - Transferred to
add-polyfill-layer-two-stream-coverage: addslash_commandsstream (from~/.claude/commands/*.md+ per-repo./.claude/commands/*.md).
Codex
- Transferred to
add-polyfill-layer-two-stream-coverage: evaluate~/.codex/state_5.sqlite#threadsfor canonical session metadata. - Transferred to
add-polyfill-layer-two-stream-coverage: addpromptsstream (from~/.codex/prompts/*.md). - Transferred to
add-polyfill-layer-two-stream-coverage: addskillsstream (from~/.codex/skills/<name>/SKILL.md). - Transferred to
add-polyfill-layer-two-stream-coverage: addapproval_rulesstream (from~/.codex/rules/default.rules).
GitHub
- Fix
progress_for_undeclared_streamregression. Root cause was controller path resolution, not the GitHub connector: the reference fixture manifest and the polyfill manifest shareconnector_id https://registry.pdpp.org/connectors/github, andreference-implementation/runtime/controller.tsmatched the reference fixture id first — so polyfill GitHub runs executed the reference seed connector, whose GitHub fixture emits acommitsPROGRESS stream the polyfill manifest does not declare. The 2026-04-24 worker audit also confirmed the current GitHub polyfill connector emits PROGRESS only for declared streams (user,repositories,starred,issues,pull_requests,gists). Fix:resolveDefaultConnectorPathnow compares a manifest fingerprint (version+ sorted stream names) against the on-disk reference and polyfill manifests and prefers the polyfill implementation on collision. Regression covered byreference-implementation/test/connector-path-resolution.test.js. - Transferred to
add-polyfill-layer-two-stream-coverage: evaluateissuesstream (authored, assigned, mentioned, commented). - Transferred to
add-polyfill-layer-two-stream-coverage: evaluatepull_requestsstream (authored, reviewed, review-requested, merged). - Transferred to
add-polyfill-layer-two-stream-coverage: evaluategistsstream. - Transferred to
add-polyfill-layer-two-stream-coverage: evaluatefollowers/followingstreams.
YNAB
- Transferred to
add-polyfill-layer-two-stream-coverage: addmonth_categoriesmatrix stream.
USAA
- Fix live login navigation regression: current run fails immediately with
connector_reported_failed/usaa_session_failed: page.goto: net::ERR_HTTP2_PROTOCOL_ERRORathttps://www.usaa.com/my/logonand never surfaces a browser interaction. Reproduce with browser-daemon logs enabled, compare headed vs headless, and preserve an interaction path if the site blocks automated navigation. - Transferred to
add-polyfill-layer-two-stream-coverage: wire already-designed streams (transfers,bill_payments,scheduled_transactions,external_accounts). - Transferred to
add-polyfill-layer-two-stream-coverage: implement statement PDF download +pdf_sha256once live browser session is available.
Gmail
-
message_bodiesstream — implemented 2026-04-19 (Layer 2 exemplar fix:body_sha256+ text/html parts, deferred blob hydration pattern) - Transferred to
add-polyfill-layer-two-stream-coverage: Gmail attachment blob collection and deferred hydration.
Slack
- Transferred to
add-polyfill-layer-two-stream-coverage: audit Slack v0.3.0 coverage for reactions, message attachments, and related streams. - Transferred to
add-polyfill-layer-two-stream-coverage: evaluate Slack canvases, stars, user groups, and reminders.
Fixture pipeline (test-harness prerequisite)
- Transferred to
add-connector-fixture-scrubber-pipeline: LLM-based PII scrubber for captured fixtures. - Transferred to
add-connector-fixture-scrubber-pipeline: connector-specific scrub-rule files.
Review checklist for Tim
- [?] Every
(autonomous 2026-04-19)decision in design notes - [?] Schema shape for each connector (platform-native; sanity-check for missed fields)
- [?] Claude Code + Codex stream design (
sessions/messages/attachmentsvssessions/messages/function_calls) - [?] Connector-configuration open question — direction on manifest-declared schemas
- [?] ntfy morning summary content