@haaaiawd/loom 2.0.0 → 2.0.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.
- package/CHANGELOG.md +15 -10
- package/CONTRIBUTING.md +37 -37
- package/EVIL_EVAL.md +112 -112
- package/README.md +209 -204
- package/README.zh-CN.md +171 -169
- package/SECURITY.md +11 -11
- package/cli/src/protocol.js +404 -360
- package/cli/src/store.js +624 -622
- package/design.md +198 -191
- package/docs/PROMPT_CATALOG.md +99 -92
- package/docs/RELEASE_CHECKLIST.md +53 -53
- package/docs/UX_FLOW.md +171 -171
- package/docs/brand/loom-mark.svg +18 -18
- package/docs/brand/loom-readme-header.svg +34 -34
- package/docs/brand/loom-readme-header.zh-CN.svg +29 -29
- package/docs/loom-eval-loop.drawio +21 -21
- package/docs/loom-eval-loop.svg +56 -56
- package/docs/loom-production-loop.drawio +41 -41
- package/docs/loom-production-loop.svg +92 -92
- package/package.json +52 -52
package/README.md
CHANGED
|
@@ -1,209 +1,214 @@
|
|
|
1
|
-
<p align="center"><strong>English</strong> · <a href="README.zh-CN.md">简体中文</a></p>
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
<img src="docs/brand/loom-readme-header.svg" alt="LOOM — Keep the whole. Continue the work." width="100%">
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
<a href="https://www.npmjs.com/package/@haaaiawd/loom"><img src="https://img.shields.io/npm/v/%40haaaiawd%2Floom?style=flat-square&color=4169E1&label=npm" alt="npm version"></a>
|
|
9
|
-
<img src="https://img.shields.io/badge/node-%E2%89%A518-17212B?style=flat-square" alt="Node.js 18 or newer">
|
|
10
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-9AD8C2?style=flat-square&labelColor=17212B" alt="MIT license"></a>
|
|
11
|
-
</p>
|
|
12
|
-
|
|
13
|
-
<p align="center"><strong>The human talks to the Agent. LOOM helps the Agent remember, understand, and continue.</strong></p>
|
|
14
|
-
|
|
15
|
-
LOOM is invisible project-understanding and continuity infrastructure for AI Agents. It supports
|
|
16
|
-
any work that can be materially advanced through code or command-line tools: software, operations,
|
|
17
|
-
research workflows, office automation, data work, and highly personalized projects.
|
|
18
|
-
|
|
19
|
-
The human does not learn a framework or operate a CLI. They describe what they want, answer useful
|
|
20
|
-
questions, disagree, delegate decisions, and watch the work become real. The Agent uses LOOM in the
|
|
21
|
-
background to preserve the whole project across context compression, new sessions, and implementation.
|
|
22
|
-
|
|
23
|
-
<table>
|
|
24
|
-
<tr>
|
|
25
|
-
<td width="33%"><strong>Whole over fragments</strong><br>Keep the result, decisions, systems, and unknowns connected.</td>
|
|
26
|
-
<td width="33%"><strong>Expertise over costumes</strong><br>Compile project-specific professional judgment, not decorative expert personas.</td>
|
|
27
|
-
<td width="33%"><strong>Proof over ceremony</strong><br>Use independent handoff, exact done conditions, and disk evidence.</td>
|
|
28
|
-
</tr>
|
|
29
|
-
</table>
|
|
30
|
-
|
|
31
|
-
## The loop
|
|
32
|
-
|
|
33
|
-

|
|
34
|
-
|
|
35
|
-
LOOM has three explicit feedback loops: understanding converges on the whole project; a fresh Keeper
|
|
36
|
-
tests the frozen handoff and returns concrete gaps; restartable Tasks carry implementation and evidence
|
|
37
|
-
across interruptions. A failed Keeper does not become a warning that everyone politely ignores—it sends
|
|
38
|
-
the project back to the exact source that needs repair, then requires a changed digest and a new Keeper.
|
|
39
|
-
|
|
40
|
-
The loop is adaptive. LOOM does not provide a universal questionnaire, fixed professional roles, or
|
|
41
|
-
a mandatory phase ritual. The Agent keeps clarifying while unknowns could materially change the whole.
|
|
42
|
-
It proceeds when the remaining uncertainty is reversible and local, or when the human explicitly asks
|
|
43
|
-
to skip after hearing the concrete cost.
|
|
44
|
-
|
|
45
|
-
## Project truth on disk
|
|
46
|
-
|
|
47
|
-
An initialized project contains one small semantic backbone:
|
|
48
|
-
|
|
49
|
-
```text
|
|
50
|
-
.loom/
|
|
51
|
-
├── PROJECT.md concise entry point and map of the current whole
|
|
52
|
-
├── DECISIONS.md concise history when important decisions supersede earlier ones
|
|
53
|
-
├── design/ product, experience, system, contract, verification, operations, or research docs
|
|
54
|
-
├── capabilities/ one project-specific dossier per recognizable professional field
|
|
55
|
-
├── state.json confirmed facts, assumptions, unresolved questions, Keeper status
|
|
56
|
-
├── tasks.json broad Work Map plus the detailed active horizon
|
|
57
|
-
└── eval/ optional Evil Eval scenarios for testing LOOM itself
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Small projects may need few design documents; large projects may need many. A consequential subsystem,
|
|
61
|
-
experience, interface, contract, or operational concern gets its own document when a fresh Agent must
|
|
62
|
-
understand or verify it independently. `PROJECT.md` maps the whole instead of becoming a thousand-line attic.
|
|
63
|
-
|
|
64
|
-
### Capability dossiers
|
|
65
|
-
|
|
66
|
-
A dossier exists only when specialist knowledge would change a question, design choice,
|
|
67
|
-
implementation, risk, or verification method. Each dossier represents one recognizable professional
|
|
68
|
-
field—such as UI/UX design, visual art direction, game design, psychology, security, or distributed
|
|
69
|
-
systems. Different fields remain separate even when tightly coupled; their synthesis belongs in the
|
|
70
|
-
design document whose decision they jointly shape. A task technique such as triage, ranking, parsing,
|
|
71
|
-
or caching is not allowed to masquerade as the project's entire capability surface.
|
|
72
|
-
|
|
73
|
-
### Work Map and Task
|
|
74
|
-
|
|
75
|
-
The Work Map may be hundreds or thousands of lines. It is stored, searched, and revised on disk; it
|
|
76
|
-
is not injected into every model context. Planning begins broadly, while detailed steps are compiled
|
|
77
|
-
only for the active horizon.
|
|
78
|
-
|
|
79
|
-
A Task is not a miniature bureaucracy. It is the smallest restartable checkpoint that tells a fresh
|
|
80
|
-
Agent:
|
|
81
|
-
|
|
82
|
-
- what observable result to create;
|
|
83
|
-
- what proves completion;
|
|
84
|
-
- what must not be damaged;
|
|
85
|
-
- which project and capability documents matter;
|
|
86
|
-
- what has happened, what is happening, and what comes next;
|
|
87
|
-
- which evidence already exists and which exact done condition it proves.
|
|
88
|
-
|
|
89
|
-
## Agent quick start
|
|
90
|
-
|
|
91
|
-
Install the CLI:
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
npm install --global @haaaiawd/loom
|
|
95
|
-
loom --version
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Or install from the repository during development:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
npm install --global .
|
|
102
|
-
loom --version
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Inside a project, the Agent runs:
|
|
106
|
-
|
|
107
|
-
```bash
|
|
1
|
+
<p align="center"><strong>English</strong> · <a href="README.zh-CN.md">简体中文</a></p>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="docs/brand/loom-readme-header.svg" alt="LOOM — Keep the whole. Continue the work." width="100%">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@haaaiawd/loom"><img src="https://img.shields.io/npm/v/%40haaaiawd%2Floom?style=flat-square&color=4169E1&label=npm" alt="npm version"></a>
|
|
9
|
+
<img src="https://img.shields.io/badge/node-%E2%89%A518-17212B?style=flat-square" alt="Node.js 18 or newer">
|
|
10
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-9AD8C2?style=flat-square&labelColor=17212B" alt="MIT license"></a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center"><strong>The human talks to the Agent. LOOM helps the Agent remember, understand, and continue.</strong></p>
|
|
14
|
+
|
|
15
|
+
LOOM is invisible project-understanding and continuity infrastructure for AI Agents. It supports
|
|
16
|
+
any work that can be materially advanced through code or command-line tools: software, operations,
|
|
17
|
+
research workflows, office automation, data work, and highly personalized projects.
|
|
18
|
+
|
|
19
|
+
The human does not learn a framework or operate a CLI. They describe what they want, answer useful
|
|
20
|
+
questions, disagree, delegate decisions, and watch the work become real. The Agent uses LOOM in the
|
|
21
|
+
background to preserve the whole project across context compression, new sessions, and implementation.
|
|
22
|
+
|
|
23
|
+
<table>
|
|
24
|
+
<tr>
|
|
25
|
+
<td width="33%"><strong>Whole over fragments</strong><br>Keep the result, decisions, systems, and unknowns connected.</td>
|
|
26
|
+
<td width="33%"><strong>Expertise over costumes</strong><br>Compile project-specific professional judgment, not decorative expert personas.</td>
|
|
27
|
+
<td width="33%"><strong>Proof over ceremony</strong><br>Use independent handoff, exact done conditions, and disk evidence.</td>
|
|
28
|
+
</tr>
|
|
29
|
+
</table>
|
|
30
|
+
|
|
31
|
+
## The loop
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
LOOM has three explicit feedback loops: understanding converges on the whole project; a fresh Keeper
|
|
36
|
+
tests the frozen handoff and returns concrete gaps; restartable Tasks carry implementation and evidence
|
|
37
|
+
across interruptions. A failed Keeper does not become a warning that everyone politely ignores—it sends
|
|
38
|
+
the project back to the exact source that needs repair, then requires a changed digest and a new Keeper.
|
|
39
|
+
|
|
40
|
+
The loop is adaptive. LOOM does not provide a universal questionnaire, fixed professional roles, or
|
|
41
|
+
a mandatory phase ritual. The Agent keeps clarifying while unknowns could materially change the whole.
|
|
42
|
+
It proceeds when the remaining uncertainty is reversible and local, or when the human explicitly asks
|
|
43
|
+
to skip after hearing the concrete cost.
|
|
44
|
+
|
|
45
|
+
## Project truth on disk
|
|
46
|
+
|
|
47
|
+
An initialized project contains one small semantic backbone:
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
.loom/
|
|
51
|
+
├── PROJECT.md concise entry point and map of the current whole
|
|
52
|
+
├── DECISIONS.md concise history when important decisions supersede earlier ones
|
|
53
|
+
├── design/ product, experience, system, contract, verification, operations, or research docs
|
|
54
|
+
├── capabilities/ one project-specific dossier per recognizable professional field
|
|
55
|
+
├── state.json confirmed facts, assumptions, unresolved questions, Keeper status
|
|
56
|
+
├── tasks.json broad Work Map plus the detailed active horizon
|
|
57
|
+
└── eval/ optional Evil Eval scenarios for testing LOOM itself
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Small projects may need few design documents; large projects may need many. A consequential subsystem,
|
|
61
|
+
experience, interface, contract, or operational concern gets its own document when a fresh Agent must
|
|
62
|
+
understand or verify it independently. `PROJECT.md` maps the whole instead of becoming a thousand-line attic.
|
|
63
|
+
|
|
64
|
+
### Capability dossiers
|
|
65
|
+
|
|
66
|
+
A dossier exists only when specialist knowledge would change a question, design choice,
|
|
67
|
+
implementation, risk, or verification method. Each dossier represents one recognizable professional
|
|
68
|
+
field—such as UI/UX design, visual art direction, game design, psychology, security, or distributed
|
|
69
|
+
systems. Different fields remain separate even when tightly coupled; their synthesis belongs in the
|
|
70
|
+
design document whose decision they jointly shape. A task technique such as triage, ranking, parsing,
|
|
71
|
+
or caching is not allowed to masquerade as the project's entire capability surface.
|
|
72
|
+
|
|
73
|
+
### Work Map and Task
|
|
74
|
+
|
|
75
|
+
The Work Map may be hundreds or thousands of lines. It is stored, searched, and revised on disk; it
|
|
76
|
+
is not injected into every model context. Planning begins broadly, while detailed steps are compiled
|
|
77
|
+
only for the active horizon.
|
|
78
|
+
|
|
79
|
+
A Task is not a miniature bureaucracy. It is the smallest restartable checkpoint that tells a fresh
|
|
80
|
+
Agent:
|
|
81
|
+
|
|
82
|
+
- what observable result to create;
|
|
83
|
+
- what proves completion;
|
|
84
|
+
- what must not be damaged;
|
|
85
|
+
- which project and capability documents matter;
|
|
86
|
+
- what has happened, what is happening, and what comes next;
|
|
87
|
+
- which evidence already exists and which exact done condition it proves.
|
|
88
|
+
|
|
89
|
+
## Agent quick start
|
|
90
|
+
|
|
91
|
+
Install the CLI:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npm install --global @haaaiawd/loom
|
|
95
|
+
loom --version
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Or install from the repository during development:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm install --global .
|
|
102
|
+
loom --version
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Inside a project, the Agent runs:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
108
|
loom init
|
|
109
109
|
loom context
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
loom record --json-file understanding-update.json
|
|
117
|
-
loom design add product --title "Product definition" --kind product
|
|
118
|
-
loom design add local-analysis --title "Local analysis system" --kind system
|
|
119
|
-
loom design add acceptance --title "Vertical-slice verification" --kind verification
|
|
120
|
-
loom capability add ui-ux-design --title "UI/UX design"
|
|
121
|
-
loom capability add behavioral-psychology --title "Behavioral psychology"
|
|
122
|
-
loom task plan --json-file initial-work-map.json
|
|
123
|
-
loom project ready
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
At the transition to material execution, open a fresh Agent thread and give it one short instruction:
|
|
127
|
-
|
|
128
|
-
```text
|
|
129
|
-
Run loom keeper prompt in this project and follow it. Decide whether you can responsibly start.
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
If Keeper returns `needs_revision` or `blocked`, those exact gaps reappear in `loom context`. The Agent
|
|
133
|
-
repairs the relevant project, design, capability, or Task source, prepares a changed digest, and opens a
|
|
134
|
-
different fresh Keeper. If the host cannot create a subagent, the human can open a new window and use the
|
|
135
|
-
same sentence. After the one-time handoff passes, the execution Agent starts and maintains Tasks normally:
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
loom task next
|
|
139
|
-
loom task start TASK-001
|
|
140
|
-
loom context
|
|
141
|
-
loom task update TASK-001 --json-file progress.json
|
|
142
|
-
loom task block TASK-001 --json-file block.json
|
|
143
|
-
loom task reopen TASK-001
|
|
144
|
-
loom task reopen TASK-001 --reason "Prior completion evidence was disproven"
|
|
145
|
-
loom task done TASK-001 --json-file evidence.json
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Completion is deliberately explicit:
|
|
149
|
-
|
|
150
|
-
```json
|
|
151
|
-
{
|
|
152
|
-
"evidence": ["npm test: 21 passed, 0 failed"],
|
|
153
|
-
"checks": [
|
|
154
|
-
{
|
|
155
|
-
"criterion": "The exact done_when sentence from the Task.",
|
|
156
|
-
"evidence": ["The command, artifact, or observation that proves this criterion."]
|
|
157
|
-
}
|
|
158
|
-
]
|
|
159
|
-
}
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Run `loom --help` for the complete command surface. Run `loom check` for structural health. Run
|
|
163
|
-
`loom prompts` to print every cognitive message LOOM can inject: the stable collaboration core,
|
|
164
|
-
runtime protocol, dynamic state layer, all document templates, Keeper prompt, eval conditions, judge
|
|
165
|
-
prompt, and their composition order. See the [prompt and message catalog](docs/PROMPT_CATALOG.md).
|
|
166
|
-
|
|
167
|
-
## What LOOM deliberately removed
|
|
168
|
-
|
|
169
|
-
LOOM 2 replaces the v1 chain of Doctrine, Vision, Capability Graph, Impact Gate, Intent Map, Expertise
|
|
170
|
-
Pack, Atelier, Quality Arena, per-Intent Keeper, and Atlas with one adaptive understanding loop, a
|
|
171
|
-
scalable graph of design documents, separate professional-field dossiers, one Work Map, and one
|
|
172
|
-
restartable Task contract.
|
|
173
|
-
|
|
174
|
-
The valuable ideas remain: project judgment, external professional capability, authored choices,
|
|
175
|
-
observable completion, context isolation, and evidence. They no longer require separate roles and gates.
|
|
176
|
-
|
|
177
|
-
## Proving that LOOM helps
|
|
178
|
-
|
|
179
|
-
`loom eval scaffold --json-file scenario.json` creates an Evil Eval scenario with equal model, tools,
|
|
180
|
-
workspace, user facts, and budget across two conditions. The only intended difference is the availability
|
|
181
|
-
of LOOM. Runs are repeated, context is forcibly reset, outputs are blinded and order-swapped, and ceremony,
|
|
182
|
-
user burden, time, and token cost are penalized alongside quality. See [EVIL_EVAL.md](EVIL_EVAL.md).
|
|
183
|
-
|
|
184
|
-

|
|
185
|
-
|
|
186
|
-
## Development
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
npm test
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
The v2 test suite exercises the complete loop, including a 250-Task Work Map, context selection,
|
|
193
|
-
superseding decisions, scalable design documents, professional-field separation, capability compilation,
|
|
194
|
-
multi-attempt Keeper revision, stale digest and duplicate-run
|
|
195
|
-
rejection, exact-file Task start, block/reopen including disproven completion, per-done-condition evidence,
|
|
196
|
-
and Evil Eval controls. See the
|
|
197
|
-
[complete UX and loop specification](docs/UX_FLOW.md).
|
|
112
|
+
When a Task is active, `loom context` also restores a compact execution protocol: reconcile the Task with
|
|
113
|
+
the current workspace and version-control state, inspect relevant tests before editing, choose proof by risk
|
|
114
|
+
and exact `done_when` claims, persist `completed/current/next` at meaningful handoffs, and close only with
|
|
115
|
+
reproducible evidence. It does not impose a ceremonial test or pull request on work that does not need one.
|
|
198
116
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
117
|
+
The Agent edits `.loom/PROJECT.md`, design documents, and capability dossiers as human-readable project truth. Structured
|
|
118
|
+
writes use JSON files so long content remains auditable and shell quoting does not corrupt it:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
loom record --json-file understanding-update.json
|
|
122
|
+
loom design add product --title "Product definition" --kind product
|
|
123
|
+
loom design add local-analysis --title "Local analysis system" --kind system
|
|
124
|
+
loom design add acceptance --title "Vertical-slice verification" --kind verification
|
|
125
|
+
loom capability add ui-ux-design --title "UI/UX design"
|
|
126
|
+
loom capability add behavioral-psychology --title "Behavioral psychology"
|
|
127
|
+
loom task plan --json-file initial-work-map.json
|
|
128
|
+
loom project ready
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
At the transition to material execution, open a fresh Agent thread and give it one short instruction:
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
Run loom keeper prompt in this project and follow it. Decide whether you can responsibly start.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
If Keeper returns `needs_revision` or `blocked`, those exact gaps reappear in `loom context`. The Agent
|
|
138
|
+
repairs the relevant project, design, capability, or Task source, prepares a changed digest, and opens a
|
|
139
|
+
different fresh Keeper. If the host cannot create a subagent, the human can open a new window and use the
|
|
140
|
+
same sentence. After the one-time handoff passes, the execution Agent starts and maintains Tasks normally:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
loom task next
|
|
144
|
+
loom task start TASK-001
|
|
145
|
+
loom context
|
|
146
|
+
loom task update TASK-001 --json-file progress.json
|
|
147
|
+
loom task block TASK-001 --json-file block.json
|
|
148
|
+
loom task reopen TASK-001
|
|
149
|
+
loom task reopen TASK-001 --reason "Prior completion evidence was disproven"
|
|
150
|
+
loom task done TASK-001 --json-file evidence.json
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Completion is deliberately explicit:
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"evidence": ["npm test: 21 passed, 0 failed"],
|
|
158
|
+
"checks": [
|
|
159
|
+
{
|
|
160
|
+
"criterion": "The exact done_when sentence from the Task.",
|
|
161
|
+
"evidence": ["The command, artifact, or observation that proves this criterion."]
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Run `loom --help` for the complete command surface. Run `loom check` for structural health. Run
|
|
168
|
+
`loom prompts` to print every cognitive message LOOM can inject: the stable collaboration core,
|
|
169
|
+
runtime protocol, dynamic state layer, all document templates, Keeper prompt, eval conditions, judge
|
|
170
|
+
prompt, and their composition order. See the [prompt and message catalog](docs/PROMPT_CATALOG.md).
|
|
171
|
+
|
|
172
|
+
## What LOOM deliberately removed
|
|
173
|
+
|
|
174
|
+
LOOM 2 replaces the v1 chain of Doctrine, Vision, Capability Graph, Impact Gate, Intent Map, Expertise
|
|
175
|
+
Pack, Atelier, Quality Arena, per-Intent Keeper, and Atlas with one adaptive understanding loop, a
|
|
176
|
+
scalable graph of design documents, separate professional-field dossiers, one Work Map, and one
|
|
177
|
+
restartable Task contract.
|
|
178
|
+
|
|
179
|
+
The valuable ideas remain: project judgment, external professional capability, authored choices,
|
|
180
|
+
observable completion, context isolation, and evidence. They no longer require separate roles and gates.
|
|
181
|
+
|
|
182
|
+
## Proving that LOOM helps
|
|
183
|
+
|
|
184
|
+
`loom eval scaffold --json-file scenario.json` creates an Evil Eval scenario with equal model, tools,
|
|
185
|
+
workspace, user facts, and budget across two conditions. The only intended difference is the availability
|
|
186
|
+
of LOOM. Runs are repeated, context is forcibly reset, outputs are blinded and order-swapped, and ceremony,
|
|
187
|
+
user burden, time, and token cost are penalized alongside quality. See [EVIL_EVAL.md](EVIL_EVAL.md).
|
|
188
|
+
|
|
189
|
+

|
|
190
|
+
|
|
191
|
+
## Development
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
npm test
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
The v2 test suite exercises the complete loop, including a 250-Task Work Map, context selection,
|
|
198
|
+
superseding decisions, scalable design documents, professional-field separation, capability compilation,
|
|
199
|
+
multi-attempt Keeper revision, stale digest and duplicate-run
|
|
200
|
+
rejection, exact-file Task start, block/reopen including disproven completion, per-done-condition evidence,
|
|
201
|
+
and Evil Eval controls. See the
|
|
202
|
+
[complete UX and loop specification](docs/UX_FLOW.md).
|
|
203
|
+
|
|
204
|
+
## Documentation
|
|
205
|
+
|
|
206
|
+
| Read this | When you need |
|
|
207
|
+
| --- | --- |
|
|
208
|
+
| [System design](design.md) | The architecture, storage model, invariants, and command contracts |
|
|
209
|
+
| [UX and loop specification](docs/UX_FLOW.md) | Every human, Agent, LOOM, Keeper, and Task transition |
|
|
210
|
+
| [Prompt and message catalog](docs/PROMPT_CATALOG.md) | Every message LOOM injects and how the layers compose |
|
|
211
|
+
| [Evil Eval protocol](EVIL_EVAL.md) | A controlled framework-vs-no-framework comparison |
|
|
212
|
+
| [Changelog](CHANGELOG.md) | What changed in LOOM 2 |
|
|
213
|
+
|
|
214
|
+
Editable Draw.io sources live beside both flow diagrams in [`docs/`](docs/).
|