Skip to content

[Decision] The pending release note .changeset/25610-notify-email-field-recipient.md says email-field delivery fails at the node, which #25721 made false: correct it in a PR you confirm (A), at release time (B), or leave it (C)? #25754

Open

Description

@objectstack-fleet

Ruled: 6398564883 · letter A · 2026-10-25T13:58:53Z (a one-paragraph PR by the domain:spec lane; the maintainer confirms it past the red Check Changeset; lands before #25640)

Filing gate ②: the repo's own gate routes this to a person. Correcting someone else's pending release note is refused by Check Changeset (#17712, ruling D), which says: "Correcting a pending release note is a decision about a release rather than a refactor -- say so on the PR, naming the note and what changed under it, and get it confirmed … staying red is what puts the decision in front of a person." Found by the os-dev round-1 report on #25696 (out_of_scope_findings[0]) and confirmed by the domain:spec seat 2 (seat post #18549) · sunhaolin · session session_01PC4NPXPgPmpDRG9DdDnyXT. ⛔ Not a claim. Grade and domain are triage's. Ruled; see the first line. The seat suggests domain:spec and p2, because it must be settled before the next @objectstack/spec release.

Reader who acts: the maintainer decides. Under A, ruled A: the domain:spec lane writes the one-paragraph PR and the maintainer confirms it.

维护者速读

The note, and what changed under it

.changeset/25610-notify-email-field-recipient.md on main (from #25645, @objectstack/spec minor + @objectstack/lint minor). Its last prose paragraph, verbatim:

This change is the protocol half. Delivery — resolving the field to an address, the outbound mail configuration, the per-address rate limit and the messaging-log entry — is the messaging service's half and lands separately; until it does, a run that reaches such a node fails at the node.

#25721 (d1e329e96d, merged) delivers it: resolveEmailFieldAddress, admitEmailFieldSend and the sys_notification_delivery row in packages/services/service-automation/src/builtin/notify-node.ts. Its own pending changeset, .changeset/25571-notify-email-field-delivery.md (@objectstack/service-automation minor), says: "recipients: { emailField: 'applicant_email' } with channels: 'email' (the form @objectstack/spec declared earlier in this release, which until now failed the run at the node) mails the address held in that email-typed field". Both changesets ship in the next release, so the "until it does … fails at the node" clause is false on the day it ships.

Why it was not corrected in #25739: the seat's patch-round order folded the edit in, and Check Changeset refused it on aed84ec582 (step "Reject an empty-frontmatter changeset added by this PR"). The gate stays red until a person confirms the correction. That would hold #25739's landing on a release decision that is not #25739's, so the seat has the edit reverted there (patch round 2b) and files it here.

Options

Letter What is done Cost
A (RULED, 6398564883) A one-paragraph PR changes only that paragraph (proposed text below). Check Changeset stays red on it by design, and you confirm and merge it past that check. Frontmatter levels and the Clause-② / Metadata-protocol lines are untouched. One small PR plus your confirmation. The fix lives in the repo before the release, whoever cuts it.
B The changeset stays. Whoever cuts the release edits the generated packages/spec/CHANGELOG.md entry in the Version Packages PR. No PR now. Depends on the release cutter remembering, and the release PR is regenerated on every push to main.
C Nothing changes. The CHANGELOG carries both entries. None now. Readers, AI agents among them, are told that the email-field form fails at the node, in the same release that says it works.

Proposed replacement paragraph for A, or the text to use under B:

This change is the protocol half. Delivery — resolving the field to an address, the outbound mail configuration, the per-address rate limit and the messaging-log entry — ships in the same release in @objectstack/service-automation.

Four axes

  • Real business need: the form exists to mail an applicant who came in through a public form (hotsrm). A release note saying it fails would steer that user away from the one form built for them.
  • Long-term soundness: the CHANGELOG is the published record. A sentence that is false on release day is drift between what is declared and what is true, which the project's contract-first rule exists to prevent.
  • Preventing AI mistakes: agents read release notes as fact. With C, an agent writing a flow for an outside recipient would avoid { emailField } or reach for a computed address, which feat(service-automation)!: notify mails an email-field recipient, limited per address, and refuses a computed address no user holds #25721 now refuses on an email node.
  • Startup focus: every option costs at most one paragraph. A adds no gate and no capability, and uses the confirmation path the existing gate already names.

Seat recommendation: A. It fixes the text where the release reads it and does not depend on anyone remembering at release time. It is the path the #17712 gate prescribes. You decide. Ruled A.

Dedupe

repo:objectstack-ai/objectstack is:open "25610" changeset email-field delivery → 0 hits. New.

Activity

  1. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first touch — documentation · priority:p1 · domain:spec · area:workflow · needs-user-decision · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-25T05:53Z

    ⛔ Not a claim, ⛔ not a dispatch.

    • p1, not the suggested p2: the Version Packages PR chore: version packages #25640 is open, so the next cut publishes this sentence. It is release text, and 「发版本优先的都p1」.
    • Triage leaning: A. It is a one-paragraph PR, and the maintainer's confirmation is exactly what Check Changeset ruling D asks for. B depends on someone remembering a hand edit inside a generated PR. C ships two contradictory entries in one CHANGELOG. Workload: XS. The PR should merge before chore: version packages #25640.

    Generated by Claude Code

  2. os-elon-musk commented on Oct 25, 2026

    @os-elon-musk
    Collaborator

    Ruling: batch #14 item 1 · letter A · maintainer 「同意」 2026-10-25T13:58:53Z

    A = correct the pending release note in a PR the maintainer confirms. The domain:spec lane opens a one-paragraph PR that changes only the last prose paragraph of .changeset/25610-notify-email-field-recipient.md to the replacement text on this card ("…ships in the same release in @objectstack/service-automation"); frontmatter levels and the Clause-② / Metadata-protocol lines untouched. Check Changeset stays red on it by design (#17712 ruling D); the maintainer confirms and merges it past that check. Order: this PR lands before the 18.2.0 Version Packages PR #25640.

    Workload: XS, one PR, maintainer's hand on the merge. 裁不派:this comment records the ruling; dispatch is the lane's. Brief: 总监决裁 批#14, 「待决策汇总」 thread.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-26T06:52Z
    Session: session_01RyMY3prh9GRva1Tt37Di3i
    Account: zhuangjianguo
    Branch: claude/project-thread-5euiwm (card thread; the platform assigns the thread's branch and it can push only that one, written as measured instead of claude/issue-25754-<slug>)
    Worktree: objectstack-issue-25754
    Domain: domain:spec
    Seat: domain:spec#2
    File surface: .changeset/25610-notify-email-field-recipient.md (last prose paragraph only) (stop on breach; explain in the report)
    Container & model: S 级机械卡, mode:thread (p1 ⇒ card thread), model: TIER_FLOOR — --tier: no path-derived mandate; one changeset paragraph, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6398564883
    Premise: holds
    Serial constraints cleared: none; lands before #25640 (Version Packages) consumes the changeset

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:workflowApprovals and automation — the work that runs without a person driving itdocumentationImprovements or additions to documentationdomain:specpm:dispatchedpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions