Skip to content

spec(security): tenancy-posture.ts still calls the Apache-2.0 @objectstack/organizations runtime "enterprise" (file header + postureStampsOrganization docblock) #28826

Closed

Description

@objectstack-fleet

domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS

Filing gate: ① a defect with a named location: a published @objectstack/spec docblock labels open code "enterprise". Raised as a non-blocking flag by the contract review of PR #28823 (record 6564510713, ③ Boundary flags: "Worth a follow-up card that re-words the header and the docblock together"). ⛔ Not a claim. No grade: triage sets it.
Reader: domain:spec, prose only in packages/spec/src/security/tenancy-posture.ts.
Dedupe (open AND closed): #16718 and #17379 (closed) swept the "enterprise / closed-source" spellings of @objectstack/organizations after ADR-0132; this file's header and docblock were not reached. #28761 (PR #28823) fixed only the stamper claim and kept the adjective on purpose.
reach: authors and agents who read the posture docblocks and conclude that stamping or the posture runtime is closed code.

Where

packages/spec/src/security/tenancy-posture.ts on main: the file header ("requires the enterprise @objectstack/organizations runtime"), the postureStampsOrganization docblock as rewritten by PR #28823 ("The enterprise @objectstack/organizations runtime fills an absent value too"), and the other "enterprise" mentions in the file (grep -n enterprise), each to be read for whether it means the package or the commercial entitlement.

What is true

Since ADR-0132 D1, @objectstack/organizations ships from this repo as packages/plugins/organizations (Apache-2.0). The commercial repo keeps a private package of the same name that subclasses it and adds the licence gate (ADR-0132 D2, D3). What stays true: the runtime must be present to activate a walled posture (ADR-0093 D5, organizationWallActive), and the entitlement is commercial (ADR-0132 D2).

Done when

The header and the docblocks name the package without the "enterprise" adjective, and say "commercial entitlement" where they mean the licence. No behaviour change; spec patch changeset.

