') + ')', 'gi');
if (regex.test(text)) {
found = true;
var frag = document.createDocumentFragment();
var parts = text.split(regex);
parts.forEach(function(part, i) {
if (i % 2 === 0) {
frag.appendChild(document.createTextNode(part));
} else {
var span = document.createElement('span');
span.className = 'userscript-highlight';
span.textContent = part;
frag.appendChild(span);
}
});
node.parentNode.replaceChild(frag, node);
}
});
} else if (node.nodeType === 1 && node.childNodes) { // element
var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];
if (!skipTags.includes(node.tagName)) {
Array.from(node.childNodes).forEach(highlight);
}
}
}
highlight(document.body);
// Re-highlight on dynamic content
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(m) {
m.addedNodes.forEach(function(node) {
if (node.nodeType === 1 || node.nodeType === 3) highlight(node);
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); }
})();
(function(){
try {
var __m = "*";
var __re = new RegExp('^' + ".*" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Strip utm_, fbclid, gclid, etc. from all links on page
(function() {
var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',
'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',
'ref', 'ref_src', 'source', 'medium', 'campaign'];
function cleanUrl(url) {
try {
var u = new URL(url, window.location.origin);
var changed = false;
trackingParams.forEach(function(p) {
if (u.searchParams.has(p)) {
u.searchParams.delete(p);
changed = true;
}
});
return changed ? u.toString() : url;
} catch (e) {
return url;
}
}
function cleanLinks() {
document.querySelectorAll('a[href]').forEach(function(a) {
var clean = cleanUrl(a.href);
if (clean !== a.href) a.href = clean;
});
}
cleanLinks();
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(m) {
m.addedNodes.forEach(function(node) {
if (node.nodeType === 1) {
if (node.tagName === 'A') cleanLinks();
node.querySelectorAll('a[href]').forEach(function(a) {
var clean = cleanUrl(a.href);
if (clean !== a.href) a.href = clean;
});
}
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); }
})();
(function(){
try {
var __m = "youtube.com";
var __re = new RegExp('^' + "youtube\\.com" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Auto-enable theater mode on YouTube
(function() {
function tryTheater() {
var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]');
if (btn && !btn.classList.contains('activated')) {
btn.click();
}
}
// Try immediately
tryTheater();
// Try after navigation (SPA)
var lastUrl = location.href;
setInterval(function() {
if (location.href !== lastUrl) {
lastUrl = location.href;
setTimeout(tryTheater, 500);
}
}, 1000);
// Also try on player load
var observer = new MutationObserver(tryTheater);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); }
})();
(function(){
try {
var __m = "*";
var __re = new RegExp('^' + ".*" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Remove or un-stick sticky/fixed headers that block content
(function() {
function unstick() {
document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) {
if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {
el.style.position = 'static';
el.style.top = 'auto';
el.style.zIndex = 'auto';
}
});
}
unstick();
var observer = new MutationObserver(unstick);
observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });
})();
}
} catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); }
})();
})();
PM corpus audit (maintainer-directed): classify every instruction line — keep / duplicate / demote / delete — then rewrite and re-lock every ratchet · Issue #13597 · objectstack-ai/objectstack · GitHub
You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PM corpus audit (maintainer-directed): classify every instruction line — keep / duplicate / demote / delete — then rewrite and re-lock every ratchet #13597
Anchor card for the maintainer-directed corpus audit. Filed by the skills lane seat (session session_01EXxTW8mvPBhoHxmyPZ63de), PM loop round 5.
Mandate (verbatim, 2026-08-31, chat)
「最近我也感觉项目经理越来越笨,是不是胡乱写的文字太多了,要不要完整的认真重新整理一下,哪些是关键条款,哪些应该删除。」 — GO given as 「做」.
Companion rulings the same hour: 「你的工作不应该是不把issue 全收,还需要重点审核skills 改进值不值」 (reject authority — the value gate) · 「13580 B(荐」 (first construct removal under this posture: duty ⑦'s reader half).
Thesis
#12911: rule accretion degrades execution — every marginal instruction line taxes every future turn of every seat; construct removal (#11901 precedent) held where added rules kept failing. This audit executes that thesis corpus-wide instead of card-by-card.
Phase 1 — zero-edit classification (this seat, in progress). Every passage classified: KEY (binding; changes a specific decision) / DUPLICATE (same rule stated elsewhere — one anchor survives) / DEMOTABLE (true but decision-neutral: narrative, justification, history) / DELETE (methodology prose, stale, superseded). Each row carries a measured justification, not taste. Posted as comments on this card, file by file. ⛔ No edits in this phase.
Phase 2 — maintainer batch ruling on the classification table (决裁批 mechanism; director seat records verbatim rulings).
Anchor card for the maintainer-directed corpus audit. Filed by the skills lane seat (session
session_01EXxTW8mvPBhoHxmyPZ63de), PM loop round 5.Mandate (verbatim, 2026-08-31, chat)
「最近我也感觉项目经理越来越笨,是不是胡乱写的文字太多了,要不要完整的认真重新整理一下,哪些是关键条款,哪些应该删除。」 — GO given as 「做」.
Companion rulings the same hour: 「你的工作不应该是不把issue 全收,还需要重点审核skills 改进值不值」 (reject authority — the value gate) · 「13580 B(荐」 (first construct removal under this posture: duty ⑦'s reader half).
Thesis
#12911: rule accretion degrades execution — every marginal instruction line taxes every future turn of every seat; construct removal (#11901 precedent) held where added rules kept failing. This audit executes that thesis corpus-wide instead of card-by-card.
Scope (measured at origin/main
9c120f030).claude/skills/pm-dispatch/SKILL.md.claude/skills/pm-dispatch/references/(dispatch-runbook 271 · platform-readings 314 · review-checklist 84 · contract-review 48 · decision-analysis 46 · lanes/* · state-machine · compile-surfaces · the rest).claude/agents/os-dev.mdAGENTS.mdCLAUDE.mdPhases
check-skill-line-ratchet.mjs, after PR docs(pm-dispatch): three maintainer-ruled standing rules + the Part-of bookkeeping-sentence warning #13505's serial chain clears).Standing effects while this card is open
.claude/agents/os-dev.mdrule 1 lists the verify lock's four guarantees and no non-guarantee, one line above a wall-clock absolute — every dev agent reads exclusivity the brief never promised #12800 · Make check:generated's "not run here" source-audit list a hard obligation in the os-dev contract — disposition 2 of #13207, routed to the skills lane #13300 · [finding] The os-dev contract statesskip-changesetas BOTH a closed path list and a publication test — asrc/file that never reachesdistsatisfies one and violates the other #13432.claude/issue-13326-platform-readings-family@71b4005bb, 359 lines vs ceiling 314; whitespace-only re-wrap measured to GROW that file, sha-proven ⇒ it is at maximal density, so Phase 3 must cut or split content there, never compress; family: [finding] MCPsearch_issuesis returning FALSE ZEROS — reproduced on three seats across two repos, and it DEGRADED mid-session, so every dedup that rode on it passed vacuously #13326[finding] The zero-quota payload channel silently drops the NEWEST timeline items once an issue outgrows the SSR first window — measured 3 of 5 comments, both 2026-08-30 dispatch comments missing #13373[finding] The zero-quota payload channel renders only the FIRST 15 timeline items and returns an EMPTY tail — so a read-back of a just-posted comment reads byte-identical to sanitizer damage #13385[finding] An issue body ending in a---rule followed by the attribution footer loses EVERYTHING FROM THE RULE ONWARD on create — 5 measured instances, silently stripping the required footer #13384[finding] The zero-quota issue-page payload is CDN-CACHED and can be minutes-to-hours stale — cache-busting and no-cache did NOT defeat it, and one seat asserted a half-state about another seat's work on that stale read #13387Record the agent-created-Routine transport facts in references/platform-readings.md — fired sessions get no GitHub MCP tools, and self-binding trades new-session recoverability for tool availability #13257[finding] MCPissue_read get_labelsfails on a FRESH PR number whilelist_pull_requestsreturns its labels — misread as "no labels", the mandated RMW fallback strips concurrent bot labels #13141[finding] LIVE:os-elonis no longer assignable on this repo — every seat's claim protocol silently loses its assignee half, mid-session #13561[finding] MCPissue_read get_labelscannot resolve a PR number ("Could not resolve to an Issue") whilepull_request_read getreturns the same PR's labels — one wasted call per misread #13583).git worktree add -bcan fail writing upstream config and leave the branch created but no worktree — the recipe's own half-state, and.git/configis shared like the stash #13052-A (AGENTS.md 1162→1164) · [finding] Atimeout-killed command reports near-zero CPU to the shell'stime, understating cost 14x-82x — and it reads exactly like "this step blocks rather than computes" #12980-A-FLOOR (os-dev.md 466→471) — serial behind PR docs(pm-dispatch): three maintainer-ruled standing rules + the Part-of bookkeeping-sentence warning #13505 regardless; the audit may render both moot. If the maintainer wants either landed before the audit, say so and it rides the chain as already ruled.Refs: #12911 (thesis) · #11901 (construct-removal precedent) · #13304 (first construct removal executed) · #13484 / #13506 (first value-gate rejections).
Generated by Claude Code