Skills optimization flight — skills/objectstack-pm-dispatch: RESTRUCTURE (≈ −4,255 tok, −29%) — monorepo-only lore inert in a customer project, the report JSON printed twice, and four drifts from the internal dev contract (report double-channel, premise_still_valid, the stash ban, the Session: line) #14300

Description

@os-litant

Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-pm-dispatch/findings.md).

⚠️Fence: this is the PUBLISHED process skill. .claude/skills/pm-dispatch/** and .claude/agents/os-dev.md are a separate corpus under audit #13597 — read them only as the comparison oracle, ⛔ never edit them in this flight, ⛔ never in the same PR.

Audit summary

One file, SKILL.md, 1,086 lines, 14,549 tokens, headroom 0 — 7.7% of the bundle, the 2nd-largest published SKILL.md, 1.75× the other process skill. Teaches no ObjectStack surface (0 TypeScript fences). Customer decision points covered: 5 (label state machine; safe claim; dispatch with a binding template; review-against-GitHub and land; escalate vs decide) ≈ 2,900 tokens per decision. Customer-inert or duplicated text measured at 4,445 tokens (30.6%) before any restructure. Verdict RESTRUCTURE: zero progressive disclosure, zero evals, two blocks duplicated inside the file (the report JSON at 869-882 / 894-908; the sanitizer trap at 346-365 / 884-888), a 2,376-token verbatim paste-block paid in every session, and a second job (upstream reporting) restating objectstack-platform :59-70.

Top findings

idspanproposaldelta
PMD-B-01SKILL.md:729-891, 916-986MOVE-TO rules/dev-template.md (DEFERRED, #14296 items 1+4)−3,258 from entry
PMD-C-01SKILL.md:916-986 vs objectstack-platform :59-70DELETE the upstream-reporting job; keep ≤250-token residue pointing at objectstack-platform−882
PMD-E-05SKILL.md:987-1033REWRITE-AS-CONSTRUCT — shard registry conclusion is one line for a single-repo project−580
PMD-E-02SKILL.md:416-452RETIRE-SURFACE — "N independent implementations" is the platform's compiler problem, not an app's−565
PMD-E-03SKILL.md:591-618DELETE two non-escalation bullets (ADR-0049 "arm"/governance shapes)−508
PMD-D-01SKILL.md:192-217REWRITE-AS-CONSTRUCT — sweep rationale, cross-seat producers, anecdote−380
PMD-D-02SKILL.md:507-528REWRITE-AS-CONSTRUCT — the 8-card baseline printed and disclaimed−290
PMD-D-04SKILL.md:654-706 vs 826-857REWRITE-AS-CONSTRUCT — four-axis frame stated twice−450 (MED)
PMD-E-04SKILL.md:769-786REWRITE-AS-CONSTRUCT — design spec of a lock script the customer does not have−250
PMD-B-03SKILL.md:346-357DELETE sanitizer specimens; rules at 359-365 carry the decision−200
PMD-B-02SKILL.md:894-908DELETE — the same report JSON printed twice−115
PMD-D-03SKILL.md:483-495DELETE check-in anecdote; keep the two rules at 496-506−170 (MED)
PMD-A-01SKILL.md:10-14DELETE the "report a platform bug" trigger from the description−30
PMD-G-01SKILL.md:557-559 vs 1051DELETE — "the PM's own tooling PRs" contradicts "The PM writes no files"−25

Drift vs the internal contract (sync in this flight, paid by the deletions above)

  • PMD-F-01:455-457 "a lossless channel" — the internal contract requires the report TWICE, GitHub first, in both modes, first line the literal plaintext os-dev-report (⛔ not an HTML comment), because a container restart killed three devs mid-final-message. Also a falsehood: :456-457 is contradicted 17 lines later at :474-475.
  • PMD-F-02 the template never asks the dev to re-check the issue's premises and the report has no premise_still_valid; internally a no-PR report with premise_still_valid: false is a first-class deliverable.
  • PMD-F-03grep -c stash = 0, yet the template ships the exact topology the trap lives in (worktree-first + "parallel agents share ONE container"); both repos carry the ban at Prime-Directive level.
  • PMD-F-04/F-05 the claim shape omits the Session: line (branch-only identity under-determines in cloud mode); :367-369 asserts devs push early while the template pushes fourth — the reclaim predicate can fire against a live agent. Make the template push the empty branch first.
  • Falsehood :1036-1039 "the template enforces … a container-wide verification lock" — the template delegates the mechanism to the host project; should read requires.

Flight scope

IMPLEMENT (same-file, shrink-only): all rows above except PMD-B-01 and PMD-H-01; the four drift syncs (paid by PMD-E-02 / PMD-E-04 / PMD-B-02 as the auditor sized them); PMD-C-01 as delete + ≤250-token residue pointing at objectstack-platform SKILL.md:59-70; the description trigger edit (regenerate skills/README.md).

DEFER (pending #14296 items 1 and 4): PMD-B-01 (split the template into rules/dev-template.md), PMD-H-01 (evals).

Flight constraints (binding)

  • ONE draft PR, first line Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
  • Token ratchet: SKILL.md may not grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files; ⛔ do not touch the ratchet script.
  • ⛔ Never edit another package's files; frontmatter edits ⇒ regenerate skills/README.md (pnpm --filter @objectstack/spec gen:skill-docs).
  • Gates: node scripts/check-skills-token-ratchet.mjs, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
  • PR body: per-item 落点 | before | after list keyed by finding id; token delta; Clause-②: no (no contract surface).

Refs: #14292 · #14296 · #13597 (the internal corpus, separate audit).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    Skills optimization flight — skills/objectstack-pm-dispatch: RESTRUCTURE (≈ −4,255 tok, −29%) — monorepo-only lore inert in a customer project, the report JSON printed twice, and four drifts from the internal dev contract (report double-channel, premise_still_valid, the stash ban, the Session: line) #14300

    Description

    @os-litant

    Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-pm-dispatch/findings.md).

    ⚠️Fence: this is the PUBLISHED process skill. .claude/skills/pm-dispatch/** and .claude/agents/os-dev.md are a separate corpus under audit #13597 — read them only as the comparison oracle, ⛔ never edit them in this flight, ⛔ never in the same PR.

    Audit summary

    One file, SKILL.md, 1,086 lines, 14,549 tokens, headroom 0 — 7.7% of the bundle, the 2nd-largest published SKILL.md, 1.75× the other process skill. Teaches no ObjectStack surface (0 TypeScript fences). Customer decision points covered: 5 (label state machine; safe claim; dispatch with a binding template; review-against-GitHub and land; escalate vs decide) ≈ 2,900 tokens per decision. Customer-inert or duplicated text measured at 4,445 tokens (30.6%) before any restructure. Verdict RESTRUCTURE: zero progressive disclosure, zero evals, two blocks duplicated inside the file (the report JSON at 869-882 / 894-908; the sanitizer trap at 346-365 / 884-888), a 2,376-token verbatim paste-block paid in every session, and a second job (upstream reporting) restating objectstack-platform :59-70.

    Top findings

    idspanproposaldelta
    PMD-B-01SKILL.md:729-891, 916-986MOVE-TO rules/dev-template.md (DEFERRED, #14296 items 1+4)−3,258 from entry
    PMD-C-01SKILL.md:916-986 vs objectstack-platform :59-70DELETE the upstream-reporting job; keep ≤250-token residue pointing at objectstack-platform−882
    PMD-E-05SKILL.md:987-1033REWRITE-AS-CONSTRUCT — shard registry conclusion is one line for a single-repo project−580
    PMD-E-02SKILL.md:416-452RETIRE-SURFACE — "N independent implementations" is the platform's compiler problem, not an app's−565
    PMD-E-03SKILL.md:591-618DELETE two non-escalation bullets (ADR-0049 "arm"/governance shapes)−508
    PMD-D-01SKILL.md:192-217REWRITE-AS-CONSTRUCT — sweep rationale, cross-seat producers, anecdote−380
    PMD-D-02SKILL.md:507-528REWRITE-AS-CONSTRUCT — the 8-card baseline printed and disclaimed−290
    PMD-D-04SKILL.md:654-706 vs 826-857REWRITE-AS-CONSTRUCT — four-axis frame stated twice−450 (MED)
    PMD-E-04SKILL.md:769-786REWRITE-AS-CONSTRUCT — design spec of a lock script the customer does not have−250
    PMD-B-03SKILL.md:346-357DELETE sanitizer specimens; rules at 359-365 carry the decision−200
    PMD-B-02SKILL.md:894-908DELETE — the same report JSON printed twice−115
    PMD-D-03SKILL.md:483-495DELETE check-in anecdote; keep the two rules at 496-506−170 (MED)
    PMD-A-01SKILL.md:10-14DELETE the "report a platform bug" trigger from the description−30
    PMD-G-01SKILL.md:557-559 vs 1051DELETE — "the PM's own tooling PRs" contradicts "The PM writes no files"−25

    Drift vs the internal contract (sync in this flight, paid by the deletions above)

    • PMD-F-01:455-457 "a lossless channel" — the internal contract requires the report TWICE, GitHub first, in both modes, first line the literal plaintext os-dev-report (⛔ not an HTML comment), because a container restart killed three devs mid-final-message. Also a falsehood: :456-457 is contradicted 17 lines later at :474-475.
    • PMD-F-02 the template never asks the dev to re-check the issue's premises and the report has no premise_still_valid; internally a no-PR report with premise_still_valid: false is a first-class deliverable.
    • PMD-F-03grep -c stash = 0, yet the template ships the exact topology the trap lives in (worktree-first + "parallel agents share ONE container"); both repos carry the ban at Prime-Directive level.
    • PMD-F-04/F-05 the claim shape omits the Session: line (branch-only identity under-determines in cloud mode); :367-369 asserts devs push early while the template pushes fourth — the reclaim predicate can fire against a live agent. Make the template push the empty branch first.
    • Falsehood :1036-1039 "the template enforces … a container-wide verification lock" — the template delegates the mechanism to the host project; should read requires.

    Flight scope

    IMPLEMENT (same-file, shrink-only): all rows above except PMD-B-01 and PMD-H-01; the four drift syncs (paid by PMD-E-02 / PMD-E-04 / PMD-B-02 as the auditor sized them); PMD-C-01 as delete + ≤250-token residue pointing at objectstack-platform SKILL.md:59-70; the description trigger edit (regenerate skills/README.md).

    DEFER (pending #14296 items 1 and 4): PMD-B-01 (split the template into rules/dev-template.md), PMD-H-01 (evals).

    Flight constraints (binding)

    • ONE draft PR, first line Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
    • Token ratchet: SKILL.md may not grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files; ⛔ do not touch the ratchet script.
    • ⛔ Never edit another package's files; frontmatter edits ⇒ regenerate skills/README.md (pnpm --filter @objectstack/spec gen:skill-docs).
    • Gates: node scripts/check-skills-token-ratchet.mjs, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
    • PR body: per-item 落点 | before | after list keyed by finding id; token delta; Clause-②: no (no contract surface).

    Refs: #14292 · #14296 · #13597 (the internal corpus, separate audit).

    Activity

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    Labels

    documentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      Skills optimization flight — skills/objectstack-pm-dispatch: RESTRUCTURE (≈ −4,255 tok, −29%) — monorepo-only lore inert in a customer project, the report JSON printed twice, and four drifts from the internal dev contract (report double-channel, premise_still_valid, the stash ban, the Session: line) #14300

      Description

      @os-litant

      Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-pm-dispatch/findings.md).

      ⚠️Fence: this is the PUBLISHED process skill. .claude/skills/pm-dispatch/** and .claude/agents/os-dev.md are a separate corpus under audit #13597 — read them only as the comparison oracle, ⛔ never edit them in this flight, ⛔ never in the same PR.

      Audit summary

      One file, SKILL.md, 1,086 lines, 14,549 tokens, headroom 0 — 7.7% of the bundle, the 2nd-largest published SKILL.md, 1.75× the other process skill. Teaches no ObjectStack surface (0 TypeScript fences). Customer decision points covered: 5 (label state machine; safe claim; dispatch with a binding template; review-against-GitHub and land; escalate vs decide) ≈ 2,900 tokens per decision. Customer-inert or duplicated text measured at 4,445 tokens (30.6%) before any restructure. Verdict RESTRUCTURE: zero progressive disclosure, zero evals, two blocks duplicated inside the file (the report JSON at 869-882 / 894-908; the sanitizer trap at 346-365 / 884-888), a 2,376-token verbatim paste-block paid in every session, and a second job (upstream reporting) restating objectstack-platform :59-70.

      Top findings

      idspanproposaldelta
      PMD-B-01SKILL.md:729-891, 916-986MOVE-TO rules/dev-template.md (DEFERRED, #14296 items 1+4)−3,258 from entry
      PMD-C-01SKILL.md:916-986 vs objectstack-platform :59-70DELETE the upstream-reporting job; keep ≤250-token residue pointing at objectstack-platform−882
      PMD-E-05SKILL.md:987-1033REWRITE-AS-CONSTRUCT — shard registry conclusion is one line for a single-repo project−580
      PMD-E-02SKILL.md:416-452RETIRE-SURFACE — "N independent implementations" is the platform's compiler problem, not an app's−565
      PMD-E-03SKILL.md:591-618DELETE two non-escalation bullets (ADR-0049 "arm"/governance shapes)−508
      PMD-D-01SKILL.md:192-217REWRITE-AS-CONSTRUCT — sweep rationale, cross-seat producers, anecdote−380
      PMD-D-02SKILL.md:507-528REWRITE-AS-CONSTRUCT — the 8-card baseline printed and disclaimed−290
      PMD-D-04SKILL.md:654-706 vs 826-857REWRITE-AS-CONSTRUCT — four-axis frame stated twice−450 (MED)
      PMD-E-04SKILL.md:769-786REWRITE-AS-CONSTRUCT — design spec of a lock script the customer does not have−250
      PMD-B-03SKILL.md:346-357DELETE sanitizer specimens; rules at 359-365 carry the decision−200
      PMD-B-02SKILL.md:894-908DELETE — the same report JSON printed twice−115
      PMD-D-03SKILL.md:483-495DELETE check-in anecdote; keep the two rules at 496-506−170 (MED)
      PMD-A-01SKILL.md:10-14DELETE the "report a platform bug" trigger from the description−30
      PMD-G-01SKILL.md:557-559 vs 1051DELETE — "the PM's own tooling PRs" contradicts "The PM writes no files"−25

      Drift vs the internal contract (sync in this flight, paid by the deletions above)

      • PMD-F-01:455-457 "a lossless channel" — the internal contract requires the report TWICE, GitHub first, in both modes, first line the literal plaintext os-dev-report (⛔ not an HTML comment), because a container restart killed three devs mid-final-message. Also a falsehood: :456-457 is contradicted 17 lines later at :474-475.
      • PMD-F-02 the template never asks the dev to re-check the issue's premises and the report has no premise_still_valid; internally a no-PR report with premise_still_valid: false is a first-class deliverable.
      • PMD-F-03grep -c stash = 0, yet the template ships the exact topology the trap lives in (worktree-first + "parallel agents share ONE container"); both repos carry the ban at Prime-Directive level.
      • PMD-F-04/F-05 the claim shape omits the Session: line (branch-only identity under-determines in cloud mode); :367-369 asserts devs push early while the template pushes fourth — the reclaim predicate can fire against a live agent. Make the template push the empty branch first.
      • Falsehood :1036-1039 "the template enforces … a container-wide verification lock" — the template delegates the mechanism to the host project; should read requires.

      Flight scope

      IMPLEMENT (same-file, shrink-only): all rows above except PMD-B-01 and PMD-H-01; the four drift syncs (paid by PMD-E-02 / PMD-E-04 / PMD-B-02 as the auditor sized them); PMD-C-01 as delete + ≤250-token residue pointing at objectstack-platform SKILL.md:59-70; the description trigger edit (regenerate skills/README.md).

      DEFER (pending #14296 items 1 and 4): PMD-B-01 (split the template into rules/dev-template.md), PMD-H-01 (evals).

      Flight constraints (binding)

      • ONE draft PR, first line Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
      • Token ratchet: SKILL.md may not grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files; ⛔ do not touch the ratchet script.
      • ⛔ Never edit another package's files; frontmatter edits ⇒ regenerate skills/README.md (pnpm --filter @objectstack/spec gen:skill-docs).
      • Gates: node scripts/check-skills-token-ratchet.mjs, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
      • PR body: per-item 落点 | before | after list keyed by finding id; token delta; Clause-②: no (no contract surface).

      Refs: #14292 · #14296 · #13597 (the internal corpus, separate audit).

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      Labels

      documentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

      Type

      No type

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        Skills optimization flight — skills/objectstack-pm-dispatch: RESTRUCTURE (≈ −4,255 tok, −29%) — monorepo-only lore inert in a customer project, the report JSON printed twice, and four drifts from the internal dev contract (report double-channel, premise_still_valid, the stash ban, the Session: line) #14300

        Description

        @os-litant

        Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-pm-dispatch/findings.md).

        ⚠️Fence: this is the PUBLISHED process skill. .claude/skills/pm-dispatch/** and .claude/agents/os-dev.md are a separate corpus under audit #13597 — read them only as the comparison oracle, ⛔ never edit them in this flight, ⛔ never in the same PR.

        Audit summary

        One file, SKILL.md, 1,086 lines, 14,549 tokens, headroom 0 — 7.7% of the bundle, the 2nd-largest published SKILL.md, 1.75× the other process skill. Teaches no ObjectStack surface (0 TypeScript fences). Customer decision points covered: 5 (label state machine; safe claim; dispatch with a binding template; review-against-GitHub and land; escalate vs decide) ≈ 2,900 tokens per decision. Customer-inert or duplicated text measured at 4,445 tokens (30.6%) before any restructure. Verdict RESTRUCTURE: zero progressive disclosure, zero evals, two blocks duplicated inside the file (the report JSON at 869-882 / 894-908; the sanitizer trap at 346-365 / 884-888), a 2,376-token verbatim paste-block paid in every session, and a second job (upstream reporting) restating objectstack-platform :59-70.

        Top findings

        idspanproposaldelta
        PMD-B-01SKILL.md:729-891, 916-986MOVE-TO rules/dev-template.md (DEFERRED, #14296 items 1+4)−3,258 from entry
        PMD-C-01SKILL.md:916-986 vs objectstack-platform :59-70DELETE the upstream-reporting job; keep ≤250-token residue pointing at objectstack-platform−882
        PMD-E-05SKILL.md:987-1033REWRITE-AS-CONSTRUCT — shard registry conclusion is one line for a single-repo project−580
        PMD-E-02SKILL.md:416-452RETIRE-SURFACE — "N independent implementations" is the platform's compiler problem, not an app's−565
        PMD-E-03SKILL.md:591-618DELETE two non-escalation bullets (ADR-0049 "arm"/governance shapes)−508
        PMD-D-01SKILL.md:192-217REWRITE-AS-CONSTRUCT — sweep rationale, cross-seat producers, anecdote−380
        PMD-D-02SKILL.md:507-528REWRITE-AS-CONSTRUCT — the 8-card baseline printed and disclaimed−290
        PMD-D-04SKILL.md:654-706 vs 826-857REWRITE-AS-CONSTRUCT — four-axis frame stated twice−450 (MED)
        PMD-E-04SKILL.md:769-786REWRITE-AS-CONSTRUCT — design spec of a lock script the customer does not have−250
        PMD-B-03SKILL.md:346-357DELETE sanitizer specimens; rules at 359-365 carry the decision−200
        PMD-B-02SKILL.md:894-908DELETE — the same report JSON printed twice−115
        PMD-D-03SKILL.md:483-495DELETE check-in anecdote; keep the two rules at 496-506−170 (MED)
        PMD-A-01SKILL.md:10-14DELETE the "report a platform bug" trigger from the description−30
        PMD-G-01SKILL.md:557-559 vs 1051DELETE — "the PM's own tooling PRs" contradicts "The PM writes no files"−25

        Drift vs the internal contract (sync in this flight, paid by the deletions above)

        • PMD-F-01:455-457 "a lossless channel" — the internal contract requires the report TWICE, GitHub first, in both modes, first line the literal plaintext os-dev-report (⛔ not an HTML comment), because a container restart killed three devs mid-final-message. Also a falsehood: :456-457 is contradicted 17 lines later at :474-475.
        • PMD-F-02 the template never asks the dev to re-check the issue's premises and the report has no premise_still_valid; internally a no-PR report with premise_still_valid: false is a first-class deliverable.
        • PMD-F-03grep -c stash = 0, yet the template ships the exact topology the trap lives in (worktree-first + "parallel agents share ONE container"); both repos carry the ban at Prime-Directive level.
        • PMD-F-04/F-05 the claim shape omits the Session: line (branch-only identity under-determines in cloud mode); :367-369 asserts devs push early while the template pushes fourth — the reclaim predicate can fire against a live agent. Make the template push the empty branch first.
        • Falsehood :1036-1039 "the template enforces … a container-wide verification lock" — the template delegates the mechanism to the host project; should read requires.

        Flight scope

        IMPLEMENT (same-file, shrink-only): all rows above except PMD-B-01 and PMD-H-01; the four drift syncs (paid by PMD-E-02 / PMD-E-04 / PMD-B-02 as the auditor sized them); PMD-C-01 as delete + ≤250-token residue pointing at objectstack-platform SKILL.md:59-70; the description trigger edit (regenerate skills/README.md).

        DEFER (pending #14296 items 1 and 4): PMD-B-01 (split the template into rules/dev-template.md), PMD-H-01 (evals).

        Flight constraints (binding)

        • ONE draft PR, first line Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
        • Token ratchet: SKILL.md may not grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files; ⛔ do not touch the ratchet script.
        • ⛔ Never edit another package's files; frontmatter edits ⇒ regenerate skills/README.md (pnpm --filter @objectstack/spec gen:skill-docs).
        • Gates: node scripts/check-skills-token-ratchet.mjs, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
        • PR body: per-item 落点 | before | after list keyed by finding id; token delta; Clause-②: no (no contract surface).

        Refs: #14292 · #14296 · #13597 (the internal corpus, separate audit).

        Activity

        Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

        Metadata

        Metadata

        Assignees

        Labels

        documentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          Skills optimization flight — skills/objectstack-pm-dispatch: RESTRUCTURE (≈ −4,255 tok, −29%) — monorepo-only lore inert in a customer project, the report JSON printed twice, and four drifts from the internal dev contract (report double-channel, premise_still_valid, the stash ban, the Session: line) #14300

          Description

          @os-litant

          Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-pm-dispatch/findings.md).

          ⚠️Fence: this is the PUBLISHED process skill. .claude/skills/pm-dispatch/** and .claude/agents/os-dev.md are a separate corpus under audit #13597 — read them only as the comparison oracle, ⛔ never edit them in this flight, ⛔ never in the same PR.

          Audit summary

          One file, SKILL.md, 1,086 lines, 14,549 tokens, headroom 0 — 7.7% of the bundle, the 2nd-largest published SKILL.md, 1.75× the other process skill. Teaches no ObjectStack surface (0 TypeScript fences). Customer decision points covered: 5 (label state machine; safe claim; dispatch with a binding template; review-against-GitHub and land; escalate vs decide) ≈ 2,900 tokens per decision. Customer-inert or duplicated text measured at 4,445 tokens (30.6%) before any restructure. Verdict RESTRUCTURE: zero progressive disclosure, zero evals, two blocks duplicated inside the file (the report JSON at 869-882 / 894-908; the sanitizer trap at 346-365 / 884-888), a 2,376-token verbatim paste-block paid in every session, and a second job (upstream reporting) restating objectstack-platform :59-70.

          Top findings

          idspanproposaldelta
          PMD-B-01SKILL.md:729-891, 916-986MOVE-TO rules/dev-template.md (DEFERRED, #14296 items 1+4)−3,258 from entry
          PMD-C-01SKILL.md:916-986 vs objectstack-platform :59-70DELETE the upstream-reporting job; keep ≤250-token residue pointing at objectstack-platform−882
          PMD-E-05SKILL.md:987-1033REWRITE-AS-CONSTRUCT — shard registry conclusion is one line for a single-repo project−580
          PMD-E-02SKILL.md:416-452RETIRE-SURFACE — "N independent implementations" is the platform's compiler problem, not an app's−565
          PMD-E-03SKILL.md:591-618DELETE two non-escalation bullets (ADR-0049 "arm"/governance shapes)−508
          PMD-D-01SKILL.md:192-217REWRITE-AS-CONSTRUCT — sweep rationale, cross-seat producers, anecdote−380
          PMD-D-02SKILL.md:507-528REWRITE-AS-CONSTRUCT — the 8-card baseline printed and disclaimed−290
          PMD-D-04SKILL.md:654-706 vs 826-857REWRITE-AS-CONSTRUCT — four-axis frame stated twice−450 (MED)
          PMD-E-04SKILL.md:769-786REWRITE-AS-CONSTRUCT — design spec of a lock script the customer does not have−250
          PMD-B-03SKILL.md:346-357DELETE sanitizer specimens; rules at 359-365 carry the decision−200
          PMD-B-02SKILL.md:894-908DELETE — the same report JSON printed twice−115
          PMD-D-03SKILL.md:483-495DELETE check-in anecdote; keep the two rules at 496-506−170 (MED)
          PMD-A-01SKILL.md:10-14DELETE the "report a platform bug" trigger from the description−30
          PMD-G-01SKILL.md:557-559 vs 1051DELETE — "the PM's own tooling PRs" contradicts "The PM writes no files"−25

          Drift vs the internal contract (sync in this flight, paid by the deletions above)

          • PMD-F-01:455-457 "a lossless channel" — the internal contract requires the report TWICE, GitHub first, in both modes, first line the literal plaintext os-dev-report (⛔ not an HTML comment), because a container restart killed three devs mid-final-message. Also a falsehood: :456-457 is contradicted 17 lines later at :474-475.
          • PMD-F-02 the template never asks the dev to re-check the issue's premises and the report has no premise_still_valid; internally a no-PR report with premise_still_valid: false is a first-class deliverable.
          • PMD-F-03grep -c stash = 0, yet the template ships the exact topology the trap lives in (worktree-first + "parallel agents share ONE container"); both repos carry the ban at Prime-Directive level.
          • PMD-F-04/F-05 the claim shape omits the Session: line (branch-only identity under-determines in cloud mode); :367-369 asserts devs push early while the template pushes fourth — the reclaim predicate can fire against a live agent. Make the template push the empty branch first.
          • Falsehood :1036-1039 "the template enforces … a container-wide verification lock" — the template delegates the mechanism to the host project; should read requires.

          Flight scope

          IMPLEMENT (same-file, shrink-only): all rows above except PMD-B-01 and PMD-H-01; the four drift syncs (paid by PMD-E-02 / PMD-E-04 / PMD-B-02 as the auditor sized them); PMD-C-01 as delete + ≤250-token residue pointing at objectstack-platform SKILL.md:59-70; the description trigger edit (regenerate skills/README.md).

          DEFER (pending #14296 items 1 and 4): PMD-B-01 (split the template into rules/dev-template.md), PMD-H-01 (evals).

          Flight constraints (binding)

          • ONE draft PR, first line Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
          • Token ratchet: SKILL.md may not grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files; ⛔ do not touch the ratchet script.
          • ⛔ Never edit another package's files; frontmatter edits ⇒ regenerate skills/README.md (pnpm --filter @objectstack/spec gen:skill-docs).
          • Gates: node scripts/check-skills-token-ratchet.mjs, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
          • PR body: per-item 落点 | before | after list keyed by finding id; token delta; Clause-②: no (no contract surface).

          Refs: #14292 · #14296 · #13597 (the internal corpus, separate audit).

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          Labels

          documentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

          Type

          No type

          Projects

          No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            Skills optimization flight — skills/objectstack-pm-dispatch: RESTRUCTURE (≈ −4,255 tok, −29%) — monorepo-only lore inert in a customer project, the report JSON printed twice, and four drifts from the internal dev contract (report double-channel, premise_still_valid, the stash ban, the Session: line) #14300

            Description

            @os-litant

            Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-pm-dispatch/findings.md).

            ⚠️Fence: this is the PUBLISHED process skill. .claude/skills/pm-dispatch/** and .claude/agents/os-dev.md are a separate corpus under audit #13597 — read them only as the comparison oracle, ⛔ never edit them in this flight, ⛔ never in the same PR.

            Audit summary

            One file, SKILL.md, 1,086 lines, 14,549 tokens, headroom 0 — 7.7% of the bundle, the 2nd-largest published SKILL.md, 1.75× the other process skill. Teaches no ObjectStack surface (0 TypeScript fences). Customer decision points covered: 5 (label state machine; safe claim; dispatch with a binding template; review-against-GitHub and land; escalate vs decide) ≈ 2,900 tokens per decision. Customer-inert or duplicated text measured at 4,445 tokens (30.6%) before any restructure. Verdict RESTRUCTURE: zero progressive disclosure, zero evals, two blocks duplicated inside the file (the report JSON at 869-882 / 894-908; the sanitizer trap at 346-365 / 884-888), a 2,376-token verbatim paste-block paid in every session, and a second job (upstream reporting) restating objectstack-platform :59-70.

            Top findings

            idspanproposaldelta
            PMD-B-01SKILL.md:729-891, 916-986MOVE-TO rules/dev-template.md (DEFERRED, #14296 items 1+4)−3,258 from entry
            PMD-C-01SKILL.md:916-986 vs objectstack-platform :59-70DELETE the upstream-reporting job; keep ≤250-token residue pointing at objectstack-platform−882
            PMD-E-05SKILL.md:987-1033REWRITE-AS-CONSTRUCT — shard registry conclusion is one line for a single-repo project−580
            PMD-E-02SKILL.md:416-452RETIRE-SURFACE — "N independent implementations" is the platform's compiler problem, not an app's−565
            PMD-E-03SKILL.md:591-618DELETE two non-escalation bullets (ADR-0049 "arm"/governance shapes)−508
            PMD-D-01SKILL.md:192-217REWRITE-AS-CONSTRUCT — sweep rationale, cross-seat producers, anecdote−380
            PMD-D-02SKILL.md:507-528REWRITE-AS-CONSTRUCT — the 8-card baseline printed and disclaimed−290
            PMD-D-04SKILL.md:654-706 vs 826-857REWRITE-AS-CONSTRUCT — four-axis frame stated twice−450 (MED)
            PMD-E-04SKILL.md:769-786REWRITE-AS-CONSTRUCT — design spec of a lock script the customer does not have−250
            PMD-B-03SKILL.md:346-357DELETE sanitizer specimens; rules at 359-365 carry the decision−200
            PMD-B-02SKILL.md:894-908DELETE — the same report JSON printed twice−115
            PMD-D-03SKILL.md:483-495DELETE check-in anecdote; keep the two rules at 496-506−170 (MED)
            PMD-A-01SKILL.md:10-14DELETE the "report a platform bug" trigger from the description−30
            PMD-G-01SKILL.md:557-559 vs 1051DELETE — "the PM's own tooling PRs" contradicts "The PM writes no files"−25

            Drift vs the internal contract (sync in this flight, paid by the deletions above)

            • PMD-F-01:455-457 "a lossless channel" — the internal contract requires the report TWICE, GitHub first, in both modes, first line the literal plaintext os-dev-report (⛔ not an HTML comment), because a container restart killed three devs mid-final-message. Also a falsehood: :456-457 is contradicted 17 lines later at :474-475.
            • PMD-F-02 the template never asks the dev to re-check the issue's premises and the report has no premise_still_valid; internally a no-PR report with premise_still_valid: false is a first-class deliverable.
            • PMD-F-03grep -c stash = 0, yet the template ships the exact topology the trap lives in (worktree-first + "parallel agents share ONE container"); both repos carry the ban at Prime-Directive level.
            • PMD-F-04/F-05 the claim shape omits the Session: line (branch-only identity under-determines in cloud mode); :367-369 asserts devs push early while the template pushes fourth — the reclaim predicate can fire against a live agent. Make the template push the empty branch first.
            • Falsehood :1036-1039 "the template enforces … a container-wide verification lock" — the template delegates the mechanism to the host project; should read requires.

            Flight scope

            IMPLEMENT (same-file, shrink-only): all rows above except PMD-B-01 and PMD-H-01; the four drift syncs (paid by PMD-E-02 / PMD-E-04 / PMD-B-02 as the auditor sized them); PMD-C-01 as delete + ≤250-token residue pointing at objectstack-platform SKILL.md:59-70; the description trigger edit (regenerate skills/README.md).

            DEFER (pending #14296 items 1 and 4): PMD-B-01 (split the template into rules/dev-template.md), PMD-H-01 (evals).

            Flight constraints (binding)

            • ONE draft PR, first line Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
            • Token ratchet: SKILL.md may not grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files; ⛔ do not touch the ratchet script.
            • ⛔ Never edit another package's files; frontmatter edits ⇒ regenerate skills/README.md (pnpm --filter @objectstack/spec gen:skill-docs).
            • Gates: node scripts/check-skills-token-ratchet.mjs, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
            • PR body: per-item 落点 | before | after list keyed by finding id; token delta; Clause-②: no (no contract surface).

            Refs: #14292 · #14296 · #13597 (the internal corpus, separate audit).

            Activity

            Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

            Metadata

            Metadata

            Assignees

            Labels

            documentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Skills optimization flight — skills/objectstack-pm-dispatch: RESTRUCTURE (≈ −4,255 tok, −29%) — monorepo-only lore inert in a customer project, the report JSON printed twice, and four drifts from the internal dev contract (report double-channel, premise_still_valid, the stash ban, the Session: line) #14300

              Description

              @os-litant

              Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-pm-dispatch/findings.md).

              ⚠️Fence: this is the PUBLISHED process skill. .claude/skills/pm-dispatch/** and .claude/agents/os-dev.md are a separate corpus under audit #13597 — read them only as the comparison oracle, ⛔ never edit them in this flight, ⛔ never in the same PR.

              Audit summary

              One file, SKILL.md, 1,086 lines, 14,549 tokens, headroom 0 — 7.7% of the bundle, the 2nd-largest published SKILL.md, 1.75× the other process skill. Teaches no ObjectStack surface (0 TypeScript fences). Customer decision points covered: 5 (label state machine; safe claim; dispatch with a binding template; review-against-GitHub and land; escalate vs decide) ≈ 2,900 tokens per decision. Customer-inert or duplicated text measured at 4,445 tokens (30.6%) before any restructure. Verdict RESTRUCTURE: zero progressive disclosure, zero evals, two blocks duplicated inside the file (the report JSON at 869-882 / 894-908; the sanitizer trap at 346-365 / 884-888), a 2,376-token verbatim paste-block paid in every session, and a second job (upstream reporting) restating objectstack-platform :59-70.

              Top findings

              idspanproposaldelta
              PMD-B-01SKILL.md:729-891, 916-986MOVE-TO rules/dev-template.md (DEFERRED, #14296 items 1+4)−3,258 from entry
              PMD-C-01SKILL.md:916-986 vs objectstack-platform :59-70DELETE the upstream-reporting job; keep ≤250-token residue pointing at objectstack-platform−882
              PMD-E-05SKILL.md:987-1033REWRITE-AS-CONSTRUCT — shard registry conclusion is one line for a single-repo project−580
              PMD-E-02SKILL.md:416-452RETIRE-SURFACE — "N independent implementations" is the platform's compiler problem, not an app's−565
              PMD-E-03SKILL.md:591-618DELETE two non-escalation bullets (ADR-0049 "arm"/governance shapes)−508
              PMD-D-01SKILL.md:192-217REWRITE-AS-CONSTRUCT — sweep rationale, cross-seat producers, anecdote−380
              PMD-D-02SKILL.md:507-528REWRITE-AS-CONSTRUCT — the 8-card baseline printed and disclaimed−290
              PMD-D-04SKILL.md:654-706 vs 826-857REWRITE-AS-CONSTRUCT — four-axis frame stated twice−450 (MED)
              PMD-E-04SKILL.md:769-786REWRITE-AS-CONSTRUCT — design spec of a lock script the customer does not have−250
              PMD-B-03SKILL.md:346-357DELETE sanitizer specimens; rules at 359-365 carry the decision−200
              PMD-B-02SKILL.md:894-908DELETE — the same report JSON printed twice−115
              PMD-D-03SKILL.md:483-495DELETE check-in anecdote; keep the two rules at 496-506−170 (MED)
              PMD-A-01SKILL.md:10-14DELETE the "report a platform bug" trigger from the description−30
              PMD-G-01SKILL.md:557-559 vs 1051DELETE — "the PM's own tooling PRs" contradicts "The PM writes no files"−25

              Drift vs the internal contract (sync in this flight, paid by the deletions above)

              • PMD-F-01:455-457 "a lossless channel" — the internal contract requires the report TWICE, GitHub first, in both modes, first line the literal plaintext os-dev-report (⛔ not an HTML comment), because a container restart killed three devs mid-final-message. Also a falsehood: :456-457 is contradicted 17 lines later at :474-475.
              • PMD-F-02 the template never asks the dev to re-check the issue's premises and the report has no premise_still_valid; internally a no-PR report with premise_still_valid: false is a first-class deliverable.
              • PMD-F-03grep -c stash = 0, yet the template ships the exact topology the trap lives in (worktree-first + "parallel agents share ONE container"); both repos carry the ban at Prime-Directive level.
              • PMD-F-04/F-05 the claim shape omits the Session: line (branch-only identity under-determines in cloud mode); :367-369 asserts devs push early while the template pushes fourth — the reclaim predicate can fire against a live agent. Make the template push the empty branch first.
              • Falsehood :1036-1039 "the template enforces … a container-wide verification lock" — the template delegates the mechanism to the host project; should read requires.

              Flight scope

              IMPLEMENT (same-file, shrink-only): all rows above except PMD-B-01 and PMD-H-01; the four drift syncs (paid by PMD-E-02 / PMD-E-04 / PMD-B-02 as the auditor sized them); PMD-C-01 as delete + ≤250-token residue pointing at objectstack-platform SKILL.md:59-70; the description trigger edit (regenerate skills/README.md).

              DEFER (pending #14296 items 1 and 4): PMD-B-01 (split the template into rules/dev-template.md), PMD-H-01 (evals).

              Flight constraints (binding)

              • ONE draft PR, first line Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
              • Token ratchet: SKILL.md may not grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files; ⛔ do not touch the ratchet script.
              • ⛔ Never edit another package's files; frontmatter edits ⇒ regenerate skills/README.md (pnpm --filter @objectstack/spec gen:skill-docs).
              • Gates: node scripts/check-skills-token-ratchet.mjs, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
              • PR body: per-item 落点 | before | after list keyed by finding id; token delta; Clause-②: no (no contract surface).

              Refs: #14292 · #14296 · #13597 (the internal corpus, separate audit).

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              Labels

              documentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

              Type

              No type

              Projects

              No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                Skills optimization flight — skills/objectstack-pm-dispatch: RESTRUCTURE (≈ −4,255 tok, −29%) — monorepo-only lore inert in a customer project, the report JSON printed twice, and four drifts from the internal dev contract (report double-channel, premise_still_valid, the stash ban, the Session: line) #14300

                Description

                @os-litant

                Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d. The full findings table is the audit record: the dev posts it verbatim as the first comment on this card at claim time (seat scratchpad audit/objectstack-pm-dispatch/findings.md).

                ⚠️Fence: this is the PUBLISHED process skill. .claude/skills/pm-dispatch/** and .claude/agents/os-dev.md are a separate corpus under audit #13597 — read them only as the comparison oracle, ⛔ never edit them in this flight, ⛔ never in the same PR.

                Audit summary

                One file, SKILL.md, 1,086 lines, 14,549 tokens, headroom 0 — 7.7% of the bundle, the 2nd-largest published SKILL.md, 1.75× the other process skill. Teaches no ObjectStack surface (0 TypeScript fences). Customer decision points covered: 5 (label state machine; safe claim; dispatch with a binding template; review-against-GitHub and land; escalate vs decide) ≈ 2,900 tokens per decision. Customer-inert or duplicated text measured at 4,445 tokens (30.6%) before any restructure. Verdict RESTRUCTURE: zero progressive disclosure, zero evals, two blocks duplicated inside the file (the report JSON at 869-882 / 894-908; the sanitizer trap at 346-365 / 884-888), a 2,376-token verbatim paste-block paid in every session, and a second job (upstream reporting) restating objectstack-platform :59-70.

                Top findings

                idspanproposaldelta
                PMD-B-01SKILL.md:729-891, 916-986MOVE-TO rules/dev-template.md (DEFERRED, #14296 items 1+4)−3,258 from entry
                PMD-C-01SKILL.md:916-986 vs objectstack-platform :59-70DELETE the upstream-reporting job; keep ≤250-token residue pointing at objectstack-platform−882
                PMD-E-05SKILL.md:987-1033REWRITE-AS-CONSTRUCT — shard registry conclusion is one line for a single-repo project−580
                PMD-E-02SKILL.md:416-452RETIRE-SURFACE — "N independent implementations" is the platform's compiler problem, not an app's−565
                PMD-E-03SKILL.md:591-618DELETE two non-escalation bullets (ADR-0049 "arm"/governance shapes)−508
                PMD-D-01SKILL.md:192-217REWRITE-AS-CONSTRUCT — sweep rationale, cross-seat producers, anecdote−380
                PMD-D-02SKILL.md:507-528REWRITE-AS-CONSTRUCT — the 8-card baseline printed and disclaimed−290
                PMD-D-04SKILL.md:654-706 vs 826-857REWRITE-AS-CONSTRUCT — four-axis frame stated twice−450 (MED)
                PMD-E-04SKILL.md:769-786REWRITE-AS-CONSTRUCT — design spec of a lock script the customer does not have−250
                PMD-B-03SKILL.md:346-357DELETE sanitizer specimens; rules at 359-365 carry the decision−200
                PMD-B-02SKILL.md:894-908DELETE — the same report JSON printed twice−115
                PMD-D-03SKILL.md:483-495DELETE check-in anecdote; keep the two rules at 496-506−170 (MED)
                PMD-A-01SKILL.md:10-14DELETE the "report a platform bug" trigger from the description−30
                PMD-G-01SKILL.md:557-559 vs 1051DELETE — "the PM's own tooling PRs" contradicts "The PM writes no files"−25

                Drift vs the internal contract (sync in this flight, paid by the deletions above)

                • PMD-F-01:455-457 "a lossless channel" — the internal contract requires the report TWICE, GitHub first, in both modes, first line the literal plaintext os-dev-report (⛔ not an HTML comment), because a container restart killed three devs mid-final-message. Also a falsehood: :456-457 is contradicted 17 lines later at :474-475.
                • PMD-F-02 the template never asks the dev to re-check the issue's premises and the report has no premise_still_valid; internally a no-PR report with premise_still_valid: false is a first-class deliverable.
                • PMD-F-03grep -c stash = 0, yet the template ships the exact topology the trap lives in (worktree-first + "parallel agents share ONE container"); both repos carry the ban at Prime-Directive level.
                • PMD-F-04/F-05 the claim shape omits the Session: line (branch-only identity under-determines in cloud mode); :367-369 asserts devs push early while the template pushes fourth — the reclaim predicate can fire against a live agent. Make the template push the empty branch first.
                • Falsehood :1036-1039 "the template enforces … a container-wide verification lock" — the template delegates the mechanism to the host project; should read requires.

                Flight scope

                IMPLEMENT (same-file, shrink-only): all rows above except PMD-B-01 and PMD-H-01; the four drift syncs (paid by PMD-E-02 / PMD-E-04 / PMD-B-02 as the auditor sized them); PMD-C-01 as delete + ≤250-token residue pointing at objectstack-platform SKILL.md:59-70; the description trigger edit (regenerate skills/README.md).

                DEFER (pending #14296 items 1 and 4): PMD-B-01 (split the template into rules/dev-template.md), PMD-H-01 (evals).

                Flight constraints (binding)

                • ONE draft PR, first line Fixes #<this card>; governed ⇒ stays draft; review requests are the seat's step.
                • Token ratchet: SKILL.md may not grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment; ⛔ no ceiling raise; ⛔ no new files; ⛔ do not touch the ratchet script.
                • ⛔ Never edit another package's files; frontmatter edits ⇒ regenerate skills/README.md (pnpm --filter @objectstack/spec gen:skill-docs).
                • Gates: node scripts/check-skills-token-ratchet.mjs, pnpm check:skill-compatibility, pnpm check:skill-identifier-liveness, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
                • PR body: per-item 落点 | before | after list keyed by finding id; token delta; Clause-②: no (no contract surface).

                Refs: #14292 · #14296 · #13597 (the internal corpus, separate audit).

                Activity

                Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                Metadata

                Metadata

                Assignees

                Labels

                documentationImprovements or additions to documentationdomain:skillspriority:p1High: required for production / M2

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions