Skip to content

feat: launch DWithEase Discover - #1

Merged
k2kirov merged 27 commits into
mainfrom
feature/discover-public-page
Sep 1, 2026
Merged

feat: launch DWithEase Discover#1
k2kirov merged 27 commits into
mainfrom
feature/discover-public-page

Conversation

@k2kirov

@k2kirov k2kirov commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

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

  • Add the light, accessible DWithEase Discover page with editorial cards, product promotions, source icons, and clear empty or error states.
  • Define the v2-only feed contract, source registry, JSON Schema, OpenAPI reference, validators, and tests. Include 38 editorial items and 4 promotions in the development feed while the live feed stays empty.
  • Add project docs and a GitHub Pages workflow that validates both feeds and deploys only from 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.

  • Evidence: Live feed empty state in Chrome (local file: /var/folders/wr/3wbz1rz110gbsc8l8__qwd3h0000gn/T/no-mistakes-evidence/01M1ETSSTWK045HXX3P5GVW33T/discover-live.png)
  • Evidence: Full 42-item development feed in Chrome (local file: /var/folders/wr/3wbz1rz110gbsc8l8__qwd3h0000gn/T/no-mistakes-evidence/01M1ETSSTWK045HXX3P5GVW33T/discover-dev.png)
  • Evidence: Rendered Scalar v2 feed reference (local file: /var/folders/wr/3wbz1rz110gbsc8l8__qwd3h0000gn/T/no-mistakes-evidence/01M1ETSSTWK045HXX3P5GVW33T/scalar-reference.png)
Evidence: Published contract validation
feed-live.json: valid — v2, 0 items
feed-dev.json: valid — v2, 42 items, 38 editorial, 4 promotions
sources.json: valid

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 only aria-live node with sections that have no status role, so screen readers do not receive the result. Add a persistent live status or use role="status" for empty state and role="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. buildCatalog renders a document with no required updatedAt; the test at line 69 proves this partial document stays accepted. Validate the complete v2 document at buildCatalog before 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 to main. Add a pull_request validation job or workflow. Keep Pages deployment guarded to main.
  • ⚠️ assets/discover-page.js:207 - Promise.all makes the optional source registry block the feed. If sources.json stalls, 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_dispatch on main shares its concurrency group with main push runs. A manual validation can cancel an active push before deploy, so that commit never reaches Pages. Add github.event_name to 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.json
  • npm run validate:sources
  • Parsed 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.js
  • node --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.js
  • node --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.js
  • Served the site locally and opened /, /?feed=dev, and /schema.html in 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/superpowers
  • git status --short
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

The later product decision removes all v1 compatibility. Keep the live feed as an empty valid v2 document and validate both public feeds.
@k2kirov k2kirov changed the title Feature/discover public page feat: launch DWithEase Discover Sep 1, 2026
@k2kirov
k2kirov merged commit f280bc4 into main Sep 1, 2026
2 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