Repository navigation
Commit 777eed2
fix(spec): the mailAssociation liveness row goes live — the mailbox matcher reads it, so the stale author warning is dropped (#23314)
Part of #22871
Clause-②: no (dropping an author warning widens no accept set and no
published surface: `FieldSchema` accepts `mailAssociation` exactly as
before, and no export, key or default changes; the shipped liveness
ledger loses one `authorWarn` row, so `os lint` stops warning on the
key)
## The `mailAssociation` liveness row goes `live`, on its own PR
This is stage 2's carried item 1 on #22871, split off under the seat's
answer `6151023438` and claim amendment `6151040021`.
- It carries exactly commit `610e112bd` from PR #23303, cherry-picked
onto `main` at `280806912`: `packages/spec/liveness/field.json`,
`packages/spec/liveness/state-counts/field.md` and
`packages/lint/src/lint-liveness-properties.test.ts`. The cherry-picked
change lines are identical to the original's (compared as diffs).
- It adds one changeset, because `liveness/` ships in the
`@objectstack/spec` tarball (`files`).
- **Why now:** the row's author hint, "no mailbox service reads this
yet", has been false on `main` since the stage-1 matcher landed at
`82581819b`. PR #23303 (3690 lines) waits for a human merge, and this
hint must not ship in a release.
### The change
- **`field.json`:** `mailAssociation` moves from `planned` with
`authorWarn` and `authorHint` to `live`.
- Its evidence is
`packages/services/service-mailbox/src/ingest/match-records.ts#MailRecordMatcher`,
on `main` since `82581819b`. Its `match` reads every `email` field
declaring `mailAssociation: true`, through `flaggedFieldsOf`.
- The anchor is the class, not `#MailRecordMatcher.match`, because
`check:liveness` refuses a dotted anchor.
- **The pin:** `authorWarnedProperties('field')` becomes
`['conditionalRequired']`.
- **`state-counts/field.md`:** 94 live and 4 planned become 95 live and
3 planned. The file is regenerated by `gen:liveness-counts`.
### Why `Clause-②: no`
The declaration asks whether the change widens an accept set or the
public surface.
- `FieldSchema`'s refine is unchanged: the key was accepted on `email`
and refused elsewhere before this PR, and it still is.
- No export, key or default moves.
- What changes is one ledger row that `os lint` reads, so an author who
writes the key stops being warned that nothing reads it. That narrows a
warning; it accepts nothing new.
- So the changeset is `'@objectstack/spec': patch` with `Clause-②: no`.
### Verification at the PR head
All of this ran at `4d4fac733`, on `main` `280806912`, under
`os-verify-lock` (one call, `VERDICT command-exit 0`):
- a full `pnpm turbo run build --concurrency=2
--filter=!@objectstack/docs` (74 of 74 tasks);
- `pnpm --filter @objectstack/spec check:liveness`, which exits 0. Every
`path#symbol` anchor resolves, and `state-counts/` is current;
- `pnpm --filter @objectstack/lint exec vitest run --maxWorkers=2
src/lint-liveness-properties.test.ts`: 100 passed;
- `pnpm --filter @objectstack/spec test:repo`: 58 files, 1007 passed.
**Gates.** `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` derives 71 families. All 71 were run, one
log each, with exit codes captured before any pipe, and `--ran`
reconciles: "71 derived, 71 run, 0 NOT-MEASURED, 0 UNRUN".
- 70 exit 0, among them `check:adr-0087-registration`,
`check:changeset-no-major`, `check:empty-changeset`, `check:generated`,
`check:liveness` and `check:published-files`.
- `pnpm check:platform-checklist` exits 1, with the same 8 findings
`main` shows. This diff touches none of its inputs (`docs/qa/**`,
`metadata-protocol`, `service-storage`, the anchor scripts), so the red
is `main`'s.
### Notes
- PR #23303 keeps commit `610e112bd`. Once this lands, merging `main`
into it is a no-op for these three files.
- The row's `note` says the reader landed "in two stages of #22871 …
then the IMAP connector … and the mailbox sync". The second half is true
only once PR #23303 lands. This PR carries the commit exactly, as
ordered; the seat decides whether that sentence is trimmed here.
---
_Generated by [Claude
Code](https://claude.ai/code/session_012uFegdfR6K6uqvLzt7XsdZ)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 614fdec commit 777eed2
4 files changed
Lines changed: 19 additions & 12 deletions
File tree
- .changeset
- packages
- lint/src
- spec/liveness
- state-counts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1643 | 1643 | | |
1644 | 1644 | | |
1645 | 1645 | | |
1646 | | - | |
1647 | | - | |
1648 | | - | |
1649 | | - | |
1650 | | - | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
1651 | 1651 | | |
1652 | 1652 | | |
1653 | 1653 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
246 | 246 | | |
247 | 247 | | |
248 | 248 | | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
255 | 253 | | |
256 | 254 | | |
257 | 255 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
0 commit comments