@descryy/core 0.4.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 +23 -11
- package/dist/contracts/engine.d.ts.map +1 -1
- package/dist/contracts/engine.js +23 -11
- package/dist/contracts/engine.js.map +1 -1
- package/dist/contracts/orphans.d.ts +18 -122
- package/dist/contracts/orphans.d.ts.map +1 -1
- package/dist/contracts/orphans.js +36 -134
- 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 +9 -90
- package/dist/graph/build.d.ts.map +1 -1
- package/dist/graph/build.js +15 -62
- 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/merge.d.ts +8 -88
- package/dist/graph/merge.d.ts.map +1 -1
- package/dist/graph/merge.js +9 -93
- 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 +4 -16
- package/dist/query/memory.d.ts.map +1 -1
- package/dist/query/memory.js +9 -22
- 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 +27 -93
- 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 +30 -104
- 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 +9 -19
- 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 +25 -126
- 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 +33 -133
- 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 +6 -55
- package/dist/validation/attributes.d.ts.map +1 -1
- package/dist/validation/attributes.js +6 -55
- package/dist/validation/attributes.js.map +1 -1
- 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 +7 -1
- package/dist/validation/env.d.ts.map +1 -1
- package/dist/validation/env.js +3 -1
- package/dist/validation/env.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 +11 -72
- package/dist/validation/migration-integrity.d.ts.map +1 -1
- package/dist/validation/migration-integrity.js +16 -79
- package/dist/validation/migration-integrity.js.map +1 -1
- package/dist/validation/migrations.d.ts +22 -101
- package/dist/validation/migrations.d.ts.map +1 -1
- package/dist/validation/migrations.js +19 -83
- 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 +15 -82
- 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/ledger/resolve.d.ts
CHANGED
|
@@ -1,50 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TIER-A-2's value-lookup half
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* this variable declared anywhere"*. A refusal-ledger row needs a different
|
|
6
|
-
* question answered: *"what value does this blocked blockedBy hold, per
|
|
7
|
-
* environment, from what the repository already has on disk."* Same
|
|
8
|
-
* declaration surfaces, a different consumer — this file only reads
|
|
9
|
-
* `sources.ts`'s exports, it does not change them. See `parallel-agents.md`
|
|
10
|
-
* §3's ledger-lookup row.
|
|
11
|
-
*
|
|
12
|
-
* ## What this deliberately does not take as input, and why
|
|
13
|
-
*
|
|
14
|
-
* The obvious signature would be `resolve(row: UnresolvedRef)`. `UnresolvedRef`
|
|
15
|
-
* does not carry the blocked blockedBy — `rawTarget` is the callee
|
|
16
|
-
* (`"fetch"`, `"api.get"`), and `reason` is human prose with no variable name
|
|
17
|
-
* in it (confirmed by reading real rows: the same sentence fires for every
|
|
18
|
-
* `api.<verb>` call regardless of which variable blocks it). DEC-223 §1 asks
|
|
19
|
-
* for `attrs.blockedBy` to carry this and it does not exist in any shipped
|
|
20
|
-
* adapter yet — that request is open, addressed to whoever ships the next
|
|
21
|
-
* ledger-producing change. So this takes an **blockedBy string** directly.
|
|
22
|
-
* A caller with `attrs.blockedBy` available passes it straight through; a
|
|
23
|
-
* caller without it (today, every real batch) supplies whatever it already
|
|
24
|
-
* determined by reading source — which is what the TIER-A-2 measurement this
|
|
25
|
-
* module was built to close used.
|
|
26
|
-
*
|
|
27
|
-
* ## Formats read
|
|
28
|
-
*
|
|
29
|
-
* `.env*` and `wrangler.toml`'s `[vars]`/`[env.<name>.vars]` tables
|
|
30
|
-
* (`REQUEST-D-wrangler-vars-format.md`, DEC-245). Container manifests and
|
|
31
|
-
* image builds are already in `sources.ts`'s declaration scan but that scan
|
|
32
|
-
* discards the *value* half — it only proves a name is declared, never what
|
|
33
|
-
* it is bound to — and neither measured repository's real questions resolve
|
|
34
|
-
* through either format.
|
|
35
|
-
*
|
|
36
|
-
* The wrangler reading itself lives in `sources.ts` — `readWranglerVarsEntries`
|
|
37
|
-
* — the same file that owns every other format's structural read. This module
|
|
38
|
-
* only turns its output into `DeclaredEnvValue`s, the same way it already does
|
|
39
|
-
* for `readDotenvValues`; one reader per format, never a second one for the
|
|
40
|
-
* same file here.
|
|
41
|
-
*
|
|
42
|
-
* ## Never guessed, always refused
|
|
43
|
-
*
|
|
44
|
-
* `candidateEnvNames` returns `[]` — never a best guess — for any blockedBy
|
|
45
|
-
* shape it does not recognise. An blockedBy this module cannot parse stays
|
|
46
|
-
* exactly as open as it was before this module existed; principle 2 applies
|
|
47
|
-
* to a lookup the same way it applies to an edge.
|
|
2
|
+
* TIER-A-2's value-lookup half (DEC-223, DEC-136). DEC-120/121 ask "is this declared"; this asks what value it holds per environment, from .env* and wrangler.toml [vars] on disk (DEC-245).
|
|
3
|
+
* Takes a blockedBy string directly — DEC-223 §1's attrs.blockedBy ships in no adapter yet.
|
|
4
|
+
* candidateEnvNames returns [] rather than guessing — never guessed, always refused (rule 2).
|
|
48
5
|
*/
|
|
49
6
|
import type { ResolutionLevel } from "@descryy/ir";
|
|
50
7
|
import type { ConfigSurface, SurfaceScan } from "./../validation/sources.ts";
|
|
@@ -77,48 +34,23 @@ export interface LedgerAccessorResolution {
|
|
|
77
34
|
readonly candidates: readonly string[];
|
|
78
35
|
/** One per environment for which some candidate resolved. */
|
|
79
36
|
readonly resolved: readonly ResolvedValue[];
|
|
80
|
-
/**
|
|
81
|
-
*
|
|
82
|
-
* from filenames actually present, including example/placeholder files.
|
|
83
|
-
* Never invented: a repository with no `.env.production*` file anywhere
|
|
84
|
-
* does not get `"production"` added here on the assumption that one must
|
|
85
|
-
* exist. That is the difference between disclosing a real gap and
|
|
86
|
-
* guessing at one.
|
|
87
|
-
*/
|
|
37
|
+
/** Every environment this repo's `.env*` filenames actually assert exists.
|
|
38
|
+
* Never invented: no `.env.production*` file means no "production" added. */
|
|
88
39
|
readonly knownEnvironments: readonly string[];
|
|
89
40
|
/** `knownEnvironments` minus `resolved`'s environments — the honest "still open" list. */
|
|
90
41
|
readonly unresolvedEnvironments: readonly string[];
|
|
91
|
-
/**
|
|
92
|
-
*
|
|
93
|
-
* which is unrelated): a direct read of a declarative document needs no
|
|
94
|
-
* resolution and is treated as R3, the same class of evidence
|
|
95
|
-
* `adapter-openapi`/`adapter-sql` use to reach R3 with no language adapter
|
|
96
|
-
* at all. Present only when at least one candidate was recognised — an
|
|
97
|
-
* unparseable blockedBy has no resolution to state because nothing was
|
|
98
|
-
* read.
|
|
99
|
-
*/
|
|
42
|
+
/** DEC-244's precedent: a direct declarative-document read needs no
|
|
43
|
+
* resolution, treated as R3. Present only when a candidate was recognised. */
|
|
100
44
|
readonly resolution: ResolutionLevel | null;
|
|
101
45
|
}
|
|
102
|
-
/**
|
|
103
|
-
*
|
|
104
|
-
* they would actually be tried at runtime. `[]` when any side of the
|
|
105
|
-
* blockedBy is neither a recognised accessor nor a literal fallback —
|
|
106
|
-
* refused as a whole rather than partially understood, per rule 2.
|
|
107
|
-
*/
|
|
46
|
+
/** Candidate names an blockedBy could resolve to, in try order. `[]` when any
|
|
47
|
+
* side is neither accessor nor literal — refused whole, per rule 2. */
|
|
108
48
|
export declare function candidateEnvNames(blockedBy: string): readonly string[];
|
|
109
|
-
/**
|
|
110
|
-
*
|
|
111
|
-
* across every environment they name. Read once per repository;
|
|
112
|
-
* `resolveAgainstDeclared` runs many times against the result rather than
|
|
113
|
-
* rescanning per ledger row.
|
|
114
|
-
*/
|
|
49
|
+
/** Every value this repo's `.env*`/`wrangler.toml` surfaces state. Read once
|
|
50
|
+
* per repository; resolveAgainstDeclared runs many times against the result. */
|
|
115
51
|
export declare function readDeclaredEnvValues(root: string, scan: SurfaceScan, readFile: (file: string) => string): readonly DeclaredEnvValue[];
|
|
116
|
-
/**
|
|
117
|
-
*
|
|
118
|
-
* repository already has on disk. Never invents an environment, never picks
|
|
119
|
-
* a value from a different repository, never treats an example file's
|
|
120
|
-
* placeholder as an answer.
|
|
121
|
-
*/
|
|
52
|
+
/** Resolve one blocked blockedBy against declared values on disk. Never
|
|
53
|
+
* invents an environment or treats an example's placeholder as an answer. */
|
|
122
54
|
export declare function resolveAgainstDeclared(blockedBy: string, declared: readonly DeclaredEnvValue[]): LedgerAccessorResolution;
|
|
123
55
|
export type { ConfigSurface };
|
|
124
56
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/ledger/resolve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/ledger/resolve.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG7E,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,oGAAoG;IACpG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C;kFAC8E;IAC9E,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,0FAA0F;IAC1F,QAAQ,CAAC,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IACnD;mFAC+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CAC7C;AAoDD;wEACwE;AACxE,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CActE;AAsCD;iFACiF;AACjF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,gBAAgB,EAAE,CA6CtI;AAgBD;8EAC8E;AAC9E,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACpC,wBAAwB,CAiD1B;AAED,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/ledger/resolve.js
CHANGED
|
@@ -1,50 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TIER-A-2's value-lookup half
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* this variable declared anywhere"*. A refusal-ledger row needs a different
|
|
6
|
-
* question answered: *"what value does this blocked blockedBy hold, per
|
|
7
|
-
* environment, from what the repository already has on disk."* Same
|
|
8
|
-
* declaration surfaces, a different consumer — this file only reads
|
|
9
|
-
* `sources.ts`'s exports, it does not change them. See `parallel-agents.md`
|
|
10
|
-
* §3's ledger-lookup row.
|
|
11
|
-
*
|
|
12
|
-
* ## What this deliberately does not take as input, and why
|
|
13
|
-
*
|
|
14
|
-
* The obvious signature would be `resolve(row: UnresolvedRef)`. `UnresolvedRef`
|
|
15
|
-
* does not carry the blocked blockedBy — `rawTarget` is the callee
|
|
16
|
-
* (`"fetch"`, `"api.get"`), and `reason` is human prose with no variable name
|
|
17
|
-
* in it (confirmed by reading real rows: the same sentence fires for every
|
|
18
|
-
* `api.<verb>` call regardless of which variable blocks it). DEC-223 §1 asks
|
|
19
|
-
* for `attrs.blockedBy` to carry this and it does not exist in any shipped
|
|
20
|
-
* adapter yet — that request is open, addressed to whoever ships the next
|
|
21
|
-
* ledger-producing change. So this takes an **blockedBy string** directly.
|
|
22
|
-
* A caller with `attrs.blockedBy` available passes it straight through; a
|
|
23
|
-
* caller without it (today, every real batch) supplies whatever it already
|
|
24
|
-
* determined by reading source — which is what the TIER-A-2 measurement this
|
|
25
|
-
* module was built to close used.
|
|
26
|
-
*
|
|
27
|
-
* ## Formats read
|
|
28
|
-
*
|
|
29
|
-
* `.env*` and `wrangler.toml`'s `[vars]`/`[env.<name>.vars]` tables
|
|
30
|
-
* (`REQUEST-D-wrangler-vars-format.md`, DEC-245). Container manifests and
|
|
31
|
-
* image builds are already in `sources.ts`'s declaration scan but that scan
|
|
32
|
-
* discards the *value* half — it only proves a name is declared, never what
|
|
33
|
-
* it is bound to — and neither measured repository's real questions resolve
|
|
34
|
-
* through either format.
|
|
35
|
-
*
|
|
36
|
-
* The wrangler reading itself lives in `sources.ts` — `readWranglerVarsEntries`
|
|
37
|
-
* — the same file that owns every other format's structural read. This module
|
|
38
|
-
* only turns its output into `DeclaredEnvValue`s, the same way it already does
|
|
39
|
-
* for `readDotenvValues`; one reader per format, never a second one for the
|
|
40
|
-
* same file here.
|
|
41
|
-
*
|
|
42
|
-
* ## Never guessed, always refused
|
|
43
|
-
*
|
|
44
|
-
* `candidateEnvNames` returns `[]` — never a best guess — for any blockedBy
|
|
45
|
-
* shape it does not recognise. An blockedBy this module cannot parse stays
|
|
46
|
-
* exactly as open as it was before this module existed; principle 2 applies
|
|
47
|
-
* to a lookup the same way it applies to an edge.
|
|
2
|
+
* TIER-A-2's value-lookup half (DEC-223, DEC-136). DEC-120/121 ask "is this declared"; this asks what value it holds per environment, from .env* and wrangler.toml [vars] on disk (DEC-245).
|
|
3
|
+
* Takes a blockedBy string directly — DEC-223 §1's attrs.blockedBy ships in no adapter yet.
|
|
4
|
+
* candidateEnvNames returns [] rather than guessing — never guessed, always refused (rule 2).
|
|
48
5
|
*/
|
|
49
6
|
import { readWranglerVarsEntries } from "./../validation/sources.js";
|
|
50
7
|
/** Direct reads of `.env*` need no resolution — DEC-244's precedent, reused rather than restated. */
|
|
@@ -57,15 +14,8 @@ const ACCESSOR = [
|
|
|
57
14
|
/^env\[["']([A-Za-z_][A-Za-z0-9_]*)["']\]$/,
|
|
58
15
|
];
|
|
59
16
|
const LITERAL = /^(?:(["'`]).*\1|undefined|null|true|false|\d+(?:\.\d+)?)$/;
|
|
60
|
-
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* The blocked strings this reads are call-site fragments, not general JS — no
|
|
64
|
-
* nested ternaries, no parenthesised groups observed in either measured
|
|
65
|
-
* repository. Good enough for what real code does here; anything stranger
|
|
66
|
-
* fails a `parseSide` downstream and the whole blockedBy is refused rather
|
|
67
|
-
* than partially trusted.
|
|
68
|
-
*/
|
|
17
|
+
/** Split on top-level `||`/`??`, never inside a quoted literal. Good enough
|
|
18
|
+
* for call-site fragments; anything stranger fails parseSide and the whole blockedBy is refused, not partially trusted. */
|
|
69
19
|
function splitTopLevelFallback(blockedBy) {
|
|
70
20
|
const parts = [];
|
|
71
21
|
let depth = 0;
|
|
@@ -103,12 +53,8 @@ function parseSide(side) {
|
|
|
103
53
|
}
|
|
104
54
|
return null;
|
|
105
55
|
}
|
|
106
|
-
/**
|
|
107
|
-
*
|
|
108
|
-
* they would actually be tried at runtime. `[]` when any side of the
|
|
109
|
-
* blockedBy is neither a recognised accessor nor a literal fallback —
|
|
110
|
-
* refused as a whole rather than partially understood, per rule 2.
|
|
111
|
-
*/
|
|
56
|
+
/** Candidate names an blockedBy could resolve to, in try order. `[]` when any
|
|
57
|
+
* side is neither accessor nor literal — refused whole, per rule 2. */
|
|
112
58
|
export function candidateEnvNames(blockedBy) {
|
|
113
59
|
const sides = splitTopLevelFallback(blockedBy);
|
|
114
60
|
if (sides.length === 0)
|
|
@@ -165,12 +111,8 @@ function readDotenvValues(text) {
|
|
|
165
111
|
}
|
|
166
112
|
return out;
|
|
167
113
|
}
|
|
168
|
-
/**
|
|
169
|
-
*
|
|
170
|
-
* across every environment they name. Read once per repository;
|
|
171
|
-
* `resolveAgainstDeclared` runs many times against the result rather than
|
|
172
|
-
* rescanning per ledger row.
|
|
173
|
-
*/
|
|
114
|
+
/** Every value this repo's `.env*`/`wrangler.toml` surfaces state. Read once
|
|
115
|
+
* per repository; resolveAgainstDeclared runs many times against the result. */
|
|
174
116
|
export function readDeclaredEnvValues(root, scan, readFile) {
|
|
175
117
|
const out = [];
|
|
176
118
|
for (const surface of scan.surfaces) {
|
|
@@ -184,9 +126,8 @@ export function readDeclaredEnvValues(root, scan, readFile) {
|
|
|
184
126
|
continue; // unreadable — already surfaced by scanConfigSurfaces's own `unreadable` list
|
|
185
127
|
}
|
|
186
128
|
if (surface.format === "wranglerVars") {
|
|
187
|
-
// A commented-out
|
|
188
|
-
//
|
|
189
|
-
// commented line at all.
|
|
129
|
+
// A commented-out line documents, it does not supply — same rule
|
|
130
|
+
// readDotenvValues applies by never reading a commented line.
|
|
190
131
|
for (const entry of readWranglerVarsEntries(text)) {
|
|
191
132
|
if (entry.commented || entry.value === null)
|
|
192
133
|
continue;
|
|
@@ -234,12 +175,8 @@ function pickBest(candidates) {
|
|
|
234
175
|
return local;
|
|
235
176
|
return candidates.find((c) => !c.example);
|
|
236
177
|
}
|
|
237
|
-
/**
|
|
238
|
-
*
|
|
239
|
-
* repository already has on disk. Never invents an environment, never picks
|
|
240
|
-
* a value from a different repository, never treats an example file's
|
|
241
|
-
* placeholder as an answer.
|
|
242
|
-
*/
|
|
178
|
+
/** Resolve one blocked blockedBy against declared values on disk. Never
|
|
179
|
+
* invents an environment or treats an example's placeholder as an answer. */
|
|
243
180
|
export function resolveAgainstDeclared(blockedBy, declared) {
|
|
244
181
|
const candidates = candidateEnvNames(blockedBy);
|
|
245
182
|
const knownEnvironments = knownEnvironmentsOf(declared);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/ledger/resolve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/ledger/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* ## The two git semantics, and why they differ on purpose
|
|
5
|
-
*
|
|
6
|
-
* The question is *"is this change's work already on base?"*, and answering it
|
|
7
|
-
* needs **two different diffs**:
|
|
8
|
-
*
|
|
9
|
-
* - **What the change touched** comes from `base...head` — three dots, against
|
|
10
|
-
* the merge base. That is what a reviewer sees, and it does not include
|
|
11
|
-
* somebody else's commits that landed on base afterwards.
|
|
12
|
-
* - **What base holds now** comes from the **tip of base**, not the merge base.
|
|
13
|
-
*
|
|
14
|
-
* That asymmetry *is* the mechanism. If someone else landed the same work while
|
|
15
|
-
* this change sat open, the three-dot diff still shows the change touching the
|
|
16
|
-
* file — its merge base is old — while base's tip already matches. Comparing
|
|
17
|
-
* against the merge base instead would report every open change as unsuperseded
|
|
18
|
-
* forever, because a merge base by construction predates the change.
|
|
19
|
-
*
|
|
20
|
-
* ## Granularity is the honest limit, and it is not a resolution problem
|
|
21
|
-
*
|
|
22
|
-
* These are **whole-file** hashes — git's own blob ids, which is the strongest
|
|
23
|
-
* available statement that two versions are identical, and the weakest useful
|
|
24
|
-
* unit. A change that edited one file for two reasons, one of which landed, is
|
|
25
|
-
* reported as differing. That is the conservative direction and the correct one:
|
|
26
|
-
* the finding this feeds tells a human to close a pull request, so a missed
|
|
27
|
-
* supersession costs a review and a false one costs the work.
|
|
28
|
-
*
|
|
29
|
-
* Node-level fingerprints would need the same file re-parsed at two commits,
|
|
30
|
-
* which is adapter work rather than core's. When that exists it changes the
|
|
31
|
-
* basis string and nothing else — `findSuperseded` compares opaque strings by
|
|
32
|
-
* construction, so this is a producer swap, not a redesign.
|
|
33
|
-
*
|
|
34
|
-
* ## What is not language knowledge
|
|
35
|
-
*
|
|
36
|
-
* Nothing here reads code. It asks git for content hashes and compares them,
|
|
37
|
-
* which is why it can ship in core at all — rule 1 is satisfied by never
|
|
38
|
-
* looking inside the bytes.
|
|
39
|
-
*/
|
|
1
|
+
/** §14.5's missing half: fingerprints for `findSuperseded`. Two diffs on purpose — what changed
|
|
2
|
+
* (`base...head`) vs what base holds NOW (its tip) — so work landed elsewhere while open still
|
|
3
|
+
* shows superseded. Whole-file git blob ids (rule 2's conservative direction); no code read (rule 1). */
|
|
40
4
|
import type { SupersededCandidate } from "./superseded.ts";
|
|
41
5
|
/** What `git ls-tree`/`diff` produced, and what a caller must be told about it. */
|
|
42
6
|
export interface CandidateReport {
|
|
@@ -45,12 +9,7 @@ export interface CandidateReport {
|
|
|
45
9
|
/** The string `findSuperseded` should carry into its disclosure. */
|
|
46
10
|
readonly fingerprintBasis: string;
|
|
47
11
|
}
|
|
48
|
-
/**
|
|
49
|
-
*
|
|
50
|
-
* holds it now.
|
|
51
|
-
*
|
|
52
|
-
* @param base the branch this change would merge into — compared at its **tip**
|
|
53
|
-
* @param head the tip of the change
|
|
54
|
-
*/
|
|
12
|
+
/** Fingerprints every file a change touched, as the change leaves it and as base holds it now.
|
|
13
|
+
* `base` is compared at its tip; `head` is the tip of the change. */
|
|
55
14
|
export declare function supersededCandidates(cwd: string, base: string, head?: string): Promise<CandidateReport>;
|
|
56
15
|
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/multipr/fingerprint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/multipr/fingerprint.ts"],"names":[],"mappings":"AAAA;;0GAE0G;AAK1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,oEAAoE;IACpE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AA0DD;sEACsE;AACtE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,SAAS,GACZ,OAAO,CAAC,eAAe,CAAC,CAiE1B"}
|
|
@@ -1,55 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* ## The two git semantics, and why they differ on purpose
|
|
5
|
-
*
|
|
6
|
-
* The question is *"is this change's work already on base?"*, and answering it
|
|
7
|
-
* needs **two different diffs**:
|
|
8
|
-
*
|
|
9
|
-
* - **What the change touched** comes from `base...head` — three dots, against
|
|
10
|
-
* the merge base. That is what a reviewer sees, and it does not include
|
|
11
|
-
* somebody else's commits that landed on base afterwards.
|
|
12
|
-
* - **What base holds now** comes from the **tip of base**, not the merge base.
|
|
13
|
-
*
|
|
14
|
-
* That asymmetry *is* the mechanism. If someone else landed the same work while
|
|
15
|
-
* this change sat open, the three-dot diff still shows the change touching the
|
|
16
|
-
* file — its merge base is old — while base's tip already matches. Comparing
|
|
17
|
-
* against the merge base instead would report every open change as unsuperseded
|
|
18
|
-
* forever, because a merge base by construction predates the change.
|
|
19
|
-
*
|
|
20
|
-
* ## Granularity is the honest limit, and it is not a resolution problem
|
|
21
|
-
*
|
|
22
|
-
* These are **whole-file** hashes — git's own blob ids, which is the strongest
|
|
23
|
-
* available statement that two versions are identical, and the weakest useful
|
|
24
|
-
* unit. A change that edited one file for two reasons, one of which landed, is
|
|
25
|
-
* reported as differing. That is the conservative direction and the correct one:
|
|
26
|
-
* the finding this feeds tells a human to close a pull request, so a missed
|
|
27
|
-
* supersession costs a review and a false one costs the work.
|
|
28
|
-
*
|
|
29
|
-
* Node-level fingerprints would need the same file re-parsed at two commits,
|
|
30
|
-
* which is adapter work rather than core's. When that exists it changes the
|
|
31
|
-
* basis string and nothing else — `findSuperseded` compares opaque strings by
|
|
32
|
-
* construction, so this is a producer swap, not a redesign.
|
|
33
|
-
*
|
|
34
|
-
* ## What is not language knowledge
|
|
35
|
-
*
|
|
36
|
-
* Nothing here reads code. It asks git for content hashes and compares them,
|
|
37
|
-
* which is why it can ship in core at all — rule 1 is satisfied by never
|
|
38
|
-
* looking inside the bytes.
|
|
39
|
-
*/
|
|
1
|
+
/** §14.5's missing half: fingerprints for `findSuperseded`. Two diffs on purpose — what changed
|
|
2
|
+
* (`base...head`) vs what base holds NOW (its tip) — so work landed elsewhere while open still
|
|
3
|
+
* shows superseded. Whole-file git blob ids (rule 2's conservative direction); no code read (rule 1). */
|
|
40
4
|
import { spawn } from "node:child_process";
|
|
41
|
-
import { cleanGitEnv } from "../sources/git/env.js";
|
|
5
|
+
import { cleanGitEnv, HARDENED_GIT_CONFIG_ARGS } from "../sources/git/env.js";
|
|
42
6
|
const BASIS = "git blob identity at whole-file granularity — two versions are called identical when git " +
|
|
43
7
|
"gives them the same object id, and a difference means only that the file bytes differ";
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* argument limit, and the failure mode is an OS-level error whose message says
|
|
47
|
-
* nothing about paths — the kind of thing that gets diagnosed as a git problem.
|
|
48
|
-
*/
|
|
8
|
+
/** Pathspecs are chunked — a large change can exceed the argument limit, failing with an
|
|
9
|
+
* OS-level error that says nothing about paths (easy to misdiagnose as a git problem). */
|
|
49
10
|
const PATH_CHUNK = 200;
|
|
11
|
+
// Strips GIT_DIR/GIT_WORK_TREE/GIT_INDEX_FILE/GIT_COMMON_DIR, sets GIT_CONFIG_NOSYSTEM, applies HARDENED_GIT_CONFIG_ARGS (env.ts, B-11).
|
|
50
12
|
async function git(cwd, args) {
|
|
51
13
|
return new Promise((resolve, reject) => {
|
|
52
|
-
const child = spawn("git", args, { cwd, env: cleanGitEnv() });
|
|
14
|
+
const child = spawn("git", [...HARDENED_GIT_CONFIG_ARGS, ...args], { cwd, env: cleanGitEnv() });
|
|
53
15
|
let out = "";
|
|
54
16
|
let err = "";
|
|
55
17
|
child.stdout.on("data", (d) => (out += d.toString("utf8")));
|
|
@@ -63,15 +25,9 @@ async function git(cwd, args) {
|
|
|
63
25
|
});
|
|
64
26
|
});
|
|
65
27
|
}
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* failure, which throws and becomes `"unknown"`.
|
|
70
|
-
*
|
|
71
|
-
* `-z` because a path may legally contain a newline. (It may not contain NUL,
|
|
72
|
-
* which is why NUL is the correct delimiter *on a pipe* even though it is the
|
|
73
|
-
* wrong thing to write into a file a human is meant to review.)
|
|
74
|
-
*/
|
|
28
|
+
/** Blob ids for `paths` at `ref`. A path absent from the tree is absent from the map (caller
|
|
29
|
+
* turns that into "absent"; a git failure throws and becomes "unknown"). `-z`: paths may
|
|
30
|
+
* contain a newline but never NUL, the correct delimiter on a pipe. */
|
|
75
31
|
async function blobIds(cwd, ref, paths) {
|
|
76
32
|
const found = new Map();
|
|
77
33
|
for (let i = 0; i < paths.length; i += PATH_CHUNK) {
|
|
@@ -100,26 +56,21 @@ function diffTypeOf(status) {
|
|
|
100
56
|
return "deleted";
|
|
101
57
|
return "modified";
|
|
102
58
|
}
|
|
103
|
-
/**
|
|
104
|
-
*
|
|
105
|
-
* holds it now.
|
|
106
|
-
*
|
|
107
|
-
* @param base the branch this change would merge into — compared at its **tip**
|
|
108
|
-
* @param head the tip of the change
|
|
109
|
-
*/
|
|
59
|
+
/** Fingerprints every file a change touched, as the change leaves it and as base holds it now.
|
|
60
|
+
* `base` is compared at its tip; `head` is the tip of the change. */
|
|
110
61
|
export async function supersededCandidates(cwd, base, head = "HEAD") {
|
|
111
62
|
const notes = [];
|
|
112
|
-
// Three dots: what this change touched
|
|
113
|
-
//
|
|
114
|
-
|
|
63
|
+
// Three dots: what this change touched vs the merge base; renames followed so a moved file is
|
|
64
|
+
// one candidate, not a delete+add. --no-ext-diff isn't load-bearing here (--name-status renders
|
|
65
|
+
// no patch text) but kept for consistency with diff.ts, in case this starts rendering a patch.
|
|
66
|
+
const statusOut = await git(cwd, ["diff", "--no-ext-diff", "--name-status", "-M", "-z", `${base}...${head}`]);
|
|
115
67
|
const touched = [];
|
|
116
68
|
const fields = statusOut.split("\0");
|
|
117
69
|
for (let i = 0; i < fields.length; i += 1) {
|
|
118
70
|
const status = fields[i];
|
|
119
71
|
if (status === undefined || status === "")
|
|
120
72
|
continue;
|
|
121
|
-
// A rename record is `R<score>\0<old>\0<new>` — three fields
|
|
122
|
-
// path is the one that exists to be compared.
|
|
73
|
+
// A rename record is `R<score>\0<old>\0<new>` — three fields; the new path is what's compared.
|
|
123
74
|
if (status.startsWith("R") || status.startsWith("C")) {
|
|
124
75
|
const to = fields[i + 2];
|
|
125
76
|
if (to !== undefined && to !== "")
|
|
@@ -138,8 +89,7 @@ export async function supersededCandidates(cwd, base, head = "HEAD") {
|
|
|
138
89
|
return { candidates: [], notes, fingerprintBasis: BASIS };
|
|
139
90
|
}
|
|
140
91
|
const paths = touched.map((t) => t.path);
|
|
141
|
-
// The tip of base, deliberately
|
|
142
|
-
// that moves mid-run cannot make two halves of one answer disagree.
|
|
92
|
+
// The tip of base, deliberately (see header) — resolved once so a branch moving mid-run can't split the answer.
|
|
143
93
|
const baseSha = (await git(cwd, ["rev-parse", base])).trim();
|
|
144
94
|
const [afterBlobs, baseBlobs] = await Promise.all([
|
|
145
95
|
blobIds(cwd, head, paths),
|
|
@@ -151,11 +101,9 @@ export async function supersededCandidates(cwd, base, head = "HEAD") {
|
|
|
151
101
|
diffType: t.diffType,
|
|
152
102
|
after: afterBlobs.get(t.path) ?? "absent",
|
|
153
103
|
base: baseBlobs.get(t.path) ?? "absent",
|
|
154
|
-
// R0: nothing was parsed. The comparison itself is exact
|
|
155
|
-
//
|
|
156
|
-
//
|
|
157
|
-
// there", which is a judgement no resolution level supports. Rule 2's
|
|
158
|
-
// direction: understate.
|
|
104
|
+
// R0: nothing was parsed. The blob-id comparison itself is exact, but the claim rests on
|
|
105
|
+
// whole-file granularity being the right unit — a judgement no resolution level supports.
|
|
106
|
+
// Rule 2's direction: understate.
|
|
159
107
|
resolution: 0,
|
|
160
108
|
}));
|
|
161
109
|
notes.push(`${candidates.length} file(s) fingerprinted at ${head} and at ${base} (${baseSha.slice(0, 12)}). ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/multipr/fingerprint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/multipr/fingerprint.ts"],"names":[],"mappings":"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"}
|