Skip to content

feat(website): add /enterprise-msa page for the Enterprise Customer Agreement#13483

Merged
imick-io merged 3 commits into
mainfrom
glary/enterprise-msa-page
Jul 8, 2026
Merged

feat(website): add /enterprise-msa page for the Enterprise Customer Agreement#13483
imick-io merged 3 commits into
mainfrom
glary/enterprise-msa-page

Conversation

@nav-tej

@nav-tej nav-tej commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

PR Created by the Glary-Bot Agent


Publishes the Comfy Enterprise Customer Agreement (MSA) as a browsable web page at /enterprise-msa so prospects can review the template before signing an Order Form. Requested in the #website-and-docs thread to make it easier for companies to view ahead of time and easier to share.

Uses the same LegalContentSection template that already serves /affiliates/terms, so the visual language matches the existing legal pages and layout choices (sticky TOC, active-section tracking, mobile collapsible TOC) are picked up for free.

Changes

  • New page apps/website/src/pages/enterprise-msa.astro — mirrors the /affiliates/terms pattern, English-only, with a preamble paragraph identifying the parties above the TOC.
  • enterprise-msa i18n block in translations.ts — drives 12 numbered sections (Definitions → Miscellaneous) plus Exhibit A. Order Form, verbatim from the executed template dated May 22, 2026.
  • Route + locale invarianceenterpriseMsa: '/enterprise-msa' added to baseRoutes and to LOCALE_INVARIANT_ROUTE_KEYS, so localized variants are not served without a legal review of the translation. Consistent with the existing termsOfService / affiliateTerms convention documented in config/routes.ts.
  • Footer discoveryEnterprise MSA link added to the Company column of SiteFooter.vue, between Terms of Service and Privacy Policy. This makes the MSA reachable from the /cloud/enterprise page (and site-wide) with no changes to the enterprise page itself.
  • Test coverage — new enterpriseMsaSections.test.ts guards section IDs, numeric title pattern, page-chrome keys, and the locale-invariant route so a future refactor of LOCALE_INVARIANT_ROUTE_KEYS cannot silently start serving an unreviewed translation.

Verification

  • pnpm test:unit — 162/162 pass (17 files, 7 new tests)
  • pnpm typecheck — 0 errors, 0 warnings on changed files (pre-existing hints untouched)
  • pnpm build — 498 pages built, /enterprise-msa/index.html (80 KB) contains all 12 sections + Exhibit A
  • oxlint + oxfmt clean on all changed files
  • Manual QA via pnpm preview at 1440×900 desktop and 390×844 mobile (responsive layout inherits from LegalContentSection, verified visually) — desktop screenshots attached

Notes for review

  • The MSA copy is a verbatim reproduction of the executed .docx template shared in Slack. If Legal wants edits, they can happen inline in the enterprise-msa.* i18n block — no template restructuring needed.
  • The effective date is hard-coded to May 22, 2026 (matches the template file name GP 5.22.26); update enterprise-msa.effective-date when Legal ships a new template.
  • The page intentionally does NOT set noindex — the MSA is a customer-facing document that should be discoverable via search, matching the user's stated goal of "easier for companies to view ahead of time."

cc @michael-poganski — requested by James in the Slack thread for approval to ship.

Screenshots

Enterprise MSA page hero at 1440x900: heading, effective date, parties paragraph

Enterprise MSA sticky TOC with Definitions section active, showing bolded defined terms

Site footer showing the new Enterprise MSA link between Terms of Service and Privacy Policy

/cloud/enterprise page footer confirming the Enterprise MSA link is visible from the enterprise page

…greement

Publishes the Comfy Enterprise Customer Agreement (MSA) as a browsable
web page at /enterprise-msa so prospects can review the template before
signing an Order Form. Uses the same LegalContentSection template that
serves /affiliates/terms.

- New enterprise-msa page (English only, mirrors the /affiliates/terms
  pattern) with 12 numbered sections + Exhibit A / Order Form.
- enterprise-msa i18n block driving section IDs, titles, and content.
- Route registered as locale-invariant so localized variants are not
  served without legal review of the translation, consistent with the
  existing termsOfService / affiliateTerms convention.
- Footer 'Enterprise MSA' link in the Company column next to Terms of
  Service and Privacy Policy — discoverable from the /cloud/enterprise
  page and site-wide.
- Tests guard section IDs, page-chrome keys, and the locale-invariant
  route.
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

🌐 Website E2E

Tip

All tests passed.

Status ✅ Passed
Report View Report

🔗 Website Preview

Website Preview: https://comfy-website-preview-pr-13483.vercel.app

This commit: https://website-frontend-d228eos6i-comfyui.vercel.app

Last updated: 2026-07-08T17:03:38Z for 86476cd

📸 Screenshot Update

Tip

All screenshots are already up to date.

@glary-bot

glary-bot Bot commented Jul 7, 2026

Copy link
Copy Markdown

Note on the "cc @michael-poganski" line in the PR body — that handle is a placeholder I could not resolve from the sandbox (I do not have a mapping from Slack ID U0B4XP7T8RH to a GitHub handle). The actual reviewer requested by James in the Slack thread is Michael on the team; please add him as an official reviewer through the GitHub UI when triaging this PR. Apologies for the noisy placeholder ping.

@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 45944deb-b0b5-4c64-8c96-27e81dc17992

📥 Commits

Reviewing files that changed from the base of the PR and between 1666dfb and 86476cd.

📒 Files selected for processing (1)
  • apps/website/src/components/legal/enterpriseMsaSections.test.ts

📝 Walkthrough

Walkthrough

Adds an Enterprise MSA legal page with an English-only route and page, footer navigation, translation content, and tests that verify the route and required translation keys.

Changes

Enterprise MSA page

Layer / File(s) Summary
Route registration and translations
apps/website/src/config/routes.ts, apps/website/src/i18n/translations.ts
Adds enterpriseMsa at /enterprise-msa, keeps it locale-invariant, and adds the Enterprise MSA page text plus footer.enterpriseMsa.
Page rendering and footer link
apps/website/src/pages/enterprise-msa.astro, apps/website/src/components/common/SiteFooter.vue
Adds the Astro legal page using BaseLayout, HeroSection, and LegalContentSection, and adds the footer Company link to the new route.
Validation test suite
apps/website/src/components/legal/enterpriseMsaSections.test.ts
Adds Vitest checks for section IDs, required fields, page-level keys, and locale-invariant routing.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested labels: size:XL

Suggested reviewers: AustinMroz


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
End-To-End Regression Coverage For Fixes ❓ Inconclusive Inconclusive: the review context lacks the PR title and commit subjects, so I can't verify the bug-fix-language condition. Please provide the PR title and commit subjects (or rerun with full metadata) so I can determine whether browser_tests coverage was required.
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: adding the /enterprise-msa page for the Enterprise Customer Agreement.
Description check ✅ Passed The description covers the summary, changes, review notes, verification, and screenshots, with only minor template-heading differences.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Adr Compliance For Entity/Litegraph Changes ✅ Passed No changed files touch litegraph/ecs/graph-entity paths, so ADR 0003/0008 checks are not applicable.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch glary/enterprise-msa-page

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@glary-bot

glary-bot Bot commented Jul 7, 2026

Copy link
Copy Markdown

Thanks — noting this is the CodeRabbit "review in progress" placeholder (Run ID 2eb9d3bf-4bac-4705-83df-e75726814127), so there is no code feedback to address in this pass. Standing by for the actual review.

Not opting into the Finishing Touches offers:

  • Auto-generated docstrings — this PR is legal copy, config wiring, and a small test file; the code already reads plainly and docstrings would just paraphrase it.
  • Auto-generated unit testsenterpriseMsaSections.test.ts already guards the invariants that matter here (canonical section IDs in numeric order, title pattern, page-chrome key existence, locale-invariant route), and there is no logic to exercise beyond that.
  • Stacked PR / commit on branch — no code changes needed from this placeholder.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 7, 2026
@glary-bot

glary-bot Bot commented Jul 7, 2026

Copy link
Copy Markdown

Thanks for the approval — noting CodeRabbit found no actionable comments in this pass, so no code changes.

Also verified the Vercel preview at https://comfy-website-preview-pr-13483.vercel.app/enterprise-msa serves an identical build to the one I ran locally: title Enterprise MSA — Comfy, one <h1>, twelve <h2> (one per numbered section + Exhibit A), and the sales@comfy.org / legal@comfy.org / docs.comfy.org/support/data-retention links resolve. Ready for Michael's approval to un-draft and ship.

@imick-io imick-io self-requested a review July 7, 2026 19:40
imick-io
imick-io previously approved these changes Jul 8, 2026
@glary-bot

glary-bot Bot commented Jul 8, 2026

Copy link
Copy Markdown

