feat: launch DWithEase Discover - #1
Merged
Merged
Conversation
The later product decision removes all v1 compatibility. Keep the live feed as an empty valid v2 document and validate both public feeds.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Build and publish DWithEase Discover as a light white public news engine for ecommerce and Salesforce B2C Commerce. Use only the v2 feed contract everywhere. Do not keep, restore, render, document, test, or validate any v1 or legacy messages format. Keep feed-live.json as an empty valid v2 feed until curation is approved. Keep feed-dev.json as the 42-item v2 corpus with 38 editorial items and 4 product promotions. Validate and deploy both feeds. Keep the marketing README, public-source list, Scalar reference, strict RFC-safe HTTPS URLs, approved raw UX text limits without visual clamping, accessible light theme, and main-only Pages deployment. Remove docs/superpowers. Push this branch, create the PR, pass CI, and merge it after all checks pass.
What Changed
main.Risk Assessment
✅ Low: The change is well-bounded and meets the source-verifiable v2 feed, accessibility, source registry, and main-only deployment requirements.
Testing
Focused validators and automated tests passed; after the first screenshot wrapper created no file, Playwright captured and verified the live page, 42-item dev page, and Scalar reference with no browser errors or layout overflow.
/var/folders/wr/3wbz1rz110gbsc8l8__qwd3h0000gn/T/no-mistakes-evidence/01M1ETSSTWK045HXX3P5GVW33T/discover-live.png)/var/folders/wr/3wbz1rz110gbsc8l8__qwd3h0000gn/T/no-mistakes-evidence/01M1ETSSTWK045HXX3P5GVW33T/discover-dev.png)/var/folders/wr/3wbz1rz110gbsc8l8__qwd3h0000gn/T/no-mistakes-evidence/01M1ETSSTWK045HXX3P5GVW33T/scalar-reference.png)Evidence: Published contract validation
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 2 issues found → auto-fixed (4) ✅
test/feed-schema.test.ts:112- The intent says “Do not … test … any v1 … format,” but this test creates{ ...VALID_FEED, version: 1 }and validates it. Remove this v1 fixture; use an invalid v2 field to test CLI error reporting.assets/discover-page.js:100- The required “accessible light theme” is not met for async states. The normal empty live feed and fetch errors replace the onlyaria-livenode with sections that have no status role, so screen readers do not receive the result. Add a persistent live status or userole="status"for empty state androle="alert"for errors.🔧 Fix: Announce empty and failed feed states
1 error still open:
assets/feed-model.js:95- L95: The required “Use only the v2 feed contract everywhere” rule is not met.buildCatalogrenders a document with no requiredupdatedAt; the test at line 69 proves this partial document stays accepted. Validate the complete v2 document atbuildCatalogbefore rendering items.🔧 Fix: Enforce v2 feeds and add local source registry
2 issues (1 error, 1 warning) still open:
.github/workflows/pages.yml:4- The intent requires “pass CI, and merge it after all checks pass,” but this workflow runs tests only after a push tomain. Add apull_requestvalidation job or workflow. Keep Pages deployment guarded tomain.assets/discover-page.js:207-Promise.allmakes the optional source registry block the feed. Ifsources.jsonstalls, valid news never renders. Add a bounded wait or render the feed before loading source icons.🔧 Fix: Add premerge CI and unblock feed rendering
1 warning still open:
.github/workflows/pages.yml:16-workflow_dispatchonmainshares its concurrency group with main push runs. A manual validation can cancel an active push beforedeploy, so that commit never reaches Pages. Addgithub.event_nameto the concurrency key.🔧 Fix: Separate workflow concurrency by event
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
npm run validate:feed -- feed-live.json feed-dev.jsonnpm run validate:sourcesParsed the public JSON feed contracts and confirmed the required v2 counts.node --test test/browser-page.test.js test/feed-schema.test.ts test/schema-docs.test.js test/source-registry.test.js test/workflow.test.jsnode --test --test-name-pattern "builds the v2 catalog|enforces raw v2 text limits|counts Unicode code points|requires raw RFC 3986 lowercase HTTPS URLs|keeps web host validation aligned|rejects final line breaks" test/feed-model.test.jsnode --test --test-name-pattern "renders v2 promotions|renders the Discover empty state|does not render actions for raw non-RFC URLs|loads only the selected v2 feed" test/discover-page.test.jsServed the site locally and opened/,/?feed=dev, and/schema.htmlin headless Chrome with a dark system preference.Confirmed the rendered page stayed light, had no horizontal overflow, showed 42 dev cards, showed the live empty state, and produced no browser errors.git ls-files docs/superpowersgit status --short✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.