Repository navigation
docs: hand-written inventory counts are deleted across skills, docs, READMEs and code comments; the names and the source of truth stay - #27542
Conversation
…Es and comments A hand-written count of a live inventory (field types, lifecycle events, node types, plugins, locales, metadata types, chart types) teaches nothing the names do not, no gate reads it against the tree, and it drifts the moment the inventory changes. The numbers go; the enumerated names stay where they teach something, and the stale metadata-type table in packages/metadata/README.md gives way to a pointer at the registry that declares the types. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2fNkBkNQ88EMzvcrPW
Trigger styles, approver styles, decision modes, report shapes and chart families are spec enumerations; the pages enumerate the names and the numbers before them drifted the same way the digits did. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2fNkBkNQ88EMzvcrPW
📓 Docs Drift CheckThis PR changes 2 package(s): ⛔ 1 release-owned page(s) name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 169 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 0743ee49e8d97693ce74fc6a9b3f3f21d8800c13 && git checkout 0743ee49e8d97693ce74fc6a9b3f3f21d8800c13
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin d4ff1a025fa4568505bfbc66a0f8cbeb3bab06ff de4e5ccabb981868b62389693e16af8c24e96e5f && git checkout -B drift-repro d4ff1a025fa4568505bfbc66a0f8cbeb3bab06ff && git merge --no-ff de4e5ccabb981868b62389693e16af8c24e96e5f
node scripts/docs-audit/affected-docs.mjs --json d4ff1a025fa4568505bfbc66a0f8cbeb3bab06ff
|
|
domain:skills#1 · marchtian · session_017ihL2dPRZXfgE1A2Vct3FU Contract reviewServed-tier: Reviewer: an independent agent at ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgmentPer Should-fix, same file: Must-fix: none. Implemented-by: VERDICT: PASS |
…bilities pages, the releases page left to a docs-only PR, every shipping package in the changeset The releases tree is release-owned, so its one count stays for a dedicated docs-only PR. The changeset now names every package whose shipped bytes the sweep touches. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2fNkBkNQ88EMzvcrPW
…pins against the locale packs Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017ihL2fNkBkNQ88EMzvcrPW
|
domain:skills#1 · marchtian · session_017ihL2dPRZXfgE1A2Vct3FU Contract reviewServed-tier: Delta review: ① Derived judgments
② Semver level
The frontmatter now names ten packages:
Left out, correctly:
The list is exactly the set of packages that publish a changed byte. Right. ③ Boundary flags
④ Design judgmentThis section covers only the delta in the
Outside
Check-runs on Implemented-by: VERDICT: PASS Should-fix (none blocks):
|
|
domain:skills#1 · marchtian · session_017ihL2dPRZXfgE1A2Vct3FU 席位核对 — ACCEPT · #27522 · head
|
Requested by 田騏 · project thread
domain:skills#1 · marchtian · session_017ihL2fNkBkNQ88EMzvcrPW
Fixes #27522
Clause-②: no
Metadata-protocol: none
维护者速读
packages/metadata/README.md那张已经过时的类型表(列着trigger、validation、theme等根本不存在的类型)换成指向DEFAULT_METADATA_TYPE_REGISTRY的一句话。packages/spec一行//注释,ui/三个文件的注释),不改任何行为;回滚即还原本 PR。skills/**为 Tier H。packages/metadata/README.md(唯一删掉一张表的地方)、skills/objectstack-data/references/data-hooks.md(「Why so few?」那条说明)、content/docs/api/error-catalog.mdx首句。node scripts/check-skills-token-ratchet.mjs,预期最后一行✓ check-skills-token-ratchet: 84 authored bundle file(s) within their ceilings。skills/**是 Tier H,落地需 os-zhuang 或 hotlong 批准;其余由席位落地。What changes
Rule applied, from the triage ruling: delete the number, or point at the source of truth; a count that matters is generated or pinned by an existing gate; no new gate.
The card's Inventory table, every row taken
skills/objectstack-data/SKILL.mdL41, L297rules/field-types.mdis the pointerskills/objectstack-data/rules/field-types.mdL9skills/objectstack-data/SKILL.mdL46skills/objectstack-data/references/data-hooks.mdL10, L31, L46findis the only read event stays)skills/objectstack-automation/SKILL.mdL54skills/objectui/README.mdL58skills/objectui/guides/schema-expressions.mdL231content/docs/capabilities/views.mdxL30content/docs/releases/implementation-status.mdxL45docs/qa/platform-checklist/README.mdL374enumSource.expectis untouched)examples/app-showcase/README.mdL19, L72packages/metadata/README.mdL195DEFAULT_METADATA_TYPE_REGISTRYandMetadataTypeSchema(see Acceptance notes: the table was wrong, not just stale)packages/metadata/ROADMAP.mdL23DEFAULT_METADATA_TYPE_REGISTRY, by protocol domainpackages/spec/PLUGIN_STANDARDS.mdL208ctx.registerService()ui/packages/i18n/README.mdL3, L7The wider re-sweep (sites the card did not list)
Patterns: a digit, a
N+, a parenthesised(N)or a spelled-out number before an inventory noun, overskills/**,content/docs/**,docs/qa/**,examples/**, package READMEs,ui/**READMEs, and.describe()/ JSDoc / code comments inpackages/spec/srcandui/packages/*/src.skills/objectstack-query/SKILL.mdL238: "The six functions (…)" → "The functions (…)".skills/objectui/guides/plugin-development.mdL95: "The eleven control kinds" → "The control kinds" (a code comment inside the guide).content/docs/capabilities/index.mdx: "40+ field types", "Nine lenses", "Five trigger styles", "Seven approver styles, four decision modes";data.mdxL4 "40+ field types";approvals.mdxL4, L10, L26 (two headings: "seven resolution styles", "four decision modes"; no page linked those anchors,check:doc-anchorsgreen);automation.mdxL4 "Five trigger styles";analytics.mdxL4, L12, L29 "~20 / roughly twenty chart families", "four report shapes".content/docs/frontend/plugins/index.mdxL24 "14+ official plugins" (18 exist);frontend/architecture-overview.mdxL317–L330 "20+ hooks", "91+ Shadcn UI atoms", "35+ field renderers", "20 plugin packages", "(15 more)".content/docs/protocol/objectql/index.mdxL114 andschema.mdxL1036 "20+ field types";query-syntax.mdxL350, L1217 "all five drivers", L1041 "All six functions".content/docs/plugins/packages.mdxL7 "72 package manifests", L27 "all 15 protocol domains";protocol/kernel/config-resolution.mdxL149 "19 types";api/error-catalog.mdxL7 "9 error categories and 56 error codes" (the page itself is the catalogue; no gate pins either number).examples/app-todo/README.mdL51 "20+ fields", L66 "Actions (8)", L73 "4 Key Metrics", L77 "Reports (5)", L84 "Automation Flows (4)";examples/app-showcase/README.mdL159 "six protocol domains".ui/packages/components/README.mdL9 "60+ Components (46 from Shadcn + 14 custom)";ui/apps/console/README.mdL11 "15+ view plugins";ui/packages/types/README.mdL409 "50+ members";ui/packages/plugin-grid/README.mdL101 "20 values and 29 types";ui/packages/plugin-form/README.mdL968 "all five renderers";ui/packages/fields/README.mdL344, L354 "All four widgets", "all eight read sites across the four widgets";ui/packages/i18n/README.mdL359 "three functions".packages/spec/src/kernel/metadata-plugin.zod.tsL82 "hook(24 lifecycle events)" (HookEventdeclares eight);ui/packages/app-shell/src/views/metadata-admin/i18n.tsL6, L735 andregistry.tsL7 "27 metadata types" (MetadataTypeSchemadeclares 31);ui/packages/i18n/src/namespaces/studio/zh.tsL3190 "the other 21 node types". Comments only; no string a user sees carried a count.Kept, by name
content/docs/api/plugin-endpoints.mdxL129 "all 12 routes": pinned by the cloud repo'sai-route-ledger.tsconformance test the sentence cites.content/docs/api/client-sdk.mdxL916 andpackages/client/CLIENT_SPEC_COMPLIANCE.mdL10 "27 routes": a dated audit measurement.content/docs/ui/create-vs-edit-form.mdxL92 "all 40 fields",protocol/kernel/index.mdxL164 "200+ plugins" and L233 "15 languages": hypotheticals, not inventories.content/docs/frontend/plugins/plugin-editor.mdxL73 andplugins/index.mdxL169 "100+ languages": Monaco's inventory, not ours.examples/README.mdL14,examples/app-crm/README.mdL5 andgetting-started/examples.mdxL240–L244 ("10+ objects", "15+ actions per domain", "5 AI agents"): HotCRM, an external repository.skills/objectstack-i18n/SKILL.mdL242–L244 ("2-3 locales", "5-20 objects"): sizing thresholds, not counts.ui/packages/fields/src/widgets/number-format.tsL273 "10 locales x 18 values x 4 precisions": a recorded measurement.skills/**: left as written.docs/audits/**,ui/docs/**(ADRs, audits, design, RFCs),packages/spec/DEVELOPMENT_PLAN.md,packages/core/PHASE2_IMPLEMENTATION.md,packages/spec/liveness/README.md,content/docs/permissions/system-context.mdx, sample CLI output, the computed "10 skills" and generated "106 components",skills/objectstack-ai/SKILL.mdL87.Skills readings (Tier H,
skills/**)Deletion only. Lines are unchanged in every touched file (no re-wrap); tokens are
ceil(utf8 bytes / 4)on the whole file, stamp line included.skills/objectstack-data/SKILL.mdskills/objectstack-data/rules/field-types.mdskills/objectstack-data/references/data-hooks.mdskills/objectstack-automation/SKILL.mdskills/objectstack-query/SKILL.mdskills/objectui/README.mdskills/objectui/guides/schema-expressions.mdskills/objectui/guides/plugin-development.mdWhole package: the sum of every
SKILL.mdis 4610 → 4610 lines; the ratcheted authored bundle is 207857 → 207840 tokens (the gate's own figure after:ratcheted (authored) 207840 / 217474).@objectstack/skillspatch changeset:.changeset/27522-inventory-counts.md.Tests
None added or changed: the diff is prose, READMEs, one changeset and four code comments. No behaviour is tested by a count.
Acceptance notes
packages/metadata/README.md's table was not merely stale. It listedvalidation,theme,workflow,trigger,schedule,manifest,permission_set,role,profile,rag_pipeline,modelandprompt, none of which is inMetadataTypeSchema(31 names onmain), and the spec's own comment says there is notriggerand novalidationmetadata type. Keeping those names would have taught the wrong thing, so the rule's second arm applies: the section now points at the registry and keeps no copy.skills/objectstack-data/rules/field-types.mdL181): this PR edits L9 only; the branch is on today'smaintip (aef631b8, which is an ancestor of this head), so there was nothing to merge.ui/packages/plugin-grid/README.mdkeeps a hand-written export list under "The complete public surface"; nothing reads it againstsrc/index.ts. Same class as this card, a different remedy (generate or delete the list), and not a count.Verification
Local gates, run at
93c9b71f, every exit code captured before any pipe:node scripts/check-skills-token-ratchet.mjs→ exit 0 (✓ check-skills-token-ratchet: 84 authored bundle file(s) within their ceilings; 10 generator-owned file(s) measured, not ratcheted.), plus--self-test→ 0.pnpm --filter @objectstack/spec build && check:generated→✓ All 14 generated artifacts are up to date(check:docs, check:skill-docs, check:skill-refs, check:api-surface, check:authorable-surface, check:export-origins, check:liveness, check:strictness-ledger, check:meta-url-spelling all ✓);check:llms-txt→ 0.pnpm check:doc-anchors,check:doc-authoring,check:doc-frontmatter,check:docs-audit-scope,check:docs-single-h1,check:docs-spec-enumerations,check:docs-redirects,check:nul-bytes,check:issue-citations,check:release-notes,check:release-page-status,check:closed-ceremony-text,check:published-readme-links,check:skill-compatibility,check:skill-frame-sync,check:skill-identifier-liveness,check:pm-skill-id-lint,check:org-identifier,check:keyed-text-bounds,check:corpus-claim-drift,check:role-word,check:pm-prior-rulings,check:platform-checklist,check:examples-live-imports,check:spec-docblock-symbol-anchors,check:overlay-whitelist-table,check:system-context-census, and thenode scripts/check-*.mjsdocs families the derivation named → all exit 0.check:i18n(needs the built CLI),check:docs-transcript-drift(needs@objectstack/lintbuilt),check:skill-examples(needspackages/client-react/dist);pnpm --filter @object-ui/i18n type-checkand@object-ui/app-shell type-checkstop on the unbuiltui/packages/coreand@object-ui/fieldsclosure (the diff in those packages is comments only); every other family indispatch-gates --commands(repo-wide scans such aspnpm lint, theui/test and build lanes, Test Core) is CI's run and is cited from this PR's check-runs.node scripts/pm/dispatch-gates.mjs --ranover the recorded subset: see the os-dev-report comment on the card for the reconciliation line.Human Minimum
packages/specholds no runtime logic. (one//comment changed)pnpm lintis CI's run.main, one pull request.packages/spectouched:check:generatedreports all 14 artifacts current; nothing to regenerate for a comment.content/docs/references/orpackages/*/CHANGELOG.md;content/docs/releases/implementation-status.mdxis the one releases-tree file, a living status page the card and triage put in scope, in a docs-only PR.🤖 Generated with Claude Code
https://claude.ai/code/session_017ihL2fNkBkNQ88EMzvcrPW
Generated by Claude Code