@haaaiawd/loom 2.0.0 → 2.1.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/CHANGELOG.md +27 -0
- package/CONTRIBUTING.md +37 -37
- package/EVIL_EVAL.md +115 -102
- package/README.md +235 -209
- package/README.zh-CN.md +191 -174
- package/SECURITY.md +11 -11
- package/cli/bin/loom.js +78 -4
- package/cli/src/protocol.js +697 -367
- package/cli/src/store.js +983 -626
- package/design.md +210 -188
- package/docs/PROMPT_CATALOG.md +101 -84
- package/docs/RELEASE_CHECKLIST.md +53 -53
- package/docs/UX_FLOW.md +178 -165
- 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
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# LOOM release checklist
|
|
2
|
-
|
|
3
|
-
This checklist stops a documentation-complete release from becoming a runtime-incomplete release.
|
|
4
|
-
|
|
5
|
-
## 1. Confirm the release surface
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
node cli/bin/loom.js --version
|
|
9
|
-
node cli/bin/loom.js --help
|
|
10
|
-
node cli/bin/loom.js prompts
|
|
11
|
-
npm test
|
|
12
|
-
npm pack --dry-run
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
Confirm that the package contains the CLI runtime, English and Chinese READMEs, design, prompt catalog, UX flow, Evil Eval
|
|
16
|
-
protocol, changelog, license, contribution guide, and security policy. Check that it does not contain pilot
|
|
17
|
-
workspaces, eval artifacts, temporary browser profiles, or local project state.
|
|
18
|
-
|
|
19
|
-
## 2. Confirm metadata and registry state
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
npm whoami
|
|
23
|
-
npm view @haaaiawd/loom version
|
|
24
|
-
git status --short
|
|
25
|
-
git diff --check
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
The version in `package.json`, `CHANGELOG.md`, and `loom --version` must agree. The new version must not
|
|
29
|
-
already exist in the registry.
|
|
30
|
-
|
|
31
|
-
## 3. Publish deliberately
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
git tag v2.0.
|
|
35
|
-
git push origin HEAD
|
|
36
|
-
git push origin v2.0.
|
|
37
|
-
npm publish --access public
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Run these commands only after reviewing the final diff and confirming the authenticated GitHub remote and
|
|
41
|
-
npm identity. Tags and published npm versions are externally visible and should not be used as test steps.
|
|
42
|
-
|
|
43
|
-
## 4. Verify from the outside
|
|
44
|
-
|
|
45
|
-
In a clean temporary directory:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npm view @haaaiawd/loom version
|
|
49
|
-
npx @haaaiawd/loom@2.0.
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Then open the GitHub README and npm package page to confirm the SVG header, diagrams, links, and changelog
|
|
53
|
-
render correctly. Record any unverified platform boundary instead of silently declaring it passed.
|
|
1
|
+
# LOOM release checklist
|
|
2
|
+
|
|
3
|
+
This checklist stops a documentation-complete release from becoming a runtime-incomplete release.
|
|
4
|
+
|
|
5
|
+
## 1. Confirm the release surface
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node cli/bin/loom.js --version
|
|
9
|
+
node cli/bin/loom.js --help
|
|
10
|
+
node cli/bin/loom.js prompts
|
|
11
|
+
npm test
|
|
12
|
+
npm pack --dry-run
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Confirm that the package contains the CLI runtime, English and Chinese READMEs, design, prompt catalog, UX flow, Evil Eval
|
|
16
|
+
protocol, changelog, license, contribution guide, and security policy. Check that it does not contain pilot
|
|
17
|
+
workspaces, eval artifacts, temporary browser profiles, or local project state.
|
|
18
|
+
|
|
19
|
+
## 2. Confirm metadata and registry state
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm whoami
|
|
23
|
+
npm view @haaaiawd/loom version
|
|
24
|
+
git status --short
|
|
25
|
+
git diff --check
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The version in `package.json`, `CHANGELOG.md`, and `loom --version` must agree. The new version must not
|
|
29
|
+
already exist in the registry.
|
|
30
|
+
|
|
31
|
+
## 3. Publish deliberately
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
git tag v2.0.1
|
|
35
|
+
git push origin HEAD
|
|
36
|
+
git push origin v2.0.1
|
|
37
|
+
npm publish --access public
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Run these commands only after reviewing the final diff and confirming the authenticated GitHub remote and
|
|
41
|
+
npm identity. Tags and published npm versions are externally visible and should not be used as test steps.
|
|
42
|
+
|
|
43
|
+
## 4. Verify from the outside
|
|
44
|
+
|
|
45
|
+
In a clean temporary directory:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm view @haaaiawd/loom version
|
|
49
|
+
npx @haaaiawd/loom@2.0.1 --version
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Then open the GitHub README and npm package page to confirm the SVG header, diagrams, links, and changelog
|
|
53
|
+
render correctly. Record any unverified platform boundary instead of silently declaring it passed.
|
package/docs/UX_FLOW.md
CHANGED
|
@@ -1,171 +1,184 @@
|
|
|
1
|
-
# LOOM 2 Complete UX and Loop Specification
|
|
2
|
-
|
|
3
|
-
## Experience promise
|
|
4
|
-
|
|
5
|
-
The human experiences one capable Agent who understands, asks, decides, builds, and recovers. They do not experience
|
|
6
|
-
framework stages, role handoffs, status commands, or document maintenance. LOOM is the Agent's backstage continuity
|
|
7
|
-
system.
|
|
8
|
-
|
|
9
|
-
The system has three nested production loops and one external evaluation loop:
|
|
10
|
-
|
|
11
|
-
1. Understanding loop — converge on the whole, its design-document graph, and the professional fields it needs.
|
|
12
|
-
2. Readiness loop — let a fresh Keeper expose missing context and feed gaps back into understanding.
|
|
13
|
-
3. Delivery loop — execute one restartable Task, test, repair or reflow, attach evidence, and continue.
|
|
14
|
-
4. Evil Eval — compare the same Agent with no LOOM against the Agent using LOOM under equal conditions.
|
|
15
|
-
|
|
16
|
-
## Surfaces and responsibilities
|
|
17
|
-
|
|
18
|
-
| Surface | Human visible | Responsibility |
|
|
19
|
-
|---|---:|---|
|
|
20
|
-
| Natural conversation | Yes | Desired result, meaningful questions, delegated decisions, risk authority, progress and delivery |
|
|
21
|
-
| Workspace and product artifacts | When useful | The real code, files, commands, reports, or operational result |
|
|
22
|
-
| PROJECT.md, design docs, capability dossiers | Optional | Human-editable whole, detailed system decisions, and separate professional judgments |
|
|
23
|
-
| `loom context` and structured state | No | Agent continuity after compression or a new session |
|
|
24
|
-
| Work Map and active Task | Normally no | Broad coverage, current outcome, boundaries, relevant context, progress and evidence |
|
|
25
|
-
| Keeper prompt and attempts | Only if a new window is required | One readiness handoff, with revision loops before execution |
|
|
26
|
-
| Evil Eval harness | No during normal work | Controlled evidence about whether LOOM itself helps |
|
|
27
|
-
|
|
28
|
-
## 0. Resume or receive a request
|
|
29
|
-
|
|
30
|
-
The Agent runs `loom context` when LOOM exists. It then interprets the current request normally. Existing workspace
|
|
31
|
-
inspection is conditional: inspect only when the request depends on the existing project, not because LOOM demands a scan.
|
|
32
|
-
|
|
33
|
-
Human UX: nothing framework-specific appears.
|
|
34
|
-
|
|
35
|
-
## 1. Form the emerging whole
|
|
36
|
-
|
|
37
|
-
The Agent explains what it currently believes the finished result should be. This is conversational, not a mandatory
|
|
38
|
-
template recital. It is most useful initially, after a consequential correction, and before material execution.
|
|
39
|
-
|
|
40
|
-
The Agent identifies the current uncertainty frontier: decisions whose answers could materially change outcome,
|
|
41
|
-
experience, boundaries, architecture, risk, cost, or proof of completion.
|
|
42
|
-
|
|
43
|
-
## 2. Ask one dense, adaptive round
|
|
44
|
-
|
|
45
|
-
The Agent asks all currently visible high-value questions in a coherent round. It may group by a natural decision cluster,
|
|
46
|
-
but it does not follow a fixed domain list or question count.
|
|
47
|
-
|
|
48
|
-
It does not ask facts reliably discoverable from tools, professional decisions it can responsibly make, speculative future
|
|
49
|
-
details that do not affect the current whole, or framework questions whose only purpose is filling a schema.
|
|
50
|
-
|
|
51
|
-
| Human response | Agent behavior |
|
|
52
|
-
|---|---|
|
|
53
|
-
| Direct answer | Record confirmed fact and update current truth |
|
|
54
|
-
| Correction | Update PROJECT.md and affected design docs; append a superseding decision with impact |
|
|
55
|
-
| `You decide` | Make the best reversible Agent decision, explain the important tradeoff, and record it |
|
|
56
|
-
| `I don't know` | Research or decide when safe; ask again only if the human owns the missing preference or authority |
|
|
57
|
-
| `Skip questions and continue` | Name the concrete quality or risk loss, record skipped uncertainty, then proceed |
|
|
58
|
-
|
|
1
|
+
# LOOM 2 Complete UX and Loop Specification
|
|
2
|
+
|
|
3
|
+
## Experience promise
|
|
4
|
+
|
|
5
|
+
The human experiences one capable Agent who understands, asks, decides, builds, and recovers. They do not experience
|
|
6
|
+
framework stages, role handoffs, status commands, or document maintenance. LOOM is the Agent's backstage continuity
|
|
7
|
+
system.
|
|
8
|
+
|
|
9
|
+
The system has three nested production loops and one external evaluation loop:
|
|
10
|
+
|
|
11
|
+
1. Understanding loop — converge on the whole, its design-document graph, and the professional fields it needs.
|
|
12
|
+
2. Readiness loop — let a fresh Keeper expose missing context and feed gaps back into understanding.
|
|
13
|
+
3. Delivery loop — execute one restartable Task, test, repair or reflow, attach evidence, and continue.
|
|
14
|
+
4. Evil Eval — compare the same Agent with no LOOM against the Agent using LOOM under equal conditions.
|
|
15
|
+
|
|
16
|
+
## Surfaces and responsibilities
|
|
17
|
+
|
|
18
|
+
| Surface | Human visible | Responsibility |
|
|
19
|
+
|---|---:|---|
|
|
20
|
+
| Natural conversation | Yes | Desired result, meaningful questions, delegated decisions, risk authority, progress and delivery |
|
|
21
|
+
| Workspace and product artifacts | When useful | The real code, files, commands, reports, or operational result |
|
|
22
|
+
| PROJECT.md, design docs, capability dossiers | Optional | Human-editable whole, detailed system decisions, and separate professional judgments |
|
|
23
|
+
| `loom context` and structured state | No | Agent continuity after compression or a new session |
|
|
24
|
+
| Work Map and active Task | Normally no | Broad coverage, current outcome, boundaries, relevant context, progress and evidence |
|
|
25
|
+
| Keeper prompt and attempts | Only if a new window is required | One readiness handoff, with revision loops before execution |
|
|
26
|
+
| Evil Eval harness | No during normal work | Controlled evidence about whether LOOM itself helps |
|
|
27
|
+
|
|
28
|
+
## 0. Resume or receive a request
|
|
29
|
+
|
|
30
|
+
The Agent runs `loom context` when LOOM exists. It then interprets the current request normally. Existing workspace
|
|
31
|
+
inspection is conditional: inspect only when the request depends on the existing project, not because LOOM demands a scan.
|
|
32
|
+
|
|
33
|
+
Human UX: nothing framework-specific appears.
|
|
34
|
+
|
|
35
|
+
## 1. Form the emerging whole
|
|
36
|
+
|
|
37
|
+
The Agent explains what it currently believes the finished result should be. This is conversational, not a mandatory
|
|
38
|
+
template recital. It is most useful initially, after a consequential correction, and before material execution.
|
|
39
|
+
|
|
40
|
+
The Agent identifies the current uncertainty frontier: decisions whose answers could materially change outcome,
|
|
41
|
+
experience, boundaries, architecture, risk, cost, or proof of completion.
|
|
42
|
+
|
|
43
|
+
## 2. Ask one dense, adaptive round
|
|
44
|
+
|
|
45
|
+
The Agent asks all currently visible high-value questions in a coherent round. It may group by a natural decision cluster,
|
|
46
|
+
but it does not follow a fixed domain list or question count.
|
|
47
|
+
|
|
48
|
+
It does not ask facts reliably discoverable from tools, professional decisions it can responsibly make, speculative future
|
|
49
|
+
details that do not affect the current whole, or framework questions whose only purpose is filling a schema.
|
|
50
|
+
|
|
51
|
+
| Human response | Agent behavior |
|
|
52
|
+
|---|---|
|
|
53
|
+
| Direct answer | Record confirmed fact and update current truth |
|
|
54
|
+
| Correction | Update PROJECT.md and affected design docs; append a superseding decision with impact |
|
|
55
|
+
| `You decide` | Make the best reversible Agent decision, explain the important tradeoff, and record it |
|
|
56
|
+
| `I don't know` | Research or decide when safe; ask again only if the human owns the missing preference or authority |
|
|
57
|
+
| `Skip questions and continue` | Name the concrete quality or risk loss, record skipped uncertainty, then proceed |
|
|
58
|
+
|
|
59
59
|
After every answer round, the Agent re-evaluates the whole. If material uncertainty remains, it loops to another adaptive
|
|
60
60
|
round. If only reversible local uncertainty remains, it continues.
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
##
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
The Agent
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
|
154
|
-
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
62
|
+
### When no human response channel exists
|
|
63
|
+
|
|
64
|
+
Some unattended, sandboxed, or benchmark runs have no human to answer. The host invokes
|
|
65
|
+
`loom context --human-channel unavailable`; this does not create a synthetic user. The Agent first inspects
|
|
66
|
+
discoverable workspace facts and permitted tools, researches only objective external facts when the task permits it,
|
|
67
|
+
and never treats web research as a substitute for user intent, preference, or authority. It records a bounded
|
|
68
|
+
assumption and selects a safe reversible action, or blocks if the missing answer controls irreversible, high-risk,
|
|
69
|
+
or materially costly work.
|
|
70
|
+
|
|
71
|
+
## 3. Build project-specific capability
|
|
72
|
+
|
|
73
|
+
The Agent maps which established professional fields could change questions, design, implementation, risk, or verification.
|
|
74
|
+
It creates one dossier per recognizable field. UI/UX design, visual art direction, game design, psychology, biology, security,
|
|
75
|
+
and other fields remain separate when their evidence or judgments differ. Task techniques such as triage, ranking, parsing,
|
|
76
|
+
or caching are design mechanisms, not replacements for the capability map. Cross-field synthesis belongs in the affected
|
|
77
|
+
design document.
|
|
78
|
+
|
|
79
|
+
A useful dossier changes action. It contains its field boundary, specialist evidence, a falsifiable project stance,
|
|
80
|
+
deliberate refusals, decision-changing questions, implementation consequences, failure modes, verification signals, sources,
|
|
81
|
+
and tensions. Generic summaries and expert roleplay fail this step.
|
|
82
|
+
|
|
83
|
+
Research can be quiet. A natural update is enough: `I need to strengthen the privacy, cognitive-load and information-architecture judgment; I will bring the consequences back into the design.`
|
|
84
|
+
|
|
85
|
+
## 4. Shape the project corpus and Work Map
|
|
86
|
+
|
|
87
|
+
PROJECT.md is the concise entry point and map. DECISIONS.md holds only consequential supersession. The actual product,
|
|
88
|
+
experience, independent systems, contracts, verification, research, and operations decisions live under `.loom/design/`.
|
|
89
|
+
A document is split when its subject has independent responsibilities, interfaces, failure modes, or proof. Document count
|
|
90
|
+
therefore scales with project complexity: neither a fixed checklist nor an artificial one-file minimum.
|
|
91
|
+
|
|
92
|
+
The Agent creates a broad initial Work Map early. It may be thousands of lines because it remains on disk. Only the active
|
|
93
|
+
horizon receives detailed actions. Every Task states outcome, done conditions, boundaries, dependencies, relevant reads,
|
|
94
|
+
affected paths, progress, next action, and evidence.
|
|
95
|
+
|
|
96
|
+
## 5. Transition to readiness
|
|
97
|
+
|
|
98
|
+
Before engineering or other material execution, the Agent tells the human what is about to happen and which important
|
|
99
|
+
assumptions remain. Ordinary reversible work does not require another approval. Irreversible, high-risk, or materially costly
|
|
100
|
+
action requires explicit authority.
|
|
101
|
+
|
|
102
|
+
`loom project ready` verifies structural readiness and freezes a digest of the project map, design documents, capability dossiers, and Task
|
|
103
|
+
definitions for the next Keeper attempt.
|
|
104
|
+
|
|
105
|
+
## 6. Keeper readiness loop
|
|
106
|
+
|
|
107
|
+
A fresh Agent thread runs `loom keeper prompt` and `loom context --keeper`. It receives no prior conversation. Each attempt has
|
|
108
|
+
a unique `run_id`, attempt number, and prepared digest.
|
|
109
|
+
|
|
110
|
+
Keeper tests whether it can explain the whole, navigate every necessary design system, locate distinct professional capabilities, select the correct first Task, find all context,
|
|
111
|
+
name the first concrete action, and reproduce completion evidence.
|
|
112
|
+
|
|
113
|
+
### Passed
|
|
114
|
+
|
|
115
|
+
State becomes `build_ready`. Keeper leaves the normal workflow permanently; Task evidence now carries delivery quality.
|
|
116
|
+
|
|
117
|
+
### Needs revision or blocked
|
|
118
|
+
|
|
119
|
+
The result records summary, evidence, and exact gaps. State returns to `shaping`. The next `loom context` injects this feedback
|
|
120
|
+
as the highest-priority uncertainty.
|
|
121
|
+
|
|
122
|
+
The main Agent decides where the gap belongs, repairs everything it can, asks the human only for decisions they genuinely own,
|
|
123
|
+
changes the relevant disk truth, runs `loom project ready` again, and opens a new Keeper run with a new run_id and digest.
|
|
124
|
+
|
|
125
|
+
LOOM refuses an unchanged revision, a duplicate run_id, a result for the wrong digest, and a result written before ready.
|
|
126
|
+
|
|
127
|
+
If the host has no subagents, the human sees one short request: `Please open a new window in this project, run loom keeper prompt, and follow it.`
|
|
128
|
+
|
|
129
|
+
## 7. Delivery loop
|
|
130
|
+
|
|
131
|
+
The Agent selects `loom task next`, starts it, and runs `loom context`. Context contains the current whole, current Task, and the
|
|
132
|
+
exact design, capability, source, contract, and fixture files in `reads`—not the full Work Map or history.
|
|
133
|
+
|
|
134
|
+
- A local failure keeps the Task active. Update progress and evidence, repair, and test again.
|
|
135
|
+
- A missing permission, dependency, or upper-level contradiction uses `task block` with a reason and recovery conditions.
|
|
136
|
+
- After the condition is repaired, use `task reopen`, then start it again. A prior `done` may also be
|
|
137
|
+
reopened with a concrete reason when its evidence is disproven.
|
|
138
|
+
- `task done` requires a check quoting every exact `done_when` criterion and mapping it to concrete evidence.
|
|
139
|
+
- Generic update cannot modify status, and imported Tasks must begin open.
|
|
140
|
+
|
|
141
|
+
When a Task is done, the Agent chooses the next dependency-ready Task. When every Task is done, project status becomes complete
|
|
142
|
+
and the Agent delivers the real result, evidence, remaining tradeoffs, and any user-owned follow-up.
|
|
143
|
+
|
|
144
|
+
## 8. Mid-build change
|
|
145
|
+
|
|
146
|
+
New user information is first evaluated for impact. A local reversible implementation detail updates the active Task. A change
|
|
147
|
+
to the desired whole updates PROJECT.md and affected design documents, records a superseding decision, revises affected Task definitions, and blocks or reopens
|
|
148
|
+
the active Task as needed. The one-time Keeper does not return after initial build-readiness; implementation evidence and explicit
|
|
149
|
+
human authority govern later changes.
|
|
150
|
+
|
|
151
|
+
## Recovery matrix
|
|
152
|
+
|
|
153
|
+
| Failure | Recovery |
|
|
154
|
+
|---|---|
|
|
155
|
+
| Context compressed | `loom context` compiles current truth and active horizon |
|
|
156
|
+
| User contradicts earlier answer | Update PROJECT.md and affected design docs; append superseding decision; revise affected Tasks |
|
|
157
|
+
| Important answer unavailable | Agent decides reversibly or records open or skipped uncertainty |
|
|
158
|
+
| Capability is generic or hybrid | Split into recognizable fields; move synthesis to design docs; add stance, consequences and proof |
|
|
159
|
+
| Keeper cannot start | Feedback returns to shaping; change disk truth; new digest and fresh run |
|
|
160
|
+
| Project changes after ready | Old Keeper result rejected as stale |
|
|
161
|
+
| Same Keeper identity reused | Duplicate run_id rejected |
|
|
162
|
+
| Local implementation test fails | Keep Task active, record observation, repair and repeat |
|
|
163
|
+
| Dependency or authority missing | Block Task with recovery conditions, then reopen |
|
|
164
|
+
| Attempt to mark done without evidence | CLI rejects it |
|
|
165
|
+
| Evidence disproves an earlier done state | Reopen with a reason, then repair, re-verify, or block |
|
|
166
|
+
| Host cannot spawn Keeper | Ask the human to open a new window with one short prompt |
|
|
167
|
+
|
|
168
|
+
## Flow diagrams
|
|
169
|
+
|
|
170
|
+
- [Production loops](loom-production-loop.drawio) — editable Draw.io source; [SVG](loom-production-loop.svg).
|
|
171
|
+
- [Evil Eval](loom-eval-loop.drawio) — editable Draw.io source; [SVG](loom-eval-loop.svg).
|
|
172
|
+
|
|
173
|
+
## Primary evaluation question
|
|
174
|
+
|
|
166
175
|
The causal baseline is a normal capable Agent with no LOOM—not LOOM v1. Both conditions receive the same raw brief, model,
|
|
167
|
-
tools, workspace, user oracle, budget, and reset schedule. LOOM v1 may be added as a secondary regression condition, but it does
|
|
176
|
+
tools, workspace, human-channel availability, user oracle when one exists, budget, and reset schedule. LOOM v1 may be added as a secondary regression condition, but it does
|
|
168
177
|
not answer whether the framework itself creates value over no framework.
|
|
169
178
|
|
|
170
|
-
|
|
171
|
-
|
|
179
|
+
For an unattended external benchmark, both conditions receive `human_channel: unavailable` and no fabricated user
|
|
180
|
+
oracle. A fresh LOOM sidecar sits outside the scored workspace and is passed through `--state-dir` on every LOOM
|
|
181
|
+
command, so framework state cannot alter task files or hidden-test behavior.
|
|
182
|
+
|
|
183
|
+
The anonymization harness must preserve runnable relative layout, record a file/digest manifest, and rerun each condition's
|
|
184
|
+
declared tests and smoke command before judging. Packet-construction failures are eval failures, never evidence against a run.
|
package/docs/brand/loom-mark.svg
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
|
|
2
|
-
<title id="title">LOOM mark</title>
|
|
3
|
-
<desc id="desc">A continuous thread passes through four frames, resumes after a gap, and loops forward.</desc>
|
|
4
|
-
<rect width="256" height="256" rx="52" fill="#F5F2EA"/>
|
|
5
|
-
<g fill="none" stroke="#17212B" stroke-width="6">
|
|
6
|
-
<rect x="38" y="61" width="42" height="88" rx="9"/>
|
|
7
|
-
<rect x="88" y="61" width="42" height="88" rx="9"/>
|
|
8
|
-
<rect x="138" y="61" width="42" height="88" rx="9"/>
|
|
9
|
-
<rect x="188" y="61" width="30" height="88" rx="9"/>
|
|
10
|
-
</g>
|
|
11
|
-
<path d="M24 105H50C61 105 61 82 72 82S83 128 94 128s11-46 22-46 11 46 22 46 11-46 22-46 11 46 22 46"
|
|
12
|
-
fill="none" stroke="#4169E1" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
|
|
13
|
-
<circle cx="198" cy="128" r="5" fill="#4169E1"/>
|
|
14
|
-
<circle cx="214" cy="128" r="5" fill="#4169E1" opacity=".55"/>
|
|
15
|
-
<path d="M226 128c14 0 17 12 17 23 0 23-18 42-42 42H79"
|
|
16
|
-
fill="none" stroke="#4169E1" stroke-width="10" stroke-linecap="round"/>
|
|
17
|
-
<path d="M92 180 75 193l17 13" fill="none" stroke="#4169E1" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
|
|
18
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">LOOM mark</title>
|
|
3
|
+
<desc id="desc">A continuous thread passes through four frames, resumes after a gap, and loops forward.</desc>
|
|
4
|
+
<rect width="256" height="256" rx="52" fill="#F5F2EA"/>
|
|
5
|
+
<g fill="none" stroke="#17212B" stroke-width="6">
|
|
6
|
+
<rect x="38" y="61" width="42" height="88" rx="9"/>
|
|
7
|
+
<rect x="88" y="61" width="42" height="88" rx="9"/>
|
|
8
|
+
<rect x="138" y="61" width="42" height="88" rx="9"/>
|
|
9
|
+
<rect x="188" y="61" width="30" height="88" rx="9"/>
|
|
10
|
+
</g>
|
|
11
|
+
<path d="M24 105H50C61 105 61 82 72 82S83 128 94 128s11-46 22-46 11 46 22 46 11-46 22-46 11 46 22 46"
|
|
12
|
+
fill="none" stroke="#4169E1" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
|
|
13
|
+
<circle cx="198" cy="128" r="5" fill="#4169E1"/>
|
|
14
|
+
<circle cx="214" cy="128" r="5" fill="#4169E1" opacity=".55"/>
|
|
15
|
+
<path d="M226 128c14 0 17 12 17 23 0 23-18 42-42 42H79"
|
|
16
|
+
fill="none" stroke="#4169E1" stroke-width="10" stroke-linecap="round"/>
|
|
17
|
+
<path d="M92 180 75 193l17 13" fill="none" stroke="#4169E1" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
|
|
18
|
+
</svg>
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="360" viewBox="0 0 1280 360" role="img" aria-labelledby="title desc">
|
|
2
|
-
<title id="title">LOOM — Keep the whole. Continue the work.</title>
|
|
3
|
-
<desc id="desc">A flat minimal header showing a continuous thread moving through project understanding, expertise, verification, and delivery.</desc>
|
|
4
|
-
<rect width="1280" height="360" rx="28" fill="#F5F2EA"/>
|
|
5
|
-
<path d="M0 304H1280" stroke="#D8D3C8"/>
|
|
6
|
-
<g transform="translate(84 70)">
|
|
7
|
-
<g fill="none" stroke="#17212B" stroke-width="4">
|
|
8
|
-
<rect x="0" y="16" width="38" height="76" rx="8"/>
|
|
9
|
-
<rect x="47" y="16" width="38" height="76" rx="8"/>
|
|
10
|
-
<rect x="94" y="16" width="38" height="76" rx="8"/>
|
|
11
|
-
<rect x="141" y="16" width="30" height="76" rx="8"/>
|
|
12
|
-
</g>
|
|
13
|
-
<path d="M-14 54H10c10 0 10-20 20-20s10 40 20 40 10-40 20-40 10 40 20 40 10-40 20-40 10 40 20 40"
|
|
14
|
-
fill="none" stroke="#4169E1" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
15
|
-
<circle cx="145" cy="74" r="4" fill="#4169E1"/><circle cx="158" cy="74" r="4" fill="#4169E1" opacity=".5"/>
|
|
16
|
-
<path d="M171 74c20 0 27 13 27 28 0 23-18 42-42 42H59" fill="none" stroke="#4169E1" stroke-width="8" stroke-linecap="round"/>
|
|
17
|
-
<path d="M72 132 56 144l16 12" fill="none" stroke="#4169E1" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
18
|
-
</g>
|
|
19
|
-
<g font-family="Inter,Segoe UI,Arial,sans-serif" fill="#17212B">
|
|
20
|
-
<text x="350" y="142" font-size="94" font-weight="750" letter-spacing="12">LOOM</text>
|
|
21
|
-
<text x="355" y="190" font-size="24" font-weight="560">Keep the whole. Continue the work.</text>
|
|
22
|
-
<text x="355" y="228" font-size="17" fill="#58636D">Invisible project understanding and continuity for AI Agents.</text>
|
|
23
|
-
</g>
|
|
24
|
-
<g transform="translate(82 311)" font-family="Inter,Segoe UI,Arial,sans-serif" font-size="13" font-weight="650" letter-spacing="1.1" fill="#17212B">
|
|
25
|
-
<circle cx="4" cy="-1" r="4" fill="#4169E1"/><text x="18" y="4">UNDERSTAND</text>
|
|
26
|
-
<path d="M126-1h42" stroke="#9AD8C2" stroke-width="3"/>
|
|
27
|
-
<circle cx="181" cy="-1" r="4" fill="#9AD8C2"/><text x="195" y="4">REMEMBER</text>
|
|
28
|
-
<path d="M306-1h42" stroke="#E88773" stroke-width="3"/>
|
|
29
|
-
<circle cx="361" cy="-1" r="4" fill="#E88773"/><text x="375" y="4">VERIFY</text>
|
|
30
|
-
<path d="M452-1h42" stroke="#4169E1" stroke-width="3"/>
|
|
31
|
-
<circle cx="507" cy="-1" r="4" fill="#4169E1"/><text x="521" y="4">CONTINUE</text>
|
|
32
|
-
</g>
|
|
33
|
-
<text x="1198" y="322" text-anchor="end" font-family="ui-monospace,SFMono-Regular,Consolas,monospace" font-size="13" fill="#58636D">npm i -g @haaaiawd/loom</text>
|
|
34
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="360" viewBox="0 0 1280 360" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">LOOM — Keep the whole. Continue the work.</title>
|
|
3
|
+
<desc id="desc">A flat minimal header showing a continuous thread moving through project understanding, expertise, verification, and delivery.</desc>
|
|
4
|
+
<rect width="1280" height="360" rx="28" fill="#F5F2EA"/>
|
|
5
|
+
<path d="M0 304H1280" stroke="#D8D3C8"/>
|
|
6
|
+
<g transform="translate(84 70)">
|
|
7
|
+
<g fill="none" stroke="#17212B" stroke-width="4">
|
|
8
|
+
<rect x="0" y="16" width="38" height="76" rx="8"/>
|
|
9
|
+
<rect x="47" y="16" width="38" height="76" rx="8"/>
|
|
10
|
+
<rect x="94" y="16" width="38" height="76" rx="8"/>
|
|
11
|
+
<rect x="141" y="16" width="30" height="76" rx="8"/>
|
|
12
|
+
</g>
|
|
13
|
+
<path d="M-14 54H10c10 0 10-20 20-20s10 40 20 40 10-40 20-40 10 40 20 40 10-40 20-40 10 40 20 40"
|
|
14
|
+
fill="none" stroke="#4169E1" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
15
|
+
<circle cx="145" cy="74" r="4" fill="#4169E1"/><circle cx="158" cy="74" r="4" fill="#4169E1" opacity=".5"/>
|
|
16
|
+
<path d="M171 74c20 0 27 13 27 28 0 23-18 42-42 42H59" fill="none" stroke="#4169E1" stroke-width="8" stroke-linecap="round"/>
|
|
17
|
+
<path d="M72 132 56 144l16 12" fill="none" stroke="#4169E1" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
18
|
+
</g>
|
|
19
|
+
<g font-family="Inter,Segoe UI,Arial,sans-serif" fill="#17212B">
|
|
20
|
+
<text x="350" y="142" font-size="94" font-weight="750" letter-spacing="12">LOOM</text>
|
|
21
|
+
<text x="355" y="190" font-size="24" font-weight="560">Keep the whole. Continue the work.</text>
|
|
22
|
+
<text x="355" y="228" font-size="17" fill="#58636D">Invisible project understanding and continuity for AI Agents.</text>
|
|
23
|
+
</g>
|
|
24
|
+
<g transform="translate(82 311)" font-family="Inter,Segoe UI,Arial,sans-serif" font-size="13" font-weight="650" letter-spacing="1.1" fill="#17212B">
|
|
25
|
+
<circle cx="4" cy="-1" r="4" fill="#4169E1"/><text x="18" y="4">UNDERSTAND</text>
|
|
26
|
+
<path d="M126-1h42" stroke="#9AD8C2" stroke-width="3"/>
|
|
27
|
+
<circle cx="181" cy="-1" r="4" fill="#9AD8C2"/><text x="195" y="4">REMEMBER</text>
|
|
28
|
+
<path d="M306-1h42" stroke="#E88773" stroke-width="3"/>
|
|
29
|
+
<circle cx="361" cy="-1" r="4" fill="#E88773"/><text x="375" y="4">VERIFY</text>
|
|
30
|
+
<path d="M452-1h42" stroke="#4169E1" stroke-width="3"/>
|
|
31
|
+
<circle cx="507" cy="-1" r="4" fill="#4169E1"/><text x="521" y="4">CONTINUE</text>
|
|
32
|
+
</g>
|
|
33
|
+
<text x="1198" y="322" text-anchor="end" font-family="ui-monospace,SFMono-Regular,Consolas,monospace" font-size="13" fill="#58636D">npm i -g @haaaiawd/loom</text>
|
|
34
|
+
</svg>
|