Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
6639161
Enforce finding detail contracts
soyeon-oai Aug 14, 2026
b10dbd7
Accept string attack path assessments
soyeon-oai Aug 15, 2026
4ee0380
Type structured reachability fields
soyeon-oai Aug 15, 2026
95826e3
Type dataflow transformations
soyeon-oai Aug 15, 2026
0de470a
Type public attack-path aliases
soyeon-oai Aug 15, 2026
7bbf75d
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 15, 2026
cc462b7
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 15, 2026
0d5d452
fix: preserve compatible finding details
soyeon-oai Aug 15, 2026
d8ec936
fix: prefer populated finding aliases
soyeon-oai Aug 15, 2026
0842ef0
fix: merge compatible finding aliases
soyeon-oai Aug 15, 2026
a358237
fix: preserve legacy finding compatibility
soyeon-oai Aug 15, 2026
9a80b11
fix: merge all finding compatibility fields
soyeon-oai Aug 15, 2026
e6bc5b8
fix: enforce evidence alias consistency
soyeon-oai Aug 15, 2026
169a1ac
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 15, 2026
26fd835
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 16, 2026
ff4de63
fix: sync remaining finding compatibility
soyeon-oai Aug 16, 2026
7340e6c
fix: preserve legacy evidence compatibility
soyeon-oai Aug 16, 2026
548f2ad
Fix remaining finding detail contract gaps
soyeon-oai Aug 16, 2026
45472b2
Preserve empty legacy sealed fields
soyeon-oai Aug 16, 2026
5d900e5
Preserve null legacy sealed fields
soyeon-oai Aug 16, 2026
99925cc
Preserve null nested attack-path details
soyeon-oai Aug 16, 2026
fbcd699
Preserve null legacy detail scalars
soyeon-oai Aug 16, 2026
54d27ea
Preserve blank legacy detail scalars
soyeon-oai Aug 16, 2026
639d524
Preserve blank legacy validation statuses
soyeon-oai Aug 16, 2026
4e762b7
Fix legacy scan compatibility gaps
soyeon-oai Aug 16, 2026
7f585f1
Validate legacy draft evidence catalogs
soyeon-oai Aug 16, 2026
43f73df
Make report projection test CRLF-safe
soyeon-oai Aug 16, 2026
7271a5e
Merge legacy finding preview evidence
soyeon-oai Aug 16, 2026
5c3d7a5
Sync finding preview behavior
soyeon-oai Aug 17, 2026
c249361
Fix remaining plugin contract reviews
soyeon-oai Aug 17, 2026
89fdba2
Merge root-cause preview aliases
soyeon-oai Aug 17, 2026
8a69cf5
Normalize legacy finding details consistently
soyeon-oai Aug 17, 2026
2ba5bcf
Normalize report test newlines on Windows
soyeon-oai Aug 17, 2026
4bf5189
Preserve duplicate stable finding identities
soyeon-oai Aug 17, 2026
42c47bd
Validate legacy finding aliases consistently
soyeon-oai Aug 17, 2026
ca1396b
Project top-level attack path summaries
soyeon-oai Aug 17, 2026
97e81e0
Normalize and render attack path details
soyeon-oai Aug 17, 2026
e62a323
Project typed finding assessments
soyeon-oai Aug 17, 2026
d4e27a3
Project attack path context
soyeon-oai Aug 17, 2026
97b91aa
Merge remote-tracking branch 'origin/main' into soyeon/finding-detail…
soyeon-oai Aug 17, 2026
351ac48
Preserve legacy finding details in projections
soyeon-oai Aug 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified sdk/typescript/_bundled_plugin/mcp/server.mjs.br.part-000
Binary file not shown.
Binary file modified sdk/typescript/_bundled_plugin/mcp/server.mjs.br.part-001
Binary file not shown.
271 changes: 269 additions & 2 deletions sdk/typescript/_bundled_plugin/schemas/findings.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -301,13 +301,280 @@
"type": [
"object",
"null"
]
],
"properties": {
"assertions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"counterEvidence": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"evidence": {
"type": [
"string",
"array"
],
"minLength": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"evidenceRefs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"evidence_refs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"limitations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"method": {
"type": "string",
"minLength": 1
Comment thread
soyeon-oai marked this conversation as resolved.
},
"status": {
"type": [
"string",
"null"
],
"minLength": 1
},
"summary": {
"type": "string",
"minLength": 1
},
"disposition": {
"type": [
"string",
"null"
],
"minLength": 1
},
"result": {
"type": [
"string",
"null"
],
"minLength": 1
}
}
},
"attackPath": {
"type": [
"object",
"null"
]
],
"properties": {
"assumptions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"blindspots": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"controls": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"dataFlow": {
"type": [
"string",
"object"
],
"minLength": 1,
"properties": {
"summary": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 1 },
"sink": { "type": "string", "minLength": 1 },
"outcome": { "type": "string", "minLength": 1 },
"transformations": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidenceRefs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidence_refs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
}
}
},
"data_flow": {
"type": [
"string",
"object"
],
"minLength": 1,
"properties": {
"summary": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 1 },
"sink": { "type": "string", "minLength": 1 },
"outcome": { "type": "string", "minLength": 1 },
"transformations": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidenceRefs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidence_refs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
}
}
},
"dataflow": {
"type": [
"string",
"object"
],
"minLength": 1,
"properties": {
"summary": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 1 },
"sink": { "type": "string", "minLength": 1 },
"outcome": { "type": "string", "minLength": 1 },
"transformations": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidenceRefs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidence_refs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
}
}
},
"evidenceRefs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"evidence_refs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"impact": {
"type": [
"string",
"object",
"null"
],
"minLength": 1,
"properties": {
"level": { "type": "string", "minLength": 1 },
"rationale": { "type": "string", "minLength": 1 },
"why": { "type": "string", "minLength": 1 }
}
},
"likelihood": {
"type": [
"string",
"object",
"null"
],
"minLength": 1,
"properties": {
"level": { "type": "string", "minLength": 1 },
"rationale": { "type": "string", "minLength": 1 },
"why": { "type": "string", "minLength": 1 }
}
},
"limitations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"preconditions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"reachability": {
"type": [
"string",
"object"
],
"minLength": 1,
"properties": {
"summary": { "type": "string", "minLength": 1 },
"attacker": { "type": "string", "minLength": 1 },
"entrypoint": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 1 },
"sink": { "type": "string", "minLength": 1 },
"outcome": { "type": "string", "minLength": 1 },
"preconditions": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidenceRefs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidence_refs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
}
}
},
"steps": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"summary": {
"type": "string",
"minLength": 1
}
}
},
"remediationTests": {
"type": "array",
Expand Down
Loading
Loading