fix!: preserve feature traces when owner lookup is unavailable (#8368)

* fix!: preserve feature traces when owner lookup is unavailable

* test: strengthen feature trace cancellation assertions

* fix: preserve feature trace provider readiness errors

* test: verify all feature trace reference sources

* test: verify IDA guidance at its owning boundary

* style: format feature trace regression
This commit is contained in:
morluto authored and GitHub committed 2026-11-01 05:38:40 +08:00
1 parent f72638f6b1
commit 6e9ee97a69
16 files changed
+440 -37

No files matched your search

+40 -1
View File
@@ -21,6 +21,8 @@ export const verifyKunaReferences = async ({
address,
expectedCaller,
nativeIncoming,
verifyNamedTrace = false,
minimumTraceReferences = 1,
}) => {
const before = await Promise.all([
entries(join(cacheRoot, "projects")),
@@ -80,7 +82,44 @@ export const verifyKunaReferences = async ({
direction: "forward",
});
assert.equal(path.value.goal_status, "reached");
composed = { graph_ms: graph.ms, path_ms: path.ms };
let traceMs;
if (verifyNamedTrace) {
const trace = await call("trace_feature", { query: name });
traceMs = trace.ms;
assert.ok(
trace.value.matches.some(
(match) => match.type === "procedure" && match.address === address,
),
`${name} was not retained in its feature trace`,
);
assert.ok(
incoming.value.length >= minimumTraceReferences,
`${name} fixture did not produce the expected incoming references`,
);
const references = trace.value.references.filter(
(row) => row.target_address === address,
);
assert.deepEqual(
references.map((row) => row.source_address).sort(),
[...incoming.value].sort(),
`${name} lost or duplicated an observed incoming reference`,
);
for (const reference of references) {
assert.equal(reference.containing_procedure.status, "unavailable");
assert.equal(reference.containing_procedure.provider_id, "kuna");
assert.ok(
trace.value.residual_unknowns.some((unknown) =>
unknown.includes(reference.source_address),
),
);
}
assert.equal(trace.value.truncated, false);
}
composed = {
graph_ms: graph.ms,
path_ms: path.ms,
...(traceMs === undefined ? {} : { feature_trace_ms: traceMs }),
};
}
assert.deepEqual(
await Promise.all([