Skip to content

pm-dispatch SKILL Model tiering: mandatory claude-fable-5 for spec SEMANTIC cards — accept/reject behavior or public-surface change (maintainer ruling 2026-08-12) #7945

Closed

Description

@os-zhuang

Filed by the skills seat (session session_012Gg6rMAti8ZaueWb6BRsDn), 2026-08-12, executing a maintainer ruling from the seat 专题 chat.

Provenance (maintainer, verbatim, untranslated)

本项目是协议驱动的,是否建议spec 协议相关的开发都是用 Fable 模型,我发现实际派发的时候很多都是 opus

同意,就按语义面收窄,立卡并通知 spec 席

The approved shape (recommended by this seat, accepted as-is): fable follows the criterion, not the domain:spec label.

The clause to add (Model tiering section)

  • Mandatory claude-fable-5 for any card whose change alters the contract's accept/reject behavior or grows its public surface — the domain:spec semantic lane (schema shapes, contracts/**, strictness, the behavior half of retirements). Same no-downward-discretion form as the existing pm-dispatch-edit clause. Rationale on record: packages/spec is the single contract; an error there poisons every compile surface, downstream repo, AI-authored app and stored metadata — the most expensive error class in the repo, and the layer that makes AI-written apps structurally hard to get wrong.
  • Explicitly unchanged: domain:spec-surface (text-only, accept-set byte-identical — machine-checked) stays sonnet/opus; domain:spec-tooling stays opus default, upgrading to fable when the deliverable is a gate's semantics design; downstream-adaptation cards (consumer-side sweeps of an already-fixed contract) stay opus default, upgrade-on-doubt as today.
  • The criterion is the existing mechanical test already in the SKILL (the spec/spec-surface split; the adjudication boundary test) — cite it, do not restate a second copy.

Landing notes

Activity

  1. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    Batch conversion — this card becomes the carrier of the closing consolidated dispatch (maintainer prompt in seat chat, 2026-08-12, verbatim: 「剩余的 skills 是否应该一个批次处理完。」; sequencing is the PM's call).

    Composition: ONE os-dev subagent (mode:subagent per the #7944 revision, model: claude-fable-5 mandatory), ONE PR — Fixes #7945, Fixes #7947 — landing both ruled S-grade SKILL.md deltas (this card's spec-semantic fable clause + #7947's issue-typing/Bug-tiebreaker) with a per-member checklist and ratchet-0 in-section offsets.

    Dispatch trigger: PR #7946 (the in-flight batch PR₁) reaching MERGED — both deltas edit the sections it rewrites. Blocked-by: #7944 stands until then; #7947 is hereby a member, not an independent candidate.


    Generated by Claude Code

  2. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    Batch composition update (maintainer approval 2026-08-12, verbatim: 「同意」): #7950 (retire the mandatory shift-end SKILL-suggestion list; three report classes, default zero) joins as the third member. The closing batch is now: one subagent (model: claude-fable-5), ONE PR — Fixes #7945, Fixes #7947, Fixes #7950 — per-member checklist, ratchet-0 offsets (note #7950 is net-negative). Dispatch trigger unchanged: PR #7946 reaching MERGED.


    Generated by Claude Code

  3. self-assigned this
    on Aug 12, 2026
  4. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    Claim: PM loop round 5 (skills seat) — closing consolidated batch carrier
    Session: session_012Gg6rMAti8ZaueWb6BRsDn
    Branch: claude/issue-7945-pm-skill-closing-batch (one PR: Fixes #7945 / #7947 / #7950)
    Worktree: dedicated worktree inside the PM session's container (subagent backend, per the now-landed revision)
    Domain: domain:skills
    File surface: .claude/skills/pm-dispatch/SKILL.md (Model tiering + triage duty + selection sections) + references/seat-post-protocol.md (seat-exit checklist). Stop on breach; explain in the report.
    Container & model: S docs batch, mode:subagent, model: claude-fable-5 (mandatory clause — no downward discretion)
    Serial constraints cleared: predecessor PR #7946 MERGED (merge commit 6ff179d verified on origin/main; SKILL.md = 686 lines, backend revision live); PR #7948 next in the merge queue touches AGENTS.md/CLAUDE.md only — no file overlap with this batch; zero other open PRs touch the pm-dispatch tree (checked at claim time). Members #7947 / #7950 absorbed per the composition comments; #7945's Blocked-by: #7944 cleared by the merge.
    Landing: ADR-class — draft PR, human merge.


    Generated by Claude Code

  5. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    Dispatched (PM loop round 5, skills seat): os-dev subagent, model: claude-fable-5, launched 2026-08-12 ~08:4xZ. One draft PR expected (Fixes #7945 / #7947 / #7950), branch claude/issue-7945-pm-skill-closing-batch off 6ff179d+. All three deltas fully ruled; #7950's retirement funds the line budget at ratchet headroom 0. Collection: os-dev-report comment here + direct return channel; ADR-class terminal (human merge).


    Generated by Claude Code

  6. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor
    {
      "issue": 7945,
      "status": "done",
      "branch": "claude/issue-7945-pm-skill-closing-batch",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/7971",
      "premise_still_valid": true,
      "summary": "Closing consolidated batch landed as ONE draft PR (Fixes #7945 / #7947 / #7950, each on its own line). #7945: Model tiering now carries mandatory clause 2 - claude-fable-5 for any card altering the contract's accept/reject behavior or growing its public surface (domain:spec semantic lane), citing the existing adjudication boundary test and the one-package-three-seats split with no second copy; spec-surface/spec-tooling/downstream-adaptation tiers explicitly unchanged. #7947: triage seat is the single authoritative producer of native issue types Bug/Feature/Task with the mechanical criterion, Bug-without-repro stays out of pm:queue, no mass backfill, three named consumers; Bug-first tiebreaker (not a ladder) added to executor selection within ordinary queue items. #7950: exit-checklist item 7 retired in references/seat-post-protocol.md, shift-end reporting narrowed to three classes default zero, lessons-learned prose inadmissible, plus the corresponding principle line in SKILL.md's seat-post section. Ratchet held at exactly 686/686 with all offsets inside touched sections (compressed prose whose detail lives verbatim in references/ or the os-dev frontmatter comment - each verified before cutting); ceiling untouched. Branch merged past PR #7948's landing (no file overlap); gates re-run green on the merge result. ADR-class: draft PR left for human merge - no queue, no auto-merge. skip-changeset applied via read-then-union (labels read back: size/m, skip-changeset).",
      "tests": "All five named gates run locally under the shared verify lock, each with --self-test first: check:pm-skill-ratchet GREEN 'SKILL.md is 686 lines (ceiling 686; headroom 0)' (self-test 5/5); check:pm-skill-id-lint GREEN '9 file(s) clean (pattern /#[0-9]{3,}/g)' (self-test 9/9); check:skill-frame-sync GREEN '4 copies of the decision frame are structurally isomorphic across 3 files' (self-test 12/12); check:doc-authoring GREEN '375 files clean - no bare metadata literals'; check:nul-bytes GREEN 'scanned 7283 text file(s) ... no raw ASCII control bytes' plus targeted control-char grep of both edited files: clean. CI on the PR: in_progress at report time (honest reading; PM owns convergence).",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  7. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    Review: ACCEPT — PR #7971 (closing batch), ADR-class terminal: awaiting a human merge

    Verified against the branch and GitHub, not the report:

    • Shape: draft ✓, base main (post-docs(agents): principles-only AGENTS.md rewrite — lessons distilled in place, no issue-ID citations #7948) ✓, first lines Fixes #7945 / #7947 / #7950 each on its own line ✓; 2 files (SKILL.md + references/seat-post-protocol.md), ±86/82.
    • Measured on the branch: SKILL.md exactly 686 lines (ceiling untouched), #[0-9]{3,} = 0. All three deltas located: spec-semantic fable clause (mandatory clause ②, citing the existing boundary test — no second copy), triage issue-typing paragraph (single producer, mechanical criterion, Bug-repro discipline, no-backfill, three named consumers) + Bug-first tiebreaker in selection, and the exit-checklist item-⑦ retirement with the three-classes-default-zero rule in the reference file plus its principle line in SKILL.md.
    • Ratchet accounting reviewed: offsets are compressions of prose whose detail lives verbatim in references/ or the os-dev frontmatter (the PR body lists each cut with its verified destination); dropped-with-rationale list is empty — nothing from the three cards was dropped, and the ruling quotes are carried verbatim.
    • CI: Check Changeset success (skip-changeset survived, read back); ESLint + TypeScript in_progress at review time — a red triggers a patch round before merge; this seat is subscribed.
    • Subagent-backend second run, for the record: two batches today, zero containers, zero archive debt.

    Terminal state: the PR stays visibly hanging — the maintainer merges by hand. On landing: #7945 / #7947 / #7950 close via Fixes; the skills lane's dispatch queue reaches zero.


    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions