@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/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"}
@@ -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, SRO } from './types.js';
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
@@ -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,EACjB,GAAG,EACJ,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;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CA2CxD;AAID,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,IAAI,EACJ,WAAW,EACX,OAAO,EACP,GAAG,EACH,iBAAiB,GAClB,CAAA"}
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
@@ -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.3.0",
4
- "description": "Reference TypeScript library for the SynOI SRAID (Self-Routing Addressable Identity Data) protocol - types, canonical object serializer, OID computation, signature verification, and validators for L0 of the SRAID Stack.",
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 (Self-Routing Addressable Identity Data) is L0 of the SynOI SRAID Stack:
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
- * L0 SRAID ← this package
7
- * L1 Vault / Resolver
8
- * L2 Inference Broker / Resonance
9
- * L3 GAP (Governed Action Protocol)
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
- * This package is intentionally small: types, canonical serializer,
13
- * OID computation, hybrid signature verification, and shape validators.
14
- * No storage, no HTTP, no governance those are higher layers.
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
- // L2 DSSE attestation — PAE type-binding, hybrid Ed25519 + ML-DSA-65 both
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
- // L3 lineage (Merkle-DAG) — unify supersedes/SRO/prev; latest-wins resolution.
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
- // L4 propagating sensitivity — coarse, opaque tier + monotone max() carry-forward.
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
- // L4 authority verification (the authorized axis).
88
- export {
89
- verifyAuthority,
90
- capabilityCovers,
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(body))) where the body is the CDRO
237
- * minus the `oid` and `signature` fields.
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(cdro_minus_oid_and_signature))). */
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
- // ── SRO ───────────────────────────────────────────────────────────────────────
325
-
326
- /**
327
- * SRO Mutation / Supersession Record.
328
- *
329
- * Links a successor CDRO to its predecessor and the actor that authorized
330
- * the supersession. SROs are themselves CDRO objects (so they're CDROs with
331
- * an `oid` and `signature`), but they have a specific body shape.
332
- *
333
- * Where CDROs are the "what" of the system, SROs are the "what changed."
334
- * They form an append-only chain: every supersedes pointer in a CDRO is
335
- * accompanied by an SRO that explains and witnesses the change.
336
- */
337
- export interface SROBody {
338
- /** OID of the predecessor object being superseded. */
339
- predecessor_oid: string
340
- /** OID of the successor object that supersedes it. */
341
- successor_oid: string
342
- /** Why the predecessor was superseded. Free-form short string. */
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
- // ── SRO validation ───────────────────────────────────────────────────────────
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
  }