ccqa 1.31.2 → 1.31.4
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/bin/ccqa.mjs +23 -3
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/dist/bin/ccqa.mjs
CHANGED
|
@@ -15579,10 +15579,11 @@ async function runRecord(specPath, opts) {
|
|
|
15579
15579
|
let sealed = true;
|
|
15580
15580
|
let tracingStep;
|
|
15581
15581
|
let abortCause;
|
|
15582
|
+
let traceFailureNote;
|
|
15582
15583
|
const teardown = createRunTeardown();
|
|
15583
15584
|
teardown.onFinalize(async () => {
|
|
15584
15585
|
if (!push) return;
|
|
15585
|
-
sealed = await sealRecordPush(push, featureName, specName, recorded, abortCause !== void 0 ? abortNote(abortCause, tracingStep) :
|
|
15586
|
+
sealed = await sealRecordPush(push, featureName, specName, recorded, abortCause !== void 0 ? abortNote(abortCause, tracingStep) : traceFailureNote);
|
|
15586
15587
|
});
|
|
15587
15588
|
const disposeSignalHandlers = installTeardownSignalHandlers(teardown, (sig) => {
|
|
15588
15589
|
abortCause = `terminated by signal (${sig})`;
|
|
@@ -15609,6 +15610,7 @@ async function runRecord(specPath, opts) {
|
|
|
15609
15610
|
}
|
|
15610
15611
|
});
|
|
15611
15612
|
tracingStep = void 0;
|
|
15613
|
+
if (traceResult.status !== "passed") traceFailureNote = "trace finished FAILED — a step did not complete, so the recording does not demonstrate the spec";
|
|
15612
15614
|
blank();
|
|
15613
15615
|
await learnFromTrace({
|
|
15614
15616
|
enabled: opts.learnHubTracePrompt === true,
|
|
@@ -15633,14 +15635,17 @@ async function runRecord(specPath, opts) {
|
|
|
15633
15635
|
} finally {
|
|
15634
15636
|
await releaseLock();
|
|
15635
15637
|
}
|
|
15636
|
-
recorded = generated;
|
|
15638
|
+
recorded = generated && traceFailureNote === void 0;
|
|
15637
15639
|
} finally {
|
|
15638
15640
|
if (deadline !== void 0) clearTimeout(deadline);
|
|
15639
15641
|
await teardown.run();
|
|
15640
15642
|
disposeSignalHandlers();
|
|
15641
15643
|
}
|
|
15642
15644
|
if (!sealed) process.exit(2);
|
|
15643
|
-
if (!recorded)
|
|
15645
|
+
if (!recorded) {
|
|
15646
|
+
if (traceFailureNote !== void 0) error(traceFailureNote);
|
|
15647
|
+
process.exit(1);
|
|
15648
|
+
}
|
|
15644
15649
|
}
|
|
15645
15650
|
/** `--timeout <seconds>`: a positive whole number of seconds. */
|
|
15646
15651
|
function parseTimeoutSeconds(raw) {
|
|
@@ -15898,6 +15903,21 @@ For a \`mode: live\` spec there is no generated surface, so always \`spec\`.
|
|
|
15898
15903
|
|
|
15899
15904
|
${surfaceAxisAside("`TEST_DRIFT`")}
|
|
15900
15905
|
|
|
15906
|
+
## What the \`replay-unstable\` comments are
|
|
15907
|
+
|
|
15908
|
+
Generated code may carry \`// [warn] replay-unstable: ...\` comments. These are
|
|
15909
|
+
observations from the one validation replay run right after recording — a
|
|
15910
|
+
selector that did not appear within its timeout *in that run*, on that day's
|
|
15911
|
+
data and load. They are diagnostic breadcrumbs, not part of the test, and a
|
|
15912
|
+
slow environment produces them on selectors that are perfectly correct.
|
|
15913
|
+
|
|
15914
|
+
Judge the selector the comment sits on like any other: find its string in the
|
|
15915
|
+
source. If it is there, the comment alone is **not** drift evidence — do not
|
|
15916
|
+
cite a \`replay-unstable\` comment as your evidence for TEST_DRIFT. If the
|
|
15917
|
+
string is genuinely absent from the source, the finding stands on that
|
|
15918
|
+
absence, with the source as the citation, whether or not a comment happens to
|
|
15919
|
+
sit nearby.
|
|
15920
|
+
|
|
15901
15921
|
## Earning each answer
|
|
15902
15922
|
|
|
15903
15923
|
- **No drift is a claim, not a default.** Make it after picking the concrete strings from *every* surface you were given — the spec's \`expected\` and the generated code's selectors alike — and finding each of them in the source. Clearing the test case because one surface checked out is the most common way to miss a real finding. If you never looked, the honest answer is UNKNOWN.
|
package/dist/package.json
CHANGED