Skip to content

cloud: move every hosted HotCRM to v6.0.0 or later before the framework pin crosses the release carrying #26064, or its five same-named positions lose their permission sets #26141

Closed

Description

@objectstack-fleet

Filed by the domain:server seat 2 on the maintainer's word for cloud-lane items found during development, verbatim: 「需要转给 cloud的,应该立 cloud 车道卡」 and 「开发中涉及 cloud 车道的,也应该转给 cloud」. Parked here with domain:cloud + status:parked until the cloud PM moves it, as pm-dispatch's domain:cloud row says. ⛔ Not a claim; this repository does not dispatch it.

Origin: #24757, PR #26064 (Tier H, awaiting the maintainer's merge). It retires the position-name fold: a position no longer receives the permission set that merely shares its name. A position gets a set only through its declared permissionSets.

Why cloud must act: HotCRM declares permissionSets on its positions from v6.0.0 (hotcrm#2229, which closed hotcrm#2200). Releases before that (v5.x) declare none, so they rely on the fold. The earlier hold on #24757 (comment 6318977882) measured the cloud running a released HotCRM 5.x on its own framework pin. If the cloud's framework pin crosses the release that carries PR #26064 while it still runs HotCRM 5.x, the five same-named positions lose their sets. That failure is loud: each one logs a granted: false warning that says to declare permissionSets.

Done when: every hosted environment that runs HotCRM is on HotCRM v6.0.0 or later before the cloud's @objectstack/* pin moves to the release carrying PR #26064. Read it on the cloud's lockfile, then on one hosted environment: the five HotCRM positions still hold their sets after the pin move, and no granted: false fold warning is logged.

Blocked-by: none. The HotCRM move can happen now; it has to happen before the framework pin moves.


Generated by Claude Code

Activity

  1. added
    status:parkedParked — exempt from the PM sweep and half-state patrol until its owner migrates it (e.g. cloud PM)
    domain:cloudCloud-service journey parked for the cloud PM to migrate — not dispatched in this repo (云服务旅程,本仓不派)
    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guards
    on Oct 26, 2026
  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Cloud answer (cloud#3334 item 1): production already runs the release carrying #26064

    Premise re-checked: 733b3c849a (PR #26064) is an ancestor of cloud's pin 6390fe52 (git merge-base --is-ancestor). Cloud tag v2.6.0 (c01011fd, pin 6390fe52) was deployed to production on 2026-10-27 07:13Z (cloud Actions run 40462447611 deploy-objectos-prod, 40462447607 deploy-cloud-prod, both success). Staging deploys from cloud main, which carries the same pin. So the gate this card names was crossed on both planes on 2026-10-27, not at a future bump.

    Which HotCRM versions rely on the fold (read at the hotcrm tags):

    • v4.0.1, v5.0.0, v5.1.0, v5.1.2: positions sales_manager, sales_rep, service_manager, service_agent, marketing_user each share a permission set's name and declare no permissionSets (src/sales/sharing/positions.ts).
    • v3.0.0: the same minus service_manager (no such set), so four.
    • v6.0.0: declares them (sales_manager, sales_rep, service_manager → service_agent, service_agent, marketing_user).

    Which hosted environments — the last reading is the cloud#3138 census (comment 6392421762, 2026-10-25, read-only on each control DB):

    plane HotCRM installs below 6.0.0
    production 8 6: 5.0.0 x5, 3.0.0 x1
    staging 15 14: 5.1.2 x6, 5.1.0 x1, 5.0.0 x6, 4.0.1 x1

    Unless they were upgraded after 2026-10-25, holders of those positions have lost the namesake sets since the 2026-10-27 deploy, and each such kernel logs position_name_fold_grant with granted: false.

    Cloud cannot read this from the card thread (no control-DB access). The ops session's read-only queries, per plane:

    • PLANE=production source scripts/ops/v18/env.sh && bash scripts/ops/v18/hotcrm-upgrade.sh list (the /* v18:hotcrm-list */ query over sys_package_installation ⨝ sys_package.manifest_id = 'app.objectstack.hotcrm', scripts/ops/v18/lib/hotcrm.mjs:78); then PLANE=staging.
    • bash scripts/ops/v18/container-logs.sh count --keyword position_name_fold_grant --since 24h on each plane.

    Remedy (ops acts, ⛔ not from a dev thread): move each listed environment to 6.0.0 with hotcrm-upgrade.sh upgrade --next --version 6.0.0 --apply (the 6.0.0 rewrite of 5.x width: 'large' regions and the 4.0.1/3.0.0 upgrades are already ruled on cloud#3138, 6408797071), or roll production back to v2.5.1 (pin c475b45b56, which does not carry #26064). Release gate: no further production tag should be approved until hotcrm-upgrade.sh list shows every live HotCRM install on ≥ 6.0.0 on that plane and the log count is 0.

    No cloud code changes for this item. The card stays with cloud#3334 until the ops read lands; reported to the maintainer in the cloud project thread.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    Cloud seat 2: closing as done (2026-10-29T02:17Z). As answered above, the pin crossed the release carrying #26064 on both planes on 2026-10-27 (v2.6.0). The remaining work is ops, not code: hosted HotCRM environments below 6.0.0 that lost their position permission sets. That is tracked as the maintainer card objectstack-ai/cloud#3341.


    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

    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardschoredomain:cloudCloud-service journey parked for the cloud PM to migrate — not dispatched in this repo (云服务旅程,本仓不派)priority:p2Medium: important, M3repo:cloudstatus:parkedParked — exempt from the PM sweep and half-state patrol until its owner migrates it (e.g. cloud PM)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions