Repository navigation
[finding] AGENTS.md §7 still names TWO classes of PR that never land on green alone — the maintainer's 5,000-changed-lines class (#19012) is the third, and the rules layer contradicts the landing rule until it says so #19037
Description
Activity
- addedpriority:p2Medium: important, M3Medium: important, M3
on Sep 18, 2026 os-elon-musk commented
on Sep 18, 2026 CollaboratorAuthorMore actionsLane first-touch grading (skills seat,
session_01BTeBejoPUvRHN8WdAJC6oF) · 2026-09-18T13:07Z — the skills lane grades its own findings (lanes/skills.md).- Class (b):
AGENTS.md§7 names two classes of PR that never land on green alone; the maintainer's 2026-09-18 ruling ([ruling] a PR whose changed line count exceeds 5,000 lands only by a human merge — rule line in SKILL.md + landing-operations.md, and a size predicate in the landing gate #19012 / PR feat(pm): a PR over 5,000 changed lines lands only by a human merge — size predicate in check-governed-merges --test, the same reading in dispatch-gates, one rule line in SKILL.md and landing-operations #19033) makes three, and the rules layer contradicts the landing rule until the line is there. - Type Task ·
priority:p2·pm:queue. p2: a governed-text contradiction with no incident yet (the mechanical face is PR feat(pm): a PR over 5,000 changed lines lands only by a human merge — size predicate in check-governed-merges --test, the same reading in dispatch-gates, one rule line in SKILL.md and landing-operations #19033's; this is the human-read half). Governed (AGENTS.md, 1099 / 1099 — fold or pay) ⇒CONTRACT_REVIEW_TIER, the four-piece terminal. Dispatchable now: no open PR touchesAGENTS.md(PR docs(agents): give the claim pre-check its right delimiter, so a card number cannot prefix-match #18918 merged at 11:47Z). Deliverable: one §7 line naming the third class with the number and 「generated files included」, net 0.
Generated by Claude Code
- Class (b):
os-elon-musk commented
on Sep 18, 2026 CollaboratorAuthorMore actionsClaim: PM loop round 1 (wave 8c — patrol 13:04Z, slot freed by PR #19038's collection)
Session:session_01BTeBejoPUvRHN8WdAJC6oF
Branch:claude/issue-19037-agents-third-class-human-merge
Worktree:objectstack-issue-19037
Domain:domain:skills
Seat:domain:skills#1
File surface:AGENTS.mdonly — §7's 「Two classes of PR never enter this path on green alone」 sentence (:495–:500 onorigin/maindbd474431) gains the maintainer's third class (a PR over 5,000 changed lines,additions + deletions, generated files included); the file is at its ceiling 1099 / 1099 ⇒ fold or pay inside the file, net 0.
Container & model:S,mode:subagent,model: claude-fable-5-1(CONTRACT_REVIEW_TIER—AGENTS.mdis on the mandatory list); governed rule layer ⇒ draft at the four-piece terminal
Clause-②: no
Thread-read: card body + the seat's grading comment 5730428375 (priority:p2); the ruling it carries is the maintainer's verbatim 「还有应该完善skills,修改代码量超过某个行数(比如5000)就应该人工审核。」 recorded on #16045 (5729462393) and implemented by #19012 / PR #19033
Serial constraints cleared: no open PR touchesAGENTS.md(file lists of all 32 open PRs read at 2026-09-18T13:17Z); stem scan oforiginheads for19037/third-class: none. Not serial behind PR #19033: the sentence states the ruling, not a line number of that PR. Batch: 3 in flight (#18926, #19025, this). Lock free.
Ruling-ref: maintainer, chat 2026-09-18, verbatim above; recorded on #16045 comment 5729462393
Generated by Claude Code
os-elon-musk commented
on Sep 18, 2026 CollaboratorAuthorMore actionsos-dev-report
{ "issue": 19037, "status": "done", "branch": "claude/issue-19037-agents-third-class-human-merge", "pr": "https://github.com/objectstack-ai/objectstack/pull/19042", "session": "session_01BTeBejoPUvRHN8WdAJC6oF", "premise_still_valid": true, "summary": "AGENTS.md Multi-agent discipline §7 (:495–:500 on origin/main dbd474431) said 「Two classes of PR never enter this path on green alone」; it now names three, the third being the maintainer's size class: 「(c) a PR whose **changed lines exceed 5,000** (`additions + deletions`, generated files included) — it lands only by a human merge, which is its review record」, and the closing instruction reads 「its author and its size」 beside the file list. The paragraph was re-flowed at the file's own 120-byte per-line budget so the clause lands at net 0 lines (1099 / 1099). Premise verified on origin/main dbd474431: the sentence read two classes at :495–:500, the ceiling row is ['AGENTS.md', 1099], no external pin holds the text. Assignee was PM-set (os-elon-musk) and untouched; the newest Claim (5730566948) names this branch. Draft PR #19042 at the four-piece terminal (governed rules layer): draft, skip-changeset, 维护者速读(草稿) section, session-URL footer stored verbatim.", "files_changed": [ "AGENTS.md" ], "line_budget": { "file_lines_before": 1099, "file_lines_after": 1099, "ceiling": 1099, "paragraph_bytes": "466 → 640 (6 lines → 6 lines)", "changed_lines_bytes": { "495": "90 → 113", "496": "88 → 117", "497": "88 → 109", "498": "81 → 109", "499": "86 → 111", "500": "27 → 75" }, "wrap_width": "re-flowed to ≤ 117 bytes per line against the file's 120-byte per-line budget (Prime Directives block runs to 120 bytes at :468; §8 beside the paragraph to 116 at :535); the original was wrapped at ~88 with a 27-byte tail. Every bold/code span stays whole on its line, as in the original.", "ratchet": "✓ check-skill-line-ratchet: AGENTS.md is 1099 lines (ceiling 1099; headroom 0). ✓ widest table row is 768 bytes (pin 768; headroom 0)." }, "tests": "Head 845470659 (final commit; every reading below is from that tree). Derivation: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack → 14 families from 1 path vs merge base dbd474431 (committed 1, working tree 0, untracked 0). Ran all 14 plus 2 the dispatch named, each redirect-then-$?: node scripts/check-closing-keyword-parity.mjs :: exit 0 · node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0 · node scripts/check-comment-mask-corpus.mjs :: exit 0 · pnpm check:agent-test-spelling :: exit 0 · pnpm check:docs-audit-scope :: exit 0 · pnpm check:driver-memory-census :: exit 0 · pnpm check:nul-bytes :: exit 0 · pnpm check:pm-governed-merges :: exit 0 · pnpm check:pm-governed-prose :: exit 0 · pnpm check:pm-skill-id-lint :: exit 0 · pnpm check:pm-skill-ratchet :: exit 0 · pnpm check:refd-timer-probe :: exit 0 · pnpm check:required-contexts :: exit 0 · pnpm check:watch-hint-literal :: exit 0 · pnpm check:skill-frame-sync :: exit 0 · pnpm check:doc-authoring :: exit 0. Reconciliation (--ran): 「✓ dispatch-gates --ran: 14 derived famil(ies) accounted for — 14 run, 0 NOT-MEASURED (a DERIVED zero — all 14 recorded an exit code and none of them is 3)」; the 2 extras listed as outside the derivation, not an error. Id-lint: 0 citations in AGENTS.md (pattern /#[0-9]{3,}/ over the file). Control-byte grep of AGENTS.md: exit 1 (no match). check:pm-dispatch-gates: ran detached (PID 9249, foreground tail --pid waits 13:31–13:40Z and 13:40–13:41Z), log 1867 lines, no ✗, verdict lines 「✓ check:pm-dispatch-gates --self-test: the exit contract holds in all three directions.」 and 「✓ dispatch-gates self-test: 1849 cases pass.」 then 「the battery took 786.7s on this box」 — its process exit code was NOT captured (detached; verdict line is the reading). No build or test suite is owed (no package touched; no ① closure, no ②); nothing took the verify lock. No ablation applies (prose-only change).", "gates": { "derived_14": "all exit 0 (list in tests)", "pm_named_extra": "check:skill-frame-sync exit 0; check:doc-authoring exit 0; check:pm-dispatch-gates verdict green (exit code not captured, detached)", "check_doc_formula_expressions": "NOT RUN — not owed: its ROOTS are ['.claude', 'docs', 'skills', 'content'] (packages/lint/scripts/check-doc-formula-expressions.mjs :179), so AGENTS.md is outside its corpus; also outside the derivation; CI runs it anyway", "check_governed_queue_guard_pair": "node scripts/pm/check-governed-queue-guard.mjs --pair 19042 :: exit 1 = PREREQUISITE NOT MET (it reads GITHUB_EVENT_PATH only, absent locally) — NOT MEASURED, not a red", "clause2_pair": "node scripts/pm/check-clause2-carriers.mjs --pair 19042 :: exit 0 — claim pool 1 (5730566948), Clause-②: no declared on the card claim and in the PR body", "needs_contract_review_label": "absent on PR #19042 (seat's to hang; not touched)", "labels_read_back": "final read 2026-09-18T13:44:16.711Z: documentation, size/s, skip-changeset (label-write.mjs ④ MATCHES; two independent GETs agree)", "ci": "in_progress — Type Check · workspace, Lint & Repo Gates still running at post time; latest Check Changeset = skipped (label honoured)" }, "reader_test": "A seat about to arm a 6,000-line PR reads §7: 「Three classes of PR never enter this path on green alone … (c) a PR whose changed lines exceed 5,000 (additions + deletions, generated files included) — it lands only by a human merge」 and stops; on origin/main the same seat read two classes, found a 6,000-line diff in neither, and armed.", "mechanism_assumptions": { "1_cite_by_card": "FALSIFIED — AGENTS.md's header rule (no ruling date, quotation or issue-number citation; provenance lives in the landing PR) is enforced by check:pm-skill-id-lint with ID_PATTERN /#[0-9]{3,}/ over AGENTS.md, so #16045 / #19012 in the sentence would go red. The sentence is self-contained (number + generated-files clause + human merge); the ruling, its card and its comment id are cited in the PR body. Prime Directive #14 / #15 stay the anchors of (a) / (b); no directive was added.", "2_reflow_at_net_0": "CONFIRMED — measured above (line_budget); 6 lines before and after.", "3_other_mentions": "grep -n -i -E 'green alone|two classes|Version Packages' on dbd474431: :291 :299 :307 :309 = Prime Directive #15's own text — LEFT (class (b)'s anchor, not an enumeration); :495 :498 = the §7 sentence — CHANGED; no other hit. Two neighbours name class (a) alone by design and were LEFT: Skills section 「Both roots are governed surfaces — human-merge only, or Prime Directive #14's pinned-approval path」 and Post-Task Checklist step 2's 「⛔ Except a diff touching a governed surface」 (defers to §7 by reference) — the latter noted below." }, "deviations": [ "Dispatch text 「Cite the ruling (#16045 / #19012)」 vs AGENTS.md header + check:pm-skill-id-lint: the file's binding rule won (os-dev.md: 派发词与本文件冲突时以本文件为准; 教训写成自含规则,不引卡号). Citations live in the PR body.", "Commit trailer: the harness reminder asked for a Co-Authored-By line carrying a model name; AGENTS.md's pre-push hook refuses a model identifier in the trailer pair, so the commit carries the model-free pair (Co-authored-by: Claude / Claude-Session: URL). The push printed ✓ check:commit-card-trailers.", "PR footer: AGENTS.md's session-URL form (blank line, ---, one footer line) was sent instead of the reminder's 🤖 form; read-back: byte-identical body (8141 sent / 8140 stored — trailing newline only), footer stored once, no platform-appended second footer.", "No auto-mode classifier denial occurred on any write." ], "mcp_calls": "0 — no MCP GitHub tool called (reads and writes both via curl through the REST proxy; label via scripts/pm/label-write.mjs)", "api_writes": "5 — git push refs/heads/claude/issue-19037-agents-third-class-human-merge ×2 (empty-branch probe at dbd474431, then 845470659); POST /repos/objectstack-ai/objectstack/pulls ×1 (→ #19042, HTTP 201, draft); POST /repos/objectstack-ai/objectstack/issues/19042/labels ×1 (skip-changeset, HTTP 200, via label-write.mjs); POST /repos/objectstack-ai/objectstack/issues/19037/comments ×1 (this os-dev-report). PR body written once, never PATCHed.", "open_questions": [], "out_of_scope_findings": [ "noted, not filed: Post-Task Checklist step 2's 「⛔ Except a diff touching a governed surface」 names only class (a); the size class reaches a dev's own PR too. It defers to §7 by reference and the header's stated-once principle argues against restating; a one-line re-flow fold if wanted. 承接者: skills seat.", "noted, not filed: the size class has no Prime Directive of its own (a ruling, not a directive); a numbered home would be a new directive beside #14 / #15 — a separate decision, not taken here. 承接者: none." ], "cleanup": "worktree /home/user/objectstack-issue-19037: git status clean, 0 unpushed; node_modules removed; git worktree remove exit 0 (no --force); path gone, worktree list count 0. Detached PID 9249 had exited before removal. No dev server, no monitor left.", "ci_observed": "read 2026-09-18T13:44:16.711Z on 845470659: 25 check names (latest run per name) — {\"completed/skipped\":11,\"completed/success\":12,\"in_progress/-\":2}; in progress: Type Check · workspace, Lint & Repo Gates; non-green latest: none. Check Changeset: run 105617769277 (13:31Z, on opened, before the label) = failure; run 105620867111 (13:40:45Z, on labeled) = skipped — the label is honoured; the earlier failure is a pre-label reading, not a red on this diff." }
Generated by Claude Code
os-elon-musk commented
on Sep 18, 2026 CollaboratorAuthorMore actionsACCEPT — PR #19042 @
8454706591(one commit; one file, +6 / −6) · skills seatsession_01BTeBejoPUvRHN8WdAJC6oF· 2026-09-18T13:47ZRead on GitHub: draft, base
main, body line 1Fixes #19037,Clause-②: noat line start; closing keywords touch this card only;get_files=AGENTS.md;skip-changesetpresent (size/s,documentationare the labellers'); report 5730878764 names the head, literal first lineos-dev-report, no HTML comment, read back to the tail; the body carries## 维护者速读(草稿). Gates: 14 derived / 14 run / 0 NOT-MEASURED at845470659;check:pm-dispatch-gates1849 cases (detached, verdict line read). Seat re-measure on a scratch worktree at the head: 1099 / 1099 (ratchet ✓, headroom 0; row pin 768 ✓), id-lint ✓ 27 files (0 citations in AGENTS.md), every changed line ≤ 117 B,--pair 19042exit 0,closingKeywordTargets={19037 → Fixes},check-governed-merges.mjs --pr 19042→ GOVERNED, the newestClaim:(5730566948) names this branch; no open PR touches AGENTS.md;originheads on the stem: only this branch. CI at 2026-09-18T13:45Z: 12 success · 11 skipped · 2 in progress (latest run per check), nothing red — the 13:31ZCheck Changesetfailure was the pre-label run, superseded by thelabeledrun (skipped).Contract review of record (
CONTRACT_REVIEW_TIER, in seat): PR #19042 comment 5730909983 — VERDICT PASS. §7 now names three classes of PR that never enter the merge queue on green alone, the third the maintainer's: 「a PR whose changed lines exceed 5,000 (additions + deletions, generated files included) — it lands only by a human merge, which is its review record」, and the arming instruction reads the size beside the file list and the author. The paragraph is re-flowed in place at net 0 (6 → 6 lines within the file's 120-byte budget). The sentence carries no card number: AGENTS.md's header forbids citations andcheck:pm-skill-id-lintenforces it — the dispatch's 「cite the ruling」 was the seat's error, the dev's reading correct; provenance lives in the PR body. Classes (a) / (b) keep their Prime Directive anchors; no directive added.Path face: governed rule layer (
AGENTS.md) ⇒ this PR stays a draft at the four-piece terminal:needs-user-decisionon the PR, the final 维护者速读 posted there, review requested from os-zhuang and hotlong. On an authorized APPROVED the seat lands under ruling C (channel permitting; today the approver has been landing by hand). Lands in either order with PR #19033 (the rule's mechanism). This card closes on the merge (Fixes).
Generated by Claude Code
os-elon-musk commented
on Sep 19, 2026 CollaboratorAuthorMore actionsLanding — PR #19042 @
8454706591armed on the maintainer's approval (skills seat, 2026-09-19T02:17Z)Tier H (AGENTS.md): approved by os-zhuang (
GOVERNED_APPROVERS; review 5254146703 on this head at 2026-09-19T02:16Z) and readied by os-zhuang's hand. Ruling C: record 5730909983 (PASS at this head),check-clause2-carriers.mjs --pair 19042exit 0, every completed check green (theCheck Changesetred was stale — beforeskip-changeset— re-run green at 2026-09-19T00:56Z);needs-user-decisioncleared; auto-merge SQUASH armed at 2026-09-19T02:17Z (the queue guard's pull_request leg was still running; the queue'smerge_groupleg judges the approval). The seat is clocking off on the maintainer's word — residue on this card (pm:dispatched→pm:done, unassign) is 留守 for the next seat or the maintainer's hand once the merge lands; the 收班简报 on the seat post (#7623) names it.
Generated by Claude Code
os-elon-musk commented
on Sep 19, 2026 CollaboratorAuthorMore actionsMerged — PR #19042 →
main8f42b17461(skills seat, 2026-09-19T02:41Z)Tier H: approved by os-zhuang (5254146703), readied by os-zhuang, auto-merge armed by the seat (landing 5738550632); merged through the queue at 2026-09-19T02:41Z. AGENTS.md §7 third class is on
main: a PR over 5,000 changed lines lands only by a human merge. Residue:pm:dispatched→pm:done, unassigned — the last 留守 row of 简报 5738550753 is discharged; nothing is owed to the next seat. This card closed on the merge.
Generated by Claude Code
- added a commit that references this issue
on Sep 28, 2026
Filed by the
domain:skillsexecution seat (session_01BTeBejoPUvRHN8WdAJC6oF, seat post #7623) at 2026-09-18T12:52Z, from the #19012 dev'sout_of_scope_findingson PR #19033 (report 5730187995), the class decided by the seat as the dev asked. Labelsdomain:skills·pm:queueset by the seat (its own lane:scripts/pm/**/ governed text); priority left to triage.Dedupe words:
AGENTS.md green alone third class·5000 lines human merge AGENTS·two classes of PR never enter on green alone·size class rules layer. Dedupe reading: the shift's corpus and every card since — none names §7's two-class sentence.Class (b) — the rules layer names two classes where the maintainer ruled three
AGENTS.md§7, verbatim shape: 「Two classes of PR never enter this path on green alone」 — the governed surface and Version Packages. The maintainer's 2026-09-18 ruling (verbatim 「还有应该完善skills,修改代码量超过某个行数(比如5000)就应该人工审核。」, recorded on #16045 and carried by #19012 / PR #19033) adds a third: a PR over 5,000 changed lines (additions + deletions, generated files included). SKILL.md :608 andreferences/landing-operations.md:26 now say so;AGENTS.mdstill says two, so the rules layer contradicts the landing rule until one line is added there. Governed text (AGENTS.md, 1099 / 1099 — fold or pay).What is asked (⛔ not asserted — triage grades)
One line in §7 naming the third class with the number and the 「generated files included」 clause, in the section's register; net 0 at the ceiling. Refs: #19012 / PR #19033; SKILL.md :608.
Generated by Claude Code