Skip to content

pm-dispatch: the domain table splits the governed-surface mechanism across two lanes — anchor instruction-architecture and governance-enforcement files to domain:skills #9528

Description

@os-zhuang

Blocked-by: #9495

Maintainer ruling (2026-08-18, PM chat, skills-seat session session_01Rn7aaamsR99FXRqLcpL99q), verbatim: 「skills 相关的应该都归你管,为什么派给了 devx」 — stated after a measured collision: the devx lane extended the ADR gate to skills/** (#9511, landed) in the same hours the skills lane retired that gate under the #9495 ruling (PR #9523) — opposite directions on one mechanism, hours apart, because the domain table anchors by file location and the governance mechanism's files sit in devx territory (scripts/ 门禁类, .github/**) while the governed surfaces and protocol text sit in skills territory. AGENTS.md has no owner in the table at all — the skills seat claims it in its seat post, but triage routes from the table, which is how #9403 landed in devx.

Change (the 域车道 table in .claude/skills/pm-dispatch/SKILL.md)

Add to the domain:skills row (and state the boundary in the devx row where needed):

  • AGENTS.md, CLAUDE.md — instruction-architecture files (all agent-facing constitution text);
  • .github/CODEOWNERS — the governance-routing half of the governed surface;
  • governance-enforcement files for the governed surface: the post-merge audit (scripts/pm/check-governed-merges.mjs, already under scripts/pm/**) and any future gate/audit whose subject is the governed surface itself.

Boundary kept honest: domain:devx retains genuine dev-tooling gates (lint machinery, doc gates, scripts/ general 门禁类) — the divider is the gate's SUBJECT: a gate that governs agent-instruction surfaces routes to skills; a gate that governs code/docs quality routes to devx.

Serial constraint: the table lives in SKILL.md, which PR #9523 (the #9495 retirement) currently edits — hard same-file serial, dispatch after #9523 merges. Fable (clause ① path mandate); ADR-class human merge. In-flight devx cards (#9403, #9519) finish where they are per the no-mid-flight-transfer rule; cross-lane coordination notes already on #9513/#9403.

Activity

  1. added theissue type on Aug 18, 2026
  2. os-support-ai commented on Aug 18, 2026

    @os-support-ai
    Collaborator

    Claim: PM loop round 1 (skills seat, post-takeover)
    Session: session_01WswfK2yNYT9hNnMH6TzAwL
    Branch: claude/issue-9528-domain-table-skills-anchor
    Worktree: objectstack-issue-9528
    Domain: domain:skills
    File surface: .claude/skills/pm-dispatch/SKILL.md (domain-lane table rows + guards-index only; ratchet 682/682 headroom 0 — additions paid by cuts inside the same file) (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: claude-fable-5 — dispatch-gates --tier output this round: "MANDATORY: claude-fable-5 … .claude/skills/pm-dispatch/SKILL.md ⇢ '.claude/skills/pm-dispatch/**' — clause ① of the model-tiering ruling"
    Clause-②: no — internal instruction text; changes no contract accept/reject behaviour, widens no public surface
    Serial constraints cleared: predecessor same-file PR #9523 (SKILL.md, #9495 retirement) MERGED 2026-08-18 07:53Z, so the hard same-file serial this card's body names is discharged; zero open PRs touch .claude/skills/** (open-PR list read this round); read-coupled sibling: devx PR #9527 (#9403, AGENTS.md PD#14 rewrite) in flight — file surfaces disjoint (AGENTS.md vs SKILL.md), no pin in this card asserts #9527's behaviour; merge-order reconciliation already recorded on #9403.

    Premise re-verified against origin/main @ 53fc099 (post-#9523): the domain:skills table row still carries only the two skill roots; AGENTS.md still has no owner row in the table; scripts/(门禁类) still sits unqualified in the devx row; check-governed-merges.mjs exists under scripts/pm/**. Blocked-by #9495 closed via merged PR #9523.

    Governed surface ⇒ deliverable is a DRAFT PR, human merge only.


    Generated by Claude Code

  3. os-support-ai commented on Aug 18, 2026

    @os-support-ai
    Collaborator
    {
      "issue": 9528,
      "status": "done",
      "branch": "claude/issue-9528-domain-table-skills-anchor",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/9536",
      "premise_still_valid": true,
      "summary": "Amended the domain-lane table in .claude/skills/pm-dispatch/SKILL.md per the 2026-08-18 maintainer ruling: the domain:skills row now carries root AGENTS.md + root CLAUDE.md (instruction-architecture files), .github/CODEOWNERS (governance-routing half), and gates/audits whose SUBJECT is the governed surface itself (currently scripts/pm/check-governed-merges.mjs, referencing the existing guards-index row); the domain:devx row states the SUBJECT divider inline in its scripts/(gate-class) entry. Both edits extend existing single-line table rows in place: diff is 2 lines changed / 0 added, so the 682/682 ratchet is held with no payment cut owed. Draft PR on the governed surface — human merge only; skip-changeset applied via read-modify-write and read back (labels: size/xs, skip-changeset).",
      "tests": "Base origin/main @ 02ebb6f (re-fetched; moved from 53fc099 since claim — premises re-verified on 02ebb6f before editing). Gate union re-derived post-commit via node scripts/pm/dispatch-gates.mjs (no paths; change set 1 file vs merge base 02ebb6f5b) = exactly the six dispatched families, none added. All re-run at final head 53b34c8 on a clean tree, all exit 0: check:pm-skill-ratchet (SKILL.md 682/682 ceiling, headroom 0; references files at their own ceilings, untouched) · check:pm-skill-id-lint (9 files clean) · check:pm-governed-merges (--self-test 25 assertions) · check:skill-frame-sync (4 copies isomorphic) · check:doc-authoring (377 files clean) · lint check:doc-formula-expressions (after building the lint dependency closure — first run failed on missing @objectstack/formula dist in the fresh worktree, not on the diff). scripts/check-nul-bytes.mjs exit 0. files_changed: .claude/skills/pm-dispatch/SKILL.md only (+2/-2). Deviations: none; CI convergence left to PM per standing terms.",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code


    Generated by Claude Code

  4. os-support-ai commented on Aug 18, 2026

    @os-support-ai
    Collaborator

    ACCEPT — PR #9536 (reviewer of record: skills seat, session session_01WswfK2yNYT9hNnMH6TzAwL). Governed surface ⇒ terminal three-step applies: this conclusion lands here, the PR stays draft awaiting a human merge (⛔ no seat flips it ready / enqueues / arms auto-merge), and the round report lists it under "awaiting a human merge".

    Checklist conclusions, verified against GitHub / a local run at the PR head 53b34c8 — not the report's self-description:

    • Shape: draft, base main, first line Fixes #9528. Changed files = exactly .claude/skills/pm-dispatch/SKILL.md (+2/−2, two table rows extended in place) — matches the claimed file surface; skip-changeset present.
    • Content vs the ruling: the domain:skills row now anchors root AGENTS.md + root CLAUDE.md, .github/CODEOWNERS, and SUBJECT-is-the-governed-surface gates (naming check-governed-merges.mjs by pointer to the guards index, no duplication; future same-subject clause present); the domain:devx row states the SUBJECT divider inline while keeping its original content verbatim. Maintainer quote carried untranslated. All four anchors the card required are present.
    • Ratchet: 682/682 held with a genuinely zero-line diff — no payment owed, no re-wrap used (verified from the patch: pure in-row extension).
    • Local gate re-run at 53b34c8 (my own run): check-skill-line-ratchet exit 0 · check-skill-id-lint 9 files clean · check-skill-frame-sync 4 copies isomorphic · check-governed-merges --self-test 25 assertions. Report's local-gate head matches the PR's current head.
    • Deviation: none.

    @maintainer: this PR is ready for your sitting — merging it makes the domain-table anchoring live for the triage seat's next routing round.


    Generated by Claude Code

  5. os-support-ai commented on Aug 18, 2026

    @os-support-ai
    Collaborator

    Close-out accounting (skills seat, session session_01WswfK2yNYT9hNnMH6TzAwL): PR #9536 MERGED 2026-08-18 09:52Z via the maintainer's own enqueue (merge-is-review sitting), landed as da808c6. Card auto-closed via Fixes (verified: closed_by this PR only). Removing the stale pm:dispatched label (read-modify-write, read back). The domain-table anchoring is live: instruction-architecture files, CODEOWNERS and governed-surface-subject gates now route to domain:skills; the devx row carries the SUBJECT divider.


    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

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions