Repository navigation
finding(agents): os-dev.md still carries the falsified PR-body footer reading (a PATCH downgrades the session-URL footer to bare) after AGENTS.md moves to the measured form #15857
Description
Activity
First touch — skills seat (session
session_019RfFHiRCSs3JXLK4cwcfox, os-steve), 2026-09-05T12:0xZ. Gradedpriority:p3,domain:skills(.claude/agents/os-dev.md, governed),pm:blockedbehind #15670: the measured footer reading this card aligns to lands with PR #15856 (member 5 of #15379), andos-dev.mdmust copy the landed sentence, not a draft of it. One-line change, contract-review tier on that file; dispatched when #15670 closes.Blocked-by: #15670
Generated by Claude Code
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentationand removed
on Sep 5, 2026 Claim: PM loop round 7 — unblocked when #15670 closed (PR #15856 MERGED 13:48Z); two one-line alignments in the dev contract, governed: the PR-body footer reading in its measured form, and the dev's half of the maintainer brief (a
## 维护者速读(草稿)section on governed-surface PRs)
Session:session_019RfFHiRCSs3JXLK4cwcfox
Branch:claude/issue-15857-os-dev-footer-reading-and-brief-draft
Worktree:objectstack-issue-15857
Domain:domain:skills
File surface:.claude/agents/os-dev.mdonly (403/403, headroom 0 — line-neutral by folding): (a) the two footer lines in 字节与 sanitizer 纪律 say whatAGENTS.mdnow says (the session-URL footer survives an edit; the platform appends a bare block under whatever is sent; send an edited body with no footer and read it back); (b) the PR-body rules gain one line: a PR on a governed surface carries## 维护者速读(草稿)— five parts in Chinese from the business angle, 席位意见 left empty — which the seat finalizes as a comment at ACCEPT (the seat's half lands with PR #15908).
Container & model: S,mode:subagent,model: fable(dispatch-gates.mjs --tieron the path: MANDATORY — os-dev.md is clause-① mandatory)
Clause-②: no (dev contract prose; no accept/reject verdict moves)
Serial constraints cleared:os-dev.mdis in no flight and no open PR (member 4 landed 05:29Z; scan 13:5xZ). GOVERNED ⇒ draft PR, in-seat contract-tier review,os-zhuang+hotlong, human merge,skip-changeset; per the rule PR #15908 lands, the seat addsneeds-user-decisionand the 速读 at ACCEPT. The PR carriesFixes #15857.Decision re-read (13:5xZ): both facts are ruled — the footer reading by #15241's measurements (now on
maininAGENTS.md), the dev-draft half by the maintainer's 2026-09-05 instruction recorded on #15894. p3 stands; no ruling owed.
Generated by Claude Code
os-dev-report
{ "issue": 15857, "status": "done", "branch": "claude/issue-15857-os-dev-footer-reading-and-brief-draft", "pr": "https://github.com/objectstack-ai/objectstack/pull/15923", "premise_still_valid": true, "summary": "One file, .claude/agents/os-dev.md, line-neutral at 403/403 (draft PR #15923, governed: check-governed-merges --test exit 3, .claude/** x1). (a) The PR-body footer reading now says what AGENTS.md measures since PR #15856 landed: on an edit the session-URL footer survives verbatim and the platform appends a bare block under whatever is sent, so an edited body goes out with no footer of its own and is read back; the bare form is for comments. The two-form block stays; its bare-form annotation drops 'PR 正文编辑后的落形'; the 耐久归属 line was already right and is kept verbatim. (b) The PR-body rules gain the dev-draft half of the maintainer brief, between the language rule and the footer rule: a governed-surface PR body carries '## 维护者速读(草稿)' (five fixed parts, Chinese, business angle, 席位意见 empty; the seat finalizes as a comment). Heading spelling is byte-identical to PR #15908's (ASCII parens, read from the fetched branch blob). The governed-surface list is pointed at AGENTS.md rather than copied (see open_questions). Paid by folding two neighbouring pairs, content kept: old 278+279 (body/commit-message parsing) and old 286+287 (net-increase budget). Untouched: the card's assignee and labels, the model-tier frontmatter line; no frame block; no issue numbers in the file. The PR body practises the rule with its own 维护者速读(草稿) section. skip-changeset applied via the additive REST endpoint (POST labels 200), comparison read-back: after = {skip-changeset}, nothing stripped, nothing foreign. Channel: gh absent, GITHUB_TOKEN present, REST reads and writes accepted (PR create 201); stored PR body = sent minus the file's trailing newline (7494/7495 bytes), no other byte changed. The tree was cut at 984f1da973 (origin/main moved to b31ebfe7fe under me; no commit since touches os-dev.md).", "tests": "All on the final commit 6e753860ac, every exit captured redirect-first (cmd > log 2>&1; EXIT=$?). Derived: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (real changeset, 16 families) — all 16 exit 0; reconcile: '✓ dispatch-gates --ran: 16 derived famil(ies) accounted for — 16 run, 0 NOT-MEASURED.' check:doc-formula-expressions was PREREQUISITE NOT MET (exit 3 = NOT MEASURED) twice — @objectstack/formula unbuilt, then @objectstack/lint unbuilt — measured after building both under the lock: '✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 428 files / 1370 TS blocks judged clean by @objectstack/formula.' Ratchet before and after: '✓ check-skill-line-ratchet: .claude/agents/os-dev.md is 403 lines (ceiling 403; headroom 0).' (self-test 155 cases). '✓ check-skill-id-lint: 24 file(s) clean'; '✓ check-skill-frame-sync: 2 copies of the decision frame are structurally isomorphic across 2 files' (73 files scanned); '✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces' (outside this card's derivation, recorded by --ran); check-agent-model-declared: os-dev.md declares its tier; 'check-nul-bytes: OK (scanned 7674 text file(s))'. Five .claude/hooks/*.selftest.sh: 50/121/116/51/36 passed, 0 failed. Whole-repo pnpm lint via bash scripts/pm/os-verify-lock.sh slot issue-15857, post-commit: 'VERDICT command-exit 0 · held the lock 82s · waited 0s' (shared-box seconds). Byte widths (LC_ALL=C awk): lines written 278→114, 281→115, 282→118, 287→118, 397→86, 401→119; widest written 119 bytes; file max 120 unchanged; control-byte grep 0. Edit proven on disk: four removed anchors grep -c 0, four injected grep -c 1, wc -l 403; git show HEAD carries the lines. CI on PR #15923 (head 6e753860ac, foreground poll): all 29 check runs completed by 14:55Z, 17 success / 12 skipped / 0 failure — success: Lint & Repo Gates, TypeScript Type Check (+ workspace, source gates, consumer gates, debt ledger), Test Core, Dogfood Regression Gate, Check Changeset (skip-changeset honoured), Governed Surface Queue Guard, Check PR Size, Check Documentation Links, the three duplicate-claim/Part-of guards, Auto Label, filter; skipped: Build Core, Temporal Conformance, Build Docs, Console Pin Gate, Dogfood Verify CLI, the matrix placeholders and the opt-in tarball smokes (prose-only diff).", "mcp_calls": "2 — two MCP GitHub search_issues calls (the finding's dedup query and its positive control) after the REST search endpoint answered 403; the PR, the label, the report comment went through REST with the container token, the two cards through the zero-quota page payload, the sibling branch through git", "open_questions": [ { "question": "Should os-dev.md enumerate the five governed surfaces inline next to the 维护者速读(草稿) rule (the brief's parenthesis), or point at AGENTS.md as landed?", "options": [ "A: point at AGENTS.md (landed) — this file is not a check-governed-prose region, so an inline copy is the unpinned duplicate that gate exists to catch, and a 120-byte line cannot hold the list and the rule together", "B: enumerate on its own line, paid by one more fold (three folds total)" ], "recommendation": "A — long-term soundness (one register, no unpinned copy) and AI-safety (the pinned enumeration lives where a gate reads it) both point the same way; B buys a stale-prone copy for one line" } ], "out_of_scope_findings": [ "none filed — the one observation (check:doc-formula-expressions refuses one unbuilt prerequisite at a time: the printed Fix built @objectstack/formula, the gate then refused on @objectstack/lint; two lock rounds on this worktree) matched #15850, closed COMPLETED and carried on claude/issue-15850-prerequisite-closure-fix (claimed 13:11Z); this branch's base 984f1da973 predates that fix (origin/main b31ebfe7fe at 13:33Z had no commit on scripts/import-prerequisite.mjs since the base), so the observation is pre-fix and not re-filed. Dedup channel: REST search endpoint 403 (query and positive control) → one targeted MCP search_issues (hit #15850) + one control query (hit #15857)." ] }
Generated by Claude Code
Filed by the family member 5 dev of #15379 (session
session_019RfFHiRCSs3JXLK4cwcfox, branchclaude/issue-15379-agents-claude-rules-only, PR #15856) as an out-of-scope finding. Unassigned, no labels — a concrete documentation defect for triage to grade..claude/agents/os-dev.mdis a governed surface (draft PR, human merge) and was member 4's file (PR #15725), so it is not touched by member 5.What
.claude/agents/os-dev.md(section 字节与 sanitizer 纪律, the footer lines right after the two-form footer block) still states the PR-body edit reading that #15241 falsified:session 形按 create-only 对待:PATCH 编辑把它降回裸形。耐久归属写进正文散文或评论,⛔ 不循环重贴页脚;完整读数住 AGENTS.md 同条。PR #15856 (#15241's carrier) rewrites the AGENTS.md sentence it points at to the measured form: on an edit (
update_pull_requestor a REST PATCH, measured in this repository) the session-URL footer survives verbatim and the platform appends a bare footer block under whatever is sent — so an edited body is sent with no footer of its own and read back. Once that PR lands, the two surfaces disagree on the fact, while os-dev.md's own text names AGENTS.md as the full reading.Measured
GET /pulls/15856read-back).Ask
Align the one os-dev.md line with the measured AGENTS.md form (session form survives an edit; the platform appends a bare block; send an edited body with no footer and read it back) — one line, inside the file's ratchet ceiling (0 headroom today, so paid by merging an adjacent line), in a governed draft PR. No change to AGENTS.md is needed after PR #15856.
Dedup
REST listing
issues?state=all&since=2026-09-03paged to a short page (15 pages, 959 issues incl. closed; control #15241 present), titles and bodies grepped for os-dev.md near footer / PATCH / session-URL / 降回裸形: no card names the os-dev.md mirror. Neighbours: #15241 (open, AGENTS.md — carried by PR #15856), #15246 (closed), #14997 (closed, the create-path append).Refs: #15241 · PR #15856 · PR #15725 ·
.claude/agents/os-dev.md字节与 sanitizer 纪律.Blocked-by: #15670
Generated by Claude Code