dreamteamer 0.15.0 → 0.15.1
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.
|
@@ -37,7 +37,17 @@ schema:
|
|
|
37
37
|
properties:
|
|
38
38
|
path:
|
|
39
39
|
type: string
|
|
40
|
-
description:
|
|
40
|
+
description: >-
|
|
41
|
+
Folder holding the records, workspace-relative. `data/<collection>` — that is the answer
|
|
42
|
+
unless you can state a reason. `state/<collection>` is DEPRECATED as a convention since
|
|
43
|
+
2026-08-31: decision 4 created it for runs, triggers, registries and cursors, all seven
|
|
44
|
+
of those collections have been deleted, and the one real operational-data need that
|
|
45
|
+
arrived since went to a gitignored `.cache/*.jsonl` because append-only readings are the
|
|
46
|
+
wrong shape for records. The mechanism still works and is kept, exactly like `group`
|
|
47
|
+
below, so a workspace wanting a second root has one. ⚠ NEVER author `system/` — sources
|
|
48
|
+
have lived in `modules/<module>/<kind>/` since the 2026-08-05 flatten, and a `system/`
|
|
49
|
+
prefix is only how `runtime.js` recognises a RUNTIME collection in a descriptor compiled
|
|
50
|
+
by a pre-flatten engine.
|
|
41
51
|
codec:
|
|
42
52
|
type: string
|
|
43
53
|
enum: [md, yaml, json, file]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dreamteamer",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"description": "A workspace compiler for coding agents — schema-validated records as plain files over git, compiled into every harness",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Gilad Khen <giladkhen@gmail.com>",
|
|
@@ -268,12 +268,24 @@ model wants a shared **template** plus two thin descriptors — or a reference b
|
|
|
268
268
|
base collection that exists only to be extended. An abstraction with one concrete consumer is a
|
|
269
269
|
roadmap, not a model; wait for the second consumer.
|
|
270
270
|
|
|
271
|
-
### 11. Where records live: `data
|
|
272
|
-
|
|
273
|
-
- **`data/`
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
271
|
+
### 11. Where records live: `data/`, codecs, shapes
|
|
272
|
+
|
|
273
|
+
- **`data/` is where records go.** `storage.path` is free-form, so a collection can be pointed
|
|
274
|
+
anywhere in the workspace, but the answer is `data/<collection>` unless you have a reason you can
|
|
275
|
+
state.
|
|
276
|
+
- ⚠ **`state/` is DEPRECATED as a convention — do not spend a decision on it.** It was created as
|
|
277
|
+
the home for "operational records": runs, triggers, registries, cursors. All seven of those
|
|
278
|
+
collections were later measured unused and deleted, so its entire reason went with them. The
|
|
279
|
+
mechanism still works end to end (a collection declaring `storage.path: state/<name>` writes,
|
|
280
|
+
lists and checks correctly) and is kept for anyone who wants a second root — but nothing ships
|
|
281
|
+
there, and `dt init` no longer creates the folder.
|
|
282
|
+
- **The need it was aimed at is real; records were the wrong answer.** When genuine operational data
|
|
283
|
+
finally arrived — cached provider readings, thousands of append-only rows — it went to a
|
|
284
|
+
gitignored `.cache/<thing>.jsonl`, and that was right: one record per reading would have been
|
|
285
|
+
thousands of files nobody opens individually, churning git for nothing. So the rule is not "put
|
|
286
|
+
machinery in `state/`", it is **do not model machinery as records at all**. In descending order:
|
|
287
|
+
a field on a record that already exists · a line appended to a gitignored cache file · a real
|
|
288
|
+
collection, if and only if you will genuinely list, filter and read the things one at a time.
|
|
277
289
|
- **`codec: md` whenever a human reads a body; `yaml` when nobody does.** A record that is all
|
|
278
290
|
fields and no prose (a lab value, a transaction, a cursor) is `yaml` — the body would only ever
|
|
279
291
|
be empty. `json` exists for tool-written records.
|
|
@@ -33,7 +33,6 @@ demand:
|
|
|
33
33
|
| provenance | `.dreamteamer/manifest.yaml` | which module shipped which entry |
|
|
34
34
|
| sources (write) | `modules/<module>/` — **including the workspace's own**, the `dreamteamer.workspace-module` named in `package.json` | a source folder at the workspace ROOT is a compile ERROR. same-name collisions across modules are compile errors too. after ANY source change: `npm run compile` |
|
|
35
35
|
| content records | `data/<collection>/` | per each descriptor's `storage.path` |
|
|
36
|
-
| operational records | `state/<collection>/` | whatever a module declares there; core ships none |
|
|
37
36
|
|
|
38
37
|
- a record is a `<id>.<suffix>.<ext>` file (or a folder, for folder-shape collections). **the id is
|
|
39
38
|
the path** inside the collection folder minus suffix and extension — nested folders join in:
|
package/src/harnesses.js
CHANGED
|
@@ -305,8 +305,7 @@ function orientationBlock(flavor, skillsIndex, sourceLayout = 'flat', namespaces
|
|
|
305
305
|
'working with data.** schemas (read): `.dreamteamer/collections/` (provenance:',
|
|
306
306
|
'`.dreamteamer/manifest.yaml`). sources (write): ' + sourcesLine,
|
|
307
307
|
'`command-bindings/`, `ui-views/`, `collection-templates/`',
|
|
308
|
-
'(see manifest for channels). data: `data
|
|
309
|
-
'`state/`. records are `<id>.<suffix>.<ext>`',
|
|
308
|
+
'(see manifest for channels). data: `data/`. records are `<id>.<suffix>.<ext>`',
|
|
310
309
|
'files; ids are paths; references are `<collection>/<id>`. run `dreamteamer check` (`npm run',
|
|
311
310
|
'check`) after bulk edits; run `dreamteamer compile` (`npm run compile`) after changing any',
|
|
312
311
|
'source or installing modules.',
|
package/src/init.js
CHANGED
|
@@ -108,7 +108,14 @@ export function init({ flags = {} } = {}) {
|
|
|
108
108
|
const starter = path.join(systemRoot, 'collections', 'notes.collection.yaml');
|
|
109
109
|
if (!fs.existsSync(starter)) fs.writeFileSync(starter, STARTER_COLLECTION);
|
|
110
110
|
fs.mkdirSync(path.join(root, dataPath), { recursive: true });
|
|
111
|
-
|
|
111
|
+
// NO `state/` is created. It was decision-4's home for operational records — runs, triggers,
|
|
112
|
+
// registries, cursors — and every one of those seven collections has since been deleted. When a
|
|
113
|
+
// real operational-data need finally arrived (cached provider readings) it went to a gitignored
|
|
114
|
+
// `.cache/*.jsonl` instead, because thousands of append-only readings are the wrong shape for
|
|
115
|
+
// records at all. So `state/` is a working facility with no users, and seeding an empty folder
|
|
116
|
+
// for it is the "capability that needs a record before it exists" smell. The MECHANISM is kept —
|
|
117
|
+
// `storage.path: state/<name>` still compiles, writes, lists and checks — so a workspace that
|
|
118
|
+
// wants a second root has one; the engine just stops advertising a fork nobody has taken.
|
|
112
119
|
|
|
113
120
|
// NO user record is seeded, and there is no `users` collection — both removed from core in 0.8.0.
|
|
114
121
|
// It failed the "does the ENGINE read it?" test on a circular justification: `users` was core
|