Skip to content

External channels P1 follow-ups: facets, owner badges, feed hardening - #2147

Merged
jung-thomas merged 1 commit into
DEVfrom
channels-p1-followups
Sep 4, 2026
Merged

External channels P1 follow-ups: facets, owner badges, feed hardening#2147
jung-thomas merged 1 commit into
DEVfrom
channels-p1-followups

Conversation

@jung-thomas

Copy link
Copy Markdown
Contributor

External Channels — P1 follow-ups

Closes the three non-blocking follow-ups flagged in P1 (PR #2142). No new phase — refinements to what shipped. All against the existing spec docs/superpowers/specs/2026-09-04-external-channels-integration-design.md.

1. Directory facets (spec §8.3 / §10 Tier-1)

The Tier-1 deterministic facet set is category / focus area / SAP-vs-community / platform / status. P1 shipped only category / platform / owner / search. Added:

  • focusArea facet (membership match against the row's focusAreas array)
  • status facet (exact match on ChannelStatus)

2. Owner badges + related links (spec §8.4 / §10 labeling)

  • ownerBadge() derives the five spec labels from ChannelOwnerType: SAP (Official/Executive), SAP Advocate, Community (Member/Organization), User Group, Third-party (Training/Media/Platform). Falls back to the coarse SAP/Community split when ownerType is absent. P1 rendered only a single "Community" flag.
  • Per-channel card now renders relatedUrls.

3. Feed hardening

  • /build/channels now projects an explicit public whitelist instead of spreading the full row (...r). Drops managed audit + internal curation columns from the anon feed: sourceId, notes, aliases, contentHash, ingestBatch, lastChecked, isFeatured, linkStatusOverride, createdBy/modifiedBy. Consumers (fetch-channels.ts pass-through, Hugo layout, island) only use whitelisted fields — verified.

4. Shelf-promotion minors (deferred Task-6 items)

  • FOCUS_TO_VERB now reaches CONNECT (community/network/networking/events/connect) — previously unreachable.
  • CATEGORY_TO_SHELF lookup is case-insensitive — ingest case variance no longer silently defaults to REFERENCE.
  • Cosmetic: dropped the m?.shelf optional-chain in the test (mapChannelToShelf never returns null).

Verification

  • Affected suites green: filter.test.ts (facets + ownerBadge), build-channels-feed.test.js (whitelist assertions), channels-promote.test.js (CONNECT + case-insensitive) — 16 tests.
  • Full unit suite: 9332 passed. The 6 file failures are the same pre-existing env artifacts as PR feat: external SAP channels P1 foundation #2142 (5 × gitignored srv-qa build output + app/explore's uninstalled graphology dep) — none channels-related.

Deploy note

Frontend + backend change; no admin-shell bundle change. Deploy later per Tom.

Directory (spec 8.3/10 Tier-1 facets):
- add focusArea + status facets to filter.ts + ChannelsDirectory.vue
  (was category/platform/owner/search only)
- ownerBadge() derives SAP / SAP Advocate / Community / User Group /
  Third-party from ChannelOwnerType (was a single Community flag);
  render relatedUrls on the card

Feed:
- /build/channels now projects an explicit public whitelist instead of
  spreading the full row (drops managed audit + internal curation cols:
  sourceId, notes, aliases, contentHash, ingestBatch, lastChecked,
  isFeatured, linkStatusOverride, createdBy/modifiedBy)

Shelf promotion:
- FOCUS_TO_VERB now reaches CONNECT (community/network/events/connect)
- CATEGORY_TO_SHELF lookup is case-insensitive

Tests: filter facets + ownerBadge mapping; feed whitelist assertions;
CONNECT + case-insensitive category promotion.
@jung-thomas
jung-thomas marked this pull request as ready for review September 4, 2026 18:07
@jung-thomas
jung-thomas merged commit 2018c95 into DEV Sep 4, 2026
5 checks passed
@jung-thomas
jung-thomas deleted the channels-p1-followups branch September 4, 2026 18:07
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