31 lines
1.3 KiB
TypeScript
31 lines
1.3 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
import { canonicalGrowEventEnvelope } from "../src/events/record-grow-event.js";
|
|
import { normalizeGrowEvent } from "../src/events/normalize.js";
|
|
|
|
/**
|
|
* Signal registration and all 67 extraction policies belong to QScore. This
|
|
* backend contract test prevents the old local registry/projector from being
|
|
* reintroduced while proving the complete raw evidence reaches QScore.
|
|
*/
|
|
const raw = {
|
|
id: "evt-full-evidence",
|
|
source: "resume-builder",
|
|
type: "resume.analysis.completed",
|
|
category: "service" as const,
|
|
occurredAt: "2026-07-14T00:00:00.000Z",
|
|
payload: {
|
|
analysis: {
|
|
score_breakdown: [{ category: "ATS Compatibility", score: 70 }],
|
|
dimensional_scores: [{ dimension: "Keywords", score: 60 }],
|
|
},
|
|
},
|
|
};
|
|
const event = canonicalGrowEventEnvelope(normalizeGrowEvent(raw), "real-user");
|
|
assert.deepEqual(event.payload, raw.payload, "raw evidence must reach QScore without signal extraction");
|
|
|
|
const projector = await readFile(new URL("../src/events/projectors/qscore-projector.ts", import.meta.url), "utf8");
|
|
assert.equal(projector.includes("extractQscoreSignals"), false);
|
|
assert.equal(projector.includes("signalId"), false);
|
|
console.log("signal registry ownership test passed");
|