mirror of
https://github.com/morluto/rea.git
synced 2026-11-09 08:17:02 +00:00
fix(evidence): preserve subjects in derived workflows (#9492)
* fix(javascript): preserve verified trace evidence subjects Co-authored-by: Felix <3937061056@qq.com> * fix(evidence): preserve selected subject names in views * fix(evidence): preserve subjects across related workflows * fix(evidence): retain inventory projection subjects * fix(managed): validate projected graph root identity * style: format evidence and native command code * fix(javascript): validate static graph root identity * test(javascript): update feature trace graph expectations --------- Co-authored-by: Felix <3937061056@qq.com>
This commit is contained in:
1 parent
4d7c6efe9a
commit
52fe342c73
28 files changed
+615
-151
No files matched your search
@@ -9,7 +9,9 @@ import {
|
||||
import { join } from "node:path";
|
||||
import { expect } from "vitest";
|
||||
|
||||
import { parseEvidence } from "../../../src/domain/evidence.js";
|
||||
import { createEvidence, parseEvidence } from "../../../src/domain/evidence.js";
|
||||
import { javascriptApplicationAnalysisResultSchema } from "../../../src/domain/javascript/javascriptApplicationAnalysis.js";
|
||||
import { createJavaScriptSemanticGraph } from "../../../src/domain/javascript/javascriptSemanticGraph.js";
|
||||
import { parseEvidenceBundle } from "../../../src/domain/evidenceBundle.js";
|
||||
import { parseApplicationGraphEvidence } from "../../../src/application/javascript/JavaScriptApplicationEvidenceGraph.js";
|
||||
import { JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE } from "../../../src/contracts/javascript/javascriptRuntimeReconciliationExample.js";
|
||||
@@ -45,6 +47,40 @@ cliTest(
|
||||
});
|
||||
expect(cliResponse.exitCode, cliResponse.stderr).toBe(0);
|
||||
const cliEvidence = parseEvidence(cliResponse.json);
|
||||
const parsed = javascriptApplicationAnalysisResultSchema.parse(
|
||||
cliEvidence.normalized_result,
|
||||
);
|
||||
const { graph_id: _id, ...semantic } = parsed.semantic_graph;
|
||||
const foreignSha = "f".repeat(64);
|
||||
const forged = createEvidence(
|
||||
{ path: parsed.input_path, sha256: foreignSha, format: parsed.format },
|
||||
cliEvidence.provider,
|
||||
{
|
||||
operation: cliEvidence.operation,
|
||||
predicateType: cliEvidence.predicate_type,
|
||||
parameters: cliEvidence.parameters,
|
||||
confidence: "derived",
|
||||
authority: "shipped-artifact",
|
||||
result: {
|
||||
...parsed,
|
||||
root_artifact_sha256: foreignSha,
|
||||
semantic_graph: createJavaScriptSemanticGraph({
|
||||
...semantic,
|
||||
root_artifact_sha256: foreignSha,
|
||||
}),
|
||||
},
|
||||
},
|
||||
);
|
||||
expect(parseApplicationGraphEvidence(forged)).toMatchObject({
|
||||
ok: false,
|
||||
error: {
|
||||
issues: expect.arrayContaining([
|
||||
expect.objectContaining({
|
||||
path: ["normalized_result", "root_artifact_sha256"],
|
||||
}),
|
||||
]),
|
||||
},
|
||||
});
|
||||
|
||||
for (const command of ["analyze", "analyze-javascript-application"]) {
|
||||
const relativeResponse = await cli.run({
|
||||
|
||||
Reference in new issue
Block a user