Skip to content

Working agreement: a pin-breaking removal must land together with its pin bump #10986

Description

@huangyiirene

Rule to encode

When a change in this repo removes or renames a surface that a pinned sibling checkout imports (today: the pinned objectui SHA that Console Pin Gate builds against), the removal must not merge alone. The same change series must update the sibling and bump the pin so the gate builds green at the moment of merge.

Why the rule is needed: the pin gate builds the pinned sibling against current main, so "retire the surface" and "leave the sibling untouched" cannot both hold — a retirement the pinned sibling still imports turns main red for every PR in the repo. A ruling that authorizes a removal therefore implicitly authorizes the sibling fix and pin bump as part of the same landing; a removal PR that cannot ship them does not ship.

Scope of work

  • Encode the rule in AGENTS.md (the retirement / PR-flow section) as one clear directive: a removal that breaks the pinned sibling ships together with the sibling fix and the pin bump, or it does not ship.
  • If the retirement checklist or the spec-removal registry flow has a natural anchor for a pre-merge check ("does the pinned sibling import what you are removing?"), add the one line there; do not build new tooling in this card.
  • AGENTS.md is a governed face: draft PR, human merge, never flip ready.

Acceptance

  • The directive exists in AGENTS.md, findable from the section a retirement author actually reads.
  • No behavior/tooling changes beyond the doc line(s).

Provenance

Maintainer ruling 2026-08-22 (decision-inbox digest with the skills seat, session_01ApyDuQY2fkunMCqXiqvBhR, accepted verbatim 「接受所有」): the p0 main-red pin-gate card #10856 was ruled A + C — fix the objectui side first, and adopt this rule. This card is the C half, commissioned to the skills seat by that ruling. Background refs (non-operative): retirement PR #10695, Console Pin Gate failure on queue build 32489707921.