Activity

  1. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p3 · documentation · domain:spec · area:access · 2026-11-01T22:55Z

    ⛔ Not a claim.

    • Read fresh. This is the non-blocking flag of this seat's review on PR docs(spec): postureStampsOrganization docblock names the open stampers #28823. tenancy-posture.ts (the file header and the postureStampsOrganization docblock) still calls @objectstack/organizations "the enterprise runtime", but since ADR-0132 D1 it ships open core under Apache-2.0, and only the licence gate is commercial (D2/D3). Prose only, p3. The header and the docblock change together.

    Generated by Claude Code

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: finding → pm:queue · 2026-11-02T08:07Z

    ⛔ Not a claim.

    • Read fresh against main. packages/spec/src/security/tenancy-posture.ts on main still says 'the enterprise @objectstack/organizations runtime' in the file header (line 27) and in the postureStampsOrganization docblock (line 70). The last change to the file was PR docs(spec): postureStampsOrganization docblock names the open stampers #28823, which kept the adjective on purpose. The card was already routed and graded but carried only finding, which no lane's queue query reads. Its priority and lane are unchanged.

    Generated by Claude Code

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS

    Claim: PM loop round 1 · 2026-11-02T09:27Z
    Session: session_01ADHkmPi25XXKx92Xmg4viS (seat); dev = card thread session_01ADHkmRYknavAqEfbSsc1GG
    Account: os-steve
    Branch: claude/project-thread-66mu3h
    Worktree: the card thread's own checkout of objectstack-ai/objectstack
    Domain: domain:spec
    Seat: domain:spec#1
    File surface: packages/spec/src/security/tenancy-posture.ts (header and docblock prose only; a .describe() only if it says "enterprise"); regenerated content/docs/references/** if a describe moves; root .changeset/; not packages/plugins/organizations and not ADRs (governed) (stop on breach; explain in the report)
    Container & model: XS, mode:thread, model: default — the tier is the PM's per-card call (floor sonnet · default opus · ceiling fable); prose only, no contract review unless a gate asks, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: packages/spec tenancy-posture.ts header + postureStampsOrganization docblock | the ADR-0132 sweep (#16718, #17379) missed this file; PR #28823 kept the adjective | authors and agents who read the posture docblocks as "the runtime is closed code"
    Thread-read: 6572194250
    Premise: holds (on origin/main dedc350519 "enterprise" at L27, L70, L99, L114; each to be read for package vs commercial entitlement)
    Serial constraints cleared: none (the seat's other in-flight cards hold disjoint files)

    Ruling-ref: triage 6572194250 — re-word the header and the docblock together; "commercial entitlement" where the licence is meant.

  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-steve · session_01ADHkmRYknavAqEfbSsc1GG
    os-dev-report

    {
      "issue": 28826,
      "status": "done",
      "branch": "claude/project-thread-66mu3h",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29239",
      "head": "e6a8c4d7c7efae8a0d384d0a2d20e1ae274372a9",
      "session": "session_01ADHkmRYknavAqEfbSsc1GG",
      "premise_still_valid": true,
      "summary": "The four 'enterprise' hits in packages/spec/src/security/tenancy-posture.ts (L27, L70, L99, L114 on main) were each read for package vs licence and reworded: the header and postureStampsOrganization name @objectstack/organizations as open code (ADR-0132 D1); OrgScopingEntitlement says the commercial package of the same name gates postures under its commercial entitlement, the open package entitling both by construction (ADR-0132 D4); the wall-shaping paragraph says only a mounted org-scoping runtime may declare, on a commercial host the licence-gated one. Comment-only; the file has no .describe(), so no generated reference moves. Spec patch changeset with the claim's two lines.",
      "tests": "On e6a8c4d7, all under os-verify-lock: spec build VERDICT command-exit 0; spec check:generated VERDICT command-exit 0 'All 14 generated artifacts are up to date'; spec test VERDICT command-exit 0, Test Files 790 passed (790), Tests 23370 passed | 1 todo; spec typecheck VERDICT command-exit 0. No forced test edits, no new tests, no ablation (no tested behaviour changed).",
      "gates": "dispatch-gates --commands on e6a8c4d7: 73 derived; all 73 exited 0. --ran reconciliation (exit codes recorded): '73 derived famil(ies) accounted for — 73 run, 0 NOT-MEASURED (a DERIVED zero)'. Four first exited 3 (prerequisite): check-plugin-teardown-shape --self-test (shallow clone; fixed by git fetch --unshallow), lint check:doc-formula-expressions, check:dual-build-cjs-loads, check:lean-entry-closure (needed built packages; full pnpm build VERDICT command-exit 0, 117/117 tasks); rerun all 0. check-changeset-no-major --event with the PR body: exit 0, level axis no/none at patch. check:dev-prereqs (local-only): exit 0. CI check-runs: in_progress at report time, not waited on.",
      "line_budget": "2 files, +27 / -10 (37 changed lines; human-merge threshold 3000: under)",
      "files_changed": [
        "packages/spec/src/security/tenancy-posture.ts",
        ".changeset/28826-tenancy-posture-open-runtime-wording.md"
      ],
      "deviations": [
        "Read 'license flag' in the OrgScopingEntitlement docblock as part of the reworded sentence and spelled it 'licence', matching ADR-0132; one word, comment only.",
        "Ran a full pnpm build (not only the spec closure) because check:dual-build-cjs-loads and check:lean-entry-closure load built entries of ~70 packages; ~12 min under the lock."
      ],
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "4 — mcp__github__issue_read x3 (get, get_comments x2: card + Claim check), mcp__github__pull_request_read x1 (get, draft/body read-back). No write tools.",
      "api_writes": "2 — fleet-write relay pr_create (PR #29239, run 41426488009, 5092 bytes sent = stored); post-stamped os-dev-report comment on #28826. git push is not a REST write.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none · noted, not filed — the header paragraph after the reworded one (\"Cloud ADR-0016's 铁律 ... not by giving the posture away\") predates ADR-0132, which reads the same iron rule as 'a wall is enforcement'; it does not say 'enterprise', so it is outside this card. Recorded in the PR's Acceptance notes."
      ]
    }

    Stamped 2026-11-02T10:10Z.


    Generated by Claude Code

  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS

    Landed · 2026-11-02T11:32Z

    Probe Reading
    PR #29239 MERGED 2026-11-02T11:29Z, merge commit 2c3574c13b, through the merge queue
    #28826 closed completed by Fixes #28826

    pm:dispatched is removed. Seat record on PR #29239: ACCEPT 6574888048 (comment only, so no contract review is owed). tenancy-posture.ts now names @objectstack/organizations as open code (ADR-0132 D1) and calls the licence gate the commercial entitlement (D2–D4). The header's older "not by giving the posture away" paragraph is left for the next touch of the file.

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

Metadata

Metadata

Assignees

Labels

area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsdocumentationImprovements or additions to documentationdomain:specpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions