@dsh-triage/core 0.1.0 → 0.3.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-card.js","sourceRoot":"","sources":["../src/upgrade-card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Resolve `--to next` / `--to latest` before the judgement (`T-806`, `docs/specs/M6-upgrade-day.md` C9).
3
+ *
4
+ * WHY THIS IS A SEPARATE PURE MODULE
5
+ * ----------------------------------
6
+ * Two things must stay true no matter who calls it:
7
+ *
8
+ * 1. **Only `next` and `latest` mean "ask the registry".** Every other string is either an
9
+ * exact version (judged fully offline) or a usage error. A typo like `--to canary` must not
10
+ * silently turn into a network read, and it must not turn into a finding either.
11
+ * 2. **The resolved version is the registry's own string, verbatim.** `semver.valid('v0.3.0')`
12
+ * happily returns `0.3.0`; normalising here would mean the card says `0.3.0` while the
13
+ * registry published `v0.3.0`, which is exactly the kind of quiet rewrite this project
14
+ * refuses to do. A tag whose value is not already an exact version string is a refusal
15
+ * (`tag-not-exact`), never a normalisation.
16
+ *
17
+ * The caller does the I/O (one `fetchPackument('@deepseek-ai/dsh')`) and hands the raw
18
+ * `dist-tags` object in. Nothing in this file reads the network, the clock or the environment.
19
+ */
20
+ /** The two keywords that are allowed to touch the registry. Case-insensitive on input. */
21
+ export declare const DIST_TAG_TARGETS: readonly ["next", "latest"];
22
+ export type DistTagTarget = (typeof DIST_TAG_TARGETS)[number];
23
+ /** The package whose `dist-tags` define "the next dsh". */
24
+ export declare const DIST_TAG_PACKAGE = "@deepseek-ai/dsh";
25
+ /**
26
+ * Which keyword was asked for, if any.
27
+ *
28
+ * Returns `null` for an exact version (the caller keeps going fully offline) and for anything
29
+ * else (the caller reports a usage error). Whitespace is trimmed; case is ignored.
30
+ */
31
+ export declare function distTagTargetOf(requested: string): DistTagTarget | null;
32
+ export type DistTagResolution = {
33
+ readonly ok: true;
34
+ readonly tag: DistTagTarget;
35
+ readonly version: string;
36
+ } | {
37
+ readonly ok: false;
38
+ readonly code: 'not-a-tag';
39
+ readonly detail: string;
40
+ } | {
41
+ readonly ok: false;
42
+ readonly code: 'tag-missing';
43
+ readonly detail: string;
44
+ } | {
45
+ readonly ok: false;
46
+ readonly code: 'tag-not-exact';
47
+ readonly detail: string;
48
+ };
49
+ /**
50
+ * `dist-tags` -> the exact version the tag names, or a refusal that says which one and why.
51
+ *
52
+ * `tag-missing` lists the tags that *are* published: "there is no `next`" is a different
53
+ * sentence from "the registry is unreachable", and the user's next action differs.
54
+ */
55
+ export declare function resolveDistTagTarget(input: {
56
+ readonly requested: string;
57
+ readonly distTags: Readonly<Record<string, string>>;
58
+ }): DistTagResolution;
59
+ //# sourceMappingURL=upgrade-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-target.d.ts","sourceRoot":"","sources":["../src/upgrade-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,6BAA8B,CAAA;AAE3D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7D,2DAA2D;AAC3D,eAAO,MAAM,gBAAgB,qBAAqB,CAAA;AAElD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAIvE;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACpD,GAAG,iBAAiB,CA+BpB"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Resolve `--to next` / `--to latest` before the judgement (`T-806`, `docs/specs/M6-upgrade-day.md` C9).
3
+ *
4
+ * WHY THIS IS A SEPARATE PURE MODULE
5
+ * ----------------------------------
6
+ * Two things must stay true no matter who calls it:
7
+ *
8
+ * 1. **Only `next` and `latest` mean "ask the registry".** Every other string is either an
9
+ * exact version (judged fully offline) or a usage error. A typo like `--to canary` must not
10
+ * silently turn into a network read, and it must not turn into a finding either.
11
+ * 2. **The resolved version is the registry's own string, verbatim.** `semver.valid('v0.3.0')`
12
+ * happily returns `0.3.0`; normalising here would mean the card says `0.3.0` while the
13
+ * registry published `v0.3.0`, which is exactly the kind of quiet rewrite this project
14
+ * refuses to do. A tag whose value is not already an exact version string is a refusal
15
+ * (`tag-not-exact`), never a normalisation.
16
+ *
17
+ * The caller does the I/O (one `fetchPackument('@deepseek-ai/dsh')`) and hands the raw
18
+ * `dist-tags` object in. Nothing in this file reads the network, the clock or the environment.
19
+ */
20
+ import { valid } from 'semver';
21
+ /** The two keywords that are allowed to touch the registry. Case-insensitive on input. */
22
+ export const DIST_TAG_TARGETS = ['next', 'latest'];
23
+ /** The package whose `dist-tags` define "the next dsh". */
24
+ export const DIST_TAG_PACKAGE = '@deepseek-ai/dsh';
25
+ /**
26
+ * Which keyword was asked for, if any.
27
+ *
28
+ * Returns `null` for an exact version (the caller keeps going fully offline) and for anything
29
+ * else (the caller reports a usage error). Whitespace is trimmed; case is ignored.
30
+ */
31
+ export function distTagTargetOf(requested) {
32
+ const normalized = requested.trim().toLowerCase();
33
+ for (const tag of DIST_TAG_TARGETS)
34
+ if (normalized === tag)
35
+ return tag;
36
+ return null;
37
+ }
38
+ /**
39
+ * `dist-tags` -> the exact version the tag names, or a refusal that says which one and why.
40
+ *
41
+ * `tag-missing` lists the tags that *are* published: "there is no `next`" is a different
42
+ * sentence from "the registry is unreachable", and the user's next action differs.
43
+ */
44
+ export function resolveDistTagTarget(input) {
45
+ const tag = distTagTargetOf(input.requested);
46
+ if (tag === null) {
47
+ return {
48
+ ok: false,
49
+ code: 'not-a-tag',
50
+ detail: `"${input.requested.trim()}" is not a dist-tag target; only ${DIST_TAG_TARGETS.join(' / ')} are resolved from the registry`,
51
+ };
52
+ }
53
+ const value = input.distTags[tag];
54
+ if (typeof value !== 'string' || value.trim() === '') {
55
+ const known = Object.keys(input.distTags).sort().join(', ');
56
+ return {
57
+ ok: false,
58
+ code: 'tag-missing',
59
+ detail: known === ''
60
+ ? `${DIST_TAG_PACKAGE} publishes no dist-tags at all, so "${tag}" cannot be resolved`
61
+ : `${DIST_TAG_PACKAGE} publishes no "${tag}" dist-tag (it has: ${known})`,
62
+ };
63
+ }
64
+ const trimmed = value.trim();
65
+ // Verbatim, not normalised: `valid('v1.2.3')` returns `1.2.3`, and that rewrite is not ours to make.
66
+ if (valid(trimmed) !== trimmed) {
67
+ return {
68
+ ok: false,
69
+ code: 'tag-not-exact',
70
+ detail: `dist-tag "${tag}" points at "${value}", which is not an exact version string (ranges and normalised forms are refused)`,
71
+ };
72
+ }
73
+ return { ok: true, tag, version: trimmed };
74
+ }
75
+ //# sourceMappingURL=upgrade-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-target.js","sourceRoot":"","sources":["../src/upgrade-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,0FAA0F;AAC1F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAU,CAAA;AAI3D,2DAA2D;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;AAElD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACjD,KAAK,MAAM,GAAG,IAAI,gBAAgB;QAAE,IAAI,UAAU,KAAK,GAAG;YAAE,OAAO,GAAG,CAAA;IACtE,OAAO,IAAI,CAAA;AACb,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAGpC;IACC,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,oCAAoC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,iCAAiC;SACpI,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,aAAa;YACnB,MAAM,EACJ,KAAK,KAAK,EAAE;gBACV,CAAC,CAAC,GAAG,gBAAgB,uCAAuC,GAAG,sBAAsB;gBACrF,CAAC,CAAC,GAAG,gBAAgB,kBAAkB,GAAG,uBAAuB,KAAK,GAAG;SAC9E,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,qGAAqG;IACrG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,aAAa,GAAG,gBAAgB,KAAK,mFAAmF;SACjI,CAAA;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAC5C,CAAC"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Upgrade impact: "if I move to dsh `<target>`, which loader rows and bundles get denied?"
3
+ *
4
+ * WHAT THIS MODULE IS ALLOWED TO SAY
5
+ * ----------------------------------
6
+ * One thing per unit: **would the target runtime be admitted by the range this unit
7
+ * declares?** It answers that by calling `evaluateAdmission` — the same function `why`,
8
+ * `check`, `audit` and the panel use — with `env.dsh` replaced by the target. There is no
9
+ * second range implementation here on purpose: admission semantics are locked by
10
+ * `data/gold/admission-cases.json`, and a local copy of "engines first, then peers" would
11
+ * be a second rule set that drifts silently.
12
+ *
13
+ * WHAT IT REFUSES TO SAY
14
+ * ----------------------
15
+ * - "this row will *work*": a declaration being admitted is not a measurement;
16
+ * - anything about feature behaviour, configuration names or data migration;
17
+ * - anything about a plugin that is not installed (no manifest = nothing to judge);
18
+ * - anything about another profile. `impact.profile` names the one that was read
19
+ * (`BS-38`: two profiles, two correct answers).
20
+ *
21
+ * PURITY
22
+ * ------
23
+ * No filesystem access, no network, no clock, no environment reads. Rows and bundles arrive
24
+ * already parsed, the timestamp arrives from the caller. Same input (in any array order) →
25
+ * byte-identical output: the ordering keys below form a total order and never use
26
+ * `localeCompare`, whose result depends on the ICU build of the machine that runs it.
27
+ */
28
+ import type { AdmissionMode, AdmissionStatus, Requirement } from './admission.js';
29
+ import { type Locale } from './messages.js';
30
+ import type { EnvFingerprint, Reason, Remediation, Verdict } from './types.js';
31
+ import type { RowDeclaration } from './verdict.js';
32
+ /** The four buckets, in terminal order. A unit lands in exactly one of them. */
33
+ export declare const UPGRADE_BUCKETS: readonly ["would-be-denied", "cannot-tell", "improved", "likely-fine"];
34
+ export type UpgradeBucket = (typeof UPGRADE_BUCKETS)[number];
35
+ /**
36
+ * Machine-readable reason for the bucket a unit landed in.
37
+ *
38
+ * `cannot-tell` is deliberately narrow: it means **admission was not established**, never
39
+ * "it looks fine" and never "a definite denial that we decided not to report".
40
+ */
41
+ export type UpgradeCause = 'target-denied' | 'unusable-declaration' | 'no-declaration' | 'not-installed' | 'runtime-unknown' | 'denied-now-admitted-then' | 'admitted-at-target';
42
+ /** `null` = the runtime string was absent; `invalid-runtime` = present but not a version. */
43
+ export type UpgradeStandingStatus = AdmissionStatus | 'not-installed' | 'invalid-runtime' | null;
44
+ export interface UpgradeStanding {
45
+ readonly runtime: string | null;
46
+ readonly status: UpgradeStandingStatus;
47
+ readonly mode: AdmissionMode | null;
48
+ /** Requirements that did not hold under **this** runtime (empty unless denied). */
49
+ readonly unmet: readonly Requirement[];
50
+ }
51
+ /** A bundle layer as the composition loader read it. */
52
+ export interface UpgradeBundleInput {
53
+ readonly name: string;
54
+ readonly version: string | null;
55
+ /** Raw `package.json`; `null` when the snapshot names a bundle it does not contain. */
56
+ readonly manifest: unknown | null;
57
+ }
58
+ /**
59
+ * Registry lookups are **secondary evidence**: a newer published build whose declaration
60
+ * admits the target. They are attached as annotations and are never read while bucketing.
61
+ */
62
+ export interface UpgradeRegistryFact {
63
+ readonly package: string;
64
+ readonly version: string;
65
+ readonly declaredRange: string;
66
+ /** Computed by the caller with the same `evaluateAdmission`; never recomputed here. */
67
+ readonly admitsTarget: boolean;
68
+ readonly publishedAt?: string | null;
69
+ }
70
+ export interface UpgradeRegistryFailure {
71
+ readonly package: string;
72
+ readonly code: string;
73
+ readonly detail: string;
74
+ }
75
+ export interface UpgradeRegistryNote {
76
+ readonly annotation_only: true;
77
+ readonly tier: 'measured-registry';
78
+ readonly package: string;
79
+ readonly version: string;
80
+ readonly declared_range: string;
81
+ readonly admits_target: boolean;
82
+ readonly published_at: string | null;
83
+ readonly note_id: 'upgrade.registry-annotation';
84
+ }
85
+ export interface UpgradeUnit {
86
+ /** `bundle:<name>` or `row:<rowId>`; unique across the list. */
87
+ readonly id: string;
88
+ readonly kind: 'bundle' | 'row';
89
+ /** Bundle name, or the module a row imports. */
90
+ readonly name: string;
91
+ readonly version: string | null;
92
+ readonly row_ids: readonly string[];
93
+ /** Patch layer that declares the row; `null` for a bundle. */
94
+ readonly source: string | null;
95
+ readonly bucket: UpgradeBucket;
96
+ readonly cause: UpgradeCause;
97
+ /** The current runtime denies this unit too: the upgrade did not cause the denial. */
98
+ readonly already_denied_at_current: boolean;
99
+ readonly current: UpgradeStanding;
100
+ readonly target: UpgradeStanding;
101
+ /** Exactly the remediation the same engine prints for this denial. */
102
+ readonly remediation: readonly Remediation[];
103
+ readonly reasons: readonly Reason[];
104
+ readonly missing_evidence: readonly string[];
105
+ /** Verdict at the target runtime (`env.dsh === target`); `null` when there is nothing to judge. */
106
+ readonly verdict: Verdict | null;
107
+ readonly suggestions: readonly UpgradeRegistryNote[];
108
+ }
109
+ export interface UpgradeCounts {
110
+ readonly bundles: number;
111
+ readonly rows: number;
112
+ readonly would_be_denied: number;
113
+ readonly cannot_tell: number;
114
+ readonly improved: number;
115
+ readonly likely_fine: number;
116
+ readonly total: number;
117
+ }
118
+ export type UpgradeRelation = 'same' | 'newer' | 'older' | 'unknown';
119
+ export interface UpgradeImpact {
120
+ readonly schema_version: 1;
121
+ /** The profile this answer is about. Never "your setup in general". */
122
+ readonly profile: string;
123
+ readonly profile_source: 'live' | 'snapshot';
124
+ readonly current: string | null;
125
+ readonly current_valid: boolean;
126
+ readonly target: string;
127
+ readonly target_valid: true;
128
+ readonly target_relation: UpgradeRelation;
129
+ readonly buckets: readonly UpgradeBucket[];
130
+ readonly counts: UpgradeCounts;
131
+ readonly units: readonly UpgradeUnit[];
132
+ readonly registry: {
133
+ readonly consulted: boolean;
134
+ readonly facts: number;
135
+ readonly failures: readonly UpgradeRegistryFailure[];
136
+ };
137
+ readonly generated_at: string;
138
+ }
139
+ export type UpgradeJudgement = {
140
+ readonly ok: true;
141
+ readonly impact: UpgradeImpact;
142
+ } | {
143
+ readonly ok: false;
144
+ readonly code: 'invalid-target';
145
+ readonly detail: string;
146
+ readonly target: string;
147
+ };
148
+ export interface UpgradeImpactInput {
149
+ /** The environment the profile was read from. `env.dsh` **is** the current runtime. */
150
+ readonly env: EnvFingerprint;
151
+ readonly target: string;
152
+ readonly bundles: readonly UpgradeBundleInput[];
153
+ readonly rows: readonly RowDeclaration[];
154
+ readonly generatedAt: string;
155
+ readonly profileSource?: 'live' | 'snapshot';
156
+ readonly registry?: readonly UpgradeRegistryFact[];
157
+ readonly registryFailures?: readonly UpgradeRegistryFailure[];
158
+ }
159
+ /**
160
+ * Validate a target before anything is read.
161
+ *
162
+ * Exposed because the CLI must reject `--to ^0.3.0` **before** it touches a profile: a
163
+ * usage error that depends on whether the profile exists would report the wrong thing.
164
+ */
165
+ export declare function upgradeTargetProblem(target: string): string | null;
166
+ /**
167
+ * Judge the impact of moving to `input.target`.
168
+ *
169
+ * The target is validated first: `semver.satisfies('0.3', '*')` returns `false` without
170
+ * throwing, so an unvalidated target would silently turn every unit into "denied". A bad
171
+ * target is a usage error, not a finding.
172
+ */
173
+ export declare function judgeUpgradeImpact(input: UpgradeImpactInput): UpgradeJudgement;
174
+ /**
175
+ * Turn one packument's version→manifest map into ONE annotation.
176
+ *
177
+ * Chosen here (in core, next to the range logic) rather than in the CLI, because picking
178
+ * "the newest version whose declaration admits the target" needs semver ordering — a second
179
+ * implementation of that ordering in the CLI would be exactly the kind of drift this file
180
+ * exists to avoid.
181
+ *
182
+ * `admitsTarget: false` is a legitimate answer: it means "I looked, and no published version
183
+ * declares the target". Dropping it would make the search invisible.
184
+ */
185
+ export declare function registryFactFor(input: {
186
+ readonly packageName: string;
187
+ readonly versions: ReadonlyMap<string, unknown>;
188
+ readonly target: string;
189
+ readonly publishedAt?: Readonly<Record<string, string>> | null;
190
+ }): UpgradeRegistryFact | null;
191
+ /**
192
+ * Total order: bucket → kind → name → version → id.
193
+ *
194
+ * `localeCompare` is not used anywhere in this chain: it depends on the ICU build, so the
195
+ * same input could sort differently on two machines and the artifact would stop reproducing.
196
+ */
197
+ export declare function compareUnits(left: UpgradeUnit, right: UpgradeUnit): number;
198
+ /** Terminal rendering. Pure: locale in, text out; no colour, no clock, no width probing. */
199
+ export declare function renderUpgradeImpact(impact: UpgradeImpact, locale: Locale): string;
200
+ /** Convenience for callers that only need a yes/no: is anything going to be denied? */
201
+ export declare function hasNewDenials(impact: UpgradeImpact): boolean;
202
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../src/upgrade.ts"],"names":[],"mappings":"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"}