@owlmeans/planning 0.1.18-rc.12 → 0.1.18-rc.13
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 +4 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/planning/SKILL.md +14 -5
- package/build/helpers/apply.d.ts +2 -0
- package/build/helpers/apply.d.ts.map +1 -1
- package/build/helpers/apply.js +2 -0
- package/build/helpers/apply.js.map +1 -1
- package/build/helpers/changes.d.ts +6 -1
- package/build/helpers/changes.d.ts.map +1 -1
- package/build/helpers/changes.js +18 -4
- package/build/helpers/changes.js.map +1 -1
- package/package.json +1 -1
- package/src/helpers/apply.ts +2 -0
- package/src/helpers/changes.ts +18 -4
- package/tests/apply.spec.ts +65 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ the executor with `@owlmeans/server-planning` and reads remotely with `@owlmeans
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
bun add @owlmeans/planning@^0.1.18-rc.
|
|
12
|
+
bun add @owlmeans/planning@^0.1.18-rc.13 ajv ajv-formats
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Concepts
|
|
@@ -163,6 +163,8 @@ const links = transitions.reduce(applyRelationship, [])
|
|
|
163
163
|
- Pass a query through `encode*Query` before an HTTP call — arrays and objects do not survive a
|
|
164
164
|
query string as they are.
|
|
165
165
|
- `status`, `intrinsic` and `flows` move only through `transit`; an `update` naming them is refused.
|
|
166
|
+
- `createdBy` is written once, by a create's draft: `changes` or `unset` naming it is refused on
|
|
167
|
+
every action (`planning:immutable:createdBy`), so an ownership check can trust it.
|
|
166
168
|
- `fields` and `flows` in `changes` merge; every other key replaces. Clear with `null` or `unset`.
|
|
167
169
|
- A model's `expectSeq` is its record's head: a stale model refuses with `WorkcardConflict`.
|
|
168
170
|
- `WorkcardNotFound` is also the answer for another entity's card — never read it as "deleted".
|
|
@@ -186,7 +188,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
186
188
|
your project's skill store (`.agents/skills/`):
|
|
187
189
|
|
|
188
190
|
```sh
|
|
189
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
191
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.44
|
|
190
192
|
```
|
|
191
193
|
|
|
192
194
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/planning",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-09-
|
|
4
|
+
"version": "0.1.18-rc.13",
|
|
5
|
+
"generatedAt": "2026-09-30T09:41:02.827Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/planning
|
|
9
9
|
|
|
10
10
|
**Layer:** Cross-cutting domain
|
|
11
|
-
**Install:** `"@owlmeans/planning": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/planning": "^0.1.18-rc.13"` in `dependencies` (`ajv` and `ajv-formats` are peers)
|
|
12
12
|
|
|
13
13
|
The contracts of project planning: record shapes, schemas, refusals, the protocol tree, the pure
|
|
14
14
|
fold and the models. No database, no fastify, no React. The executor, the plugin registry, the
|
|
@@ -99,6 +99,10 @@ type and flow).
|
|
|
99
99
|
`keepRevisions`, a JSON body `schema` — is declared on the PARENT's type. One record per
|
|
100
100
|
`(parent, category)` unless the slot is `multiple`; a revisioned slot increments `revision` on the
|
|
101
101
|
same record, and earlier bodies come back from the transition log.
|
|
102
|
+
- **`createdBy` is written once, from a create's draft, and never moves.** Named in `changes` or
|
|
103
|
+
`unset` it is refused on every action (`planning:immutable:createdBy`), so an ownership check
|
|
104
|
+
(`card.createdBy === profileId`) can trust it. A card that changes hands keeps that in a field of
|
|
105
|
+
its own type (`fields.assignee`); who made each later write is the transition's `actor`.
|
|
102
106
|
- **`seq` is the last folded transition, `head` the highest allocated.** `head > seq` means a write
|
|
103
107
|
is in flight (`isPending`); optimistic concurrency (`expectSeq`) compares against the head.
|
|
104
108
|
- `order` is a double: a card may sit between two others (`3.5`).
|
|
@@ -210,7 +214,10 @@ await planning.definitions!.define({
|
|
|
210
214
|
replaces** — and clear `unset` (`key`, `fields.key`, `flows.id`); identity and required keys are
|
|
211
215
|
never written or cleared;
|
|
212
216
|
- `link`/`unlink` move only `seq`/`head`/`updatedAt`; `delete` answers `null`;
|
|
213
|
-
- every result carries `seq = transition.seq`, `head = max(head, seq)`, `updatedAt = transition.at
|
|
217
|
+
- every result carries `seq = transition.seq`, `head = max(head, seq)`, `updatedAt = transition.at`;
|
|
218
|
+
- the log is replayed AS WRITTEN: a row the executor would refuse today (an update naming
|
|
219
|
+
`createdBy`, appended before that refusal existed) still folds. Guards live at admission
|
|
220
|
+
(`assertMutable`, the executor), never in the fold, so a stored log never stops projecting.
|
|
214
221
|
|
|
215
222
|
`applyRelationship(links, transition)` folds the edges: a create's `links`, `link`, `unlink`, and a
|
|
216
223
|
`delete` dropping every edge touching the card. An existing edge is kept, so re-folding adds nothing.
|
|
@@ -227,10 +234,12 @@ await planning.definitions!.define({
|
|
|
227
234
|
- transit — `flows[flow] = rule.to`, `status` on the primary flow, `intrinsic` when it moves,
|
|
228
235
|
`closedAt` set on entering closed and cleared on leaving; throws `IllegalTransition`;
|
|
229
236
|
- link/unlink/delete — nothing.
|
|
237
|
+
- `createdBy` only ever comes from a create's draft: `changes` and `unset` never carry it.
|
|
230
238
|
|
|
231
|
-
`assertMutable(exec, type)` refuses (`planning:immutable:<field>`) identity keys
|
|
232
|
-
`
|
|
233
|
-
`
|
|
239
|
+
`assertMutable(exec, type)` refuses (`planning:immutable:<field>`) identity keys (`createdAt`
|
|
240
|
+
among them), `createdBy` in `changes` or `unset` on any action (a create included),
|
|
241
|
+
`revision` / `bodyChars`, `status`/`intrinsic`/`flows`/`closedAt` outside a create (they move only
|
|
242
|
+
through `transit`), `category`, a fixed `code`, and clearing a required field.
|
|
234
243
|
|
|
235
244
|
## Querying
|
|
236
245
|
|
package/build/helpers/apply.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ import type { Relationship, Transition, Workcard } from '../types.js';
|
|
|
7
7
|
* safe.
|
|
8
8
|
* - Anything but the next seq (`card.seq + 1`, or 1 for a create with no card) is refused with
|
|
9
9
|
* `PlanningError('fold:out-of-order')`.
|
|
10
|
+
* - The log is replayed as written: a transition the executor would refuse today (an update naming
|
|
11
|
+
* `createdBy`, appended before that refusal existed) still folds. Guards live at admission.
|
|
10
12
|
* - `create` builds the whole record from `changes` plus the transition's identity; `delete`
|
|
11
13
|
* answers `null`; `link`/`unlink` only move `seq`/`head`/`updatedAt` (the edges are
|
|
12
14
|
* {@link applyRelationship}'s); `update`/`transit` write `changes` — `fields` and `flows` merge,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/helpers/apply.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAqB,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AA+DxF
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/helpers/apply.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAqB,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AA+DxF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,QAAQ,GAAG,QAAQ,QACrD,CAAC,GAAG,IAAI,GAAG,SAAS,cAAc,UAAU,KACjD,CAAC,GAAG,IAoDN,CAAA;AAgBD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,UAAW,YAAY,EAAE,cAAc,UAAU,KAAG,YAAY,EAwB7F,CAAA"}
|
package/build/helpers/apply.js
CHANGED
|
@@ -61,6 +61,8 @@ const writeChanges = (record, changes) => {
|
|
|
61
61
|
* safe.
|
|
62
62
|
* - Anything but the next seq (`card.seq + 1`, or 1 for a create with no card) is refused with
|
|
63
63
|
* `PlanningError('fold:out-of-order')`.
|
|
64
|
+
* - The log is replayed as written: a transition the executor would refuse today (an update naming
|
|
65
|
+
* `createdBy`, appended before that refusal existed) still folds. Guards live at admission.
|
|
64
66
|
* - `create` builds the whole record from `changes` plus the transition's identity; `delete`
|
|
65
67
|
* answers `null`; `link`/`unlink` only move `seq`/`head`/`updatedAt` (the edges are
|
|
66
68
|
* {@link applyRelationship}'s); `update`/`transit` write `changes` — `fields` and `flows` merge,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/helpers/apply.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/helpers/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,9 @@ export declare const applyUnset: <T extends object>(record: T, unset?: string[])
|
|
|
19
19
|
*
|
|
20
20
|
* `status`/`intrinsic`/`flows`/`closedAt` move only through `transit` (a create's draft may name
|
|
21
21
|
* the initial status); `code` is fixed once minted unless the type's policy says `mutable`;
|
|
22
|
-
* `category` is fixed; `revision`/`bodyChars` are computed
|
|
22
|
+
* `category` is fixed; `revision`/`bodyChars` are computed; `createdBy` is the create DRAFT's
|
|
23
|
+
* alone — named in `changes` or `unset` it is refused on every action, so an owner check
|
|
24
|
+
* (`card.createdBy === profileId`) can trust it.
|
|
23
25
|
*
|
|
24
26
|
* @throws {PlanningError} `planning:immutable:<field>`
|
|
25
27
|
*/
|
|
@@ -39,6 +41,9 @@ export declare const assertMutable: (exec: TransitionExecution, type: AnyTypeSch
|
|
|
39
41
|
* changes, diffed as in an update.
|
|
40
42
|
* - `link`, `unlink`, `delete`: nothing.
|
|
41
43
|
*
|
|
44
|
+
* `createdBy` comes from a create's draft only: `changes` and `unset` never carry it, on any action
|
|
45
|
+
* ({@link assertMutable} refuses an execution that tries).
|
|
46
|
+
*
|
|
42
47
|
* @throws {IllegalTransition} a transit the flow does not offer from the current status
|
|
43
48
|
* @throws {PlanningError} `malformed:*` for an execution missing what its action needs
|
|
44
49
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/helpers/changes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EAAE,sBAAsB,EAAiB,iBAAiB,EAAE,mBAAmB,EAC5F,QAAQ,EAAE,eAAe,EAC1B,MAAM,aAAa,CAAA;AAKpB,KAAK,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAA;AAEtD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;
|
|
1
|
+
{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/helpers/changes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EAAE,sBAAsB,EAAiB,iBAAiB,EAAE,mBAAmB,EAC5F,QAAQ,EAAE,eAAe,EAC1B,MAAM,aAAa,CAAA;AAKpB,KAAK,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAA;AAEtD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAkBD,4CAA4C;AAC5C,eAAO,MAAM,SAAS,SAAU,OAAO,SAAS,OAAO,KAAG,OAczD,CAAA;AAKD,yDAAyD;AACzD,eAAO,MAAM,WAAW,UACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAC5E,MAAM,CAAC,MAAM,EAAE,OAAO,CACuC,CAAA;AAEhE,qFAAqF;AACrF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,UAAU,CAAC,UAAU,MAAM,EAAE,KAAG,CAe1E,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,SAAU,mBAAmB,QAAQ,aAAa,KAAG,IA6B9E,CAAA;AA0ID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,cAAc,SACnB,QAAQ,GAAG,IAAI,GAAG,SAAS,QAC3B,mBAAmB,QACnB,aAAa,YACT,UAAU,MAChB,MAAM,SACH;IAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAE,KACzC,SAsDF,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,aAAa,QAAS,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,KAAG,OAEW,CAAA"}
|
package/build/helpers/changes.js
CHANGED
|
@@ -5,6 +5,8 @@ import { bodyCharsOf, nextRevision } from './specification.js';
|
|
|
5
5
|
import { initialFlowsOf, initialStatusOf, primaryFlowOf, resolveIntrinsic, ruleOf } from './status.js';
|
|
6
6
|
/** Never in a caller's changes: the transition itself carries them. */
|
|
7
7
|
const IDENTITY_KEYS = ['id', 'kind', 'type', 'entityId', 'seq', 'head', 'createdAt'];
|
|
8
|
+
/** Written once, from a create's draft; never by `changes` or `unset`, whatever the action. */
|
|
9
|
+
const PROVENANCE_KEYS = ['createdBy'];
|
|
8
10
|
/** Move only through `transit` (or a create's draft). */
|
|
9
11
|
const FLOW_KEYS = ['status', 'intrinsic', 'flows', 'closedAt'];
|
|
10
12
|
/** Computed by the executor, never supplied. */
|
|
@@ -55,7 +57,9 @@ export const applyUnset = (record, unset) => {
|
|
|
55
57
|
*
|
|
56
58
|
* `status`/`intrinsic`/`flows`/`closedAt` move only through `transit` (a create's draft may name
|
|
57
59
|
* the initial status); `code` is fixed once minted unless the type's policy says `mutable`;
|
|
58
|
-
* `category` is fixed; `revision`/`bodyChars` are computed
|
|
60
|
+
* `category` is fixed; `revision`/`bodyChars` are computed; `createdBy` is the create DRAFT's
|
|
61
|
+
* alone — named in `changes` or `unset` it is refused on every action, so an owner check
|
|
62
|
+
* (`card.createdBy === profileId`) can trust it.
|
|
59
63
|
*
|
|
60
64
|
* @throws {PlanningError} `planning:immutable:<field>`
|
|
61
65
|
*/
|
|
@@ -69,7 +73,7 @@ export const assertMutable = (exec, type) => {
|
|
|
69
73
|
if (value === undefined) {
|
|
70
74
|
continue;
|
|
71
75
|
}
|
|
72
|
-
if (IDENTITY_KEYS.includes(key) || DERIVED_KEYS.includes(key)) {
|
|
76
|
+
if (IDENTITY_KEYS.includes(key) || PROVENANCE_KEYS.includes(key) || DERIVED_KEYS.includes(key)) {
|
|
73
77
|
refuse(key);
|
|
74
78
|
}
|
|
75
79
|
if (!create && (FLOW_KEYS.includes(key) || key === 'category' || (key === 'code' && codeFixed))) {
|
|
@@ -78,6 +82,9 @@ export const assertMutable = (exec, type) => {
|
|
|
78
82
|
}
|
|
79
83
|
for (const path of exec.unset ?? []) {
|
|
80
84
|
const head = path.split('.')[0];
|
|
85
|
+
if (PROVENANCE_KEYS.includes(head)) {
|
|
86
|
+
refuse(head);
|
|
87
|
+
}
|
|
81
88
|
if (IDENTITY_KEYS.includes(path) || DERIVED_KEYS.includes(path) || REQUIRED_KEYS.includes(path)
|
|
82
89
|
|| FLOW_KEYS.includes(head) || (path === 'code' && codeFixed)) {
|
|
83
90
|
refuse(path);
|
|
@@ -91,7 +98,7 @@ const diffInto = (card, changes, skip, set) => {
|
|
|
91
98
|
const out = set.changes;
|
|
92
99
|
const current = card;
|
|
93
100
|
for (const [key, value] of Object.entries(changes ?? {})) {
|
|
94
|
-
if (value === undefined || IDENTITY_KEYS.includes(key) || skip.includes(key)) {
|
|
101
|
+
if (value === undefined || IDENTITY_KEYS.includes(key) || PROVENANCE_KEYS.includes(key) || skip.includes(key)) {
|
|
95
102
|
continue;
|
|
96
103
|
}
|
|
97
104
|
if (key === 'fields' || key === 'flows') {
|
|
@@ -128,6 +135,9 @@ const diffInto = (card, changes, skip, set) => {
|
|
|
128
135
|
};
|
|
129
136
|
const unsetInto = (card, unset, set) => {
|
|
130
137
|
for (const path of unset ?? []) {
|
|
138
|
+
if (PROVENANCE_KEYS.includes(path.split('.')[0])) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
131
141
|
if (reach(card, path) !== undefined && !set.unset.includes(path)) {
|
|
132
142
|
set.unset.push(path);
|
|
133
143
|
}
|
|
@@ -170,7 +180,8 @@ const createOf = (exec, type, registry, at, slot) => {
|
|
|
170
180
|
}
|
|
171
181
|
const draft = exec.card;
|
|
172
182
|
const overlay = Object.fromEntries(Object.entries(exec.changes ?? {})
|
|
173
|
-
.filter(([key]) => !FLOW_KEYS.includes(key) && !IDENTITY_KEYS.includes(key) && !
|
|
183
|
+
.filter(([key]) => !FLOW_KEYS.includes(key) && !IDENTITY_KEYS.includes(key) && !PROVENANCE_KEYS.includes(key)
|
|
184
|
+
&& !DERIVED_KEYS.includes(key)));
|
|
174
185
|
const parent = overlay.parent ?? draft.parent;
|
|
175
186
|
const flows = initialFlowsOf(type, registry, draft.status ?? exec.changes?.status);
|
|
176
187
|
const intrinsic = resolveIntrinsic(type, flows, registry);
|
|
@@ -219,6 +230,9 @@ const createOf = (exec, type, registry, at, slot) => {
|
|
|
219
230
|
* changes, diffed as in an update.
|
|
220
231
|
* - `link`, `unlink`, `delete`: nothing.
|
|
221
232
|
*
|
|
233
|
+
* `createdBy` comes from a create's draft only: `changes` and `unset` never carry it, on any action
|
|
234
|
+
* ({@link assertMutable} refuses an execution that tries).
|
|
235
|
+
*
|
|
222
236
|
* @throws {IllegalTransition} a transit the flow does not offer from the current status
|
|
223
237
|
* @throws {PlanningError} `malformed:*` for an execution missing what its action needs
|
|
224
238
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/helpers/changes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/helpers/changes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/planning",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.13",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Runtime-free project-planning contracts — the workcard super type, projects, specifications, typed relationships, status flows with three intrinsic states, the transition event and its pure fold, the schema registry, the models and the protocol tree.",
|
|
6
6
|
"type": "module",
|
package/src/helpers/apply.ts
CHANGED
|
@@ -71,6 +71,8 @@ const writeChanges = (record: Record<string, unknown>, changes: Record<string, u
|
|
|
71
71
|
* safe.
|
|
72
72
|
* - Anything but the next seq (`card.seq + 1`, or 1 for a create with no card) is refused with
|
|
73
73
|
* `PlanningError('fold:out-of-order')`.
|
|
74
|
+
* - The log is replayed as written: a transition the executor would refuse today (an update naming
|
|
75
|
+
* `createdBy`, appended before that refusal existed) still folds. Guards live at admission.
|
|
74
76
|
* - `create` builds the whole record from `changes` plus the transition's identity; `delete`
|
|
75
77
|
* answers `null`; `link`/`unlink` only move `seq`/`head`/`updatedAt` (the edges are
|
|
76
78
|
* {@link applyRelationship}'s); `update`/`transit` write `changes` — `fields` and `flows` merge,
|
package/src/helpers/changes.ts
CHANGED
|
@@ -21,6 +21,8 @@ export interface ChangeSet {
|
|
|
21
21
|
|
|
22
22
|
/** Never in a caller's changes: the transition itself carries them. */
|
|
23
23
|
const IDENTITY_KEYS = ['id', 'kind', 'type', 'entityId', 'seq', 'head', 'createdAt']
|
|
24
|
+
/** Written once, from a create's draft; never by `changes` or `unset`, whatever the action. */
|
|
25
|
+
const PROVENANCE_KEYS = ['createdBy']
|
|
24
26
|
/** Move only through `transit` (or a create's draft). */
|
|
25
27
|
const FLOW_KEYS = ['status', 'intrinsic', 'flows', 'closedAt']
|
|
26
28
|
/** Computed by the executor, never supplied. */
|
|
@@ -82,7 +84,9 @@ export const applyUnset = <T extends object>(record: T, unset?: string[]): T =>
|
|
|
82
84
|
*
|
|
83
85
|
* `status`/`intrinsic`/`flows`/`closedAt` move only through `transit` (a create's draft may name
|
|
84
86
|
* the initial status); `code` is fixed once minted unless the type's policy says `mutable`;
|
|
85
|
-
* `category` is fixed; `revision`/`bodyChars` are computed
|
|
87
|
+
* `category` is fixed; `revision`/`bodyChars` are computed; `createdBy` is the create DRAFT's
|
|
88
|
+
* alone — named in `changes` or `unset` it is refused on every action, so an owner check
|
|
89
|
+
* (`card.createdBy === profileId`) can trust it.
|
|
86
90
|
*
|
|
87
91
|
* @throws {PlanningError} `planning:immutable:<field>`
|
|
88
92
|
*/
|
|
@@ -97,7 +101,7 @@ export const assertMutable = (exec: TransitionExecution, type: AnyTypeSchema): v
|
|
|
97
101
|
if (value === undefined) {
|
|
98
102
|
continue
|
|
99
103
|
}
|
|
100
|
-
if (IDENTITY_KEYS.includes(key) || DERIVED_KEYS.includes(key)) {
|
|
104
|
+
if (IDENTITY_KEYS.includes(key) || PROVENANCE_KEYS.includes(key) || DERIVED_KEYS.includes(key)) {
|
|
101
105
|
refuse(key)
|
|
102
106
|
}
|
|
103
107
|
if (!create && (FLOW_KEYS.includes(key) || key === 'category' || (key === 'code' && codeFixed))) {
|
|
@@ -107,6 +111,9 @@ export const assertMutable = (exec: TransitionExecution, type: AnyTypeSchema): v
|
|
|
107
111
|
|
|
108
112
|
for (const path of exec.unset ?? []) {
|
|
109
113
|
const head = path.split('.')[0]
|
|
114
|
+
if (PROVENANCE_KEYS.includes(head)) {
|
|
115
|
+
refuse(head)
|
|
116
|
+
}
|
|
110
117
|
if (IDENTITY_KEYS.includes(path) || DERIVED_KEYS.includes(path) || REQUIRED_KEYS.includes(path)
|
|
111
118
|
|| FLOW_KEYS.includes(head) || (path === 'code' && codeFixed)) {
|
|
112
119
|
refuse(path)
|
|
@@ -123,7 +130,7 @@ const diffInto = (card: Workcard, changes: WorkcardChanges | undefined, skip: st
|
|
|
123
130
|
const current = card as unknown as Record<string, unknown>
|
|
124
131
|
|
|
125
132
|
for (const [key, value] of Object.entries(changes ?? {})) {
|
|
126
|
-
if (value === undefined || IDENTITY_KEYS.includes(key) || skip.includes(key)) {
|
|
133
|
+
if (value === undefined || IDENTITY_KEYS.includes(key) || PROVENANCE_KEYS.includes(key) || skip.includes(key)) {
|
|
127
134
|
continue
|
|
128
135
|
}
|
|
129
136
|
if (key === 'fields' || key === 'flows') {
|
|
@@ -160,6 +167,9 @@ const diffInto = (card: Workcard, changes: WorkcardChanges | undefined, skip: st
|
|
|
160
167
|
|
|
161
168
|
const unsetInto = (card: Workcard, unset: string[] | undefined, set: ChangeSet): void => {
|
|
162
169
|
for (const path of unset ?? []) {
|
|
170
|
+
if (PROVENANCE_KEYS.includes(path.split('.')[0])) {
|
|
171
|
+
continue
|
|
172
|
+
}
|
|
163
173
|
if (reach(card as unknown as Record<string, unknown>, path) !== undefined && !set.unset.includes(path)) {
|
|
164
174
|
set.unset.push(path)
|
|
165
175
|
}
|
|
@@ -206,7 +216,8 @@ const createOf = (
|
|
|
206
216
|
}
|
|
207
217
|
const draft: WorkcardDraft = exec.card
|
|
208
218
|
const overlay = Object.fromEntries(Object.entries(exec.changes ?? {})
|
|
209
|
-
.filter(([key]) => !FLOW_KEYS.includes(key) && !IDENTITY_KEYS.includes(key) && !
|
|
219
|
+
.filter(([key]) => !FLOW_KEYS.includes(key) && !IDENTITY_KEYS.includes(key) && !PROVENANCE_KEYS.includes(key)
|
|
220
|
+
&& !DERIVED_KEYS.includes(key))
|
|
210
221
|
) as WorkcardChanges
|
|
211
222
|
|
|
212
223
|
const parent = overlay.parent ?? draft.parent
|
|
@@ -261,6 +272,9 @@ const createOf = (
|
|
|
261
272
|
* changes, diffed as in an update.
|
|
262
273
|
* - `link`, `unlink`, `delete`: nothing.
|
|
263
274
|
*
|
|
275
|
+
* `createdBy` comes from a create's draft only: `changes` and `unset` never carry it, on any action
|
|
276
|
+
* ({@link assertMutable} refuses an execution that tries).
|
|
277
|
+
*
|
|
264
278
|
* @throws {IllegalTransition} a transit the flow does not offer from the current status
|
|
265
279
|
* @throws {PlanningError} `malformed:*` for an execution missing what its action needs
|
|
266
280
|
*/
|
package/tests/apply.spec.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { IntrinsicStatus, TransitionAction, WorkcardKind } from '../src/consts.j
|
|
|
3
3
|
import { IllegalTransition, PlanningError } from '../src/errors.js'
|
|
4
4
|
import { applyRelationship, applyTransition } from '../src/helpers/apply.js'
|
|
5
5
|
import { assertMutable, computeChanges, isEmptyChange } from '../src/helpers/changes.js'
|
|
6
|
-
import type { Relationship, Specification, Workcard } from '../src/types.js'
|
|
6
|
+
import type { Relationship, Specification, Workcard, WorkcardChanges } from '../src/types.js'
|
|
7
7
|
import {
|
|
8
8
|
AT, ENTITY, LATER, PROJECT_TYPE, SPEC_TYPE, STORY_TYPE, TASK_TYPE, makeRegistry, transitionOf,
|
|
9
9
|
} from './fixtures.js'
|
|
@@ -173,4 +173,68 @@ describe('assertMutable', () => {
|
|
|
173
173
|
expect(() => assertMutable({ card: 'c1', action: TransitionAction.Update, changes: { code: 'free' } }, TASK_TYPE))
|
|
174
174
|
.not.toThrow()
|
|
175
175
|
})
|
|
176
|
+
|
|
177
|
+
test('provenance is never written after the create: createdBy and createdAt in changes or unset, on any action', () => {
|
|
178
|
+
const draft = { kind: WorkcardKind.Card, type: STORY_TYPE.type, parent: 'p1', title: 'Owned', createdBy: 'owner-1' }
|
|
179
|
+
const refused = [
|
|
180
|
+
{ card: 'c1', action: TransitionAction.Update, changes: { createdBy: 'intruder' } },
|
|
181
|
+
{ card: 'c1', action: TransitionAction.Update, changes: { createdBy: null } },
|
|
182
|
+
{ card: 'c1', action: TransitionAction.Update, unset: ['createdBy'] },
|
|
183
|
+
{ card: 'c1', action: TransitionAction.Transit, transition: 'start', changes: { createdBy: 'intruder' } },
|
|
184
|
+
{ card: 'c1', action: TransitionAction.Link, link: { type: 'follows', to: 'c2' }, unset: ['createdBy'] },
|
|
185
|
+
{ card: draft, action: TransitionAction.Create, changes: { createdBy: 'intruder' } },
|
|
186
|
+
] as Parameters<typeof assertMutable>[0][]
|
|
187
|
+
|
|
188
|
+
for (const exec of refused) {
|
|
189
|
+
expect(() => assertMutable(exec, STORY_TYPE)).toThrow('planning:immutable:createdBy')
|
|
190
|
+
}
|
|
191
|
+
expect(() => assertMutable({ card: 'c1', action: TransitionAction.Update, changes: { createdAt: LATER } as WorkcardChanges }, STORY_TYPE))
|
|
192
|
+
.toThrow('planning:immutable:createdAt')
|
|
193
|
+
expect(() => assertMutable({ card: 'c1', action: TransitionAction.Update, unset: ['createdAt'] }, STORY_TYPE))
|
|
194
|
+
.toThrow('planning:immutable:createdAt')
|
|
195
|
+
expect(() => assertMutable({ card: draft, action: TransitionAction.Create }, STORY_TYPE)).not.toThrow()
|
|
196
|
+
expect(() => assertMutable({ card: 'c1', action: TransitionAction.Update, changes: { createdBy: undefined, title: 'T' } }, STORY_TYPE))
|
|
197
|
+
.not.toThrow()
|
|
198
|
+
})
|
|
199
|
+
})
|
|
200
|
+
|
|
201
|
+
describe('createdBy — written by the create alone', () => {
|
|
202
|
+
const owned = (): Workcard => ({ ...created(), createdBy: 'owner-1' })
|
|
203
|
+
|
|
204
|
+
test('computeChanges takes it from the draft and never from changes or unset', () => {
|
|
205
|
+
const create = computeChanges(undefined, {
|
|
206
|
+
action: TransitionAction.Create,
|
|
207
|
+
card: { kind: WorkcardKind.Card, type: STORY_TYPE.type, parent: 'p1', title: 'Owned', createdBy: 'owner-1' },
|
|
208
|
+
changes: { createdBy: 'intruder' },
|
|
209
|
+
}, STORY_TYPE, registry, AT)
|
|
210
|
+
expect(create.changes.createdBy).toBe('owner-1')
|
|
211
|
+
|
|
212
|
+
const update = computeChanges(owned(), {
|
|
213
|
+
card: 'c1', action: TransitionAction.Update, changes: { createdBy: 'intruder', title: 'Renamed' }, unset: ['createdBy'],
|
|
214
|
+
}, STORY_TYPE, registry, LATER)
|
|
215
|
+
expect(update).toEqual({ changes: { title: 'Renamed' }, unset: [] })
|
|
216
|
+
|
|
217
|
+
const cleared = computeChanges(owned(), { card: 'c1', action: TransitionAction.Update, changes: { createdBy: null } as unknown as WorkcardChanges },
|
|
218
|
+
STORY_TYPE, registry, LATER)
|
|
219
|
+
expect(isEmptyChange(cleared)).toBe(true)
|
|
220
|
+
|
|
221
|
+
const transit = computeChanges(owned(), {
|
|
222
|
+
card: 'c1', action: TransitionAction.Transit, transition: 'start', changes: { createdBy: 'intruder' }, unset: ['createdBy'],
|
|
223
|
+
}, STORY_TYPE, registry, LATER)
|
|
224
|
+
expect(transit.changes.createdBy).toBeUndefined()
|
|
225
|
+
expect(transit.unset).not.toContain('createdBy')
|
|
226
|
+
})
|
|
227
|
+
|
|
228
|
+
test('the fold replays a legacy transition that named it, as written — the refusal is at admission', () => {
|
|
229
|
+
const card = owned()
|
|
230
|
+
const renamed = applyTransition(card, transitionOf({
|
|
231
|
+
card: 'c1', seq: 2, action: TransitionAction.Update, at: LATER, changes: { title: 'Legacy', createdBy: 'intruder' },
|
|
232
|
+
}))!
|
|
233
|
+
const cleared = applyTransition(renamed, transitionOf({ card: 'c1', seq: 3, action: TransitionAction.Update, unset: ['createdBy'] }))!
|
|
234
|
+
|
|
235
|
+
expect([renamed.seq, renamed.title, renamed.createdBy, renamed.createdAt]).toEqual([2, 'Legacy', 'intruder', AT])
|
|
236
|
+
expect([cleared.seq, cleared.title, cleared.createdBy]).toEqual([3, 'Legacy', undefined])
|
|
237
|
+
expect(applyTransition(cleared, transitionOf({ card: 'c1', seq: 4, action: TransitionAction.Update, changes: { title: 'After' } }))!
|
|
238
|
+
.title).toBe('After')
|
|
239
|
+
})
|
|
176
240
|
})
|