@milpa/comal 0.1.7 → 0.2.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/README.md +19 -1
- package/backend/contracts/remote-commands-v1.json +12 -0
- package/governance/chrome-task-v10.json +323 -0
- package/governance/chrome-task-v11.json +355 -0
- package/governance/chrome-task-v12.json +387 -0
- package/governance/chrome-task-v13.json +419 -0
- package/governance/chrome-task-v3.json +99 -0
- package/governance/chrome-task-v4.json +131 -0
- package/governance/chrome-task-v5.json +163 -0
- package/governance/chrome-task-v6.json +195 -0
- package/governance/chrome-task-v7.json +227 -0
- package/governance/chrome-task-v8.json +259 -0
- package/governance/chrome-task-v9.json +291 -0
- package/governance/source-task-v1.json +1 -0
- package/governance/source-task-v2.json +1 -0
- package/package.json +14 -1
- package/src/agent-recovery-proof.mjs +12 -1
- package/src/agent.mjs +94 -30
- package/src/audit.mjs +21 -6
- package/src/auto-guard.mjs +48 -1
- package/src/chrome-candidate-recovery-proof.mjs +47 -0
- package/src/chrome-recovery-proof.mjs +6 -2
- package/src/chrome-source-syntax.mjs +93 -0
- package/src/cli.mjs +158 -54
- package/src/codex-provider.mjs +3 -2
- package/src/connection-settings.mjs +204 -0
- package/src/context-pressure.mjs +2 -1
- package/src/durable-agent-runs.mjs +5 -11
- package/src/event-channels.mjs +8 -0
- package/src/file-recovery-proof.mjs +11 -3
- package/src/file-recovery.mjs +24 -0
- package/src/gemini-provider.mjs +6 -1
- package/src/git-agent-revision.mjs +12 -0
- package/src/git-agent-workspaces.mjs +143 -0
- package/src/git-integration-lineage.mjs +20 -0
- package/src/git-integration-operations.mjs +200 -0
- package/src/git-integration-recovery-proof.mjs +70 -0
- package/src/git-page-cli-bridge.mjs +61 -0
- package/src/git-page-evidence.mjs +30 -0
- package/src/git-page-identity.mjs +10 -0
- package/src/git-page-proof.mjs +96 -0
- package/src/git-page-settlement.mjs +21 -0
- package/src/git-page-verification.mjs +134 -0
- package/src/git-plumbing.mjs +212 -0
- package/src/git-process-worker.mjs +50 -0
- package/src/git-source.mjs +110 -0
- package/src/git-workspaces.mjs +519 -0
- package/src/goals.mjs +13 -7
- package/src/house.mjs +246 -20
- package/src/i18n/cli-es.mjs +4 -0
- package/src/i18n/es.mjs +35 -0
- package/src/judges.mjs +27 -11
- package/src/mcp-runtime.mjs +15 -3
- package/src/model-controls.mjs +11 -1
- package/src/model-deadline.mjs +4 -3
- package/src/native-refusal.mjs +38 -0
- package/src/onboarding.mjs +88 -24
- package/src/openai-provider.mjs +14 -7
- package/src/operations.mjs +9 -2
- package/src/output-recovery.mjs +48 -0
- package/src/peer-tools.mjs +18 -8
- package/src/permission-controls.mjs +232 -0
- package/src/permission-rules.mjs +312 -0
- package/src/permissions.mjs +113 -30
- package/src/plugin-catalog.mjs +84 -0
- package/src/plugin-config.mjs +48 -6
- package/src/plugin-controls.mjs +332 -0
- package/src/plugin-notices.mjs +88 -0
- package/src/plugin-trust.mjs +104 -0
- package/src/plugins/chrome-lab/bridge.mjs +38 -12
- package/src/plugins/chrome-lab/client.mjs +103 -25
- package/src/plugins/chrome-lab/diagnostics.mjs +19 -0
- package/src/plugins/chrome-lab/index.mjs +116 -26
- package/src/plugins/chrome-lab/project.mjs +30 -2
- package/src/plugins/chrome-lab/scoped-input.mjs +135 -0
- package/src/plugins/chrome-lab/worker-diagnostics.mjs +51 -0
- package/src/plugins/open-relay/actions.mjs +205 -0
- package/src/plugins/open-relay/bound.mjs +47 -0
- package/src/plugins/open-relay/client.mjs +158 -0
- package/src/plugins/open-relay/dossier.mjs +119 -0
- package/src/plugins/open-relay/index.mjs +153 -0
- package/src/plugins/open-relay/lookup.mjs +45 -0
- package/src/plugins/open-relay/notices.mjs +79 -0
- package/src/plugins/open-relay/watch.mjs +127 -0
- package/src/plugins.mjs +72 -29
- package/src/private-fs.mjs +40 -0
- package/src/process-lock.mjs +24 -13
- package/src/provider-auth.mjs +14 -3
- package/src/provider.mjs +11 -2
- package/src/read-only-check.mjs +7 -3
- package/src/scope-ceiling.mjs +56 -0
- package/src/scoped-policy.mjs +39 -0
- package/src/secret-login.mjs +68 -0
- package/src/session-bus.mjs +41 -7
- package/src/session-projections-candidate.mjs +119 -0
- package/src/session-projections.mjs +119 -0
- package/src/session-read-cache.mjs +23 -3
- package/src/sessions.mjs +35 -11
- package/src/source-editor-role.mjs +13 -0
- package/src/source-ownership.mjs +73 -0
- package/src/source-proposal-proof.mjs +55 -0
- package/src/source-proposals.mjs +118 -0
- package/src/source-requests.mjs +148 -0
- package/src/source-task-proof.mjs +24 -0
- package/src/source-task-revision-proof.mjs +44 -0
- package/src/subagents.mjs +187 -87
- package/src/tool-packs.mjs +5 -5
- package/src/tools.mjs +82 -15
- package/src/trusted-context.mjs +5 -1
- package/src/tui/connection-transition.mjs +1 -1
- package/src/tui/controller.mjs +8 -4
- package/src/tui/discovery.mjs +24 -12
- package/src/tui/inbound-blocks.mjs +55 -0
- package/src/tui/present.mjs +504 -0
- package/src/tui/screen.mjs +49 -13
- package/src/windows-private.ps1 +61 -0
- package/src/work-assertions.mjs +6 -2
- package/src/work-plan.mjs +34 -8
- package/src/work-state.mjs +15 -9
- package/src/workflows/chrome-page-cases.mjs +156 -0
- package/src/workflows/chrome-page-checkpoint-reader.mjs +10 -0
- package/src/workflows/chrome-page-diagnostics.mjs +113 -0
- package/src/workflows/chrome-page-law.mjs +48 -0
- package/src/workflows/chrome-page-recovery-host-v13.mjs +14 -0
- package/src/workflows/chrome-page-recovery-v13.mjs +104 -0
- package/src/workflows/chrome-page-task.mjs +429 -0
- package/src/workflows/chrome-page-verifier.mjs +123 -0
- package/src/workflows/chrome-source.mjs +73 -0
- package/src/workflows/chrome-supplied-inputs.mjs +43 -0
- package/src/workflows/chrome-task-adoption.mjs +122 -0
- package/src/workflows/chrome-task.mjs +379 -74
- package/src/workflows/source-task-v1.mjs +124 -0
- package/src/workflows/source-task-v2.mjs +227 -0
- package/src/workflows/source-task.mjs +13 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
{
|
|
2
|
+
"profile": {
|
|
3
|
+
"name": "comal-chrome-task",
|
|
4
|
+
"version": "8",
|
|
5
|
+
"decisionIds": [
|
|
6
|
+
"COMAL-CHROME-008"
|
|
7
|
+
]
|
|
8
|
+
},
|
|
9
|
+
"decisions": [
|
|
10
|
+
{
|
|
11
|
+
"id": "COMAL-CHROME-001",
|
|
12
|
+
"title": "La casa conserva el encargo y cierra con evidencia vigente",
|
|
13
|
+
"status": "accepted",
|
|
14
|
+
"supersedes": null,
|
|
15
|
+
"gates": [
|
|
16
|
+
{
|
|
17
|
+
"id": "task-scope",
|
|
18
|
+
"tier": "enforced",
|
|
19
|
+
"operations": [
|
|
20
|
+
"*"
|
|
21
|
+
],
|
|
22
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "current-evidence",
|
|
26
|
+
"tier": "enforced",
|
|
27
|
+
"operations": [
|
|
28
|
+
"WorkTaskUpdate"
|
|
29
|
+
],
|
|
30
|
+
"boundTo": "runtime:chrome-task.close"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "COMAL-CHROME-002",
|
|
36
|
+
"title": "The accepted Chrome task binds exact artifact bytes through a narrow host hash capability",
|
|
37
|
+
"status": "accepted",
|
|
38
|
+
"supersedes": "COMAL-CHROME-001",
|
|
39
|
+
"gates": [
|
|
40
|
+
{
|
|
41
|
+
"id": "task-scope",
|
|
42
|
+
"tier": "enforced",
|
|
43
|
+
"operations": [
|
|
44
|
+
"*"
|
|
45
|
+
],
|
|
46
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "current-evidence",
|
|
50
|
+
"tier": "enforced",
|
|
51
|
+
"operations": [
|
|
52
|
+
"WorkTaskUpdate"
|
|
53
|
+
],
|
|
54
|
+
"boundTo": "runtime:chrome-task.close"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "artifact-hash",
|
|
58
|
+
"tier": "enforced",
|
|
59
|
+
"operations": [
|
|
60
|
+
"FileInfo"
|
|
61
|
+
],
|
|
62
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "COMAL-CHROME-003",
|
|
68
|
+
"title": "Conversational declarations preserve original intent and expose scoped live popup inspection without model-managed resources",
|
|
69
|
+
"status": "accepted",
|
|
70
|
+
"supersedes": "COMAL-CHROME-002",
|
|
71
|
+
"gates": [
|
|
72
|
+
{
|
|
73
|
+
"id": "task-scope",
|
|
74
|
+
"tier": "enforced",
|
|
75
|
+
"operations": [
|
|
76
|
+
"*"
|
|
77
|
+
],
|
|
78
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "current-evidence",
|
|
82
|
+
"tier": "enforced",
|
|
83
|
+
"operations": [
|
|
84
|
+
"WorkTaskUpdate"
|
|
85
|
+
],
|
|
86
|
+
"boundTo": "runtime:chrome-task.close"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "artifact-hash",
|
|
90
|
+
"tier": "enforced",
|
|
91
|
+
"operations": [
|
|
92
|
+
"FileInfo"
|
|
93
|
+
],
|
|
94
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "COMAL-CHROME-004",
|
|
100
|
+
"title": "Reuse completed behavior evidence only for identical source and live document identity, with fresh terminal postconditions; explicit rerun and changed resources execute tests again",
|
|
101
|
+
"status": "accepted",
|
|
102
|
+
"supersedes": "COMAL-CHROME-003",
|
|
103
|
+
"gates": [
|
|
104
|
+
{
|
|
105
|
+
"id": "task-scope",
|
|
106
|
+
"tier": "enforced",
|
|
107
|
+
"operations": [
|
|
108
|
+
"*"
|
|
109
|
+
],
|
|
110
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"id": "current-evidence",
|
|
114
|
+
"tier": "enforced",
|
|
115
|
+
"operations": [
|
|
116
|
+
"WorkTaskUpdate"
|
|
117
|
+
],
|
|
118
|
+
"boundTo": "runtime:chrome-task.close"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "artifact-hash",
|
|
122
|
+
"tier": "enforced",
|
|
123
|
+
"operations": [
|
|
124
|
+
"FileInfo"
|
|
125
|
+
],
|
|
126
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": "COMAL-CHROME-005",
|
|
132
|
+
"title": "An explicit candidate commit composes publication, declared tests and closure with unchanged child authority and durable evidence",
|
|
133
|
+
"status": "accepted",
|
|
134
|
+
"supersedes": "COMAL-CHROME-004",
|
|
135
|
+
"gates": [
|
|
136
|
+
{
|
|
137
|
+
"id": "task-scope",
|
|
138
|
+
"tier": "enforced",
|
|
139
|
+
"operations": [
|
|
140
|
+
"*"
|
|
141
|
+
],
|
|
142
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "current-evidence",
|
|
146
|
+
"tier": "enforced",
|
|
147
|
+
"operations": [
|
|
148
|
+
"WorkTaskUpdate"
|
|
149
|
+
],
|
|
150
|
+
"boundTo": "runtime:chrome-task.close"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "artifact-hash",
|
|
154
|
+
"tier": "enforced",
|
|
155
|
+
"operations": [
|
|
156
|
+
"FileInfo"
|
|
157
|
+
],
|
|
158
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "COMAL-CHROME-006",
|
|
164
|
+
"title": "Own immutable fixture pages and popup resources are bound separately; cross-surface checks retain source, document, connection and permission gates",
|
|
165
|
+
"status": "accepted",
|
|
166
|
+
"supersedes": "COMAL-CHROME-005",
|
|
167
|
+
"gates": [
|
|
168
|
+
{
|
|
169
|
+
"id": "task-scope",
|
|
170
|
+
"tier": "enforced",
|
|
171
|
+
"operations": [
|
|
172
|
+
"*"
|
|
173
|
+
],
|
|
174
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "current-evidence",
|
|
178
|
+
"tier": "enforced",
|
|
179
|
+
"operations": [
|
|
180
|
+
"WorkTaskUpdate"
|
|
181
|
+
],
|
|
182
|
+
"boundTo": "runtime:chrome-task.close"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"id": "artifact-hash",
|
|
186
|
+
"tier": "enforced",
|
|
187
|
+
"operations": [
|
|
188
|
+
"FileInfo"
|
|
189
|
+
],
|
|
190
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"id": "COMAL-CHROME-007",
|
|
196
|
+
"title": "Physical input targets are activated and declared reloads require an observed new document; acknowledged dispatch alone is not persistence evidence",
|
|
197
|
+
"status": "accepted",
|
|
198
|
+
"supersedes": "COMAL-CHROME-006",
|
|
199
|
+
"gates": [
|
|
200
|
+
{
|
|
201
|
+
"id": "task-scope",
|
|
202
|
+
"tier": "enforced",
|
|
203
|
+
"operations": [
|
|
204
|
+
"*"
|
|
205
|
+
],
|
|
206
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"id": "current-evidence",
|
|
210
|
+
"tier": "enforced",
|
|
211
|
+
"operations": [
|
|
212
|
+
"WorkTaskUpdate"
|
|
213
|
+
],
|
|
214
|
+
"boundTo": "runtime:chrome-task.close"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"id": "artifact-hash",
|
|
218
|
+
"tier": "enforced",
|
|
219
|
+
"operations": [
|
|
220
|
+
"FileInfo"
|
|
221
|
+
],
|
|
222
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
223
|
+
}
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"id": "COMAL-CHROME-008",
|
|
228
|
+
"title": "Current publication and explicit native worker generation bound diagnostic text; unavailable or historical observations do not grant effects or close work",
|
|
229
|
+
"status": "accepted",
|
|
230
|
+
"supersedes": "COMAL-CHROME-007",
|
|
231
|
+
"gates": [
|
|
232
|
+
{
|
|
233
|
+
"id": "task-scope",
|
|
234
|
+
"tier": "enforced",
|
|
235
|
+
"operations": [
|
|
236
|
+
"*"
|
|
237
|
+
],
|
|
238
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"id": "current-evidence",
|
|
242
|
+
"tier": "enforced",
|
|
243
|
+
"operations": [
|
|
244
|
+
"WorkTaskUpdate"
|
|
245
|
+
],
|
|
246
|
+
"boundTo": "runtime:chrome-task.close"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"id": "artifact-hash",
|
|
250
|
+
"tier": "enforced",
|
|
251
|
+
"operations": [
|
|
252
|
+
"FileInfo"
|
|
253
|
+
],
|
|
254
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
}
|
|
258
|
+
]
|
|
259
|
+
}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
{
|
|
2
|
+
"profile": {
|
|
3
|
+
"name": "comal-chrome-task",
|
|
4
|
+
"version": "9",
|
|
5
|
+
"decisionIds": [
|
|
6
|
+
"COMAL-CHROME-009"
|
|
7
|
+
]
|
|
8
|
+
},
|
|
9
|
+
"decisions": [
|
|
10
|
+
{
|
|
11
|
+
"id": "COMAL-CHROME-001",
|
|
12
|
+
"title": "La casa conserva el encargo y cierra con evidencia vigente",
|
|
13
|
+
"status": "accepted",
|
|
14
|
+
"supersedes": null,
|
|
15
|
+
"gates": [
|
|
16
|
+
{
|
|
17
|
+
"id": "task-scope",
|
|
18
|
+
"tier": "enforced",
|
|
19
|
+
"operations": [
|
|
20
|
+
"*"
|
|
21
|
+
],
|
|
22
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "current-evidence",
|
|
26
|
+
"tier": "enforced",
|
|
27
|
+
"operations": [
|
|
28
|
+
"WorkTaskUpdate"
|
|
29
|
+
],
|
|
30
|
+
"boundTo": "runtime:chrome-task.close"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "COMAL-CHROME-002",
|
|
36
|
+
"title": "The accepted Chrome task binds exact artifact bytes through a narrow host hash capability",
|
|
37
|
+
"status": "accepted",
|
|
38
|
+
"supersedes": "COMAL-CHROME-001",
|
|
39
|
+
"gates": [
|
|
40
|
+
{
|
|
41
|
+
"id": "task-scope",
|
|
42
|
+
"tier": "enforced",
|
|
43
|
+
"operations": [
|
|
44
|
+
"*"
|
|
45
|
+
],
|
|
46
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "current-evidence",
|
|
50
|
+
"tier": "enforced",
|
|
51
|
+
"operations": [
|
|
52
|
+
"WorkTaskUpdate"
|
|
53
|
+
],
|
|
54
|
+
"boundTo": "runtime:chrome-task.close"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "artifact-hash",
|
|
58
|
+
"tier": "enforced",
|
|
59
|
+
"operations": [
|
|
60
|
+
"FileInfo"
|
|
61
|
+
],
|
|
62
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "COMAL-CHROME-003",
|
|
68
|
+
"title": "Conversational declarations preserve original intent and expose scoped live popup inspection without model-managed resources",
|
|
69
|
+
"status": "accepted",
|
|
70
|
+
"supersedes": "COMAL-CHROME-002",
|
|
71
|
+
"gates": [
|
|
72
|
+
{
|
|
73
|
+
"id": "task-scope",
|
|
74
|
+
"tier": "enforced",
|
|
75
|
+
"operations": [
|
|
76
|
+
"*"
|
|
77
|
+
],
|
|
78
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "current-evidence",
|
|
82
|
+
"tier": "enforced",
|
|
83
|
+
"operations": [
|
|
84
|
+
"WorkTaskUpdate"
|
|
85
|
+
],
|
|
86
|
+
"boundTo": "runtime:chrome-task.close"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "artifact-hash",
|
|
90
|
+
"tier": "enforced",
|
|
91
|
+
"operations": [
|
|
92
|
+
"FileInfo"
|
|
93
|
+
],
|
|
94
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "COMAL-CHROME-004",
|
|
100
|
+
"title": "Reuse completed behavior evidence only for identical source and live document identity, with fresh terminal postconditions; explicit rerun and changed resources execute tests again",
|
|
101
|
+
"status": "accepted",
|
|
102
|
+
"supersedes": "COMAL-CHROME-003",
|
|
103
|
+
"gates": [
|
|
104
|
+
{
|
|
105
|
+
"id": "task-scope",
|
|
106
|
+
"tier": "enforced",
|
|
107
|
+
"operations": [
|
|
108
|
+
"*"
|
|
109
|
+
],
|
|
110
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"id": "current-evidence",
|
|
114
|
+
"tier": "enforced",
|
|
115
|
+
"operations": [
|
|
116
|
+
"WorkTaskUpdate"
|
|
117
|
+
],
|
|
118
|
+
"boundTo": "runtime:chrome-task.close"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "artifact-hash",
|
|
122
|
+
"tier": "enforced",
|
|
123
|
+
"operations": [
|
|
124
|
+
"FileInfo"
|
|
125
|
+
],
|
|
126
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": "COMAL-CHROME-005",
|
|
132
|
+
"title": "An explicit candidate commit composes publication, declared tests and closure with unchanged child authority and durable evidence",
|
|
133
|
+
"status": "accepted",
|
|
134
|
+
"supersedes": "COMAL-CHROME-004",
|
|
135
|
+
"gates": [
|
|
136
|
+
{
|
|
137
|
+
"id": "task-scope",
|
|
138
|
+
"tier": "enforced",
|
|
139
|
+
"operations": [
|
|
140
|
+
"*"
|
|
141
|
+
],
|
|
142
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "current-evidence",
|
|
146
|
+
"tier": "enforced",
|
|
147
|
+
"operations": [
|
|
148
|
+
"WorkTaskUpdate"
|
|
149
|
+
],
|
|
150
|
+
"boundTo": "runtime:chrome-task.close"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "artifact-hash",
|
|
154
|
+
"tier": "enforced",
|
|
155
|
+
"operations": [
|
|
156
|
+
"FileInfo"
|
|
157
|
+
],
|
|
158
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "COMAL-CHROME-006",
|
|
164
|
+
"title": "Own immutable fixture pages and popup resources are bound separately; cross-surface checks retain source, document, connection and permission gates",
|
|
165
|
+
"status": "accepted",
|
|
166
|
+
"supersedes": "COMAL-CHROME-005",
|
|
167
|
+
"gates": [
|
|
168
|
+
{
|
|
169
|
+
"id": "task-scope",
|
|
170
|
+
"tier": "enforced",
|
|
171
|
+
"operations": [
|
|
172
|
+
"*"
|
|
173
|
+
],
|
|
174
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "current-evidence",
|
|
178
|
+
"tier": "enforced",
|
|
179
|
+
"operations": [
|
|
180
|
+
"WorkTaskUpdate"
|
|
181
|
+
],
|
|
182
|
+
"boundTo": "runtime:chrome-task.close"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"id": "artifact-hash",
|
|
186
|
+
"tier": "enforced",
|
|
187
|
+
"operations": [
|
|
188
|
+
"FileInfo"
|
|
189
|
+
],
|
|
190
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"id": "COMAL-CHROME-007",
|
|
196
|
+
"title": "Physical input targets are activated and declared reloads require an observed new document; acknowledged dispatch alone is not persistence evidence",
|
|
197
|
+
"status": "accepted",
|
|
198
|
+
"supersedes": "COMAL-CHROME-006",
|
|
199
|
+
"gates": [
|
|
200
|
+
{
|
|
201
|
+
"id": "task-scope",
|
|
202
|
+
"tier": "enforced",
|
|
203
|
+
"operations": [
|
|
204
|
+
"*"
|
|
205
|
+
],
|
|
206
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"id": "current-evidence",
|
|
210
|
+
"tier": "enforced",
|
|
211
|
+
"operations": [
|
|
212
|
+
"WorkTaskUpdate"
|
|
213
|
+
],
|
|
214
|
+
"boundTo": "runtime:chrome-task.close"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"id": "artifact-hash",
|
|
218
|
+
"tier": "enforced",
|
|
219
|
+
"operations": [
|
|
220
|
+
"FileInfo"
|
|
221
|
+
],
|
|
222
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
223
|
+
}
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"id": "COMAL-CHROME-008",
|
|
228
|
+
"title": "Current publication and explicit native worker generation bound diagnostic text; unavailable or historical observations do not grant effects or close work",
|
|
229
|
+
"status": "accepted",
|
|
230
|
+
"supersedes": "COMAL-CHROME-007",
|
|
231
|
+
"gates": [
|
|
232
|
+
{
|
|
233
|
+
"id": "task-scope",
|
|
234
|
+
"tier": "enforced",
|
|
235
|
+
"operations": [
|
|
236
|
+
"*"
|
|
237
|
+
],
|
|
238
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"id": "current-evidence",
|
|
242
|
+
"tier": "enforced",
|
|
243
|
+
"operations": [
|
|
244
|
+
"WorkTaskUpdate"
|
|
245
|
+
],
|
|
246
|
+
"boundTo": "runtime:chrome-task.close"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"id": "artifact-hash",
|
|
250
|
+
"tier": "enforced",
|
|
251
|
+
"operations": [
|
|
252
|
+
"FileInfo"
|
|
253
|
+
],
|
|
254
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"id": "COMAL-CHROME-009",
|
|
260
|
+
"title": "Accepted Chrome source retains exact oversized proposals through native ports, scoped history and current child authority without changing acceptance",
|
|
261
|
+
"status": "accepted",
|
|
262
|
+
"supersedes": "COMAL-CHROME-008",
|
|
263
|
+
"gates": [
|
|
264
|
+
{
|
|
265
|
+
"id": "task-scope",
|
|
266
|
+
"tier": "enforced",
|
|
267
|
+
"operations": [
|
|
268
|
+
"*"
|
|
269
|
+
],
|
|
270
|
+
"boundTo": "runtime:chrome-task.scope"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"id": "current-evidence",
|
|
274
|
+
"tier": "enforced",
|
|
275
|
+
"operations": [
|
|
276
|
+
"WorkTaskUpdate"
|
|
277
|
+
],
|
|
278
|
+
"boundTo": "runtime:chrome-task.close"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"id": "artifact-hash",
|
|
282
|
+
"tier": "enforced",
|
|
283
|
+
"operations": [
|
|
284
|
+
"FileInfo"
|
|
285
|
+
],
|
|
286
|
+
"boundTo": "runtime:chrome-task.artifact-hash"
|
|
287
|
+
}
|
|
288
|
+
]
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"profile":{"name":"source-task","version":"1","decisionIds":["ADR-SOURCE-TASK-1"]},"decisions":[{"id":"ADR-SOURCE-TASK-1","title":"Host-owned accepted source lifecycle and native close evidence","status":"accepted","gates":[{"id":"scope","operations":["*"],"tier":"enforced","boundTo":"runtime:source-task.scope"},{"id":"close","operations":["WorkTaskUpdate"],"tier":"enforced","boundTo":"runtime:source-task.close"}]}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"profile":{"name":"source-task","version":"2","decisionIds":["ADR-SOURCE-TASK-2"]},"decisions":[{"id":"ADR-SOURCE-TASK-2","title":"Host-owned accepted source correction, original lineage and native close evidence","status":"accepted","gates":[{"id":"scope","operations":["*"],"tier":"enforced","boundTo":"runtime:source-task.scope"},{"id":"close","operations":["WorkTaskUpdate"],"tier":"enforced","boundTo":"runtime:source-task.close"}]}]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milpa/comal",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Comal: governed operations, execution receipts, and programming assistance in any language",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -23,8 +23,21 @@
|
|
|
23
23
|
"backend/contracts/artifact-check-v1.schema.json",
|
|
24
24
|
"backend/contracts/remote-commands-v1.json",
|
|
25
25
|
"backend/contracts/remote-workspace-v1.schema.json",
|
|
26
|
+
"governance/source-task-v1.json",
|
|
27
|
+
"governance/source-task-v2.json",
|
|
26
28
|
"governance/chrome-task-v1.json",
|
|
27
29
|
"governance/chrome-task-v2.json",
|
|
30
|
+
"governance/chrome-task-v3.json",
|
|
31
|
+
"governance/chrome-task-v4.json",
|
|
32
|
+
"governance/chrome-task-v5.json",
|
|
33
|
+
"governance/chrome-task-v6.json",
|
|
34
|
+
"governance/chrome-task-v7.json",
|
|
35
|
+
"governance/chrome-task-v8.json",
|
|
36
|
+
"governance/chrome-task-v9.json",
|
|
37
|
+
"governance/chrome-task-v10.json",
|
|
38
|
+
"governance/chrome-task-v11.json",
|
|
39
|
+
"governance/chrome-task-v12.json",
|
|
40
|
+
"governance/chrome-task-v13.json",
|
|
28
41
|
"docs",
|
|
29
42
|
"README.md"
|
|
30
43
|
],
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import {revisionOrigin} from './git-agent-revision.mjs';
|
|
2
|
+
import {preparedEditorRole,reservedEditorRole} from './source-editor-role.mjs';
|
|
1
3
|
import { digest } from './operations.mjs';
|
|
2
4
|
import { agentRuns } from './durable-agent-runs.mjs';
|
|
3
5
|
|
|
@@ -41,11 +43,20 @@ export function agentRecoveryPlan(rows, p, index = rows.length) {
|
|
|
41
43
|
if (!tasks?.length || prepared.configurations.length !== tasks.length || !prepared.authority || digest(prepared.inherited?.intentions) !== prepared.authority.intention_digest) return null;
|
|
42
44
|
const all = agentRuns(prefix).filter(run => run.parent_invocation_id === target.invocation_id), known = [], missing = [];
|
|
43
45
|
for (let n = 0; n < tasks.length; n++) {
|
|
46
|
+
// Validate every original slot, including indices not yet reserved when
|
|
47
|
+
// the host died. Missing Git allocation data must never become shared.
|
|
48
|
+
if(preparedEditorRole(prepared,n)===undefined)return null;
|
|
49
|
+
const allocation=prepared.workspace_inputs?.[n];
|
|
50
|
+
if(tasks[n].isolation==='git'){if(!allocation||allocation.kind!=='git'||typeof allocation.repository_root!=='string'||!allocation.repository_root||! /^[a-f0-9]{64}$/.test(allocation.expected_source_identity||'')||revisionOrigin(prefix,tasks[n],allocation,{parentId:target.session_id,actor:target.actor,cwd:target.house})===undefined||!tasks[n].git_revision&&allocation.source!==(tasks[n].git_source||'working'))return null;}else if(allocation)return null;
|
|
44
51
|
const matches = all.filter(run => run.launch_id === `${target.invocation_id}:${n}`);
|
|
45
52
|
if (!matches.length) { missing.push(n); continue; }
|
|
46
53
|
if (matches.length !== 1) return null;
|
|
47
54
|
const run = matches[0], initial = prefix.find(row => row.type === 'subagent' && row.source === 'delegation_host' && row.run_id === run.run_id && row.runner_state === 'reserved');
|
|
48
|
-
|
|
55
|
+
const editor=preparedEditorRole(prepared,n);if(editor===undefined)return null;
|
|
56
|
+
if (!initial || initial.parent_session_id !== target.session_id || digest(initial.task) !== digest(tasks[n]) || initial.input_digest !== digest(tasks[n]) || digest(initial.configuration) !== digest(prepared.configurations[n].descriptor) || digest(initial.budget_owner || null) !== digest(prepared.configurations[n].budget_owner || null) || digest(initial.tool_scope || []) !== digest(prepared.tool_scopes?.[n] || []) || digest(initial.authority) !== digest(prepared.authority) || digest(initial.inherited) !== digest(prepared.inherited) || initial.system !== (editor?.system??prepared.system)||digest(initial.editor_role??null)!==digest(reservedEditorRole(prepared,n))) return null;
|
|
57
|
+
if(tasks[n].isolation==='git'){
|
|
58
|
+
const workspace=prepared.workspace_inputs?.[n];if(revisionOrigin(prefix,tasks[n],workspace,{parentId:target.session_id,actor:target.actor,cwd:target.house})===undefined)return null;if(!workspace||workspace.kind!=='git'||!initial.workspace||initial.workspace.request_id!==initial.run_id||digest({...workspace,request_id:initial.run_id,workspace_id:initial.workspace.workspace_id})!==digest(initial.workspace)||digest(run.workspace)!==digest(initial.workspace))return null;
|
|
59
|
+
}else if(initial.workspace)return null;
|
|
49
60
|
known.push({ index: n, run_id: run.run_id, session_id: run.session_id, runner_state: run.runner_state, turn_state: run.turn_state, work_state: run.work_state, result_ref: run.result_ref || null });
|
|
50
61
|
}
|
|
51
62
|
if (all.length !== known.length || new Set(known.map(run => run.session_id)).size !== known.length) return null;
|