@eir-labs/coltrane 0.5.1 → 0.7.2
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 +23 -0
- package/agents/bill.json +59 -0
- package/agents/deploy-agent.json +68 -0
- package/agents/deploy-scout.json +40 -0
- package/agents/john.json +42 -0
- package/agents/miles.json +44 -0
- package/charts/software-delivery-v1.json +9 -0
- package/charts/software-delivery-v2.json +39 -0
- package/dist/src/bifrost_invoker.js +5 -3
- package/dist/src/bifrost_invoker.js.map +1 -1
- package/dist/src/canonical_form.d.ts +23 -0
- package/dist/src/canonical_form.js +53 -0
- package/dist/src/canonical_form.js.map +1 -1
- package/dist/src/chart.d.ts +254 -0
- package/dist/src/chart.js +897 -0
- package/dist/src/chart.js.map +1 -0
- package/dist/src/claude_invoker.d.ts +20 -3
- package/dist/src/claude_invoker.js +30 -5
- package/dist/src/claude_invoker.js.map +1 -1
- package/dist/src/cli.d.ts +19 -4
- package/dist/src/cli.js +132 -9
- package/dist/src/cli.js.map +1 -1
- package/dist/src/composition.d.ts +24 -0
- package/dist/src/composition.js +50 -5
- package/dist/src/composition.js.map +1 -1
- package/dist/src/conduct_daemon.d.ts +59 -0
- package/dist/src/conduct_daemon.js +178 -0
- package/dist/src/conduct_daemon.js.map +1 -0
- package/dist/src/genome_schema.d.ts +1476 -146
- package/dist/src/genome_schema.js +438 -32
- package/dist/src/genome_schema.js.map +1 -1
- package/dist/src/genome_store.d.ts +79 -0
- package/dist/src/genome_store.js +503 -0
- package/dist/src/genome_store.js.map +1 -0
- package/dist/src/gig_tracker.d.ts +11 -1
- package/dist/src/gig_tracker.js +5 -0
- package/dist/src/gig_tracker.js.map +1 -1
- package/dist/src/hosted_tools.d.ts +23 -0
- package/dist/src/hosted_tools.js +170 -0
- package/dist/src/hosted_tools.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/ledger.d.ts +22 -0
- package/dist/src/ledger.js +4 -0
- package/dist/src/ledger.js.map +1 -1
- package/dist/src/loader.d.ts +9 -1
- package/dist/src/loader.js +105 -5
- package/dist/src/loader.js.map +1 -1
- package/dist/src/mcp.js +52 -5
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/output_mirror.d.ts +70 -0
- package/dist/src/output_mirror.js +381 -0
- package/dist/src/output_mirror.js.map +1 -0
- package/dist/src/outputs.d.ts +77 -1
- package/dist/src/outputs.js +179 -37
- package/dist/src/outputs.js.map +1 -1
- package/dist/src/play_worker.d.ts +24 -0
- package/dist/src/play_worker.js +49 -0
- package/dist/src/play_worker.js.map +1 -0
- package/dist/src/registry.d.ts +2 -0
- package/dist/src/registry.js +63 -33
- package/dist/src/registry.js.map +1 -1
- package/dist/src/reuse.d.ts +56 -0
- package/dist/src/reuse.js +0 -0
- package/dist/src/reuse.js.map +1 -1
- package/dist/src/runtime.d.ts +91 -2
- package/dist/src/runtime.js +236 -18
- package/dist/src/runtime.js.map +1 -1
- package/dist/src/seal_drill.d.ts +32 -0
- package/dist/src/seal_drill.js +138 -0
- package/dist/src/seal_drill.js.map +1 -0
- package/dist/src/server.d.ts +39 -1
- package/dist/src/server.js +760 -68
- package/dist/src/server.js.map +1 -1
- package/dist/src/skill_subprocess.js +12 -4
- package/dist/src/skill_subprocess.js.map +1 -1
- package/dist/src/supabase_genome.d.ts +28 -0
- package/dist/src/supabase_genome.js +49 -0
- package/dist/src/supabase_genome.js.map +1 -0
- package/dist/src/tool_surface.d.ts +5 -0
- package/dist/src/tool_surface.js +15 -0
- package/dist/src/tool_surface.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/worker.d.ts +182 -0
- package/dist/src/worker.js +609 -0
- package/dist/src/worker.js.map +1 -0
- package/domain_types/branch-state.json +21 -0
- package/domain_types/change-context.json +39 -0
- package/domain_types/change-decision.json +36 -0
- package/domain_types/change-plan.json +47 -0
- package/domain_types/change-request.json +24 -0
- package/domain_types/change-set.json +46 -0
- package/domain_types/change-verdict.json +26 -0
- package/domain_types/deploy-verdict.json +23 -0
- package/domain_types/design-brief.json +37 -0
- package/domain_types/design-concept.json +36 -0
- package/domain_types/design-definition.json +37 -0
- package/domain_types/design-question.json +23 -0
- package/domain_types/design-verdict.json +27 -0
- package/domain_types/preview-deployment.json +32 -0
- package/institutions/quartet.json +344 -0
- package/package.json +21 -3
- package/skills/vercel-api/fixtures/error.json +10 -0
- package/skills/vercel-api/fixtures/ready.json +10 -0
- package/skills/vercel-api/fixtures/unsettled.json +10 -0
- package/skills/vercel-api/meta.json +10 -0
- package/skills/vercel-api/skill.mjs +63 -0
- package/standards/preview-deploy-v1.json +89 -0
- package/standards/product-design-v1.json +122 -0
- package/standards/promote-v1.json +41 -0
- package/standards/software-change-v1.json +147 -0
- package/venues/ci-deploy-room-v1.json +28 -0
- package/venues/empty-room-v1.json +19 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
{
|
|
2
|
+
"institution": {
|
|
3
|
+
"slug": "quartet",
|
|
4
|
+
"name": "The Quartet",
|
|
5
|
+
"kind": "institution",
|
|
6
|
+
"laws": [
|
|
7
|
+
"Authority attaches to the chair, never to the incumbent. A named agent may act only within the capability grants of a chair it has been seated in; removing the agent from the chair removes the authority with it.",
|
|
8
|
+
"A capability grant names its objects exhaustively. A grant that names a standard, tool, or type the genome does not contain is a dead name and is refused at authoring time rather than resolved at dispatch.",
|
|
9
|
+
"Every chair states its mission and its obligations before an incumbent is seated. An office whose mission is inferred from its occupant's behaviour is not an office.",
|
|
10
|
+
"Lineage is cited or it is not claimed. An agent's name may be anchored in a forebear only where the record carries the forebear's identity and the primary or scholarly source the attributed disposition is documented in.",
|
|
11
|
+
"The institution exposes nothing to another institution except by contract."
|
|
12
|
+
],
|
|
13
|
+
"sovereign": false
|
|
14
|
+
},
|
|
15
|
+
"organizations": [
|
|
16
|
+
{
|
|
17
|
+
"slug": "quartet-ensemble",
|
|
18
|
+
"name": "The Quartet Ensemble",
|
|
19
|
+
"charter": "The single operating organization of the Quartet institution. Its charter is to carry work through the institution's standards under the chair contracts defined here: to read a body of material to its declared boundary before deciding anything, to fix a direction and state what it excludes, to settle a structure before building, and to report at the end which of its own claims were checked and which were only reasoned about. The Ensemble ships no capability it has not been granted and claims no observation it did not make.",
|
|
20
|
+
"parent_org": null
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"agent_records": [
|
|
24
|
+
{
|
|
25
|
+
"slug": "john",
|
|
26
|
+
"name": "John",
|
|
27
|
+
"kind": "steve",
|
|
28
|
+
"is_institution": false,
|
|
29
|
+
"skill_slugs": [],
|
|
30
|
+
"status": "active",
|
|
31
|
+
"named_from_forebear": "coltrane-john",
|
|
32
|
+
"auth_user_id": null
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"slug": "bill",
|
|
36
|
+
"name": "Bill",
|
|
37
|
+
"kind": "steve",
|
|
38
|
+
"is_institution": false,
|
|
39
|
+
"skill_slugs": [],
|
|
40
|
+
"status": "active",
|
|
41
|
+
"named_from_forebear": "evans-bill",
|
|
42
|
+
"auth_user_id": null
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"slug": "miles",
|
|
46
|
+
"name": "Miles",
|
|
47
|
+
"kind": "steve",
|
|
48
|
+
"is_institution": false,
|
|
49
|
+
"skill_slugs": [],
|
|
50
|
+
"status": "active",
|
|
51
|
+
"named_from_forebear": "davis-miles",
|
|
52
|
+
"auth_user_id": null
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"org_members": [
|
|
56
|
+
{
|
|
57
|
+
"org_slug": "quartet-ensemble",
|
|
58
|
+
"agent_slug": "john"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"org_slug": "quartet-ensemble",
|
|
62
|
+
"agent_slug": "bill"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"org_slug": "quartet-ensemble",
|
|
66
|
+
"agent_slug": "miles"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"chairs": [
|
|
70
|
+
{
|
|
71
|
+
"id": "quartet.chair.field-reader",
|
|
72
|
+
"institution_slug": "quartet",
|
|
73
|
+
"role": "field-reader",
|
|
74
|
+
"function": "SENSE",
|
|
75
|
+
"mission": "Read the material a piece of work sits in, to a boundary declared before the reading begins, and report what is present and what is absent with equal completeness. This chair takes no decision and produces no artefact; its product is a reading another chair can be held to.",
|
|
76
|
+
"required_skills": [],
|
|
77
|
+
"caps": [
|
|
78
|
+
{
|
|
79
|
+
"edge_type": "produced-by",
|
|
80
|
+
"scope": {
|
|
81
|
+
"institution": "quartet"
|
|
82
|
+
},
|
|
83
|
+
"expires": null
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"grant": "dispatch",
|
|
87
|
+
"standards": [
|
|
88
|
+
"software-change-v1",
|
|
89
|
+
"product-design-v1"
|
|
90
|
+
],
|
|
91
|
+
"expires": null
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"obligations": [
|
|
95
|
+
"State the boundary of the read in the output; an unstated boundary makes an incomplete read indistinguishable from a complete one.",
|
|
96
|
+
"Record the source locator for every retrieved fact.",
|
|
97
|
+
"Emit no scope, ranking, or recommendation \u2014 those belong to the direction-setter.",
|
|
98
|
+
"Hold only a read-only tool grant, and only for the duration of the seating."
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "quartet.chair.direction-setter",
|
|
103
|
+
"institution_slug": "quartet",
|
|
104
|
+
"role": "direction-setter",
|
|
105
|
+
"function": "JUDGE",
|
|
106
|
+
"mission": "Fix what a piece of work is and state what it is not, from a reading and not from an intuition; and afterwards report whether what was built is what was fixed. This chair holds both convergences, so the same criteria bind the decision and the verdict.",
|
|
107
|
+
"required_skills": [],
|
|
108
|
+
"caps": [
|
|
109
|
+
{
|
|
110
|
+
"edge_type": "produced-by",
|
|
111
|
+
"scope": {
|
|
112
|
+
"institution": "quartet"
|
|
113
|
+
},
|
|
114
|
+
"expires": null
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"grant": "dispatch",
|
|
118
|
+
"standards": [
|
|
119
|
+
"software-change-v1",
|
|
120
|
+
"product-design-v1"
|
|
121
|
+
],
|
|
122
|
+
"expires": null
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"obligations": [
|
|
126
|
+
"State the criteria before applying them.",
|
|
127
|
+
"Record every alternative set aside, with its reason.",
|
|
128
|
+
"Do not re-decide the scope at verification time to make a failing result pass.",
|
|
129
|
+
"Separate what was checked from what was reasoned about, and return insufficient evidence where the evidence does not reach the question.",
|
|
130
|
+
"Do not perform the work this chair directs."
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"id": "quartet.chair.structure-builder",
|
|
135
|
+
"institution_slug": "quartet",
|
|
136
|
+
"role": "structure-builder",
|
|
137
|
+
"function": "CREATE",
|
|
138
|
+
"mission": "Settle the ordered structure a piece of work will be built through \u2014 checks before the changes they check \u2014 and then make the thing that structure implies, from the upstream record alone.",
|
|
139
|
+
"required_skills": [],
|
|
140
|
+
"preferred_skills": [
|
|
141
|
+
"structure-conformance"
|
|
142
|
+
],
|
|
143
|
+
"supplies": {
|
|
144
|
+
"house-style": "Prose in the register of a standards document: complete sentences, no abbreviations, no first person, and no vocabulary internal to this institution. An identifier names what a thing is, not what it is for. A check is written before the change it checks and is named for the observation it makes. Where a convention is not stated here, it is not a convention."
|
|
145
|
+
},
|
|
146
|
+
"caps": [
|
|
147
|
+
{
|
|
148
|
+
"edge_type": "produced-by",
|
|
149
|
+
"scope": {
|
|
150
|
+
"institution": "quartet"
|
|
151
|
+
},
|
|
152
|
+
"expires": null
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"grant": "dispatch",
|
|
156
|
+
"standards": [
|
|
157
|
+
"software-change-v1",
|
|
158
|
+
"product-design-v1"
|
|
159
|
+
],
|
|
160
|
+
"expires": null
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"obligations": [
|
|
164
|
+
"Settle the structure before producing the artefact.",
|
|
165
|
+
"Order the check before the change it checks.",
|
|
166
|
+
"Do not widen the scope the direction-setter fixed.",
|
|
167
|
+
"Record every departure from the settled structure, with its reason, rather than revising the structure after the fact.",
|
|
168
|
+
"Hold no tool grant: the artefact is emitted as reviewable content and is never applied."
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"id": "quartet.chair.responsible-officer",
|
|
173
|
+
"institution_slug": "quartet",
|
|
174
|
+
"role": "responsible-officer",
|
|
175
|
+
"human": true,
|
|
176
|
+
"function": "JUDGE",
|
|
177
|
+
"mission": "Hold the office that commits the ensemble's work. This chair is held by a person, never a model agent: the incumbent reviews the sealed record a standard's approve chair presents and accepts or refuses it under their own name. A run that reaches this office unapproved waits; nothing ships on an absent yes. The office follows the duty-holder construct of safety-case regulation: accountability for an outcome attaches to a single, identifiable person.",
|
|
178
|
+
"required_skills": [],
|
|
179
|
+
"caps": [
|
|
180
|
+
{
|
|
181
|
+
"edge_type": "produced-by",
|
|
182
|
+
"scope": {
|
|
183
|
+
"institution": "quartet"
|
|
184
|
+
},
|
|
185
|
+
"expires": null
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"grant": "dispatch",
|
|
189
|
+
"standards": [
|
|
190
|
+
"software-change-v1",
|
|
191
|
+
"product-design-v1"
|
|
192
|
+
],
|
|
193
|
+
"expires": null
|
|
194
|
+
}
|
|
195
|
+
],
|
|
196
|
+
"obligations": [
|
|
197
|
+
"Review the sealed outputs an approval presents before accepting them; an approval that does not cite what it reviewed is void.",
|
|
198
|
+
"Refuse rather than delegate the refusal: this office cannot be held by a model agent, and its verdict cannot be produced by one.",
|
|
199
|
+
"This chair ships UNASSIGNED. Seating it is the adopting organization's first governance act: the reader seats themselves."
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
"assignments": [
|
|
204
|
+
{
|
|
205
|
+
"id": "quartet.seat.field-reader",
|
|
206
|
+
"chair_id": "quartet.chair.field-reader",
|
|
207
|
+
"agent_slug": "john",
|
|
208
|
+
"org_slug": "quartet-ensemble",
|
|
209
|
+
"contract_caps": [],
|
|
210
|
+
"technique_evidence": [
|
|
211
|
+
{
|
|
212
|
+
"source": "tests/default_genome_quartet.test.ts",
|
|
213
|
+
"claim": "The agent loads from the genome with no domain pin and with a read-only, call-capped tool grant, which is the least authority a reading office needs; both properties are asserted deterministically on every run of the suite."
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"source": "standards/software-change-v1.json, standards/product-design-v1.json",
|
|
217
|
+
"claim": "Both shipped standards compose with this agent seated in their reading chair, and every type named in those chair contracts resolves to a registered core or domain type at compose time."
|
|
218
|
+
}
|
|
219
|
+
],
|
|
220
|
+
"witnessed_by": null
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"id": "quartet.seat.direction-setter",
|
|
224
|
+
"chair_id": "quartet.chair.direction-setter",
|
|
225
|
+
"agent_slug": "miles",
|
|
226
|
+
"org_slug": "quartet-ensemble",
|
|
227
|
+
"contract_caps": [],
|
|
228
|
+
"technique_evidence": [
|
|
229
|
+
{
|
|
230
|
+
"source": "standards/software-change-v1.json, chairs frame-change and verify-change",
|
|
231
|
+
"claim": "One incumbent holds both the chair that fixes the criteria and the chair that applies them, and the phase graph binding the two is validated acyclic and free of forward references at compose time."
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"source": "tests/default_genome_quartet.test.ts",
|
|
235
|
+
"claim": "The agent's disposition pair is distinct from those of the other two seats and it holds no mutating or executing tool grant; both are asserted deterministically in the suite."
|
|
236
|
+
}
|
|
237
|
+
],
|
|
238
|
+
"witnessed_by": null
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"id": "quartet.seat.structure-builder",
|
|
242
|
+
"chair_id": "quartet.chair.structure-builder",
|
|
243
|
+
"agent_slug": "bill",
|
|
244
|
+
"org_slug": "quartet-ensemble",
|
|
245
|
+
"contract_caps": [],
|
|
246
|
+
"technique_evidence": [
|
|
247
|
+
{
|
|
248
|
+
"source": "tests/skills_agent_carried.test.ts",
|
|
249
|
+
"claim": "The agent carries the structure-conformance technique on its own record; this chair fills its institution-bound hydration slot and leaves its gig-bound slot to the dispatch payload, asserted deterministically in the suite."
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"source": "standards/software-change-v1.json, chairs plan-change and write-change",
|
|
253
|
+
"claim": "One incumbent holds both the chair that settles the structure and the chair that makes the artefact, so the departure from a plan is reported by the seat accountable for the plan; the ordering is fixed by the standard's phase graph."
|
|
254
|
+
}
|
|
255
|
+
],
|
|
256
|
+
"witnessed_by": null
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"forebears": [
|
|
260
|
+
{
|
|
261
|
+
"slug": "coltrane-john",
|
|
262
|
+
"institution_slug": "quartet",
|
|
263
|
+
"name": "John Coltrane",
|
|
264
|
+
"domain": "modern jazz (tenor and soprano saxophone)",
|
|
265
|
+
"kind": "musician",
|
|
266
|
+
"what_taken": "Born 23 September 1926 in Hamlet, North Carolina; died 17 July 1967 in Huntington, New York. What the field-reader chair takes is the documented practice ethic: a single unresolved problem worked continuously until the material itself is exhausted. The evidence is the cycle-of-thirds substitutions applied systematically across the 1959 Atlantic sessions released as Giant Steps, and the sustained, systematic daily study Lewis Porter documents in John Coltrane: His Life and Music (University of Michigan Press, 1998), including Coltrane's work through Nicolas Slonimsky's Thesaurus of Scales and Melodic Patterns (1947). Nothing of the man's biography beyond this working disposition is claimed or carried."
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"slug": "evans-bill",
|
|
270
|
+
"institution_slug": "quartet",
|
|
271
|
+
"name": "Bill Evans",
|
|
272
|
+
"domain": "modern jazz (piano)",
|
|
273
|
+
"kind": "musician",
|
|
274
|
+
"what_taken": "Born 16 August 1929 in Plainfield, New Jersey; died 15 September 1980 in New York City. What the structure-builder chair takes is the documented practice of harmonic construction: rootless left-hand voicings built interval by interval, and the layered self-scrutiny of Conversations with Myself (Verve, 1963), on which Evans overdubbed three simultaneous piano parts and answered his own lines. Evans stated the underlying discipline himself in Improvisation in Jazz, his liner note to Miles Davis's Kind of Blue (Columbia, 1959), where he compared the improviser's position to that of the Japanese brush painter working on a surface that permits no erasure \u2014 structure settled before the stroke. Nothing of the man's biography beyond this working disposition is claimed or carried."
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"slug": "davis-miles",
|
|
278
|
+
"institution_slug": "quartet",
|
|
279
|
+
"name": "Miles Davis",
|
|
280
|
+
"domain": "modern jazz (trumpet, bandleading)",
|
|
281
|
+
"kind": "musician",
|
|
282
|
+
"what_taken": "Born 26 May 1926 in Alton, Illinois; died 28 September 1991 in Santa Monica, California. What the direction-setter chair takes is the documented practice of setting direction by subtraction. Bill Evans's liner note to Kind of Blue (Columbia, 1959) records that Davis conceived the settings only hours before the recording dates and arrived with sketches indicating to the group what was to be played \u2014 the direction fixed, the execution left to the players. The same disposition at longer range produced the serial abandonment of settled idioms across Birth of the Cool (Capitol, sessions 1949-1950), Kind of Blue (1959) and Bitches Brew (Columbia, 1970), documented in Ian Carr, Miles Davis: The Definitive Biography (revised edition, 1998). Nothing of the man's biography beyond this working disposition is claimed or carried."
|
|
283
|
+
}
|
|
284
|
+
],
|
|
285
|
+
"lineage_edges": [
|
|
286
|
+
{
|
|
287
|
+
"institution_slug": "quartet",
|
|
288
|
+
"edge_type": "descends-from",
|
|
289
|
+
"from_node": "agent:john",
|
|
290
|
+
"to_node": "forebear:coltrane-john",
|
|
291
|
+
"kind": "attribution",
|
|
292
|
+
"source": {
|
|
293
|
+
"figure": "John Coltrane",
|
|
294
|
+
"lifespan": "23 September 1926 - 17 July 1967",
|
|
295
|
+
"recordings": [
|
|
296
|
+
"Giant Steps (Atlantic SD 1311, recorded 1959, released 1960)",
|
|
297
|
+
"A Love Supreme (Impulse! A-77, recorded 9 December 1964, released 1965)"
|
|
298
|
+
],
|
|
299
|
+
"scholarship": "Lewis Porter, John Coltrane: His Life and Music (Ann Arbor: University of Michigan Press, 1998)",
|
|
300
|
+
"attributed_disposition": "exhaustive, continuous work on one unresolved problem",
|
|
301
|
+
"note": "A public historical figure. The attribution names a documented working disposition; it is not an endorsement, a likeness, or a claim on the person."
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"institution_slug": "quartet",
|
|
306
|
+
"edge_type": "descends-from",
|
|
307
|
+
"from_node": "agent:bill",
|
|
308
|
+
"to_node": "forebear:evans-bill",
|
|
309
|
+
"kind": "attribution",
|
|
310
|
+
"source": {
|
|
311
|
+
"figure": "Bill Evans",
|
|
312
|
+
"lifespan": "16 August 1929 - 15 September 1980",
|
|
313
|
+
"recordings": [
|
|
314
|
+
"Conversations with Myself (Verve V6-8526, 1963)",
|
|
315
|
+
"Sunday at the Village Vanguard (Riverside RLP 376, recorded 25 June 1961)"
|
|
316
|
+
],
|
|
317
|
+
"primary_text": "Bill Evans, 'Improvisation in Jazz', liner note to Miles Davis, Kind of Blue (Columbia CL 1355, 1959)",
|
|
318
|
+
"scholarship": "Peter Pettinger, Bill Evans: How My Heart Sings (New Haven: Yale University Press, 1998)",
|
|
319
|
+
"attributed_disposition": "structure settled before the stroke; construction interval by interval",
|
|
320
|
+
"note": "A public historical figure. The attribution names a documented working disposition; it is not an endorsement, a likeness, or a claim on the person."
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"institution_slug": "quartet",
|
|
325
|
+
"edge_type": "descends-from",
|
|
326
|
+
"from_node": "agent:miles",
|
|
327
|
+
"to_node": "forebear:davis-miles",
|
|
328
|
+
"kind": "attribution",
|
|
329
|
+
"source": {
|
|
330
|
+
"figure": "Miles Davis",
|
|
331
|
+
"lifespan": "26 May 1926 - 28 September 1991",
|
|
332
|
+
"recordings": [
|
|
333
|
+
"Birth of the Cool (Capitol T 762; sessions 1949-1950)",
|
|
334
|
+
"Kind of Blue (Columbia CL 1355, 1959)",
|
|
335
|
+
"Bitches Brew (Columbia GP 26, 1970)"
|
|
336
|
+
],
|
|
337
|
+
"primary_text": "Bill Evans, 'Improvisation in Jazz', liner note to Kind of Blue (Columbia CL 1355, 1959) \u2014 records that Davis arrived at the sessions with sketches conceived only hours before",
|
|
338
|
+
"scholarship": "Ian Carr, Miles Davis: The Definitive Biography (revised edition, 1998); Miles Davis with Quincy Troupe, Miles: The Autobiography (New York: Simon & Schuster, 1989)",
|
|
339
|
+
"attributed_disposition": "direction fixed by subtraction; execution left to the players",
|
|
340
|
+
"note": "A public historical figure. The attribution names a documented working disposition; it is not an endorsement, a likeness, or a claim on the person."
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
]
|
|
344
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eir-labs/coltrane",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"description": "A methodology engine \u2014 a typed substrate for defining agents, composing multi-phase standards, dispatching gigs, and sealing every output to a content-addressed ledger. Ships as an MCP server.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -36,15 +36,33 @@
|
|
|
36
36
|
"import": "./dist/src/index.js",
|
|
37
37
|
"default": "./dist/src/index.js"
|
|
38
38
|
},
|
|
39
|
-
"./package.json": "./package.json"
|
|
39
|
+
"./package.json": "./package.json",
|
|
40
|
+
"./hosted_tools": {
|
|
41
|
+
"types": "./dist/src/hosted_tools.d.ts",
|
|
42
|
+
"import": "./dist/src/hosted_tools.js",
|
|
43
|
+
"default": "./dist/src/hosted_tools.js"
|
|
44
|
+
},
|
|
45
|
+
"./genome_store": {
|
|
46
|
+
"types": "./dist/src/genome_store.d.ts",
|
|
47
|
+
"import": "./dist/src/genome_store.js",
|
|
48
|
+
"default": "./dist/src/genome_store.js"
|
|
49
|
+
},
|
|
50
|
+
"./tool_surface": {
|
|
51
|
+
"types": "./dist/src/tool_surface.d.ts",
|
|
52
|
+
"import": "./dist/src/tool_surface.js",
|
|
53
|
+
"default": "./dist/src/tool_surface.js"
|
|
54
|
+
}
|
|
40
55
|
},
|
|
41
56
|
"files": [
|
|
42
57
|
"dist/src",
|
|
43
58
|
"agents",
|
|
44
59
|
"standards",
|
|
60
|
+
"charts",
|
|
61
|
+
"venues",
|
|
45
62
|
"skills",
|
|
46
63
|
"domain_types",
|
|
47
64
|
"core_types",
|
|
65
|
+
"institutions",
|
|
48
66
|
"README.md",
|
|
49
67
|
"LICENSE"
|
|
50
68
|
],
|
|
@@ -81,4 +99,4 @@
|
|
|
81
99
|
"typescript": "^5.6.0",
|
|
82
100
|
"vitest": "^3.0.0"
|
|
83
101
|
}
|
|
84
|
-
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "error-terminal-carries-logs",
|
|
3
|
+
"description": "A build that reaches ERROR fails, and carries the build log tail for the human to read.",
|
|
4
|
+
"input": { "polls": ["QUEUED", "BUILDING", "ERROR"], "max_polls": 24, "logs_tail": ["Type error: TS2322 in app/page.tsx"] },
|
|
5
|
+
"assertions": [
|
|
6
|
+
{ "path": "terminal_state", "op": "equals", "value": "ERROR" },
|
|
7
|
+
{ "path": "pass", "op": "equals", "value": false },
|
|
8
|
+
{ "path": "deadline_exceeded", "op": "equals", "value": false }
|
|
9
|
+
]
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ready-within-budget",
|
|
3
|
+
"description": "A build that reaches READY within the poll budget passes with no deadline and no logs tail.",
|
|
4
|
+
"input": { "polls": ["QUEUED", "INITIALIZING", "BUILDING", "READY"], "max_polls": 24 },
|
|
5
|
+
"assertions": [
|
|
6
|
+
{ "path": "terminal_state", "op": "equals", "value": "READY" },
|
|
7
|
+
{ "path": "pass", "op": "equals", "value": true },
|
|
8
|
+
{ "path": "deadline_exceeded", "op": "equals", "value": false }
|
|
9
|
+
]
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "budget-spent-never-settled",
|
|
3
|
+
"description": "A build still BUILDING when the poll budget is spent is UNSETTLED with deadline_exceeded — the honest never-settled path, not a guessed READY.",
|
|
4
|
+
"input": { "polls": ["QUEUED", "BUILDING", "BUILDING"], "max_polls": 3 },
|
|
5
|
+
"assertions": [
|
|
6
|
+
{ "path": "terminal_state", "op": "equals", "value": "UNSETTLED" },
|
|
7
|
+
{ "path": "deadline_exceeded", "op": "equals", "value": true },
|
|
8
|
+
{ "path": "pass", "op": "equals", "value": false }
|
|
9
|
+
]
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "vercel-api",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"skill_type": "action",
|
|
5
|
+
"input_type": "branch-state",
|
|
6
|
+
"output_type": "deploy-verdict",
|
|
7
|
+
"determinism_ratio": 1.0,
|
|
8
|
+
"permission": { "tier": 0 },
|
|
9
|
+
"description": "The deterministic half of the deploy act: resolve a bounded sequence of Vercel readyState observations into one terminal deploy state (READY | ERROR | CANCELED | UNSETTLED), with the honest deadline_exceeded path when the poll budget is spent before a terminal state. Pure — the network I/O (POST /v13/deployments, GET /v6/deployments) is the agent's WebFetch grant; this code only resolves what those calls observed. The credentials are institution-bound hydration slots, never in the code."
|
|
10
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// vercel-api — the deterministic half of the deploy act. Pure: input in, output out, no
|
|
2
|
+
// I/O, no LLM, no network. determinism_ratio 1.0 (the code resolves the entire output).
|
|
3
|
+
//
|
|
4
|
+
// The engine has no subprocess or async-wait primitive, so the wait on a Vercel build is a
|
|
5
|
+
// BOUNDED synchronous poll inside the deploy chair's own turn: the agent makes one
|
|
6
|
+
// WebFetch GET /v6/deployments per iteration and collects the observed `readyState` values.
|
|
7
|
+
// This function takes that sequence plus the poll budget and resolves the ONE terminal
|
|
8
|
+
// deploy state — the logic that must be deterministic, not model-improvised:
|
|
9
|
+
//
|
|
10
|
+
// input: { polls: string[] (readyState per GET, in order),
|
|
11
|
+
// max_polls: number (the agent's turn ceiling),
|
|
12
|
+
// logs_tail?: string[] (tail of the build log, attached on failure) }
|
|
13
|
+
// output: { terminal_state, build_status, deadline_exceeded, pass, polls_used,
|
|
14
|
+
// logs_tail?, source }
|
|
15
|
+
//
|
|
16
|
+
// The terminal readyStates are READY, ERROR and CANCELED. pass is true only on READY. When
|
|
17
|
+
// the budget is spent with no terminal observation the state is UNSETTLED and
|
|
18
|
+
// deadline_exceeded is true — the honest never-settled path, made visible rather than a
|
|
19
|
+
// guess that the build would have settled a few polls later. logs_tail rides along only on a
|
|
20
|
+
// non-READY terminal (or the UNSETTLED give-up), so a passing verdict carries no noise.
|
|
21
|
+
const TERMINAL = new Set(["READY", "ERROR", "CANCELED"]);
|
|
22
|
+
|
|
23
|
+
export default function run(input) {
|
|
24
|
+
const polls = Array.isArray(input && input.polls) ? input.polls.map((s) => String(s)) : [];
|
|
25
|
+
const rawBudget = Number(input && input.max_polls);
|
|
26
|
+
const budget = Number.isFinite(rawBudget) && rawBudget > 0 ? Math.floor(rawBudget) : polls.length;
|
|
27
|
+
const logsTail = Array.isArray(input && input.logs_tail) ? input.logs_tail.map((s) => String(s)) : [];
|
|
28
|
+
|
|
29
|
+
// Walk the observations up to the budget, stopping at the first terminal readyState.
|
|
30
|
+
const window = polls.slice(0, budget);
|
|
31
|
+
let terminalIndex = -1;
|
|
32
|
+
for (let i = 0; i < window.length; i++) {
|
|
33
|
+
if (TERMINAL.has(window[i])) { terminalIndex = i; break; }
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (terminalIndex !== -1) {
|
|
37
|
+
const terminal_state = window[terminalIndex];
|
|
38
|
+
const pass = terminal_state === "READY";
|
|
39
|
+
const out = {
|
|
40
|
+
terminal_state,
|
|
41
|
+
build_status: terminal_state,
|
|
42
|
+
deadline_exceeded: false,
|
|
43
|
+
pass,
|
|
44
|
+
polls_used: terminalIndex + 1,
|
|
45
|
+
source: "skill://vercel-api@1",
|
|
46
|
+
};
|
|
47
|
+
// A failing terminal carries the build log tail; a passing one carries no noise.
|
|
48
|
+
if (!pass) out.logs_tail = logsTail;
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Budget spent with no terminal observation: the honest never-settled path.
|
|
53
|
+
const last = window.length > 0 ? window[window.length - 1] : "INITIALIZING";
|
|
54
|
+
return {
|
|
55
|
+
terminal_state: "UNSETTLED",
|
|
56
|
+
build_status: last,
|
|
57
|
+
deadline_exceeded: true,
|
|
58
|
+
pass: false,
|
|
59
|
+
polls_used: window.length,
|
|
60
|
+
logs_tail: logsTail,
|
|
61
|
+
source: "skill://vercel-api@1",
|
|
62
|
+
};
|
|
63
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "preview-deploy-v1",
|
|
3
|
+
"domain": "preview-deploy",
|
|
4
|
+
"status": "active",
|
|
5
|
+
"description": "The phone conducts, Vercel builds, the officer seals. Sense the branch HEAD → deploy it to a Vercel preview and wait on the build with a bounded in-turn poll → verify the terminal state. Three seams: the seat that senses the branch does not deploy, the seat that deploys reads the build it made, and the verdict is the honest terminal state — READY passes, a non-READY terminal fails with its logs, a spent poll budget is UNSETTLED. The branch commit is sensed independently rather than read out of the change-set, because a change-set carries diffs, never an applied commit. The deploy seat holds exactly one narrow WebFetch grant, the Vercel REST origin, and its credentials are institution-bound slots filled at seat time — never in the genome.",
|
|
6
|
+
"agent_slugs": [
|
|
7
|
+
"deploy-scout",
|
|
8
|
+
"deploy-agent"
|
|
9
|
+
],
|
|
10
|
+
"phases": [
|
|
11
|
+
{
|
|
12
|
+
"name": "sense-branch",
|
|
13
|
+
"chairs": [
|
|
14
|
+
{
|
|
15
|
+
"role": "sense-branch",
|
|
16
|
+
"agent_slug": "deploy-scout",
|
|
17
|
+
"depends_on": [],
|
|
18
|
+
"input_contract": [
|
|
19
|
+
"change-set"
|
|
20
|
+
],
|
|
21
|
+
"output_contract": [
|
|
22
|
+
"branch-state"
|
|
23
|
+
],
|
|
24
|
+
"required_skills": []
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"intent": "Read the branch HEAD the verified change lives on and report the commit and branch the preview will build. The incoming change-set is provenance only — the commit is sensed directly, because a change-set carries diffs and rationale, not an applied commit. No deploy is made here."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "deploy-branch",
|
|
31
|
+
"chairs": [
|
|
32
|
+
{
|
|
33
|
+
"role": "deploy-branch",
|
|
34
|
+
"agent_slug": "deploy-agent",
|
|
35
|
+
"depends_on": [
|
|
36
|
+
"sense-branch"
|
|
37
|
+
],
|
|
38
|
+
"input_contract": [
|
|
39
|
+
"branch-state"
|
|
40
|
+
],
|
|
41
|
+
"output_contract": [
|
|
42
|
+
"preview-deployment"
|
|
43
|
+
],
|
|
44
|
+
"required_skills": [
|
|
45
|
+
"vercel-api"
|
|
46
|
+
],
|
|
47
|
+
"supplies": {
|
|
48
|
+
"vercel_token": "env:VERCEL_TOKEN",
|
|
49
|
+
"vercel_team_id": "env:VERCEL_TEAM_ID"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"intent": "Call POST /v13/deployments for a preview target against the sensed commit, then wait on the build with a bounded synchronous poll — one WebFetch GET /v6/deployments per iteration, capped by the turn budget, no subprocess — until a terminal readyState is observed or the budget is spent. Seal a preview-deployment either way, carrying the url, commit, branch, project id, deployment id, the last observed build_status and the protection mode. The Vercel token and team id enter here from the chair's supplies; the venue fills them from environment secrets."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "verify-build",
|
|
57
|
+
"chairs": [
|
|
58
|
+
{
|
|
59
|
+
"role": "verify-build",
|
|
60
|
+
"agent_slug": "deploy-agent",
|
|
61
|
+
"depends_on": [
|
|
62
|
+
"deploy-branch"
|
|
63
|
+
],
|
|
64
|
+
"input_contract": [
|
|
65
|
+
"preview-deployment"
|
|
66
|
+
],
|
|
67
|
+
"output_contract": [
|
|
68
|
+
"deploy-verdict"
|
|
69
|
+
],
|
|
70
|
+
"required_skills": [
|
|
71
|
+
"vercel-api"
|
|
72
|
+
],
|
|
73
|
+
"supplies": {
|
|
74
|
+
"vercel_token": "env:VERCEL_TOKEN",
|
|
75
|
+
"vercel_team_id": "env:VERCEL_TEAM_ID"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"intent": "Read the sealed preview-deployment and say whether the build settled. pass is true only on READY; a non-READY terminal (ERROR, CANCELED) fails and carries the build log tail; and when the poll budget was spent with no terminal readyState, the verdict is terminal_state UNSETTLED with deadline_exceeded true and pass false — the honest never-settled path, visible in the ledger rather than a guessed READY."
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"input_types": [
|
|
83
|
+
"change-set"
|
|
84
|
+
],
|
|
85
|
+
"output_types": [
|
|
86
|
+
"preview-deployment",
|
|
87
|
+
"deploy-verdict"
|
|
88
|
+
]
|
|
89
|
+
}
|