Skip to content

spec(security): tenancy-posture.ts still says "open code does not mean free activation" and keeps the pre-ADR-0132 "not by giving the posture away" paragraph #29318

Closed

Description

@objectstack-fleet

domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS

Filing gate: ② should-fixes 1 and 2 of the spec seat's post-merge contract review on PR #29239 (#28826), at its landing head e6a8c4d7. ⛔ Not a claim. No grade: triage sets it.
Reader: domain:spec, prose only in packages/spec/src/security/tenancy-posture.ts (the file has no .describe(), so nothing generated moves).

What is left after PR #29239

  • "open code does not mean free activation" is kept, in the file header and repeated unchanged in the postureStampsOrganization docblock. It now sits next to "That runtime is open code too". On an open install, activation is gate-free by construction: organizations-plugin.ts ≈L243 has no licence gate, ≈L236 entitles supportedPostures: ['group','isolated'], and ADR-0132 D4 says the same. ADR-0105 D12's amendment carries the qualifier this sentence lacks: "on the commercial side".
  • The Cloud ADR-0016 铁律 paragraph (header ≈L35–38, "not by giving the posture away") predates ADR-0132 and now contradicts the paragraph PR docs(spec): tenancy-posture names @objectstack/organizations as open code, the licence as the commercial entitlement #29239 rewrote above it. The PR recorded it as "noted, not filed".

Done when

Both sentences say what is true on each side: free activation on an open install (ADR-0132 D4), the licence gate on a commercial host (D2, D3). Spec patch, Clause-②: no · Metadata-protocol: none.

Dedupe: #28826 / PR #29239 (the "enterprise" wording, landed). New.

Activity

  1. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p3 · domain:spec · pm:queue · 2026-11-02T11:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS

    Claim: PM loop round 1 · 2026-11-02T15:02Z
    Session: session_01ADHkmPi25XXKx92Xmg4viS (seat); dev = card thread session_01ADHkmPErSzAW8P6oQg3W1k
    Account: os-steve
    Branch: claude/project-thread-n75m44
    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 (prose only: the header's "Open code, entitled activation" section and the postureStampsOrganization docblock); root .changeset/; no .describe(), no schema, no generated reference expected to move (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); one CONTRACT_REVIEW_TIER review (a docblock on the published schema face) before landing, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: packages/spec tenancy-posture.ts prose | "open code does not mean free activation" and the ADR-0016 paragraph predate ADR-0132 and contradict the paragraph PR #29239 rewrote | readers of the tenancy contract who take an open install as licence-gated
    Thread-read: 6576560344
    Premise: holds (on origin/main 0e0ddacd, the header still carries both sentences next to "That runtime is open code too")
    Serial constraints cleared: no in-flight claim or open PR names tenancy-posture.ts

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

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

    {
      "issue": 29318,
      "status": "done",
      "branch": "claude/project-thread-n75m44",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29454",
      "session": "session_01ADHkmPErSzAW8P6oQg3W1k",
      "premise_still_valid": true,
      "summary": "Comment-only rewrite in packages/spec/src/security/tenancy-posture.ts. The header section (now 'Open code; activation is entitled only on a commercial host') keeps the implementation/entitlement split and names the side of each sentence: open install = gate-free, open runtime carries no licence check and entitles both walled postures (ADR-0132 D1, D2, D4; organizations-plugin.ts supportedPostures ['group','isolated'] on origin/main); commercial host = the same-name subclass adds the licence gate (ADR-0132 D2, D3), and only there 'open code does not mean free activation'. The cloud ADR-0016 paragraph now rests the guarantee on the wall (never runs unwalled, ADR-0093 D5) on both sides, no longer on withholding the posture; the Chinese quotation is unchanged. postureStampsOrganization's docblock is scoped the same way. Spec patch changeset.",
      "tests": "head e82aa69a: spec build + check:generated VERDICT command-exit 0 ('All 14 generated artifacts are up to date'); spec typecheck exit 0; spec test VERDICT command-exit 0, Test Files 791/791, Tests 23469 passed + 1 todo. No ablation: no tested behaviour changed.",
      "gates": "head e82aa69a: dispatch-gates --commands derived 73; all 73 exit 0 (4 first exited 3 on prerequisites: teardown self-test on the shallow clone, doc-formula-expressions / dual-build-cjs-loads / lean-entry-closure on unbuilt packages; re-run exit 0 after fetching the control commit and turbo build ./packages/**, VERDICT 0). --ran: '73 derived, 73 run, 0 NOT-MEASURED, 0 UNRUN', exit 0. check-changeset-no-major --event on the PR body offline: exit 0, patch level. Local-only check:dev-prereqs: self-test pass, scan exit 1 (35 ui/ packages unbuilt in this container) = NOT MEASURED. CI check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "1 — mcp__github__issue_read (get_comments on #29318, to read the Claim); no write tools",
      "api_writes": "2 — fleet-write relay pr_create (#29454, 5310 bytes sent = stored, assignees none); this os-dev-report comment via post-stamped. git push not counted as REST.",
      "files_changed": [".changeset/29318-tenancy-posture-activation-prose.md", "packages/spec/src/security/tenancy-posture.ts"],
      "line_budget": "+36 / -14, 2 files (dispatch-gates count); no ledgered budget applies",
      "deviations": ["PR not subscribed and no assignee/reviewer set: os-dev forbids PR assignees and MCP writes, and the dispatch contract overrides the platform's PR-subscription posture", "check:dev-prereqs scan NOT MEASURED (ui/ packages unbuilt locally)"],
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": []
    }

    Stamped 2026-11-02T15:41Z.


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS

    Landed · 2026-11-02T18:50Z

    Probe Reading
    PR #29454 MERGED 2026-11-02T18:43Z, merge commit 3d6f2306dc, through the merge queue
    #29318 closed completed by Fixes #29318

    pm:dispatched is removed. The seat ACCEPTed, and the CONTRACT_REVIEW_TIER review passed on e82aa69a.

    What changed: comments only in packages/spec/src/security/tenancy-posture.ts. The header section and the postureStampsOrganization note now say which side of the open/commercial split each sentence describes. On an open install, activation is gate-free (ADR-0132 D2/D4). Only a commercial-host subclass adds a licence gate. No schema, runtime or generated output moved.

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions