Work card for the #15954 ruling (director seat, decision batch #56, maintainer 「其他同意」 on the per-family recommendation, 2026-09-06). This card carries the retire half; the PromptTemplate marking half is its sibling card (linked from #15954). Sequencing: after the #15028 / #15035 narrowing PR on shared/expression.zod.ts lands.
Positions to retire (seven positions, six key names)
| file:Schema.field |
line (at origin/main f1e91595f, re-locate by text) |
reachable from a stack manifest |
api/export.zod.ts ScheduledExport.schedule.cronExpression |
:576 |
no — API contract |
api/export.zod.ts ScheduleExportRequest.schedule.cronExpression |
:706 |
no — API request |
automation/execution.zod.ts ScheduleState.cronExpression |
:454 |
no — runtime state |
integration/connector.zod.ts DataSyncConfig.schedule |
:257 |
yes — Connector.syncConfig, defineStack({ connectors }) |
system/cache.zod.ts CacheWarmup.schedule |
:156 |
no |
system/disaster-recovery.zod.ts BackupConfig.schedule |
:57 |
no |
system/disaster-recovery.zod.ts DisasterRecoveryPlan.testing.schedule |
:238 |
no |
Not in scope: system/job.zod.ts CronSchedule.expression (read by croner), ai/knowledge-source.zod.ts KnowledgeRefreshPolicy.cron (experimental-marked), Object.titleFormat (read by objectui; #15947), and the PromptTemplate pair (sibling card).
Shape — the #14477 / PR #15514 precedent, spec-property-retirement playbook
RETIRED_KEYS_BY_MAJOR[18] entries + retiredKey() tombstones at each position; refusal pins (an author who writes the key gets the tombstone's did-you-mean, never silent acceptance).
- One ADR-0087 D3 semantic entry per family: export API schedules; automation
ScheduleState; connector sync schedule; cache warmup; backup / DR testing. The connector entry states the measured population (zero in-repo authors — examples, docs, skills, objectui pin all swept with controls; out-of-repo stacks NOT MEASURED) since it is the only stack-collection member.
- Regenerate: authorable-surface shards, JSON schema, api-surface, reference pages; retire the D7
cron-declared-unwired ledger rows for these positions (packages/qa/dogfood/test/expression-conformance.ledger.ts).
- Changeset:
@objectstack/spec minor, **BREAKING** banner, <!-- adr-0087: registered <entry-ids> -->. Immediate retirement, no deprecation window (2026-08-27 ruling).
Clause-②: yes on both carriers; contract review at tier.
Re-check before claiming
git grep -n "CronExpressionInputSchema" origin/main -- packages/spec/src | grep -v test
git grep -n "cron-declared-unwired" origin/main -- packages/qa/dogfood/test/expression-conformance.ledger.ts
Work card for the #15954 ruling (director seat, decision batch #56, maintainer 「其他同意」 on the per-family recommendation, 2026-09-06). This card carries the retire half; the
PromptTemplatemarking half is its sibling card (linked from #15954). Sequencing: after the #15028 / #15035 narrowing PR onshared/expression.zod.tslands.Positions to retire (seven positions, six key names)
origin/mainf1e91595f, re-locate by text)api/export.zod.tsScheduledExport.schedule.cronExpressionapi/export.zod.tsScheduleExportRequest.schedule.cronExpressionautomation/execution.zod.tsScheduleState.cronExpressionintegration/connector.zod.tsDataSyncConfig.scheduleConnector.syncConfig,defineStack({ connectors })system/cache.zod.tsCacheWarmup.schedulesystem/disaster-recovery.zod.tsBackupConfig.schedulesystem/disaster-recovery.zod.tsDisasterRecoveryPlan.testing.scheduleNot in scope:
system/job.zod.tsCronSchedule.expression(read bycroner),ai/knowledge-source.zod.tsKnowledgeRefreshPolicy.cron(experimental-marked),Object.titleFormat(read by objectui; #15947), and thePromptTemplatepair (sibling card).Shape — the #14477 / PR #15514 precedent,
spec-property-retirementplaybookRETIRED_KEYS_BY_MAJOR[18]entries +retiredKey()tombstones at each position; refusal pins (an author who writes the key gets the tombstone's did-you-mean, never silent acceptance).ScheduleState; connector sync schedule; cache warmup; backup / DR testing. The connector entry states the measured population (zero in-repo authors — examples, docs, skills, objectui pin all swept with controls; out-of-repo stacks NOT MEASURED) since it is the only stack-collection member.cron-declared-unwiredledger rows for these positions (packages/qa/dogfood/test/expression-conformance.ledger.ts).@objectstack/specminor,**BREAKING**banner,<!-- adr-0087: registered <entry-ids> -->. Immediate retirement, no deprecation window (2026-08-27 ruling).Clause-②: yeson both carriers; contract review at tier.Re-check before claiming