Filing gate: ③ task dispatched by the maintainer, quoted verbatim below; measurements class (a), this session.
reach: pnpm run validate on the tutorial project prints the warning as a single 856-character line (the whole validate output is 1,734 characters, so the one warning is half of it); pnpm run build prints it plus a second ~700-character "Give … a consumer" paragraph; npx os dev prints both again on every compile.
Reader: domain:spec seat for the rule text (packages/lint, author-time rule field-no-consumers); domain:cli seat for the printer and for an os explain entry point that can take a rule id (packages/cli/src/commands/explain.ts accepts schema names only: os explain [SCHEMA]).
Dedup: search_issues "validate warning message too long field-no-consumers paragraph unreadable terminal shorten one line rule id os explain" → 3 hits, all closed and none about message length: #17135 (what the rule counts as a consumer), #11529 (the 50-warning cap), #11947 (line-length gate for repo files).
Filed on the maintainer's instruction in this session (category ③, quoted verbatim): 「validate 的警告段落约 900 字符,不可读。 field-no-consumers 在 validate、build、dev 各打一次整段。建议一行裁决 + rule: id + "os explain field-no-consumers 看完整推理",长文搬进 explain 或文档」
Today
⚠ object "my_app_ticket" · field "description": field "description" on object "my_app_ticket" is declared but nothing in this stack reads or displays it: no view column, inline grid column, form section, page binding, flow node, dataset or cube member, widget, formula, validation, hook or action names it, no declared field group places it on the synthesized layout, and no seed or import mapping matches on it. A translation label, a seed value, an import-mapping target, a permission grant, a flow that only WRITES it, an `inlineColumns` entry on a relationship field that does not set `inlineEdit` (no grid is drawn), or a dataset or cube member path the analytics door refuses (a hop or column that does not resolve, or a join the dataset's `include` does not declare) is a carrier, not a consumer. Verdict: inert — no site of any kind names it.
rule: field-no-consumers at objects[1].fields.description
One line, 856 characters, no wrap. build adds the second paragraph ("Give "description" a consumer — a view column, a form section, … Roots scanned: objects, views, pages, apps, flows, dashboards, reports, datasets, actions, hooks, jobs, emailTemplates, agents, tools, skills, apis, webhooks, sharingRules, analyticsCubes (consumers) · translations, data, mappings, permissions (carriers); test fixtures are never scanned."). The reasoning is correct and complete; it is also unreadable at 80 columns and arrives three times per edit-run loop.
Asked for
⚠ object "my_app_ticket" · field "description" is declared but nothing displays or reads it (inert)
fix: add it to a view column / form section, or remove the declaration
rule: field-no-consumers at objects[1].fields.description — `os explain rule field-no-consumers` for what counts as a consumer
- One sentence of verdict, one line of fix, the
rule: line as it is today.
- The exhaustive list of consumer and carrier kinds moves to
os explain rule <id> (new: explain currently takes only a schema name) and/or the rule's docs page; the message carries the pointer.
- Same shape for every author-time rule whose message today exceeds ~200 characters — the dead-button
action-governance line and the security-owd-unset refusal are the next two a newcomer meets.
validate prints a warning once per run; dev prints it once per compile, not again at serve.
Generated by Claude Code
Filing gate: ③ task dispatched by the maintainer, quoted verbatim below; measurements class (a), this session.
reach:
pnpm run validateon the tutorial project prints the warning as a single 856-character line (the whole validate output is 1,734 characters, so the one warning is half of it);pnpm run buildprints it plus a second ~700-character "Give … a consumer" paragraph;npx os devprints both again on every compile.Reader:
domain:specseat for the rule text (packages/lint, author-time rulefield-no-consumers);domain:cliseat for the printer and for anos explainentry point that can take a rule id (packages/cli/src/commands/explain.tsaccepts schema names only:os explain [SCHEMA]).Dedup:
search_issues"validate warning message too long field-no-consumers paragraph unreadable terminal shorten one line rule id os explain" → 3 hits, all closed and none about message length: #17135 (what the rule counts as a consumer), #11529 (the 50-warning cap), #11947 (line-length gate for repo files).Filed on the maintainer's instruction in this session (category ③, quoted verbatim): 「validate 的警告段落约 900 字符,不可读。
field-no-consumers在 validate、build、dev 各打一次整段。建议一行裁决 +rule:id + "os explain field-no-consumers看完整推理",长文搬进 explain 或文档」Today
One line, 856 characters, no wrap.
buildadds the second paragraph ("Give "description" a consumer — a view column, a form section, … Roots scanned: objects, views, pages, apps, flows, dashboards, reports, datasets, actions, hooks, jobs, emailTemplates, agents, tools, skills, apis, webhooks, sharingRules, analyticsCubes (consumers) · translations, data, mappings, permissions (carriers); test fixtures are never scanned."). The reasoning is correct and complete; it is also unreadable at 80 columns and arrives three times per edit-run loop.Asked for
rule:line as it is today.os explain rule <id>(new:explaincurrently takes only a schema name) and/or the rule's docs page; the message carries the pointer.action-governanceline and thesecurity-owd-unsetrefusal are the next two a newcomer meets.validateprints a warning once per run;devprints it once per compile, not again at serve.Generated by Claude Code