Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
3c8324d
add new json struture
ConnorJKY Sep 11, 2025
87efbe2
add detailed info for harnesses in json handler
ConnorJKY Sep 11, 2025
4c21c65
feat: finish phase2 prototype on harness_runner
yimingyinqwqq Sep 16, 2025
2351326
feat: add harness that fail fast to json handler and refactor logic t…
yimingyinqwqq Sep 17, 2025
e7fa713
Phase 3: Summary and Timing
jingfei-xu Sep 17, 2025
edc5550
Error Details + Property Details
jingfei-xu Sep 18, 2025
7b08e18
Move harness info to match the result; add version number and timeline
ConnorJKY Sep 18, 2025
5346c86
Merge remote-tracking branch 'origin/feat/json-handler' into feat/jso…
ConnorJKY Sep 18, 2025
cacdb7b
Move harness info to match the result; add version number and timeline
ConnorJKY Sep 18, 2025
f6d23e6
Error Details and Property Analysis
jingfei-xu Sep 18, 2025
f89bb7f
refactor existing json handler code to frontend folder
yimingyinqwqq Sep 19, 2025
c628621
Restore util.rs and refactor schema logic into frontend/schema_utils.rs
yimingyinqwqq Sep 20, 2025
3822a14
Extend frontend util function for project and export run metadata; Re…
ConnorJKY Sep 21, 2025
0591837
finish json schma implementation of verification_results
yimingyinqwqq Sep 23, 2025
961591c
Update metadata of target, contract in schema
ConnorJKY Sep 29, 2025
74bb569
Merge remote-tracking branch 'origin/feat/json-handler' into feat/jso…
ConnorJKY Sep 29, 2025
d432b8d
chore: Remove build artifacts from first-steps-v1/target
yimingyinqwqq Oct 7, 2025
6f3e506
Merge branch 'feat/json-handler' of https://github.com/yimingyinqwqq/…
yimingyinqwqq Oct 7, 2025
068e721
chore: Remove print lines and extract functions in kani-driver harnes…
yimingyinqwqq Oct 7, 2025
6747d35
chore: Remove unnecessary time information in main
yimingyinqwqq Oct 7, 2025
a2e7757
chore: Update s2n-quic submodule to match main branch
yimingyinqwqq Oct 7, 2025
29f8c18
Update schema_utils.rs - Structure for any tool's output
ShrivyasShrivyas Oct 12, 2025
b0b12cb
All CBMC changes
ShrivyasShrivyas Oct 13, 2025
162ea19
removed unnecessary methods
ShrivyasShrivyas Oct 13, 2025
94199fc
chore: format the code
yimingyinqwqq Oct 22, 2025
13db7d9
fix: revert version back to 0.65.0
yimingyinqwqq Oct 23, 2025
9a1deb3
chore: add example text for better commenting
yimingyinqwqq Oct 23, 2025
b169a7a
chore: remove s2n-quic submodule
yimingyinqwqq Oct 23, 2025
f5913e6
Revert "chore: Update s2n-quic submodule to match main branch"
yimingyinqwqq Oct 23, 2025
f9df1e4
chore: Update s2n-quic submodule to match main
yimingyinqwqq Oct 23, 2025
b560dc9
Roll back s2n-quic submodule to commit 26e2402
yimingyinqwqq Oct 28, 2025
947664b
Updated cbmc with original code and removed comments
ShrivyasShrivyas Oct 29, 2025
bb4a2a2
test: update regression test to support json handler
yimingyinqwqq Oct 30, 2025
9715a9c
fix: incoporate optional field in json schema when json not fail
yimingyinqwqq Oct 30, 2025
0cfaa00
chore: add json-handler rfc documentation
yimingyinqwqq Nov 5, 2025
d18aef7
Unit Tests for schema_utils
ShrivyasShrivyas Nov 5, 2025
83437d1
Merge branch 'feat/json-handler' of https://github.com/yimingyinqwqq/…
ShrivyasShrivyas Nov 5, 2025
e2d609a
chore: format unit tests
yimingyinqwqq Nov 5, 2025
ed8f985
Merge branch 'main' into feat/json-handler
yimingyinqwqq Nov 10, 2025
e077296
fix: fix unclose parenthesis
yimingyinqwqq Nov 10, 2025
99faa80
fix: resolve cbmc conflicts and remove unused import in main
yimingyinqwqq Nov 10, 2025
dc00668
chore: remove old json files
yimingyinqwqq Nov 10, 2025
ab5500d
Merge pull request #2 from yimingyinqwqq/feat/json-handler
yimingyinqwqq Nov 10, 2025
c035d82
Merge branch 'model-checking:main' into main
yimingyinqwqq Nov 12, 2025
ffd5565
Merge branch 'model-checking:main' into main
yimingyinqwqq Nov 13, 2025
f49b382
Merge branch 'model-checking:main' into main
yimingyinqwqq Nov 13, 2025
4537df2
fix: format frontend code and fix json file not found error
yimingyinqwqq Nov 14, 2025
0bfae8b
Merge pull request #5 from yimingyinqwqq/feat/json-handler
yimingyinqwqq Nov 14, 2025
664a644
fix: update cbmc for minimal changes, delete redundant changes
yimingyinqwqq Nov 14, 2025
e9dc6cf
fix: revert to previous commit
yimingyinqwqq Nov 14, 2025
0879d35
Merge pull request #6 from yimingyinqwqq/feat/json-handler
yimingyinqwqq Nov 14, 2025
4943397
Merge branch 'model-checking:main' into main
yimingyinqwqq Nov 18, 2025
d6ed20c
Add Kani MCP Server for Amazon Q integration
jingfei-xu Oct 21, 2025
9e9d46a
Add Kani MCP server and Amazon Q complete implementation
jingfei-xu Oct 23, 2025
f7f2575
Amazon Q CLI Integration
jingfei-xu Oct 30, 2025
d00d94e
Amazon Q latest integration (Amazon Q CLI)
jingfei-xu Nov 6, 2025
fe39541
Code Format Cleanup
jingfei-xu Nov 6, 2025
71bff51
Comments fixed
jingfei-xu Nov 18, 2025
fb10f35
Comments fixed: delete irrelevant files
ConnorJKY Nov 20, 2025
c0e58c8
Merge pull request #7 from yimingyinqwqq/mcp
ConnorJKY Nov 20, 2025
dca6c70
chore: update kani format on cbmc
yimingyinqwqq Nov 20, 2025
30382bb
Revert "Update: MCP Integration with Amazon Q CLI"
ConnorJKY Nov 20, 2025
7bd13c2
Merge pull request #8 from yimingyinqwqq/revert-7-mcp
ConnorJKY Nov 20, 2025
be0777a
Merge branch 'model-checking:main' into main
yimingyinqwqq Nov 20, 2025
678cabd
chore: add copyright to frontend module
yimingyinqwqq Nov 24, 2025
dc0a507
Merge pull request #9 from yimingyinqwqq/feat/json-handler
yimingyinqwqq Nov 24, 2025
f8f1a46
ci: fix copyright and clippy check
yimingyinqwqq Nov 24, 2025
064fbd6
Merge pull request #10 from yimingyinqwqq/feat/json-handler
yimingyinqwqq Nov 24, 2025
8b6609c
Update rfc/src/rfcs/0015-json-handler.md
yimingyinqwqq Dec 4, 2025
4dfd0d0
Update kani-driver/src/args/mod.rs
yimingyinqwqq Dec 4, 2025
a3dd5e0
doc: enhance ui and error documentation
yimingyinqwqq Dec 11, 2025
7a554ce
Merge branch 'model-checking:main' into main
yimingyinqwqq Dec 11, 2025
4e8a986
Merge branch 'main' into main
feliperodri Mar 28, 2026
e6103ee
Merge branch 'main' into json export branch
feliperodri Aug 11, 2026
111fb75
Fix build against main: handle FailedProperties::Error and cbmc_stats…
feliperodri Aug 11, 2026
3d1a143
Only scrape CBMC statistics when --export-json asks for them
feliperodri Aug 12, 2026
29ac723
Gate --export-json behind -Z unstable-options
feliperodri Aug 12, 2026
10a39d1
Remove RFC 0015 in favor of RFC 0016
feliperodri Aug 12, 2026
4266eb8
Parse CBMC statistics from the --json-ui envelope instead of regexes
feliperodri Aug 12, 2026
5d23989
Address Copilot review: gate the pipeline, fix error_details, clean u…
feliperodri Aug 12, 2026
1076a96
Reject exports that cannot be real, and stop tests hiding validation …
feliperodri Aug 12, 2026
a4cb528
Export the configuration and paths the run actually used
feliperodri Aug 12, 2026
2c428bf
Make the JSON export tests capable of failing
feliperodri Aug 12, 2026
512a614
Export the version of every tool the run uses
feliperodri Aug 12, 2026
b4be670
Make property counts reconcile and the solver survive --cbmc-args
feliperodri Aug 12, 2026
81b7ea3
Fix zero-harness exports, --no-codegen, solver consistency and valida…
feliperodri Aug 12, 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
59 changes: 59 additions & 0 deletions kani-driver/src/args/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,11 @@ pub struct VerificationArgs {
#[arg(long)]
pub default_unwind: Option<u32>,

/// Output the verification results to a JSON file at the specified path.
/// This feature is unstable and it requires `-Z unstable-options` to be used
#[arg(long)]
pub export_json: Option<PathBuf>,

/// When specified, the harness filter will only match the exact fully qualified name of a harness
#[arg(long, requires("harnesses"))]
pub exact: bool,
Expand Down Expand Up @@ -734,6 +739,12 @@ impl ValidateArgs for VerificationArgs {
UnstableFeature::UnstableOptions,
)?;

self.common_args.check_unstable(
self.export_json.is_some(),
"export-json",
UnstableFeature::UnstableOptions,
)?;

Ok(())
};

Expand Down Expand Up @@ -777,6 +788,15 @@ impl ValidateArgs for VerificationArgs {
"Conflicting options: --sarif isn't compatible with --output-format=old.",
));
}
// `--output-format=old` bypasses CBMC's structured output entirely: `run_cbmc` mocks a
// result with no properties, and treats a timeout as success. An export produced from
// that would be indistinguishable from a real clean run.
if self.export_json.is_some() && self.output_format == OutputFormat::Old {
return Err(Error::raw(
ErrorKind::ArgumentConflict,
"Conflicting options: --export-json isn't compatible with --output-format=old.",
));
}
if self.concrete_playback.is_some() && self.jobs().will_multithread() {
// Concrete playback currently embeds a lot of assumptions about the order in which harnesses get called.
return Err(Error::raw(
Expand All @@ -790,6 +810,19 @@ impl ValidateArgs for VerificationArgs {
"Conflicting options: --sarif isn't compatible with --only-codegen.",
));
}
// Neither code-generation-only mode runs verification, so there is nothing to export.
// `--only-codegen` would otherwise succeed without writing the file the user asked for,
// and `--no-codegen` would write a document describing a run that never happened.
if self.export_json.is_some() && (self.only_codegen || self.no_codegen) {
let incompatible =
if self.only_codegen { "--only-codegen" } else { "--no-codegen" };
return Err(Error::raw(
ErrorKind::ArgumentConflict,
format!(
"Conflicting options: --export-json isn't compatible with {incompatible}."
),
));
}
if self.jobs().will_multithread() && self.output_format != OutputFormat::Terse {
// More verbose output formats make it hard to interpret output right now when run in parallel.
// This can be removed when we change up how results are printed.
Expand Down Expand Up @@ -1133,6 +1166,32 @@ mod tests {
check_unstable_flag!("--no-slice-formula", no_slice_formula);
}

#[test]
fn check_export_json_conflicts() {
expect_validation_error(
"kani file.rs -Z unstable-options --export-json out.json --output-format=old",
ErrorKind::ArgumentConflict,
);
expect_validation_error(
"kani file.rs -Z unstable-options --export-json out.json --only-codegen",
ErrorKind::ArgumentConflict,
);
expect_validation_error(
"kani file.rs -Z unstable-options --export-json out.json --no-codegen",
ErrorKind::ArgumentConflict,
);
}

#[test]
fn check_export_json_unstable() {
check_opt!(
"--export-json results.json",
Some(UnstableFeature::UnstableOptions),
export_json,
Some(PathBuf::from("results.json"))
);
}

#[test]
fn check_concrete_playback_unstable() {
let check = |input: &str| {
Expand Down
Loading
Loading