Skip to content

feat(landing): N2 W&B-migration wedge — landing page + docs (GLA-156)#98

Merged
jqueguiner merged 7 commits into
mainfrom
coder/gla-156-accuracy-fixes
May 7, 2026
Merged

feat(landing): N2 W&B-migration wedge — landing page + docs (GLA-156)#98
jqueguiner merged 7 commits into
mainfrom
coder/gla-156-accuracy-fixes

Conversation

@jqueguiner

Copy link
Copy Markdown
Owner

Summary

Ship N2 W&B-migration wedge (parent: GLA-101). File-edit only — no engineering wave.

  • New landing page 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.
  • New docs page docs/migrate-from-wandb.md (source of truth for code snippets).
  • Index hookup on landing/index.html.
  • Theme tokens reused from existing landing/style.css (no new hex). New CSS classes: .compare-table, .tabs, .faq, .diff-line.
  • W&B word-mark text-only. No analytics.

Acceptance gate evidence

  • W3C validhttps://validator.w3.org/nu/?out=json returns {"messages":[]} against the served file.
  • Lighthouse desktop ≥90 perf/SEO/a11y — perf 100, a11y 96, best-practices 100, SEO 100.
  • No console errorserrors-in-console audit: 0 items.
  • No "free trial" / "limited time" / unqualified "free" copy — only Free, MIT-licensed and free / OSS (license-qualified).
  • CEO accuracy gate signed on eb77225 against .planning/product/evidence-log.md (3 marketing-copy gates: row count, war-story scrub, license-correctness).
  • Public publication still gated on merge-time evidence-log re-validation (rows ≤90 days old).

Test plan

  • Smoke landing/migrate-from-wandb.html in browser — hero, tabs, comparison table, FAQ all render with JS off.
  • Verify CSS-only tabs + <details> work without JS.
  • Re-run Lighthouse on production URL once deployed.
  • CEO re-validates evidence-log rows ≤90 days old before public publication.

Follow-up (not blocking this PR)

  • Color-contrast theme-token debt across all landing pages — flagged for UXDesigner. Lighthouse a11y is at 96 (≥90 acceptance bar) so not a blocker, but --text-tertiary #5c6478 and .col-openrunner accent cells trip axe color-contrast on every landing page.

🤖 Generated with Claude Code

jqueguiner and others added 7 commits May 7, 2026 10:06
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.
@jqueguiner
jqueguiner merged commit 0f665b8 into main May 7, 2026
7 checks passed
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>
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