docs(skills): drop the duplicated ASCII field-type decision tree from objectstack-data rules - #16369
docs(skills): drop the duplicated ASCII field-type decision tree from objectstack-data rules#16369claude[bot] wants to merge 1 commit into
Conversation
`skills/objectstack-data/rules/field-types.md` carried a ~2.1 KB fenced ASCII "Field Type Decision Tree" that re-listed the leaves of the same file's own per-category tables. It taught nothing those tables do not already teach — each `##` category heading answers the tree's top-level question and each row's "When to Use" answers the leaf — and it was strictly less complete than them (`slider` appeared in no branch). A mermaid rendering of the same tree already ships to the same reader in the docs site. The file is loaded whole into customer agent context on every session, so the duplicate was billed per session, forever. Removing it frees real headroom in the file's own density instead of taxing whichever unrelated sentence the next author can spare. Every table, the top-of-file blockquote and the `Common Field Configurations` and `Incorrect vs Correct` sections are untouched; the change is a pure deletion, no pointer line added. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
|
ACCEPT — governed in-seat review of PR #16369, head Implemented-by: Verified in a detached compare worktree at the PR head, not from the report:
Rulings on the two open questions
Out-of-scope finding #16366 (the docs flowchart routes Landing regime: governed ( Generated by Claude Code |
维护者速读事情: 改了什么:只删不加,71 行。表格、文件开头的约束说明、 没做什么,以及为什么:没有加「指向文档站同名 mermaid 图」的那一行。实测整个已发布技能语料没有任何文件引用仓库文档路径(客户手里只有技能包),而那张 mermaid 图第 36 行把「Secret value」指向 后续:两个 PR(#16187 与本 PR)都合并后,席位再开一张小卡把该文件的天花板重新锁到落地读数,并顺手改掉技能 SKILL.md 第 45 行那句「with decision tree」。 席位意见:建议合并。受管面( Generated by Claude Code |
Fixes #16324
改前 → 改后
One file, one pure deletion, no additions:
skills/objectstack-data/rules/field-types.mdloses the## Field Type Decision Treeheading and its fenced ASCII block (71 lines, 2,142 bytes, 536 tokens). Every table is untouched, the top-of-file blockquote is untouched, andCommon Field Configurations/Incorrect vs Correctare untouched.No pointer line was added. The ruling left that to this flight, and two measurements argued against one:
git grep -n "content/docs/" -- skills/returns zero hits, and the only docs URL anywhere in theobjectstack-databundle is adocsUrl:property value inside a code example. The bundle is self-contained by convention, and a repo path such ascontent/docs/...is not openable by a customer agent that has only the published bundle.Secret valuetopassword(line 36), where this file's ownpasswordrow warns the value is stored plaintext at rest and namessecretas the recommended credential type. Sending the reader there for "the same tree" hands them the authoring trap the table exists to prevent. Filed separately as docs(data-modeling): the field-type decision-tree flowchart routes "Secret value" topassword, contradicting the same page's table, ADR-0100 and the shipped skill rule #16366 — that card stays open, it is not addressed here.The block also taught nothing the tables do not: each
##category heading already answers the tree's top-level question and each row's When to Use answers its leaf, and the tree was strictly less complete than the tables (sliderappeared in no branch).Token reading (ceiling NOT lowered here)
rules/field-types.mdtokensGate line, verbatim:
Per the card, the
3584row inscripts/check-skills-token-ratchet.mjsis not lowered in this PR — a ceiling move is its own ruling, and this is the reading it would rule on.Governed-surface line/token readings (
skills/**)skills/**— linesskills/**— tokensNet negative in both units; no line budget is spent and none is bought.
Reader grep before deleting
Searched over
skills/,scripts/,content/docs/,packages/*/src/**tests, and everymust_containtoken in the tree.Field Type Decision TreeDecision Tree(case-insensitive)skills/objectstack-data/SKILL.md:45names this file's block — prose in an index line, read by no gate. See 验收备注.What kind of data?STARTnode.Owned childpackages/spec/src/data/field.zod.ts:1251.Name-keyed map →Single choice, always visiblemust_containtokensskills/objectstack-data/evals/holds onlyREADME.md; the tree's one evals JSON carryingmust_containbelongs to theobjectstack-uibundle and names nothing here.scripts/readerscheck-skills-token-ratchet.mjs:420names the file (its ceiling row), never the block.Zero readers go red. One goes stale in prose only, reported not repaired:
SKILL.md:45.Merge-tree proof against PR #16187
git merge-tree --write-tree HEAD 5a30844272— exit 0, 0CONFLICTlines, merged tree0217dc4b5b472ac009ab73b3dc81ebae8fa2523d. That PR's diff on this file sits at lines 91 and 106-110; this deletion started at line 147. Disjoint, and #16187 remains open and untouched by this branch.Gates
Every gate below, the ratchet readings and the whole-repo lint were run after the final commit, on head
bf3e5690a2— the tree this PR proposes, not an earlier one.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 20 families from the committed change set (1 path, three-dot against merge basea87163c89). Every one was run with its exit captured before any pipe, then reconciled:All 20 exit 0. One needed a second measurement:
pnpm --filter @objectstack/lint run check:doc-formula-expressionsfirst returned exit 3 —PREREQUISITE NOT MET(@objectstack/formulaand@objectstack/lintunbuilt), which its own text calls NOT MEASURED rather than a finding; afterturbo run build --filter=@objectstack/formula --filter=@objectstack/lintit re-ran at exit 0.Named separately by the dispatch:
check-skills-token-ratchet— self-test exit 0, live exit 0; readings quoted above.check-nul-bytes— exit 0. Self-scan of the edited file for control characters: clean.check-governed-merges --test skills/objectstack-data/rules/field-types.md— exit 3, as expected:check-skill-id-lint— not applicable, and it does not reach this diff. Its corpus isSCAN_ROOT = '.claude/skills/pm-dispatch'plusEXTRA_FILES = ['.claude/agents/os-dev.md', 'AGENTS.md']; the publishedskills/**catalog is outside it, which is why the derivation does not name it either.pnpm lint(eslint . --no-inline-config) throughscripts/pm/os-verify-lock.sh, slotissue-16324— acquired after 1s, held 139s, exit 0, no findings. Not narrowed, so there is no narrowing to declare. Shared-box seconds, per the lock's own verdict line.No changeset:
skills/**publishes nothing from a package, soskip-changesetis applied.验收备注
skills/objectstack-data/SKILL.md:45goes stale in prose. It readsAll 49 field types with decision tree and configs; after this PR that file has tables and configs but no decision tree. The dispatch ruled ONE file, so it is reported here rather than repaired — a four-word edit that belongs with the ceiling-lowering PR this reading is meant to enable.check:corpus-claim-driftis green over it, so no gate catches this. Noted, not filed.password, contradicting the same page's table, ADR-0100 and the shipped skill rule #16366 (unassigned, no labels, for triage) under the maintainer's finding threshold: it is a metadata-authoring trap with a data-at-rest consequence, pinned on the other side bypackages/spec/src/data/object.test.ts:2367. That number is named here for reference only and is not addressed by this branch.sliderentirely and compressed thepassword/secretdistinction into one parenthetical. Both are arguments that a second rendering of a 49-row table is a maintenance liability, not just tokens.维护者速读(草稿)
这个 PR 干了什么。 把
objectstack-data技能包里rules/field-types.md中那段 ASCII「字段类型决策树」整块删掉,只删不加。这段树把同一个文件里已有的分类表格又抄了一遍:表格的每个##小节标题就是树的第一层问题,每行的 When to Use 就是树的叶子。客户每开一次会话,这份技能包整包进上下文,这段重复就再被计费一次。为什么值得单独开一张卡。 这个文件的 token 天花板是 3584,删之前实际 3578,余量只有 6。上一轮为了写进两句契约说明,被迫删掉了一段不相干的文字来腾地方。这次删完是 3042,余量 542 —— 一次性从这个文件自己的冗余里付账,而不是让下一个作者继续拿无关内容抵扣。
没有加「指路」那一行,这是本轮唯一的自由裁量。 派发允许加一行指向文档站的同名 mermaid 图。实测两条理由否掉了它:整个已发布技能语料里,没有任何一个文件引用
content/docs/路径(0 命中),客户手里只有技能包、打不开仓库路径;更要紧的是,那张 mermaid 图第 36 行把「Secret value」指向password,而本文件的表格明确写着password在普通对象上是明文落盘、凭据要用secret。指过去等于把读者送进本表格专门要防的坑。该文档缺陷已另开 #16366 交分诊,本 PR 不碰。风险面。 纯删除,不改任何表格、不改文件开头的约束说明、不改天花板数字。删前按维护者要求扫过全部读者:除了
SKILL.md第 45 行那句「with decision tree」的描述会变得不准(已在验收备注里点名,按「只改一个文件」的裁定没有顺手改),没有任何门禁、测试或 eval 断言读这段内容。与仍在等人工合并的 #16187 做过git merge-tree验证,零冲突。席位意见。
🤖 Generated with Claude Code
Generated by Claude Code
Generated by Claude Code