@gregiteen/ssss-cli 0.9.3 → 0.9.5
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 +45 -0
- package/VERSION +1 -1
- package/conformance/fixtures.json +21 -12
- package/conformance/reference-bundle.ucw.json +1 -1
- package/docs/ssss-spec.md +536 -184
- package/package.json +1 -1
- package/scripts/audit-spec-examples.mjs +79 -0
- package/scripts/conformance-09.mjs +156 -3
- package/scripts/conformance.mjs +15 -1
- package/scripts/generate-sbom.mjs +13 -14
- package/src/authorization.mjs +11 -1
- package/src/engine.mjs +23 -4
- package/src/frontmatter.mjs +54 -6
- package/src/http.mjs +20 -4
- package/src/kernel.mjs +131 -47
- package/types/kernel.d.ts +7 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.9.5] - 2026-09-25
|
|
11
|
+
### Changed
|
|
12
|
+
- The packaged CHANGELOG now lists the 0.9.4 behavior changes that hosts should
|
|
13
|
+
check before upgrading: append-type documents reject full replaces, registry
|
|
14
|
+
references are enforced by default, anonymous requests fail before storage is
|
|
15
|
+
read, double-quoted frontmatter decodes escapes, and trailing-`*` capabilities
|
|
16
|
+
are prefix-scoped. No code changes.
|
|
17
|
+
|
|
18
|
+
## [0.9.4] - 2026-09-25
|
|
19
|
+
### Fixed
|
|
20
|
+
- The kernel now returns symbolic failure codes with transport status mapping,
|
|
21
|
+
reconciles prepared resources on dry runs and pre-commit failures, and keeps
|
|
22
|
+
logged commits intact when resource finalization or projection dispatch fails.
|
|
23
|
+
- The reference frontmatter parser handles the documented block-scalar subset,
|
|
24
|
+
and capability and legacy-role checks match the v0.9 authorization contract.
|
|
25
|
+
|
|
26
|
+
### Behavior changes hosts should check
|
|
27
|
+
- An `operation` can no longer replace an existing append-type document
|
|
28
|
+
(`conversation`, `run`). This now fails with `validation_failed`, per spec §5.3.
|
|
29
|
+
Append with a `patch` carrying `__body__` instead.
|
|
30
|
+
- Registry `references` are enforced on every kernel write. Targets are read
|
|
31
|
+
through the kernel's VFS unless the host passes its own `resolveReference`.
|
|
32
|
+
Before this release, a write skipped the check when no resolver was given.
|
|
33
|
+
- A request with no principal fails as `unauthorized` before the kernel reads
|
|
34
|
+
storage. It no longer receives `not_found` or validation details.
|
|
35
|
+
- Double-quoted frontmatter strings now decode their escapes (`"a\"b"` becomes
|
|
36
|
+
`a"b`), matching YAML. Values that relied on literal backslashes inside double
|
|
37
|
+
quotes will change when parsed. An invalid escape such as `"C:\path"` is still
|
|
38
|
+
read literally.
|
|
39
|
+
- Trailing-`*` capabilities are prefix-scoped: `ssss:assistant:*` now grants
|
|
40
|
+
every action on assistants, where before it granted nothing.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
- Aligned the v0.9 specification, conformance fixture statuses, and reference
|
|
44
|
+
implementation. The in-process runner checks expected HTTP statuses, and
|
|
45
|
+
`npm test` validates the spec's example documents and contract tables.
|
|
46
|
+
- Exposed every repository skill to Codex through relative links in
|
|
47
|
+
`.agents/skills`, while keeping the project Total Recall brain private.
|
|
48
|
+
- The release SBOM now hashes only the files included in the npm package.
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
- Completed the `SPEC_CODE_ALIGNMENT` project documentation and audit.
|
|
52
|
+
- Expanded the SSSS project-management skill with workflow references,
|
|
53
|
+
document checks, and review guidance.
|
|
54
|
+
|
|
10
55
|
## [0.9.3] - 2026-09-24
|
|
11
56
|
### Fixed
|
|
12
57
|
- Two processes sending an `event` envelope with the same idempotency key at the
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.9.
|
|
1
|
+
0.9.5
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://ssss.dev/conformance/v1",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Canonical SSSS Operation Contract conformance fixtures. These define the canonical request/response shapes for the Operation Contract (spec §6) and are the shared test contract every SSSS implementation MUST pass. A host is conformant only if, for every fixture, it produces the expected response and status code (spec §12).",
|
|
5
5
|
"spec_url": "../docs/ssss-spec.md",
|
|
6
6
|
"operation_types": {
|
|
@@ -159,6 +159,9 @@
|
|
|
159
159
|
"idempotency_key": "22222222-2222-2222-2222-222222222222",
|
|
160
160
|
"path": "assistants/bad-bot/ASSISTANT.md",
|
|
161
161
|
"workspace_id": "TEST_WORKSPACE_ID",
|
|
162
|
+
"actor": {
|
|
163
|
+
"role": "system"
|
|
164
|
+
},
|
|
162
165
|
"content": "---\ntype: assistant\ntitle: \"Create Assistant — Missing Required Name Field\"\ntimestamp: \"2026-07-02T00:00:00Z\"\ndescription: \"Missing the name field.\"\n---\n\n## Instructions\n\nBroken bot.",
|
|
163
166
|
"intent": "Conformance fixture: missing required name field"
|
|
164
167
|
},
|
|
@@ -302,7 +305,7 @@
|
|
|
302
305
|
]
|
|
303
306
|
}
|
|
304
307
|
},
|
|
305
|
-
"expected_http_status":
|
|
308
|
+
"expected_http_status": 400
|
|
306
309
|
},
|
|
307
310
|
{
|
|
308
311
|
"id": "fixture-008",
|
|
@@ -413,7 +416,7 @@
|
|
|
413
416
|
]
|
|
414
417
|
}
|
|
415
418
|
},
|
|
416
|
-
"expected_http_status":
|
|
419
|
+
"expected_http_status": 401
|
|
417
420
|
},
|
|
418
421
|
{
|
|
419
422
|
"id": "fixture-012",
|
|
@@ -469,9 +472,9 @@
|
|
|
469
472
|
"Missing required field 'object' for type 'memory' when schema_version==2 in memory/incomplete-schema2.md.",
|
|
470
473
|
"Missing required field 'sentiment_polarity' for type 'memory' when schema_version==2 in memory/incomplete-schema2.md."
|
|
471
474
|
]
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
"expected_http_status": 422
|
|
475
478
|
},
|
|
476
479
|
{
|
|
477
480
|
"id": "fixture-014",
|
|
@@ -611,7 +614,7 @@
|
|
|
611
614
|
]
|
|
612
615
|
}
|
|
613
616
|
},
|
|
614
|
-
"expected_http_status":
|
|
617
|
+
"expected_http_status": 403
|
|
615
618
|
},
|
|
616
619
|
{
|
|
617
620
|
"id": "fixture-019",
|
|
@@ -754,21 +757,27 @@
|
|
|
754
757
|
"idempotency_key": "35353535-3535-3535-3535-353535353535",
|
|
755
758
|
"path": "rules/translatable-refund-rule.md",
|
|
756
759
|
"workspace_id": "TEST_WORKSPACE_ID",
|
|
757
|
-
"actor": {
|
|
760
|
+
"actor": {
|
|
761
|
+
"role": "system"
|
|
762
|
+
},
|
|
758
763
|
"content": "---\ntype: rule\ntitle: \"Política de reembolsos\"\ndescription: \"Explica cuándo están disponibles los reembolsos.\"\ntimestamp: \"2026-07-10T00:00:00Z\"\nname: refund-policy\nlanguage: es\n---\nLos reembolsos están disponibles antes de la fecha límite.",
|
|
759
764
|
"intent": "Conformance fixture: create a non-English structural source"
|
|
760
765
|
},
|
|
761
766
|
"expected_response": {
|
|
762
767
|
"success": true,
|
|
763
768
|
"type": "operation",
|
|
764
|
-
"validation": {
|
|
769
|
+
"validation": {
|
|
770
|
+
"valid": true,
|
|
771
|
+
"type": "rule",
|
|
772
|
+
"errors": []
|
|
773
|
+
}
|
|
765
774
|
}
|
|
766
775
|
}
|
|
767
776
|
],
|
|
768
777
|
"error_codes": {
|
|
769
778
|
"400": "invalid_request — Invalid parameters, directory traversal, malformed request envelope, or path template mismatch",
|
|
770
|
-
"401": "unauthorized — Missing or invalid
|
|
771
|
-
"403": "forbidden —
|
|
779
|
+
"401": "unauthorized — Missing or invalid verified principal (no authenticated identity reached the kernel)",
|
|
780
|
+
"403": "forbidden — The verified principal is not scoped to the workspace or lacks a required capability",
|
|
772
781
|
"404": "not_found — The requested file to patch or delete does not exist",
|
|
773
782
|
"409": "lease_conflict, version_conflict, or idempotency_conflict — Lease locked, out-of-date expected version, or idempotency key replay payload mismatch",
|
|
774
783
|
"422": "validation_failed — Primitive registry/conformance validation errors (contains validation.errors and repair in body)",
|
|
@@ -781,5 +790,5 @@
|
|
|
781
790
|
],
|
|
782
791
|
"maintained_by": "SSSS standard (canonical: this repo)",
|
|
783
792
|
"provenance": "Seeded from the festech.live reference implementation, which authored the original shared contract; canonicalized here as the vendor-neutral source of truth.",
|
|
784
|
-
"last_updated": "2026-
|
|
793
|
+
"last_updated": "2026-09-24"
|
|
785
794
|
}
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"file_count": 14,
|
|
107
107
|
"provenance": {
|
|
108
108
|
"content_hash": "sha256:7febd673938a3dc04c068e0bf08097a9783c09e612606d2df9a4db8dcb8907f5",
|
|
109
|
-
"exporter": "@gregiteen/ssss-cli@0.9.
|
|
109
|
+
"exporter": "@gregiteen/ssss-cli@0.9.5"
|
|
110
110
|
}
|
|
111
111
|
},
|
|
112
112
|
"files": [
|