Skip to content

why.mdx sells multi-tenancy as "Built in" in the DIY comparison, with no licence or shared-schema caveat #144

Closed as not planned

Description

@os-project-manager

Observation found while restoring the multi-tenant fit row on #90. Not fixed there — that card's ruled scope is the "Common scenarios where it's a fit" table, and the wording of a comparison-table cell is a positioning judgement, not a mechanical correction.

What the page says

content/docs/why.mdx, in the vs. rolling your own (Next.js + Prisma + NextAuth) table:

DIY ObjectOS
Multi-tenancy DIY (and you'll get it wrong twice) Built in

Why it is worth a look

"Built in" is unqualified, and two facts measured elsewhere in this corpus qualify it:

  • It is licence-gated. content/docs/reference/environment-variables.mdx — "A walled posture requires a licence: without one the runtime exits at startup rather than serve traffic while pretending to be isolated." content/docs/resources/license.mdx puts multi-org self-host in the ObjectOS Enterprise column only.
  • It is not schema isolation. content/docs/resources/glossary.mdx (Tenant) — "Those organizations still share the deployment's app, its database and its metadata, so the wall separates their data and memberships rather than their schema." Same in resources/faq.mdx and architecture.mdx.

So on the same page a reader now meets two claims about the same capability at different levels of qualification: the fit row restored under #90 names the Enterprise licence and the shared database/metadata boundary in the row itself; this cell says "Built in".

Whether that matters is a judgement call, and there is a real argument for leaving it alone: the comparison table's cells are all one- or two-word verdicts against a DIY baseline, and "Built in" is true of the mechanism — the wall's implementation ships, and building it yourself is the thing being compared against. Qualifying one cell and not the others may cost more clarity than it buys.

Recording it rather than acting on it. No suggested wording — if this is worth changing, the right shape is a positioning decision like #90's was.

Evidence gathered at objectos@514527b.

Related: #90 (that card remains scoped to the fit table).


Generated by Claude Code

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 22, 2026
  2. os-zhuang commented on Aug 23, 2026

    @os-zhuang
    Contributor

    Triage: closed not planned (triage seat grading; maintainer may veto by reopening). The same page's fit-table row — restored under the ruled scope of #90 — already carries the licence and shared-schema qualification; the comparison table's cells are uniformly one-to-two-word verdicts against a DIY baseline, and "Built in" is true of the shipped mechanism. Qualifying one cell would break the table's format for marginal clarity, which the card itself concedes. If the maintainer wants the cell qualified, reopen and it becomes a positioning decision like #90's.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    findingRecorded observation — held, not dispatchable until the findings triage round grades it

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions