things-api 0.19.3 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/deputy/prebuilt/Things API Helper.app/Contents/CodeResources +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/MacOS/things-reader +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/MacOS/things-deputy +0 -0
- package/dist/audit/schema.d.ts +42 -10
- package/dist/audit/schema.js +21 -0
- package/dist/audit/schema.js.map +1 -1
- package/dist/cli/commands/doctor.js +3 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/op-result.js +25 -7
- package/dist/cli/commands/op-result.js.map +1 -1
- package/dist/cli/commands/repeat-flags.d.ts +19 -1
- package/dist/cli/commands/repeat-flags.js +71 -0
- package/dist/cli/commands/repeat-flags.js.map +1 -1
- package/dist/cli/commands/rescue.d.ts +12 -0
- package/dist/cli/commands/rescue.js +83 -0
- package/dist/cli/commands/rescue.js.map +1 -0
- package/dist/cli/commands/writes.js +86 -32
- package/dist/cli/commands/writes.js.map +1 -1
- package/dist/cli/help.js +25 -25
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +12 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/resolve-invocation.d.ts +9 -1
- package/dist/cli/resolve-invocation.js +71 -0
- package/dist/cli/resolve-invocation.js.map +1 -1
- package/dist/cli/unknown-command.d.ts +26 -0
- package/dist/cli/unknown-command.js +135 -0
- package/dist/cli/unknown-command.js.map +1 -0
- package/dist/contracts.d.ts +4 -3
- package/dist/contracts.js +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +62 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/entities.d.ts +11 -0
- package/dist/model/entities.js.map +1 -1
- package/dist/model/mappers.js +15 -0
- package/dist/model/mappers.js.map +1 -1
- package/dist/op-result.d.ts +24 -2
- package/dist/op-result.js +77 -20
- package/dist/op-result.js.map +1 -1
- package/dist/process-instance.d.ts +41 -0
- package/dist/process-instance.js +82 -0
- package/dist/process-instance.js.map +1 -0
- package/dist/rescue.d.ts +247 -0
- package/dist/rescue.js +811 -0
- package/dist/rescue.js.map +1 -0
- package/dist/session-grant.js +4 -15
- package/dist/session-grant.js.map +1 -1
- package/dist/ui-state.d.ts +8 -4
- package/dist/ui-state.js +8 -4
- package/dist/ui-state.js.map +1 -1
- package/dist/write/batch.js +4 -1
- package/dist/write/batch.js.map +1 -1
- package/dist/write/clone.js +12 -6
- package/dist/write/clone.js.map +1 -1
- package/dist/write/commands.d.ts +9 -0
- package/dist/write/commands.js +135 -50
- package/dist/write/commands.js.map +1 -1
- package/dist/write/disclosures.d.ts +275 -0
- package/dist/write/disclosures.js +277 -0
- package/dist/write/disclosures.js.map +1 -0
- package/dist/write/experimental.d.ts +16 -0
- package/dist/write/experimental.js +19 -0
- package/dist/write/experimental.js.map +1 -1
- package/dist/write/failure-hints.js +3 -2
- package/dist/write/failure-hints.js.map +1 -1
- package/dist/write/guards.d.ts +1 -1
- package/dist/write/guards.js +102 -3
- package/dist/write/guards.js.map +1 -1
- package/dist/write/heading.js +4 -7
- package/dist/write/heading.js.map +1 -1
- package/dist/write/lock.d.ts +85 -1
- package/dist/write/lock.js +121 -6
- package/dist/write/lock.js.map +1 -1
- package/dist/write/make-repeating-project.js +2 -1
- package/dist/write/make-repeating-project.js.map +1 -1
- package/dist/write/operations.d.ts +52 -6
- package/dist/write/operations.js +22 -0
- package/dist/write/operations.js.map +1 -1
- package/dist/write/opid.d.ts +69 -8
- package/dist/write/opid.js +116 -20
- package/dist/write/opid.js.map +1 -1
- package/dist/write/param-schema.js +14 -2
- package/dist/write/param-schema.js.map +1 -1
- package/dist/write/pipeline.d.ts +82 -3
- package/dist/write/pipeline.js +204 -60
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/planner.d.ts +7 -0
- package/dist/write/planner.js +12 -0
- package/dist/write/planner.js.map +1 -1
- package/dist/write/preserve-modified.d.ts +17 -8
- package/dist/write/preserve-modified.js.map +1 -1
- package/dist/write/promote-clone.js +106 -53
- package/dist/write/promote-clone.js.map +1 -1
- package/dist/write/reorder.js +45 -39
- package/dist/write/reorder.js.map +1 -1
- package/dist/write/repeat-rule.d.ts +25 -1
- package/dist/write/repeat-rule.js +69 -0
- package/dist/write/repeat-rule.js.map +1 -1
- package/dist/write/resolution-timestamps.js +104 -78
- package/dist/write/resolution-timestamps.js.map +1 -1
- package/dist/write/reversibility.js +2 -2
- package/dist/write/reversibility.js.map +1 -1
- package/dist/write/spawn-expectation.d.ts +135 -0
- package/dist/write/spawn-expectation.js +237 -0
- package/dist/write/spawn-expectation.js.map +1 -0
- package/dist/write/template-mutation.js +34 -35
- package/dist/write/template-mutation.js.map +1 -1
- package/dist/write/undo.js +45 -5
- package/dist/write/undo.js.map +1 -1
- package/dist/write/vectors/simulator.js +48 -2
- package/dist/write/vectors/simulator.js.map +1 -1
- package/dist/write/vectors/types.d.ts +12 -0
- package/dist/write/vectors/ui-recipes.js +11 -1
- package/dist/write/vectors/ui-recipes.js.map +1 -1
- package/dist/write/vectors/ui-state.d.ts +64 -6
- package/dist/write/vectors/ui-state.js +91 -4
- package/dist/write/vectors/ui-state.js.map +1 -1
- package/dist/write/vectors/ui.d.ts +69 -3
- package/dist/write/vectors/ui.js +293 -146
- package/dist/write/vectors/ui.js.map +1 -1
- package/dist/write/vectors/url-scheme.js +26 -0
- package/dist/write/vectors/url-scheme.js.map +1 -1
- package/dist/write/verify/delta.d.ts +17 -2
- package/dist/write/verify/delta.js +46 -16
- package/dist/write/verify/delta.js.map +1 -1
- package/dist/write/verify/poller.d.ts +3 -2
- package/dist/write/verify/poller.js +3 -1
- package/dist/write/verify/poller.js.map +1 -1
- package/package.json +1 -1
- package/schema/envelope.schema.json +1 -2
- package/skills/things-cli/SKILL.md +4 -2
- package/skills/things-cli/references/repeating.md +1 -1
- package/dist/cli/commands/ui-state.d.ts +0 -11
- package/dist/cli/commands/ui-state.js +0 -27
- package/dist/cli/commands/ui-state.js.map +0 -1
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE SPAWN-EXPECTATION MAP (#634) — what the app is KNOWN to do about
|
|
3
|
+
* materializing a repeating series' first occurrence, per rule shape × anchor
|
|
4
|
+
* relation, and the assertion that turns that knowledge into an honest
|
|
5
|
+
* post-promote disclosure.
|
|
6
|
+
*
|
|
7
|
+
* The failure this replaces: a successful after-completion monthly promote with
|
|
8
|
+
* a future anchor warned *"could not derive the spawned instance: no row links
|
|
9
|
+
* back to the new repeating template (the app may not have materialized the
|
|
10
|
+
* current occurrence)"* — a shrug, as though the absence were a surprise. It is
|
|
11
|
+
* not a surprise. The spawn laws are MEASURED per rule shape, and for that
|
|
12
|
+
* shape zero instances is the CORRECT and expected outcome. So:
|
|
13
|
+
*
|
|
14
|
+
* - the expectation is stated up front, from the rule and the anchor date;
|
|
15
|
+
* - it is ASSERTED against what the FK derivation actually found;
|
|
16
|
+
* - a mismatch in EITHER direction (expected-and-missing, or unexpected-found)
|
|
17
|
+
* is a real `warning` — something is wrong with the series;
|
|
18
|
+
* - the expectation MET is a matter-of-fact `note` naming when the first
|
|
19
|
+
* occurrence appears, or nothing at all when the instance is present and
|
|
20
|
+
* returned (the caller already has it).
|
|
21
|
+
*
|
|
22
|
+
* RRF1 discipline: {@link SPAWN_EXPECTATIONS} has an explicit entry for every
|
|
23
|
+
* (rule kind × anchor relation) cell with the evidence that pins it, and the
|
|
24
|
+
* compiler enforces completeness — the map is typed as a total record over both
|
|
25
|
+
* axes, so adding a rule kind or an anchor relation breaks the build until the
|
|
26
|
+
* new cells are given a verdict and a citation.
|
|
27
|
+
*/
|
|
28
|
+
// ------------------------------------------------------------------- the map
|
|
29
|
+
/**
|
|
30
|
+
* EXHAUSTIVE over rule kind × anchor relation. Every cell carries a verdict and
|
|
31
|
+
* the campaign that measured it; the `unpinned` verdict is a first-class
|
|
32
|
+
* answer — the map says "we have not measured this" rather than inventing a
|
|
33
|
+
* behavior, and an unpinned cell asserts nothing at all.
|
|
34
|
+
*/
|
|
35
|
+
export const SPAWN_EXPECTATIONS = {
|
|
36
|
+
// ------------------------------------------------------------------ fixed
|
|
37
|
+
fixed: {
|
|
38
|
+
today: {
|
|
39
|
+
verdict: "materialized",
|
|
40
|
+
evidence: "FGRD1 §8 (3.23/golden-v4); ANCH1 §A3 a3-today/a3-align; RSIM1",
|
|
41
|
+
why: "committing a rule whose first occurrence is TODAY makes the app materialize that " +
|
|
42
|
+
"occurrence immediately and advance the cursor to the next slot — so a fixed same-day " +
|
|
43
|
+
"series that has NO instance did not land the way it was asked to",
|
|
44
|
+
},
|
|
45
|
+
future: {
|
|
46
|
+
verdict: "pending",
|
|
47
|
+
evidence: "ANCH1 §A2 (5/5 cells, icCount=0); UIC8 §C4 spawn-shape law; ANCH1 Phase-B FIX2",
|
|
48
|
+
why: "a fixed promote whose first occurrence is in the future materializes only the template " +
|
|
49
|
+
"and its cursor; the occurrence is minted when the date arrives (FIX2 watched it appear " +
|
|
50
|
+
"on the day, with the cursor advancing by the cadence)",
|
|
51
|
+
},
|
|
52
|
+
past: {
|
|
53
|
+
verdict: "unpinned",
|
|
54
|
+
evidence: "ANCH1 §A2 law (`sr` = today, `ia` = the next match >= today) — never reachable by default",
|
|
55
|
+
why: "the app anchors a fixed rule to the next calendar match ON OR AFTER TODAY, so a " +
|
|
56
|
+
"past first occurrence is not a state the promote paths produce; no campaign has " +
|
|
57
|
+
"driven one deliberately, so nothing is asserted about it",
|
|
58
|
+
},
|
|
59
|
+
unknown: {
|
|
60
|
+
verdict: "unpinned",
|
|
61
|
+
evidence: "n/a — the first-occurrence date could not be read back",
|
|
62
|
+
why: "with no anchor date there is no expectation to assert; the derivation stays silent",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
// -------------------------------------------------------- fixed, preserved
|
|
66
|
+
//
|
|
67
|
+
// The SOURCE survived the promote and was relinked as the current-occurrence
|
|
68
|
+
// instance (SRCFATE §P1). Its survival is the materialization, so an instance
|
|
69
|
+
// exists whatever the date — including the future, which is the state the app
|
|
70
|
+
// itself double-books from.
|
|
71
|
+
"fixed-preserved": {
|
|
72
|
+
today: {
|
|
73
|
+
verdict: "materialized",
|
|
74
|
+
evidence: "RSIM-T T-deadline (1/1); SRCFATE §P1 (2/2 every cell)",
|
|
75
|
+
why: "the preserved source IS the current occurrence — the app relinked it in place " +
|
|
76
|
+
"(`rt1_repeatingTemplate` set) and minted only the template",
|
|
77
|
+
},
|
|
78
|
+
future: {
|
|
79
|
+
verdict: "materialized",
|
|
80
|
+
evidence: "DBLSPAWN1 cell A (the double-book) + cell C (the duplicate spawn)",
|
|
81
|
+
why: "a preserved source dated in the FUTURE is a materialized future occurrence — a state " +
|
|
82
|
+
"normal spawning never creates, and the one the app later double-books on. The " +
|
|
83
|
+
"composite trashes the redundant occurrence itself (DBLSPAWN1 cell F), so a caller " +
|
|
84
|
+
"reaching this cell with no instance normally means that trash leg ran",
|
|
85
|
+
},
|
|
86
|
+
past: {
|
|
87
|
+
verdict: "materialized",
|
|
88
|
+
evidence: "DBLSPAWN1 (a today/past-dated preserved instance is the legitimate current occurrence)",
|
|
89
|
+
why: "the preserved row exists regardless of its date; only a FUTURE one is redundant",
|
|
90
|
+
},
|
|
91
|
+
unknown: {
|
|
92
|
+
verdict: "materialized",
|
|
93
|
+
evidence: "SRCFATE §P1 — the preserve fate is read from the source itself, not from a date",
|
|
94
|
+
why: "the preserve verdict is established by the source surviving and relinking, which is " +
|
|
95
|
+
"known even when the occurrence date is not",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
// ------------------------------------------------------- after-completion
|
|
99
|
+
//
|
|
100
|
+
// The cursor-less family. CNCAC1 §7.1 measured a never-completed
|
|
101
|
+
// after-completion series seeded on TODAY: `next = NULL`, `icCount = 1`, one
|
|
102
|
+
// live occurrence. VMRES1 §1 measured the FUTURE-anchored shape on the same
|
|
103
|
+
// golden and found the opposite: ZERO instances, with `rt1_nextInstanceStartDate`
|
|
104
|
+
// holding the requested date verbatim. That split is the whole of #634's field
|
|
105
|
+
// report — the two cells look identical to a caller and behave oppositely.
|
|
106
|
+
"after-completion": {
|
|
107
|
+
today: {
|
|
108
|
+
verdict: "materialized",
|
|
109
|
+
evidence: "CNCAC1 §1.1/§7.1 cell N (3.23/golden-v4); CERTSWEEP1 §4 cell AC; UIC8 §C4b/C4d",
|
|
110
|
+
why: "an after-completion promote anchored on today spawns its first instance immediately " +
|
|
111
|
+
"(icCount=1, one live occurrence) and carries NO cursor until something is completed",
|
|
112
|
+
},
|
|
113
|
+
future: {
|
|
114
|
+
verdict: "pending",
|
|
115
|
+
evidence: "VMRES1 §1 (3/3 shapes, at rest); ACFUT1 cells R/R2 + control C (the spawn itself)",
|
|
116
|
+
why: "a future-anchored after-completion promote materializes NOTHING — every measured shape " +
|
|
117
|
+
"landed zero non-trashed instances — and instead populates `rt1_nextInstanceStartDate` " +
|
|
118
|
+
"with the requested date verbatim. ACFUT1 then rolled the clock and watched the " +
|
|
119
|
+
"occurrence appear ON that date, exactly once, in both creation shapes, against a " +
|
|
120
|
+
"fixed-rule control that spawned on the same relaunch. THIS IS THE #634 FIELD CASE: the " +
|
|
121
|
+
"old derivation called it a surprise; it is the measured law, and the date we name is " +
|
|
122
|
+
"the date the app keeps",
|
|
123
|
+
},
|
|
124
|
+
past: {
|
|
125
|
+
verdict: "unpinned",
|
|
126
|
+
evidence: "ACFUT1 cell A2b — the shape is UNREACHABLE, not unmeasured",
|
|
127
|
+
why: "the app normalizes a past start date to today, so a promote can never be anchored in " +
|
|
128
|
+
"the past; the cell stays unasserted because nothing can land in it",
|
|
129
|
+
},
|
|
130
|
+
unknown: {
|
|
131
|
+
verdict: "pending-until-completion",
|
|
132
|
+
evidence: "CNCAC1 §7.1 (a never-completed series has `next = NULL`); REPX1 §2.5",
|
|
133
|
+
why: "an after-completion series with no readable cursor has no calendar at all — its next " +
|
|
134
|
+
"date is derived from a completion, so there is no date to name",
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
/** The expectation for one cell. Total over both axes by construction. */
|
|
139
|
+
export function spawnExpectation(kind, relation) {
|
|
140
|
+
return SPAWN_EXPECTATIONS[kind][relation];
|
|
141
|
+
}
|
|
142
|
+
// ------------------------------------------------------- classifying a promote
|
|
143
|
+
/**
|
|
144
|
+
* Which cell of the map a landed promote sits in.
|
|
145
|
+
*
|
|
146
|
+
* `preserved` is the SOURCE FATE the derivation already resolved (the source
|
|
147
|
+
* survived and relinked), not a guess from the rule — SRCFATE's triggers are
|
|
148
|
+
* structural, so the fate is read, never predicted.
|
|
149
|
+
*/
|
|
150
|
+
export function spawnRuleKind(input) {
|
|
151
|
+
if (input.afterCompletion)
|
|
152
|
+
return "after-completion";
|
|
153
|
+
return input.preserved ? "fixed-preserved" : "fixed";
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Where a first-occurrence date sits relative to today. Both dates are local
|
|
157
|
+
* ISO days, so the comparison is a plain string compare — no timezone
|
|
158
|
+
* arithmetic, and no "same day but different instant" ambiguity.
|
|
159
|
+
*/
|
|
160
|
+
export function anchorRelation(firstOccurrence, todayIso) {
|
|
161
|
+
if (firstOccurrence === null)
|
|
162
|
+
return "unknown";
|
|
163
|
+
if (firstOccurrence === todayIso)
|
|
164
|
+
return "today";
|
|
165
|
+
return firstOccurrence > todayIso ? "future" : "past";
|
|
166
|
+
}
|
|
167
|
+
/** Days from `from` to `to`, both local ISO days. */
|
|
168
|
+
function daysUntil(from, to) {
|
|
169
|
+
const a = Date.UTC(+from.slice(0, 4), +from.slice(5, 7) - 1, +from.slice(8, 10));
|
|
170
|
+
const b = Date.UTC(+to.slice(0, 4), +to.slice(5, 7) - 1, +to.slice(8, 10));
|
|
171
|
+
return Math.round((b - a) / 86_400_000);
|
|
172
|
+
}
|
|
173
|
+
/** "in 3 days" / "tomorrow" / "today" — the human half of the pending note. */
|
|
174
|
+
function whenPhrase(days) {
|
|
175
|
+
if (days <= 0)
|
|
176
|
+
return "today";
|
|
177
|
+
if (days === 1)
|
|
178
|
+
return "tomorrow";
|
|
179
|
+
return `in ${days} days`;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* ASSERT the spawn expectation. Returns the single disclosure this promote
|
|
183
|
+
* should carry about its instance, or `null` when there is nothing to say —
|
|
184
|
+
* which is the common case: the expectation was "materialized" and an instance
|
|
185
|
+
* was found, so the caller already holds it in `repeating.instanceUuid` and a
|
|
186
|
+
* line restating that would be noise.
|
|
187
|
+
*
|
|
188
|
+
* Mismatches are reported in BOTH directions, because both mean the series is
|
|
189
|
+
* not what the measured laws say it should be.
|
|
190
|
+
*/
|
|
191
|
+
export function assertSpawnExpectation(input) {
|
|
192
|
+
const expectation = spawnExpectation(input.kind, input.relation);
|
|
193
|
+
// An UNPINNED cell asserts nothing in either direction — the map refuses to
|
|
194
|
+
// turn "we have not measured this" into a verdict about the caller's series.
|
|
195
|
+
if (expectation.verdict === "unpinned")
|
|
196
|
+
return null;
|
|
197
|
+
if (expectation.verdict === "materialized") {
|
|
198
|
+
if (input.found)
|
|
199
|
+
return null; // expected and present — the caller has it
|
|
200
|
+
return {
|
|
201
|
+
id: "instance-missing",
|
|
202
|
+
text: "the series was created but its current occurrence is missing: this rule shape " +
|
|
203
|
+
`materializes an occurrence immediately (${expectation.evidence}) and no row links back ` +
|
|
204
|
+
"to the new template. Re-read the series before relying on it",
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
// PENDING (with or without a date). An instance that exists here is the
|
|
208
|
+
// mismatch — the app is not supposed to have minted one yet.
|
|
209
|
+
if (input.found) {
|
|
210
|
+
return {
|
|
211
|
+
id: "instance-unexpected",
|
|
212
|
+
text: "the series was created and already has a materialized occurrence, which this rule " +
|
|
213
|
+
`shape is not expected to produce yet (${expectation.evidence}) — re-read the series to ` +
|
|
214
|
+
"check it will not double-book",
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
if (expectation.verdict === "pending-until-completion") {
|
|
218
|
+
return {
|
|
219
|
+
id: "instance-pending",
|
|
220
|
+
text: "no occurrence yet — this series counts from each completion, so the first one appears " +
|
|
221
|
+
"once the current work is checked off",
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
// PENDING with a known date: name it, and say how far off it is.
|
|
225
|
+
if (input.firstOccurrence === null) {
|
|
226
|
+
return {
|
|
227
|
+
id: "instance-pending",
|
|
228
|
+
text: "no occurrence yet — the series mints its first one when its start date arrives",
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
const days = daysUntil(input.todayIso, input.firstOccurrence);
|
|
232
|
+
return {
|
|
233
|
+
id: "instance-pending",
|
|
234
|
+
text: `no occurrence yet — the first one appears ${input.firstOccurrence} (${whenPhrase(days)})`,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=spawn-expectation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-expectation.js","sourceRoot":"","sources":["../../src/write/spawn-expectation.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,6 +76,7 @@
|
|
|
76
76
|
import { addDaysIso, decodePackedDate, localToday } from "../model/dates.js";
|
|
77
77
|
import { projectOccurrences } from "../model/occurrences.js";
|
|
78
78
|
import { byUuid } from "../read/detail.js";
|
|
79
|
+
import { attach, disclose, disclosuresOf } from "./disclosures.js";
|
|
79
80
|
import { replayIfApplied } from "./opid.js";
|
|
80
81
|
import { appendCompositeSummary, runComposite, runMutation, } from "./pipeline.js";
|
|
81
82
|
/** How far ahead the collision check will look for a live slot. */
|
|
@@ -377,7 +378,13 @@ runStatusLeg, options = {}) {
|
|
|
377
378
|
...(ambiguousOccurrence !== undefined && { occurrence: ambiguousOccurrence }),
|
|
378
379
|
options,
|
|
379
380
|
});
|
|
380
|
-
}
|
|
381
|
+
},
|
|
382
|
+
// No oracle on the in-flight marker: at this point the composite does not yet
|
|
383
|
+
// know whether it will resolve an already-open occurrence or MINT one, and
|
|
384
|
+
// the two need different assertions (the ambiguous summary picks the right
|
|
385
|
+
// one later, once the timeout point knows). A holder that dies before that is
|
|
386
|
+
// told so honestly rather than reconciled against a guess.
|
|
387
|
+
{ options, startedAt: now, txnId, uuid, requested: { uuid } });
|
|
381
388
|
async function statusBody() {
|
|
382
389
|
const state = readSeriesState(deps, uuid);
|
|
383
390
|
if (state === null)
|
|
@@ -444,25 +451,18 @@ runStatusLeg, options = {}) {
|
|
|
444
451
|
});
|
|
445
452
|
const verb = op === "todo.complete" ? "checked off" : "canceled";
|
|
446
453
|
const nextDate = nextOccurrenceAfter(deps, state.templateUuid);
|
|
447
|
-
const
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
];
|
|
454
|
+
const bag = disclosuresOf(write);
|
|
455
|
+
disclose(bag, "occurrence-resolved", `${verb} ${occurrenceLabel(occurrenceDate)} of "${state.title}"` +
|
|
456
|
+
(minted ? " (created just now, because the series had no unfinished copy)" : ""));
|
|
457
|
+
disclose(bag, "occurrence-next", nextDate === null
|
|
458
|
+
? "the series has no further scheduled occurrence"
|
|
459
|
+
: state.afterCompletion
|
|
460
|
+
? `the next occurrence is ${nextDate} — this series counts from each completion, so ` +
|
|
461
|
+
"resolving it now restarted the interval from today"
|
|
462
|
+
: `the next occurrence is ${nextDate}`);
|
|
457
463
|
if (minted)
|
|
458
|
-
|
|
459
|
-
return {
|
|
460
|
-
...write,
|
|
461
|
-
op,
|
|
462
|
-
occurrence,
|
|
463
|
-
undoToken,
|
|
464
|
-
warnings: [...(write.warnings ?? []), ...disclosure],
|
|
465
|
-
};
|
|
464
|
+
disclose(bag, "occurrence-mint-irreversible", IRREVERSIBLE_NOTE);
|
|
465
|
+
return attach({ ...write, op, occurrence, undoToken }, bag);
|
|
466
466
|
}
|
|
467
467
|
}
|
|
468
468
|
// --------------------------------------------------------- exception writes
|
|
@@ -507,7 +507,13 @@ export async function runTemplateExceptionWrite(deps, uuid, patch, options = {})
|
|
|
507
507
|
...(ambiguousOccurrence !== undefined && { occurrence: ambiguousOccurrence }),
|
|
508
508
|
options,
|
|
509
509
|
});
|
|
510
|
-
}
|
|
510
|
+
},
|
|
511
|
+
// The in-flight marker carries NO oracle, deliberately — the same reasoning
|
|
512
|
+
// that makes this verb's ambiguous summary refuse (see above). It always
|
|
513
|
+
// mints, so a holder that died mid-mint leaves a state where any satisfiable
|
|
514
|
+
// assertion would claim an exception that does not exist. The retry gets the
|
|
515
|
+
// honest `blocked:reconcile` refusal and a pointer at `op-result`.
|
|
516
|
+
{ options, startedAt: now, txnId, uuid, requested: { uuid, ...patch } });
|
|
511
517
|
async function exceptionBody() {
|
|
512
518
|
const state = readSeriesState(deps, uuid);
|
|
513
519
|
if (state === null)
|
|
@@ -577,21 +583,14 @@ export async function runTemplateExceptionWrite(deps, uuid, patch, options = {})
|
|
|
577
583
|
options,
|
|
578
584
|
});
|
|
579
585
|
const nextDate = nextOccurrenceAfter(deps, state.templateUuid);
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
"unchanged",
|
|
589
|
-
nextDate === null
|
|
590
|
-
? "the series has no further scheduled occurrence"
|
|
591
|
-
: `the next occurrence is ${nextDate}`,
|
|
592
|
-
IRREVERSIBLE_NOTE,
|
|
593
|
-
],
|
|
594
|
-
};
|
|
586
|
+
const bag = disclosuresOf(write);
|
|
587
|
+
disclose(bag, "occurrence-exception-scope", `changed only ${occurrenceLabel(state.cursor)} of "${state.title}" — the series itself is ` +
|
|
588
|
+
"unchanged");
|
|
589
|
+
disclose(bag, "occurrence-next", nextDate === null
|
|
590
|
+
? "the series has no further scheduled occurrence"
|
|
591
|
+
: `the next occurrence is ${nextDate}`);
|
|
592
|
+
disclose(bag, "occurrence-mint-irreversible", IRREVERSIBLE_NOTE);
|
|
593
|
+
return attach({ ...write, op, occurrence, undoToken }, bag);
|
|
595
594
|
}
|
|
596
595
|
}
|
|
597
596
|
export { PROJECT_REFUSAL, PROJECT_REMEDIATION };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-mutation.js","sourceRoot":"","sources":["../../src/write/template-mutation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template-mutation.js","sourceRoot":"","sources":["../../src/write/template-mutation.ts"],"names":[],"mappings":"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"}
|
package/dist/write/undo.js
CHANGED
|
@@ -45,7 +45,7 @@ import { isUuidInScope } from "../read/scope.js";
|
|
|
45
45
|
import { localToday } from "../model/dates.js";
|
|
46
46
|
import { getField } from "./verify/delta.js";
|
|
47
47
|
import { isRepeatingTemplate, loadTarget } from "./pre-state.js";
|
|
48
|
-
import { isUiDriveOp } from "./operations.js";
|
|
48
|
+
import { isRepeatReanchor, isUiDriveOp, } from "./operations.js";
|
|
49
49
|
import { restoreModDates } from "./preserve-modified.js";
|
|
50
50
|
import { ruleToInverseParams } from "./repeat-rule.js";
|
|
51
51
|
import { updateRestoreParams } from "./update-fields.js";
|
|
@@ -110,7 +110,16 @@ export function readAuditRecords(dir) {
|
|
|
110
110
|
* filter `result === "ok"`, so they skip intent records too.
|
|
111
111
|
*/
|
|
112
112
|
function undoableRecords(records) {
|
|
113
|
-
return records.filter((r) => r.result === "ok" &&
|
|
113
|
+
return records.filter((r) => r.result === "ok" &&
|
|
114
|
+
!r.actor.startsWith("undo:") &&
|
|
115
|
+
r.txn?.role !== "leg" &&
|
|
116
|
+
// …and never a RESCUE action (issue #640). `rescue dismiss` / `rescue
|
|
117
|
+
// relaunch` are recorded because a verb that destroys in-flight work
|
|
118
|
+
// should leave a trace, but they change no task data and have no inverse:
|
|
119
|
+
// a closed dialog cannot be re-opened with what was typed into it, and a
|
|
120
|
+
// relaunched app cannot be un-relaunched. Without this they would show up
|
|
121
|
+
// as the newest undo target and `undo` would have nothing to compile.
|
|
122
|
+
!r.op.startsWith("rescue."));
|
|
114
123
|
}
|
|
115
124
|
/** Pairing key for an intent and its final record (both derive from startedAt). */
|
|
116
125
|
function intentKey(r) {
|
|
@@ -1472,6 +1481,16 @@ export function planUndo(record, now, allRecords = [], current) {
|
|
|
1472
1481
|
case "project.reschedule-repeat": {
|
|
1473
1482
|
if (uuid === null)
|
|
1474
1483
|
return irreversible("no target uuid recorded");
|
|
1484
|
+
// The RE-ANCHOR spelling has NO inverse (REANCH1 §8). Moving the series
|
|
1485
|
+
// back would mean writing its OLD date — which is by then today or in the
|
|
1486
|
+
// past on the very machine the write lands on, and that write kills the
|
|
1487
|
+
// app (§5). The rule anchor could be re-driven through the dialog, but the
|
|
1488
|
+
// cursor could not, so an "undo" would leave the series somewhere neither
|
|
1489
|
+
// the caller nor the app chose. Refused whole, with the app's own ⌘Z named.
|
|
1490
|
+
if (isRepeatReanchor(record.requested)) {
|
|
1491
|
+
return irreversible("moving a repeating series' next occurrence cannot be undone here — move it to another " +
|
|
1492
|
+
"future date, or use the Things app's own undo");
|
|
1493
|
+
}
|
|
1475
1494
|
const priorRule = decodedRuleOf(record);
|
|
1476
1495
|
if (priorRule === null) {
|
|
1477
1496
|
return irreversible("the prior recurrence rule was not captured (or could not be decoded) — reschedule again by hand");
|
|
@@ -1765,9 +1784,30 @@ export async function runUndo(deps, auditDirPath, options = {}, onItem) {
|
|
|
1765
1784
|
// --preserve-modified recorded each touched row's pre-write
|
|
1766
1785
|
// userModificationDate on `preModDates`. After the inverse legs land, put
|
|
1767
1786
|
// those umd values back (floor(preUmd)) so the UNDO is ALSO off the
|
|
1768
|
-
// changes/watch timeline — matching the forward op's silence.
|
|
1769
|
-
//
|
|
1770
|
-
//
|
|
1787
|
+
// changes/watch timeline — matching the forward op's silence.
|
|
1788
|
+
//
|
|
1789
|
+
// This is NATIVE PARITY, not a convenience: UMDZ1 (2026-08-28, golden-v4 /
|
|
1790
|
+
// Things 3.23, docs/lab/umdz1-undo-umd.md) measured the app's own ⌘Z
|
|
1791
|
+
// RESTORING umd to its exact pre-edit value — the stored float, sub-second
|
|
1792
|
+
// included — on every undoable class it could drive: a completion, a
|
|
1793
|
+
// move-to-trash, and (REPX3 §4.2) a template rule edit. The app treats an
|
|
1794
|
+
// undo as a restoration of the record, not as a fresh compensating edit.
|
|
1795
|
+
// Our one divergence is resolution: AppleScript's `date` has no sub-second,
|
|
1796
|
+
// so we land on floor(preUmd) — always ≤ the app's value, which is the safe
|
|
1797
|
+
// direction for `changes --since` (a restored row never re-surfaces).
|
|
1798
|
+
// The same campaign confirmed our writes can never ride that undo (a
|
|
1799
|
+
// URL-scheme update leaves Edit ▸ Undo disabled and ⌘Z inert), which is why
|
|
1800
|
+
// we mirror the behavior here instead of delegating to it.
|
|
1801
|
+
//
|
|
1802
|
+
// CLASSIFICATION INVARIANT (maintainer ruling, 2026-08-28): the restore is
|
|
1803
|
+
// best-effort and purely ADDITIVE — a failed leg, or no AppleScript vector
|
|
1804
|
+
// to run one at all, is disclosed and the undo still reports `ok`. An
|
|
1805
|
+
// operation is NEVER classed irreversible merely because a modification
|
|
1806
|
+
// date cannot be restored; `planUndo` accordingly never reads preModDates.
|
|
1807
|
+
// Locked by test/engine/write-undo.test.ts.
|
|
1808
|
+
//
|
|
1809
|
+
// Records without preModDates (the default) are untouched — their undo is
|
|
1810
|
+
// an honest timeline entry.
|
|
1771
1811
|
if (!failed && record.preModDates !== undefined) {
|
|
1772
1812
|
const umdTargets = Object.entries(record.preModDates)
|
|
1773
1813
|
.filter((e) => typeof e[1] === "number")
|