Skip to content

chore: demote the stale duplicate connector manifests to named seed fixtures - #153

Merged
tnunamak merged 2 commits into
mainfrom
manifest-reconciliation
Aug 20, 2026
Merged

chore: demote the stale duplicate connector manifests to named seed fixtures#153
tnunamak merged 2 commits into
mainfrom
manifest-reconciliation

Conversation

@tnunamak

Copy link
Copy Markdown
Contributor

The same connector had two different manifest files in this repository — for example github existed as version 1.1.0 under reference-implementation/manifests/ and as version 0.5.0 (with a full credential-capture section) under packages/polyfill-connectors/manifests/ — and nothing kept them coherent, so any reader or tool could pick the wrong one. Tracing the deployed server's loading code settled which is real: at boot it seeds its connector database exclusively from packages/polyfill-connectors/manifests/ (the production image hard-enables this), and the four files under reference-implementation/manifests/ are never registered — they exist only to feed a fingerprint comparison that invalidates stale seed records.

This PR makes the file layout say what the code does: the four stale files move (history-preserving) to reference-implementation/fixtures/seed-manifests/, so their path now states they are fixtures, not a second source of truth. The original cleanup plan predicted two code references to update; searching found ten-plus live ones — a CI path-prefix list, a doc-generation script, a smoke test, a content-parsing parity test, and test fixtures — all updated here, path-string changes only, no behavior changes.

Verified: full TypeScript compile checks of the server and connector packages are clean; the manifest-related test suites pass (75/75 validation, 68/68 parity/derivation); and a real server boot with reconciliation enabled registered all 20 canonical manifests with no reference to the old path.

Stacked on #152; merges into that branch, then up the stack to main. Merge commits only — the move's file history must survive.

Assisted-by: AI

…tures/seed-manifests/

packages/polyfill-connectors/manifests/ is the canonical, actively
maintained connector manifest set: production seeds its DB from it via
reconcilePolyfillManifests(), and the console's catalog is served
transitively from those DB rows. reference-implementation/manifests/
looked like a second, competing manifest set for the same connector
IDs (github, reddit, spotify), but it is never registered into the
catalog — it exists only to (a) back the deterministic `pdpp seed` demo
connector and (b) supply fingerprints for a narrow fixture-to-polyfill
transition heuristic in polyfill-manifest-reconcile.ts. That produced a
real divergence: two different manifests on disk for the same
connector, with no naming to say one was a fixture. This rename makes
that explicit without changing any runtime behavior.

git mv reference-implementation/manifests -> reference-implementation/fixtures/seed-manifests,
then updated every real path dependent (verified by exhaustive repo
grep, including a rerun with `grep -a` after discovering `grep -rn`
silently treats one large scanner helper as binary and skips it):

- Production runtime code: runtime/controller.ts's REFERENCE_MANIFESTS_DIR,
  cli/commands/seed.ts's MANIFESTS_DIR (the real `pdpp seed` command),
  scripts/generate-connector-registry.ts and scripts/compact-record-history.ts.
- The fingerprint source itself: polyfill-manifest-reconcile.ts's
  defaultReferenceFixturesDir().
- CI gating: scripts/ci-mode.ts's CONNECTOR_SURFACE_PATH_PREFIXES (a
  real path-prefix match, not just documentation) and
  .github/workflows/polyfill-connectors.yml's path triggers.
- Generated/checked docs: regenerated connector-registry.generated.ts
  and stream-evidence-inventory.md via their producing scripts (diffs
  are header-text-only; derived content is unchanged).
- ~30 test files with real (non-comment) path dependencies: three
  independent MANIFEST_ROOTS constants in the zero-connector-knowledge
  scanner helpers, dozens of `join(REFERENCE_IMPL_DIR, "manifests", ...)`
  call sites across owner-connection/-diagnostics/-schedule/etc. test
  suites, and literal relative-import strings inside synthetic
  production-file fixtures in ri-zero-connector-knowledge-conformance.test.ts
  (these resolve relative to reference-implementation/server/, so they
  needed `../fixtures/seed-manifests/...`, not a straight string swap).
- Doc/comment references and one live openspec spec file
  (openspec/specs/reference-implementation-architecture/spec.md).
  Historical openspec/changes/* proposals and archived design docs were
  left untouched as point-in-time records.

Scope note: the source plan for this change estimated two reference
sites to update after the rename. The actual count was over 40 files.
The plan's own read-only audit of runtime dependencies (which manifest
set production loads, why reference-implementation/manifests/ is a
fixture not canonical) held up under verification, but its estimate of
the mechanical rename's blast radius did not — worth factoring in when
trusting a prior audit's scope estimate over a fresh repo-wide grep.

Verified: reconcile-related test suites (polyfill-manifest-reconcile-
invalidation, github-manifest-connector-parity, connector-path-
resolution, ri-zero-connector-knowledge-conformance, connector-registry-
manifest-derivation, and ~15 owner-connection/-diagnostics suites) pass
individually. Full reference-implementation and polyfill-connectors
typecheck passes. A real server boot with
PDPP_RECONCILE_POLYFILL_MANIFESTS=1 reconciles all 20 first-party
manifests from packages/polyfill-connectors/manifests/ with no errors
referencing the renamed fixtures path. Two pre-existing failures
(scripts/ci-mode.test.ts's nested dynamic-import subprocess test, and
cli:connect-smoke's local-connect flow) reproduce identically on the
unmodified engine-split-slice2 checkout and are unrelated to this
change.

Assisted-by: AI
Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
@vercel

vercel Bot commented Aug 17, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
pdpp Ready Ready Preview Aug 18, 2026 4:45pm

Request Review

…ures/seed-manifests/

27f6eb6 renamed reference-implementation/manifests/ to
fixtures/seed-manifests/ but only updated the readers built on the
REFERENCE_IMPL_DIR + templated filename pattern. ~50 other test files
resolved fixture manifests via join(__dirname, "../manifests/...")
or new URL("../manifests/...", import.meta.url), which still pointed
at the removed directory and threw ENOENT — the root cause of both
the typecheck+full-test-suite and pr89-seam-receipt CI failures on
this branch.

Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
Base automatically changed from engine-split-slice2 to main August 20, 2026 12:31
@tnunamak
tnunamak merged commit 24b8511 into main Aug 20, 2026
13 checks passed
@tnunamak
tnunamak deleted the manifest-reconciliation branch August 20, 2026 12:32
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