@intentius/chant 0.28.0 → 0.30.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/cli/handlers/components.d.ts.map +1 -1
- package/dist/cli/handlers/graph.d.ts.map +1 -1
- package/dist/cli/handlers/lifecycle.d.ts +5 -3
- package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +14 -0
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/config.d.ts +46 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/deep-observation.d.ts +257 -0
- package/dist/deep-observation.d.ts.map +1 -0
- package/dist/discovery/fold-import.d.ts +153 -17
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/discovery/sandbox/config-wire.d.ts +3 -2
- package/dist/discovery/sandbox/config-wire.d.ts.map +1 -1
- package/dist/env.d.ts +5 -2
- package/dist/env.d.ts.map +1 -1
- package/dist/fold/fold.d.ts +35 -3
- package/dist/fold/fold.d.ts.map +1 -1
- package/dist/fold/subset.d.ts +9 -0
- package/dist/fold/subset.d.ts.map +1 -1
- package/dist/graph-ir.d.ts +73 -4
- package/dist/graph-ir.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/kubectl-context.d.ts +27 -0
- package/dist/kubectl-context.d.ts.map +1 -1
- package/dist/lexicon.d.ts +78 -6
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/change-set.d.ts +26 -5
- package/dist/lifecycle/change-set.d.ts.map +1 -1
- package/dist/lifecycle/deep-diff.d.ts +103 -0
- package/dist/lifecycle/deep-diff.d.ts.map +1 -0
- package/dist/lifecycle/deep-observe.d.ts +62 -0
- package/dist/lifecycle/deep-observe.d.ts.map +1 -0
- package/dist/lifecycle/index.d.ts +3 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/live-diff.d.ts +25 -1
- package/dist/lifecycle/live-diff.d.ts.map +1 -1
- package/dist/lifecycle/observation-baseline.d.ts +118 -0
- package/dist/lifecycle/observation-baseline.d.ts.map +1 -0
- package/dist/lifecycle/observe.d.ts +4 -2
- package/dist/lifecycle/observe.d.ts.map +1 -1
- package/dist/lifecycle/snapshot.d.ts.map +1 -1
- package/dist/lifecycle/status.d.ts +26 -1
- package/dist/lifecycle/status.d.ts.map +1 -1
- package/dist/lifecycle/types.d.ts +8 -0
- package/dist/lifecycle/types.d.ts.map +1 -1
- package/dist/live-endpoint.d.ts +92 -0
- package/dist/live-endpoint.d.ts.map +1 -0
- package/dist/observation.d.ts +123 -0
- package/dist/observation.d.ts.map +1 -0
- package/dist/stack-output.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/cli/handlers/components.test.ts +63 -4
- package/src/cli/handlers/components.ts +78 -35
- package/src/cli/handlers/graph.test.ts +155 -6
- package/src/cli/handlers/graph.ts +124 -29
- package/src/cli/handlers/lifecycle.test.ts +410 -6
- package/src/cli/handlers/lifecycle.ts +475 -182
- package/src/cli/main.test.ts +6 -0
- package/src/cli/main.ts +12 -0
- package/src/cli/registry.ts +14 -0
- package/src/config.test.ts +75 -0
- package/src/config.ts +61 -3
- package/src/deep-observation.test.ts +234 -0
- package/src/deep-observation.ts +489 -0
- package/src/discovery/fold-composite.test.ts +594 -0
- package/src/discovery/fold-import.test.ts +372 -1
- package/src/discovery/fold-import.ts +1216 -116
- package/src/discovery/sandbox/config-wire.ts +3 -2
- package/src/env.test.ts +12 -0
- package/src/env.ts +12 -4
- package/src/fold/fold.test.ts +105 -0
- package/src/fold/fold.ts +100 -20
- package/src/fold/subset.test.ts +38 -7
- package/src/fold/subset.ts +9 -0
- package/src/graph-ir-live.test.ts +28 -1
- package/src/graph-ir.ts +115 -12
- package/src/index.ts +2 -0
- package/src/kubectl-context.ts +81 -0
- package/src/lexicon.ts +100 -6
- package/src/lifecycle/change-set.test.ts +93 -1
- package/src/lifecycle/change-set.ts +65 -13
- package/src/lifecycle/deep-diff.test.ts +157 -0
- package/src/lifecycle/deep-diff.ts +213 -0
- package/src/lifecycle/deep-observe.test.ts +174 -0
- package/src/lifecycle/deep-observe.ts +173 -0
- package/src/lifecycle/index.ts +3 -0
- package/src/lifecycle/live-diff.test.ts +39 -0
- package/src/lifecycle/live-diff.ts +51 -5
- package/src/lifecycle/observation-baseline.test.ts +99 -0
- package/src/lifecycle/observation-baseline.ts +217 -0
- package/src/lifecycle/observe.test.ts +74 -3
- package/src/lifecycle/observe.ts +82 -22
- package/src/lifecycle/snapshot.test.ts +39 -1
- package/src/lifecycle/snapshot.ts +40 -20
- package/src/lifecycle/status.test.ts +89 -8
- package/src/lifecycle/status.ts +53 -3
- package/src/lifecycle/types.ts +8 -0
- package/src/live-endpoint.test.ts +115 -0
- package/src/live-endpoint.ts +148 -0
- package/src/observation.test.ts +96 -0
- package/src/observation.ts +213 -0
- package/src/stack-output.test.ts +55 -0
- package/src/stack-output.ts +41 -20
package/dist/lexicon.d.ts
CHANGED
|
@@ -11,7 +11,11 @@ import type { DriverComponent } from "./components/driver.js";
|
|
|
11
11
|
import type { EmulatorCapability } from "./op/emulator-lifecycle.js";
|
|
12
12
|
import type { RuleMeta } from "./audit/catalog.js";
|
|
13
13
|
import type { ReferenceCatalog } from "./graph-refs.js";
|
|
14
|
+
import type { DescribeResourcesResult } from "./observation.js";
|
|
15
|
+
import type { DeepNormalizationHooks, DeepObservationResult } from "./deep-observation.js";
|
|
14
16
|
export type { ReferenceCatalog, IdentityRule, RefRule } from "./graph-refs.js";
|
|
17
|
+
export type { DescribeResourcesResult, ObservationResult, NormalizedObservation, UnobservedEntity, UnobservedReason, } from "./observation.js";
|
|
18
|
+
export type { DeepObservationResult, DeepResourceObservation, NormalizedDeepObservation, DeepNormalizationHooks, DeepNode, DeepArrayElement, DeepSide, } from "./deep-observation.js";
|
|
15
19
|
/**
|
|
16
20
|
* Manifest for a packaged lexicon — metadata embedded in the tarball.
|
|
17
21
|
*
|
|
@@ -459,6 +463,27 @@ export interface LexiconPlugin {
|
|
|
459
463
|
* Use this when each chant entity has a 1:1 cloud equivalent — e.g. an
|
|
460
464
|
* AWS CFN resource, a K8s object, an ARM resource, a Temporal namespace.
|
|
461
465
|
*
|
|
466
|
+
* **The observation contract (#1089).** Returning nothing for a declared
|
|
467
|
+
* entity is a claim, and there are two different claims to make. Either the
|
|
468
|
+
* provider was asked and reported the resource absent — which is what lets
|
|
469
|
+
* the change set propose `create` — or the lexicon never looked, which must
|
|
470
|
+
* not. An implementation that has a "did not look" case (no reader for the
|
|
471
|
+
* kind, the read errored, no credentials, no cluster binding) must return the
|
|
472
|
+
* {@link ObservationResult} envelope and name those entities in `unobserved`
|
|
473
|
+
* with a total {@link UnobservedReason}. Warning on stderr is not enough: a
|
|
474
|
+
* warning is invisible to `lifecycle plan`, which is where the wrong `create`
|
|
475
|
+
* gets proposed. Returning the bare `name → ResourceMetadata` map is still
|
|
476
|
+
* valid and means "everything I was asked about, I looked at".
|
|
477
|
+
*
|
|
478
|
+
* Throwing is the whole-lexicon failure (see the k8s cluster-binding refusal,
|
|
479
|
+
* #1100): core catches it and marks every declared entity NOT-OBSERVED with
|
|
480
|
+
* `read-failed`, so a failed read is never a list of creates.
|
|
481
|
+
*
|
|
482
|
+
* Ownership verdicts are total (#1089). When `owned` is requested and the
|
|
483
|
+
* lexicon has no marker channel on this path, it must stamp
|
|
484
|
+
* `ownership: "unknown"` on what it returns rather than degrading silently —
|
|
485
|
+
* the change set never escalates `unknown` to a `delete`.
|
|
486
|
+
*
|
|
462
487
|
* `entities` carries the chant-side entity declarations for this lexicon,
|
|
463
488
|
* keyed by chant entity name (e.g. the export name from a `*.ts` file).
|
|
464
489
|
* Implementations that need to map cloud-side names back to chant entity
|
|
@@ -491,7 +516,52 @@ export interface LexiconPlugin {
|
|
|
491
516
|
* everything.
|
|
492
517
|
*/
|
|
493
518
|
owned?: boolean;
|
|
494
|
-
}): Promise<
|
|
519
|
+
}): Promise<DescribeResourcesResult>;
|
|
520
|
+
/**
|
|
521
|
+
* Read the full live *property tree* for each declared entity (#1014). Opt-in,
|
|
522
|
+
* and strictly deeper than {@link describeResources}, which reports existence
|
|
523
|
+
* plus a handful of scrubbed outputs. A lexicon that implements neither, or
|
|
524
|
+
* only the thin one, is unaffected — `lifecycle diff --live` gains
|
|
525
|
+
* property-level entries only where this exists.
|
|
526
|
+
*
|
|
527
|
+
* The result is keyed by chant entity name, exactly like the thin read, and
|
|
528
|
+
* carries the same NOT-OBSERVED map. That is the composition rule with #1089:
|
|
529
|
+
* a deep read that fails for one entity says so with a total
|
|
530
|
+
* {@link UnobservedReason}. It never returns a thin-but-clean tree, because a
|
|
531
|
+
* clean tree is a claim that nothing drifted.
|
|
532
|
+
*
|
|
533
|
+
* Properties must be normalized before they are returned — run
|
|
534
|
+
* `normalizeDeepProperties` (../deep-observation.ts) with this lexicon's own
|
|
535
|
+
* {@link deepNormalizationHooks}, so the trees a consumer sees are already
|
|
536
|
+
* free of arns, timestamps, status subtrees and unstable orderings.
|
|
537
|
+
*
|
|
538
|
+
* Throwing is the whole-lexicon failure, same as the thin read: core turns it
|
|
539
|
+
* into `read-failed` for every declared entity.
|
|
540
|
+
*/
|
|
541
|
+
observeResourcesDeep?(options: {
|
|
542
|
+
environment: string;
|
|
543
|
+
buildOutput: string;
|
|
544
|
+
entityNames: string[];
|
|
545
|
+
entities: Map<string, {
|
|
546
|
+
entityType: string;
|
|
547
|
+
props: Record<string, unknown>;
|
|
548
|
+
}>;
|
|
549
|
+
/** Deployed stack to observe, for a multi-stack project (see `stacks` in {@link ChantConfig}). */
|
|
550
|
+
stack?: string;
|
|
551
|
+
/** Restrict to chant-owned resources (#119). A lexicon with no marker channel on this path says so. */
|
|
552
|
+
owned?: boolean;
|
|
553
|
+
}): Promise<DeepObservationResult>;
|
|
554
|
+
/**
|
|
555
|
+
* This lexicon's noise rules for deep observation (#1014): which fields are
|
|
556
|
+
* read-only / server-populated / controller-managed / provider-defaulted, and
|
|
557
|
+
* which arrays are sets. Data, not a method — core applies the same rules to
|
|
558
|
+
* the *declared* tree, which no reader ever touches, and the two sides have
|
|
559
|
+
* to be normalized identically to be comparable.
|
|
560
|
+
*
|
|
561
|
+
* Ships alongside {@link observeResourcesDeep}; a reader without hooks
|
|
562
|
+
* produces a diff made almost entirely of noise.
|
|
563
|
+
*/
|
|
564
|
+
deepNormalizationHooks?: DeepNormalizationHooks;
|
|
495
565
|
/**
|
|
496
566
|
* Report the live status of one deploy unit by its deployed name. Opt-in.
|
|
497
567
|
*
|
|
@@ -638,12 +708,14 @@ export interface ResourceMetadata {
|
|
|
638
708
|
/** Cloud-assigned output properties */
|
|
639
709
|
attributes?: Record<string, unknown>;
|
|
640
710
|
/**
|
|
641
|
-
* Live ownership verdict from the resource's marker (#119/#120)
|
|
642
|
-
*
|
|
643
|
-
* no marker
|
|
644
|
-
*
|
|
711
|
+
* Live ownership verdict from the resource's marker (#119/#120). `owned` =
|
|
712
|
+
* carries chant's marker; `foreign` = no marker; `unknown` = the lexicon has
|
|
713
|
+
* no marker channel on this read path and says so rather than degrading
|
|
714
|
+
* silently (#1089 — verdicts are total). Absent is read as `unknown`. The
|
|
715
|
+
* change set reads this — never the snapshot — to decide whether an orphan is
|
|
716
|
+
* a delete, and never escalates `unknown` to one.
|
|
645
717
|
*/
|
|
646
|
-
ownership?: "owned" | "foreign";
|
|
718
|
+
ownership?: "owned" | "foreign" | "unknown";
|
|
647
719
|
}
|
|
648
720
|
/**
|
|
649
721
|
* Metadata about a runtime artifact, returned by listArtifacts. Same shape
|
package/dist/lexicon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexicon.d.ts","sourceRoot":"","sources":["../src/lexicon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lexicon.d.ts","sourceRoot":"","sources":["../src/lexicon.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
* load-bearing.
|
|
14
14
|
*/
|
|
15
15
|
import { type AttributeChange, type DiffLiveInput } from "./live-diff.js";
|
|
16
|
+
import { type UnobservedReason } from "../observation.js";
|
|
16
17
|
/**
|
|
17
18
|
* What the projection proposes for a single resource.
|
|
18
19
|
*
|
|
19
|
-
* - `create` — declared in source,
|
|
20
|
+
* - `create` — declared in source, and the provider **confirmed** it absent.
|
|
20
21
|
* - `update` — declared and live, but live config drifted.
|
|
21
22
|
* - `delete` — a chant-owned resource that is live but no longer declared.
|
|
22
23
|
* Only emitted once ownership is known (#121); never inferred from the
|
|
@@ -24,8 +25,11 @@ import { type AttributeChange, type DiffLiveInput } from "./live-diff.js";
|
|
|
24
25
|
* - `adopt` — live but undeclared, ownership not established → a candidate to
|
|
25
26
|
* pull back into source, never an auto-delete.
|
|
26
27
|
* - `noop` — declared and live with no drift, or already reconciled.
|
|
28
|
+
* - `unobserved` — declared, and the lexicon could not look (#1089). Not a
|
|
29
|
+
* proposal at all: it is the plan admitting a hole. Never a create, never a
|
|
30
|
+
* delete. Read `unobservedReason` for which hole.
|
|
27
31
|
*/
|
|
28
|
-
export type ChangeAction = "create" | "update" | "delete" | "adopt" | "noop";
|
|
32
|
+
export type ChangeAction = "create" | "update" | "delete" | "adopt" | "noop" | "unobserved";
|
|
29
33
|
/**
|
|
30
34
|
* Who answers "is this resource chant's?". `unknown` until a live ownership
|
|
31
35
|
* marker is queried (#120). The change set never escalates `unknown` to a
|
|
@@ -44,13 +48,24 @@ export interface ChangeSetEntry {
|
|
|
44
48
|
declared: boolean;
|
|
45
49
|
/** Present in the last snapshot. */
|
|
46
50
|
inSnapshot: boolean;
|
|
47
|
-
/** Observed in the live system right now. */
|
|
51
|
+
/** Observed present in the live system right now. */
|
|
48
52
|
live: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* The lexicon actually looked at this entity (#1089). `false` with
|
|
55
|
+
* `live: false` means "unknown", not "absent" — the distinction the whole
|
|
56
|
+
* change set now rests on. Absent-and-looked-at is `observed: true,
|
|
57
|
+
* live: false`.
|
|
58
|
+
*/
|
|
59
|
+
observed: boolean;
|
|
49
60
|
};
|
|
50
61
|
/** Attribute-level changes, for `update`. */
|
|
51
62
|
deltas?: AttributeChange[];
|
|
52
63
|
/** Live-marker ownership. Defaults to `unknown`. */
|
|
53
64
|
ownership: Ownership;
|
|
65
|
+
/** Why the entity could not be observed, for `action: "unobserved"` (#1089). */
|
|
66
|
+
unobservedReason?: UnobservedReason;
|
|
67
|
+
/** Human-readable backing for `unobservedReason` (the failing command, the missing binding). */
|
|
68
|
+
unobservedDetail?: string;
|
|
54
69
|
}
|
|
55
70
|
export interface ChangeSet {
|
|
56
71
|
env: string;
|
|
@@ -62,6 +77,10 @@ export interface ChangeSet {
|
|
|
62
77
|
* `create`/`update` are precise from declared-vs-live. `delete` is never
|
|
63
78
|
* emitted here — an undeclared live resource classifies as `adopt` until
|
|
64
79
|
* ownership is known.
|
|
80
|
+
*
|
|
81
|
+
* A declared entity the lexicon could not observe (`input.unobserved`, #1089)
|
|
82
|
+
* classifies as `unobserved` and nothing else: no `create` is ever synthesized
|
|
83
|
+
* from a read that did not happen.
|
|
65
84
|
*/
|
|
66
85
|
export declare function buildChangeSet(env: string, input: DiffLiveInput): ChangeSet;
|
|
67
86
|
/** Count entries per action. */
|
|
@@ -72,8 +91,10 @@ export declare function summarize(cs: ChangeSet): Record<ChangeAction, number>;
|
|
|
72
91
|
* GitLab renders an `artifacts:reports:terraform` artifact in the merge-request
|
|
73
92
|
* UI as "N to add, M to change, K to delete". The format is generic — any tool
|
|
74
93
|
* that emits this JSON gets the widget — and the chant plan maps onto it
|
|
75
|
-
* directly. Only the mutating actions count: `adopt` and `
|
|
76
|
-
* since the widget has no column for "live but undeclared"
|
|
94
|
+
* directly. Only the mutating actions count: `adopt`, `noop` and `unobserved`
|
|
95
|
+
* are excluded, since the widget has no column for "live but undeclared", "no
|
|
96
|
+
* change", or "could not look" (#1089). The widget is therefore a floor, not a
|
|
97
|
+
* complete plan: read the full change set when entities are unobserved.
|
|
77
98
|
*
|
|
78
99
|
* The widget label reads "Terraform" regardless of producer; that is GitLab's
|
|
79
100
|
* fixed string, not a claim chant makes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../../src/lifecycle/change-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAY,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../../src/lifecycle/change-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAY,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;AAE5F;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,kEAAkE;IAClE,QAAQ,EAAE;QACR,oCAAoC;QACpC,QAAQ,EAAE,OAAO,CAAC;QAClB,oCAAoC;QACpC,UAAU,EAAE,OAAO,CAAC;QACpB,qDAAqD;QACrD,IAAI,EAAE,OAAO,CAAC;QACd;;;;;WAKG;QACH,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,6CAA6C;IAC7C,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,oDAAoD;IACpD,SAAS,EAAE,SAAS,CAAC;IACrB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gGAAgG;IAChG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,CAgF3E;AAID,gCAAgC;AAChC,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAWrE;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,CAG5D;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CA0BrD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property-level live drift (#1014) — declared vs live vs accepted baseline.
|
|
3
|
+
*
|
|
4
|
+
* The thin diff (./live-diff.ts) compares whole entities on status, physical id
|
|
5
|
+
* and a few outputs. This compares their property trees, path by path, which is
|
|
6
|
+
* where a console edit actually shows up. Pure function; the reading happens in
|
|
7
|
+
* ./deep-observe.ts and the CLI.
|
|
8
|
+
*
|
|
9
|
+
* Three axes, and all three matter:
|
|
10
|
+
*
|
|
11
|
+
* - **declared** — the property tree chant synthesized, normalized with the
|
|
12
|
+
* lexicon's own hooks so it is in the same shape as the live tree.
|
|
13
|
+
* - **live** — what the provider returned, normalized with the same hooks.
|
|
14
|
+
* - **baseline** — the value somebody accepted (./observation-baseline.ts). A
|
|
15
|
+
* deviation whose live value matches the accepted value is not drift; one
|
|
16
|
+
* that has moved away from the accepted value is drift again, and the
|
|
17
|
+
* report shows all three so the reader can see what changed and from what.
|
|
18
|
+
*
|
|
19
|
+
* A path is skipped entirely when the declared value is
|
|
20
|
+
* {@link UNRESOLVED} — an unevaluated intrinsic (`Fn::Sub`, `Ref`) has no
|
|
21
|
+
* source-side value to compare, and reporting one as drift would light up every
|
|
22
|
+
* interpolated property forever.
|
|
23
|
+
*/
|
|
24
|
+
import { type DeepNormalizationHooks, type NormalizedDeepObservation } from "../deep-observation.js";
|
|
25
|
+
import type { UnobservedResource } from "./live-diff.js";
|
|
26
|
+
import { type BaselineLexicon } from "./observation-baseline.js";
|
|
27
|
+
/**
|
|
28
|
+
* How a property differs.
|
|
29
|
+
*
|
|
30
|
+
* - `changed` — declared and live both have the path, with different values.
|
|
31
|
+
* - `undeclared` — live has it, source never did. cdk-real-drift's whole reason
|
|
32
|
+
* to exist: the console-added property CloudFormation itself will not report.
|
|
33
|
+
* - `absent` — source declares it and the live tree does not carry it. Weaker
|
|
34
|
+
* than the other two: a provider that omits a property it considers unset is
|
|
35
|
+
* common, which is what the lexicon's pruning hook is for.
|
|
36
|
+
*/
|
|
37
|
+
export type PropertyDriftKind = "changed" | "undeclared" | "absent";
|
|
38
|
+
/** One property-level difference. */
|
|
39
|
+
export interface PropertyDrift {
|
|
40
|
+
/** Path within the normalized property tree (`Tags[0].Value`). */
|
|
41
|
+
path: string;
|
|
42
|
+
kind: PropertyDriftKind;
|
|
43
|
+
/** Value in source. Absent for `undeclared`. */
|
|
44
|
+
declared?: unknown;
|
|
45
|
+
/** Value in the cloud. Absent for `absent`. */
|
|
46
|
+
live?: unknown;
|
|
47
|
+
/**
|
|
48
|
+
* The accepted value from the baseline, when this path has one. Present on a
|
|
49
|
+
* reported drift too — that is the "accepted X, now Y" case, and hiding the
|
|
50
|
+
* accepted value there would lose the most useful column in the report.
|
|
51
|
+
*/
|
|
52
|
+
baseline?: unknown;
|
|
53
|
+
}
|
|
54
|
+
/** Property-level drift for one declared entity. */
|
|
55
|
+
export interface DeepEntityDrift {
|
|
56
|
+
name: string;
|
|
57
|
+
type: string;
|
|
58
|
+
changes: PropertyDrift[];
|
|
59
|
+
}
|
|
60
|
+
export interface DeepDiffResult {
|
|
61
|
+
/** Entities with at least one reportable property difference. Sorted by name. */
|
|
62
|
+
drifted: DeepEntityDrift[];
|
|
63
|
+
/**
|
|
64
|
+
* Differences suppressed by the baseline — reported separately rather than
|
|
65
|
+
* dropped, so `--json` consumers and `--update-baseline` can see what is
|
|
66
|
+
* being held back and the count never silently changes meaning.
|
|
67
|
+
*/
|
|
68
|
+
accepted: DeepEntityDrift[];
|
|
69
|
+
/** Entities whose property trees matched. Sorted. */
|
|
70
|
+
unchanged: string[];
|
|
71
|
+
/** Declared entities whose *properties* could not be read (#1089). Sorted. */
|
|
72
|
+
unobserved: UnobservedResource[];
|
|
73
|
+
/** Entities the deep reader returned that were never declared. Sorted. */
|
|
74
|
+
undeclaredEntities: string[];
|
|
75
|
+
}
|
|
76
|
+
/** A declared entity's property tree, already normalized with the lexicon's hooks. */
|
|
77
|
+
export interface DeclaredDeepEntity {
|
|
78
|
+
type: string;
|
|
79
|
+
properties: Record<string, unknown>;
|
|
80
|
+
}
|
|
81
|
+
export interface DiffDeepInput {
|
|
82
|
+
/** Normalized declared property trees, keyed by chant entity name. */
|
|
83
|
+
declared: Record<string, DeclaredDeepEntity>;
|
|
84
|
+
/** Normalized live observation, as returned by `observeResourcesDeep()`. */
|
|
85
|
+
live: NormalizedDeepObservation;
|
|
86
|
+
/** Accepted deviations for this lexicon. Omit for "nothing accepted". */
|
|
87
|
+
baseline?: BaselineLexicon;
|
|
88
|
+
/**
|
|
89
|
+
* The lexicon's hooks, so set-like arrays are addressed by key rather than by
|
|
90
|
+
* position (see `flattenDeepProperties`). Omit and paths are positional,
|
|
91
|
+
* which still diffs correctly but shifts every path after an inserted
|
|
92
|
+
* element.
|
|
93
|
+
*/
|
|
94
|
+
hooks?: DeepNormalizationHooks;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Compare declared and live property trees path by path, subtracting accepted
|
|
98
|
+
* deviations. Deterministic: every list is sorted.
|
|
99
|
+
*/
|
|
100
|
+
export declare function diffDeep(input: DiffDeepInput): DeepDiffResult;
|
|
101
|
+
/** Total reported property differences across every entity. */
|
|
102
|
+
export declare function countPropertyDrift(result: DeepDiffResult): number;
|
|
103
|
+
//# sourceMappingURL=deep-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-diff.d.ts","sourceRoot":"","sources":["../../src/lifecycle/deep-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEjF;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEpE,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,oDAAoD;AACpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,qDAAqD;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,8EAA8E;IAC9E,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,0EAA0E;IAC1E,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,sFAAsF;AACtF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC7C,4EAA4E;IAC5E,IAAI,EAAE,yBAAyB,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA8F7D;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep observation orchestration (#1014) — call one lexicon's
|
|
3
|
+
* `observeResourcesDeep()`, put the declared trees in the same shape, and diff.
|
|
4
|
+
*
|
|
5
|
+
* The sibling of ./observe.ts on the thin path, and it inherits that path's
|
|
6
|
+
* rules: a reader that throws does not vanish, it reports every declared entity
|
|
7
|
+
* NOT-OBSERVED with `read-failed` (#1089); a multi-stack read merges with
|
|
8
|
+
* present > not-observed > absent. A deep read that fails is a hole with a
|
|
9
|
+
* reason, never a thin-but-clean answer.
|
|
10
|
+
*
|
|
11
|
+
* The normalization is applied here, on both sides, with the lexicon's own
|
|
12
|
+
* hooks. The reader already normalized what it returned — that is the contract
|
|
13
|
+
* — but only core can normalize the *declared* tree, and only core knows which
|
|
14
|
+
* paths exist on the other side, which is what
|
|
15
|
+
* {@link import("../deep-observation.js").DeepNode.counterpart} needs for default
|
|
16
|
+
* subtraction. Re-running the pass over an already-normalized live tree is
|
|
17
|
+
* idempotent for every hook that does not consult `counterpart`.
|
|
18
|
+
*/
|
|
19
|
+
import type { ObservationLexicon } from "../lexicon.js";
|
|
20
|
+
import { type DeepNormalizationHooks, type NormalizedDeepObservation } from "../deep-observation.js";
|
|
21
|
+
import { type DeepDiffResult } from "./deep-diff.js";
|
|
22
|
+
import type { BaselineLexicon } from "./observation-baseline.js";
|
|
23
|
+
/** Declared entities for one lexicon, in the shape the observe paths pass around. */
|
|
24
|
+
export type DeclaredEntities = Map<string, {
|
|
25
|
+
entityType: string;
|
|
26
|
+
props: Record<string, unknown>;
|
|
27
|
+
}>;
|
|
28
|
+
export interface DeepObserveOptions {
|
|
29
|
+
environment: string;
|
|
30
|
+
buildOutput: string;
|
|
31
|
+
entities: DeclaredEntities;
|
|
32
|
+
/** Deployed stack for a multi-stack project (#932). */
|
|
33
|
+
stack?: string;
|
|
34
|
+
/** Component projects deploy one stack per component; read them all and merge. */
|
|
35
|
+
componentStacks?: string[];
|
|
36
|
+
owned?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Merge several deep observations of the same lexicon (the multi-stack read).
|
|
40
|
+
* Precedence matches the thin contract: present > not-observed > absent.
|
|
41
|
+
*/
|
|
42
|
+
export declare function mergeDeepObservations(parts: Iterable<NormalizedDeepObservation>): NormalizedDeepObservation;
|
|
43
|
+
/**
|
|
44
|
+
* Read one lexicon's live property trees. Never throws: a thrown reader becomes
|
|
45
|
+
* a NOT-OBSERVED verdict for every declared entity, with the error as the
|
|
46
|
+
* detail, so the caller sees a hole rather than an empty tree that reads as
|
|
47
|
+
* "no properties drifted".
|
|
48
|
+
*/
|
|
49
|
+
export declare function observeDeep(plugin: ObservationLexicon, opts: DeepObserveOptions): Promise<NormalizedDeepObservation>;
|
|
50
|
+
/**
|
|
51
|
+
* Normalize both sides into the same shape, then diff.
|
|
52
|
+
*
|
|
53
|
+
* Split out from {@link deepDiffForLexicon} so the pure half is testable
|
|
54
|
+
* without a plugin: given declared entities, a live observation and a baseline,
|
|
55
|
+
* this is a deterministic function.
|
|
56
|
+
*/
|
|
57
|
+
export declare function diffDeepObservation(entities: DeclaredEntities, live: NormalizedDeepObservation, hooks?: DeepNormalizationHooks, baseline?: BaselineLexicon): DeepDiffResult;
|
|
58
|
+
/** Read one lexicon deeply and diff it against source and the accepted baseline. */
|
|
59
|
+
export declare function deepDiffForLexicon(plugin: ObservationLexicon, opts: DeepObserveOptions & {
|
|
60
|
+
baseline?: BaselineLexicon;
|
|
61
|
+
}): Promise<DeepDiffResult>;
|
|
62
|
+
//# sourceMappingURL=deep-observe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-observe.d.ts","sourceRoot":"","sources":["../../src/lifecycle/deep-observe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAIL,KAAK,sBAAsB,EAE3B,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qFAAqF;AACrF,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AAEnG,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GACzC,yBAAyB,CAS3B;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,yBAAyB,CAAC,CA8BpC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,yBAAyB,EAC/B,KAAK,CAAC,EAAE,sBAAsB,EAC9B,QAAQ,CAAC,EAAE,eAAe,GACzB,cAAc,CA+ChB;AAED,oFAAoF;AACpF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,kBAAkB,GAAG;IAAE,QAAQ,CAAC,EAAE,eAAe,CAAA;CAAE,GACxD,OAAO,CAAC,cAAc,CAAC,CAGzB"}
|
|
@@ -3,6 +3,9 @@ export * from "./git.js";
|
|
|
3
3
|
export * from "./digest.js";
|
|
4
4
|
export * from "./snapshot.js";
|
|
5
5
|
export * from "./live-diff.js";
|
|
6
|
+
export * from "./deep-diff.js";
|
|
7
|
+
export * from "./deep-observe.js";
|
|
8
|
+
export * from "./observation-baseline.js";
|
|
6
9
|
export * from "./change-set.js";
|
|
7
10
|
export * from "./affected.js";
|
|
8
11
|
export * from "./release-ledger.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* outside chant's entity model)
|
|
14
14
|
*/
|
|
15
15
|
import type { ResourceMetadata, ArtifactMetadata } from "../lexicon.js";
|
|
16
|
+
import type { UnobservedEntity, UnobservedReason } from "../observation.js";
|
|
16
17
|
export interface AttributeChange {
|
|
17
18
|
/** Attribute path (e.g. "status", "physicalId", "attributes.tags.env"). */
|
|
18
19
|
path: string;
|
|
@@ -24,8 +25,19 @@ export interface ResourceDrift {
|
|
|
24
25
|
type: string;
|
|
25
26
|
changes: AttributeChange[];
|
|
26
27
|
}
|
|
28
|
+
/** A declared entity the lexicon could not observe, as reported by the diff (#1089). */
|
|
29
|
+
export interface UnobservedResource {
|
|
30
|
+
name: string;
|
|
31
|
+
type?: string;
|
|
32
|
+
reason: UnobservedReason;
|
|
33
|
+
detail?: string;
|
|
34
|
+
}
|
|
27
35
|
export interface LiveDiffResult {
|
|
28
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Declared in current build, and the provider reported it absent. Entities
|
|
38
|
+
* the lexicon could not observe are NOT here — they are in `unobserved`
|
|
39
|
+
* (#1089), so "missing" keeps meaning "confirmed not there".
|
|
40
|
+
*/
|
|
29
41
|
missing: string[];
|
|
30
42
|
/** Observed in cloud right now, but not declared. */
|
|
31
43
|
orphan: string[];
|
|
@@ -37,6 +49,12 @@ export interface LiveDiffResult {
|
|
|
37
49
|
driftedSinceSnapshot: ResourceDrift[];
|
|
38
50
|
/** Observed both then and now; metadata identical. */
|
|
39
51
|
unchanged: string[];
|
|
52
|
+
/**
|
|
53
|
+
* Declared, and the lexicon could not look (#1089) — no reader for the kind,
|
|
54
|
+
* the read failed, no credentials, no binding. Not drift, not absence: a hole
|
|
55
|
+
* in the observation. Sorted by name.
|
|
56
|
+
*/
|
|
57
|
+
unobserved: UnobservedResource[];
|
|
40
58
|
}
|
|
41
59
|
export interface DiffLiveInput {
|
|
42
60
|
/** Entity names from the current build. */
|
|
@@ -45,6 +63,12 @@ export interface DiffLiveInput {
|
|
|
45
63
|
observedNow: Record<string, ResourceMetadata>;
|
|
46
64
|
/** Resources captured by the previous snapshot, if any. */
|
|
47
65
|
observedThen: Record<string, ResourceMetadata> | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Declared entities `describeResources()` reported as NOT-OBSERVED (#1089),
|
|
68
|
+
* keyed by entity name. Absent/empty means every declared entity was looked
|
|
69
|
+
* at, so absence from `observedNow` is a confirmed absence.
|
|
70
|
+
*/
|
|
71
|
+
unobserved?: Record<string, UnobservedEntity>;
|
|
48
72
|
}
|
|
49
73
|
/** The delta between two saved snapshots (#822): a two-way observed diff. */
|
|
50
74
|
export interface SnapshotDiffResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-diff.d.ts","sourceRoot":"","sources":["../../src/lifecycle/live-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"live-diff.d.ts","sourceRoot":"","sources":["../../src/lifecycle/live-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The accepted-observation baseline (#1014) — a committed record of deviations
|
|
3
|
+
* somebody looked at and accepted, so they stop re-alerting.
|
|
4
|
+
*
|
|
5
|
+
* Deep observation reports every property that differs between source and
|
|
6
|
+
* cloud, including properties nobody ever declared. Some of those are real
|
|
7
|
+
* findings. Many are permanent facts of the account — a platform team's
|
|
8
|
+
* mandatory tag, a bucket setting an org policy flips on, a role an operator
|
|
9
|
+
* attached by hand and everyone agreed to keep. Without somewhere to record
|
|
10
|
+
* "yes, we know, leave it", a deep diff is a report nobody reads twice.
|
|
11
|
+
*
|
|
12
|
+
* The model is cdk-real-drift's `.cdkrd`: a snapshot of accepted *undeclared*
|
|
13
|
+
* values that the diff subtracts. Accepting is an explicit act with a git
|
|
14
|
+
* commit behind it, and the acceptance is value-bound — accept
|
|
15
|
+
* `VersioningConfiguration.Status = Enabled` and a later change to `Suspended`
|
|
16
|
+
* is drift again, because what was accepted was that value, not that path.
|
|
17
|
+
*
|
|
18
|
+
* ## What this is not
|
|
19
|
+
*
|
|
20
|
+
* Not state. The baseline never tells a deploy what to do and is never read on
|
|
21
|
+
* the write path; deleting it costs you noise suppression and nothing else.
|
|
22
|
+
* Which is also why it is safe for it to be incomplete or stale.
|
|
23
|
+
*
|
|
24
|
+
* ## Where it lives
|
|
25
|
+
*
|
|
26
|
+
* `<environment>/observation-baseline.json` on the `chant/lifecycle` orphan
|
|
27
|
+
* branch — the epic's named candidate home, and the same storage the snapshots
|
|
28
|
+
* (`<env>/<lexicon>.json`), the release ledger (`<env>/releases.jsonl`) and the
|
|
29
|
+
* build archive (`_builds/<digest>.json`) already use, through the same
|
|
30
|
+
* `writeBlobToPath`/`readBlobFromPath` plumbing. One env-keyed namespace for
|
|
31
|
+
* everything chant records *about* an environment rather than *for* it.
|
|
32
|
+
*
|
|
33
|
+
* The parse/serialize/update half below is pure and storage-free, so the
|
|
34
|
+
* decision is one function call deep if a repo-committed file (`.chant/`) turns
|
|
35
|
+
* out to be the better review surface.
|
|
36
|
+
*/
|
|
37
|
+
/** The file name under `<environment>/` on the orphan branch. */
|
|
38
|
+
export declare const OBSERVATION_BASELINE_FILE = "observation-baseline.json";
|
|
39
|
+
/** One deviation somebody accepted, bound to the value they accepted. */
|
|
40
|
+
export interface AcceptedDeviation {
|
|
41
|
+
/** Property path within the entity's normalized tree (`Tags[0].Value`, `Policy.Statement[1].Effect`). */
|
|
42
|
+
path: string;
|
|
43
|
+
/** The live value at the moment of acceptance. A different live value later is drift again. */
|
|
44
|
+
value: unknown;
|
|
45
|
+
/** Free-text justification, written by whoever accepted it. */
|
|
46
|
+
note?: string;
|
|
47
|
+
/** ISO timestamp of acceptance. */
|
|
48
|
+
recordedAt?: string;
|
|
49
|
+
}
|
|
50
|
+
/** Every accepted deviation for one declared entity. */
|
|
51
|
+
export interface BaselineEntity {
|
|
52
|
+
/** Entity type at acceptance time, for readability in the committed file. */
|
|
53
|
+
type?: string;
|
|
54
|
+
accepted: AcceptedDeviation[];
|
|
55
|
+
}
|
|
56
|
+
/** Accepted deviations for one lexicon, keyed by chant entity name. */
|
|
57
|
+
export type BaselineLexicon = Record<string, BaselineEntity>;
|
|
58
|
+
/** The committed baseline document for one environment. */
|
|
59
|
+
export interface ObservationBaseline {
|
|
60
|
+
/** Discriminant + wire version. */
|
|
61
|
+
readonly baseline: "v1";
|
|
62
|
+
environment: string;
|
|
63
|
+
/** ISO timestamp of the last `--update-baseline`. */
|
|
64
|
+
updated?: string;
|
|
65
|
+
/** lexicon → entity → accepted deviations. */
|
|
66
|
+
lexicons: Record<string, BaselineLexicon>;
|
|
67
|
+
}
|
|
68
|
+
/** An environment with nothing accepted yet. */
|
|
69
|
+
export declare function emptyBaseline(environment: string): ObservationBaseline;
|
|
70
|
+
/** True when `value` is a well-formed {@link ObservationBaseline}. */
|
|
71
|
+
export declare function isObservationBaseline(value: unknown): value is ObservationBaseline;
|
|
72
|
+
/**
|
|
73
|
+
* Parse a baseline document. Returns `null` for unparseable or unrecognized
|
|
74
|
+
* content — a corrupt baseline degrades to "nothing is accepted", which is
|
|
75
|
+
* noisy but never wrong. Silently treating garbage as a baseline would
|
|
76
|
+
* suppress real drift.
|
|
77
|
+
*/
|
|
78
|
+
export declare function parseBaseline(content: string | null | undefined): ObservationBaseline | null;
|
|
79
|
+
/** Deterministic on-disk form: sorted keys, trailing newline, reviewable diff. */
|
|
80
|
+
export declare function serializeBaseline(baseline: ObservationBaseline): string;
|
|
81
|
+
/** The accepted deviations for one lexicon, or an empty map. */
|
|
82
|
+
export declare function baselineForLexicon(baseline: ObservationBaseline | null | undefined, lexicon: string): BaselineLexicon;
|
|
83
|
+
/** Look up one accepted deviation by entity + path. */
|
|
84
|
+
export declare function acceptedDeviation(lexiconBaseline: BaselineLexicon, entity: string, path: string): AcceptedDeviation | undefined;
|
|
85
|
+
/** One deviation to record as accepted. */
|
|
86
|
+
export interface DeviationToAccept {
|
|
87
|
+
entity: string;
|
|
88
|
+
type?: string;
|
|
89
|
+
path: string;
|
|
90
|
+
/** The live value being accepted. */
|
|
91
|
+
value: unknown;
|
|
92
|
+
note?: string;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Record deviations as accepted, returning a new baseline (the input is not
|
|
96
|
+
* mutated). An existing acceptance for the same entity+path is replaced — that
|
|
97
|
+
* is how re-accepting after a deliberate change works, and it keeps the file
|
|
98
|
+
* from growing a second entry for every value a path has ever held.
|
|
99
|
+
*/
|
|
100
|
+
export declare function acceptDeviations(baseline: ObservationBaseline, lexicon: string, deviations: readonly DeviationToAccept[], opts?: {
|
|
101
|
+
now?: string;
|
|
102
|
+
}): ObservationBaseline;
|
|
103
|
+
/** Total accepted deviations across every lexicon — for the "N accepted" line. */
|
|
104
|
+
export declare function countAccepted(baseline: ObservationBaseline | null | undefined): number;
|
|
105
|
+
/**
|
|
106
|
+
* Read the accepted baseline for an environment. Returns `null` when the branch,
|
|
107
|
+
* the environment, or the file does not exist — every one of which means
|
|
108
|
+
* "nothing accepted yet", the normal state before anyone runs
|
|
109
|
+
* `--update-baseline`.
|
|
110
|
+
*/
|
|
111
|
+
export declare function readObservationBaseline(environment: string, opts?: {
|
|
112
|
+
cwd?: string;
|
|
113
|
+
}): Promise<ObservationBaseline | null>;
|
|
114
|
+
/** Write the accepted baseline to the orphan branch. Returns the new commit SHA. */
|
|
115
|
+
export declare function writeObservationBaseline(baseline: ObservationBaseline, opts?: {
|
|
116
|
+
cwd?: string;
|
|
117
|
+
}): Promise<string>;
|
|
118
|
+
//# sourceMappingURL=observation-baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observation-baseline.d.ts","sourceRoot":"","sources":["../../src/lifecycle/observation-baseline.ts"],"names":[],"mappings":"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"}
|