Activity

  1. huangyiirene commented on Aug 22, 2026

    @huangyiirene
    CollaboratorAuthor

    Triage (half-annotation repair — queued without a lane): routed domain:skills — the deliverable is an AGENTS.md directive (instruction-architecture file, that lane's charter), and the card was commissioned to the skills seat by the maintainer's 2026-08-22 A+C ruling on #10856. Task XS, governed-face discipline as the card already states (draft PR, request review os-zhuang, human merge, never ready). Ruling-implementation card — nothing to adjudicate.


    Generated by Claude Code

  2. self-assigned this
    on Aug 22, 2026
  3. os-zhuang commented on Aug 22, 2026

    @os-zhuang
    Contributor

    Claim: session_01MsbKEG4LtERSLaDrbehM3e branch=claude/issue-10986-pin-bump-agreement

    skills 车道执行席认领,单卡派发(XS,裁定实现)。裁定重读完毕:本卡是维护者 2026-08-22 对 #10856 A+C 裁定(「接受所有」逐字在案)的 C 半,无待裁事项;唯一评论为分诊补注,无他席认领。串行前提已清:AGENTS.md 此前被 #11091 占用,该 PR 已于 17:07Z 合并,文件空闲。约束进简报:AGENTS.md 961/961 零余量(增行须以文内删减支付,re-wrap 不算支付);治理面 draft PR + 人工合并;退休清单锚点若落在 .claude/skills/spec-property-retirement/SKILL.md 须等在飞 #11092(auto-merge 已布防)落地后基于合后 main 动笔,或仅做 AGENTS.md 半边并申报。


    Generated by Claude Code

  4. added a commit that references this issue on Aug 22, 2026
    e94c575
  5. os-zhuang commented on Aug 22, 2026

    @os-zhuang
    Contributor
    {
      "issue": 10986,
      "status": "done",
      "branch": "claude/issue-10986-pin-bump-agreement",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/11108",
      "premise_still_valid": true,
      "line_budget": {
        "AGENTS.md": { "before": 961, "after": 961, "ceiling": 961 }
      },
      "commits": ["e94c5759 docs(agents): a pin-breaking removal ships with the sibling fix and pin bump"],
      "summary": "Encoded the C half of the 2026-08-22 A+C ruling as AGENTS.md Post-Task Checklist item 4: a removal that breaks the pinned sibling checkout ships together with the sibling fix and the pin bump, or it does not ship — with the one-clause rationale (the Console Pin Gate builds objectui at the pinned .objectui-sha against current main, so a removal the pinned sibling still imports turns main red for every PR) and the one-line pre-merge check (git grep the removed surface in ../objectui at the pinned SHA). Placed directly after item 3's retirement paragraph and before the spec-export-removal item; former items 4-6 renumbered 5-7 (only item 3 is referenced externally, unchanged). Stale-premise check on post-11091 main confirmed no existing directive covers pin-breaking removals. The one added line was paid by deleting the seventeen-phantom-pins incident parenthetical in the Build & Test section (incident case law lives in git history per the ratchet header). Draft PR only (governed surface), assigned to os-zhuang; skip-changeset applied as label union over auto-applied size/s and read back.",
      "gates": [
        "dispatch-gates.mjs (no hand-fed paths, at final commit e94c5759): change set = AGENTS.md only; 7 families derived. First derivation also caught a pnpm-install mode flip on packages/create-objectstack/bin/create-objectstack.js — restored, re-derived clean.",
        "check:pm-skill-ratchet: '✓ check-skill-line-ratchet: AGENTS.md is 961 lines (ceiling 961; headroom 0).' EXIT=0",
        "check:pm-skill-id-lint: '✓ check-skill-id-lint: 17 file(s) clean (pattern /#[0-9]{3,}/g).' EXIT=0 — directive is self-contained, no issue numbers",
        "check:doc-authoring: '✓ doc authoring guard: 389 files clean — no bare metadata literals.' EXIT=0",
        "check:nul-bytes: 'check-nul-bytes: OK (scanned 6417 text file(s) ... no raw ASCII control bytes).' EXIT=0",
        "check:docs-audit-scope: '✓ docs-accuracy-audit scope is in sync with content/docs/: 189 hand-written doc(s).' EXIT=0",
        "check:pm-governed-merges: '✓ check-governed-merges --self-test: 119 assertions ...' EXIT=0",
        "check:pm-governed-prose: '✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces ... and claim no others.' EXIT=0",
        "check:required-contexts (pnpm) and scripts/check-required-contexts.mjs: '✓ check-required-contexts: 6 required context name(s) pinned across 2 workflow(s); 5 instruction surface(s) scanned ...' EXIT=0 both",
        "All exit codes captured via redirect-then-capture, never through a pipe. CI not waited on per draft-PR reporting contract."
      ],
      "deviations": [
        "Checklist-line half DEFERRED by dispatch instruction: PR 11092 (auto-merge armed) is still in flight touching .claude/skills/spec-property-retirement/SKILL.md (verified absent from origin/main log at dispatch time), so only the AGENTS.md half shipped. The AGENTS.md item itself carries the one-line pre-merge check, so the rule is not silent; the SKILL.md anchor line remains available as a follow-up after 11092 lands.",
        "Post-Task Checklist items 4-6 renumbered to 5-7 to insert the directive as item 4; Prime Directives untouched. Only item 3 is referenced by number elsewhere (docs/audits 2026-07 ledger, ADR-0115) and its number is unchanged."
      ],
      "open_questions": [],
      "out_of_scope_findings": [],
      "tests": "Doc-only change; no package tests apply. All 9 derived/named gate families green at e94c5759 (verdict lines quoted in gates array)."
    }

    Generated by Claude Code


    Generated by Claude Code

  6. os-zhuang commented on Aug 22, 2026

    @os-zhuang
    Contributor

    os-dev-report (supersedes the previous comment, whose HTML-comment marker the sanitizer stripped; JSON identical)

    {
      "issue": 10986,
      "status": "done",
      "branch": "claude/issue-10986-pin-bump-agreement",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/11108",
      "premise_still_valid": true,
      "line_budget": {
        "AGENTS.md": { "before": 961, "after": 961, "ceiling": 961 }
      },
      "commits": ["e94c5759 docs(agents): a pin-breaking removal ships with the sibling fix and pin bump"],
      "summary": "Encoded the C half of the 2026-08-22 A+C ruling as AGENTS.md Post-Task Checklist item 4: a removal that breaks the pinned sibling checkout ships together with the sibling fix and the pin bump, or it does not ship — with the one-clause rationale (the Console Pin Gate builds objectui at the pinned .objectui-sha against current main, so a removal the pinned sibling still imports turns main red for every PR) and the one-line pre-merge check (git grep the removed surface in ../objectui at the pinned SHA). Placed directly after item 3's retirement paragraph and before the spec-export-removal item; former items 4-6 renumbered 5-7 (only item 3 is referenced externally, unchanged). Stale-premise check on post-11091 main confirmed no existing directive covers pin-breaking removals. The one added line was paid by deleting the seventeen-phantom-pins incident parenthetical in the Build & Test section (incident case law lives in git history per the ratchet header). Draft PR only (governed surface), assigned to os-zhuang; skip-changeset applied as label union over auto-applied size/s and read back.",
      "gates": [
        "dispatch-gates.mjs (no hand-fed paths, at final commit e94c5759): change set = AGENTS.md only; 7 families derived. First derivation also caught a pnpm-install mode flip on packages/create-objectstack/bin/create-objectstack.js — restored, re-derived clean.",
        "check:pm-skill-ratchet: '✓ check-skill-line-ratchet: AGENTS.md is 961 lines (ceiling 961; headroom 0).' EXIT=0",
        "check:pm-skill-id-lint: '✓ check-skill-id-lint: 17 file(s) clean (pattern /#[0-9]{3,}/g).' EXIT=0 — directive is self-contained, no issue numbers",
        "check:doc-authoring: '✓ doc authoring guard: 389 files clean — no bare metadata literals.' EXIT=0",
        "check:nul-bytes: 'check-nul-bytes: OK (scanned 6417 text file(s) ... no raw ASCII control bytes).' EXIT=0",
        "check:docs-audit-scope: '✓ docs-accuracy-audit scope is in sync with content/docs/: 189 hand-written doc(s).' EXIT=0",
        "check:pm-governed-merges: '✓ check-governed-merges --self-test: 119 assertions ...' EXIT=0",
        "check:pm-governed-prose: '✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces ... and claim no others.' EXIT=0",
        "check:required-contexts (pnpm) and scripts/check-required-contexts.mjs: '✓ check-required-contexts: 6 required context name(s) pinned across 2 workflow(s); 5 instruction surface(s) scanned ...' EXIT=0 both",
        "All exit codes captured via redirect-then-capture, never through a pipe. CI not waited on per draft-PR reporting contract."
      ],
      "deviations": [
        "Checklist-line half DEFERRED by dispatch instruction: PR 11092 (auto-merge armed) is still in flight touching .claude/skills/spec-property-retirement/SKILL.md (verified absent from origin/main log at dispatch time), so only the AGENTS.md half shipped. The AGENTS.md item itself carries the one-line pre-merge check, so the rule is not silent; the SKILL.md anchor line remains available as a follow-up after 11092 lands.",
        "Post-Task Checklist items 4-6 renumbered to 5-7 to insert the directive as item 4; Prime Directives untouched. Only item 3 is referenced by number elsewhere (docs/audits 2026-07 ledger, ADR-0115) and its number is unchanged."
      ],
      "open_questions": [],
      "out_of_scope_findings": [],
      "tests": "Doc-only change; no package tests apply. All 9 derived/named gate families green at e94c5759 (verdict lines quoted in gates array)."
    }

    Generated by Claude Code


    Generated by Claude Code

  7. added a commit that references this issue on Aug 23, 2026
    13c0b16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions