@synoi/sraid 0.3.0 → 0.4.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 +110 -49
- package/SPEC.md +2 -2
- package/dist/capability.d.ts +59 -0
- package/dist/capability.d.ts.map +1 -0
- package/dist/capability.js +44 -0
- package/dist/capability.js.map +1 -0
- package/dist/index.d.ts +13 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -18
- package/dist/index.js.map +1 -1
- package/dist/lineage.js +0 -0
- package/dist/lineage.js.map +1 -1
- package/dist/types.d.ts +4 -30
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -1
- package/dist/validate.d.ts +2 -17
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +0 -57
- package/dist/validate.js.map +1 -1
- package/package.json +2 -2
- package/src/capability.ts +69 -0
- package/src/index.ts +27 -36
- package/src/lineage.ts +0 -0
- package/src/types.ts +23 -31
- package/src/validate.ts +1 -64
- package/dist/authority.d.ts +0 -351
- package/dist/authority.d.ts.map +0 -1
- package/dist/authority.js +0 -563
- package/dist/authority.js.map +0 -1
- package/src/authority.ts +0 -849
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;;AAuTH,iFAAiF;AACjF,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,+EAA+E;AAC/E,8EAA8E;AAC9E,oEAAoE;AACpE,wBAAwB;AACxB,EAAE;AACF,2EAA2E;AAC3E,yCAAyC;AACzC,EAAE;AACF,8EAA8E;AAC9E,sEAAsE;AACtE,6EAA6E;AAC7E,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,sDAAsD"}
|
package/dist/validate.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Style mirrors the hand-rolled validators in synoi-mcp-server (no zod,
|
|
12
12
|
* no heavy validation library) — kept tiny on purpose.
|
|
13
13
|
*/
|
|
14
|
-
import type { AttestationEnvelope, AttestationSignature, AuthorityBlock, CDRO, LineageLink, LinkRel, SignatureEnvelope
|
|
14
|
+
import type { AttestationEnvelope, AttestationSignature, AuthorityBlock, CDRO, LineageLink, LinkRel, SignatureEnvelope } from './types.js';
|
|
15
15
|
export interface ValidationResult {
|
|
16
16
|
ok: boolean;
|
|
17
17
|
errors: string[];
|
|
@@ -69,20 +69,5 @@ export declare function validateSignatureEnvelope(x: unknown): ValidationResult;
|
|
|
69
69
|
* entries.
|
|
70
70
|
*/
|
|
71
71
|
export declare function validateAttestationEnvelope(x: unknown): ValidationResult;
|
|
72
|
-
|
|
73
|
-
* Validate that `x` matches the SRO shape — a CDRO whose `type` is
|
|
74
|
-
* "sraid:sro" and whose `body` carries predecessor/successor pointers and
|
|
75
|
-
* an authorizer. Reuses validateCdro and layers SRO-specific checks on
|
|
76
|
-
* top.
|
|
77
|
-
*
|
|
78
|
-
* [S01] envelope is not a valid CDRO
|
|
79
|
-
* [S02] type is not "sraid:sro"
|
|
80
|
-
* [S03] body.predecessor_oid not a canonical OID (sha256:<64 hex>)
|
|
81
|
-
* [S04] body.successor_oid not a canonical OID (sha256:<64 hex>)
|
|
82
|
-
* [S05] body.reason not a non-empty string
|
|
83
|
-
* [S06] body.authorized_by not a non-empty string
|
|
84
|
-
* [S07] body.evidence_oids, if present, not an array of non-empty strings
|
|
85
|
-
*/
|
|
86
|
-
export declare function validateSro(x: unknown): ValidationResult;
|
|
87
|
-
export type { AttestationEnvelope, AttestationSignature, AuthorityBlock, CDRO, LineageLink, LinkRel, SRO, SignatureEnvelope, };
|
|
72
|
+
export type { AttestationEnvelope, AttestationSignature, AuthorityBlock, CDRO, LineageLink, LinkRel, SignatureEnvelope, };
|
|
88
73
|
//# sourceMappingURL=validate.d.ts.map
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,IAAI,EACJ,WAAW,EACX,OAAO,EACP,iBAAiB,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,IAAI,EACJ,WAAW,EACX,OAAO,EACP,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAkBnB,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAmFzD;AAID;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAGnE;AA0CD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAGhE;AA+BD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAGtE;AAsBD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAGxE;AAyCD,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,IAAI,EACJ,WAAW,EACX,OAAO,EACP,iBAAiB,GAClB,CAAA"}
|
package/dist/validate.js
CHANGED
|
@@ -279,61 +279,4 @@ function validateAttestationEnvelopeShape(x) {
|
|
|
279
279
|
}
|
|
280
280
|
return errors;
|
|
281
281
|
}
|
|
282
|
-
// ── SRO validation ───────────────────────────────────────────────────────────
|
|
283
|
-
/**
|
|
284
|
-
* Validate that `x` matches the SRO shape — a CDRO whose `type` is
|
|
285
|
-
* "sraid:sro" and whose `body` carries predecessor/successor pointers and
|
|
286
|
-
* an authorizer. Reuses validateCdro and layers SRO-specific checks on
|
|
287
|
-
* top.
|
|
288
|
-
*
|
|
289
|
-
* [S01] envelope is not a valid CDRO
|
|
290
|
-
* [S02] type is not "sraid:sro"
|
|
291
|
-
* [S03] body.predecessor_oid not a canonical OID (sha256:<64 hex>)
|
|
292
|
-
* [S04] body.successor_oid not a canonical OID (sha256:<64 hex>)
|
|
293
|
-
* [S05] body.reason not a non-empty string
|
|
294
|
-
* [S06] body.authorized_by not a non-empty string
|
|
295
|
-
* [S07] body.evidence_oids, if present, not an array of non-empty strings
|
|
296
|
-
*/
|
|
297
|
-
export function validateSro(x) {
|
|
298
|
-
const cdroResult = validateCdro(x);
|
|
299
|
-
if (!cdroResult.ok) {
|
|
300
|
-
return { ok: false, errors: cdroResult.errors.map((e) => '[S01] ' + e) };
|
|
301
|
-
}
|
|
302
|
-
const errors = [];
|
|
303
|
-
const o = x;
|
|
304
|
-
if (o.type !== 'sraid:sro') {
|
|
305
|
-
errors.push('[S02] type must be "sraid:sro" for an SRO');
|
|
306
|
-
}
|
|
307
|
-
if (o.body === null || typeof o.body !== 'object' || Array.isArray(o.body)) {
|
|
308
|
-
errors.push('[S01] body must be an object');
|
|
309
|
-
return { ok: false, errors };
|
|
310
|
-
}
|
|
311
|
-
const b = o.body;
|
|
312
|
-
if (!isCanonicalOid(b['predecessor_oid'])) {
|
|
313
|
-
errors.push('[S03] body.predecessor_oid must be a canonical OID (sha256:<64 hex>)');
|
|
314
|
-
}
|
|
315
|
-
if (!isCanonicalOid(b['successor_oid'])) {
|
|
316
|
-
errors.push('[S04] body.successor_oid must be a canonical OID (sha256:<64 hex>)');
|
|
317
|
-
}
|
|
318
|
-
if (typeof b['reason'] !== 'string' || b['reason'].length === 0) {
|
|
319
|
-
errors.push('[S05] body.reason must be a non-empty string');
|
|
320
|
-
}
|
|
321
|
-
if (typeof b['authorized_by'] !== 'string' || b['authorized_by'].length === 0) {
|
|
322
|
-
errors.push('[S06] body.authorized_by must be a non-empty string');
|
|
323
|
-
}
|
|
324
|
-
if (b['evidence_oids'] !== undefined) {
|
|
325
|
-
if (!Array.isArray(b['evidence_oids'])) {
|
|
326
|
-
errors.push('[S07] body.evidence_oids, if present, must be an array');
|
|
327
|
-
}
|
|
328
|
-
else {
|
|
329
|
-
const arr = b['evidence_oids'];
|
|
330
|
-
for (let i = 0; i < arr.length; i++) {
|
|
331
|
-
if (typeof arr[i] !== 'string' || arr[i].length === 0) {
|
|
332
|
-
errors.push(`[S07] body.evidence_oids[${i}] must be a non-empty string`);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
return { ok: errors.length === 0, errors };
|
|
338
|
-
}
|
|
339
282
|
//# sourceMappingURL=validate.js.map
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synoi/sraid",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "SRAID reference implementation: canonical JSON serializer, content-addressed OIDs, hybrid Ed25519 + ML-DSA-65 signature verification, lineage, and shape validators. No storage, no transport, no policy.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://synoi.systems",
|
|
7
7
|
"repository": {
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @synoi/sraid — capability.ts
|
|
3
|
+
*
|
|
4
|
+
* Capability-pattern matching and the live-status contract.
|
|
5
|
+
*
|
|
6
|
+
* These stay in the core entry, while the grant/delegation VERIFIERS moved to
|
|
7
|
+
* `@synoi/sraid/authority` in 0.4.0, because they are different things:
|
|
8
|
+
*
|
|
9
|
+
* - `capabilityCovers` is a pure, total string predicate with no crypto, no
|
|
10
|
+
* I/O and no policy. It decides whether one dotted-taxonomy pattern covers
|
|
11
|
+
* another, and it is the leaf primitive that grant stores build on
|
|
12
|
+
* (synoi-app's `in-memory-engine.ts` and `app-store/store.ts` both call it
|
|
13
|
+
* directly rather than going through a verifier).
|
|
14
|
+
* - `GrantStatus` / `AuthorityResolver` are the CONTRACT for live grant
|
|
15
|
+
* state. The contract is a type; satisfying it is somebody else's job.
|
|
16
|
+
* Keeping it here lets a store, a resolver and a verifier agree on shape
|
|
17
|
+
* without any of them depending on the verifier.
|
|
18
|
+
*
|
|
19
|
+
* Nothing in this module makes, or can make, a live claim.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Match a capability `target` against a grant `pattern`. Pure string logic,
|
|
24
|
+
* re-stated here so the core stays dependency-free (the same rule lives in
|
|
25
|
+
* `@synoi/gap-types` `capabilityMatches`; the object layer must not depend on
|
|
26
|
+
* the protocol layer).
|
|
27
|
+
*
|
|
28
|
+
* - exact match → true
|
|
29
|
+
* - '*' → match-all
|
|
30
|
+
* - 'skill.*' matches 'skill.create' and deeper (segment-boundary only).
|
|
31
|
+
* A non-boundary 'admin.us*' must NOT match 'admin.users.delete'
|
|
32
|
+
* (privilege-escalation footgun) — only a '.'-anchored '*' is a wildcard.
|
|
33
|
+
*/
|
|
34
|
+
export function capabilityCovers(pattern: string, target: string): boolean {
|
|
35
|
+
if (pattern === target) return true
|
|
36
|
+
if (pattern === '*') return true
|
|
37
|
+
if (pattern.endsWith('.*')) {
|
|
38
|
+
const prefix = pattern.slice(0, -1) // keep trailing '.', e.g. 'skill.'
|
|
39
|
+
return target.startsWith(prefix)
|
|
40
|
+
}
|
|
41
|
+
return false
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The live-state interface that the OID Resolver implements. It is the ONLY
|
|
46
|
+
* source of truth for the two properties that cannot be checked offline:
|
|
47
|
+
* whether a grant currently exists (resolves) and whether it has been revoked.
|
|
48
|
+
*
|
|
49
|
+
* RESOLVER-DEPENDENT: undeployed today (SRAID_FOUNDATION_PUNCHLIST C). Defined
|
|
50
|
+
* here so callers, a future resolver, and the out-of-core verifier all agree
|
|
51
|
+
* on one contract.
|
|
52
|
+
*/
|
|
53
|
+
export interface AuthorityResolver {
|
|
54
|
+
/**
|
|
55
|
+
* Resolve a grant OID to its current status. Implementations should return
|
|
56
|
+
* `{ exists: false }` for an unknown OID and `{ exists: true, revoked: true,
|
|
57
|
+
* revoked_at_ms }` for a revoked one.
|
|
58
|
+
*/
|
|
59
|
+
resolveGrantStatus(grantOid: string): Promise<GrantStatus> | GrantStatus
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface GrantStatus {
|
|
63
|
+
/** Whether the grant OID resolves to a known, published grant. */
|
|
64
|
+
exists: boolean
|
|
65
|
+
/** Whether the grant has been revoked. Only meaningful when `exists`. */
|
|
66
|
+
revoked?: boolean
|
|
67
|
+
/** When the revocation took effect, if revoked. */
|
|
68
|
+
revoked_at_ms?: number
|
|
69
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @synoi/sraid — public surface.
|
|
3
3
|
*
|
|
4
|
-
* SRAID
|
|
4
|
+
* SRAID is the object-identity layer: it defines what a signed object IS and
|
|
5
|
+
* how anyone re-derives and verifies its identity offline.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* L4 Apps
|
|
7
|
+
* Scope, precisely:
|
|
8
|
+
* IN canonical serializer, OID computation, hybrid Ed25519 + ML-DSA-65
|
|
9
|
+
* attestation verification, lineage resolution, shape validators.
|
|
10
|
+
* OUT storage, transport, key resolution, revocation, policy, enforcement.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* It verifies SIGNATURES, not IDENTITIES: `signer_kid` is an opaque string
|
|
13
|
+
* this package never resolves, and nothing here checks revocation. Deciding
|
|
14
|
+
* whether a key was trusted at signing time is a caller/directory concern.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
// Types
|
|
@@ -23,8 +23,6 @@ export type {
|
|
|
23
23
|
CDRO,
|
|
24
24
|
LineageLink,
|
|
25
25
|
LinkRel,
|
|
26
|
-
SRO,
|
|
27
|
-
SROBody,
|
|
28
26
|
SensitivityTier,
|
|
29
27
|
SignatureEnvelope,
|
|
30
28
|
} from './types.js'
|
|
@@ -53,7 +51,7 @@ export { verifyMlDsa65, isNativeMlDsaAvailable } from './mldsa.js'
|
|
|
53
51
|
// rotated or compromised key cannot be served stale on a later verify.
|
|
54
52
|
export { evictKeyFromCaches } from './internal/key-cache.js'
|
|
55
53
|
|
|
56
|
-
//
|
|
54
|
+
// DSSE attestation — PAE type-binding, hybrid Ed25519 + ML-DSA-65 both
|
|
57
55
|
// required. The preferred signing path (replaces the legacy bare-bytes
|
|
58
56
|
// SignatureEnvelope; closes the cross-type confusion gap SRAID F7 / A4).
|
|
59
57
|
export {
|
|
@@ -65,7 +63,8 @@ export {
|
|
|
65
63
|
type VerifyAttestationResult,
|
|
66
64
|
} from './attestation.js'
|
|
67
65
|
|
|
68
|
-
//
|
|
66
|
+
// Lineage (Merkle-DAG) — unify the `supersedes` string with the identity-bound
|
|
67
|
+
// `prev`/`links` edges; latest-wins resolution over a version set.
|
|
69
68
|
export {
|
|
70
69
|
lineageLinks,
|
|
71
70
|
supersededOids,
|
|
@@ -73,7 +72,7 @@ export {
|
|
|
73
72
|
type LatestWinsResult,
|
|
74
73
|
} from './lineage.js'
|
|
75
74
|
|
|
76
|
-
//
|
|
75
|
+
// Propagating sensitivity — coarse, opaque tier + monotone max() carry-forward.
|
|
77
76
|
export {
|
|
78
77
|
SENSITIVITY_TIERS,
|
|
79
78
|
SENSITIVITY_DEFAULT,
|
|
@@ -84,35 +83,27 @@ export {
|
|
|
84
83
|
sensitivityMonotoneCheck,
|
|
85
84
|
} from './sensitivity.js'
|
|
86
85
|
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
type VerifyAuthorityInput,
|
|
92
|
-
type VerifyAuthorityResult,
|
|
93
|
-
type AuthorityResolver,
|
|
94
|
-
type GrantStatus,
|
|
95
|
-
type GrantBodyShape,
|
|
96
|
-
} from './authority.js'
|
|
97
|
-
|
|
98
|
-
// L4 delegation-chain verification (K2) — VERIFY-ONLY, offline, no enforcement.
|
|
99
|
-
// Always reports revocation_checked/existence_checked false (no live claim).
|
|
100
|
-
export {
|
|
101
|
-
verifyDelegationChain,
|
|
102
|
-
MAX_DELEGATION_DEPTH,
|
|
103
|
-
type VerifyDelegationChainInput,
|
|
104
|
-
type VerifyDelegationChainResult,
|
|
105
|
-
type HopResult,
|
|
106
|
-
type LinkPubkeys,
|
|
107
|
-
} from './authority.js'
|
|
86
|
+
// Capability matching + the live-grant-status contract. The leaf primitive a
|
|
87
|
+
// grant store needs: pure string logic, no crypto, no I/O, no live claim.
|
|
88
|
+
export { capabilityCovers } from './capability.js'
|
|
89
|
+
export type { AuthorityResolver, GrantStatus } from './capability.js'
|
|
108
90
|
|
|
109
91
|
// Shape validators.
|
|
110
92
|
export {
|
|
111
93
|
validateCdro,
|
|
112
|
-
validateSro,
|
|
113
94
|
validateSignatureEnvelope,
|
|
114
95
|
validateAttestationEnvelope,
|
|
115
96
|
validateAuthorityBlock,
|
|
116
97
|
validateLineageLink,
|
|
117
98
|
type ValidationResult,
|
|
118
99
|
} from './validate.js'
|
|
100
|
+
|
|
101
|
+
// MOVED IN 0.4.0 — the grant and delegation-chain VERIFIERS (`verifyAuthority`,
|
|
102
|
+
// `verifyDelegationChain`, `MAX_DELEGATION_DEPTH`) are authorization policy,
|
|
103
|
+
// not object identity, and are no longer exported from this entry. They live
|
|
104
|
+
// at the `@synoi/sraid/authority` subpath, unchanged and still verify-only.
|
|
105
|
+
//
|
|
106
|
+
// `capabilityCovers`, `AuthorityResolver` and `GrantStatus` did NOT move: they
|
|
107
|
+
// are the leaf primitive and the contract, and are exported above.
|
|
108
|
+
//
|
|
109
|
+
// REMOVED IN 0.4.0 — `validateSro`, `SRO`, `SROBody`. See CHANGELOG 0.4.0.
|
package/src/lineage.ts
CHANGED
|
Binary file
|
package/src/types.ts
CHANGED
|
@@ -233,14 +233,15 @@ export interface AttestationEnvelope {
|
|
|
233
233
|
* CDRO — Canonical Data Record Object.
|
|
234
234
|
*
|
|
235
235
|
* The base shape every signed CDRO object takes. The `oid` field is
|
|
236
|
-
* `sha256:` + hex(sha256(canonicalize(
|
|
237
|
-
* minus the
|
|
236
|
+
* `sha256:` + hex(sha256(canonicalize(cdroContentCore(obj)))) — the WHOLE
|
|
237
|
+
* object minus the six detached envelope fields (`CDRO_ENVELOPE_FIELDS`).
|
|
238
|
+
* It is NOT a hash of `body` alone: use `cdroOid`, not `oidOf(cdro.body)`.
|
|
238
239
|
*
|
|
239
240
|
* Mirrors `GapCdroEnvelope` in synoi-gateway so a GAP object IS a CDRO.
|
|
240
241
|
* Higher-layer packages narrow `body` with their own type.
|
|
241
242
|
*/
|
|
242
243
|
export interface CDRO<TBody = unknown> {
|
|
243
|
-
/** "sha256:" + hex(sha256(canonicalize(
|
|
244
|
+
/** "sha256:" + hex(sha256(canonicalize(cdroContentCore(this)))). */
|
|
244
245
|
oid: string
|
|
245
246
|
/** Object type discriminator (e.g. "gap:capability_grant"). */
|
|
246
247
|
type: string
|
|
@@ -321,31 +322,22 @@ export interface CDRO<TBody = unknown> {
|
|
|
321
322
|
signature?: SignatureEnvelope
|
|
322
323
|
}
|
|
323
324
|
|
|
324
|
-
// ──
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
reason: string
|
|
344
|
-
/** OID of the actor that authorized this mutation. */
|
|
345
|
-
authorized_by: string
|
|
346
|
-
/** Optional list of supporting evidence OIDs (audit trail). */
|
|
347
|
-
evidence_oids?: string[]
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
/** SRO is just a CDRO with a fixed body type. */
|
|
351
|
-
export type SRO = CDRO<SROBody> & { type: 'sraid:sro' }
|
|
325
|
+
// ── Supersession ──────────────────────────────────────────────────────────────
|
|
326
|
+
//
|
|
327
|
+
// The standalone SRO (Supersession Record Object, `type: 'sraid:sro'`) was
|
|
328
|
+
// REMOVED in 0.4.0. It was the third of three overlapping supersession
|
|
329
|
+
// mechanisms and the only one nothing consumed: `lineage.ts` never handled it,
|
|
330
|
+
// no repo in the SynOI stack referenced it in any language, and the canon had
|
|
331
|
+
// already retired the term (ADR_022 section 0: "an earlier, retired
|
|
332
|
+
// object-format term").
|
|
333
|
+
//
|
|
334
|
+
// Supersession is now expressed by exactly two things, both identity-bound
|
|
335
|
+
// because `cdroContentCore` hashes them:
|
|
336
|
+
//
|
|
337
|
+
// prev / links[] the Merkle edges - a head OID commits its whole reachable
|
|
338
|
+
// history. Resolve a version set with `latestWins`.
|
|
339
|
+
// supersedes the legacy self-asserted string, kept for compatibility.
|
|
340
|
+
//
|
|
341
|
+
// A caller that needs to record WHY something was superseded should put that
|
|
342
|
+
// in the successor's own `body`, where it is hashed and signed, rather than in
|
|
343
|
+
// a separate object whose linkage was never verified.
|
package/src/validate.ts
CHANGED
|
@@ -20,7 +20,6 @@ import type {
|
|
|
20
20
|
LineageLink,
|
|
21
21
|
LinkRel,
|
|
22
22
|
SignatureEnvelope,
|
|
23
|
-
SRO,
|
|
24
23
|
} from './types.js'
|
|
25
24
|
import { SENSITIVITY_TIERS, isSensitivityTier } from './sensitivity.js'
|
|
26
25
|
|
|
@@ -327,68 +326,7 @@ function validateAttestationEnvelopeShape(x: unknown): string[] {
|
|
|
327
326
|
return errors
|
|
328
327
|
}
|
|
329
328
|
|
|
330
|
-
//
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* Validate that `x` matches the SRO shape — a CDRO whose `type` is
|
|
334
|
-
* "sraid:sro" and whose `body` carries predecessor/successor pointers and
|
|
335
|
-
* an authorizer. Reuses validateCdro and layers SRO-specific checks on
|
|
336
|
-
* top.
|
|
337
|
-
*
|
|
338
|
-
* [S01] envelope is not a valid CDRO
|
|
339
|
-
* [S02] type is not "sraid:sro"
|
|
340
|
-
* [S03] body.predecessor_oid not a canonical OID (sha256:<64 hex>)
|
|
341
|
-
* [S04] body.successor_oid not a canonical OID (sha256:<64 hex>)
|
|
342
|
-
* [S05] body.reason not a non-empty string
|
|
343
|
-
* [S06] body.authorized_by not a non-empty string
|
|
344
|
-
* [S07] body.evidence_oids, if present, not an array of non-empty strings
|
|
345
|
-
*/
|
|
346
|
-
export function validateSro(x: unknown): ValidationResult {
|
|
347
|
-
const cdroResult = validateCdro(x)
|
|
348
|
-
if (!cdroResult.ok) {
|
|
349
|
-
return { ok: false, errors: cdroResult.errors.map((e) => '[S01] ' + e) }
|
|
350
|
-
}
|
|
351
|
-
const errors: string[] = []
|
|
352
|
-
const o = x as { type?: unknown; body?: unknown }
|
|
353
|
-
|
|
354
|
-
if (o.type !== 'sraid:sro') {
|
|
355
|
-
errors.push('[S02] type must be "sraid:sro" for an SRO')
|
|
356
|
-
}
|
|
357
|
-
if (o.body === null || typeof o.body !== 'object' || Array.isArray(o.body)) {
|
|
358
|
-
errors.push('[S01] body must be an object')
|
|
359
|
-
return { ok: false, errors }
|
|
360
|
-
}
|
|
361
|
-
const b = o.body as Record<string, unknown>
|
|
362
|
-
|
|
363
|
-
if (!isCanonicalOid(b['predecessor_oid'])) {
|
|
364
|
-
errors.push('[S03] body.predecessor_oid must be a canonical OID (sha256:<64 hex>)')
|
|
365
|
-
}
|
|
366
|
-
if (!isCanonicalOid(b['successor_oid'])) {
|
|
367
|
-
errors.push('[S04] body.successor_oid must be a canonical OID (sha256:<64 hex>)')
|
|
368
|
-
}
|
|
369
|
-
if (typeof b['reason'] !== 'string' || (b['reason'] as string).length === 0) {
|
|
370
|
-
errors.push('[S05] body.reason must be a non-empty string')
|
|
371
|
-
}
|
|
372
|
-
if (typeof b['authorized_by'] !== 'string' || (b['authorized_by'] as string).length === 0) {
|
|
373
|
-
errors.push('[S06] body.authorized_by must be a non-empty string')
|
|
374
|
-
}
|
|
375
|
-
if (b['evidence_oids'] !== undefined) {
|
|
376
|
-
if (!Array.isArray(b['evidence_oids'])) {
|
|
377
|
-
errors.push('[S07] body.evidence_oids, if present, must be an array')
|
|
378
|
-
} else {
|
|
379
|
-
const arr = b['evidence_oids'] as unknown[]
|
|
380
|
-
for (let i = 0; i < arr.length; i++) {
|
|
381
|
-
if (typeof arr[i] !== 'string' || (arr[i] as string).length === 0) {
|
|
382
|
-
errors.push(`[S07] body.evidence_oids[${i}] must be a non-empty string`)
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
return { ok: errors.length === 0, errors }
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
// Type-only re-exports so consumers can do `import type { CDRO, SRO } from '@synoi/sraid'`
|
|
329
|
+
// Type-only re-exports so consumers can do `import type { CDRO } from '@synoi/sraid'`
|
|
392
330
|
// after pulling validators from this module.
|
|
393
331
|
export type {
|
|
394
332
|
AttestationEnvelope,
|
|
@@ -397,6 +335,5 @@ export type {
|
|
|
397
335
|
CDRO,
|
|
398
336
|
LineageLink,
|
|
399
337
|
LinkRel,
|
|
400
|
-
SRO,
|
|
401
338
|
SignatureEnvelope,
|
|
402
339
|
}
|