@crvouga/atlas 0.10.1 → 0.10.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/CHANGELOG.md +6 -0
- package/dist/reports/src/layer-merge.d.ts +5 -1
- package/dist/reports/src/layer-merge.js +17 -2
- package/docs/agents.md +25 -0
- package/docs/reference/reports.md +2 -0
- package/docs/report-contract.md +3 -0
- package/llms-full.txt +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog: @crvouga/atlas
|
|
2
2
|
|
|
3
|
+
## 0.10.2 (2026-10-24)
|
|
4
|
+
|
|
5
|
+
### Fixes and improvements
|
|
6
|
+
|
|
7
|
+
- stabilize report identity and add issue resolution skill (#19) ([1772e03](https://github.com/crvouga/atlas/commit/1772e03b6376854aecc1da692a1da87d21ebf370))
|
|
8
|
+
|
|
3
9
|
## 0.10.1 (2026-10-24)
|
|
4
10
|
|
|
5
11
|
### Fixes and improvements
|
|
@@ -128,5 +128,9 @@ export declare function distinctHeaders<T extends {
|
|
|
128
128
|
export declare function distinctEvidence(layers: readonly LayerEvidence[]): LayerEvidence[];
|
|
129
129
|
/** Drops each mutable layer whose execution is already archived as an immutable one, and keeps one summary per id. */
|
|
130
130
|
export declare function distinctLayers(layers: readonly LayerSummary[]): LayerSummary[];
|
|
131
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* A string equal for the mutable and the archived address of one execution: its producer, sha, time and parts.
|
|
133
|
+
* Object key order is ignored at every depth, including check evidence and extensions; array order is preserved.
|
|
134
|
+
* This is an advisory execution identity, not the content digest that addresses an immutable layer in storage.
|
|
135
|
+
*/
|
|
132
136
|
export declare function layerExecutionKey(layer: LayerSummary): string;
|
|
@@ -269,7 +269,22 @@ export function distinctLayers(layers) {
|
|
|
269
269
|
const kept = new Set(layers.filter(layer => archived(layer.id)).map(layerExecutionKey));
|
|
270
270
|
return [...new Map(layers.filter(layer => archived(layer.id) || !kept.has(layerExecutionKey(layer))).map(layer => [layer.id, layer])).values()];
|
|
271
271
|
}
|
|
272
|
-
/**
|
|
272
|
+
/**
|
|
273
|
+
* A string equal for the mutable and the archived address of one execution: its producer, sha, time and parts.
|
|
274
|
+
* Object key order is ignored at every depth, including check evidence and extensions; array order is preserved.
|
|
275
|
+
* This is an advisory execution identity, not the content digest that addresses an immutable layer in storage.
|
|
276
|
+
*/
|
|
273
277
|
export function layerExecutionKey(layer) {
|
|
274
|
-
return JSON.stringify([layer.producer, layer.sha, layer.recordedAtMs, layer.parts]);
|
|
278
|
+
return JSON.stringify([layer.producer, layer.sha, layer.recordedAtMs, orderedValue(layer.parts)]);
|
|
279
|
+
}
|
|
280
|
+
/** Sort JSON objects recursively without changing array order or interpreting extension keys as prototypes. */
|
|
281
|
+
function orderedValue(value) {
|
|
282
|
+
if (Array.isArray(value))
|
|
283
|
+
return value.map(orderedValue);
|
|
284
|
+
if (value === null || typeof value !== 'object')
|
|
285
|
+
return value;
|
|
286
|
+
const ordered = Object.create(null);
|
|
287
|
+
for (const key of Object.keys(value).sort())
|
|
288
|
+
ordered[key] = orderedValue(value[key]);
|
|
289
|
+
return ordered;
|
|
275
290
|
}
|
package/docs/agents.md
CHANGED
|
@@ -13,6 +13,7 @@ commands provide JSON results with published schemas; the HTTP API is described
|
|
|
13
13
|
- [Standards used](#standards-used)
|
|
14
14
|
- [Where the documentation comes from](#where-the-documentation-comes-from)
|
|
15
15
|
- [An integration brief you can give an agent](#an-integration-brief-you-can-give-an-agent)
|
|
16
|
+
- [Resolve this repository's open issues](#resolve-this-repositorys-open-issues)
|
|
16
17
|
|
|
17
18
|
## Given only this repository link
|
|
18
19
|
|
|
@@ -287,3 +288,27 @@ docs/reporting-issues.md; do not edit node_modules or vendor Atlas into this pro
|
|
|
287
288
|
If server access or CI secrets are unavailable, finish the local integration and report exactly which shared
|
|
288
289
|
server/CI checks remain unverified. A synthetic pass, a generated plan, or an unavailable backend is not proof
|
|
289
290
|
that the product's real suites are integrated.
|
|
291
|
+
|
|
292
|
+
## Resolve this repository's open issues
|
|
293
|
+
|
|
294
|
+
For contributors working in this Atlas checkout, the
|
|
295
|
+
[resolve-open-issues skill](https://github.com/crvouga/atlas/blob/main/.agents/skills/resolve-open-issues/SKILL.md)
|
|
296
|
+
handles the entire open GitHub issue inventory in one PR, branch and worktree. It uses the
|
|
297
|
+
[Agent Skills format](https://agentskills.io/specification) in the
|
|
298
|
+
[shared `.agents/skills/` location](https://agentskills.io/integrate-skills#where-to-scan).
|
|
299
|
+
Discovery varies by agent; any coding agent with repository file access and GitHub access can use
|
|
300
|
+
the same instructions by reading the file directly:
|
|
301
|
+
|
|
302
|
+
```text
|
|
303
|
+
Read .agents/skills/resolve-open-issues/SKILL.md and follow it to resolve all open GitHub issues
|
|
304
|
+
in this repository in a single PR, using one branch and the current worktree. Continue through
|
|
305
|
+
implementation, validation and PR checks. Track evidence for every issue, handle attestations
|
|
306
|
+
autonomously, and report precise blockers without claiming unresolved issues are fixed.
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Use the agent's native skill invocation when it discovers `resolve-open-issues`; the file-reading
|
|
310
|
+
prompt is the portable fallback. The skill can also be copied as a whole directory into another
|
|
311
|
+
repository's skill location; it reads that repository's instructions and validation requirements.
|
|
312
|
+
Keep this workflow in the repository being fixed. Atlas consumer integrations still follow the
|
|
313
|
+
playbook above and report Atlas defects as issues. The contributor skill lives in the Git checkout;
|
|
314
|
+
it is not part of the npm package.
|
|
@@ -3340,6 +3340,8 @@ export function layerExecutionKey(layer: LayerSummary): string
|
|
|
3340
3340
|
```
|
|
3341
3341
|
|
|
3342
3342
|
A string equal for the mutable and the archived address of one execution: its producer, sha, time and parts.
|
|
3343
|
+
Object key order is ignored at every depth, including check evidence and extensions; array order is preserved.
|
|
3344
|
+
This is an advisory execution identity, not the content digest that addresses an immutable layer in storage.
|
|
3343
3345
|
|
|
3344
3346
|
### Archiving a recorded run as a layer
|
|
3345
3347
|
|
package/docs/report-contract.md
CHANGED
|
@@ -178,6 +178,9 @@ Consequences you can rely on:
|
|
|
178
178
|
was removed keeps its evidence, outside the outline.
|
|
179
179
|
- An immutable layer held by several backends is **one** layer, reported by the backend whose id sorts
|
|
180
180
|
first.
|
|
181
|
+
- The mutable address of an execution already held as an immutable layer is suppressed by the
|
|
182
|
+
de-duplication helpers and static export. Execution identity compares producer, commit, time and
|
|
183
|
+
parts; object key order at any depth does not matter, while array order does.
|
|
181
184
|
|
|
182
185
|
Leaving a layer, backend, environment, branch or version out of the input is how earlier outcomes are
|
|
183
186
|
inspected.
|
package/llms-full.txt
CHANGED
|
@@ -22,6 +22,7 @@ commands provide JSON results with published schemas; the HTTP API is described
|
|
|
22
22
|
- [Standards used](#standards-used)
|
|
23
23
|
- [Where the documentation comes from](#where-the-documentation-comes-from)
|
|
24
24
|
- [An integration brief you can give an agent](#an-integration-brief-you-can-give-an-agent)
|
|
25
|
+
- [Resolve this repository's open issues](#resolve-this-repositorys-open-issues)
|
|
25
26
|
|
|
26
27
|
## Given only this repository link
|
|
27
28
|
|
|
@@ -296,6 +297,30 @@ docs/reporting-issues.md; do not edit node_modules or vendor Atlas into this pro
|
|
|
296
297
|
If server access or CI secrets are unavailable, finish the local integration and report exactly which shared
|
|
297
298
|
server/CI checks remain unverified. A synthetic pass, a generated plan, or an unavailable backend is not proof
|
|
298
299
|
that the product's real suites are integrated.
|
|
300
|
+
|
|
301
|
+
## Resolve this repository's open issues
|
|
302
|
+
|
|
303
|
+
For contributors working in this Atlas checkout, the
|
|
304
|
+
[resolve-open-issues skill](https://github.com/crvouga/atlas/blob/main/.agents/skills/resolve-open-issues/SKILL.md)
|
|
305
|
+
handles the entire open GitHub issue inventory in one PR, branch and worktree. It uses the
|
|
306
|
+
[Agent Skills format](https://agentskills.io/specification) in the
|
|
307
|
+
[shared `.agents/skills/` location](https://agentskills.io/integrate-skills#where-to-scan).
|
|
308
|
+
Discovery varies by agent; any coding agent with repository file access and GitHub access can use
|
|
309
|
+
the same instructions by reading the file directly:
|
|
310
|
+
|
|
311
|
+
```text
|
|
312
|
+
Read .agents/skills/resolve-open-issues/SKILL.md and follow it to resolve all open GitHub issues
|
|
313
|
+
in this repository in a single PR, using one branch and the current worktree. Continue through
|
|
314
|
+
implementation, validation and PR checks. Track evidence for every issue, handle attestations
|
|
315
|
+
autonomously, and report precise blockers without claiming unresolved issues are fixed.
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Use the agent's native skill invocation when it discovers `resolve-open-issues`; the file-reading
|
|
319
|
+
prompt is the portable fallback. The skill can also be copied as a whole directory into another
|
|
320
|
+
repository's skill location; it reads that repository's instructions and validation requirements.
|
|
321
|
+
Keep this workflow in the repository being fixed. Atlas consumer integrations still follow the
|
|
322
|
+
playbook above and report Atlas defects as issues. The contributor skill lives in the Git checkout;
|
|
323
|
+
it is not part of the npm package.
|
|
299
324
|
</doc>
|
|
300
325
|
|
|
301
326
|
<doc path="docs/quickstart.md">
|
|
@@ -2235,6 +2260,9 @@ Consequences you can rely on:
|
|
|
2235
2260
|
was removed keeps its evidence, outside the outline.
|
|
2236
2261
|
- An immutable layer held by several backends is **one** layer, reported by the backend whose id sorts
|
|
2237
2262
|
first.
|
|
2263
|
+
- The mutable address of an execution already held as an immutable layer is suppressed by the
|
|
2264
|
+
de-duplication helpers and static export. Execution identity compares producer, commit, time and
|
|
2265
|
+
parts; object key order at any depth does not matter, while array order does.
|
|
2238
2266
|
|
|
2239
2267
|
Leaving a layer, backend, environment, branch or version out of the input is how earlier outcomes are
|
|
2240
2268
|
inspected.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crvouga/atlas",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "Atlas: specs of any kind, reported as layered evidence. Publish checks from any runner (JUnit, CTRF, a script), combine them across nodes, branches, environments and backends, gate CI on the result, and run statecharts against the real app.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|