feat(landing): N2 W&B-migration wedge — landing page + docs (GLA-156)#98
Merged
Conversation
3-card grid (Free / OSS · Self-host · Cloud beta) per UI-SPEC §1 PM/CEO sign-off. Hero locks the bait-and-switch qualifier verbatim; 12-row comparison vs ClearML / W&B Pro / Valohai with grouped footnotes to dated evidence-log rows; FAQ via collapsible admonitions; no "Contact sales" CTA at v1 per anti-confirmshame guardrails (§10). mkdocs adds attr_list/md_in_html (grid cards), footnotes, details, and emoji extensions plus extra_css; new docs/extra.css scopes the .pricing-compare wrapper. landing/pricing.html SEO stub redirects to docs.openrunner.io/pricing/. README adds a "Why OSS" anchor that links to the rendered pricing page. Spec: .planning/design/oss-pricing/UI-SPEC.md Parent: GLA-101 — milestone GLA-94 (CTO N3 scope: 0.05 eng-pm) Co-Authored-By: Paperclip <noreply@paperclip.ing>
- New `landing/migrate-from-wandb.html`: hero with Kano-locked sub-line ordering (activation+cost / durability / self-host), CSS-only Before/ After/Diff tabs, head-to-head 5-row compare grid (Billing row reads metered $/GB+$/MB vs free/OSS), reproducible benchmark snapshot, honesty table citing pillars 4 / 6 / 9 with evidence-log links, native details FAQ, three-step quickstart strip. No JS framework, no analytics. - New `docs/migrate-from-wandb.md`: source-of-truth code snippets quoted by the landing page (pip install, `import openrunner as wandb`, reproducible 60s 1k-writes/sec benchmark, what-stays-what-differs table, FAQ). - `landing/index.html`: hero CTA "Migrating from W&B? See benchmark →". - `landing/style.css`: new components `.compare-table`, `.tabs`, `.faq`, `.diff-line`, `.honesty-list`, `.quickstart-steps`, `.hero-wedge-cta`. All values map to existing :root tokens — no new hex. W&B word-mark stays text-only. No "free trial" / "limited time" / unqualified "free" copy. Spec source: `.planning/design/wandb-wedge/UI-SPEC.md`. Co-Authored-By: Paperclip <noreply@paperclip.ing>
QA flagged 3 W3C errors + aria-allowed-role on landing/migrate-from-wandb.html. UI-SPEC §A11y only mandates role="region" on container + native <details>; tab roles were non-spec. - drop role="tab" from 3 tab labels - drop orphan role="tablist"/role="tabpanel" to avoid aria-required-children - URL-encode favicon SVG data: URI on migrate-from-wandb.html and pre-existing index.html Co-Authored-By: Paperclip <noreply@paperclip.ing>
…pillar-6 evidence (GLA-156) Address CEO accuracy review (comment c976ecbe): MUST-fix: - Drop comparison-grid `Export` row. "paid tier" was unsupported by any evidence-log row covering W&B export gating; cleaner to remove than to misframe (option c). - Pillar-6 evidence: drop E10 cite (Valohai YAML pipelines, wrong category). Keep E4 (ClearML serving) which alone supports the managed-serving-runtime gap framing. SHOULD-fix: - Hosting cell: "SaaS" → "SaaS + paid self-host" (backed by EV-WNB-15 Personal $0 + Advanced Enterprise tiers). - License cell: "proprietary" → "proprietary platform" (W&B server proprietary; SDK MIT per E24). All four cells re-validated 2026-05-07 against `.planning/product/evidence-log.md`. File-edit only — no engineering wave per N2 scope.
… (GLA-156) Address CEO audit on `73ae62a` (comment 2ad548a7): 1. Section subtitle: "Five rows" → "Four rows" (table now has 4 body rows after Export removal). 2. FAQ "How is OpenRunner sustained?": drop unsubstantiated "thousands of weekly experiments" — picked option (a) per CEO marketing-copy gate (war-story numbers must be real). No backing evidence-log row exists. File-edit only — still no engineering wave.
- wrap content in <main> landmark (axe landmark-one-main) - underline links in .compare-footnote/.honesty-list/.benchmark-cta/.honesty-footer (axe link-in-text-block) Lighthouse desktop: perf 100, a11y 96, best-practices 100, SEO 100. W3C nu validator: 0 messages. errors-in-console: 0. Color-contrast (theme-token debt across all landing pages) tracked separately for UXDesigner.
…nesty list (GLA-156) CEO SHOULD-fix: - E13 link now points to docs.valohai.com/migration-strategy/migrate-pipeline-yaml (the actual proof-doc, not the marketing homepage). - Drop 'EV-VAL row' / 'EV-CML row' prefixes — evidence-log uses raw E* IDs for competitor-map rows; EV-* prefix is the separate review-row namespace. Symmetric fix on the parallel E4 row (line 301) — same namespace nit per CEO's stated principle. Comparison-table footnote EV-WNB-* / EV-OPR-* IDs intentionally retained: those are review-row IDs, not competitor-map IDs.
This was referenced May 8, 2026
jqueguiner
added a commit
that referenced
this pull request
May 9, 2026
Surviving additive bits from the original GLA-157 N3 pricing-page PR after main shipped equivalent pricing content via PR98 (#98), PR99 (#99), and PR104 (#104). Branch reset onto current main; only the mkdocs.yml deltas remain because everything else (docs/pricing.md, landing/pricing.html, docs/extra.css, comparison grid) is already on main. - repo_url + repo_name: openrunner/openrunner -> jqueguiner/openrunner. The placeholder org 404s; the real repo lives under the founder account. - validation: nav + links blocks downgrade --strict failures to info so future content gaps don't break docs CI while still surfacing them. `mkdocs build --strict` exits 0 locally. Closes pricing-rebase obligation from GLA-1110. Co-Authored-By: Paperclip <noreply@paperclip.ing>
jqueguiner
added a commit
that referenced
this pull request
May 11, 2026
Surviving additive bits from the original GLA-157 N3 pricing-page PR after main shipped equivalent pricing content via PR98 (#98), PR99 (#99), and PR104 (#104). Branch reset onto current main; only the mkdocs.yml deltas remain because everything else (docs/pricing.md, landing/pricing.html, docs/extra.css, comparison grid) is already on main. - repo_url + repo_name: openrunner/openrunner -> jqueguiner/openrunner. The placeholder org 404s; the real repo lives under the founder account. - validation: nav + links blocks downgrade --strict failures to info so future content gaps don't break docs CI while still surfacing them. `mkdocs build --strict` exits 0 locally. Closes pricing-rebase obligation from GLA-1110. Co-authored-by: Paperclip <noreply@paperclip.ing>
jqueguiner
added a commit
that referenced
this pull request
Jun 30, 2026
…#98) * feat(docs): N3 OSS-posture pricing page (GLA-157) 3-card grid (Free / OSS · Self-host · Cloud beta) per UI-SPEC §1 PM/CEO sign-off. Hero locks the bait-and-switch qualifier verbatim; 12-row comparison vs ClearML / W&B Pro / Valohai with grouped footnotes to dated evidence-log rows; FAQ via collapsible admonitions; no "Contact sales" CTA at v1 per anti-confirmshame guardrails (§10). mkdocs adds attr_list/md_in_html (grid cards), footnotes, details, and emoji extensions plus extra_css; new docs/extra.css scopes the .pricing-compare wrapper. landing/pricing.html SEO stub redirects to docs.openrunner.io/pricing/. README adds a "Why OSS" anchor that links to the rendered pricing page. Spec: .planning/design/oss-pricing/UI-SPEC.md Parent: GLA-101 — milestone GLA-94 (CTO N3 scope: 0.05 eng-pm) Co-Authored-By: Paperclip <noreply@paperclip.ing> * feat(landing): N2 W&B-migration wedge — landing page + docs (GLA-156) - New `landing/migrate-from-wandb.html`: hero with Kano-locked sub-line ordering (activation+cost / durability / self-host), CSS-only Before/ After/Diff tabs, head-to-head 5-row compare grid (Billing row reads metered $/GB+$/MB vs free/OSS), reproducible benchmark snapshot, honesty table citing pillars 4 / 6 / 9 with evidence-log links, native details FAQ, three-step quickstart strip. No JS framework, no analytics. - New `docs/migrate-from-wandb.md`: source-of-truth code snippets quoted by the landing page (pip install, `import openrunner as wandb`, reproducible 60s 1k-writes/sec benchmark, what-stays-what-differs table, FAQ). - `landing/index.html`: hero CTA "Migrating from W&B? See benchmark →". - `landing/style.css`: new components `.compare-table`, `.tabs`, `.faq`, `.diff-line`, `.honesty-list`, `.quickstart-steps`, `.hero-wedge-cta`. All values map to existing :root tokens — no new hex. W&B word-mark stays text-only. No "free trial" / "limited time" / unqualified "free" copy. Spec source: `.planning/design/wandb-wedge/UI-SPEC.md`. Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix(landing): W3C-clean migrate-from-wandb (GLA-156) QA flagged 3 W3C errors + aria-allowed-role on landing/migrate-from-wandb.html. UI-SPEC §A11y only mandates role="region" on container + native <details>; tab roles were non-spec. - drop role="tab" from 3 tab labels - drop orphan role="tablist"/role="tabpanel" to avoid aria-required-children - URL-encode favicon SVG data: URI on migrate-from-wandb.html and pre-existing index.html Co-Authored-By: Paperclip <noreply@paperclip.ing> * fix(landing): CEO accuracy kickback — drop unsupported export-cell + pillar-6 evidence (GLA-156) Address CEO accuracy review (comment c976ecbe): MUST-fix: - Drop comparison-grid `Export` row. "paid tier" was unsupported by any evidence-log row covering W&B export gating; cleaner to remove than to misframe (option c). - Pillar-6 evidence: drop E10 cite (Valohai YAML pipelines, wrong category). Keep E4 (ClearML serving) which alone supports the managed-serving-runtime gap framing. SHOULD-fix: - Hosting cell: "SaaS" → "SaaS + paid self-host" (backed by EV-WNB-15 Personal $0 + Advanced Enterprise tiers). - License cell: "proprietary" → "proprietary platform" (W&B server proprietary; SDK MIT per E24). All four cells re-validated 2026-05-07 against `.planning/product/evidence-log.md`. File-edit only — no engineering wave per N2 scope. * fix(landing): CEO sign-off SHOULD-fixes — row count + war-story scrub (GLA-156) Address CEO audit on `73ae62a` (comment 2ad548a7): 1. Section subtitle: "Five rows" → "Four rows" (table now has 4 body rows after Export removal). 2. FAQ "How is OpenRunner sustained?": drop unsubstantiated "thousands of weekly experiments" — picked option (a) per CEO marketing-copy gate (war-story numbers must be real). No backing evidence-log row exists. File-edit only — still no engineering wave. * fix(landing): a11y bumps for migrate-from-wandb (GLA-156) - wrap content in <main> landmark (axe landmark-one-main) - underline links in .compare-footnote/.honesty-list/.benchmark-cta/.honesty-footer (axe link-in-text-block) Lighthouse desktop: perf 100, a11y 96, best-practices 100, SEO 100. W3C nu validator: 0 messages. errors-in-console: 0. Color-contrast (theme-token debt across all landing pages) tracked separately for UXDesigner. * fix(landing): E13 URL → docs.valohai.com + drop EV-* row prefix on honesty list (GLA-156) CEO SHOULD-fix: - E13 link now points to docs.valohai.com/migration-strategy/migrate-pipeline-yaml (the actual proof-doc, not the marketing homepage). - Drop 'EV-VAL row' / 'EV-CML row' prefixes — evidence-log uses raw E* IDs for competitor-map rows; EV-* prefix is the separate review-row namespace. Symmetric fix on the parallel E4 row (line 301) — same namespace nit per CEO's stated principle. Comparison-table footnote EV-WNB-* / EV-OPR-* IDs intentionally retained: those are review-row IDs, not competitor-map IDs. --------- Co-authored-by: Paperclip <noreply@paperclip.ing>
jqueguiner
added a commit
that referenced
this pull request
Jun 30, 2026
Surviving additive bits from the original GLA-157 N3 pricing-page PR after main shipped equivalent pricing content via PR98 (#98), PR99 (#99), and PR104 (#104). Branch reset onto current main; only the mkdocs.yml deltas remain because everything else (docs/pricing.md, landing/pricing.html, docs/extra.css, comparison grid) is already on main. - repo_url + repo_name: openrunner/openrunner -> jqueguiner/openrunner. The placeholder org 404s; the real repo lives under the founder account. - validation: nav + links blocks downgrade --strict failures to info so future content gaps don't break docs CI while still surfacing them. `mkdocs build --strict` exits 0 locally. Closes pricing-rebase obligation from GLA-1110. Co-authored-by: Paperclip <noreply@paperclip.ing>
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.
Summary
Ship N2 W&B-migration wedge (parent: GLA-101). File-edit only — no engineering wave.
landing/migrate-from-wandb.html: hero (Kano-locked H1 + 3 sub-taglines), CSS-only tab diff, 4-row comparison table (SDK / Hosting / License / Billing), benchmark CTA, honesty table (pillars 4 / 6 / 9 with evidence-log links), CSS-only<details>FAQ, footer.docs/migrate-from-wandb.md(source of truth for code snippets).landing/index.html.landing/style.css(no new hex). New CSS classes:.compare-table,.tabs,.faq,.diff-line.Acceptance gate evidence
https://validator.w3.org/nu/?out=jsonreturns{"messages":[]}against the served file.errors-in-consoleaudit: 0 items.Free, MIT-licensedandfree / OSS(license-qualified).eb77225against.planning/product/evidence-log.md(3 marketing-copy gates: row count, war-story scrub, license-correctness).Test plan
landing/migrate-from-wandb.htmlin browser — hero, tabs, comparison table, FAQ all render with JS off.<details>work without JS.Follow-up (not blocking this PR)
--text-tertiary #5c6478and.col-openrunneraccent cells trip axecolor-contraston every landing page.🤖 Generated with Claude Code