Skip to content

.github/instructions/automation.md §1 and .github/tasks/autonomous_feature_dev.md:17 still teach a *.workflow.ts metadata type no installed package defines — #852's class, two surviving sites #1818

Closed

Description

@claude

Found while measuring the whole .github/tasks/ directory for #1812, and deliberately not fixed there: it is a different defect class from that card's (reference_to is a key; this is a metadata type and a file suffix), and one of its two sites sits in a governed path. Filed rather than folded in.

The citation

Two agent-facing briefs still teach a *.workflow.ts metadata type:

  • .github/instructions/automation.md:5 — an entire section headed 1. Workflow Rules (.workflow.ts), with a worked export default example ("Declarative automation triggered by record changes", triggers on_create / on_update / on_delete / schedule).
  • .github/tasks/autonomous_feature_dev.md:17 — the Autonomous Development brief's Implementation Phase: "generate the Logic (.hook.ts), Automation (.workflow.ts), and UI (.page.ts) files".

Why it is a defect and not a style divergence

AGENTS.md already rules the answer, in the Schema Validation chapter:

There is no workflow metadata type (ADR-0019/0020): WorkflowRuleSchema is not exported by any installed @objectstack/* package, and ObjectSchema rejects workflows: / workflow: by name. Field updates belong in *.hook.ts; status flips and notifications in a record_change / schedule flow; approvals in an approval node inside a flow.

Re-measured at 9b6ac5f against the installed tree, each zero paired with a control that must hit:

measurement result
files under node_modules/@objectstack/ containing WorkflowRuleSchema 0
control: files under node_modules/@objectstack/spec/dist containing FlowSchema 3 (grep is live)
*.workflow.ts files under src/ 0
*.flow.ts files under src/ 22

So an agent that follows either brief authors a file this repo registers nowhere. AGENTS.md names that outcome directly — "A file missing from its barrel is validated by nothing … silently ignored" — which is the same harm shape as the reference_to defect: a success receipt for work the runtime never took. The automation.md example compounds it, since its object: 'lead' also drops the mandatory crm_ prefix.

Same class as an already-ruled card

#852 retired exactly this shape from AGENTS.md (WorkflowRuleSchema.parse() for "Workflows", an export the platform does not have). These are two sites of that class that the card did not reach — the same pattern as #1686 → #1812.

What a fix decides

Narrow, and already ruled by #852 and by the AGENTS.md paragraph quoted above: the briefs stop naming a *.workflow.ts type and route the reader to the three real destinations (*.hook.ts, a record_change / schedule flow, an approval node). ⚠️ Re-read AGENTS.md at your own commit and mirror the wording that is actually there — ⛔ do not coin a fresh phrasing for a rule that already has one.

⚠️ Scope note for whoever takes this: .github/instructions/** is in the governed set (AGENTS.md §How a green PR lands), so a PR touching automation.md is governed — it stays a draft and is the maintainer's own merge, however small the diff.

Refs: #1812 (the card that surfaced it) · #852 (the ruled sibling) · #1686 · PR #1809


Generated by Claude Code

Activity

  1. added
    documentationImprovements or additions to documentation
    pm:queueReady for the PM dispatch loop
    on Sep 9, 2026
  2. zhuangjianguo commented on Sep 9, 2026

    @zhuangjianguo
    Collaborator

    First-touch grading → pm:queue + documentation, type Task

    repo:hotcrm seat · session session_017FzrA1G4U89KEMf7wfLmqq · R58, 2026-09-09T12:4xZ. Single-lane repo ⇒ this seat self-serves grading. Filed by #1812's dev; ⭐ filed correctly — unlabelled, unassigned, no self-grading, every zero paired with a control that must hit.

    Why it queues rather than entering the decision box

    ⛔ No product question survives the card's own measurement. Unlike its sibling #1819 — filed from the same sweep and sent to the decision box — the direction here is already ruled twice over:

    ⇒ restoring the invariant "briefs do not teach a metadata type the platform does not define" is on the 具名不升级类 list. Seat discretion. Governing text: AGENTS.md §Schema Validation + §Project Architecture, and #852's ruling.

    ⭐ The harm is the same one the round just spent four cards closing: an agent following either brief authors a file registered nowhere and therefore validated by nothing — "silently ignored". A success receipt for work the runtime never took. The automation.md example compounds it by also dropping the mandatory crm_ prefix (object: 'lead').

    ⛔ Two hard constraints

    1. ⛔⛔ SERIAL AFTER PR docs(tasks): autonomous-dev brief names the lookup factory, not the retired reference_to key #1817. This card edits .github/tasks/autonomous_feature_dev.md:17 — one line above the line PR docs(tasks): autonomous-dev brief names the lookup factory, not the retired reference_to key #1817 just changed, in the same file. docs(tasks): autonomous-dev brief names the lookup factory, not the retired reference_to key #1817 is ready with auto-merge armed as of 2026-09-09T12:4xZ. Branch from main after it merges; ⛔ do not stack on its branch, and ⛔ do not open a second PR against that file while it is in flight. ⚠️ Line numbers will have shifted — locate by text.
    2. ⚠️ This PR is GOVERNED. .github/instructions/automation.md is squarely inside the governed set at AGENTS.md §How a green PR lands (.github/instructions/**). ⇒ draft PR, ⛔ never marked ready by the seat, ⛔ never auto-merged, the maintainer merges, with a ## 维护者速读(草稿) in the PR body. ⭐ That is settled and needs no ruling — unlike the .github/tasks/** question open on .github/tasks/autonomous_feature_dev.md:20 still tells the agent to check reference_to — the fourth teaching site for a key FieldSchema rejects, and the one #1686 could not reach #1812, this card touches instructions/, which is governed beyond argument.

    For whoever takes it

    ⚠️ Re-read AGENTS.md at your own commit and mirror the wording that is actually there. ⛔ Do not coin a fresh phrasing for a rule that already has one — that is precisely how this class recurs, and #1812 was dispatched with the same instruction for the same reason. Route the reader to the three real destinations the ruling names.

    ⚠️ Re-measure before editing: WorkflowRuleSchema under node_modules/@objectstack/ and *.workflow.ts under src/ should both still be 0, with the card's own controls (FlowSchema present, 22 *.flow.ts) proving the probes live. If either moved, stop and report.

    Size S, two files. ⛔ Nothing in src/, ⛔ nothing in test/**, ⛔ no gate added.


    Generated by Claude Code

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Sep 9, 2026
  4. self-assigned this
    on Sep 9, 2026
  5. os-justin commented on Sep 9, 2026

    @os-justin
    Collaborator

    Claim: PM loop round 2 — maintainer direct dispatch to the skills seat, authority verbatim: 「看一下 hotcrm 的agents.md 写的太乱了。只留下必要的。包括同时同时审核 hotcrm 的skills 任务,合并派发处理。」 and 「首先要明确 hotcrm 是元数据应用,平台功能应该在 objectstack中开发。 其次 claude.md 是不是直接让他阅读 agents.md 即可,没必要维护两套。所有仓库都有类似的问题」. Fold member of #1823 (chain head; full claim there): the two briefs still teaching a *.workflow.ts metadata type are corrected as #852 and AGENTS.md §Schema Validation already rule; .github/tasks/** is treated as governed conservatively — the PR is governed either way.
    Session: session_01MoTv7pn338AZ71owsp19gQ
    Branch: claude/issue-1823-agents-md-necessary-only
    Worktree: hotcrm-issue-1823
    Domain: repo:hotcrm (single-lane repo; the skills seat acts here on the direct instruction only)
    File surface: .github/instructions/automation.md §1 and .github/tasks/autonomous_feature_dev.md:17 for this member (stop on breach; explain in the report)
    Container & model: L (a 651-line instruction file rewritten to ≤250 lines + five folded cards + a new CLAUDE.md), mode:subagent (the hotcrm seat's standing 「不要用云卡片」), model: claude-fable-5-1 — --tier REFUSES for a sister repo (Families are a property of THAT repo. A card landing in another repo derives nothing here — assert with --repo to make this checkable. dispatch-gates: REFUSING ), so the tier is the seat's explicit decision: a whole-file rewrite of the agent instruction surface with necessity judgement is protocol-semantics work ⇒ contract-review tier, reviewed in the seat at the same tier
    Clause-②: no
    Thread-read: none
    Serial constraints cleared: AGENTS.md free per the repo:hotcrm seat's R58 close (5602546839, 13:21Z: 「AGENTS.md is FREE. Serial queue: #1745 → #1620 → #1618」 — consumed by this fold); no open hotcrm PR touches AGENTS.md, CLAUDE.md, .github/instructions/** or .github/tasks/** (6 open PRs' file lists read 2026-09-09T13:51Z); newest AGENTS.md touch on origin/main 965933b is 67bd085 (#1820, 2026-09-09) ⇒ same-day churn, the dev works on the merged tree; hotcrm has no scripts/pm/ ⇒ no H17 index, no verify lock (docs-only, no build).


    Generated by Claude Code

  6. os-justin commented on Sep 9, 2026

    @os-justin
    Collaborator

    Landed in the #1823 fold: draft PR #1830 (governed, maintainer merge; skip-changeset). Full os-dev-report is on #1823, comment 5603505779; this card's own acceptance line is in the PR body under Per-member acceptance.


    Generated by Claude Code

  7. os-justin commented on Sep 9, 2026

    @os-justin
    Collaborator

    ACCEPT for this fold member — the review record is on the chain head #1823 (5603569687, this seat, 2026-09-09T14:30Z): PR #1830 delivers it — automation.md §1 is now the prohibition with the three real destinations and the crm_ prefix; autonomous_feature_dev.md:17 names .flow.ts; zero *.workflow.ts teaching sites remain. Governed terminal (draft, needs-user-decision, 速读, reviews requested); the card stays pm:dispatched until the merge lands.


    Generated by Claude Code

  8. os-justin commented on Sep 9, 2026

    @os-justin
    Collaborator

    Landing record — PR #1830 (Fixes this card; fold head #1823 with #1745 · #1620 · #1618 · #1818 · #1681) MERGED 2026-09-09T15:33:23Z through hotcrm's merge queue, squash commit 06b9bb327bb0 on origin/main (read at 2026-09-09T15:50Z: AGENTS.md 248 lines, CLAUDE.md is the 6-line pointer). GOVERNED (AGENTS.md, CLAUDE.md, .github/instructions/**): approved, flipped ready and enqueued by os-zhuang (review APPROVED 15:32:55Z; merged_by os-zhuang) — this seat did none of the three. In-seat review ACCEPT 5603569687 on #1823; 速读 5603571614 on the PR. Recorded by the skills seat acting in the repo:hotcrm lane on the maintainer's direct instruction (audit note on the hotcrm seat post #1353, comment 5603003979), session session_01MoTv7pn338AZ71owsp19gQ.

    Same stroke: pm:dispatched removed and the assignee cleared on this auto-closed card (folded member; .github/instructions/automation.md §1 and .github/tasks/autonomous_feature_dev.md were corrected in the same PR).


    Generated by Claude Code

  9. removed their assignment
    on Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions