@owlmeans/server-planning 0.1.18-rc.28 → 0.1.18-rc.29
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
CHANGED
|
@@ -10,7 +10,7 @@ the `@owlmeans/server-planning/store` subpath.
|
|
|
10
10
|
## Installation
|
|
11
11
|
|
|
12
12
|
```sh
|
|
13
|
-
bun add @owlmeans/server-planning@^0.1.18-rc.
|
|
13
|
+
bun add @owlmeans/server-planning@^0.1.18-rc.29 @owlmeans/planning@^0.1.18-rc.25 ajv
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
## Concepts
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/server-planning",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.29",
|
|
5
|
+
"generatedAt": "2026-10-09T17:24:50.729Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/server-planning
|
|
9
9
|
|
|
10
10
|
**Layer:** Server
|
|
11
|
-
**Install:** `"@owlmeans/server-planning": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/server-planning": "^0.1.18-rc.29"` in `dependencies` (`ajv` is a peer)
|
|
12
12
|
|
|
13
13
|
The general implementation of `@owlmeans/planning`: the planning service (a plugin host), the
|
|
14
14
|
scoped facade, the executor every write goes through, the in-memory reference store, the commit
|
|
@@ -300,26 +300,25 @@ mapping external records (`mappers`) belongs to that plugin's own store adapter.
|
|
|
300
300
|
decision per request; a throw is the request's answer (an `AuthForbidden` answers 403).
|
|
301
301
|
|
|
302
302
|
- `entityId` is the resolver's — never the token's, never `opts.scope`'s.
|
|
303
|
-
- `projects` becomes `PlanningScope.projects`, which the server facade enforces on
|
|
304
|
-
|
|
305
|
-
|
|
303
|
+
- `projects` becomes `PlanningScope.projects`, which the server facade enforces on reads and
|
|
304
|
+
writes. A card is visible when at least one project reached through its recursive parent paths
|
|
305
|
+
is allowed; specifications follow their containing cards. Anything else reads as absent
|
|
306
306
|
(`WorkcardNotFound`, `null`, an empty list); a create under an invisible parent is
|
|
307
|
-
`ParentNotFound
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
- **
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
summary counts no specification and pays nothing extra. `tests/narrowing.spec.ts` pins it.
|
|
307
|
+
`ParentNotFound`. Links, transitions and commits use current endpoint/card ancestry, with a
|
|
308
|
+
cached project fallback only for purged records. Subscriptions and commit waits enforce the
|
|
309
|
+
same visibility.
|
|
310
|
+
- **Narrowed lists, counts and summaries use the allowed recursive descendant IDs before paging.**
|
|
311
|
+
A specification is admitted through the same containing-card hierarchy as a single read.
|
|
312
|
+
Do not replace this with a direct-parent query or a filter applied after pagination.
|
|
313
|
+
`tests/narrowing.spec.ts` and shared hierarchy conformance pin this behavior.
|
|
315
314
|
- A person who may see only SOME projects of their organization (a tool-shed volunteer given one
|
|
316
315
|
shed) is expressed here: the resolver answers the project ids the person's grants list as
|
|
317
316
|
`projects`, and omits the key when a grant covers every project — never a hand-written filter in
|
|
318
317
|
each handler.
|
|
319
318
|
- `writes` is the subset of projects the person may WRITE in (`projects` are the ones they VIEW).
|
|
320
|
-
`execute` on a card, specification or link needs it to be writable — the
|
|
321
|
-
|
|
322
|
-
|
|
319
|
+
`execute` on a card, specification or link needs it to be writable — the recursive ancestor
|
|
320
|
+
rule over `writes`: a card admitted directly or through a writable parent path. A create needs
|
|
321
|
+
every named parent writable; reparenting checks every supplied destination parent. A create at the root
|
|
323
322
|
(no parent, not a project) is refused. `schema.define` of a project layer needs the project in
|
|
324
323
|
`writes`. A refusal is `PlanningForbidden` (403, `forbidden:writes:<id>`), checked before the grants
|
|
325
324
|
and before the executor. NOT governed by it: a project create (`grants.createProjects` alone) and
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/server-planning",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.29",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The general planning implementation — the planning service and its plugin/middleware registry, the transition executor, the in-memory store, the protocol handlers and the commit feed.",
|
|
6
6
|
"type": "module",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"@owlmeans/context": "^0.1.18-rc.34",
|
|
51
51
|
"@owlmeans/entrypoint": "^0.1.18-rc.41",
|
|
52
52
|
"@owlmeans/error": "^0.1.18-rc.38",
|
|
53
|
-
"@owlmeans/planning": "^0.1.18-rc.
|
|
53
|
+
"@owlmeans/planning": "^0.1.18-rc.25",
|
|
54
54
|
"@owlmeans/queue": "^0.1.18-rc.44",
|
|
55
55
|
"@owlmeans/resource": "^0.1.18-rc.40",
|
|
56
56
|
"@owlmeans/log": "^0.1.18-rc.3",
|