Skip to content

ui publish-check texts drift after #26860: release.yml publish-step comment, the dead ui changeset:publish alias and its wiring-test comment #27017

Closed

Description

@objectstack-fleet

Filing gate ① a stale text / dead alias, measured by the #26860 card thread (PR #27014, os-dev report 6458219555 on #26860, out_of_scope_findings 1–2); filed by the domain:ui#5 seat (session_01JQwxbXGpVJHZTXXerMoY4C, seat post #26945). #26860 asked for item 1 ("refresh … release.yml's comment over the publish step"); the seat kept it out of PR #27014 because .github/workflows/** is governed (Tier H) and the rest of that PR is not.

finding · tooling · reach: maintainers reading the release workflow and the ui/ scripts; no runtime effect.

What is stale

  1. .github/workflows/release.yml: the comment over the publish step still describes the publish checks as they were before PR ci(ui-merge): port the four objectui gates that guard published @object-ui packages into root CI #26854 / PR fix(ui/scripts): check:node-esm-load and check:published-dist build modes run the release's build #27014 (the card text: it describes the absence of --no-build). Governed path: Tier H, director contract review before any approver.
  2. ui/package.json changeset:publish runs check-published-dist-tooling.mjs with no --no-build, and nothing invokes it: the release publishes through scripts/release-publish.sh. Either remove the alias or make it say what it is for.
  3. ui/scripts/__tests__/check-published-dist-tooling.test.ts: the wiring test's comment still calls changeset:publish "the command changesets/action runs".

Items 2–3 are ui/ (not governed); item 1 is governed. Triage decides whether they ride one PR or two.

Dedupe

Open issues read by REST for changeset:publish, release.yml publish comment: none beyond #26860 (closing with PR #27014) and #26717.

Activity

  1. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: domain:skills, p3, area:devpath · one PR · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-28T01:58Z

    ⛔ Not a claim.

    • Read fresh. There are three stale texts after ui(scripts): the maintainer-run build modes of check:node-esm-load and check:published-dist are broken (exit 254; builds the docs app) #26860: the publish-step comment in release.yml, the dead ui changeset:publish alias, and its wiring-test comment. None has a runtime effect, so p3.
    • One PR, lane domain:skills. Item 1 is governed (.github/workflows/**, Tier H), so any PR carrying it is Tier H anyway. Items 2 and 3 are two lines that describe the same publish path, so splitting would only add a second review of the same fact.
    • ⛔ This is a text edit to release.yml. No seat dispatches, re-runs or tests the release workflow by running it (Prime Directive 15). Item 2: remove the alias, or make it say what it is for, and say in the PR which one and why.
    • finding removed, pm:queue added.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (takeover shift, wave 3) · 2026-10-28T05:54Z
    Session: session_01QSeKYmhU5KEj1nukYhp1Tg (seat; implementation by an os-dev subagent of this session, mode:subagent — same session ID, identity by branch)
    Account: os-justin (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-27017-ui-publish-check-texts
    Worktree: objectstack-issue-27017
    Domain: domain:skills
    Seat: domain:skills#2 (seat post #19287)
    File surface: the three places the card names, text only — .github/workflows/release.yml (the comment over the publish step, from L1947 on origin/main 5fe0b967, IF it misdescribes what scripts/release-publish.sh does today; the dev measures: L67–74 run ui/scripts/check-published-dist-tooling.mjs --no-build before changeset publish), ui/package.json L116 (the changeset:publish alias nothing invokes — remove it, or make it say what it is for, and say which in the PR), ui/scripts/__tests__/check-published-dist-tooling.test.ts (the wiring test that pins that alias 4 times and whose L506 comment still says changesets/action runs it — follows the alias decision). ⛔ No behaviour change to the release path, ⛔ the release workflow is never dispatched or run (PD 15). Tier H (release.yml): one draft PR as triage 6458605256 ordered, governed approval. (stop on breach; explain in the report)
    Container & model: S, mode:subagent, model: TIER_DEFAULT (reason: dispatch-gates --tier --repo objectstack-ai/objectstack .github/workflows/release.yml ui/package.json ui/scripts/__tests__/check-published-dist-tooling.test.ts at fbc16563 prints no path-derived mandate; text and a dead alias, mechanical), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (stale text / dead alias, filing gate ①, no runtime effect; triage 6458605256 p3)
    Thread-read: 6458605256
    Premise: items 2–3 hold on origin/main 5fe0b967 (read in this act, 2026-10-28T05:54Z): ui/package.json L116 "changeset:publish": "node scripts/check-published-dist-tooling.mjs && changeset publish", the wiring test names changeset:publish on 4 lines, and release.yml runs pnpm run release (= build + console:build + scripts/release-publish.sh), never changesets/action nor the ui alias. Item 1 is UNVERIFIED by the seat: the current release.yml comment from L1947 describes pnpm run release and names neither the dist-tooling check nor --no-build; whether that is the stale text the card means, or already accurate, is the dev's first measurement — a premise_still_valid: false on item 1 with items 2–3 done is a good outcome.
    Serial constraints cleared: no open PR touches release.yml, ui/package.json or the wiring test (file scan of the open PRs in this act, 2026-10-28T05:54Z: none touches them); ui/** files are the ui lane's tree — triage assigned the whole card to this lane as one PR (6458605256), the seat declares that cross-lane surface here.
    Resume-from: none

  3. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 27017,
      "status": "done",
      "branch": "claude/issue-27017-ui-publish-check-texts",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27131",
      "head": "7076bbdd",
      "session": "session_01QSeKYmhU5KEj1nukYhp1Tg",
      "premise_still_valid": true,
      "premise_by_item": {
        "1_release_yml_comment": "true. Measured on origin/main a27f889a: the comment over the publish step (L1947-1951) said scripts/release-publish.sh 'is changeset publish followed by ONE atomic git push origin --tags'. Since daf52bcc (#26854) the script first runs node ui/scripts/check-published-dist-tooling.mjs --no-build (L73) and exits 1 before changeset publish when it is red. Since 4b7dbc44 (#26650) it also records npm's per-package answers for release-verify-npm.mjs. The comment left out the check the script refuses on, so it was corrected in place. This is a comment-only change: no step, run: line or condition moved. The PR is Tier H.",
        "2_ui_changeset_publish_alias": "true. git grep -n 'changeset:publish' outside ui/package.json found the wiring test (4 lines), a past-tense history comment in scripts/release-publish.sh L65, and released ui/packages/*/CHANGELOG.md entries (release-owned, not edited). No workflow or script invokes it. REMOVED rather than re-described: JSON has no comment spelling, and the alias was a second publish door that scanned a different build than the release's (it ran the scan without --no-build).",
        "3_wiring_test": "true. The comment at L506 ('changeset:publish is the command changesets/action runs') was false, because release.yml runs pnpm run release. The pin moved to the live path with the invariant kept."
      },
      "summary": "The release.yml comment over the publish step now lists what scripts/release-publish.sh runs, in order: (1) the @object-ui dist-tooling scan with --no-build, which refuses the publish; (2) changeset publish, with npm's answers recorded for release-verify-npm.mjs; (3) one atomic tag push. The dead ui changeset:publish alias is removed. Its wiring test now pins the live path: the root release script ends in bash scripts/release-publish.sh, and that script runs `if ! node ui/scripts/check-published-dist-tooling.mjs --no-build; then` before its changeset publish line (comment lines are stripped before the check). The whole card rides one draft PR in lane domain:skills as triage ordered, and the ui/** files are declared as cross-lane in the body.",
      "tests": "Edited file at 12551505 and again at 7076bbdd: pnpm --dir ui exec vitest run --maxWorkers=2 scripts/__tests__/check-published-dist-tooling.test.ts, under the lock -> Test Files 1 passed (1), Tests 35 passed (35), VERDICT command-exit 0. Reverse check, done on the REAL files because the test reads fixed paths. The fix was committed first (12551505). Each leg used scripts/ablation-replace.mjs (anchor hit 1 -> 0, blob moved), a git checkout HEAD trap, and an explicit hash-object == HEAD-blob check afterwards: (a) '--no-build' dropped from the gate line in scripts/release-publish.sh -> 'runs on the publish path' FAILED (expected ... to match /^if ! node ui\\/scripts\\/check.../), exit 1, restored blob 6d228a57 == HEAD; (b) root package.json release '&& bash scripts/release-publish.sh' -> '&& changeset publish' -> FAILED (expected false to be true), exit 1, restored a0c7eb67 == HEAD; (c) 'unset npm_config_globalconfig ...' line replaced by 'changeset publish' so a publish line precedes the gate -> FAILED (expected 43 to be less than 19), exit 1, restored. A first attempt at (c) was refused by ablation-replace (the anchor was contained in the replacement, so the count did not drop): nothing was written, and it was re-run with a different anchor. Green again after restore: 35/35, exit 0. The direction was the expected one (red) on all three legs. No dist rebuild was needed: the test reads source text files, and no package exports are involved.",
      "gates": "Head 7076bbdd (origin/main merged twice; families unchanged between 9849e9ec and 7076bbdd). node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 62 commands. All 62 ran on 7076bbdd with exit captured before any pipe: 60 direct/pnpm gates exit 0 (incl. check:required-contexts, check:workflow-status-functions, check:pm-expected-skips, check:workflow-step-name-quoting, check:cross-package-test-inputs, check:nul-bytes, check:published-files, check:type-check-coverage/debt, release-verify-npm/release-dist-tags --self-test); pnpm check:pm-dispatch-gates exit 0 (fast tier 1935 cases); pnpm --dir ui exec vitest run scripts/ exit 0 (175 files passed, 2 skipped; 5019 tests). --ran with ':: exit N' records: '62 derived, 62 run, 0 NOT-MEASURED (a DERIVED zero)', exit 0. That --ran pass warned the tree is 8 commits behind origin/main, with lint.yml changed; no conflict, so main was not merged a third time (os-dev: merge after open only on conflict or main-caused red). Outside the derivation: ui eslint on the edited test, exit 0. On the fresh worktree the ui scripts suite first needed @objectstack/spec, @objectstack/formula and @objectstack/client built: on 9849e9ec, before the builds, 3 files failed on missing dist (unit-registry-absence-collision, date-only-zone-pins-10183, check-vi-mock-inherit), and none of them reads a changed file. No check-release-* family was derived. PR check-runs: not awaited, in_progress at report time.",
      "files_changed": [
        ".github/workflows/release.yml",
        "ui/package.json",
        "ui/scripts/__tests__/check-published-dist-tooling.test.ts"
      ],
      "line_budget": "38 changed lines (+27/-11), 3 files",
      "dogfood_battery": "n/a: no ! in the PR title, and Clause-② no without a (narrowing) arm",
      "mcp_calls": "0 GitHub MCP calls",
      "api_writes": "3 classes, as budgeted: (1) git push of the branch: the empty probe, commit 12551505, then merge commits 9849e9ec and 7076bbdd, all fast-forward with no force; (2) relay pr_create via POST /repos/objectstack-ai/objectstack/dispatches (fleet-write run 40650389817, success) -> PR #27131, draft, assignee os-justin, label skip-changeset, body read back 5787/5787 bytes identical, labels read back by REST GET: skip-changeset; (3) this os-dev-report comment via post-stamped -> POST /repos/objectstack-ai/objectstack/issues/27017/comments",
      "deviations": [
        "Base moved: the order named origin/main 5fe0b967. The worktree was cut from a27f889a, and origin/main was merged in twice (final head 7076bbdd). The release.yml comment text at L1947 was unchanged across that range.",
        "Commit trailer: used the model-free pair that AGENTS.md requires (Co-authored-by: Claude), not the harness reminder's model-named Co-Authored-By. PR footer: used the os-dev session-URL form, not the harness '🤖 Generated with' line. In both cases the role file / AGENTS.md wins.",
        "The first pnpm check:pm-dispatch-gates run had no exit capture. It was re-run with capture on 9849e9ec (EXIT 0) and again on 7076bbdd (EXIT 0).",
        "Built @objectstack/spec, @objectstack/formula... and @objectstack/client... closures, outside ① (the diff touches no package), so the derived ui scripts suite could run on a fresh worktree."
      ],
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none · noted, not filed. scripts/release-publish.sh header L25-27 still says it is 'Run as the publish: command of changesets/action', and release.yml says changesets/action is not used. This is stale text with no runtime effect, so it fits none of classes a/b/c. Recorded in PR #27131 Acceptance notes."
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #27131 comment 6463573514 · domain:skills#2 · 2026-10-28T07:47Z — ⛔ not a claim. Contract review (CONTRACT_REVIEW_TIER) PASS → PR comment 6463562292 on head 7076bbdd. Tier H (.github/workflows/release.yml): os-zhuang APPROVED 5679210902 on this head (2026-10-28T07:31Z); who also readied and enqueued the PR himself (2026-10-28T07:43Z); the seat flipped nothing, follows it to MERGED and strips pm:dispatched when Fixes #27017 closes the card. Acceptance notes: the stale changesets/action header in scripts/release-publish.sh L25–27 — noted, not filed (no class a/b/c reach).

  5. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed — PR #27131 merged; card closed by Fixes #27017

    probe reading (2026-10-28T08:21Z, domain:skills#2)
    git log -1 --grep='#27131' origin/main after git fetch origin main 4db45988 ci(release),ui: the publish-check texts say what the release does today — the dead ui changeset:publish alias goes, its wiring test pins the live path (#27131) — on origin/main; GET pulls/27131 → merged: true, merge_commit_sha 4db45988, merged by the queue entry os-zhuang made (2026-10-28T08:08Z)
    GET issues/27017 state: closed, state_reason: completed (2026-10-28T08:08Z), closed by the PR body's Fixes #27017 (the only closing keyword in the body — no other card was closed by it)

    State change: pm:dispatched removed from this card in the same act (label-write, read back: tooling, domain:skills, priority:p3, area:devpath remain as ownership). Acceptance note carried from the PR, not filed: scripts/release-publish.sh L25–27 still says the script runs as the publish: command of changesets/action (stale header prose, zero runtime effect).


    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

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions