Conftest v1 Road map #1319
jalseth
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Important -- Feedback notes
Hello everyone. With OPA/Rego now at a stable v1, I think it is time to move conftest in the same direction. This discussion is to open the road map to community feed back. Everyone is welcome to comment and add any feedback you have, If there is a large amount of feedback on a specific point, we can spin that out to its own discussion.
I am planning to have this open for discussion for around two weeks. This may be shorter if there isn't much feedback, or can be extend if there are ongoing discussions.
Road map
Motivation
Conftest has helped a lot of people solve policy problems in CI since it was introduced. That said, it has grown organically and has some implementation details that make it hard to maintain and extend.
To ensure long-term stability and ease of maintenance, we are moving toward a v1.0 release. This transition focuses on:
Proposed Changes
1. New features
2. Deprecations & Removals
opa fmtorregal. These tools are purpose-built for Rego formatting and are easily installable via modern package managers.oci://) for remote policies to remove ambiguity between local paths and remote registries.3. Architecture & Core Interfaces
io.Readersupport: TransitionUnmarshalto acceptio.Reader. This avoids loading entire files into memory, improving efficiency for large configuration files.SupportsFile(fileName string) bool: This method allows the engine to quickly identify which parser to use without attempting to read or unmarshal the file. This unblocks a clean factory pattern for directory scanning.stdoutoutputter supports reporting; this change prevents runtime errors when other formats are requested with report flags.io.Writertransition: UpdateOptionsto useio.Writerinstead of*os.Fileto simplify unit testing and allow for redirection to arbitrary buffers.Register()API for parsers and outputters. This enables Conftest to be used as a library with a custom or restricted set of parsers.4. Performance & Scalability
rego.PreparedEvalQuery: Use prepared queries to significantly improve evaluation performance. By compiling the Rego query once and reusing it across multiple inputs, we eliminate the overhead of repeated parsing and compilation during large-scale scans.Engine(e.g.,addFileInfo). Moving metadata into theinputor per-query transactions is a prerequisite for parallel execution to prevent race conditions and ensure data integrity.5. Reporting & Developer Experience
CheckResult.Successesfromintto[]Result. This enables tracking which specific rules passed, rather than just a count.deny/warn/violationrules, ensuring that "success" means a rule was evaluated and did not trigger.testandverify) and prevent drift.--all-namespacesand--namespace. Default to all namespaces unless the user specifies a subset, simplifying the common use case.false. For example,--tls(default true) becomes--disable-tls(default false) to follow CLI conventions.--proto-file-dirs) into configuration files or environment variables. This keeps the CLI surface focused on core execution.6. Maintenance & Supply Chain Security
Beta Was this translation helpful? Give feedback.
All reactions