Skip to content

feat: wire channels through pipeline, remove dead code, add metadata version#7

Merged
ronaldtse merged 4 commits into
mainfrom
feat/channel-pipeline-wiring
May 12, 2026
Merged

feat: wire channels through pipeline, remove dead code, add metadata version#7
ronaldtse merged 4 commits into
mainfrom
feat/channel-pipeline-wiring

Conversation

@ronaldtse
Copy link
Copy Markdown
Contributor

Summary

Completes the channel-based publication wiring from the audit (TODO 15, items A–K):

What changed

  1. Channel pipeline wiring (audit A, F, G)

    • Replaced VisibilityFilter with ChannelManifestFilter that uses ChannelManifest.resolve() for policy-based filtering
    • Pass manifest to pipeline deps so resolveChannels() and passesStageConstraint() route per-document channels to the publisher
  2. Dead code removal (audit B, C, D, E)

    • Removed ReleaseManifest class (superseded by ChannelManifest)
    • Removed Visibility enum (no production references)
    • Removed VisibilityFilter (replaced by ChannelManifestFilter)
    • Removed isPublic() and resolveStageAllowList() bridge methods from ChannelManifest
    • All tests updated to use resolve() instead of isPublic()
  3. Metadata & robustness (audit H, I)

    • Added version: 1 to ReleaseMetadataJson for format negotiation by downstream consumers
    • Added warning log when resolveSourcePath() cannot find a /documents/ segment
  4. O(n²) fix (audit J) — already in place from prior work, verified no indexOf in pipeline

Test plan

  • 298 tests pass (25 files)
  • New channel-manifest-filter.test.ts with 5 tests covering the filter
  • Updated pipeline.test.ts, channel-manifest.test.ts, manifest-loader.test.ts to use new APIs
  • Removed release-manifest.test.ts and visibility-filter.test.ts
  • Build, lint, format all pass

ronaldtse added 4 commits May 12, 2026 19:50
Replace VisibilityFilter with ChannelManifestFilter that uses
ChannelManifest.resolve() for policy-based filtering. Pass manifest
to pipeline deps so resolveChannels() and passesStageConstraint()
can route per-document channels to the publisher.
… methods

Remove ReleaseManifest class (superseded by ChannelManifest), Visibility
enum (no production references), VisibilityFilter (replaced by
ChannelManifestFilter), isPublic() and resolveStageAllowList() bridge
methods from ChannelManifest. Update all tests to use resolve().
Add version: 1 to ReleaseMetadataJson for format negotiation by
downstream consumers. Add a warning log when resolveSourcePath()
cannot find a /documents/ segment in the output directory path.
@ronaldtse ronaldtse merged commit c3ba807 into main May 12, 2026
5 checks passed
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