Skip to content

pm(scripts): retired lane aliases — mark domain:rest retired in ensure-pm-labels.sh, and have the relay rewrite domain:engine / services / cli / rest to domain:server at write time #30827

Closed

Description

@objectstack-fleet

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Filing gate: carrying a maintainer ruling into tooling. The maintainer answered 「车道的问题同意」 in the triage session on 2026-11-06, to triage's two proposals below. ⛔ Not a claim.

Why

Wanted

  1. scripts/pm/ensure-pm-labels.sh: add domain:rest to the retired block beside L539–541, with the same description shape: "Retired …, alias of domain:server (rest surface); …".
  2. The write relay (scripts/pm/issue-create.mjs and fleet-write labels_add): when a label in the request is a retired lane alias (domain:engine, domain:services, domain:cli, domain:rest), write domain:server in its place and say so on the read-back line, for example label domain:engine → domain:server (retired alias).
    • ⛔ It rewrites and never refuses: under the standing rule 「新增门禁默认否」 this is not a new gate, and a write is never blocked on it.
    • One alias table, read by both doors, from the place the skill already names the aliases.
  3. A self-test pins both: the rewrite, and that a live domain:* label passes untouched.

Reader: domain:skills (non-gate scripts/pm/**). The rewrite touches no merge gate.

Refs: #6015


Generated by Claude Code

Activity

  1. added
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    pm:queueReady for the PM dispatch loop
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-tesla · session_01L9qibz5RLVEYDFco93jZ7u

    Claim: PM loop round 1 · 2026-11-06T05:37Z
    Session: session_01L9qibz5RLVEYDFco93jZ7u
    Account: os-tesla (the card's assignee)
    Branch: claude/project-thread-kupfnh (the card thread's designated branch; dev session session_01L9qibvJcUgxPPZNDodAhy1)
    Worktree: objectstack-issue-30827
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: scripts/pm/ensure-pm-labels.sh (retired block), scripts/pm/issue-create.mjs, scripts/pm/fleet-write/{ops,validate,execute}.mjs as needed with their self-tests, at most one shared alias module under scripts/pm/. ⛔ .claude/skills/** text, ⛔ any new gate or workflow (stop on breach)
    Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: high (p2)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (a maintainer ruling carried into tooling: 「车道的问题同意」, 2026-11-06, filed by triage#1)
    Thread-read: none
    Premise: holds: domain:rest is absent from the retired block of ensure-pm-labels.sh on origin/main c17719dd; dev re-reads both write doors before editing
    Serial constraints: seat 1 #30114 adds scripts/pm/fleet-write/** test rows; keep test edits additive, the later lander merges origin/main.

    Not governed (check-governed-merges --test: 0 of the planned paths hit the register): ordinary queue landing after the seat's review.

    Order: /mnt/project-files/skills-seat-2/r2026-11-06/dispatch-30827.md (frame FRAME.md beside it).

  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-tesla · session_01L9qibz5RLVEYDFco93jZ7u

    Claim amendment · 2026-11-06T05:42Z · amends claim 6677853958 (same seat, same branch claude/project-thread-kupfnh)

    File surface, as the dev measured it on origin/main before editing: scripts/pm/ensure-pm-labels.sh (the domain:rest retired row), scripts/pm/check-half-states.mjs (one LANE_LABEL_ALIASES row and its pin; that table already exists and both write doors import it, so no new module), scripts/pm/fleet-write/dispatch.mjs (rewrite for labels_add / issue_create / pr_create labels; labels_remove stays literal), scripts/pm/issue-create.mjs (rewrite in its plan step), scripts/pm/label-write.mjs (--add rewritten at parse, so its read-back still matches its target), each with its self-test cases. ⛔ fleet-write/{ops,validate,execute}.mjs, ⛔ .claude/skills/** text (stop on breach).
    Governed: no (check-governed-merges --test on these five paths: 0 hit the register).
    Residue, not in this card: .claude/skills/pm-dispatch/SKILL.md names three retired aliases, not four; the seat routes it.

  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-tesla · session_01L9qibvJcUgxPPZNDodAhy1

    os-dev-report

    {
      "issue": 30827,
      "status": "done",
      "branch": "claude/project-thread-kupfnh",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30841",
      "session": "session_01L9qibvJcUgxPPZNDodAhy1",
      "premise_still_valid": true,
      "summary": "A retired lane alias (domain:engine / services / cli / rest) is written as domain:server at the three label doors: the fleet-write/dispatch.mjs CLI (labels_add, issue_create, pr_create; labels_remove left literal), issue-create.mjs planFrom (both transports), and label-write.mjs parseOptions (before step 2's target, so step 4's read-back stays clean). Each door prints `label domain:engine → domain:server (retired alias)`. It rewrites and never refuses. The one alias table is the existing LANE_LABEL_ALIASES in check-half-states.mjs, which gains a domain:rest row; ensure-pm-labels.sh gains the domain:rest retired row. The rewrite deliberately sits at the doors, not in packRequest, because label-write's read-back diffs against its own target. Card assignee and PR assignee/reviewer were not written (the frame forbids it; the harness's assignee/reviewer step was skipped).",
      "tests": "Self-tests on head 95a02ba0, each exit 0: fleet-write/dispatch 331 cases / 28 batteries (new battery 13 cases, including a CLI dry run whose payload carries domain:server plus the stderr line); issue-create 64 / 9 (new battery 8, direct + relay); label-write 144 / 12 (new battery 8, direct + relay + triage relabel control); check-half-states 5253 (domain:server lane aliases 26/22, domain:rest case added); fleet-write/validate 337 / 17 and execute 276 / 23 re-run after merging origin/main. No ablation: script and tooling changes only (os-dev rule).",
      "gates": "dispatch-gates --commands derived 57 commands; all 57 exit 0 on 95a02ba0 and earlier on e38a555d, with an identical derivation; --ran reconciliation: 57 run, 0 NOT-MEASURED. List: /mnt/project-files/skills-seat-2/r2026-11-06/out/30827-gates-ran-95a02ba0.list. Also check-label-desc-cap exit 0, bash -n exit 0, eslint on the four .mjs exit 0, check-governed-merges --test: 0 of 5 governed, size 222. PR CI check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "4 — GitHub MCP reads only: issue_read x3 (30827 get, get_comments x2), pull_request_read get x1 (30841); plus subscribe_pr_activity on #30841 (harness, not a GitHub write). 0 GitHub write tools.",
      "api_writes": "2 relay writes — fleet-write pr_create (run 42173483007, PR #30841, body read back identical 10805 bytes, label skip-changeset); this os-dev-report comment via post-stamped.mjs. Plus git push to the thread branch (not REST).",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: domain:skills#2 seat · the pm-dispatch SKILL.md retired-lane line (「…`domain:engine`/`domain:services`/`domain:cli` 读作 `domain:server`」) names three aliases while LANE_LABEL_ALIASES now holds four; .claude/skills text, left untouched per the order · noted, not filed",
        "carrier: none · the rewrite is sender-side: a stale checkout or a raw repository_dispatch still writes the literal alias; execute.mjs is unchanged by design (no gate) · noted in Acceptance notes, not filed"
      ]
    }
  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-tesla · session_01L9qibz5RLVEYDFco93jZ7u

    Landed · 2026-11-06T14:37Z · PR #30841 merged as 9e7fbd38 through the merge queue (ACCEPT 6678810629; not governed). Claim 6677853958 is discharged; pm:dispatched removed. Branch claude/project-thread-kupfnh is retired.
    Residue routed by the seat, not this card: .claude/skills/pm-dispatch/SKILL.md names three retired aliases, not four.

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

Metadata

Metadata

Assignees

Labels

domain:skillsDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions