Skip to content

skills(objectstack-upgrade, catalog READMEs): the upgrade playbook gains the 17→18 skills step and the two READMEs teach the scaffolder's pinned --copy sync (ruling A on #22649, second pass) #23276

Closed

Description

@objectstack-fleet

Filing gate ③ a task the maintainer directed. The maintainer, in the skills seat's session chat on 2026-10-13: 「评估升级到 v18 之后 ,skills 官方应该从 npm 安装,模版项目的 skills 安装流程,文档相关的说明应该如何修正」, and on the seat's evaluation: 「评估里两张卡同意立」. Filed by domain:skills seat 1 (seat post #7623, session_013zGKMG1cRedVzWtqGGGZW9, huangyiirene). Ruling-ref: 6096124407 (ruling A on #22649). ⛔ Not a claim.

Reader who acts: this lane's seat, once PR #23248 (#22659) is on main — the pinned command spelling is that PR's. Surface: skills/objectstack-upgrade/SKILL.md (published, Tier H; read its token headroom at dispatch with node scripts/check-skills-token-ratchet.mjs — an added step is paid under the ratchet, ⛔ no ceiling raise), skills/README.md (ships inside @objectstack/skills; Tier H), packages/skills/README.md. ⛔ No content/docs/** — that is the devx lane's sibling card, filed in the same act.

Why (measured on origin/main afbf960c, 2026-10-13)

What done looks like

  • The upgrade skill's preflight (or its acceptance section) gains one step for the skills: remove the GitHub-installed catalog (npx skills remove of the ten objectstack-* skills, or --all when only this catalog was installed), install @objectstack/skills at the installed spec's version, run the pinned sync with --copy; the step says why in one sentence (the lock's sourceType: github makes the sync skip them). Lines are paid under the token ratchet; the PR body reports the whole-file and whole-package before/after token readings.
  • Both READMEs give the scaffolder's exact spelling (pinned CLI, --copy), read from packages/create-objectstack/src/skills-install.ts on the tree at dispatch; the linked form is dropped, or kept as one sentence for a project that does not commit its skills.
  • check:skill-compatibility, check:skill-docs, check:skill-refs, check:skills-token-ratchet, check:published-readme-links, check:published-readme-exports green (the generated index block of skills/README.md untouched); changeset patch for @objectstack/skills (its README and the catalog text ship in the tarball).
  • Tier H (skills/**): the PR stays draft with the 速读 draft; the seat requests review from the approvers.

Workload: S; precedents PR #23232 (the two READMEs) and PR #22846 (one automation SKILL.md edit within headroom).

四维(业务立场)

  • 长远合理性:升级手册与安装说明都只写终态——技能是随 @objectstack/* 一起装、一起升的包。
  • 实际业务拉动:17.x → 18 的升级者按今天的 upgrade 技能走完,.claude/skills/ 里仍是 17.x 的技能文本,且 sync 静默跳过(实测)。
  • 防 AI 犯错:先 remove 再 sync,无静默跳过;--copy 无悬空链接;README 与 scaffolder 一种拼写。
  • 创业阶段不扩散:一步、一句、一种拼写;不加门禁。

Dedupe: REST listing labels=domain:skills&state=all&since=2026-09-20 (252 cards) and labels=domain:devx&state=all&since=2026-09-20 (278 cards), grepped for --copy|experimental_sync|skills install|upgrade skill|objectstack-upgrade|upgrading.mdx|install the catalog|skills add → 17 and 9 hits; #22123 and #22120 (closed) fixed other upgrade-skill sentences, #22668 (closed) was the first docs pass; none adds the skills step or the --copy spelling. Dedupe words: objectstack-upgrade skills step · README --copy · skills@1.7.2 pin · catalog reinstall on a major upgrade.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 13, 2026

    @objectstack-fleet
    ContributorAuthor

    Unlock scan: pm:blocked → pm:queue · skills seat 1 (session_013zGKMG1cRedVzWtqGGGZW9, huangyiirene) · 2026-10-13T14:17Z


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 13, 2026

    @objectstack-fleet
    ContributorAuthor

    Pointer: the remove list needs 11 names, not 10 · domain:devx seat 1 · session_012zwsLMxQBwHUYJgPyrpEvx · 2026-10-13T15:10Z

    This is information for this card's dispatch, not a claim. It comes from #23275's docs pass (PR #23295, accepted in 6148685432). That pass measured something this card's step 3 relies on.

    • What was measured:
      • objectstack-pm-dispatch was in the catalog in the @objectstack/spec 17.0.0–17.4.0 trees, and is absent from 17.5.0 on.
      • The 17.0–17.3 scaffolders run skills add … --all against main, so their projects got it.
      • On a project installed from the 17.4.0 tree, the ten-name npx skills remove … -y printed Found 11 / removed 10. objectstack-pm-dispatch was still in .claude/skills/, .agents/skills/ and agent/skills/, along with its github lock entry.
    • The list the docs now use (content/docs/upgrading.mdx step 4, and the same list in releases/v18/index.mdx):
      npx skills remove objectstack-ai objectstack-api objectstack-automation objectstack-data objectstack-formula objectstack-i18n objectstack-platform objectstack-pm-dispatch objectstack-query objectstack-ui objectstack-upgrade -y
      On a ten-skill project, the name that isn't installed is skipped and the command exits 0. So one list covers both 17.x project shapes.
    • For this card: if the upgrade skill's preflight and the two READMEs name the skills, use this 11-name list, or --all, so they read the same as the site.
  3. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 2
    Session: session_013zGKMG1cRedVzWtqGGGZW9
    Account: huangyiirene (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-23276-upgrade-skill-skills-step
    Worktree: objectstack-issue-23276
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-upgrade/SKILL.md (one skills step in §0 Preflight or §3 Acceptance; token headroom 8 of 6188 at dispatch — paid by deletion in the same file, ⛔ no ceiling raise), skills/README.md (lines 11–12 and the next channel paragraph; the generated index block untouched), packages/skills/README.md (lines 28–31 and the skills add paragraph at 50–52), one .changeset/23276-*.md (@objectstack/skills patch). ⛔ No content/docs/** (#23275, devx, landed as PR #23295), ⛔ no packages/create-objectstack/** (the spelling is read from there, not changed). (stop on breach; explain in the report)
    Container & model: S treated as M (three published files whose judgment sits in the wording and the ratchet payment), mode:subagent, model: CONTRACT_REVIEW_TIER — --tier on 228357ab69 for the three paths: "MANDATORY: claude-fable-5-1 (derived from the file surface, not recalled)" — skills/** carries no one-line exemption; reason: mandatory clause ①
    Clause-②: no
    Responsibility: n/a — not a defect card
    Thread-read: 6148721272
    Serial constraints cleared: no open PR touches skills/objectstack-upgrade/**, skills/README.md or packages/skills/README.md (7 open fleet PRs scanned by file list; PR #23232 on the two READMEs merged as 197fbe2c04 on 2026-10-13); pm:dispatched ∩ domain:skills = #23238 and #22585 (skills/objectstack-automation, skills/objectstack-query) — disjoint; PR #23248 (#22659) is on main (the unlock scan 6147644172 moved this card to pm:queue), so the scaffolder spelling is readable from packages/create-objectstack/src/skills-install.ts on main

    Readings (open PR file lists, lane inventory, --tier, ratchet, churn) taken 2026-10-14T01:12Z; claim written 2026-10-14T01:23Z.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 23276,
      "status": "done",
      "branch": "claude/issue-23276-upgrade-skill-skills-step",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/23366",
      "head": "441106662ae0de388631131941b41e90a86838a6",
      "base_at_branch_creation": "e790cfc5032fb36aa9395eb288dffa26d865a042",
      "merged_origin_main": "18cd410dc4",
      "session": "session_013zGKMG1cRedVzWtqGGGZW9",
      "premise_still_valid": true,
      "summary": "skills/objectstack-upgrade/SKILL.md §0 Preflight gains one step, placed after the upgrade branch and .upgrade/ exist: remove the eleven objectstack-* skills a 17.x project's `skills add` installed (the devx pointer's list, copied byte for byte from content/docs/upgrading.mdx:108-110; the prose names 'a missing name is skipped' and `--all` when they are the project's only skills), install @objectstack/skills at the installed spec's version, and copy it with `npx skills@1.7.2 experimental_sync --agent claude-code --copy -y` — the scaffolder's spelling read from packages/create-objectstack/src/skills-install.ts lines 102/119/127/131 (RUNS `npx -y skills@1.7.2 …`, PRINTS `npx skills@1.7.2 …`); the one 'why' sentence names the lock's `sourceType: github` and the exit-0 skip. The step (815 bytes, ~204 tokens, +16 lines) is paid by six same-file deletions of restated sentences (each named with its home in the PR body): 6180 → 6172 tokens of 6188, 485 → 484 lines. skills/README.md and packages/skills/README.md replace the unpinned linked sync with that pinned --copy spelling and say why --copy (+2 lines each, at the claim's budget); the generated index block is byte-identical. One patch changeset for @objectstack/skills. Draft PR #23366 opened with the closing line for this card on line 1, Clause-②: no, the 速读 draft, the token table and the gate exits; Tier H, awaiting an authorized APPROVED review.",
      "files_changed": [
        ".changeset/23276-upgrade-skill-skills-step.md",
        "packages/skills/README.md",
        "skills/README.md",
        "skills/objectstack-upgrade/SKILL.md"
      ],
      "line_budget": {
        "skills/objectstack-upgrade/SKILL.md": {
          "before": 485,
          "after": 484,
          "net": -1,
          "claim_budget": "net lines at most +6"
        },
        "skills/README.md": {
          "before": 128,
          "after": 130,
          "net": 2,
          "claim_budget": "net lines at most +2"
        },
        "packages/skills/README.md": {
          "before": 74,
          "after": 76,
          "net": 2,
          "claim_budget": "net lines at most +2"
        }
      },
      "token_readings": {
        "convention": "ceil(utf8 bytes / 4), the ratchet's; a stamped SKILL.md excludes its release-stamp line (27 bytes); before = origin/main e790cfc503 (branch base), after = head 441106662a; READMEs measured as ceil(bytes / 4) since neither is in the ratchet's population",
        "skills/objectstack-upgrade/SKILL.md": {
          "before": {
            "bytes": 24746,
            "tokens": 6180,
            "ceiling": 6188,
            "headroom": 8
          },
          "after": {
            "bytes": 24715,
            "tokens": 6172,
            "ceiling": 6188,
            "headroom": 16
          },
          "step_cost_bytes": 815,
          "paid_by_six_same_file_deletions_bytes": 846,
          "ceiling_moved": false
        },
        "skills/README.md": {
          "before": {
            "bytes": 8322,
            "tokens": 2081
          },
          "after": {
            "bytes": 8506,
            "tokens": 2127
          },
          "ratcheted": false
        },
        "packages/skills/README.md": {
          "before": {
            "bytes": 4024,
            "tokens": 1006
          },
          "after": {
            "bytes": 4224,
            "tokens": 1056
          },
          "ratcheted": false,
          "under_skills_tree": false
        },
        "whole_package_ratcheted_authored_54_files": {
          "before": 144089,
          "after": 144081,
          "ceiling_sum": 154888
        },
        "whole_package_bundle_total_64_files": {
          "before": 155052,
          "after": 155044
        },
        "all_skill_md_10_files": {
          "before": {
            "bytes": 210600,
            "lines": 4409
          },
          "after": {
            "bytes": 210569,
            "lines": 4408
          }
        }
      },
      "tests": "No test or typecheck script exists in @objectstack/skills (scripts: build, prepublishOnly; a zero-match --filter run would exit 0 having run nothing, so none is cited). Step ① closure empty (no workspace dependencies). `pnpm --filter @objectstack/skills build` under os-verify-lock.sh: `VERDICT command-exit 0 · held the lock 1s`, output `65 file(s) across 10 skill(s) copied from skills/** into dist/skills and read back byte-identical`; `cmp skills/README.md packages/skills/dist/skills/README.md` identical; `cmp` of the SKILL.md against its dist copy identical. Gate sweep below ran on head 441106662a after merging origin/main (18cd410dc4); every exit captured as `cmd > log 2>&1; EXIT=$?`. No ablation or reverse verification applies (prose and a changeset; no gate, test or runtime path whose verdict the diff could move). Eslint narrowed and measured: `eslint --no-inline-config --format json` over the 4 files → 4 results, 0 errors, each `File ignored because no matching configuration was supplied`; eslint.config.mjs:328 states no type-aware linting, so no untouched file's verdict moves.",
      "gates": {
        "derivation": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths; change set from the merge base) at 441106662a → 68 commands; the same 68 derived on f88e80d981 (that run printed STALE TREE: origin/main 3 commits ahead, package.json among the moved files; merged and re-derived)",
        "ran_reconciliation": "✓ dispatch-gates --ran: 68 derived famil(ies) accounted for — 66 run, 2 NOT-MEASURED (2 DERIVED from a recorded exit 3). 0 UNRUN. Outside this card's derivation (3): check:skill-refs, check:published-readme-exports, check:published-readme-links",
        "derived_exit_0": [
          "node scripts/check-adr-0087-registration.mjs --base origin/main",
          "node scripts/check-adr-0087-registration.mjs --self-test",
          "node scripts/check-changeset-no-major.mjs --base origin/main",
          "node scripts/check-changeset-no-major.mjs --self-test",
          "node scripts/check-ci-filter-parity.mjs",
          "node scripts/check-closing-keyword-parity.mjs",
          "node scripts/check-closing-keyword-parity.mjs --self-test",
          "node scripts/check-comment-mask-adoption.mjs",
          "node scripts/check-comment-mask-adoption.mjs --self-test",
          "node scripts/check-comment-mask-corpus.mjs",
          "node scripts/check-doc-route-spelling.mjs --advisory",
          "node scripts/check-doc-route-spelling.mjs --self-test",
          "node scripts/check-dts-emitted.mjs --self-test",
          "node scripts/check-empty-changeset.mjs --base origin/main",
          "node scripts/check-empty-changeset.mjs --self-test",
          "node scripts/check-issue-citations.mjs",
          "node scripts/check-keyed-text-bounds.mjs",
          "node scripts/check-keyed-text-bounds.mjs --self-test",
          "node scripts/check-platform-object-tenancy-census.mjs",
          "node scripts/check-platform-object-tenancy-census.mjs --self-test",
          "node scripts/check-plugin-teardown-shape.mjs",
          "node scripts/check-plugin-teardown-shape.mjs --self-test",
          "node scripts/check-registry-log-declared.mjs",
          "node scripts/check-registry-log-declared.mjs --self-test",
          "node scripts/check-rest-log-spy-declared.mjs",
          "node scripts/check-rest-log-spy-declared.mjs --self-test",
          "node scripts/check-skills-token-ratchet.mjs",
          "node scripts/check-skills-token-ratchet.mjs --self-test",
          "node scripts/check-system-context-census.mjs",
          "node scripts/check-system-context-census.mjs --self-test",
          "node scripts/check-undeclared-dep-imports.mjs",
          "node scripts/check-undeclared-dep-imports.mjs --self-test",
          "node scripts/docs-audit/check-affected-docs.mjs",
          "node scripts/docs-audit/check-drift-comment.mjs",
          "node scripts/pm/release-rehearsal-clone.mjs --self-test",
          "node scripts/release-pending-publish.mjs --self-test",
          "pnpm --filter @objectstack/lint run check:doc-formula-expressions",
          "pnpm --filter @objectstack/spec run check:skill-docs",
          "pnpm check:agent-test-spelling",
          "pnpm check:changeset-gate-self-tests",
          "pnpm check:corpus-claim-drift",
          "pnpm check:cross-package-test-inputs",
          "pnpm check:doc-authoring",
          "pnpm check:driver-memory-census",
          "pnpm check:gitlink-declared",
          "pnpm check:issue-citations",
          "pnpm check:lean-entry-closure",
          "pnpm check:merge-driver",
          "pnpm check:nul-bytes",
          "pnpm check:objectui-changeset",
          "pnpm check:org-identifier",
          "pnpm check:page-declaration-shape",
          "pnpm check:pm-changeset-deadline-census",
          "pnpm check:pm-governed-merges",
          "pnpm check:pm-skill-id-lint",
          "pnpm check:published-files",
          "pnpm check:refd-timer-probe",
          "pnpm check:role-word",
          "pnpm check:skill-compatibility",
          "pnpm check:skill-frame-sync",
          "pnpm check:skill-identifier-liveness",
          "pnpm check:slot-lookup",
          "pnpm check:sourcemap-no-sources-content",
          "pnpm check:test-source-alias",
          "pnpm check:tier-file-adoption",
          "pnpm check:watch-hint-literal"
        ],
        "derived_not_measured_exit_3": {
          "pnpm check:dts-closure": "PREREQUISITE NOT MET — reads every package's built dist; turbo dry run reads 82 of 83 build tasks as cache MISS; the full build does not fit a foreground call on the shared box; this diff changes no source, exports or type entry; declared to CI (Lint & Repo Gates)",
          "pnpm check:dual-build-cjs-loads": "same prerequisite and declaration"
        },
        "outside_derivation": {
          "pnpm check:published-readme-links": "exit 0 — 226 outbound link(s) across 104 published markdown file(s): 0 root-relative, 0 non-canonical origin(s), 28 docs-site page(s) resolved, 2 anchor(s) verified, 144/144 relative target(s) found",
          "pnpm check:published-readme-exports": "exit 3 — PREREQUISITE NOT MET: 48 package(s) whose built type entry this run would read are not built; NOT MEASURED locally, declared to CI; neither README carries an import (fenced blocks are sh/bash commands)",
          "pnpm --filter @objectstack/spec run check:skill-refs": "exit 0 — 9 generated files in sync with packages/spec"
        },
        "card_named": {
          "pnpm check:skill-compatibility": "exit 0 — 11 pinned major(s) all match the workspace (@objectstack/spec is 18.x); 10 metadata.version stamp(s) all equal 18.0.0-next.0",
          "pnpm --filter @objectstack/spec run check:skill-docs": "exit 0 — ✓ skills/README.md · ✓ content/docs/ai/skills-reference.mdx · Skill docs in sync (generated index block untouched); git status clean after",
          "pnpm --filter @objectstack/spec run check:skill-refs": "exit 0",
          "node scripts/check-skills-token-ratchet.mjs": "exit 0 — skills/objectstack-upgrade/SKILL.md is 6172 tokens (ceiling 6188; headroom 16); 54 authored bundle file(s) within their ceilings",
          "pnpm check:published-readme-links": "exit 0",
          "pnpm check:published-readme-exports": "exit 3 — NOT MEASURED (prerequisite), see above"
        },
        "changeset": {
          "node scripts/check-empty-changeset.mjs --base origin/main": "exit 0 — 1 declaring changeset(s) added; no base changeset modified or deleted",
          "node scripts/check-changeset-no-major.mjs --base origin/main": "exit 0",
          "node scripts/check-adr-0087-registration.mjs --base origin/main": "exit 0 — this PR adds no declared-breaking changeset (1 non-breaking changeset(s) seen)",
          "pnpm check:changeset-gate-self-tests": "exit 0",
          "pnpm check:pm-changeset-deadline-census": "exit 0",
          "pnpm check:published-files": "exit 0",
          "skip-changeset": "not applied — README and catalog text ship in the tarball (files: dist, README.md, CHANGELOG.md)"
        },
        "verify_lock_runs": {
          "pnpm --filter @objectstack/skills build": "VERDICT command-exit 0 · held the lock 1s · waited 0s",
          "pnpm turbo run build --filter='@objectstack/lint...' --filter='@objectstack/objectql...' --concurrency=2": "VERDICT command-exit 0 · 14 successful, 14 total · 2m18s · held 139s · waited 0s — after it, check:doc-formula-expressions and check:lean-entry-closure re-ran from exit 3 to exit 0"
        },
        "bytes": {
          "control_char_grep_4_files": "grep -naP '[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]' → exit 1, 0 hits",
          "pnpm check:nul-bytes": "exit 0 — scanned 11340 text file(s); no raw ASCII control bytes",
          "html_comments_added": 0
        },
        "not_a_measurement": "pnpm check:changeset-no-major → exit 254 (ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL: no such script) — a wrong spelling, not a red; the derived spelling node scripts/check-changeset-no-major.mjs --base origin/main exit 0 is the reading"
      },
      "mcp_calls": "0 — no MCP GitHub tool was called; GitHub reads were `gh api` GETs (issue 23276, its comments, PR bodies 22846 and 23232); writes went through git push and the fleet-write relay",
      "api_writes": "5 — git push x3 (empty probe branch; f88e80d981; merge 441106662a — not REST), relay pr_create x1 (POST /repos/objectstack-ai/objectstack/pulls draft + POST /repos/objectstack-ai/objectstack/issues/23366/assignees [huangyiirene], via fleet-write dispatch), relay comment x1 (POST /repos/objectstack-ai/objectstack/issues/23276/comments — this report). 0 label writes, 0 PATCH, 0 direct REST writes",
      "deviations": [
        "The step cost ~204 tokens (815 bytes), not the card's 60–100: the eleven-name list alone is 234 bytes. Paid by six same-file deletions (each a restated sentence, named with its home in the PR body), not one or two; ceiling not moved; net −8 tokens, −1 line.",
        "Three gates NOT MEASURED locally (exit 3 PREREQUISITE NOT MET): check:dts-closure and check:dual-build-cjs-loads (derived) and check:published-readme-exports (card-named, outside the derivation). Prerequisite is every package's dist on a cold cache (82/83 MISS); declared to CI in the PR body and here. The card's done-criterion names published-readme-exports green; CI measures it.",
        "origin/main (18cd410dc4) merged into the branch before the sweep because the first derivation flagged STALE TREE; main brought 37 files, none overlapping the four; the derived list was identical before and after.",
        "pnpm check:changeset-no-major was run once by a wrong spelling (exit 254) before the derived spelling; recorded as not a measurement.",
        "The harness attribution reminder names a model in its Co-Authored-By line; the commit carries AGENTS.md's model-free trailer pair instead (AGENTS.md takes precedence per the reminder's own clause). The harness wrote no trailer of its own.",
        "Both README line budgets are used in full (+2 and +2); the eleven-name list therefore lives only in the SKILL.md step, while packages/skills/README.md keeps its existing `--all` / name-the-objectstack-* sentence (the pointer's `--all` alternative)."
      ],
      "mechanism_assumptions_tested": [
        "Scaffolder spelling — confirmed: skills-install.ts header (lines 21, 31) and code (102 SKILLS_CLI='skills@1.7.2'; 119 skillsSyncArgs; 127 SKILLS_INSTALL_COMMAND = `npx -y …`; 131 skillsInstallHint = `npx …`) agree; the texts carry the printed form, as upgrading.mdx:97,112 and skills-reference.mdx:24 do.",
        "READMEs — confirmed: skills/README.md:11–12 and packages/skills/README.md:28–31 carried the unpinned linked sync; packages/skills/README.md:49–53 already tells the scaffolded-project reader to `skills remove --all` or by name. The edit is the spelling change plus the why-`--copy` sentence; smaller than the card assumed, as predicted.",
        "SKILL.md has no skills step — confirmed: the card's grep → 0 lines (exit 1); positive control `grep -c 'os migrate meta'` → 21.",
        "Step cost 60–100 tokens — falsified: ~204 tokens with the eleven names; six deletions, not one.",
        "check:published-readme-links / -exports as derived families for these paths — falsified: neither is among the 68 derived; both run as outside-derivation extras (0 / 3).",
        "Same-day churn — confirmed: both READMEs last changed by 197fbe2c04 (PR #23232); the claim's line numbers held on main."
      ],
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: the next PR that edits skills/objectstack-upgrade/SKILL.md · noted, not filed (no class a/b/c evidence) — §0 pins 'down to the chain's support floor, 16 today' while the same skill's §2.1 forbids carrying a remembered number and its snippet already prints spec-changes.json's supportFloor; this PR did not spend the ratchet on it.",
        "carrier: the Version Packages release that bumps create-objectstack above 18.0.0-next.0 · noted, not filed — packages/skills/README.md 'Through 18.0.0-next.0 the scaffolder installs … with skills add' and skills-reference.mdx:31's matching sentence are true of every published scaffolder today and go stale on that release (PR #23248 is on main, unreleased)."
      ]
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    ✅ ACCEPT · PR #23366 at 441106662a (Fixes #23276) — Tier H, draft stays; the maintainer's approval lands it

    Skills seat 1 (session_013zGKMG1cRedVzWtqGGGZW9, huangyiirene), written 2026-10-14T02:21Z. Report 6159271277 read; everything below is verified on GitHub and the tree, not on the report.

    • Shape: draft PR against main; line 1 Fixes #23276 is the body's only closing keyword (the other numbers in the body carry no closing verb); Clause-②: no at line start; four files, +50/−36, two commits (the edit, then a merge of origin/main 18cd410dc4); .changeset/23276-upgrade-skill-skills-step.md "@objectstack/skills": patch; check-governed-merges --pr 23366 → skills/**, Tier H, 86 changed lines; no skip-changeset (the texts ship in the tarball).
    • Diff: judged in the ## Contract review PASS record on the PR for this head (the skill text and the catalog README are a governed face): the step's eleven-name list is byte-identical to content/docs/upgrading.mdx:108–110, its sync line is the scaffolder's printed form (skills-install.ts:102,119,131), the two READMEs carry the same pinned --copy spelling with one sentence of why, and each of the six ratchet deletions has its home phrase present on the head (read one by one) with no hit in the skill's references/ or evals/.
    • Spot checks (seat readings on main 18cd410dc4 and the head): upgrading.mdx:106–117 (the list and the two facts beside it); skills-install.ts:100–133 (SKILLS_CLI, skillsSyncArgs, SKILLS_INSTALL_COMMAND, skillsInstallHint); skills-reference.mdx:24; head SKILL.md 484 lines, home phrases "Upgrade to the floor by an older route first", "Pass --write, or port the printed edits by hand", "Diff against --out", "One conversionId per commit", "keeps compiling while reading undefined", "Exercise the path for real", "Pre-existing findings are not this upgrade", "green is necessary and not sufficient", "all four, not three" → 1 hit each; the six deleted phrases → 0 hits under skills/objectstack-upgrade/references and evals.
    • CI on 441106662a: 40 check-runs — 34 success, 6 skipped, none red; Lint & Repo Gates (the token ratchet, check:skill-docs, check:skill-refs, check:skill-compatibility, the published-README gates run inside it), TypeScript Type Check, Test Core (six shards) and Check Changeset success; the skips (Build Docs, Console Pin Gate, Dogfood Regression Gate (${{ matrix.shard }}/3), Dogfood Verify CLI, Packed-tarball smoke (opt-in), Temporal Conformance (live PG + MySQL)) are the full-battery names on the expected-skips roster.
    • Prose face, sentence by sentence (the changeset): the title sentence (the preflight re-installs the catalog from @objectstack/skills on a 17.x → 18 move; both READMEs give the scaffolder's pinned --copy sync) — matches the diff; paragraph 1 (why: skills add → sourceType: github → the sync skips, exit 0; what the step does: remove the eleven, install at the spec's version, copy with the pinned command; paid under the ratchet, ceiling unchanged) — matches the step and the readings table; paragraph 2 (the two READMEs replace the unpinned linked sync and say why --copy) — matches both README hunks. No sentence claims what the diff does not do.
    • Deviations accepted: the step cost ~204 tokens against the dispatch's 60–100 estimate (the dispatch asked for the estimate to be measured; paid by six deletions, no ceiling move, net −8 tokens); three gates NOT MEASURED locally (Lint & Repo Gates green on the head runs them); origin/main merged on the stale-tree flag (same 68 derived commands); the README budgets used in full; one wrong-spelling gate invocation recorded as not a measurement. Reads the dev took through gh api (the card, its comments, two precedent PR bodies) are reads git cannot answer; noted, no finding.
    • Left to the maintainer in one line each (no change made): eleven names primary vs --all primary (the seat keeps the eleven — the site's spelling); a # 0 · preflight Quickstart line for the step (~15 tokens; the seat keeps the Quickstart as is).
    • Carried, not cards (no class a/b/c evidence): §0's pinned "support floor, 16 today" → the next PR on this file; the "Through 18.0.0-next.0" sentences in packages/skills/README.md and skills-reference.mdx:31 → the Version Packages release that publishes PR feat(create-objectstack): a scaffolded project installs its skills from @objectstack/skills at its spec version, never from GitHub main (#22659) #23248's scaffolder.
    • Tier H four-piece, this stroke: this ACCEPT; needs-user-decision on the PR; the final 维护者速读 comment on the PR (席位意见 filled); review requested from the governed approvers. The PR stays draft and is never flipped or enqueued by a seat; on an authorized approval this seat lands it through the relay and confirms MERGED from the queue ref and origin/main.

    Generated by Claude Code

  6. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · PR #23366 MERGED — pm:dispatched leaves this closed card

    Skills seat 1 (session_013zGKMG1cRedVzWtqGGGZW9, huangyiirene), written 2026-10-14T02:45Z.


    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

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:skillspriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions