@feltdb/core 0.11.4 → 0.11.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.
@@ -0,0 +1,407 @@
1
+ import type { AuthorizationDecision, AuthorizationRequest, AuthorizationSubject } from './authorization.js';
2
+ import type { AuthorityQueryPage, AuthorityQueryRequest } from './http-db.js';
3
+ /** Durable collection holding one head record per declared invariant. */
4
+ export declare const FELTDB_ARCHITECTURE_INVARIANT_COLLECTION = "_feltdb.ArchitectureInvariant";
5
+ /** Durable collection holding the immutable declaration of every version. */
6
+ export declare const FELTDB_ARCHITECTURE_INVARIANT_VERSION_COLLECTION = "_feltdb.ArchitectureInvariantVersion";
7
+ /** Durable collection holding immutable advisory evaluations. */
8
+ export declare const FELTDB_ARCHITECTURE_EVALUATION_COLLECTION = "_feltdb.ArchitectureInvariantEvaluation";
9
+ export declare const ARCHITECTURE_INVARIANT_CONTRACT_VERSION = 1;
10
+ /** Largest page a bounded invariant or evaluation query may request. */
11
+ export declare const ARCHITECTURE_INVARIANT_MAX_LIMIT = 1000;
12
+ /** Page size used when a caller does not request one. */
13
+ export declare const ARCHITECTURE_INVARIANT_DEFAULT_LIMIT = 100;
14
+ /**
15
+ * A free-form label an application uses to group its own invariants.
16
+ *
17
+ * FeltDB does not define a taxonomy of architecture. The declaring application
18
+ * already has one, and a closed list here would quietly become a competing
19
+ * one.
20
+ */
21
+ export type ArchitectureInvariantCategory = string;
22
+ export declare const ARCHITECTURE_INVARIANT_SEVERITIES: readonly ["critical", "high", "medium", "low", "info"];
23
+ export type ArchitectureInvariantSeverity = typeof ARCHITECTURE_INVARIANT_SEVERITIES[number];
24
+ export declare const ARCHITECTURE_INVARIANT_STATUSES: readonly ["active", "inactive"];
25
+ export type ArchitectureInvariantStatus = typeof ARCHITECTURE_INVARIANT_STATUSES[number];
26
+ /**
27
+ * How an invariant can be established.
28
+ *
29
+ * Not every invariant is mechanically checkable. Some are decided by a test or
30
+ * a conformance check, some need evidence interpreted by an advisory
31
+ * evaluator, and some can only be escalated to a person. All three are
32
+ * first-class: `human-review` is a complete answer to "how is this verified",
33
+ * not an admission that the model failed to describe it.
34
+ */
35
+ export declare const ARCHITECTURE_VERIFICATION_METHODS: readonly ["automated-test", "contract-conformance", "source-analysis", "runtime-observation", "benchmark", "jev-advisory", "human-review"];
36
+ export type ArchitectureVerificationMethod = typeof ARCHITECTURE_VERIFICATION_METHODS[number];
37
+ /**
38
+ * Advisory results an evaluator may record.
39
+ *
40
+ * `UNKNOWN` exists so that missing evidence stays missing evidence. An
41
+ * evaluator that cannot establish a condition records `UNKNOWN`; it does not
42
+ * record `DRIFT`, and FeltDB never promotes one to the other.
43
+ */
44
+ export declare const ARCHITECTURE_EVALUATION_RESULTS: readonly ["PASS", "DRIFT", "UNKNOWN"];
45
+ export type ArchitectureEvaluationResult = typeof ARCHITECTURE_EVALUATION_RESULTS[number];
46
+ export declare const ARCHITECTURE_INVARIANT_CAPABILITIES: {
47
+ readonly declare: "architecture:invariant.declare";
48
+ readonly read: "architecture:invariant.read";
49
+ readonly evaluate: "architecture:evaluation.record";
50
+ readonly readEvaluation: "architecture:evaluation.read";
51
+ };
52
+ /**
53
+ * One way this invariant can be established.
54
+ *
55
+ * FeltDB stores it and never interprets it. A different evaluator can read the
56
+ * same declaration without any change to this model.
57
+ */
58
+ export interface ArchitectureInvariantVerification {
59
+ method: ArchitectureVerificationMethod;
60
+ /** Where the evidence comes from, as a `scheme:reference`. */
61
+ reference?: string;
62
+ /** The evaluator this entry was written for, when it was written for one. */
63
+ evaluator?: string;
64
+ /** The condition, in whatever form the named evaluator accepts. */
65
+ predicate?: string;
66
+ notes?: string;
67
+ parameters?: Record<string, unknown>;
68
+ }
69
+ /**
70
+ * A relationship to an authority that owns the referenced material.
71
+ *
72
+ * The invariant states what must remain true about that authority's own
73
+ * declaration. It does not become a second copy of it.
74
+ */
75
+ export interface ArchitectureInvariantAuthorityReference {
76
+ /** The owning authority, for example `.flow`, `appport`, `authboundry`. */
77
+ authority: string;
78
+ /** What is referenced inside that authority. */
79
+ reference: string;
80
+ /** The relationship that must remain true. */
81
+ relationship: string;
82
+ }
83
+ /**
84
+ * Provenance, in the terms FeltDB already uses.
85
+ *
86
+ * The actor is an `AuthorizationSubject`, the decision id is the one the
87
+ * existing authorization boundary issued, and the scope is the tenant and
88
+ * application the record belongs to. Nothing here is a second provenance
89
+ * mechanism.
90
+ */
91
+ export interface ArchitectureProvenance {
92
+ subject: AuthorizationSubject;
93
+ tenant_id: string;
94
+ application_id: string;
95
+ recorded_at: string;
96
+ /** What produced the write, for example `feltdb.cli`, `attn`, `studio`. */
97
+ source: string;
98
+ /** The decision the authorization boundary issued for this write. */
99
+ authorization_decision_id?: string;
100
+ }
101
+ /** The meaning-bearing part of an invariant. Changing it creates a version. */
102
+ export interface ArchitectureInvariantDeclaration {
103
+ name: string;
104
+ description: string;
105
+ category: ArchitectureInvariantCategory;
106
+ severity: ArchitectureInvariantSeverity;
107
+ /** The architectural surface the invariant is declared over. */
108
+ scope: string;
109
+ /** How this invariant can be established. At least one entry is required. */
110
+ verification: ArchitectureInvariantVerification[];
111
+ references: ArchitectureInvariantAuthorityReference[];
112
+ }
113
+ /** The current state of one declared invariant. */
114
+ export interface ArchitectureInvariant extends ArchitectureInvariantDeclaration {
115
+ /** Stable declared identity, unique within a tenant and application. */
116
+ id: string;
117
+ tenant_id: string;
118
+ application_id: string;
119
+ contract_version: typeof ARCHITECTURE_INVARIANT_CONTRACT_VERSION;
120
+ status: ArchitectureInvariantStatus;
121
+ version: number;
122
+ /** Digest of the declaration at `version`. */
123
+ declaration_digest: string;
124
+ created_at: string;
125
+ created_by: AuthorizationSubject;
126
+ updated_at: string;
127
+ updated_by: AuthorizationSubject;
128
+ deactivated_at?: string;
129
+ deactivated_by?: AuthorizationSubject;
130
+ deactivation_reason?: string;
131
+ provenance: ArchitectureProvenance;
132
+ }
133
+ /**
134
+ * One immutable declaration version.
135
+ *
136
+ * A version is never rewritten. This is what lets an application answer what
137
+ * it believed had to be true when an evaluation happened, rather than only
138
+ * what it believes today.
139
+ */
140
+ export interface ArchitectureInvariantVersion extends ArchitectureInvariantDeclaration {
141
+ invariant_id: string;
142
+ tenant_id: string;
143
+ application_id: string;
144
+ contract_version: typeof ARCHITECTURE_INVARIANT_CONTRACT_VERSION;
145
+ version: number;
146
+ declaration_digest: string;
147
+ supersedes?: number;
148
+ change_reason?: string;
149
+ declared_at: string;
150
+ declared_by: AuthorizationSubject;
151
+ provenance: ArchitectureProvenance;
152
+ }
153
+ export interface ArchitectureEvaluationFinding {
154
+ summary: string;
155
+ severity?: ArchitectureInvariantSeverity;
156
+ evidence?: string[];
157
+ }
158
+ export interface ArchitectureEvaluator {
159
+ /** Evaluator identity, for example `jev`. */
160
+ id: string;
161
+ /** Evaluator version, so an evaluation stays attributable to a build. */
162
+ version: string;
163
+ }
164
+ /** One advisory evaluation, bound to the exact invariant version evaluated. */
165
+ export interface ArchitectureEvaluation {
166
+ id: string;
167
+ tenant_id: string;
168
+ application_id: string;
169
+ contract_version: typeof ARCHITECTURE_INVARIANT_CONTRACT_VERSION;
170
+ invariant_id: string;
171
+ invariant_version: number;
172
+ /** Digest of the declaration as it stood at `invariant_version`. */
173
+ invariant_declaration_digest: string;
174
+ evaluator: ArchitectureEvaluator;
175
+ result: ArchitectureEvaluationResult;
176
+ /** References to evidence the evaluator used, for example `git:abc123`. */
177
+ evidence: string[];
178
+ explanation: string;
179
+ findings: ArchitectureEvaluationFinding[];
180
+ confidence?: number;
181
+ evaluated_at: string;
182
+ recorded_at: string;
183
+ provenance: ArchitectureProvenance;
184
+ }
185
+ export interface ArchitectureInvariantPage {
186
+ invariants: ArchitectureInvariant[];
187
+ nextCursor?: string;
188
+ exhausted: boolean;
189
+ }
190
+ export interface ArchitectureInvariantVersionPage {
191
+ versions: ArchitectureInvariantVersion[];
192
+ nextCursor?: string;
193
+ exhausted: boolean;
194
+ }
195
+ export interface ArchitectureEvaluationPage {
196
+ evaluations: ArchitectureEvaluation[];
197
+ nextCursor?: string;
198
+ exhausted: boolean;
199
+ }
200
+ export interface ArchitectureSnapshotEntry {
201
+ invariant: ArchitectureInvariant;
202
+ version: ArchitectureInvariantVersion;
203
+ latestEvaluation?: ArchitectureEvaluation;
204
+ }
205
+ export interface ArchitectureSnapshotPage {
206
+ entries: ArchitectureSnapshotEntry[];
207
+ nextCursor?: string;
208
+ exhausted: boolean;
209
+ }
210
+ /** Durable substrate the service writes through. */
211
+ export interface ArchitectureInvariantStore {
212
+ read<T>(collection: string, recordId: string): Promise<T | undefined>;
213
+ create<T>(collection: string, recordId: string, value: T): Promise<void>;
214
+ replace<T>(collection: string, recordId: string, value: T): Promise<void>;
215
+ query<T>(request: AuthorityQueryRequest): Promise<AuthorityQueryPage<T>>;
216
+ }
217
+ /** The part of a FeltDB instance this substrate needs. Satisfied by `StateFirstDB`. */
218
+ export interface ArchitectureInvariantDatabase {
219
+ collection<T>(name: string): {
220
+ get(id: string | number): Promise<T | null>;
221
+ insert(data: Partial<T>, id?: string | number): Promise<string>;
222
+ update(id: string | number, changes: Partial<T>): Promise<void>;
223
+ };
224
+ query<T = Record<string, unknown>>(request: AuthorityQueryRequest): Promise<AuthorityQueryPage<T>>;
225
+ }
226
+ /** Structurally satisfied by the core `AuthorizationClient`. */
227
+ export interface ArchitectureAuthorizationGate {
228
+ check(request: AuthorizationRequest): Promise<AuthorizationDecision>;
229
+ }
230
+ export interface ArchitectureInvariantScope {
231
+ tenantId: string;
232
+ applicationId: string;
233
+ }
234
+ export interface ArchitectureInvariantAuthorization {
235
+ gate: ArchitectureAuthorizationGate;
236
+ subject: AuthorizationSubject;
237
+ }
238
+ export interface ArchitectureInvariantServiceOptions {
239
+ scope: ArchitectureInvariantScope;
240
+ /** Who is writing. Recorded as provenance on every mutation. */
241
+ actor: AuthorizationSubject;
242
+ /** What produced the write. Recorded as provenance on every mutation. */
243
+ source: string;
244
+ /** FeltDB's existing authorization boundary. Omitted means no narrowing. */
245
+ authorization?: ArchitectureInvariantAuthorization;
246
+ /** Injectable clock, so evidence ordering is testable. */
247
+ now?: () => Date;
248
+ /** Injectable identity, so evaluation ids are testable. */
249
+ newEvaluationId?: () => string;
250
+ }
251
+ export interface CreateArchitectureInvariantInput extends Partial<ArchitectureInvariantDeclaration> {
252
+ id: string;
253
+ name: string;
254
+ description: string;
255
+ category: ArchitectureInvariantCategory;
256
+ severity: ArchitectureInvariantSeverity;
257
+ scope: string;
258
+ }
259
+ export interface UpdateArchitectureInvariantInput {
260
+ name?: string;
261
+ description?: string;
262
+ category?: ArchitectureInvariantCategory;
263
+ severity?: ArchitectureInvariantSeverity;
264
+ scope?: string;
265
+ verification?: ArchitectureInvariantVerification[];
266
+ references?: ArchitectureInvariantAuthorityReference[];
267
+ /** Why the meaning changed. Stored on the new version. */
268
+ reason?: string;
269
+ /** Rejects the write when the stored version has moved on. */
270
+ expectedVersion?: number;
271
+ }
272
+ export interface DeactivateArchitectureInvariantInput {
273
+ reason?: string;
274
+ expectedVersion?: number;
275
+ }
276
+ export interface ListArchitectureInvariantsInput {
277
+ status?: ArchitectureInvariantStatus;
278
+ category?: ArchitectureInvariantCategory;
279
+ severity?: ArchitectureInvariantSeverity;
280
+ scope?: string;
281
+ limit?: number;
282
+ cursor?: string;
283
+ }
284
+ export interface ListArchitectureInvariantVersionsInput {
285
+ limit?: number;
286
+ cursor?: string;
287
+ }
288
+ export interface RecordArchitectureEvaluationInput {
289
+ invariantId: string;
290
+ invariantVersion: number;
291
+ evaluator: string;
292
+ evaluatorVersion?: string;
293
+ result: ArchitectureEvaluationResult;
294
+ evidence?: string[];
295
+ explanation: string;
296
+ findings?: ArchitectureEvaluationFinding[];
297
+ confidence?: number;
298
+ evaluatedAt?: string | number | Date;
299
+ /** Caller-supplied identity, for an idempotent retry of the same evaluation. */
300
+ evaluationId?: string;
301
+ }
302
+ export interface ListArchitectureEvaluationsInput {
303
+ invariantId?: string;
304
+ invariantVersion?: number;
305
+ evaluator?: string;
306
+ result?: ArchitectureEvaluationResult;
307
+ limit?: number;
308
+ cursor?: string;
309
+ }
310
+ /**
311
+ * A store that can only write one collection.
312
+ *
313
+ * `evaluations.record()` runs against this, which is what makes "an evaluation
314
+ * cannot mutate an invariant" a property of the substrate rather than a rule
315
+ * the recording path is trusted to follow.
316
+ */
317
+ export declare function restrictWritesTo(store: ArchitectureInvariantStore, collection: string): ArchitectureInvariantStore;
318
+ /** Adapt a FeltDB instance to the durable substrate this service writes through. */
319
+ export declare function createArchitectureInvariantStore(db: ArchitectureInvariantDatabase): ArchitectureInvariantStore;
320
+ /**
321
+ * The durable architecture invariant substrate.
322
+ *
323
+ * `invariants` declares what must be true. `evaluations` retains what an
324
+ * advisory evaluator observed about it. Neither side can do the other's job.
325
+ */
326
+ export declare class FeltDBArchitectureInvariantService {
327
+ readonly scope: ArchitectureInvariantScope;
328
+ private readonly actor;
329
+ private readonly source;
330
+ private readonly authorization?;
331
+ private readonly clock;
332
+ private readonly newEvaluationId;
333
+ private readonly evaluationStore;
334
+ private readonly store;
335
+ constructor(store: ArchitectureInvariantStore, options: ArchitectureInvariantServiceOptions);
336
+ /** Durable record key. Scoping by tenant and application is part of identity. */
337
+ private scopedKey;
338
+ private versionKey;
339
+ private resourceUri;
340
+ /**
341
+ * Ask FeltDB's existing authorization boundary, and fail closed.
342
+ *
343
+ * With no gate configured the caller has not asked for narrowing, and this
344
+ * substrate must not invent an authorization answer FeltDB did not give.
345
+ */
346
+ private authorize;
347
+ private provenance;
348
+ private readInvariantRow;
349
+ /**
350
+ * Every collection read is a bounded, tenant- and application-scoped query
351
+ * with an explicit order, so a page is reproducible and a cursor resumes
352
+ * where the previous page ended instead of rescanning the collection.
353
+ */
354
+ private scopedQuery;
355
+ private writeVersion;
356
+ readonly invariants: {
357
+ /** Declare an invariant. The declaration becomes version 1. */
358
+ create: (input: CreateArchitectureInvariantInput) => Promise<ArchitectureInvariant>;
359
+ /** Read the current declaration. */
360
+ get: (invariantId: string) => Promise<ArchitectureInvariant>;
361
+ /** Read one immutable declaration version. */
362
+ version: (invariantId: string, version: number) => Promise<ArchitectureInvariantVersion>;
363
+ /** Page the declaration history of one invariant, oldest version first. */
364
+ versions: (invariantId: string, input?: ListArchitectureInvariantVersionsInput) => Promise<ArchitectureInvariantVersionPage>;
365
+ /** Page declared invariants within this tenant and application. */
366
+ list: (input?: ListArchitectureInvariantsInput) => Promise<ArchitectureInvariantPage>;
367
+ /**
368
+ * Change what an invariant means.
369
+ *
370
+ * A changed declaration becomes a new version; the previous version keeps
371
+ * its exact words, so evaluations recorded against it stay readable. An
372
+ * update that changes nothing is a no-op and creates no version.
373
+ */
374
+ update: (invariantId: string, input?: UpdateArchitectureInvariantInput) => Promise<ArchitectureInvariant>;
375
+ /**
376
+ * Retire an invariant without rewriting it.
377
+ *
378
+ * Deactivation is lifecycle, not meaning: the declaration keeps its
379
+ * version, and evaluations recorded against it remain readable.
380
+ */
381
+ deactivate: (invariantId: string, input?: DeactivateArchitectureInvariantInput) => Promise<ArchitectureInvariant>;
382
+ };
383
+ readonly evaluations: {
384
+ /**
385
+ * Retain one advisory evaluation.
386
+ *
387
+ * The evaluation binds to the exact invariant version it names, and to
388
+ * that version's declaration digest. A conclusive result must cite
389
+ * evidence; `UNKNOWN` need not, because the absence of evidence is what it
390
+ * reports.
391
+ */
392
+ record: (input: RecordArchitectureEvaluationInput) => Promise<ArchitectureEvaluation>;
393
+ get: (evaluationId: string) => Promise<ArchitectureEvaluation>;
394
+ /** Page retained evaluations within this tenant and application. */
395
+ list: (input?: ListArchitectureEvaluationsInput) => Promise<ArchitectureEvaluationPage>;
396
+ };
397
+ /**
398
+ * Return the current declaration and its latest evaluation for each invariant.
399
+ *
400
+ * The invariant page is the snapshot boundary: history is never expanded and
401
+ * every evaluation lookup is limited to one record.
402
+ */
403
+ readonly snapshot: (input?: ListArchitectureInvariantsInput) => Promise<ArchitectureSnapshotPage>;
404
+ }
405
+ /** Bind the durable architecture invariant substrate to a FeltDB instance. */
406
+ export declare function createArchitectureInvariantService(db: ArchitectureInvariantDatabase, options: ArchitectureInvariantServiceOptions): FeltDBArchitectureInvariantService;
407
+ //# sourceMappingURL=architecture-invariant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture-invariant.d.ts","sourceRoot":"","sources":["../src/architecture-invariant.ts"],"names":[],"mappings":"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"}