Thanks @imick-io for the approval. Both reviews on this PR (this one and CodeRabbit's second pass on da7f12e0) had no actionable comments, so no code changes.

For the record, the branch was fast-forwarded to include the main merge (da7f12e0) that came in between reviews — my enterprise-msa.* i18n block (88 keys) and the other four touched files are byte-identical to what @imick-io approved; the diff-widening is entirely upstream translations landing on main. Ready for Michael to un-draft and ship when he's happy.

@imick-io imick-io marked this pull request as ready for review July 8, 2026 02:23
@imick-io imick-io requested a review from a team July 8, 2026 02:23
@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Jul 8, 2026
huang47
huang47 previously approved these changes Jul 8, 2026
Comment on lines +67 to +79

it('exposes the enterprise MSA at the canonical /enterprise-msa path regardless of locale', () => {
// Legal-reviewed English-only document; localized routes would serve an
// unreviewed translation. See LOCALE_INVARIANT_ROUTE_KEYS in
// src/config/routes.ts.
expect(getRoutes('en').enterpriseMsa).toBe('/enterprise-msa')
expect(getRoutes('zh-CN').enterpriseMsa).toBe('/enterprise-msa')
})

it('exposes the footer link so the MSA is discoverable site-wide', () => {
expect(hasKey('footer.enterpriseMsa')).toBe(true)
})
})

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tests doesn't seem necessary imo but I am ok to keep them if we really wanna protect against these changes

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair, thanks for the honesty. Trimmed the suite in 86476cd from 6 tests to 3, dropping the noise and keeping only the ones that guard real invariants.

Dropped:

  • exposes the twelve canonical sections in numeric order — hardcoded the section list, so adding/renumbering a section would fail the test purely to signal intent. That's a change-detector, and apps/website AGENTS.md explicitly says not to write those.
  • numbered section titles follow the "N. Section Name" pattern — same category, plus it needed a 12-exhibit-a special case, which was code smell.
  • exposes the footer link so the MSA is discoverable site-wide — a missing key throws at Astro build time (unlike t(), which returns the raw key), so the assertion added no coverage beyond what CI already gives us.

Kept (each catches a silent runtime bug that nothing else does):

  • Every derived section has a title and block.0 — if a maintainer edits translations.ts and drops enterprise-msa.5-term-termination.title, the TOC renders the raw key string ("enterprise-msa.5-term-termination.title") as body text. t() returns the key when it's missing.
  • Page-chrome keys the .astro file references — same failure mode; enterprise-msa.page.parties is referenced by enterprise-msa.astro, and removing it puts literal enterprise-msa.page.parties into the hero. No build-time or lint check catches this.
  • Canonical /enterprise-msa path regardless of locale — this is the liability guardrail. Removing enterpriseMsa from LOCALE_INVARIANT_ROUTE_KEYS would start serving /zh-CN/enterprise-msa with an unreviewed translation of legal-reviewed copy. Same test that exists for affiliateTerms and termsOfService.

Net diff: +17 −50, 3 tests passing, still consistent with the sibling legalSections.test.ts pattern.

Address review feedback from @huang47 that the MSA i18n test suite felt
too noisy. Drops three tests that were either change-detectors or
duplicates of build-time / runtime failure modes:

- Removed 'exposes the twelve canonical sections in numeric order':
  hardcoded the section list; adding or renumbering a section would fail
  the test only to signal intent, matching the 'do not write change
  detector tests' rule in apps/website AGENTS.md.
- Removed 'numbered section titles follow the N. Section Name pattern':
  same category, plus needed a special case for Exhibit A.
- Removed 'exposes the footer link so the MSA is discoverable site-wide':
  a missing key throws at Astro build time, so the assertion adds no
  coverage beyond what CI already gives us.

Kept the three tests that guard real invariants:

- Every derived section has a title and at least one block (missing
  title/block renders the raw key on the page).
- Page-chrome keys the .astro file references exist (missing
  page.parties renders 'enterprise-msa.page.parties' as body text).
- Canonical /enterprise-msa path regardless of locale (removing the
  entry from LOCALE_INVARIANT_ROUTE_KEYS would silently start serving
  /zh-CN/enterprise-msa with an unreviewed translation of legal text).
@glary-bot glary-bot Bot dismissed stale reviews from huang47, coderabbitai[bot], and imick-io via 86476cd July 8, 2026 17:01
@glary-bot glary-bot Bot force-pushed the glary/enterprise-msa-page branch from 1666dfb to 86476cd Compare July 8, 2026 17:01
@glary-bot

glary-bot Bot commented Jul 8, 2026

Copy link
Copy Markdown

Note for @huang47 — my review-hook fired again on your original inline comment (3545833640), but the trim is already in and pushed as 86476cd and my reply is threaded above. Nothing to re-address; the file on the branch is the 3-test version, not the 6-test version shown in the re-triggered diff. Sorry for the extra ping.

@imick-io imick-io self-requested a review July 8, 2026 17:36
@imick-io imick-io requested a review from huang47 July 8, 2026 17:38

@huang47 huang47 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@imick-io imick-io added this pull request to the merge queue Jul 8, 2026
Merged via the queue into main with commit 7b1cc34 Jul 8, 2026
45 checks passed
@imick-io imick-io deleted the glary/enterprise-msa-page branch July 8, 2026 18:10
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 8, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants