Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Support for new validation features introduced in ARC spec v2 #305

Open
kMutagene opened this issue Jan 31, 2024 · 4 comments

Comments

@kMutagene
Copy link
Member

As specified one nfdi4plants/ARC-specification#95 is merged, there are 2 new quality control mechanisms defined for ARCs:

Validation packages

Validation packages are any kind of executable set of validation cases an ARC must pass. They are uniquely identified by a name and version

Continuous Quality Control (CQC)

CQC defines a branch structure for a special cqc branch that aggregates validation results, and a validation_packages.yml file that lists the name of validation packages that an ARC should be continuously validated against.

Now here is the actual question: On what level should these features and concepts be introduced? My hunch is that we should try to get as much into ARCtrl as possible, but i really do not want to make all the validation libs i am working on fable compatible (i also think for some it might just not be possible). We have the contracts mechanism though, so i think we should discuss a little here.

My ideas:

  • Incorporating the cqc branch should be easy. Just create an orphan branch with git checkout cqc --orphan. How is git functionality modelled at the moment?
  • the basics of just creating the validation_packages.yml file are also easy, however I do not know if there is a fable compatible yaml read/write library. Since this is IO, we could work with contracts here?
  • Getting the names of installable validation packages is non-trivial. They are queried via web API calls to a package registry. We have a F# implementation for this, however that is not transpilable. Also use contracts for this?

It might be that these things do really fit into ARCtrl though, so if that is the case ill be happy to move the issue to arccommander and/or arcitect

@kMutagene
Copy link
Member Author

So we talked about this and come up with the following plan:

So @Freymaurer @HLWeil could you please add some guidance on

  • where to add the core validation package types?
  • where and how to add the API client?

@kMutagene
Copy link
Member Author

publishing these type models also would help me fixing nfdi4plants/arc-validate-package-registry#7

@Freymaurer
Copy link
Collaborator

Okay!

branch creation is a contract

Currently we have a file with git contracts on the top level of the library. In my opinion this should be lower level, so that multiple packages are able to reuse the git logic.

Maybe put all of these contracts into the Contract project.

yml file creation is a contract

yml can be written as string so it should be very easy to model this at any level you prefer.

validation packages types should be a part of our core domain model

where to add the core validation package types?

Yes, please add an additional project at /src/<your_project_name>!

API client for https://github.com/nfdi4plants/arc-validate-package-registry should be part of ARCtrl

where and how to add the API client?

In my opinion this is the most difficult step. At the moment we have GET logic for js and dotnet here. But i am not very happy with it. As it is only GET and not python comaptible AND contradicts contract logic.

This should be further discussed before implementation.

@Freymaurer
Copy link
Collaborator

Feel free to contact me at any time if you need more guidance on how to work with ARCtrl

@Freymaurer Freymaurer added this to the Release ARCtrl 2.0 milestone Mar 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants