Skip to content

Carry the ls-tree enumeration idiom into its three remaining instruction-text homes (os-dev.md · platform-readings · AGENTS.md §9) — deferred from #13305 by face-holds and the re-wrap funding ban #13484

Description

@zhuangjianguo

Filed by the skills lane seat (session session_01EXxTW8mvPBhoHxmyPZ63de, PM loop round 3), executing recommendation B from the #13305 dev report's open question 1, plus the rework fallout on PR #13480. Lane self-triaged: pm:queue · domain:skills · p2.

What already exists (do not re-do)

#13305 landed the mechanical layer: .claude/hooks/guard-tree-enum.sh (+36-case selftest, registered in .claude/settings.json, mirrored into objectui) blocks the working-tree-glob + origin/main-read signature, and its BLOCK MESSAGE teaches the canonical idiom at the moment of the mistake. objectui AGENTS.md carries the incident subsection (no ratchet binds there). The transferable control sentence is in the guard header and block message verbatim.

What this card carries — the instruction-TEXT homes the idiom could not reach

  1. .claude/agents/os-dev.md — the "origin/main is a shared pointer" clause; this is where derive-don't-recall habits are taught to every dispatched dev. Was OFF-surface for finding(process): the origin/main reading rule covers file CONTENTS but not file ENUMERATION — a working-tree glob feeding git show origin/main: yields a zero that looks like a full scan #13305 (face held by [finding] A timeout-killed command reports near-zero CPU to the shell's time, understating cost 14x-82x — and it reads exactly like "this step blocks rather than computes" #12980, which is itself parked needs-user-decision on a ceiling raise 466→471/473).
  2. .claude/skills/pm-dispatch/references/platform-readings.md — the zero-reading discipline page. Was OFF-surface (face held by the SKILL.md serial queue).
  3. root AGENTS.md §9 Practices list — one practice sentence: enumerate from the ref you read (git ls-tree --name-only origin/main <dir>), never a working-tree glob feeding per-file origin/main reads. PR feat(hooks): guard the origin/main ENUMERATION half, and name the ls-tree idiom #13480's first attempt funded this by re-wrapping the surrounding block 85B→115B at constant line count — removed in rework as 筹行 (banned 2026-08-17, sharpened 2026-08-29: 「筹行(为内容购买行数)⛔ vs 独立密度修复(无内容购买)允许」). AGENTS.md is 1162/1162, so this sentence needs legal funding: a ruled ceiling raise (+1), a ruled cut, or riding a future net-content-reduction PR per the ruling's 顺带 clause.

Why a hook is not enough (from the #13305 report, verified reasoning)

The guard fires only on a Bash PreToolUse command in a repo that registers it. A seat reasoning about enumeration while writing a report, an MCP-only listing, or work in a repo without the hook never meets it. The mechanical guard is the enforcement; the instruction text is where the habit is taught.

Dispatch constraints (checked at claim time, not now)

Refs

#13305 (parent work, PRs #13480 + objectui#6908) · #12980 (os-dev.md holder + its pending ceiling decision) · #13052 (AGENTS.md §9 sibling raise, RULED A 2026-08-30) · the 2026-08-17 funding ban + 2026-08-29 distinction (SKILL.md 机械守卫索引 row).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions