@profile-as-code/core 0.1.2 → 0.1.3
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/achievements.d.ts +83 -0
- package/dist/achievements.d.ts.map +1 -0
- package/dist/achievements.js +207 -0
- package/dist/achievements.js.map +1 -0
- package/dist/completeness.d.ts +1 -1
- package/dist/completeness.d.ts.map +1 -1
- package/dist/completeness.js +21 -4
- package/dist/completeness.js.map +1 -1
- package/dist/generated/schema.zod.d.ts +38 -1
- package/dist/generated/schema.zod.d.ts.map +1 -1
- package/dist/generated/schema.zod.js +2 -2
- package/dist/generated/schema.zod.js.map +1 -1
- package/dist/geo.d.ts +29 -2
- package/dist/geo.d.ts.map +1 -1
- package/dist/geo.js +106 -35
- package/dist/geo.js.map +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +8 -0
- package/dist/load.js.map +1 -1
- package/dist/presence.d.ts +24 -5
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +20 -8
- package/dist/presence.js.map +1 -1
- package/dist/types.d.ts +35 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +16 -2
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/presence.js
CHANGED
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
* Partial coverage is NEVER in-sync: a release that changed two units and the
|
|
21
21
|
* surface confirmed only one still owes the other, and `missingUnits` names it.
|
|
22
22
|
*
|
|
23
|
+
* **Two causes, two fields (#408).** "No ledger record" and "no such SSOT unit"
|
|
24
|
+
* both make a surface `never`, but they mean opposite things to the operator: the
|
|
25
|
+
* first is a pending fan-out of a CORRECT row, the second is the row being wrong.
|
|
26
|
+
* They travel separately (`missingUnits` / `unknownUnits`) so a consumer never
|
|
27
|
+
* reports one as the other.
|
|
28
|
+
*
|
|
23
29
|
* A surface the ledger cannot record (a repo-meta/distribution slug outside the
|
|
24
30
|
* platform enum) therefore reads `never`: the honest v1 answer — the plan names
|
|
25
31
|
* what must be touched; closing that loop is a later contract change, never a
|
|
@@ -67,21 +73,25 @@ function kindOf(surface) {
|
|
|
67
73
|
/** The §19 ledger derivation for one `(release, surface)` pair. */
|
|
68
74
|
function surfaceState(profile, release, surface, unitHashes) {
|
|
69
75
|
const missingUnits = [];
|
|
76
|
+
const unknownUnits = [];
|
|
70
77
|
const changed = release.changedUnits ?? [];
|
|
71
78
|
if (changed.length === 0)
|
|
72
|
-
return { state: "never", missingUnits };
|
|
79
|
+
return { state: "never", missingUnits, unknownUnits };
|
|
73
80
|
let stale = false;
|
|
74
81
|
for (const key of changed) {
|
|
75
82
|
const hash = unitHashes.get(key);
|
|
83
|
+
// (a) No SSOT unit behind the key: the RELEASE ROW is wrong (a deleted or
|
|
84
|
+
// mistyped key), so the operator has something to fix.
|
|
76
85
|
if (hash === undefined) {
|
|
77
|
-
|
|
86
|
+
unknownUnits.push(key);
|
|
78
87
|
continue;
|
|
79
88
|
}
|
|
80
89
|
// `deployments` is keyed by ledger key then by the platform enum; a
|
|
81
90
|
// non-profile surface simply has no record there (→ never, declared above).
|
|
82
91
|
const record = profile.deployments[key]?.[surface];
|
|
83
|
-
// A
|
|
84
|
-
// absence to ignore: it makes the
|
|
92
|
+
// (b) A valid SSOT unit with no record on THIS surface is a pending
|
|
93
|
+
// fan-out, not an absence to ignore and not a row to fix: it makes the
|
|
94
|
+
// surface `never` (SPEC §7.8/§22.2, #408).
|
|
85
95
|
if (record === undefined) {
|
|
86
96
|
missingUnits.push(key);
|
|
87
97
|
continue;
|
|
@@ -89,9 +99,10 @@ function surfaceState(profile, release, surface, unitHashes) {
|
|
|
89
99
|
if (record.contentHash !== hash)
|
|
90
100
|
stale = true;
|
|
91
101
|
}
|
|
92
|
-
if (missingUnits.length > 0)
|
|
93
|
-
return { state: "never", missingUnits };
|
|
94
|
-
|
|
102
|
+
if (missingUnits.length > 0 || unknownUnits.length > 0) {
|
|
103
|
+
return { state: "never", missingUnits, unknownUnits };
|
|
104
|
+
}
|
|
105
|
+
return { state: stale ? "stale" : "in-sync", missingUnits, unknownUnits };
|
|
95
106
|
}
|
|
96
107
|
function unitHashMap(profile) {
|
|
97
108
|
const map = new Map();
|
|
@@ -154,7 +165,8 @@ export function releasePlan(profile, id) {
|
|
|
154
165
|
...surfaceState(profile, release, surface, unitHashes),
|
|
155
166
|
};
|
|
156
167
|
})
|
|
157
|
-
.sort(compareSurfaces)
|
|
168
|
+
.sort(compareSurfaces)
|
|
169
|
+
.map((row, index) => ({ order: index + 1, ...row }));
|
|
158
170
|
const summary = release.summary?.en ?? release.id;
|
|
159
171
|
const kinds = [];
|
|
160
172
|
for (const row of surfaces)
|
package/dist/presence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export type Profile = import("zod").z.infer<typeof profileSchema>;
|
|
|
17
17
|
/** Workspace flavor (D15, §17): person (default) or brand. */
|
|
18
18
|
export type Flavor = NonNullable<Profile["flavor"]>;
|
|
19
19
|
/** Normalized profile: array properties are always defined (empty when absent). */
|
|
20
|
-
export type LoadedProfile = Omit<Profile, "bios" | "headlines" | "skills" | "experience" | "projects" | "publications" | "checks" | "socialHandles" | "press" | "education" | "languages" | "deployments" | "credentials" | "artifacts" | "faq" | "releases"> & {
|
|
20
|
+
export type LoadedProfile = Omit<Profile, "bios" | "headlines" | "skills" | "experience" | "projects" | "publications" | "checks" | "socialHandles" | "press" | "education" | "languages" | "deployments" | "credentials" | "artifacts" | "faq" | "releases" | "achievements"> & {
|
|
21
21
|
flavor: Flavor;
|
|
22
22
|
bios: NonNullable<Profile["bios"]>;
|
|
23
23
|
headlines: NonNullable<Profile["headlines"]>;
|
|
@@ -36,6 +36,8 @@ export type LoadedProfile = Omit<Profile, "bios" | "headlines" | "skills" | "exp
|
|
|
36
36
|
faq: NonNullable<Profile["faq"]>;
|
|
37
37
|
/** v1.15 (D23): the release events; always defined on a loaded profile. */
|
|
38
38
|
releases: NonNullable<Profile["releases"]>;
|
|
39
|
+
/** v1.16 (D24, #446): the career impact log; always defined on a loaded profile. */
|
|
40
|
+
achievements: NonNullable<Profile["achievements"]>;
|
|
39
41
|
};
|
|
40
42
|
/**
|
|
41
43
|
* v1.6 (#103): the link ROLE — a TRANSLATION LAYER of this engine onto schema.org,
|
|
@@ -87,8 +89,15 @@ export type GeneratedLangMap = {
|
|
|
87
89
|
* v1.1: role/degree/field can be a plain string (v1) or a bilingual langMap.
|
|
88
90
|
* Reading helper — consumers never null-check or narrow by hand.
|
|
89
91
|
* Proper nouns (org, institution, venue) are never langMap — pass them directly (SPEC §11).
|
|
92
|
+
*
|
|
93
|
+
* `lang` (issue #415): the language-aware form of the same rule `compile()`
|
|
94
|
+
* applies to text fields — the REQUESTED language, falling back to `en`, with
|
|
95
|
+
* an empty string counting as absent. It exists for consumers that print a
|
|
96
|
+
* FACT block (the `refine` task template) where compile passes the raw langMap
|
|
97
|
+
* through untouched; without a `lang` the behaviour is the pre-#415 one
|
|
98
|
+
* (`en` only), so no existing caller changes.
|
|
90
99
|
*/
|
|
91
|
-
export declare function textOf(v: string | GeneratedLangMap | undefined): string;
|
|
100
|
+
export declare function textOf(v: string | GeneratedLangMap | undefined, lang?: Lang): string;
|
|
92
101
|
/** The platform set — the generated `PLATFORM_SLUGS` (D3/D16, #154).
|
|
93
102
|
*
|
|
94
103
|
* `schema/profile.schema.json` (`$defs.platform.enum`) stays the single
|
|
@@ -120,6 +129,11 @@ export interface GeoCheck {
|
|
|
120
129
|
score: number;
|
|
121
130
|
/** 0..1 — share of the total score this check contributes. */
|
|
122
131
|
weight: number;
|
|
132
|
+
/** SPEC §8 (#399): a code that has nothing to measure in this workspace.
|
|
133
|
+
* `applicable: false` is excluded from the weighted mean (and from its section's
|
|
134
|
+
* score) instead of scoring a sentinel; absent = applicable. The declared
|
|
135
|
+
* `weight` stays visible so a reader can see what the code would carry. */
|
|
136
|
+
applicable?: boolean;
|
|
123
137
|
detail: string;
|
|
124
138
|
/** v1.10 (#289), additive: the reporting tier. Absent = `warn` (the pre-v1.10
|
|
125
139
|
* checks are all warnings). `info` NEVER changes the pass/fail story — a
|
|
@@ -131,8 +145,14 @@ export interface GeoSection {
|
|
|
131
145
|
label: string;
|
|
132
146
|
detail: string;
|
|
133
147
|
checks: GeoCheck[];
|
|
134
|
-
/** 0..100 for this section alone.
|
|
148
|
+
/** 0..100 for this section alone. When `applicable` is false this is a
|
|
149
|
+
* placeholder (0), not a measurement — no code in the section can contribute
|
|
150
|
+
* weight. Absent = applicable (all current sections). */
|
|
135
151
|
score: number;
|
|
152
|
+
/** §8/#399: present and false when no code in the section can contribute
|
|
153
|
+
* weight (every code N/A, or every applicable code declares weight 0). The
|
|
154
|
+
* section then has no mean and contributes nothing to the overall. */
|
|
155
|
+
applicable?: boolean;
|
|
136
156
|
}
|
|
137
157
|
export interface StructuredDataReadiness {
|
|
138
158
|
/** schema.org entity emitted: `Person` (default) or `Organization` (brand flavor, D15/§17). */
|
|
@@ -258,7 +278,19 @@ export interface GeoReport {
|
|
|
258
278
|
};
|
|
259
279
|
/** Flat list of every scored check (for `pasco validate` output). */
|
|
260
280
|
checks: GeoCheck[];
|
|
281
|
+
/**
|
|
282
|
+
* The index's own provenance (SPEC §8, #433): a deterministic score over the
|
|
283
|
+
* fields the workspace DECLARES, computed by fixed criteria — never a
|
|
284
|
+
* measurement of what answer engines actually cite. A consumer that quotes
|
|
285
|
+
* `score` must read this first; `measured: false` is the machine-readable
|
|
286
|
+
* half of the same statement.
|
|
287
|
+
*/
|
|
288
|
+
basis: GeoBasisVersion;
|
|
289
|
+
measured: false;
|
|
261
290
|
}
|
|
291
|
+
/** The version of the weights and predicates that produced a `GeoReport.score`.
|
|
292
|
+
* Bump it when a weight or a predicate changes (SPEC §8, #433). */
|
|
293
|
+
export type GeoBasisVersion = "geo-heuristic-v2";
|
|
262
294
|
/** The language-aware slice a renderer consumes (SPEC §7, compile()). */
|
|
263
295
|
export interface PlatformProfile {
|
|
264
296
|
platform: Platform;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,2EAA2E;AAC3E,MAAM,MAAM,OAAO,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAElE,8DAA8D;AAC9D,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEpD,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,OAAO,EACL,MAAM,GACN,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,cAAc,GACd,QAAQ,GACR,eAAe,GACf,OAAO,GACP,WAAW,GACX,WAAW,GACX,aAAa,GACb,aAAa,GACb,WAAW,GACX,KAAK,GACL,UAAU,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -15,11 +15,25 @@ import { PLATFORM_SLUGS } from "./generated/platforms.gen.js";
|
|
|
15
15
|
* v1.1: role/degree/field can be a plain string (v1) or a bilingual langMap.
|
|
16
16
|
* Reading helper — consumers never null-check or narrow by hand.
|
|
17
17
|
* Proper nouns (org, institution, venue) are never langMap — pass them directly (SPEC §11).
|
|
18
|
+
*
|
|
19
|
+
* `lang` (issue #415): the language-aware form of the same rule `compile()`
|
|
20
|
+
* applies to text fields — the REQUESTED language, falling back to `en`, with
|
|
21
|
+
* an empty string counting as absent. It exists for consumers that print a
|
|
22
|
+
* FACT block (the `refine` task template) where compile passes the raw langMap
|
|
23
|
+
* through untouched; without a `lang` the behaviour is the pre-#415 one
|
|
24
|
+
* (`en` only), so no existing caller changes.
|
|
18
25
|
*/
|
|
19
|
-
export function textOf(v) {
|
|
26
|
+
export function textOf(v, lang) {
|
|
20
27
|
if (v == null)
|
|
21
28
|
return "";
|
|
22
|
-
|
|
29
|
+
if (typeof v === "string")
|
|
30
|
+
return v;
|
|
31
|
+
if (lang !== undefined) {
|
|
32
|
+
const direct = v[lang];
|
|
33
|
+
if (direct)
|
|
34
|
+
return direct;
|
|
35
|
+
}
|
|
36
|
+
return v.en ?? "";
|
|
23
37
|
}
|
|
24
38
|
/** The platform set — the generated `PLATFORM_SLUGS` (D3/D16, #154).
|
|
25
39
|
*
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAuG9D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,CAAwC,EAAE,IAAW;IAC1E,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IACzB,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;;;;;;sBAOsB;AACtB,MAAM,CAAC,MAAM,SAAS,GAAwB,cAAc,CAAC;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "0.1.
|
|
7
|
+
"version": "0.1.3",
|
|
8
8
|
"description": "Core engine of profile-as-code: load (schema-validate), driftCheck, geoCheck, compile. Contract source is schema/profile.schema.json (D3) — Zod is generated, never hand-written.",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"license": "MIT",
|