@descryy/core 0.3.0 → 0.5.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/budget/reply.d.ts +11 -46
- package/dist/budget/reply.d.ts.map +1 -1
- package/dist/budget/reply.js +10 -39
- package/dist/budget/reply.js.map +1 -1
- package/dist/budget/size.d.ts +2 -21
- package/dist/budget/size.d.ts.map +1 -1
- package/dist/budget/size.js +3 -24
- package/dist/budget/size.js.map +1 -1
- package/dist/capabilities/preconditions.d.ts +7 -68
- package/dist/capabilities/preconditions.d.ts.map +1 -1
- package/dist/capabilities/preconditions.js +6 -57
- package/dist/capabilities/preconditions.js.map +1 -1
- package/dist/contracts/engine.d.ts +26 -12
- package/dist/contracts/engine.d.ts.map +1 -1
- package/dist/contracts/engine.js +28 -11
- package/dist/contracts/engine.js.map +1 -1
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/orphans.d.ts +28 -77
- package/dist/contracts/orphans.d.ts.map +1 -1
- package/dist/contracts/orphans.js +124 -94
- package/dist/contracts/orphans.js.map +1 -1
- package/dist/contracts/paths.d.ts +4 -114
- package/dist/contracts/paths.d.ts.map +1 -1
- package/dist/contracts/paths.js +7 -140
- package/dist/contracts/paths.js.map +1 -1
- package/dist/contracts/shapes.d.ts +13 -66
- package/dist/contracts/shapes.d.ts.map +1 -1
- package/dist/contracts/shapes.js +20 -91
- package/dist/contracts/shapes.js.map +1 -1
- package/dist/governance/budget.d.ts +12 -48
- package/dist/governance/budget.d.ts.map +1 -1
- package/dist/governance/budget.js +12 -48
- package/dist/governance/budget.js.map +1 -1
- package/dist/governance/candidate-boundary.d.ts +4 -32
- package/dist/governance/candidate-boundary.d.ts.map +1 -1
- package/dist/governance/candidate-boundary.js +4 -32
- package/dist/governance/candidate-boundary.js.map +1 -1
- package/dist/governance/escalation.d.ts +7 -45
- package/dist/governance/escalation.d.ts.map +1 -1
- package/dist/governance/escalation.js +7 -45
- package/dist/governance/escalation.js.map +1 -1
- package/dist/governance/fact-boundary.d.ts +7 -49
- package/dist/governance/fact-boundary.d.ts.map +1 -1
- package/dist/governance/fact-boundary.js +5 -43
- package/dist/governance/fact-boundary.js.map +1 -1
- package/dist/governance/finding-funnel.d.ts +11 -72
- package/dist/governance/finding-funnel.d.ts.map +1 -1
- package/dist/governance/finding-funnel.js +9 -68
- package/dist/governance/finding-funnel.js.map +1 -1
- package/dist/graph/build.d.ts +13 -75
- package/dist/graph/build.d.ts.map +1 -1
- package/dist/graph/build.js +0 -0
- package/dist/graph/build.js.map +1 -1
- package/dist/graph/cross-language.d.ts +4 -43
- package/dist/graph/cross-language.d.ts.map +1 -1
- package/dist/graph/cross-language.js +9 -77
- package/dist/graph/cross-language.js.map +1 -1
- package/dist/graph/index.d.ts +1 -1
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/merge.d.ts +8 -76
- package/dist/graph/merge.d.ts.map +1 -1
- package/dist/graph/merge.js +27 -77
- package/dist/graph/merge.js.map +1 -1
- package/dist/graph/observed-tests.d.ts +7 -68
- package/dist/graph/observed-tests.d.ts.map +1 -1
- package/dist/graph/observed-tests.js +5 -60
- package/dist/graph/observed-tests.js.map +1 -1
- package/dist/graph/persist.d.ts +2 -25
- package/dist/graph/persist.d.ts.map +1 -1
- package/dist/graph/persist.js +2 -25
- package/dist/graph/persist.js.map +1 -1
- package/dist/graph/runtime-confirmation.d.ts +14 -91
- package/dist/graph/runtime-confirmation.d.ts.map +1 -1
- package/dist/graph/runtime-confirmation.js +19 -103
- package/dist/graph/runtime-confirmation.js.map +1 -1
- package/dist/ledger/mint.d.ts +9 -43
- package/dist/ledger/mint.d.ts.map +1 -1
- package/dist/ledger/mint.js +15 -65
- package/dist/ledger/mint.js.map +1 -1
- package/dist/ledger/resolve.d.ts +13 -81
- package/dist/ledger/resolve.d.ts.map +1 -1
- package/dist/ledger/resolve.js +13 -76
- package/dist/ledger/resolve.js.map +1 -1
- package/dist/multipr/fingerprint.d.ts +5 -46
- package/dist/multipr/fingerprint.d.ts.map +1 -1
- package/dist/multipr/fingerprint.js +22 -74
- package/dist/multipr/fingerprint.js.map +1 -1
- package/dist/multipr/hidden-dependency.d.ts +13 -73
- package/dist/multipr/hidden-dependency.d.ts.map +1 -1
- package/dist/multipr/hidden-dependency.js +12 -63
- package/dist/multipr/hidden-dependency.js.map +1 -1
- package/dist/multipr/mechanical.d.ts +25 -160
- package/dist/multipr/mechanical.d.ts.map +1 -1
- package/dist/multipr/mechanical.js +21 -137
- package/dist/multipr/mechanical.js.map +1 -1
- package/dist/multipr/migration-heads.d.ts +18 -105
- package/dist/multipr/migration-heads.d.ts.map +1 -1
- package/dist/multipr/migration-heads.js +15 -84
- package/dist/multipr/migration-heads.js.map +1 -1
- package/dist/multipr/overlap.d.ts +16 -94
- package/dist/multipr/overlap.d.ts.map +1 -1
- package/dist/multipr/overlap.js +25 -105
- package/dist/multipr/overlap.js.map +1 -1
- package/dist/multipr/scope-store.d.ts +15 -80
- package/dist/multipr/scope-store.d.ts.map +1 -1
- package/dist/multipr/scope-store.js +17 -87
- package/dist/multipr/scope-store.js.map +1 -1
- package/dist/multipr/superseded.d.ts +10 -95
- package/dist/multipr/superseded.d.ts.map +1 -1
- package/dist/multipr/superseded.js +7 -60
- package/dist/multipr/superseded.js.map +1 -1
- package/dist/query/confirmed-facts.d.ts +12 -58
- package/dist/query/confirmed-facts.d.ts.map +1 -1
- package/dist/query/confirmed-facts.js +8 -47
- package/dist/query/confirmed-facts.js.map +1 -1
- package/dist/query/declared-value-closure.d.ts +13 -104
- package/dist/query/declared-value-closure.d.ts.map +1 -1
- package/dist/query/declared-value-closure.js +15 -104
- package/dist/query/declared-value-closure.js.map +1 -1
- package/dist/query/memory.d.ts +5 -9
- package/dist/query/memory.d.ts.map +1 -1
- package/dist/query/memory.js +31 -15
- package/dist/query/memory.js.map +1 -1
- package/dist/query/prominence.d.ts +6 -55
- package/dist/query/prominence.d.ts.map +1 -1
- package/dist/query/prominence.js +6 -55
- package/dist/query/prominence.js.map +1 -1
- package/dist/query/provider.d.ts +28 -81
- package/dist/query/provider.d.ts.map +1 -1
- package/dist/query/provider.js +8 -29
- package/dist/query/provider.js.map +1 -1
- package/dist/query/queries.d.ts +15 -65
- package/dist/query/queries.d.ts.map +1 -1
- package/dist/query/queries.js +43 -100
- package/dist/query/queries.js.map +1 -1
- package/dist/query/refusal-fetch.d.ts +8 -85
- package/dist/query/refusal-fetch.d.ts.map +1 -1
- package/dist/query/refusal-fetch.js +11 -93
- package/dist/query/refusal-fetch.js.map +1 -1
- package/dist/query/refusal-questions.d.ts +17 -92
- package/dist/query/refusal-questions.d.ts.map +1 -1
- package/dist/query/refusal-questions.js +14 -78
- package/dist/query/refusal-questions.js.map +1 -1
- package/dist/query/resolution-floor.d.ts +3 -23
- package/dist/query/resolution-floor.d.ts.map +1 -1
- package/dist/query/resolution-floor.js +3 -23
- package/dist/query/resolution-floor.js.map +1 -1
- package/dist/query/root-cause-score.d.ts +11 -161
- package/dist/query/root-cause-score.d.ts.map +1 -1
- package/dist/query/root-cause-score.js +6 -137
- package/dist/query/root-cause-score.js.map +1 -1
- package/dist/query/row-closure-picture.d.ts +5 -67
- package/dist/query/row-closure-picture.d.ts.map +1 -1
- package/dist/query/row-closure-picture.js +6 -67
- package/dist/query/row-closure-picture.js.map +1 -1
- package/dist/query/similar-incidents.d.ts +6 -41
- package/dist/query/similar-incidents.d.ts.map +1 -1
- package/dist/query/similar-incidents.js +15 -69
- package/dist/query/similar-incidents.js.map +1 -1
- package/dist/query/sqlite.d.ts +3 -7
- package/dist/query/sqlite.d.ts.map +1 -1
- package/dist/query/sqlite.js +13 -16
- package/dist/query/sqlite.js.map +1 -1
- package/dist/query/test-coverage.d.ts +5 -45
- package/dist/query/test-coverage.d.ts.map +1 -1
- package/dist/query/test-coverage.js +10 -53
- package/dist/query/test-coverage.js.map +1 -1
- package/dist/query/traverse.d.ts +22 -126
- package/dist/query/traverse.d.ts.map +1 -1
- package/dist/query/traverse.js +0 -0
- package/dist/query/traverse.js.map +1 -1
- package/dist/query/unresolved.d.ts +19 -164
- package/dist/query/unresolved.d.ts.map +1 -1
- package/dist/query/unresolved.js +11 -138
- package/dist/query/unresolved.js.map +1 -1
- package/dist/query/verification-status.d.ts +12 -109
- package/dist/query/verification-status.d.ts.map +1 -1
- package/dist/query/verification-status.js +9 -99
- package/dist/query/verification-status.js.map +1 -1
- package/dist/recording/migrate.d.ts +4 -10
- package/dist/recording/migrate.d.ts.map +1 -1
- package/dist/recording/migrate.js +4 -10
- package/dist/recording/migrate.js.map +1 -1
- package/dist/recording/reader.d.ts +2 -7
- package/dist/recording/reader.d.ts.map +1 -1
- package/dist/recording/reader.js +2 -7
- package/dist/recording/reader.js.map +1 -1
- package/dist/recording/redact.d.ts +6 -57
- package/dist/recording/redact.d.ts.map +1 -1
- package/dist/recording/redact.js +8 -64
- package/dist/recording/redact.js.map +1 -1
- package/dist/recording/schema.d.ts +3 -38
- package/dist/recording/schema.d.ts.map +1 -1
- package/dist/recording/schema.js +3 -38
- package/dist/recording/schema.js.map +1 -1
- package/dist/recording/writer.d.ts +11 -74
- package/dist/recording/writer.d.ts.map +1 -1
- package/dist/recording/writer.js +3 -43
- package/dist/recording/writer.js.map +1 -1
- package/dist/scoping/fanout.d.ts +6 -68
- package/dist/scoping/fanout.d.ts.map +1 -1
- package/dist/scoping/fanout.js +6 -68
- package/dist/scoping/fanout.js.map +1 -1
- package/dist/scoping/score.d.ts +20 -70
- package/dist/scoping/score.d.ts.map +1 -1
- package/dist/scoping/score.js +20 -70
- package/dist/scoping/score.js.map +1 -1
- package/dist/scoping/tiers.d.ts +4 -16
- package/dist/scoping/tiers.d.ts.map +1 -1
- package/dist/scoping/tiers.js +4 -16
- package/dist/scoping/tiers.js.map +1 -1
- package/dist/scoping/traverse.d.ts +3 -25
- package/dist/scoping/traverse.d.ts.map +1 -1
- package/dist/scoping/traverse.js +14 -49
- package/dist/scoping/traverse.js.map +1 -1
- package/dist/scoping/weights.d.ts +10 -74
- package/dist/scoping/weights.d.ts.map +1 -1
- package/dist/scoping/weights.js +14 -86
- package/dist/scoping/weights.js.map +1 -1
- package/dist/sources/confirmed/incidents.d.ts +5 -35
- package/dist/sources/confirmed/incidents.d.ts.map +1 -1
- package/dist/sources/confirmed/incidents.js +14 -48
- package/dist/sources/confirmed/incidents.js.map +1 -1
- package/dist/sources/git/diff.d.ts +71 -65
- package/dist/sources/git/diff.d.ts.map +1 -1
- package/dist/sources/git/diff.js +136 -83
- package/dist/sources/git/diff.js.map +1 -1
- package/dist/sources/git/env.d.ts +7 -0
- package/dist/sources/git/env.d.ts.map +1 -1
- package/dist/sources/git/env.js +10 -11
- package/dist/sources/git/env.js.map +1 -1
- package/dist/sources/git/history.d.ts +64 -84
- package/dist/sources/git/history.d.ts.map +1 -1
- package/dist/sources/git/history.js +141 -112
- package/dist/sources/git/history.js.map +1 -1
- package/dist/sources/git/incidents.d.ts +13 -75
- package/dist/sources/git/incidents.d.ts.map +1 -1
- package/dist/sources/git/incidents.js +21 -91
- package/dist/sources/git/incidents.js.map +1 -1
- package/dist/sources/git/index.d.ts +5 -3
- package/dist/sources/git/index.d.ts.map +1 -1
- package/dist/sources/git/index.js +3 -2
- package/dist/sources/git/index.js.map +1 -1
- package/dist/sources/git/source.d.ts +9 -79
- package/dist/sources/git/source.d.ts.map +1 -1
- package/dist/sources/git/source.js +0 -0
- package/dist/sources/git/source.js.map +1 -1
- package/dist/sources/migrations/across-change.d.ts +94 -0
- package/dist/sources/migrations/across-change.d.ts.map +1 -0
- package/dist/sources/migrations/across-change.js +278 -0
- package/dist/sources/migrations/across-change.js.map +1 -0
- package/dist/sources/migrations/dialects.d.ts +20 -36
- package/dist/sources/migrations/dialects.d.ts.map +1 -1
- package/dist/sources/migrations/dialects.js +11 -36
- package/dist/sources/migrations/dialects.js.map +1 -1
- package/dist/sources/migrations/index.d.ts +3 -1
- package/dist/sources/migrations/index.d.ts.map +1 -1
- package/dist/sources/migrations/index.js +2 -1
- package/dist/sources/migrations/index.js.map +1 -1
- package/dist/sources/migrations/read.d.ts +14 -79
- package/dist/sources/migrations/read.d.ts.map +1 -1
- package/dist/sources/migrations/read.js +14 -89
- package/dist/sources/migrations/read.js.map +1 -1
- package/dist/sources/workspace/workspace.d.ts +6 -42
- package/dist/sources/workspace/workspace.d.ts.map +1 -1
- package/dist/sources/workspace/workspace.js +10 -53
- package/dist/sources/workspace/workspace.js.map +1 -1
- package/dist/store/driver/driver.d.ts +9 -38
- package/dist/store/driver/driver.d.ts.map +1 -1
- package/dist/store/driver/driver.js +4 -22
- package/dist/store/driver/driver.js.map +1 -1
- package/dist/store/driver/node-sqlite.d.ts +3 -12
- package/dist/store/driver/node-sqlite.d.ts.map +1 -1
- package/dist/store/driver/node-sqlite.js +4 -18
- package/dist/store/driver/node-sqlite.js.map +1 -1
- package/dist/store/index.d.ts +2 -7
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +4 -10
- package/dist/store/index.js.map +1 -1
- package/dist/store/migrate.d.ts +14 -50
- package/dist/store/migrate.d.ts.map +1 -1
- package/dist/store/migrate.js +15 -52
- package/dist/store/migrate.js.map +1 -1
- package/dist/store/reader.d.ts +19 -84
- package/dist/store/reader.d.ts.map +1 -1
- package/dist/store/reader.js +25 -92
- package/dist/store/reader.js.map +1 -1
- package/dist/store/schema.d.ts +14 -76
- package/dist/store/schema.d.ts.map +1 -1
- package/dist/store/schema.js +14 -76
- package/dist/store/schema.js.map +1 -1
- package/dist/store/writer.d.ts +14 -88
- package/dist/store/writer.d.ts.map +1 -1
- package/dist/store/writer.js +29 -123
- package/dist/store/writer.js.map +1 -1
- package/dist/tiers/certify.d.ts +46 -281
- package/dist/tiers/certify.d.ts.map +1 -1
- package/dist/tiers/certify.js +46 -226
- package/dist/tiers/certify.js.map +1 -1
- package/dist/tiers/ladder.d.ts +7 -51
- package/dist/tiers/ladder.d.ts.map +1 -1
- package/dist/tiers/ladder.js +13 -89
- package/dist/tiers/ladder.js.map +1 -1
- package/dist/validation/attributes.d.ts +47 -0
- package/dist/validation/attributes.d.ts.map +1 -0
- package/dist/validation/attributes.js +130 -0
- package/dist/validation/attributes.js.map +1 -0
- package/dist/validation/config-graph.d.ts +7 -56
- package/dist/validation/config-graph.d.ts.map +1 -1
- package/dist/validation/config-graph.js +15 -61
- package/dist/validation/config-graph.js.map +1 -1
- package/dist/validation/env.d.ts +53 -2
- package/dist/validation/env.d.ts.map +1 -1
- package/dist/validation/env.js +99 -4
- package/dist/validation/env.js.map +1 -1
- package/dist/validation/index.d.ts +5 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +3 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/join-substitution.d.ts +22 -120
- package/dist/validation/join-substitution.d.ts.map +1 -1
- package/dist/validation/join-substitution.js +13 -90
- package/dist/validation/join-substitution.js.map +1 -1
- package/dist/validation/migration-integrity.d.ts +72 -0
- package/dist/validation/migration-integrity.d.ts.map +1 -0
- package/dist/validation/migration-integrity.js +238 -0
- package/dist/validation/migration-integrity.js.map +1 -0
- package/dist/validation/migrations.d.ts +23 -88
- package/dist/validation/migrations.d.ts.map +1 -1
- package/dist/validation/migrations.js +20 -79
- package/dist/validation/migrations.js.map +1 -1
- package/dist/validation/nodes.d.ts +3 -1
- package/dist/validation/nodes.d.ts.map +1 -1
- package/dist/validation/nodes.js +3 -1
- package/dist/validation/nodes.js.map +1 -1
- package/dist/validation/rollback.d.ts +10 -73
- package/dist/validation/rollback.d.ts.map +1 -1
- package/dist/validation/rollback.js +23 -81
- package/dist/validation/rollback.js.map +1 -1
- package/dist/validation/route-drift.d.ts +9 -62
- package/dist/validation/route-drift.d.ts.map +1 -1
- package/dist/validation/route-drift.js +7 -52
- package/dist/validation/route-drift.js.map +1 -1
- package/dist/validation/sources.d.ts +16 -94
- package/dist/validation/sources.d.ts.map +1 -1
- package/dist/validation/sources.js +51 -147
- package/dist/validation/sources.js.map +1 -1
- package/dist/worker/pool.d.ts +6 -45
- package/dist/worker/pool.d.ts.map +1 -1
- package/dist/worker/pool.js +5 -42
- package/dist/worker/pool.js.map +1 -1
- package/dist/worker/protocol.d.ts +7 -20
- package/dist/worker/protocol.d.ts.map +1 -1
- package/dist/worker/protocol.js +3 -10
- package/dist/worker/protocol.js.map +1 -1
- package/dist/worker/traversal.worker.d.ts +2 -21
- package/dist/worker/traversal.worker.d.ts.map +1 -1
- package/dist/worker/traversal.worker.js +4 -23
- package/dist/worker/traversal.worker.js.map +1 -1
- package/package.json +11 -2
package/dist/tiers/certify.d.ts
CHANGED
|
@@ -1,170 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* > be published for a language only when the corpus passes at the resolution
|
|
6
|
-
* > the tier claims, a ≥200-edge precision draw passes on at least two
|
|
7
|
-
* > repositories the adapter's author did not choose, and `capabilities()`
|
|
8
|
-
* > declares exactly the node and edge types the adapter emitted."*
|
|
9
|
-
*
|
|
10
|
-
* ## The design point: this thing exists to say no
|
|
11
|
-
*
|
|
12
|
-
* A generator that awards a tier to everything it is shown is a rubber stamp
|
|
13
|
-
* with a build step. The output that matters is **the row that failed**, which
|
|
14
|
-
* is why `unmet` is a list of requirements with their statements rather than a
|
|
15
|
-
* boolean, and why `certify` never returns a bare tier without also returning
|
|
16
|
-
* what the next tier up is missing.
|
|
17
|
-
*
|
|
18
|
-
* Two rules follow from that, and both are the opposite of what is convenient:
|
|
19
|
-
*
|
|
20
|
-
* 1. **Absent evidence is not a pass.** No precision draw recorded means the
|
|
21
|
-
* attested requirement is unmet, exactly as if a recorded draw had failed.
|
|
22
|
-
* The alternative — treating silence as satisfaction — is how every unearned
|
|
23
|
-
* claim in this repository would have been generated.
|
|
24
|
-
* 2. **An attested requirement is labelled attested, in the output, always.**
|
|
25
|
-
* A machine can check "≥200 edges" and "two repositories". It cannot check
|
|
26
|
-
* *"the author did not choose them"*, because that is a fact about a person's
|
|
27
|
-
* intent. Marking it as declared-by-a-human is what stops this function
|
|
28
|
-
* laundering a judgement into a computed result. `certify` therefore reports
|
|
29
|
-
* `attestedBy` alongside the tier, and a consumer that prints the tier
|
|
30
|
-
* without it has dropped the only part that says who is responsible.
|
|
31
|
-
*
|
|
32
|
-
* ## What it does not do
|
|
33
|
-
*
|
|
34
|
-
* It does not run the conformance harness or the precision benches. It is given
|
|
35
|
-
* their results. That keeps it pure and testable, and it keeps the awkward fact
|
|
36
|
-
* visible: the precision evidence is **recorded by hand today**, because the
|
|
37
|
-
* benches are throwaway scripts that print to a terminal. `GateEvidence` is
|
|
38
|
-
* where that hand-recording is written down and dated, rather than living in a
|
|
39
|
-
* decision document that nothing reads.
|
|
2
|
+
* Capability-tier generator (DEC-075 §6): computed from `capabilities()`, never prose. Requires a
|
|
3
|
+
* ≥200-edge precision draw on two repos the author didn't choose; absent evidence fails, never passes.
|
|
4
|
+
* Given harness/bench results, doesn't run them itself; `attestedBy` names who recorded the human call.
|
|
40
5
|
*/
|
|
41
6
|
import type { CapabilityMatrix, EdgeType, NodeType, ResolutionLevel } from "@descryy/ir";
|
|
42
7
|
import type { RefusalCensus } from "../query/unresolved.ts";
|
|
43
8
|
import { type Requirement, type Tier } from "./ladder.ts";
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* `authorChose` is the field that makes this honest. It defaults to nothing —
|
|
48
|
-
* a recorder who has not thought about it produces an incomplete record rather
|
|
49
|
-
* than an accidental pass, the same reason `reliabilityCap`'s `nameLevel` has
|
|
50
|
-
* no default.
|
|
51
|
-
*/
|
|
9
|
+
/** One adjudicated precision draw (DEC-075 §6.2). `authorChose` has no default — an unrecorded
|
|
10
|
+
* value is an incomplete record, not an accidental pass (same reason as `reliabilityCap.nameLevel`). */
|
|
52
11
|
export interface PrecisionDraw {
|
|
53
12
|
readonly repository: string;
|
|
54
13
|
readonly edgeType: EdgeType | "mixed";
|
|
55
14
|
readonly drawn: number;
|
|
56
15
|
readonly correct: number;
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* with decides every row it draws, so `decided` and `drawn` have always
|
|
61
|
-
* been the same number and no draw needed to say so until now.
|
|
62
|
-
*
|
|
63
|
-
* **Kotlin is the first adapter where they diverge, and the divergence
|
|
64
|
-
* exposed a real instrument defect.** `correct / drawn` silently punishes
|
|
65
|
-
* an adjudicator for honestly declining to decide a row exactly as if it
|
|
66
|
-
* had decided that row wrong — okhttp drew 200, decided 192, and every one
|
|
67
|
-
* of the 192 it *did* decide was correct (192/192 = 100%, its own
|
|
68
|
-
* pre-registered gate: GATE PASSED); `correct / drawn` reads that as
|
|
69
|
-
* 192/200 = 96%, below the 98% floor, for a reason that has nothing to do
|
|
70
|
-
* with the adapter's precision. Precision is measured over `decided` rows
|
|
71
|
-
* only (see `checkPrecisionDraws`); `decided / drawn` — coverage — is a
|
|
72
|
-
* separate, always-disclosed axis (`bench/tier-matrix.mjs`'s
|
|
73
|
-
* `describeDrawCoverage`), never folded into the precision figure: a draw
|
|
74
|
-
* with high coverage and lower precision and one with low coverage and
|
|
75
|
-
* clean precision are different facts, and burying the second inside a
|
|
76
|
-
* clean-looking percentage is the failure this field exists to prevent.
|
|
77
|
-
*/
|
|
16
|
+
/** How many of `drawn` rows the adjudicator actually decided (undefined if it never diverges).
|
|
17
|
+
* Precision = correct/decided, not correct/drawn — okhttp: 192/192 decided passes 98%, but
|
|
18
|
+
* 192/200 fails it for the wrong reason. Coverage (decided/drawn) is disclosed separately. */
|
|
78
19
|
readonly decided?: number;
|
|
79
|
-
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* ## Zero out of zero is undefined here too
|
|
84
|
-
*
|
|
85
|
-
* Without it, `0 edges drawn, below 200` and `47 edges drawn, below 200` print
|
|
86
|
-
* identically, and they are different facts with different remedies:
|
|
87
|
-
*
|
|
88
|
-
* | | statement about | what to do |
|
|
89
|
-
* | --- | --- | --- |
|
|
90
|
-
* | population 0 | **the corpus** — this reference set contains nothing to sample | find other repositories, or accept the bar is unreachable here |
|
|
91
|
-
* | population > 0, drawn short | **the adapter** — measured and short | measure more |
|
|
92
|
-
*
|
|
93
|
-
* Python is the live case: `USES_API` is emitted and measures **0 edges** on
|
|
94
|
-
* both reference repositories, and that zero is *correct* — a backend service
|
|
95
|
-
* in this reference set is a provider rather than a consumer, so no 200-edge
|
|
96
|
-
* draw is reachable from it at all. Reporting that as "below 200" tells a
|
|
97
|
-
* reader to measure harder, when the honest answer is that **this reference
|
|
98
|
-
* set cannot answer the question**.
|
|
99
|
-
*
|
|
100
|
-
* `undefined` means the population was not recorded, which is neither zero nor
|
|
101
|
-
* non-zero and is reported as its own case — the same reason
|
|
102
|
-
* `capabilitiesHonest` has an `"unknown"`.
|
|
103
|
-
*/
|
|
20
|
+
/** Population this edge type could draw from (not the sample size). Needed because 0-of-0 and
|
|
21
|
+
* 0-of-200 are different facts: Python's USES_API measures 0 because backends are providers only
|
|
22
|
+
* here — that's a fact about the corpus, not the adapter. `undefined` = not recorded, its own case. */
|
|
104
23
|
readonly population?: number;
|
|
105
|
-
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* ## Why the census rather than a recorded "drawable" count
|
|
109
|
-
*
|
|
110
|
-
* The number that decides reachability is **population minus `outOfScope`**:
|
|
111
|
-
* a call read correctly that targets something this workspace does not serve
|
|
112
|
-
* can never become an edge here, however good the adapter gets.
|
|
113
|
-
*
|
|
114
|
-
* | | population | outOfScope | drawable | reads as |
|
|
115
|
-
* | --- | --- | --- | --- | --- |
|
|
116
|
-
* | `saleor` | 0 | 0 | **0** | nothing to sample |
|
|
117
|
-
* | `dispatch` | 4 | 4 | **0** | four third-party calls, refused forever |
|
|
118
|
-
* | `discourse` | 20 | 0 | **20** | a capability gap the adapter owns |
|
|
119
|
-
*
|
|
120
|
-
* Carrying the census rather than a recorded count keeps this **derived**, so
|
|
121
|
-
* a measured zero still attests to itself and needs no attribution — unlike a
|
|
122
|
-
* `StructuralLimit`. And it cannot drift from the ledger, **because it is the
|
|
123
|
-
* ledger**: a separately recorded "drawable" number is the same fact in two
|
|
124
|
-
* places, and this project has measured what that costs.
|
|
125
|
-
*
|
|
126
|
-
* ## The abuse route, which is why `scopeKnown` is load-bearing
|
|
127
|
-
*
|
|
128
|
-
* With no internal hosts supplied, `classifyRefusals` classifies **every**
|
|
129
|
-
* absolute target as `outOfScope` and says so — it "understates the deficit".
|
|
130
|
-
* Subtracting blindly there would let an adapter that declares no hosts write
|
|
131
|
-
* off every external-looking call as unreachable and **improve its tier by
|
|
132
|
-
* supplying less information**. So `scopeKnown === false` makes the
|
|
133
|
-
* subtraction **unavailable**, never zero.
|
|
134
|
-
*
|
|
135
|
-
* Absent entirely, `drawable` falls back to the full population — which blames
|
|
136
|
-
* the **adapter** rather than the corpus. That is the safe direction: the
|
|
137
|
-
* failure being guarded is a tier improved by withholding evidence.
|
|
138
|
-
*/
|
|
24
|
+
/** Refusal census for this edge type. drawable = population − outOfScope (a call that can never
|
|
25
|
+
* target this workspace can never become an edge here). `scopeKnown === false` makes that
|
|
26
|
+
* subtraction unavailable, never zero — blocks gaming the tier by declaring fewer hosts. */
|
|
139
27
|
readonly refusals?: RefusalCensus;
|
|
140
28
|
/** The negative control over the same adjudicator. Must be ~0. */
|
|
141
29
|
readonly controlDrawn: number;
|
|
142
30
|
readonly controlCorrect: number;
|
|
143
|
-
/**
|
|
144
|
-
* Did the adapter's author pick this repository? DEC-075 §6.2 requires two
|
|
145
|
-
* where the answer is **no**. Declared, never inferred — see the header.
|
|
146
|
-
*/
|
|
31
|
+
/** Did the adapter's author pick this repo? DEC-075 §6.2 requires two that didn't. Declared, not inferred. */
|
|
147
32
|
readonly authorChose: boolean;
|
|
148
33
|
/** Who recorded this, so an attested claim has a name against it. */
|
|
149
34
|
readonly recordedBy: string;
|
|
150
35
|
readonly recordedOn: string;
|
|
151
|
-
/**
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
* meaningful (see `checkCapability`'s use of it: no data means the
|
|
155
|
-
* type-floor check does not run for that draw, not that it fails).
|
|
156
|
-
*
|
|
157
|
-
* The gap this closes: DEC-221 made the precision draw whole-graph and
|
|
158
|
-
* NOT edge-type-scoped (a `USES_API`-only draw structurally cannot carry
|
|
159
|
-
* a negative control, DEC-164 §2). That is still correct for what a
|
|
160
|
-
* *draw* needs to qualify. But a language's tier can rest on a capability
|
|
161
|
-
* (`A.callers` on `USES_API`, `A.routes` on `SERVES_API`) that the draw
|
|
162
|
-
* happened to sample almost none of — Kotlin's ktor draw cleared 98%
|
|
163
|
-
* precision overall while carrying exactly one decided `USES_API` row,
|
|
164
|
-
* which is evidence of nothing about that specific capability. This field
|
|
165
|
-
* is what lets `checkCapability` tell "the capability was validated" from
|
|
166
|
-
* "the capability was declared and the aggregate draw happened to pass".
|
|
167
|
-
*/
|
|
36
|
+
/** Per-edge-type breakdown within a mixed draw; undefined predates this field (no-op, not fail).
|
|
37
|
+
* DEC-221 keeps draws whole-graph, not edge-scoped — Kotlin's ktor draw hit 98% precision overall
|
|
38
|
+
* on exactly one decided USES_API row, which validates nothing about that capability specifically. */
|
|
168
39
|
readonly perEdgeType?: Readonly<Record<string, {
|
|
169
40
|
readonly decided: number;
|
|
170
41
|
readonly correct: number;
|
|
@@ -173,17 +44,9 @@ export interface PrecisionDraw {
|
|
|
173
44
|
export interface ConformanceEvidence {
|
|
174
45
|
readonly resolution: ResolutionLevel;
|
|
175
46
|
readonly passed: boolean;
|
|
176
|
-
/**
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
* Deliberately not "the manifest check produced no findings". That check
|
|
181
|
-
* reports two different things and only one of them is the adapter's fault:
|
|
182
|
-
* `adapterFailed` (emitted-but-undeclared, a real overclaim) and `corpusThin`
|
|
183
|
-
* (declared-but-unexercised, a fact about the corpus). Reading them as one
|
|
184
|
-
* failed every adapter in the repository at Tier C on its first run here,
|
|
185
|
-
* because a low-resolution sweep leaves plenty declared and unexercised.
|
|
186
|
-
*/
|
|
47
|
+
/** DEC-070's adapter verdict: no type emitted that `capabilities()` didn't declare. Distinguishes
|
|
48
|
+
* `adapterFailed` (overclaim, the adapter's fault) from `corpusThin` (declared-unexercised, the
|
|
49
|
+
* corpus's fault) — conflating them failed every adapter at Tier C on a low-resolution sweep. */
|
|
187
50
|
readonly manifestClean: boolean;
|
|
188
51
|
}
|
|
189
52
|
export interface GateEvidence {
|
|
@@ -195,50 +58,15 @@ export interface GateEvidence {
|
|
|
195
58
|
readonly emittedEdgeTypes?: readonly EdgeType[];
|
|
196
59
|
readonly conformance: readonly ConformanceEvidence[];
|
|
197
60
|
readonly precisionDraws: readonly PrecisionDraw[];
|
|
198
|
-
/**
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
* `checkManifest` already computes this and calls it `unpublishable`, with
|
|
202
|
-
* the comment *"not publishable as a tier claim"* — written before any tier
|
|
203
|
-
* generator existed. It is exactly right: a declared type nothing exercised
|
|
204
|
-
* is an untested claim, and a tier resting on it rests on a promise. Treated
|
|
205
|
-
* here as not satisfying a capability requirement at all, with its own reason
|
|
206
|
-
* so it is distinguishable from a type that was never declared.
|
|
207
|
-
*/
|
|
61
|
+
/** Types declared but no corpus pattern exercised (`checkManifest`'s `unpublishable`). Treated as
|
|
62
|
+
* not satisfying the requirement at all, with its own reason distinct from "never declared". */
|
|
208
63
|
readonly unpublishableTypes?: readonly string[];
|
|
209
|
-
/**
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
* DEC-123's case: `REQUIRED_NOT_DECLARED` fires only when an environment
|
|
213
|
-
* accessor *fails* on absence, and JavaScript has no such form — `process.env.X`
|
|
214
|
-
* yields undefined. No adapter effort makes that finding reachable in
|
|
215
|
-
* TypeScript. Without this, the generator scores it as **absent evidence**,
|
|
216
|
-
* which is the verdict for *"nobody has built it yet"*, and the two collapse
|
|
217
|
-
* into one output.
|
|
218
|
-
*
|
|
219
|
-
* That collapse is the one distinction §20.2 exists to hold: *"we found
|
|
220
|
-
* nothing"* and *"we cannot check this"* are different sentences. At the tier
|
|
221
|
-
* layer the difference is between a gap someone should close and a boundary
|
|
222
|
-
* nobody can.
|
|
223
|
-
*
|
|
224
|
-
* **A limit does not block the tier, and it does not vanish either.** It is
|
|
225
|
-
* carried onto the certificate and printed, so the tier is published *with*
|
|
226
|
-
* its qualifier. Awarding the tier silently would claim the capability;
|
|
227
|
-
* withholding it forever would punish a language for its own semantics.
|
|
228
|
-
*
|
|
229
|
-
* `id` matches a requirement id (`A.callers`) or names a check
|
|
230
|
-
* (`REQUIRED_NOT_DECLARED`). `declaredBy` is required for the same reason
|
|
231
|
-
* `PrecisionDraw.recordedBy` is: **this is a human judgement, and an
|
|
232
|
-
* unattributable one is a way to dodge a requirement that is merely unbuilt.**
|
|
233
|
-
* A limit with no reason or no declarer is ignored, and the requirement is
|
|
234
|
-
* checked normally.
|
|
235
|
-
*/
|
|
64
|
+
/** Capabilities this language cannot have, ever (DEC-123: REQUIRED_NOT_DECLARED needs an accessor
|
|
65
|
+
* that fails on absence; JS has none). Distinct from "not built yet" (§20.2) — doesn't block the
|
|
66
|
+
* tier and doesn't vanish, it's printed on the certificate. `declaredBy` required; unattributed = ignored. */
|
|
236
67
|
readonly structuralLimits?: readonly StructuralLimit[];
|
|
237
|
-
/**
|
|
238
|
-
*
|
|
239
|
-
* policy. See `PolicyCap` — this neither waives a requirement nor blocks a
|
|
240
|
-
* tier; it stops a deliberate cap being published as an absence.
|
|
241
|
-
*/
|
|
68
|
+
/** Capabilities claimed below what evidence supports, pending an open policy (see `PolicyCap`).
|
|
69
|
+
* Doesn't waive a requirement or block a tier — stops a deliberate cap being published as an absence. */
|
|
242
70
|
readonly policyCaps?: readonly PolicyCap[];
|
|
243
71
|
}
|
|
244
72
|
/** A capability this language cannot have. Declared, never inferred. */
|
|
@@ -250,41 +78,9 @@ export interface StructuralLimit {
|
|
|
250
78
|
/** Who declared it. An anonymous structural limit is not admissible. */
|
|
251
79
|
readonly declaredBy: string;
|
|
252
80
|
}
|
|
253
|
-
/**
|
|
254
|
-
*
|
|
255
|
-
* pending
|
|
256
|
-
*
|
|
257
|
-
* ## The third state, and why two were not enough
|
|
258
|
-
*
|
|
259
|
-
* The certificate could say two things about a capability it does not claim:
|
|
260
|
-
*
|
|
261
|
-
* | | meaning |
|
|
262
|
-
* | --- | --- |
|
|
263
|
-
* | **absent** | we have not measured it |
|
|
264
|
-
* | **unreachable** (`StructuralLimit`) | this language structurally cannot produce it |
|
|
265
|
-
* | **capped** *(this)* | we could claim more and are choosing not to, pending a policy |
|
|
266
|
-
*
|
|
267
|
-
* Publishing the third as the first **understates a capability we have** — the
|
|
268
|
-
* tier layer would tell a user we cannot do something we deliberately declined
|
|
269
|
-
* to claim. That is §20.2's distinction one layer up, and the same family as the
|
|
270
|
-
* `FILE` gap: two different sentences collapsing into one because there was only
|
|
271
|
-
* one field to put them in.
|
|
272
|
-
*
|
|
273
|
-
* The case that produced it: an introspection-fed route table is R4 on fidelity
|
|
274
|
-
* — it is read from a running process — and is claimed at R3 because R4's
|
|
275
|
-
* promotion and expiry policy is open, R4 requires `observedByRun`, and R4 is
|
|
276
|
-
* unconditionally class A (DEC-115). Nothing is lost, because R3 already reaches
|
|
277
|
-
* class A for a name-level fact; what is lost is the *promise about expiry*, and
|
|
278
|
-
* that is exactly what wants recording.
|
|
279
|
-
*
|
|
280
|
-
* ## It does not waive anything
|
|
281
|
-
*
|
|
282
|
-
* Unlike a `StructuralLimit`, a cap is **not** removed from the tier check. The
|
|
283
|
-
* requirement is met at the lower claim, so there is nothing to waive — and that
|
|
284
|
-
* asymmetry is deliberate: if a cap could skip a requirement it would become the
|
|
285
|
-
* cheapest way to collect a tier, which is the abuse `admissibleLimits` already
|
|
286
|
-
* guards against for the other kind.
|
|
287
|
-
*/
|
|
81
|
+
/** A capability claimable higher but deliberately claimed lower, pending an unwritten policy —
|
|
82
|
+
* distinct from absent (unmeasured) and StructuralLimit (impossible). E.g. an R4-introspected
|
|
83
|
+
* route table claimed at R3 pending R4's expiry policy (R4 is unconditionally class A, DEC-115). */
|
|
288
84
|
export interface PolicyCap {
|
|
289
85
|
/** A requirement id, or the name of a check. */
|
|
290
86
|
readonly id: string;
|
|
@@ -292,13 +88,8 @@ export interface PolicyCap {
|
|
|
292
88
|
readonly claimable: string;
|
|
293
89
|
/** What is actually claimed. */
|
|
294
90
|
readonly claimed: string;
|
|
295
|
-
/**
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
* **Required, and a cap without one is ignored.** "Capped pending nothing" is
|
|
299
|
-
* not a cap, it is a decision — and a cap that names no condition can never be
|
|
300
|
-
* discharged, so it would sit on the certificate forever looking like caution.
|
|
301
|
-
*/
|
|
91
|
+
/** The policy that would lift this cap. Required — a cap with none can never be discharged
|
|
92
|
+
* and would sit on the certificate forever looking like caution rather than a decision. */
|
|
302
93
|
readonly pendingOn: string;
|
|
303
94
|
/** Who declared it. Same rule as `StructuralLimit`: unattributable is not admissible. */
|
|
304
95
|
readonly declaredBy: string;
|
|
@@ -323,53 +114,27 @@ export interface TierCertificate {
|
|
|
323
114
|
readonly unmetForNext: readonly UnmetRequirement[];
|
|
324
115
|
/** Every tier's verdict, so a reader can see the whole ladder at once. */
|
|
325
116
|
readonly byTier: Readonly<Record<Tier, readonly UnmetRequirement[]>>;
|
|
326
|
-
/**
|
|
327
|
-
*
|
|
328
|
-
* tier needed no attested requirement — C and B do not.
|
|
329
|
-
*/
|
|
117
|
+
/** Who declared the attested requirements this tier rests on. Empty when the tier needs
|
|
118
|
+
* none — C and B never do. */
|
|
330
119
|
readonly attestedBy: readonly string[];
|
|
331
|
-
/**
|
|
332
|
-
*
|
|
333
|
-
*
|
|
334
|
-
* tier resting on, say, an `IMPORTS`-only draw has not had `USES_API`
|
|
335
|
-
* itself sampled, and this is where a reader finds that out rather than
|
|
336
|
-
* assuming "Tier A" answered a question it did not.
|
|
337
|
-
*/
|
|
120
|
+
/** Edge types the qualifying draws actually covered (empty under the same condition as
|
|
121
|
+
* `attestedBy`). An IMPORTS-only draw doesn't mean USES_API was itself sampled — this
|
|
122
|
+
* is where a reader finds that gap instead of assuming "Tier A" covers everything. */
|
|
338
123
|
readonly attestedEdgeTypes: readonly (EdgeType | "mixed")[];
|
|
339
|
-
/**
|
|
340
|
-
*
|
|
341
|
-
* declared unreachable. **Never empty-by-omission in the printed form** — a
|
|
342
|
-
* consumer that prints the tier without these has published a capability
|
|
343
|
-
* claim the certificate does not make.
|
|
344
|
-
*/
|
|
124
|
+
/** Requirements waived as unreachable in this language. Never omit these when printing the
|
|
125
|
+
* tier — a consumer that does has published a capability claim the certificate doesn't make. */
|
|
345
126
|
readonly limitations: readonly StructuralLimit[];
|
|
346
|
-
/**
|
|
347
|
-
*
|
|
348
|
-
* omitting them publishes a cap as an absence, which understates a capability
|
|
349
|
-
* the adapter has.
|
|
350
|
-
*/
|
|
127
|
+
/** Deliberate under-claims. Omitting them publishes a cap as an absence, understating a
|
|
128
|
+
* capability the adapter actually has. */
|
|
351
129
|
readonly policyCaps: readonly PolicyCap[];
|
|
352
|
-
/**
|
|
353
|
-
*
|
|
354
|
-
* population was zero.
|
|
355
|
-
*
|
|
356
|
-
* Printed beside the structural limitations because it is the same kind of
|
|
357
|
-
* statement: not *"the adapter fell short"* but *"there was nothing here to
|
|
358
|
-
* measure"*. The remedy is other repositories, and a certificate that does not
|
|
359
|
-
* say so sends a reader to measure harder against an empty population.
|
|
360
|
-
*/
|
|
130
|
+
/** Draws whose population was zero — nothing here to measure, not "the adapter fell short."
|
|
131
|
+
* Printed beside structural limitations; the remedy is other repositories. */
|
|
361
132
|
readonly unreachableHere: readonly EmptyPopulation[];
|
|
362
133
|
/** DEC-075 §6.3: does `capabilities()` match what was emitted? */
|
|
363
134
|
readonly capabilitiesHonest: boolean | "unknown";
|
|
364
135
|
}
|
|
365
136
|
export declare function certify(evidence: GateEvidence): TierCertificate;
|
|
366
|
-
/**
|
|
367
|
-
*
|
|
368
|
-
* reason it is not higher.
|
|
369
|
-
*
|
|
370
|
-
* The failing rows are not an appendix. A support matrix that prints "B" and
|
|
371
|
-
* stops teaches a reader that B is the ceiling; printing what A is missing
|
|
372
|
-
* turns the same fact into a work item.
|
|
373
|
-
*/
|
|
137
|
+
/** Tier first, then immediately why it isn't higher. Printing "B" alone teaches a reader B is
|
|
138
|
+
* the ceiling; printing what A is missing turns it into a work item instead. */
|
|
374
139
|
export declare function formatCertificate(certificate: TierCertificate): string;
|
|
375
140
|
//# sourceMappingURL=certify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certify.d.ts","sourceRoot":"","sources":["../../src/tiers/certify.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"certify.d.ts","sourceRoot":"","sources":["../../src/tiers/certify.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAU,KAAK,WAAW,EAAE,KAAK,IAAI,EAA0B,MAAM,aAAa,CAAC;AAE1F;yGACyG;AACzG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;mGAE+F;IAC/F,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;4GAEwG;IACxG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;iGAE6F;IAC7F,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,8GAA8G;IAC9G,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;2GAEuG;IACvG,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACzG;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;sGAEkG;IAClG,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IAClD;qGACiG;IACjG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD;;mHAE+G;IAC/G,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACvD;8GAC0G;IAC1G,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CAC5C;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;qGAEqG;AACrG,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;gGAC4F;IAC5F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACrE;mCAC+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;2FAEuF;IACvF,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;IAC5D;qGACiG;IACjG,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD;+CAC2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C;mFAC+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,SAAS,eAAe,EAAE,CAAC;IACrD,kEAAkE;IAClE,QAAQ,CAAC,kBAAkB,EAAE,OAAO,GAAG,SAAS,CAAC;CAClD;AAmOD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,CAsD/D;AAED;iFACiF;AACjF,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,CA4CtE"}
|