Open septract opened 3 months ago
This branch was mostly a stop-gap for work-arounds (sometimes based on missing features, sometimes based on ignorance) in the run up to POPL deadline. Agreed the end goal is to make CN runtime testing CI on the main branch. @rbanerjee20 has agreed to decide and execute how that is achieved.
I would prefer not to merge the cn-runtime-testing
branch into main
right now since a lot of the changes Dhruv made before the POPL deadline involved changing the CN tutorial example files themselves to adjust for the fact that certain features were not implemented yet. Morally those features should exist in CN runtime testing, and implementing them is (part of) what I am working on now. So merging cn-runtime-testing
would lead to some unnecessary hacks existing on main
- it would probably be counterintuitive to have examples that fall into this (somewhat arbitrarily) restricted subset of CN on main
when that restriction isn't needed for proof.
As a result I would propose we don't converge the two branches, but I am happy to think about how the CI might be improved such that as I push each feature/fix, more real CN tutorial examples from main
can be checked and moved out of the "buggy" list, over and above the regression testing that is taking place on each push to Cerberus currently.
(I briefly thought about there being one directory of examples for proof and one for runtime testing on main
but this also seems counterintuitive given our "CN testing and proof can be done using the same specs" story)
That seems reasonable as a short-term measure @rbanerjee20, but there will be an annoying cost to maintaining the branch if it sticks around for more than a few weeks. I think if we're not careful, the branch will diverge significantly (eg I know @bcpierce00 is about to land a big refactor to align with his CN style recommendations).
What changes exactly are needed to support what you need? Eg. could we write 'test harness' files which wrap the files on main
? Or are the changes needed deep and pervasive in the files themselves?
Yes, I agree - this is very much a short-term solution. I don't intend for this branch to need to exist for very long as I plan to implement the fixes for these over the next few weeks.
Peter, Neel and I also discussed writing test harness files - tiny files with only a main function that #include
the relevant CN tutorial example they want to test, instead of having these main functions that @dc-mak wrote as part of the CN tutorial example files themselves. However, the other changes Dhruv made are indeed deep within the CN specs themselves, which is why I am suggesting we wait a bit. For example, I believe Dhruv had to change CN datatypes into CN records in certain files - these sorts of modifications shouldn't exist in the examples on main
morally and also would need to be changed back at some later stage anyway.
Understood, this sounds like a good plan. Thanks!
The
cn-runtime-testing
branch includes a lot of changes needed for applying the runtime spec testing capabilities on the tutorial examples. The currentcerberus
repo CI setup for RTT points to this branch, rather thanmain
. We should integrate the branch.@dc-mak