<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Divekit</title><link>https://divekit.org/</link><description>Recent content on Divekit</description><generator>Hugo</generator><language>en</language><atom:link href="https://divekit.org/index.xml" rel="self" type="application/rss+xml"/><item><title>Development Setup</title><link>https://divekit.org/docs/3-development/contributing/development-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/contributing/development-setup/</guid><description>&lt;p&gt;This page intentionally stays short.&#10;The detailed development-setup workflow changes together with the CLI repository and is maintained there to avoid duplication.&lt;/p&gt;&#10;&lt;h2 id="stable-summary"&gt;Stable Summary&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Clone &lt;code&gt;divekit-cli&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Use Go &lt;code&gt;1.24+&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Build with &lt;code&gt;make build&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Run checks with &lt;code&gt;make check&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Use the CLI repo&amp;rsquo;s Local GitLab guide when local GitLab is required&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="source-of-truth"&gt;Source of Truth&lt;/h2&gt;&#10;&lt;p&gt;For the current step-by-step setup, use:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://gitlab.git.nrw/divekit/divekit-cli/-/blob/main/CONTRIBUTING.md"&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://gitlab.git.nrw/divekit/divekit-cli/-/blob/main/docs/development/README.md"&gt;Development Documentation&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://gitlab.git.nrw/divekit/divekit-cli/-/blob/main/docs/development/local-gitlab.md"&gt;Local GitLab Setup&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Error Handling</title><link>https://divekit.org/docs/3-development/contributing/errors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/contributing/errors/</guid><description>&lt;p&gt;Divekit uses a centralized categorized error model built around &lt;code&gt;internal/error&lt;/code&gt; (&lt;code&gt;apperror&lt;/code&gt;), command middleware, and &lt;code&gt;internal/shell/logging&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;This page is now only a summary.&#10;The implementation-coupled source of truth lives in the CLI repository under &lt;code&gt;docs/architecture/error-handling.md&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="stable-summary"&gt;Stable Summary&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;commands should return typed errors, not format terminal output themselves&lt;/li&gt;&#10;&lt;li&gt;user messages and technical details should stay separate&lt;/li&gt;&#10;&lt;li&gt;exit codes are determined centrally&lt;/li&gt;&#10;&lt;li&gt;logging should go through the shared logging package&lt;/li&gt;&#10;&lt;li&gt;fallback behavior should be explicit and observable&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;For package paths, current examples, and maintainer-level guidance, use the CLI repository document.&lt;/p&gt;</description></item><item><title>Contributing Guidelines</title><link>https://divekit.org/docs/3-development/contributing/guidelines/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/contributing/guidelines/</guid><description>&lt;p&gt;This page keeps only the stable contribution expectations.&#10;The current contributor workflow is maintained in the CLI repository under &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="stable-expectations"&gt;Stable Expectations&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Make code changes in the CLI repository.&lt;/li&gt;&#10;&lt;li&gt;Update tests and documentation when behavior changes.&lt;/li&gt;&#10;&lt;li&gt;Run the relevant checks before opening a merge request.&lt;/li&gt;&#10;&lt;li&gt;Keep user-facing text in English.&lt;/li&gt;&#10;&lt;li&gt;Prefer consistency with existing command, handler, and error-handling patterns.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="source-of-truth"&gt;Source of Truth&lt;/h2&gt;&#10;&lt;p&gt;Use the CLI repository for current details about:&lt;/p&gt;</description></item><item><title>config.json</title><link>https://divekit.org/docs/4-reference/file-formats/config-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/file-formats/config-json/</guid><description>&lt;p&gt;&lt;code&gt;config.json&lt;/code&gt; is the primary distribution configuration file used by &lt;code&gt;divekit distribute&lt;/code&gt;, &lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;patch&lt;/code&gt;, &lt;code&gt;overview&lt;/code&gt;, and related commands.&lt;/p&gt;&#10;&lt;p&gt;Default location:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.divekit/distributions/&amp;lt;distribution&amp;gt;/config.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="current-stored-format"&gt;Current Stored Format&lt;/h2&gt;&#10;&lt;p&gt;The current persisted format is a flat &lt;code&gt;version: &amp;quot;2.0&amp;quot;&lt;/code&gt; document.&#10;Internally, Divekit still expands this into named targets such as &lt;code&gt;work&lt;/code&gt; and &lt;code&gt;eval&lt;/code&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;remote&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;gitnrw&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;groupId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12345&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;members&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;$DIVEKIT_MEMBERS/st2_members.json&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;permissions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;developer&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;evaluationPipeline&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;groupId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;67890&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;snapshot&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;remote&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;research&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;groupId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;24680&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="keys"&gt;Keys&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Key&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Type&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Current format version. Use &lt;code&gt;&amp;quot;2.0&amp;quot;&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;remote&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Host alias from &lt;code&gt;~/.divekit/hosts.json&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groupId&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Work target group ID.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional repository name template. When omitted, Divekit uses &lt;code&gt;{{distribution}}-{{uuid}}&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;members&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Member source and default permissions.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;members.path&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Path to the &lt;code&gt;members.json&lt;/code&gt; file. Supports &lt;code&gt;$DIVEKIT_MEMBERS/...&lt;/code&gt; and relative paths resolved through the members base directory.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;members.permissions&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GitLab access level assigned to configured members, for example &lt;code&gt;guest&lt;/code&gt;, &lt;code&gt;reporter&lt;/code&gt;, &lt;code&gt;developer&lt;/code&gt;, &lt;code&gt;maintainer&lt;/code&gt;, or &lt;code&gt;owner&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;evaluationPipeline&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Enables separated eval target handling.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;evaluationPipeline.enabled&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;boolean&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Enables the generated &lt;code&gt;eval&lt;/code&gt; target and cross-repository setup.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;evaluationPipeline.groupId&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional group ID for eval repositories.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groupLayout&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Controls how student and eval groups are derived.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groupLayout.mode&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Group-resolution strategy: &lt;code&gt;distribution-subgroups&lt;/code&gt; (default) or &lt;code&gt;legacy&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groupLayout.rootGroupId&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional root group ID used to derive distribution subgroups. Defaults to the work target&amp;rsquo;s &lt;code&gt;groupId&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;snapshot&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional research snapshot target configuration.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;snapshot.remote&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Host alias from &lt;code&gt;~/.divekit/hosts.json&lt;/code&gt; used for snapshot writes. Defaults to the work target remote.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;snapshot.groupId&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Snapshot root group used by &lt;code&gt;divekit snapshot&lt;/code&gt;. Interactive runs can store this after you choose a root group.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;deleteExistingRepositories&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;boolean&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Destructive reset option before distribution.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;scripting&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Language and file-extension mapping used by scripting and token tooling.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;scripting.languages&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array of strings&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Enabled language packs. If omitted in auto mode, Divekit can discover languages.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;scripting.extensions&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Maps file patterns such as &lt;code&gt;*.java&lt;/code&gt; to language packs.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;scripting.files&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;File-specific mapping alias that is merged with &lt;code&gt;scripting.extensions&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;scripting.mode&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Scripting mode. &lt;code&gt;auto&lt;/code&gt; enables language discovery; object form may also use manual mappings.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variables&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Global token delimiter and fixed values.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variables.variableDelimiter&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Opening delimiter for tokens.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variables.variableDelimiterEnd&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional closing delimiter when start and end should differ.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variables.values&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fixed token values available during distribution.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="repository-name-templates"&gt;Repository Name Templates&lt;/h2&gt;&#10;&lt;p&gt;The optional top-level &lt;code&gt;name&lt;/code&gt; value is rendered once for each repository group.&#10;When omitted, Divekit uses &lt;code&gt;{{distribution}}-{{uuid}}&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Hello there 👋</title><link>https://divekit.org/docs/1-quick-start/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/introduction/</guid><description>&lt;h2 id="what-is-divekit"&gt;What is Divekit?&lt;/h2&gt;&#10;&lt;p&gt;Divekit is a command-line tool for managing individualized programming assignments at scale. It helps educators create, distribute and evaluate programming exercises for large groups of students.&lt;/p&gt;&#10;&lt;h3 id="visual-overview-from-origin-to-distributed-repositories"&gt;Visual overview: from origin to distributed repositories&lt;/h3&gt;&#10;&lt;p&gt;Locally:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;my-assignment/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ .divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ src/$Vehicle$.java # placeholder - used by individualization&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ tests_evalrepo/ # filter - excluded from work repos&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─ README.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Gitlab: &amp;ldquo;Individualized repositories&amp;rdquo;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gitlab.example.com/.../my-group/ # Work repositories (work target)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ my-assignment-4d2c0752-f400-4690-9bac-97c927e68e17/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├─ src/Car.java # $Vehicle$ → Car&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └─ README.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─ my-assignment-4d243142-292b-4b95-abbb-af13f102c857/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├─ src/Bike.java # $Vehicle$ → Bike&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └─ README.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─ my-assignment-8153ded6-ee91-4135-b59e-ace2625f83c3/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├─ src/Plane.java # $Vehicle$ → Plane&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─ README.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Gitlab: &amp;ldquo;Evaluation pipeline&amp;rdquo; (separate eval target)&lt;/p&gt;</description></item><item><title>How Divekit Works</title><link>https://divekit.org/docs/3-development/architecture/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/architecture/overview/</guid><description>&lt;p&gt;Divekit turns one maintained course origin into individualized repositories and&#10;keeps the resulting distribution operable throughout an assignment. This page&#10;explains what is authored, what Divekit generates, and which boundaries need&#10;care before a real cohort is involved.&lt;/p&gt;&#10;&lt;p&gt;You can operate Divekit through its CLI or its web interface. Both use the same&#10;origin and distribution model.&lt;/p&gt;&#10;&lt;h2 id="from-origin-to-results"&gt;From Origin To Results&lt;/h2&gt;&#10;&lt;pre class="mermaid"&gt;flowchart LR&#10; MAINTAINER((Course maintainer))&#10; ORIGIN[&amp;#34;Authored origin&amp;lt;br/&amp;gt;course files &amp;#43; .divekit/&amp;#34;]&#10; MEMBERS[&amp;#34;Member input&amp;lt;br/&amp;gt;kept outside the origin&amp;#34;]&#10; DIVEKIT[&amp;#34;Divekit&amp;lt;br/&amp;gt;CLI or web interface&amp;#34;]&#10; STATE[&amp;#34;Generated distribution state&amp;lt;br/&amp;gt;individuals.json &amp;#43; remotes.json&amp;#34;]&#10; LOCAL[&amp;#34;Local provider output&amp;#34;]&#10; WORK[&amp;#34;GitLab work repositories&amp;#34;]&#10; STUDENT((Students))&#10; EVAL[&amp;#34;GitLab eval repositories&amp;#34;]&#10; PLUGINS[&amp;#34;Pinned plugin suites&amp;#34;]&#10; RESULTS[&amp;#34;Plugin results&amp;lt;br/&amp;gt;reports &amp;#43; feedback&amp;#34;]&#10;&#10; MAINTAINER --&amp;gt; ORIGIN&#10; ORIGIN --&amp;gt; DIVEKIT&#10; MEMBERS --&amp;gt; DIVEKIT&#10; DIVEKIT --&amp;gt; STATE&#10; DIVEKIT --&amp;gt; LOCAL&#10; DIVEKIT --&amp;gt; WORK&#10; DIVEKIT --&amp;gt; EVAL&#10; STUDENT --&amp;gt; WORK&#10; WORK --&amp;gt; EVAL&#10; PLUGINS --&amp;gt; EVAL&#10; EVAL --&amp;gt; RESULTS&#10; RESULTS --&amp;gt; STUDENT&#10; RESULTS --&amp;gt; MAINTAINER&lt;/pre&gt;&#10;&lt;h3 id="1-author-the-course-once"&gt;1. Author The Course Once&lt;/h3&gt;&#10;&lt;p&gt;The origin repository is the maintained source for an assignment. It contains&#10;the course files and &lt;code&gt;.divekit/&lt;/code&gt; configuration that describe distribution,&#10;individualization, and optional evaluation behavior. Variation choices and&#10;individualization rules are authored inputs too.&lt;/p&gt;</description></item><item><title>Repository Name Templates</title><link>https://divekit.org/docs/4-reference/repository-name-templates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/repository-name-templates/</guid><description>&lt;p&gt;Repository names are configured with the optional top-level &lt;code&gt;name&lt;/code&gt; key in a&#10;distribution&amp;rsquo;s &lt;code&gt;config.json&lt;/code&gt;. Divekit renders the template once for every group&#10;in &lt;code&gt;members.json&lt;/code&gt;. If &lt;code&gt;name&lt;/code&gt; is omitted, the default is&#10;&lt;code&gt;{{distribution}}-{{uuid}}&lt;/code&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;exercise-{{username}}&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Repository name templates use Go&amp;rsquo;s &lt;code&gt;text/template&lt;/code&gt; syntax. This page documents&#10;the data and functions that Divekit provides for this specific use case.&lt;/p&gt;&#10;&lt;h2 id="common-examples"&gt;Common Examples&lt;/h2&gt;&#10;&lt;p&gt;Use the first configured GitLab username as the complete repository name:&lt;/p&gt;</description></item><item><title>Configuration Notes</title><link>https://divekit.org/docs/3-development/work-in-progress/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/work-in-progress/config/</guid><description>&lt;p&gt;The old config redesign draft was retired.&lt;/p&gt;&#10;&lt;p&gt;Use these pages for the current, supported model:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/3-development/architecture/configuration/"&gt;Configuration Model&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/1-quick-start/evaluation-pipeline/"&gt;Evaluation Pipeline&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/"&gt;CLI &lt;code&gt;config&lt;/code&gt; command&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/auth/"&gt;CLI &lt;code&gt;auth&lt;/code&gt; command&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="scope-of-this-page"&gt;Scope of This Page&lt;/h2&gt;&#10;&lt;p&gt;This page is intentionally short and only kept as a marker that the redesign draft is closed.&#10;Do not add new configuration behavior here; update the stable pages above instead.&lt;/p&gt;</description></item><item><title>Configuration Keys</title><link>https://divekit.org/docs/4-reference/config-keys/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/config-keys/</guid><description>&lt;p&gt;This page summarizes the most relevant keys that users edit in current Divekit setups.&lt;/p&gt;&#10;&lt;h2 id="distribution-configjson"&gt;Distribution config.json&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Key&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Type&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Use &lt;code&gt;&amp;quot;2.0&amp;quot;&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;remote&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Host alias from &lt;code&gt;hosts.json&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groupId&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Work distribution group ID.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional repository name template. If omitted, Divekit uses &lt;code&gt;{{distribution}}-{{uuid}}&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;members.path&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Path to &lt;code&gt;members.json&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;members.permissions&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Default permission level, usually &lt;code&gt;developer&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;evaluationPipeline.enabled&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;boolean&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Enables the paired eval target.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;evaluationPipeline.groupId&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional explicit eval root group.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groupLayout.mode&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;distribution-subgroups&lt;/code&gt; or &lt;code&gt;legacy&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groupLayout.rootGroupId&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional explicit root group for derived subgroups.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;snapshot.remote&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional host alias used by &lt;code&gt;divekit snapshot&lt;/code&gt; for writes. Defaults to the work target remote.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;snapshot.groupId&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional snapshot root group used by &lt;code&gt;divekit snapshot&lt;/code&gt;. Interactive runs can store this after you choose a root group.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;deleteExistingRepositories&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;boolean&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Deletes existing target repositories before distribution.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;scripting.languages&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Enabled languages for scripting/tooling.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;scripting.extensions&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;File-pattern to language mapping.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variables.variableDelimiter&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Start delimiter for token replacement.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variables.variableDelimiterEnd&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional end delimiter.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variables.values&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fixed values shared across all UUIDs.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Notes:&lt;/p&gt;</description></item><item><title>Installation</title><link>https://divekit.org/docs/1-quick-start/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/installation/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;&#10;&lt;p&gt;Before installing Divekit, ensure your system meets the following requirements:&lt;/p&gt;&#10;&lt;h3 id="system-requirements"&gt;System Requirements&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Operating System&lt;/strong&gt;: Linux, macOS, or Windows&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;GitLab&lt;/strong&gt;: Access to a GitLab instance with API permissions&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="gitlab-setup"&gt;GitLab Setup&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Access to a GitLab instance&lt;/li&gt;&#10;&lt;li&gt;An account that may create projects and manage members in the target group&lt;/li&gt;&#10;&lt;li&gt;A personal, project, or service-account access token with &lt;code&gt;api&lt;/code&gt; scope&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;The &lt;code&gt;api&lt;/code&gt; scope and the account&amp;rsquo;s GitLab role are independent. The token does&#10;not grant namespace permissions that its owner does not already have. A normal&#10;distribution does not require instance administrator access; the exact minimum&#10;group role depends on the group&amp;rsquo;s project-creation and member-management&#10;settings. See &lt;a href="https://divekit.org/docs/4-reference/gitlab-permissions/"&gt;GitLab Permissions&lt;/a&gt;&#10;before configuring evaluation pipelines, Pages, cleanup, or subgroup creation.&lt;/p&gt;</description></item><item><title>members.json</title><link>https://divekit.org/docs/4-reference/file-formats/members-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/file-formats/members-json/</guid><description>&lt;p&gt;&lt;code&gt;members.json&lt;/code&gt; defines which UUIDs are distributed and which users receive access to each repository.&lt;/p&gt;&#10;&lt;p&gt;The file location is configured via &lt;code&gt;config.json -&amp;gt; members.path&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;The canonical member value is the GitLab username. Optional display-name metadata can preserve course-internal or local names without changing the username used for GitLab operations.&#10;Each entry in &lt;code&gt;groups&lt;/code&gt; represents one distributed repository group.&lt;/p&gt;&#10;&lt;h2 id="format"&gt;Format&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;displayNames&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;myname_extern&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;myname&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;groups&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;team-01&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;label&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Team 01&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;fruit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;banana&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;members&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;alice&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;myname_extern&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;team-02&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;label&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Team 02&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;members&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;charlie&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;unassignedMembers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;dana&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="keys"&gt;Keys&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Key&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Type&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Current format version. Use &lt;code&gt;&amp;quot;2.0&amp;quot;&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;displayNames&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional map from GitLab username to local display name.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groups&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;One entry per distributed repository.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groups[].uuid&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stable identifier used in naming and state files.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groups[].members&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array of strings&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GitLab usernames that should receive access to that repository.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groups[].unassignedMembers&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array of strings&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional members that were known locally but could not be assigned.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groups[].label&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional human-readable group label. Used by repository name templates such as &lt;code&gt;{{label}}&lt;/code&gt; and &lt;code&gt;{{slug}}&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;groups[].metadata&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional group-level string metadata. Used by repository name templates such as &lt;code&gt;{{metadata &amp;quot;fruit&amp;quot;}}&lt;/code&gt; or &lt;code&gt;{{.Metadata.fruit}}&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="import-input"&gt;Import Input&lt;/h2&gt;&#10;&lt;p&gt;Interactive input, text files, and stdin use one repository group per non-empty&#10;row. A row with one value creates a one-person group:&lt;/p&gt;</description></item><item><title>Example Origins</title><link>https://divekit.org/docs/1-quick-start/example-origins/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/example-origins/</guid><description>&lt;p&gt;Example origins are small assignment repositories that show how authored source files and Divekit&#10;configuration work together. Use this guide to choose a starting point, inspect the repository it&#10;generates, and identify which parts you must adapt before a real course rollout.&lt;/p&gt;&#10;&lt;p&gt;The source repositories live in the public&#10;&lt;a href="https://gitlab.git.nrw/divekit/documentation/example/origins"&gt;Divekit example origins group&lt;/a&gt;.&#10;They are not copied into this documentation site.&lt;/p&gt;&#10;&lt;h2 id="choose-an-example"&gt;Choose an example&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Example&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Best for&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Demonstrates&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://gitlab.git.nrw/divekit/documentation/example/origins/vehicle-workshop-origin"&gt;Vehicle Workshop Origin&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Learning the smallest useful Divekit workflow&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;One individualization axis, local validation, and a work-repository distribution&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://gitlab.git.nrw/divekit/documentation/example/origins/shape-color-origin"&gt;Shape and Color Origin&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Comparing your result after the beginner course&amp;rsquo;s final exercise&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Two independent individualization axes and consistent replacement in one file&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://gitlab.git.nrw/divekit/documentation/example/origins/example-shop-origin"&gt;Example Shop Origin&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Exploring a more complete Maven assignment&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Multiple related individualizations, work and eval repositories, an Evaluation Pipeline, tests, and plugin configuration&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Start with Vehicle Workshop when you want to understand the files in an origin repo and the effect of&#10;one placeholder. Use Shape and Color after completing the beginner course exercise and before moving&#10;to Example Shop&amp;rsquo;s paired work and eval setup.&lt;/p&gt;</description></item><item><title>First steps</title><link>https://divekit.org/docs/1-quick-start/first-steps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/first-steps/</guid><description>&lt;h2 id="create-your-first-project"&gt;Create Your First Project&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Create and open a new directory:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir my-assignment&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; my-assignment&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;&#10;&lt;li&gt;Initialize Divekit:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit init&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="what-divekit-init-does"&gt;What &lt;code&gt;divekit init&lt;/code&gt; does&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;divekit init&lt;/code&gt; creates the base configuration for an origin repository and prepares your project for distribution workflows.&lt;/p&gt;&#10;&lt;p&gt;Typical structure after init:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;my-assignment/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── .divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── distributions/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── &amp;lt;distribution&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── config.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For command details, see &lt;a href="https://divekit.org/docs/2-divekit-cli/init/"&gt;&lt;code&gt;divekit init&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;variation.json&lt;/code&gt; and &lt;code&gt;individualization.json&lt;/code&gt; are optional and can be added at project level (&lt;code&gt;.divekit/&lt;/code&gt;) or distribution level (&lt;code&gt;.divekit/distributions/&amp;lt;distribution&amp;gt;/&lt;/code&gt;).&#10;To scaffold a starter variation config, use &lt;a href="https://divekit.org/docs/2-divekit-cli/inject/"&gt;&lt;code&gt;divekit inject --scope variation&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>GitLab Permissions</title><link>https://divekit.org/docs/4-reference/gitlab-permissions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/gitlab-permissions/</guid><description>&lt;p&gt;Divekit authenticates with a personal, project, or service-account access&#10;token. Two independent permission layers determine what the CLI can do:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;the scopes attached to the token&lt;/li&gt;&#10;&lt;li&gt;the GitLab permissions of the account that owns the token&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;A broad token scope does not grant its owner additional access to groups or&#10;projects. A high group role cannot compensate for a token that lacks the needed&#10;API scope.&lt;/p&gt;&#10;&lt;h2 id="token-scope"&gt;Token Scope&lt;/h2&gt;&#10;&lt;p&gt;Current authentication and distribution workflows require the GitLab &lt;code&gt;api&lt;/code&gt;&#10;scope. Divekit validates this scope during authentication. Additional&#10;&lt;code&gt;read_api&lt;/code&gt; or &lt;code&gt;write_repository&lt;/code&gt; scopes do not expand namespace access when&#10;&lt;code&gt;api&lt;/code&gt; is already present.&lt;/p&gt;</description></item><item><title>Configuration Model</title><link>https://divekit.org/docs/3-development/architecture/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/architecture/configuration/</guid><description>&lt;p&gt;Divekit configuration is split across user-level and project-level files.&#10;This page explains the configuration model that course maintainers use.&#10;Detailed JSON schemas, keys, and fallback rules now live under &lt;a href="https://divekit.org/docs/4-reference/"&gt;Reference&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="1-configuration-layers"&gt;1. Configuration Layers&lt;/h2&gt;&#10;&lt;p&gt;Divekit uses three practical layers:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;User-level defaults in &lt;code&gt;~/.divekit/&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Project-level defaults in &lt;code&gt;&amp;lt;origin-repo&amp;gt;/.divekit/&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Distribution-specific overrides in &lt;code&gt;&amp;lt;origin-repo&amp;gt;/.divekit/distributions/&amp;lt;distribution&amp;gt;/&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;The CLI resolves files from the most specific layer outward. This keeps shared defaults reusable while still allowing per-distribution overrides.&lt;/p&gt;&#10;&lt;h2 id="2-user-level-configuration"&gt;2. User-Level Configuration&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;~/.divekit/&lt;/code&gt; stores machine-wide settings:&lt;/p&gt;</description></item><item><title>Deployment</title><link>https://divekit.org/docs/3-development/work-in-progress/deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/work-in-progress/deployment/</guid><description>&lt;p&gt;This page reflects the current release flow in the repository.&#10;Old &lt;code&gt;deploy.sh&lt;/code&gt; examples and GIF-based demos are obsolete.&lt;/p&gt;&#10;&lt;h2 id="release-trigger"&gt;Release Trigger&lt;/h2&gt;&#10;&lt;p&gt;Releases are tag-driven.&#10;A release starts when a Git tag is pushed (for example &lt;code&gt;v2.3.1&lt;/code&gt; or &lt;code&gt;v2.4.0-rc.1&lt;/code&gt;).&lt;/p&gt;&#10;&lt;h2 id="recommended-tag-creation"&gt;Recommended Tag Creation&lt;/h2&gt;&#10;&lt;p&gt;Use the helper script:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./scripts/dev/release-tag.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The script checks for a clean working tree, fetches tags, proposes version increments, and pushes &lt;code&gt;v&amp;lt;version&amp;gt;&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Manual alternative:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git tag v2.3.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push origin v2.3.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ci-pipeline-behavior"&gt;CI Pipeline Behavior&lt;/h2&gt;&#10;&lt;p&gt;In &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; the release flow is:&lt;/p&gt;</description></item><item><title>divekit dev</title><link>https://divekit.org/docs/2-divekit-cli/dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/dev/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Development helper for finding and fixing token issues.&lt;/p&gt;&#10;&lt;p&gt;Scans the current project for unresolved variation tokens and suggests&#10;values that should be added to variation.json. Essential for debugging&#10;individualization issues before distribution.&lt;/p&gt;&#10;&lt;h2 id="detected-issues"&gt;Detected Issues&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Unresolved tokens (tokens without values in variation.json)&lt;/li&gt;&#10;&lt;li&gt;Possible variable residues from other variations&lt;/li&gt;&#10;&lt;li&gt;Missing token definitions&lt;/li&gt;&#10;&lt;li&gt;Template syntax issues like broken fragments or invalid placeholders (opt-in)&lt;/li&gt;&#10;&lt;li&gt;Suggested values based on context analysis&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="scan-sources"&gt;Scan Sources&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; default Scan the current origin project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --scan-latest Scan the latest output created by &amp;#39;divekit distribute -p local&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --scan-path Scan an explicit path; if it points into .divekit/local-data it is treated as local distribution output&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --group-id Restrict local distribution scans to one generated group&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Scan distribution for token issues&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Watch mode for continuous development&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --watch&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Scan one generated local project or a local-data subtree&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --scan-path .divekit/local-data&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Scan the latest &amp;#39;divekit distribute -p local&amp;#39; output for this distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --scan-latest&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict local distribution scanning to one generated group&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --scan-latest --group-id 8f9e52d-dcd5-44da-8bda-03ccb16a3b15&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show only unresolved tokens&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --only-unresolved&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show only value suggestions&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --only-suggestions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show only possible variable residues&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --only-residues&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Ignore generated assets in this run only&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --ignore-path &lt;span class="s1"&gt;&amp;#39;*.png,.idea/*&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict scan to selected file types&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --type-whitelist md,json,xml,java&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Export results to JSON&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --output results.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Scaffold missing variation objects into individualization.json&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --write-individualization&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Minimal output without context&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --no-context&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Scan for invalid placeholders and broken delimiter fragments&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --check-syntax&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Only run syntax-oriented checks&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --only-syntax&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Keep full terminal-clickable path:line links on every unresolved match line&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --terminal-links&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show every unresolved match instead of collapsing with &amp;#34;... and N more&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit dev -d ST2M4 --show-all-matches&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--check-syntax Detect invalid placeholders and broken delimiter fragments&#10; -d, --distribution string Distribution name (prompted if omitted)&#10; --group-id string Restrict local distribution scans to one generated group UUID&#10; --ignore-path strings Additional file/path ignore patterns for this run (repeatable or comma-separated)&#10; --no-context Disable context lines in console output&#10; --only-residues Show only possible variable residues in console output&#10; --only-suggestions Show only suggestions in console output&#10; --only-syntax Show only syntax checks (implies --check-syntax)&#10; --only-unresolved Show only unresolved tokens in console output&#10; --output string Write results JSON to this path (disabled by default)&#10; --scan-latest Scan the latest local distribution output created by &amp;#39;divekit distribute -p local&amp;#39;&#10; --scan-path string Scan this path instead of the origin project; local-data paths are treated as local distribution output&#10; --show-all-matches Show every unresolved match instead of collapsing lists&#10; --terminal-links Repeat full path:line on each unresolved match line&#10; --type-whitelist strings Restrict scanned file extensions for this run (repeatable or comma-separated, without dots)&#10; --watch Watch files and rescan on changes&#10; --write-individualization Create or extend individualization.json from unresolved tokens&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Individualization</title><link>https://divekit.org/docs/1-quick-start/individualization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/individualization/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;p&gt;Divekit individualizes repositories with three different files:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;variation.json&lt;/code&gt;: defines available object, relation, and logic variants.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;individualization.json&lt;/code&gt; (optional): defines replacement behavior and processing rules.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;individuals.json&lt;/code&gt; (generated): stores the concrete selection per UUID.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Important: per-member or per-group selection is &lt;strong&gt;not&lt;/strong&gt; configured via &lt;code&gt;individualization.json&lt;/code&gt; keys like &lt;code&gt;logicId&lt;/code&gt;, &lt;code&gt;objectAssignments&lt;/code&gt;, or &lt;code&gt;globalSettings&lt;/code&gt;. Those keys are outdated.&lt;/p&gt;&#10;&lt;h2 id="configuration-files"&gt;Configuration Files&lt;/h2&gt;&#10;&lt;h3 id="variationjson-input"&gt;&lt;code&gt;variation.json&lt;/code&gt; (input)&lt;/h3&gt;&#10;&lt;p&gt;Defines what can vary:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;objects&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;relations&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;logic&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Example:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;objects&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ids&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;objectVariations&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;car&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;class&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Car&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Car&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;truck&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;class&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Truck&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Truck&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;relations&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ownership&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;association&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;source&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;target&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Owner&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;one-to-one&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;one-to-many&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;logic&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;algorithm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;implementation&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;src/logic&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;simple&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;complex&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="individualizationjson-optional-input"&gt;&lt;code&gt;individualization.json&lt;/code&gt; (optional input)&lt;/h3&gt;&#10;&lt;p&gt;Defines processing behavior. Current top-level keys are:&lt;/p&gt;</description></item><item><title>Paths and Locations</title><link>https://divekit.org/docs/4-reference/paths-and-locations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/paths-and-locations/</guid><description>&lt;p&gt;This page summarizes the default file locations and path resolution rules used by the current CLI.&lt;/p&gt;&#10;&lt;h2 id="user-level-paths"&gt;User-Level Paths&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .env&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── bin/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── divekit.db&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── gui-runs/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── hosts.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── install.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── members/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── scripts/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── run/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── logs/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── secrets/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;bin/&lt;/code&gt; is the fallback managed binary installation directory (&lt;code&gt;divekit&lt;/code&gt; or &lt;code&gt;divekit.exe&lt;/code&gt;).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;divekit.db&lt;/code&gt; stores central local SQLite state such as managed GUI authentication data.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;gui-runs/&lt;/code&gt; stores per-origin SQLite run state for queued and executed GUI actions.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;hosts.json&lt;/code&gt; stores host aliases and secret/env lookup keys.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;install.json&lt;/code&gt; tracks the managed install location and PATH integration for &lt;code&gt;divekit uninstall&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;members/&lt;/code&gt; is the default base directory for members files.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;scripts/run/&lt;/code&gt; contains extensions resolved by &lt;code&gt;divekit run &amp;lt;name&amp;gt;&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;scripts/&lt;/code&gt; also contains built-in hook helpers such as Java transformers.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;secrets/&lt;/code&gt; is a fallback storage area when no OS credential manager is available.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="project-level-paths"&gt;Project-Level Paths&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;origin-repo&amp;gt;/.divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── variation.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── individualization.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── local-data/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── &amp;lt;distribution&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── local/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── &amp;lt;run-id&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ ├── &amp;lt;target&amp;gt;/&amp;lt;project&amp;gt;/repo&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── remotes.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── gitlab/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── &amp;lt;timestamp&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ ├── work/&amp;lt;uuid&amp;gt;/repo&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ ├── artifacts/&amp;lt;uuid&amp;gt;/pages/export.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── remotes.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── runs/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── &amp;lt;timestamp&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── eval-pipeline/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── work/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ ├── .gitlab-ci.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── .gitlab/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── ci/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── eval-trigger.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── materialization.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── plugins.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── eval/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── .gitlab-ci.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── .divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── plugins/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── &amp;lt;suite&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── &amp;lt;plugin&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── &amp;lt;result.path&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── .gitlab/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── ci/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── plugins/ (flat pre-suite plugins only)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── &amp;lt;plugin-id&amp;gt;.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── &amp;lt;plugin-id&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── feedback/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── distributions/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── &amp;lt;distribution&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── config.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── feedback/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ├── _all.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── &amp;lt;uuid&amp;gt;.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── variation.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── individualization.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── individuals.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── remotes.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── eval-pipeline/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── work/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ├── .gitlab-ci.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── .gitlab/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── ci/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── eval-trigger.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── materialization.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── plugins.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── eval/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── .gitlab-ci.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── .divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── plugins/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── &amp;lt;suite&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── &amp;lt;plugin&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ └── &amp;lt;result.path&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── .gitlab/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── ci/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── plugins/ (flat pre-suite plugins only)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── &amp;lt;plugin-id&amp;gt;.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── &amp;lt;plugin-id&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── feedback/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="resolution-rules"&gt;Resolution Rules&lt;/h2&gt;&#10;&lt;h3 id="individualizationjson"&gt;individualization.json&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;code&gt;.divekit/distributions/&amp;lt;distribution&amp;gt;/individualization.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.divekit/individualization.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;~/.divekit/individualization.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;built-in defaults&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="variation-definitions"&gt;Variation definitions&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;code&gt;.divekit/distributions/&amp;lt;distribution&amp;gt;/individualization.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.divekit/distributions/&amp;lt;distribution&amp;gt;/variation.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.divekit/individualization.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.divekit/variation.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;~/.divekit/individualization.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;built-in defaults with no variations&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Omitting &lt;code&gt;variations&lt;/code&gt; from a unified file continues this lookup. An explicitly&#10;empty variation section stops it. The obsolete&#10;&lt;code&gt;~/.divekit/templates/variation.json&lt;/code&gt; is no longer a runtime fallback; current&#10;versions remove an unchanged managed copy during install/update and preserve a&#10;customized copy with a warning.&lt;/p&gt;</description></item><item><title>variation.json</title><link>https://divekit.org/docs/4-reference/file-formats/variation-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/file-formats/variation-json/</guid><description>&lt;p&gt;&lt;code&gt;variation.json&lt;/code&gt; defines which content options Divekit may choose from during individualization.&lt;/p&gt;&#10;&lt;p&gt;This file is optional, but required if you want per-UUID variation selection.&lt;/p&gt;&#10;&lt;h2 id="format"&gt;Format&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;objects&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ids&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;objectVariations&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;car&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;class&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Car&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Car&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;truck&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;class&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Truck&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Truck&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;relations&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ownership&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;association&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;source&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;target&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Owner&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;one-to-one&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;one-to-many&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;logic&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;algorithm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;implementation&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;src/logic&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;options&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;simple&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;complex&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="top-level-sections"&gt;Top-Level Sections&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Key&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Type&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;objects&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Object-level choices keyed by &lt;code&gt;ids&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;relations&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Relation-level choices keyed by &lt;code&gt;id&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;logic&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Logic-level choices keyed by &lt;code&gt;id&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="variation-fields-and-token-overrides"&gt;Variation Fields and Token Overrides&lt;/h2&gt;&#10;&lt;p&gt;Each object variation can contain more than just &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;type&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, and &lt;code&gt;variables&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Evaluation Pipeline</title><link>https://divekit.org/docs/1-quick-start/evaluation-pipeline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/evaluation-pipeline/</guid><description>&lt;h2 id="what-it-is"&gt;What It Is&lt;/h2&gt;&#10;&lt;p&gt;Evaluation Pipeline is Divekit&amp;rsquo;s two-repository mode for a single assignment UUID:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;work&lt;/code&gt; repository: student-facing code repository&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;eval&lt;/code&gt; repository: evaluation repository&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;When enabled, distribution creates and links both repositories for each UUID.&lt;/p&gt;&#10;&lt;h2 id="what-it-does"&gt;What It Does&lt;/h2&gt;&#10;&lt;p&gt;For each UUID, Divekit:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Creates the &lt;code&gt;work&lt;/code&gt; and &lt;code&gt;eval&lt;/code&gt; repositories (depending on your target/group layout).&lt;/li&gt;&#10;&lt;li&gt;Individualizes content per UUID (same UUID mapping across targets).&lt;/li&gt;&#10;&lt;li&gt;Injects evaluation-pipeline CI assets.&lt;/li&gt;&#10;&lt;li&gt;Links both repositories by setting cross-repository variables and tokens.&lt;/li&gt;&#10;&lt;li&gt;Configures trigger/job-token scope so pipelines can communicate.&lt;/li&gt;&#10;&lt;li&gt;Disables GitLab&amp;rsquo;s unique Pages domain setting on &lt;code&gt;eval&lt;/code&gt; repositories when the provider supports project-level Pages settings.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="runtime-flow"&gt;Runtime Flow&lt;/h2&gt;&#10;&lt;pre class="mermaid"&gt;flowchart LR&#10; A[&amp;#34;Student pushes to work repo&amp;#34;] --&amp;gt; B[&amp;#34;work .gitlab-ci.yml&amp;#34;]&#10; B --&amp;gt; C[&amp;#34;Trigger eval pipeline&amp;#34;]&#10; C --&amp;gt; D[&amp;#34;eval pipeline prepares test env&amp;#34;]&#10; D --&amp;gt; E[&amp;#34;eval runs build/tests/plugins&amp;#34;]&#10; E --&amp;gt; F[&amp;#34;reports/artifacts&amp;#34;]&lt;/pre&gt;&#10;&lt;h2 id="work-to-eval-materialization"&gt;Work-To-Eval Materialization&lt;/h2&gt;&#10;&lt;p&gt;Student edits happen in the &lt;code&gt;work&lt;/code&gt; repository, while tests and hidden evaluation material live in the &lt;code&gt;eval&lt;/code&gt; repository.&#10;The repositories are separate. Distribution creates their initial contents, but enabling Evaluation Pipeline does not define how later student changes replace or merge into the eval checkout.&#10;When the eval pipeline starts, Divekit runs its internal eval setup, fetches the current work repository state, and applies &lt;code&gt;.divekit/materialization.json&lt;/code&gt; in the eval repository.&lt;/p&gt;</description></item><item><title>Plugins</title><link>https://divekit.org/docs/1-quick-start/plugins/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/plugins/</guid><description>&lt;div class="pageinfo pageinfo-info"&gt;&#10;&lt;p&gt;This page documents the flat plugin model of pre-suite origins. New courses enable a&#10;&lt;a href="https://divekit.org/docs/1-quick-start/plugin-suites/"&gt;plugin suite&lt;/a&gt; instead; existing origins&#10;&lt;a href="https://divekit.org/docs/1-quick-start/plugin-migration/"&gt;migrate&lt;/a&gt; to it.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="what-plugins-do"&gt;What Plugins Do&lt;/h2&gt;&#10;&lt;p&gt;Evaluation Pipeline plugins add optional CI modules to eval repositories.&#10;Typical examples are PMD, Surefire, or JaCoCo/PIT analysis plugins.&lt;/p&gt;&#10;&lt;p&gt;Each plugin has two main controls:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;add&lt;/code&gt; (alias &lt;code&gt;use&lt;/code&gt;): choose the source or project, optionally pin a ref, and enable the plugin&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;enable&lt;/code&gt; or &lt;code&gt;disable&lt;/code&gt;: toggle whether the plugin runs after it has been configured&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Use &lt;code&gt;pin&lt;/code&gt; when you only want to change the Git ref for an already configured plugin.&lt;/p&gt;</description></item><item><title>Manual Feedback</title><link>https://divekit.org/docs/1-quick-start/manual-feedback/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/manual-feedback/</guid><description>&lt;p&gt;Manual feedback lets course staff add direct notes to generated evaluation reports without changing plugin output.&#10;It is meant for human feedback such as &amp;ldquo;try extracting this into a helper&amp;rdquo; or &amp;ldquo;this applies to everyone in this milestone&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;Unlike plugin feedback, manual feedback is authored in the origin repository and then patched into generated &lt;code&gt;eval&lt;/code&gt; repositories.&#10;The report renders it as a separate teaching-team thread, above generic plugin feedback.&lt;/p&gt;&#10;&lt;h2 id="author-feedback"&gt;Author Feedback&lt;/h2&gt;&#10;&lt;p&gt;Use the interactive command when selecting a distribution or members manually:&lt;/p&gt;</description></item><item><title>Plugin Suites</title><link>https://divekit.org/docs/1-quick-start/plugin-suites/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/plugin-suites/</guid><description>&lt;div class="pageinfo pageinfo-info"&gt;&#10;&lt;p&gt;Available from divekit v2.45.0; per-plugin wizards run from the suite since v2.47.0. Earlier releases use the flat plugin model documented in the command pages.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="what-a-suite-is"&gt;What A Suite Is&lt;/h2&gt;&#10;&lt;p&gt;A plugin suite bundles one build ecosystem and everything that analyzes its&#10;output. The &lt;code&gt;maven&lt;/code&gt; suite ships the build stage of the evaluation pipeline&#10;(the job and the container image that compiles a student project) together with&#10;the analysis plugins that run against that build: PMD, Surefire, JaCoCo/PIT.&#10;A &lt;code&gt;gradle&lt;/code&gt; suite does the same for Gradle projects, and the &lt;code&gt;custom&lt;/code&gt; suite is&#10;the generic fallback for courses that build something else.&lt;/p&gt;</description></item><item><title>Migrate To Plugin Suites</title><link>https://divekit.org/docs/1-quick-start/plugin-migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/plugin-migration/</guid><description>&lt;div class="pageinfo pageinfo-info"&gt;&#10;&lt;p&gt;Available from divekit v2.45.0; earlier releases use the flat plugin model documented in the command pages.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="who-needs-this"&gt;Who Needs This&lt;/h2&gt;&#10;&lt;p&gt;Origins that were set up before plugin suites list their plugins by a flat name&#10;such as &lt;code&gt;pmd&lt;/code&gt; or &lt;code&gt;jacoco-pit&lt;/code&gt;, without a suite in front of it. Those origins&#10;have to be converted once. An origin created with a current Divekit is already&#10;on the new model and needs nothing.&lt;/p&gt;</description></item><item><title>Distribution</title><link>https://divekit.org/docs/1-quick-start/distribution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/distribution/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;divekit distribute&lt;/code&gt; creates individualized repositories from an existing distribution config.&#10;In a typical run it:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;reads &lt;code&gt;.divekit/distributions/&amp;lt;name&amp;gt;/config.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;creates repositories in the configured target group(s)&lt;/li&gt;&#10;&lt;li&gt;individualizes content for each UUID&lt;/li&gt;&#10;&lt;li&gt;assigns members and permissions&lt;/li&gt;&#10;&lt;li&gt;writes state files: &lt;code&gt;remotes.json&lt;/code&gt; and &lt;code&gt;individuals.json&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;If the evaluation pipeline is enabled, Divekit also creates the linked eval repositories.&lt;/p&gt;&#10;&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;divekit init&lt;/code&gt; is a one-time setup step and does not need to be repeated before every distribution.&lt;/p&gt;</description></item><item><title>Environment Variables</title><link>https://divekit.org/docs/4-reference/environment-variables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/environment-variables/</guid><description>&lt;p&gt;This page lists the environment variables that are relevant in normal Divekit CLI usage.&lt;/p&gt;&#10;&lt;h2 id="user-and-configuration-variables"&gt;User and Configuration Variables&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Variable&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Purpose&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DIVEKIT_HOME&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Overrides the base location used for &lt;code&gt;~/.divekit&lt;/code&gt;-style user data resolution.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DIVEKIT_MEMBERS&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Base directory used for &lt;code&gt;members.path&lt;/code&gt; resolution when paths use &lt;code&gt;$DIVEKIT_MEMBERS/...&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DIVEKIT_API_TOKEN&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Default token key used by host entries when no host-specific token key is derived.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DIVEKIT_API_TOKEN_&amp;lt;HOST&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Derived host-specific token key, for example &lt;code&gt;DIVEKIT_API_TOKEN_GITLAB&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="interaction-mode-variables"&gt;Interaction Mode Variables&lt;/h2&gt;&#10;&lt;p&gt;These are typically set by CLI flags, but they can also be set explicitly:&lt;/p&gt;</description></item><item><title>individualization.json</title><link>https://divekit.org/docs/4-reference/file-formats/individualization-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/file-formats/individualization-json/</guid><description>&lt;p&gt;&lt;code&gt;individualization.json&lt;/code&gt; controls advanced processing behavior for variable replacement, solution deletion, warnings, file handling, artifact processors, and compatibility variation settings.&lt;/p&gt;&#10;&lt;p&gt;This file is optional. If it is missing, Divekit falls back to built-in defaults.&lt;/p&gt;&#10;&lt;h2 id="minimal-example"&gt;Minimal Example&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variableDelimiter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;$&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="common-example"&gt;Common Example&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variableDelimiter&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;$&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;values&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;semester&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;SS2026&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;solutionDeletion&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;files&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;src/main/java/Solution.java&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;warnings&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ignore&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;*.tmp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;variationResidues&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;typeWhiteList&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;java&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;md&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ignoreList&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;UUID&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;matchMode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;word&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ignoreRules&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;paths&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;src/test/java/**&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;values&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Dish&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;values&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Dish|Meal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;matchMode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;regex&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;processors&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;uml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;both&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;imageFormat&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;jpg&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tableHash&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;solutionTableFileName&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${id}.solution.md&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;hashedSolutionTableFileName&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${id}.hashed.md&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tableConfigFileName&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${id}.config.json&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="top-level-keys"&gt;Top-Level Keys&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Key&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Type&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variables&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Token delimiters and fixed values.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;solutionDeletion&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Files, directories, and markers used to remove solution content.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;warnings&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Validation and unresolved-token warning behavior.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;fileManipulation&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Target-specific file naming conventions such as &lt;code&gt;_workrepo&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;processors&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Built-in artifact processors such as UML source/image generation.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;relations&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Object-relation metadata.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variableExtensions&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Prefix, suffix, and transformation maps.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variations&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Unified compatibility container for variation data.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;objectVariations&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Legacy flattened object variations.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;relationVariations&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Legacy flattened relation variations.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;logicVariations&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Legacy flattened logic variations.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="variables"&gt;&lt;code&gt;variables&lt;/code&gt;&lt;/h2&gt;&#10;&lt;p&gt;This section controls token delimiters and fixed token values.&lt;/p&gt;</description></item><item><title>Authoring Guide</title><link>https://divekit.org/docs/3-development/plugin/authoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/plugin/authoring/</guid><description>&lt;div class="pageinfo pageinfo-warning"&gt;&#10;&lt;p&gt;Authoring contracts are still experimental and may evolve.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;This page is now only a stable pointer.&lt;/p&gt;&#10;&lt;h2 id="source-of-truth"&gt;Source of Truth&lt;/h2&gt;&#10;&lt;p&gt;Plugin authoring and CI conventions should be maintained in the plugin template repository:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://gitlab.git.nrw/divekit/plugins/divekit-plugin-template/-/blob/main/README.md"&gt;divekit/plugins/divekit-plugin-template&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;That repository should define:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;repository layout: &lt;code&gt;manifest.json&lt;/code&gt;, &lt;code&gt;job.yaml&lt;/code&gt;, &lt;code&gt;Dockerfile&lt;/code&gt;, code under &lt;code&gt;src/&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;the plugin image, derived from the suite&amp;rsquo;s build image&lt;/li&gt;&#10;&lt;li&gt;optional reusable feedback assets under &lt;code&gt;feedback/&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;release-template usage&lt;/li&gt;&#10;&lt;li&gt;plugin artifact-writing conventions&lt;/li&gt;&#10;&lt;li&gt;FAQ artifact conventions&lt;/li&gt;&#10;&lt;li&gt;copyable examples for new plugin repositories&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="stable-summary"&gt;Stable Summary&lt;/h2&gt;&#10;&lt;p&gt;A plugin is one repository inside its suite&amp;rsquo;s GitLab group, named after the&#10;plugin id. Every plugin repository provides:&lt;/p&gt;</description></item><item><title>Configuration Wizards</title><link>https://divekit.org/docs/3-development/plugin/configuration-wizards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/plugin/configuration-wizards/</guid><description>&lt;p&gt;Plugins can expose their own CLI configuration flow with a declarative wizard.&#10;The plugin repository keeps the questions and the JSON shape its job reads;&#10;Divekit CLI provides the terminal UI and writes the result where the plugin&#10;job finds it.&lt;/p&gt;&#10;&lt;p&gt;The intended workflow for a course maintainer is:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin add maven&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin configure maven&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;divekit plugin configure &amp;lt;suite&amp;gt;&lt;/code&gt; runs the wizards of the suite&amp;rsquo;s enabled&#10;plugins in one session, in plugin order; &lt;code&gt;divekit plugin configure &amp;lt;suite&amp;gt;/&amp;lt;plugin&amp;gt;&lt;/code&gt; runs one of them. Divekit reads each wizard at the plugin&#10;release the course has locked, so the questions always match the plugin&#10;version that evaluates the answers. A plugin without a wizard simply&#10;contributes no questions.&lt;/p&gt;</description></item><item><title>Contract Reference</title><link>https://divekit.org/docs/3-development/plugin/contract/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/plugin/contract/</guid><description>&lt;div class="pageinfo pageinfo-warning"&gt;&#10;&lt;p&gt;Use this as the current contract baseline for new plugins.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;This page is now a short summary of the CLI-consumed plugin contract.&#10;The implementation-coupled source of truth belongs in the Divekit CLI repository.&lt;/p&gt;&#10;&lt;h2 id="stable-summary"&gt;Stable Summary&lt;/h2&gt;&#10;&lt;p&gt;Plugins are organized in plugin suites. A suite owns one build ecosystem and&#10;its build stage (&lt;code&gt;maven&lt;/code&gt;, &lt;code&gt;gradle&lt;/code&gt;, the generic &lt;code&gt;custom&lt;/code&gt; suite); a plugin is one&#10;analysis inside a suite. On GitLab a suite is a group under &lt;code&gt;divekit/plugins/&lt;/code&gt;,&#10;its builder repository is the coordinator, and every plugin is one repository&#10;next to it. The CLI currently expects the following:&lt;/p&gt;</description></item><item><title>Troubleshooting</title><link>https://divekit.org/docs/3-development/plugin/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/3-development/plugin/troubleshooting/</guid><description>&lt;p&gt;This page stays as a quick maintainer-facing checklist.&#10;Detailed contract and authoring rules live elsewhere.&lt;/p&gt;&#10;&lt;h2 id="discovery-fails"&gt;Discovery Fails&lt;/h2&gt;&#10;&lt;p&gt;Check:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin &lt;span class="nb"&gt;source&lt;/span&gt; list&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin discover --verbose&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;the source is configured and trusted&lt;/li&gt;&#10;&lt;li&gt;the suite&amp;rsquo;s builder repository exposes &lt;code&gt;manifest.json&lt;/code&gt; with &lt;code&gt;&amp;quot;kind&amp;quot;: &amp;quot;plugin-suite&amp;quot;&lt;/code&gt; on its default branch&lt;/li&gt;&#10;&lt;li&gt;the plugin repository exposes &lt;code&gt;manifest.json&lt;/code&gt; with &lt;code&gt;&amp;quot;kind&amp;quot;: &amp;quot;plugin&amp;quot;&lt;/code&gt; and is pinned in the suite manifest&lt;/li&gt;&#10;&lt;li&gt;the pinned range matches a published tag, and that tag has an image in the plugin&amp;rsquo;s container registry&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="plugin-does-not-run"&gt;Plugin Does Not Run&lt;/h2&gt;&#10;&lt;p&gt;Check:&lt;/p&gt;</description></item><item><title>Member Aliases</title><link>https://divekit.org/docs/1-quick-start/member-aliases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/member-aliases/</guid><description>&lt;p&gt;Member aliases are useful when a local members file contains course-internal names, but the corresponding GitLab accounts use different usernames.&lt;/p&gt;&#10;&lt;p&gt;Keep GitLab usernames in &lt;code&gt;groups[].members&lt;/code&gt;. Divekit uses those values for GitLab access, repository membership, &lt;code&gt;distribute&lt;/code&gt;, &lt;code&gt;patch&lt;/code&gt;, &lt;code&gt;members list&lt;/code&gt;, &lt;code&gt;overview&lt;/code&gt;, and the GUI. The optional &lt;code&gt;displayNames&lt;/code&gt; map only controls how those members are shown locally.&lt;/p&gt;&#10;&lt;h2 id="set-an-alias"&gt;Set an Alias&lt;/h2&gt;&#10;&lt;p&gt;If a member currently appears as &lt;code&gt;myname&lt;/code&gt; in &lt;code&gt;members.json&lt;/code&gt;, but the GitLab username is &lt;code&gt;myname_extern&lt;/code&gt;, set the alias before rerunning distribution:&lt;/p&gt;</description></item><item><title>Plugin Configuration JSON</title><link>https://divekit.org/docs/4-reference/file-formats/plugin-configuration-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/file-formats/plugin-configuration-json/</guid><description>&lt;p&gt;Plugin configuration files are owned by individual Evaluation Pipeline plugins.&#10;Divekit writes them when a plugin declares a&#10;&lt;a href="https://divekit.org/docs/3-development/plugin/configuration-wizards/"&gt;configuration wizard&lt;/a&gt;&#10;and a user runs &lt;code&gt;divekit plugin configure &amp;lt;suite&amp;gt;&lt;/code&gt; for all plugins of a suite or&#10;&lt;code&gt;divekit plugin configure &amp;lt;suite&amp;gt;/&amp;lt;plugin&amp;gt;&lt;/code&gt; for one of them.&lt;/p&gt;&#10;&lt;p&gt;The exact keys belong to the plugin. Divekit only controls where the file is&#10;stored, how wizard fields are converted to JSON, and optional result metadata&#10;such as &lt;code&gt;schemaVersion&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Run Extensions</title><link>https://divekit.org/docs/1-quick-start/run-extensions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/run-extensions/</guid><description>&lt;p&gt;&lt;code&gt;divekit run&lt;/code&gt; executes local extensions against repositories from a distribution. Typical uses are static analysis, report extraction, custom checks, or orchestration around external tools.&lt;/p&gt;&#10;&lt;p&gt;Before running an extension, make repositories available locally:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then run an extension from &lt;code&gt;.divekit/scripts/run/&lt;/code&gt; or by path:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit run analyze.lua -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit run ./scripts/analyze.py -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use &lt;code&gt;--fetch-first&lt;/code&gt; when Divekit should fetch before executing:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit run analyze.lua -d ST2M4 --fetch-first&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="simple-lua-extensions"&gt;Simple Lua Extensions&lt;/h2&gt;&#10;&lt;p&gt;A simple Lua extension returns a function. Divekit calls that function once for every selected repository.&lt;/p&gt;</description></item><item><title>Safe Rollout Checklist</title><link>https://divekit.org/docs/1-quick-start/safe-rollout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/1-quick-start/safe-rollout/</guid><description>&lt;p&gt;Use this checklist before the first rollout to a real cohort and before a later&#10;&lt;code&gt;patch&lt;/code&gt; that sends new content to student repositories. After completing it,&#10;you should have private repositories for the intended students, with only the&#10;required access and without an accidental copy of the cohort member list.&lt;/p&gt;&#10;&lt;h2 id="before-distribution"&gt;Before distribution&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Confirm that &lt;code&gt;groupId&lt;/code&gt; and any evaluation target point to the intended&#10;GitLab groups. Use a separate non-production group for the rehearsal.&lt;/li&gt;&#10;&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Run the complete workflow once with a small members file containing only&#10;synthetic test accounts controlled by the course team. The &lt;code&gt;--count&lt;/code&gt; option&#10;does not assign users, so it does not test access control.&lt;/li&gt;&#10;&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Confirm that the target namespace permits private projects. For any&#10;existing or reused project, check its effective project visibility in GitLab.&#10;A private project inside a public group remains private, so inspect the&#10;project rather than inferring its visibility from the parent group.&lt;/li&gt;&#10;&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Store the real members file outside the origin repo. Check that it&#10;is not tracked by Git and is not among the files that distribution can copy.&#10;&lt;code&gt;DIVEKIT_MEMBERS&lt;/code&gt; can point Divekit at a dedicated members directory outside&#10;the origin repo.&lt;/li&gt;&#10;&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Authenticate with &lt;a href="https://divekit.org/docs/2-divekit-cli/auth/"&gt;&lt;code&gt;divekit auth&lt;/code&gt;&lt;/a&gt;. Keep tokens out of the origin repo,&#10;committed configuration, shell history, and ordinary environment files.&#10;Prefer Divekit&amp;rsquo;s credential-store integration or a protected CI secret. Grant&#10;the token owner only the &lt;a href="https://divekit.org/docs/4-reference/gitlab-permissions/"&gt;GitLab permissions&lt;/a&gt; required for this rollout.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The relevant distribution settings are described in the&#10;&lt;a href="https://divekit.org/docs/4-reference/file-formats/config-json/"&gt;&lt;code&gt;config.json&lt;/code&gt; reference&lt;/a&gt;. GitLab documents how&#10;&lt;a href="https://docs.gitlab.com/user/public_access/"&gt;project visibility&lt;/a&gt; affects who&#10;can see repository content.&lt;/p&gt;</description></item><item><title>divekit doctor</title><link>https://divekit.org/docs/2-divekit-cli/doctor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/doctor/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Diagnose potential issues with your Divekit CLI setup and configuration.&lt;/p&gt;&#10;&lt;p&gt;Runs a series of checks to verify that Divekit is properly configured and&#10;all dependencies are available. Use this command to troubleshoot issues&#10;or verify your setup after installation.&lt;/p&gt;&#10;&lt;h2 id="checks-performed"&gt;Checks Performed&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Configuration file validity&lt;/li&gt;&#10;&lt;li&gt;GitLab authentication and token validity&lt;/li&gt;&#10;&lt;li&gt;Distribution configuration integrity&lt;/li&gt;&#10;&lt;li&gt;Required system dependencies&lt;/li&gt;&#10;&lt;li&gt;Network connectivity to configured hosts&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit doctor &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run all checks and display results&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit doctor&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run checks with detailed output&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit doctor --verbose&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Strict mode for CI/CD pipelines&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit doctor --strict&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--output-format string Output format: table|json (default &amp;#34;table&amp;#34;)&#10; --strict Return non-zero exit code if any check fails&#10; -v, --verbose Show additional details for successful checks&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Glossary</title><link>https://divekit.org/docs/4-reference/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/glossary/</guid><description>&lt;p&gt;This glossary defines core Divekit terms used across Quick Start, Reference, and CLI docs.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Term&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Definition&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Divekit&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Command-line tool for creating, distributing, and operating individualized programming assignments.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;CLI&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Command Line Interface. The primary way to use Divekit (&lt;code&gt;divekit ...&lt;/code&gt;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Personal Access Token&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GitLab token used by Divekit to call the GitLab API for operations such as creating groups, repositories, and memberships.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Divekit Home Directory&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;User-level Divekit directory, usually &lt;code&gt;~/.divekit&lt;/code&gt;, for local configuration, generated state, and fallback storage.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Origin Repository&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Source repository containing assignment template files and &lt;code&gt;.divekit&lt;/code&gt; configuration.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Distribution&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Named setup in &lt;code&gt;.divekit/distributions/&amp;lt;name&amp;gt;/&lt;/code&gt; that controls one rollout.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Distribution Config&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;.divekit/distributions/&amp;lt;name&amp;gt;/config.json&lt;/code&gt;, the main runtime config for distribution commands.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Target&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Logical repository target in a distribution (for example &lt;code&gt;work&lt;/code&gt; or &lt;code&gt;eval&lt;/code&gt;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Work Target&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Student-facing code repository target (&lt;code&gt;work&lt;/code&gt;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Eval Target&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Evaluation-pipeline repository target (&lt;code&gt;eval&lt;/code&gt;) used for separated CI and evaluation flows.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Evaluation Pipeline&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional paired &lt;code&gt;work&lt;/code&gt;/&lt;code&gt;eval&lt;/code&gt; model for separated CI and evaluation workflows. See &lt;a href="https://divekit.org/docs/1-quick-start/evaluation-pipeline/"&gt;Evaluation Pipeline&lt;/a&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Linking&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Automatic connection between paired targets (variables/tokens/trigger URLs, job-token scope, UUID pairing).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Member&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GitLab user account assigned to a distributed repository with a configured permission level.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Members File&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;JSON file referenced by &lt;code&gt;members.path&lt;/code&gt;. It contains &lt;code&gt;groups&lt;/code&gt;; each group has a stable &lt;code&gt;uuid&lt;/code&gt; and the GitLab usernames that should receive access to that repository.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Members Directory&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Base directory used to resolve members files. It is configured with &lt;code&gt;DIVEKIT_MEMBERS&lt;/code&gt; and defaults to &lt;code&gt;~/.divekit/members&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Group Label&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional human-readable label on a members group. It can be used in repository name templates with &lt;code&gt;{{label}}&lt;/code&gt; or as a GitLab-safe &lt;code&gt;{{slug}}&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Group Metadata&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional key/value metadata on a members group. It can be imported from member tables and used in repository name templates with &lt;code&gt;{{metadata &amp;quot;key&amp;quot;}}&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;UUID&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Stable unique identifier used for one student/group repository pair across targets.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Individualization&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Process of generating per-UUID content variants during distribution.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Variation Config&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;variation.json&lt;/code&gt; containing selectable object/relation/logic options.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Individualization Config&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;individualization.json&lt;/code&gt; containing delimiter, solution-deletion, warnings, file-manipulation and related rules.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Individuals File&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;individuals.json&lt;/code&gt;, generated state of concrete selections per UUID.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Remotes File&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;remotes.json&lt;/code&gt;, generated mapping of UUIDs to created remote repositories/project IDs.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Placeholder / Variable&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Token in template files (for example &lt;code&gt;$Vehicle$&lt;/code&gt;) replaced during individualization.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Host Alias&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Named host entry in &lt;code&gt;~/.divekit/hosts.json&lt;/code&gt; used by distribution targets (&lt;code&gt;remote&lt;/code&gt;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Provider&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Backend used for execution, for example &lt;code&gt;gitlab&lt;/code&gt;, &lt;code&gt;local&lt;/code&gt;, or &lt;code&gt;simulated&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Dry Run&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Preview mode without remote changes (&lt;code&gt;--dry-run&lt;/code&gt;, often via simulated provider).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Add Mode&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;divekit distribute --add&lt;/code&gt;: only process new UUIDs/members, keep existing distributed repos.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Fresh Mode&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;divekit distribute --fresh&lt;/code&gt;: rebuild distribution state files (&lt;code&gt;remotes.json&lt;/code&gt;, &lt;code&gt;individuals.json&lt;/code&gt;) while preserving stable repository indexes.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Fetch Snapshot&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Timestamped GitLab repository snapshot under &lt;code&gt;.divekit/local-data/&amp;lt;distribution&amp;gt;/gitlab/&amp;lt;timestamp&amp;gt;/&lt;/code&gt;, populated by &lt;code&gt;divekit fetch&lt;/code&gt; or &lt;code&gt;divekit run --fetch-first&lt;/code&gt; and reused by &lt;code&gt;run&lt;/code&gt;/analysis commands.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Research Snapshot&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;History-stripped GitLab copy created by &lt;code&gt;divekit snapshot&lt;/code&gt;. It contains the repository tree from distributed work repositories as one neutral initial commit, but it does not scrub UUIDs, names, paths, or file contents.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Local Provider Output&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Filesystem distribution output under &lt;code&gt;.divekit/local-data/&amp;lt;distribution&amp;gt;/local/&amp;lt;run-id&amp;gt;/&lt;/code&gt;, created by &lt;code&gt;divekit distribute -p local&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Extension&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;A program executed across fetched or pulled repositories, typically via &lt;a href="https://divekit.org/docs/2-divekit-cli/run/"&gt;&lt;code&gt;divekit run&lt;/code&gt;&lt;/a&gt;. Named run extensions live under &lt;code&gt;.divekit/scripts/run/&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Run Workflow&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lifecycle extension form for &lt;code&gt;divekit run&lt;/code&gt;. Lua workflows register &lt;code&gt;dk.run.prepare&lt;/code&gt;, &lt;code&gt;dk.run.each&lt;/code&gt;, and/or &lt;code&gt;dk.run.cleanup&lt;/code&gt;; external workflow directories contain &lt;code&gt;workflow.json&lt;/code&gt; and runtime functions such as &lt;code&gt;prepare&lt;/code&gt;, &lt;code&gt;each&lt;/code&gt;, and &lt;code&gt;cleanup&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Plugin&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CI plugin switch in evaluation-pipeline templates, executed in the eval pipeline and managed as described in &lt;a href="https://divekit.org/docs/1-quick-start/plugins/"&gt;Plugins&lt;/a&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Variable Extensions&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;individualization.json -&amp;gt; variableExtensions&lt;/code&gt;: token transformation rules (prefixes/suffixes/transformations). Not the same as runtime script extensions.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Inject&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;divekit inject&lt;/code&gt; command to scaffold default assets (CI templates, variation template, scripts).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Group Layout&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Strategy for deriving work/eval groups (&lt;code&gt;distribution-subgroups&lt;/code&gt; or &lt;code&gt;legacy&lt;/code&gt;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;</description></item><item><title>State Files</title><link>https://divekit.org/docs/4-reference/file-formats/state-files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/file-formats/state-files/</guid><description>&lt;p&gt;Divekit writes distribution state into the distribution directory. These files are generated and updated by commands such as &lt;code&gt;distribute&lt;/code&gt;, &lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;patch&lt;/code&gt;, &lt;code&gt;overview&lt;/code&gt;, and &lt;code&gt;passcheck&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Default location:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.divekit/distributions/&amp;lt;distribution&amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="individualsjson"&gt;individuals.json&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;individuals.json&lt;/code&gt; stores the concrete per-UUID variation selection that was actually used during distribution.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;individuals&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;team-01&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;selection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;objects&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Vehicle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;car&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;relations&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ownership&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;one-to-many&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;logic&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;algorithm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;simple&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use this file to inspect what was assigned. Do not treat it as the source of possible options; that belongs in &lt;code&gt;variation.json&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>materialization.json</title><link>https://divekit.org/docs/4-reference/file-formats/materialization-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/file-formats/materialization-json/</guid><description>&lt;p&gt;&lt;code&gt;materialization.json&lt;/code&gt; tells an Evaluation Pipeline run which files or directories from the &lt;code&gt;work&lt;/code&gt; repository should be copied into the &lt;code&gt;eval&lt;/code&gt; repository before tests and plugins run.&lt;/p&gt;&#10;&lt;p&gt;There are three related locations:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Location&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Kind&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Purpose&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;.divekit/eval-pipeline/materialization.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Authoring config&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional origin-side rules read during distribution or patching.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;.divekit/distributions/&amp;lt;distribution&amp;gt;/eval-pipeline/materialization.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Authoring config&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional distribution-specific rules.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;.divekit/materialization.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Generated runtime manifest&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Written into generated &lt;code&gt;eval&lt;/code&gt; repositories and applied by the eval setup job.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;For most projects, prefer the path-marker form described below.&#10;Use explicit JSON rules when the source and target paths should differ or when the source path should be optional.&#10;If all rules come from path markers, no authoring &lt;code&gt;materialization.json&lt;/code&gt; file is needed.&lt;/p&gt;</description></item><item><title>hosts.json</title><link>https://divekit.org/docs/4-reference/file-formats/hosts-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/4-reference/file-formats/hosts-json/</guid><description>&lt;p&gt;&lt;code&gt;hosts.json&lt;/code&gt; stores named remote host entries used by &lt;code&gt;remote&lt;/code&gt; fields in distribution config.&lt;/p&gt;&#10;&lt;p&gt;Default location:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.divekit/hosts.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Recommended management command:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit auth&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="format"&gt;Format&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;hosts&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;gitnrw&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;host&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://gitlab.git.nrw/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tokenAt&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DIVEKIT_API_TOKEN&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxWorkers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;rateLimitDelayMs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enableConcurrency&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="keys"&gt;Keys&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Key&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Type&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Current format version. Use &lt;code&gt;&amp;quot;1.0&amp;quot;&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;hosts&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;object&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Map of host alias to host definition.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;hosts.&amp;lt;alias&amp;gt;.host&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Base URL of the GitLab or Git provider instance.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;hosts.&amp;lt;alias&amp;gt;.tokenAt&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Key name used to resolve the stored token.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;hosts.&amp;lt;alias&amp;gt;.maxWorkers&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional per-host concurrency limit.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;hosts.&amp;lt;alias&amp;gt;.rateLimitDelayMs&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;integer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional delay between requests in milliseconds.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;hosts.&amp;lt;alias&amp;gt;.enableConcurrency&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;boolean&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Optional concurrency toggle for that host.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="security-notes"&gt;Security Notes&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;hosts.json&lt;/code&gt; stores metadata and token references, not raw token values.&lt;/li&gt;&#10;&lt;li&gt;Divekit prefers the OS credential manager for actual token storage and falls back only when no keychain/keyring integration is available.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;divekit auth unset &amp;lt;host&amp;gt;&lt;/code&gt; removes the configured host and deletes the stored token entry.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Related pages:&lt;/p&gt;</description></item><item><title>divekit fetch</title><link>https://divekit.org/docs/2-divekit-cli/fetch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/fetch/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Download distributed repositories to a local cache for offline access.&lt;/p&gt;&#10;&lt;p&gt;Fetches all or selected repositories from a distribution into a local cache directory.&#10;Cached repositories can then be used by other commands like &amp;lsquo;run&amp;rsquo; or &amp;lsquo;passcheck&amp;rsquo;&#10;without requiring network access.&lt;/p&gt;&#10;&lt;p&gt;WHAT HAPPENS:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Reads distribution config and remotes.json&lt;/li&gt;&#10;&lt;li&gt;Connects to GitLab and syncs repositories via git clone/pull&lt;/li&gt;&#10;&lt;li&gt;Downloads additional artifacts (currently pages/export.json)&lt;/li&gt;&#10;&lt;li&gt;Stores data in .divekit/distributions/&amp;lt;distribution&amp;gt;/.cache/&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fetch all repositories for a distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fetch only specific repositories by UUID&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch -d ST2M4 --uuid abc123 --uuid def456&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fetch repositories for specific users&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch -d ST2M4 --user alice --user bob&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fetch only specific file types&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch -d ST2M4 --files &lt;span class="s2"&gt;&amp;#34;*.java&amp;#34;&lt;/span&gt; --files &lt;span class="s2"&gt;&amp;#34;*.md&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Preview what would be downloaded&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch -d ST2M4 --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Control download concurrency&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch -d ST2M4 --workers &lt;span class="m"&gt;3&lt;/span&gt; --rate-limit &lt;span class="m"&gt;5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fetch to a custom directory&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit fetch -d ST2M4 --output-dir ./repos&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name&#10; -n, --dry-run Show what would be downloaded without downloading&#10; --files strings Specific files to download (glob patterns)&#10; -o, --output-dir string Custom output directory (default: use local-data GitLab store)&#10; --rate-limit float Maximum downloads per second (0 = unlimited)&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; --task-timeout duration Maximum time per download task (0 = use preset)&#10; -t, --token string GitLab token or token file path (file:///...)&#10; --user strings Only fetch repositories for these usernames (repeatable)&#10; --uuid strings Only fetch repositories with these UUIDs (repeatable)&#10; -w, --workers int Number of concurrent downloads (0 = use preset)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit gui</title><link>https://divekit.org/docs/2-divekit-cli/gui/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/gui/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Start the Divekit graphical interface.&lt;/p&gt;&#10;&lt;p&gt;This command is experimental and may still change.&lt;/p&gt;&#10;&lt;p&gt;By default, this starts local single-user mode on this computer without login.&#10;Use &amp;ndash;mode managed for authenticated server operation. Managed mode binds to&#10;127.0.0.1 unless &amp;ndash;host is set explicitly.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit gui &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Start local single-user mode&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit gui&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Start managed server mode on the local interface&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit gui --mode managed&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Expose managed mode on all interfaces, for example behind a TLS reverse proxy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit gui --mode managed --host 0.0.0.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--assets-dir string GUI assets directory override (default: embedded web/gui/dist assets in binary) (default &amp;#34;auto&amp;#34;)&#10; --auth-config string Persisted GUI server auth database path&#10; --auth-subject string Subject name for generated admin credentials (default &amp;#34;server-admin&amp;#34;)&#10; --auth-token string Static bearer token for managed mode&#10; --auth-token-env string Environment variable containing the static bearer token (default &amp;#34;DIVEKIT_SERVER_TOKEN&amp;#34;)&#10; --host string GUI server host (default: 127.0.0.1)&#10; --mode string GUI startup mode: local|managed (default: local)&#10; --open-browser Open browser automatically after startup (default: true in local mode, false in managed mode)&#10; --port int GUI server port (default 8787)&#10; --reset-auth Replace persisted managed-mode auth database and print a newly generated admin token&#10; --setup-auth Create persisted managed-mode auth database when missing and print the admin token&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit init</title><link>https://divekit.org/docs/2-divekit-cli/init/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/init/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Initialize a new Divekit origin repository in the current directory.&lt;/p&gt;&#10;&lt;p&gt;Creates the required .divekit directory structure and configuration files&#10;needed for managing distributions. This is typically the first command you&#10;run when setting up a new Divekit project.&lt;/p&gt;&#10;&lt;h2 id="created-structure"&gt;Created Structure&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .divekit/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; distributions/ Distribution configurations&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;amp;lt;name&amp;amp;gt;/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; config.json Distribution settings&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="optional-files"&gt;Optional Files&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;.divekit/variation.json&lt;/li&gt;&#10;&lt;li&gt;.divekit/individualization.json&lt;/li&gt;&#10;&lt;li&gt;.divekit/eval-pipeline/materialization.json Work-to-eval rules&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit init &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Initialize with interactive prompts&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit init&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Initialize with defaults (no prompts)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit init --non-interactive&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit feedback add</title><link>https://divekit.org/docs/2-divekit-cli/feedback/add/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/feedback/add/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Add manual feedback for one distribution member&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback add &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback add -d ST2M4 --member 5c8fc911-c4da-44be-b76d-c6d2d1c9e1f1 --message &lt;span class="s2"&gt;&amp;#34;Try extracting this into a helper function.&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback add -d ST2M4 --all --message &lt;span class="s2"&gt;&amp;#34;Remember to explain your design choices.&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback add -d ST2M4 --member 5c8fc911-c4da-44be-b76d-c6d2d1c9e1f1 --message-file feedback/note.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--all Author feedback for all members in the distribution&#10; -d, --distribution string Distribution name&#10; --id string Feedback item id (default: generated)&#10; --member stringArray Distribution member UUID (or configured member alias; repeatable or comma-separated)&#10; --message string Feedback message to render in the report page&#10; --message-file string Read feedback message from a Markdown file&#10; --user stringArray Alias for --member&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/feedback/"&gt;divekit feedback&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit index add</title><link>https://divekit.org/docs/2-divekit-cli/index/add/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/index/add/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Add a Divekit project to the local index for fast discovery.&lt;/p&gt;&#10;&lt;p&gt;Registers a project path in the index database so it can be found by&#10;the search command. If no path is provided, the current directory is used.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index add &lt;span class="o"&gt;[&lt;/span&gt;path&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add current directory to index&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index add&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add a specific project by path&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index add /path/to/project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Find and add all projects recursively&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index add --recursive&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Find sibling projects (go up one dir, scan siblings)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index add --siblings&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Combine: go up one dir, then search recursively&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index add --siblings --recursive&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--recursive Search recursively in subdirectories&#10; --siblings Go up one directory and find all sibling projects&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/index/"&gt;divekit index&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members add</title><link>https://divekit.org/docs/2-divekit-cli/members/add/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/add/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Add members to a distribution before creating or updating repositories.&lt;/p&gt;&#10;&lt;p&gt;The command writes a new members file with new users appended, preserves UUIDs&#10;for existing groups, and updates the distribution config to point at the new&#10;file.&lt;/p&gt;&#10;&lt;h2 id="input-sources"&gt;Input Sources&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Interactive (default):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Opens the multiline member input prompt when no arguments, --members-file,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; or stdin input are provided.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Arguments:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Provide one or more usernames as positional arguments.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Use --members-file to read usernames to add from a file.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Stdin:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Pipe usernames into the command.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members add &lt;span class="o"&gt;[&lt;/span&gt;member...&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add two users to the next distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members add -d ST2M5 alice bob&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add users listed in a file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members add -d ST2M5 --members-file additional-members.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Preview additions without changing config.json or members files&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members add -d ST2M5 --members-file additional-members.txt --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--dry-run Preview added members without writing a new members file&#10; --members-file string Path to a file with member names to add (one per line)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin add</title><link>https://divekit.org/docs/2-divekit-cli/plugin/add/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/add/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Add or update one plugin and enable it for the evaluation pipeline&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin add &amp;lt;plugin&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--host string Host alias from &amp;#39;divekit config hosts list&amp;#39; when using --project&#10; --project string Plugin project path (for direct custom plugin setup)&#10; --ref string Optional ref to pin while adding the plugin&#10; --source string Advanced: source name from &amp;#39;divekit plugin source list&amp;#39;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit patch ci</title><link>https://divekit.org/docs/2-divekit-cli/patch/ci/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/patch/ci/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Apply the authored work/eval CI and evaluation-pipeline runtime files to distributed repositories.&lt;/p&gt;&#10;&lt;p&gt;This command collects existing files from .divekit/eval-pipeline and delegates&#10;to the regular patch workflow.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit patch ci &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit patch ci -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit patch ci -d ST2M4 --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name&#10; -n, --dry-run string[=&amp;#34;true&amp;#34;] Preview changes without applying (alias for --provider simulated)&#10; -m, --message string Commit message for the CI patch&#10; -p, --provider string Provider to use: gitlab (default), local (filesystem), simulated (dry-run)&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; -t, --token string GitLab token or token file path (file:///...)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/patch/"&gt;divekit patch&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit config explain</title><link>https://divekit.org/docs/2-divekit-cli/config/explain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/explain/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Display documentation for Divekit configuration options.&lt;/p&gt;&#10;&lt;p&gt;Shows available configuration keys, their types, and descriptions.&#10;Without a topic, displays an overview of all configuration areas.&lt;/p&gt;&#10;&lt;h2 id="topics"&gt;Topics&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; origin Distribution configuration&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - remote, groupId, targetGroupPath&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - members, scripting options&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - evaluationPipeline settings&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hosts Authentication host configuration&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - url, token, tokenKey&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - concurrency settings (maxWorkers, rateLimitDelayMs)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config explain &lt;span class="o"&gt;[&lt;/span&gt;topic&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show configuration overview&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config explain&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show origin configuration keys&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config explain origin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show hosts configuration keys&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config explain hosts&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --dist string distribution to resolve for the effective topic&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/"&gt;divekit config&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit run init</title><link>https://divekit.org/docs/2-divekit-cli/run/init/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/run/init/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Create a workflow extension in .divekit/scripts/run/.&lt;/p&gt;&#10;&lt;p&gt;Lua workflows are generated as .divekit/scripts/run/&amp;lt;name&amp;gt;.lua. Other&#10;languages are generated as workflow folders under .divekit/scripts/run/&amp;lt;name&amp;gt;/.&#10;If name or language are omitted, Divekit prompts for them. Existing files are&#10;not overwritten unless &amp;ndash;force is used or overwrite is confirmed interactively.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit run init &lt;span class="o"&gt;[&lt;/span&gt;name&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit run init&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit run init has_readme --language lua&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit run init used_ai --language javascript --runner bun&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--force Overwrite generated files if they already exist&#10; --language string Workflow language: lua|shell|python|javascript|typescript|go|java|kotlin&#10; --runner string Optional JavaScript or TypeScript runner, for example node|bun|deno&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/run/"&gt;divekit run&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit inject</title><link>https://divekit.org/docs/2-divekit-cli/inject/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/inject/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Copy Divekit default assets into the project.&lt;/p&gt;&#10;&lt;p&gt;Injects pre-configured templates and default files into your Divekit project.&#10;Useful for setting up evaluation pipelines, default variation configurations,&#10;or Lua transformation scripts.&lt;/p&gt;&#10;&lt;h2 id="available-scopes"&gt;Available Scopes&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ci GitLab CI configuration for evaluation pipelines&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → .divekit/eval-pipeline/{work,eval}/.gitlab-ci.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; variation Small example variation.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → .divekit/variation.json (or distribution path)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; scripts Lua transformation scripts for Java&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → .divekit/scripts/java/*.lua&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; all All of the above&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit inject &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Interactive asset selection&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit inject&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Inject CI configuration for evaluation pipelines&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit inject --scope ci&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Inject a variation example&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit inject --scope variation&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Inject Lua transformation scripts&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit inject --scope scripts&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Inject everything&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit inject --scope all&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Inject into a specific distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit inject --scope variation -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Force overwrite existing files&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit inject --scope ci --force&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Write to distribution overrides (name); default writes to project-level .divekit/eval-pipeline state&#10; --force Overwrite existing files&#10; --scope string Comma-separated scopes: ci,variation,scripts,all; &amp;#39;scripts&amp;#39; covers Lua transformers&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit distribute recover-project-checkpoint</title><link>https://divekit.org/docs/2-divekit-cli/distribute/recover-project-checkpoint/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/distribute/recover-project-checkpoint/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Acknowledge one project create only when the journal records an exact&#10;observed-success identity. The command rereads that recorded provider identity&#10;with the configured read-only provider before writing the local mapping. Missing,&#10;changed, deleted, or unavailable provider evidence leaves the mapping untouched;&#10;the operation remains recovery_required for review of other boundaries.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit distribute recover-project-checkpoint &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--distribution string Optional distribution name to verify against the journal&#10; --operation-id string Exact operation ID from the journal&#10; --origin string Origin directory containing the operation journal (default &amp;#34;.&amp;#34;)&#10; --provider string Optional provider name to verify against the journal&#10; --step-id string Exact project step ID from the journal&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/distribute/"&gt;divekit distribute&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit auth register</title><link>https://divekit.org/docs/2-divekit-cli/auth/register/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/auth/register/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Interactively register a new GitLab instance.&lt;/p&gt;&#10;&lt;p&gt;Guides you through entering the hostname, URL, and authentication token&#10;for a new GitLab instance. The token is stored in the system keychain; without&#10;a working keychain, saving it fails unless plaintext storage is allowed with&#10;DIVEKIT_ALLOW_PLAINTEXT_SECRETS=1.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit auth register &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit auth register&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Same command under the name other CLIs use&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit auth login&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/auth/"&gt;divekit auth&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin configure</title><link>https://divekit.org/docs/2-divekit-cli/plugin/configure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/configure/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Run the configuration wizards of a suite&amp;rsquo;s plugins.&lt;/p&gt;&#10;&lt;p&gt;Each plugin declares its own wizard, read at the release the course locked.&#10;&amp;lsquo;configure &amp;lt;suite&amp;gt;&amp;rsquo; runs the wizards of every enabled plugin in one session,&#10;&amp;lsquo;configure &amp;lt;suite&amp;gt;/&amp;lt;plugin&amp;gt;&amp;rsquo; one of them; each writes its JSON below&#10;.divekit/plugins/&amp;lt;suite&amp;gt;/&amp;lt;plugin&amp;gt;/ in the evaluation-pipeline authoring area&#10;of this project or distribution, with existing values pre-filled. A plain&#10;plugin id runs the wizard of a flat pre-suite plugin.&lt;/p&gt;</description></item><item><title>divekit feedback copy</title><link>https://divekit.org/docs/2-divekit-cli/feedback/copy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/feedback/copy/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Copy manual feedback from one member to other members&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback copy &amp;lt;source-member&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback copy -d ST2M4 5c8fc911-c4da-44be-b76d-c6d2d1c9e1f1 --member a70decaf-bad7-4c95-b211-d0bc95f48204&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback copy -d ST2M4 5c8fc911-c4da-44be-b76d-c6d2d1c9e1f1 --id feedback-20260601T100000Z --member a70decaf-bad7-4c95-b211-d0bc95f48204&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name&#10; --id string Copy only one feedback item id&#10; --member stringArray Distribution member UUID (or configured member alias; repeatable or comma-separated)&#10; --user stringArray Alias for --member&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/feedback/"&gt;divekit feedback&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit patch feedback</title><link>https://divekit.org/docs/2-divekit-cli/patch/feedback/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/patch/feedback/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Apply locally authored manual feedback to evaluation repositories.&lt;/p&gt;&#10;&lt;p&gt;Use &amp;lsquo;divekit feedback add&amp;rsquo; first to author feedback in the origin repository.&#10;Without &amp;ndash;member or &amp;ndash;user, all authored feedback is patched.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit patch feedback &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback add -d ST2M4 --member 5c8fc911-c4da-44be-b76d-c6d2d1c9e1f1 --message &lt;span class="s2"&gt;&amp;#34;Try extracting this into a helper function.&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit patch feedback -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit patch feedback -d ST2M4 --member 5c8fc911-c4da-44be-b76d-c6d2d1c9e1f1 --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--all Patch all authored feedback (default when no --member or --user is given)&#10; -d, --distribution string Distribution name&#10; -n, --dry-run string[=&amp;#34;true&amp;#34;] Preview changes without applying (alias for --provider simulated)&#10; --member stringArray Member UUIDs whose eval repositories should receive feedback (or configured member aliases; repeatable or comma-separated)&#10; -m, --message string Commit message for the feedback patch&#10; -p, --provider string Provider to use: gitlab (default), local (filesystem), simulated (dry-run)&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; -t, --token string GitLab token or token file path (file:///...)&#10; --user stringArray Alias for --member&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/patch/"&gt;divekit patch&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit install</title><link>https://divekit.org/docs/2-divekit-cli/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/install/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Install divekit into a managed user-level bin directory for easy access from any directory.&lt;/p&gt;&#10;&lt;p&gt;By default, Divekit prefers ~/.local/bin on Unix when that directory already&#10;exists or is already part of your PATH. Otherwise it falls back to ~/.divekit/bin.&#10;On Windows, Divekit installs into %USERPROFILE%.divekit\bin\divekit.exe.&lt;/p&gt;&#10;&lt;p&gt;Set DIVEKIT_INSTALL_DIR to override the install directory when needed.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit install &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Install divekit into the preferred managed user bin directory&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit install&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Non-interactive installation&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit install --non-interactive&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit index refresh</title><link>https://divekit.org/docs/2-divekit-cli/index/refresh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/index/refresh/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Refresh the project index by validating all entries.&lt;/p&gt;&#10;&lt;p&gt;Iterates through all indexed projects and:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Verifies that each project path still exists&lt;/li&gt;&#10;&lt;li&gt;Checks that each path is a valid Divekit project&lt;/li&gt;&#10;&lt;li&gt;Updates the list of distributions for valid projects&lt;/li&gt;&#10;&lt;li&gt;Removes invalid or deleted projects from the index&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index refresh &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Refresh the entire project index&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index refresh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Refresh without interactive prompts&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit index refresh --non-interactive&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/index/"&gt;divekit index&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit auth unset</title><link>https://divekit.org/docs/2-divekit-cli/auth/unset/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/auth/unset/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Remove a configured GitLab instance and its stored token.&lt;/p&gt;&#10;&lt;p&gt;If no hostname is provided, you will be prompted to select from configured instances.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit auth &lt;span class="nb"&gt;unset&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;hostname&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove interactively (select from list)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit auth &lt;span class="nb"&gt;unset&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove a specific instance&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit auth &lt;span class="nb"&gt;unset&lt;/span&gt; gitnrw&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/auth/"&gt;divekit auth&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin disable</title><link>https://divekit.org/docs/2-divekit-cli/plugin/disable/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/disable/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Disable a configured plugin in the evaluation pipeline&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin disable &lt;span class="o"&gt;[&lt;/span&gt;plugin&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--all Disable all configured plugins&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members exclude</title><link>https://divekit.org/docs/2-divekit-cli/members/exclude/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/exclude/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Exclude configured members from a distribution before creating repositories.&lt;/p&gt;&#10;&lt;p&gt;The command writes a new members file with the excluded users removed, preserves&#10;UUIDs for all remaining groups, drops empty groups, and updates the distribution&#10;config to point at the new file.&lt;/p&gt;&#10;&lt;h2 id="input-sources"&gt;Input Sources&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Arguments:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Provide one or more usernames as positional arguments.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Use --members-file to read usernames to exclude from a file.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Stdin:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Pipe usernames into the command.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members exclude &lt;span class="o"&gt;[&lt;/span&gt;member...&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Exclude two users from the next distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members exclude -d ST2M4 alice bob&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Exclude users listed in a file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members exclude -d ST2M4 --members-file excluded.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Preview exclusions without changing config.json or members files&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members exclude -d ST2M4 --members-file excluded.txt --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--dry-run Preview excluded members without writing a new members file&#10; --members-file string Path to a file with member names to exclude (one per line)&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; -t, --token string GitLab token or token file path (file:///...)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit patch files</title><link>https://divekit.org/docs/2-divekit-cli/patch/files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/patch/files/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Apply file updates and explicit file operations to all repositories in a distribution.&lt;/p&gt;&#10;&lt;p&gt;This is the explicit form of the legacy file patch command:&lt;/p&gt;&#10;&lt;p&gt;divekit patch files README.md&lt;/p&gt;&#10;&lt;p&gt;The legacy shorthand remains available:&lt;/p&gt;&#10;&lt;p&gt;divekit patch README.md&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit patch files &lt;span class="o"&gt;[&lt;/span&gt;file1&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;file2...&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--delete stringArray Delete a repository-relative file path from distributed repositories (repeatable)&#10; --delete-dir stringArray Delete all files below a repository-relative directory path from distributed repositories (repeatable)&#10; --disable-eval-pages-unique-domain Disable unique GitLab Pages domains for eval repositories&#10; -d, --distribution string Distribution name&#10; -n, --dry-run string[=&amp;#34;true&amp;#34;] Preview changes without applying (alias for --provider simulated)&#10; --force Force writing patch files even when remote content already matches&#10; -m, --message string Commit message for the patch&#10; --move stringArray Move a repository-relative file path using old/path:new/path (repeatable)&#10; -p, --provider string Provider to use: gitlab (default), local (filesystem), simulated (dry-run)&#10; --rate-limit float Maximum tasks per second (0 = unlimited)&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; --task-timeout duration Maximum time per task (0 = use preset)&#10; -t, --token string GitLab token or token file path (file:///...)&#10; --warn-unresolved-tokens string Warn about unresolved tokens: auto|true|false (default &amp;#34;auto&amp;#34;)&#10; -w, --workers int Number of concurrent workers (0 = use preset)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/patch/"&gt;divekit patch&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit feedback list</title><link>https://divekit.org/docs/2-divekit-cli/feedback/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/feedback/list/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;List locally authored manual feedback&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback list &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--all List feedback authored for all members&#10; -d, --distribution string Distribution name&#10; --member stringArray Distribution member UUID (or configured member alias; repeatable or comma-separated)&#10; --user stringArray Alias for --member&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/feedback/"&gt;divekit feedback&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin discover</title><link>https://divekit.org/docs/2-divekit-cli/plugin/discover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/discover/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Advanced: discover available plugins from trusted sources.&lt;/p&gt;&#10;&lt;p&gt;Most users do not need this command. Use &amp;lsquo;divekit plugin add &amp;lt;plugin&amp;gt;&amp;rsquo; for the&#10;normal workflow, and only use discovery when you need to browse or resolve&#10;plugins from non-default sources.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin discover &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--source string Only discover plugins from one source name&#10; --verbose Show detailed discover output&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members filter</title><link>https://divekit.org/docs/2-divekit-cli/members/filter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/filter/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Filter members in a distribution before creating or updating repositories.&lt;/p&gt;&#10;&lt;p&gt;Use &amp;ndash;include to keep only listed users. Use &amp;ndash;exclude to remove listed users.&#10;The aliases retain, keep, and intersect use &amp;ndash;include semantics.&lt;/p&gt;&#10;&lt;h2 id="input-sources"&gt;Input Sources&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Interactive (default):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Opens the multiline member input prompt when no arguments, --members-file,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; or stdin input are provided.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Arguments:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Provide one or more usernames as positional arguments.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; File:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Use --members-file to read usernames from a file.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Stdin:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Pipe usernames into the command.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members filter &lt;span class="o"&gt;[&lt;/span&gt;member...&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Keep only users listed in a file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members filter -d ST2M5 --include --members-file passed-members.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Equivalent include aliases&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members keep -d ST2M5 --members-file passed-members.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members retain -d ST2M5 --members-file passed-members.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove listed users&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members filter -d ST2M5 --exclude --members-file skipped-members.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Preview filtering without changing config.json or members files&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members filter -d ST2M5 --include --members-file passed-members.txt --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--dry-run Preview filtered members without writing a new members file&#10; --exclude Remove listed members&#10; --include Keep only listed members&#10; --members-file string Path to a file with member names to filter (one per line)&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; -t, --token string GitLab token or token file path (file:///...)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit patch name</title><link>https://divekit.org/docs/2-divekit-cli/patch/name/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/patch/name/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Reconcile provider-side repository names and URL paths for an existing distribution.&lt;/p&gt;&#10;&lt;p&gt;The expected repository name is derived from the distribution config.json field&#10;&amp;ldquo;name&amp;rdquo; or the default &amp;ldquo;{{distribution}}-{{uuid}}&amp;rdquo;. When URL paths change,&#10;Divekit also refreshes remotes.json, cross-repository variables, and files that&#10;contain PagesURL/pagesUrl tokens.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit patch name &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--apply Apply the planned changes&#10; -d, --distribution string Distribution name&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; --scope string Metadata scope to update: name, path, both&#10; -t, --token string GitLab token or token file path (file:///...)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/patch/"&gt;divekit patch&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit overview</title><link>https://divekit.org/docs/2-divekit-cli/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/overview/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Display a comprehensive overview of distributed repositories.&lt;/p&gt;&#10;&lt;p&gt;Shows information about all repositories in a distribution including UUIDs,&#10;target URLs, assigned users, and current status. Can display as a table in&#10;the terminal or open the GUI focused on the selected distribution.&lt;/p&gt;&#10;&lt;h2 id="information-displayed"&gt;Information Displayed&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Repository UUID and name&lt;/li&gt;&#10;&lt;li&gt;Target URL on GitLab&lt;/li&gt;&#10;&lt;li&gt;Assigned members&lt;/li&gt;&#10;&lt;li&gt;Repository status and activity&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit overview &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show overview for a distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit overview -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fetch fresh data (bypass cache)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit overview -d ST2M4 --no-cache&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Open the GUI focused on this distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit overview -d ST2M4 --serve&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Control API concurrency&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit overview -d ST2M4 --workers &lt;span class="m"&gt;5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name&#10; --no-cache Ignore cached members file and fetch fresh data from API&#10; --output-format string Output format: table|json (default &amp;#34;table&amp;#34;)&#10; --rate-limit-delay duration Delay between per-UUID API requests (0 = default)&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; -s, --serve Open the GUI focused on this distribution&#10; -t, --token string GitLab token or token file path (file:///...)&#10; -w, --workers int Number of concurrent API workers (0 = default)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit feedback remove</title><link>https://divekit.org/docs/2-divekit-cli/feedback/remove/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/feedback/remove/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Remove one manual feedback item&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit feedback remove &amp;lt;id&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--all Remove feedback authored for all members&#10; -d, --distribution string Distribution name&#10; --member stringArray Distribution member UUID (or configured member alias; repeatable or comma-separated)&#10; --user stringArray Alias for --member&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/feedback/"&gt;divekit feedback&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin enable</title><link>https://divekit.org/docs/2-divekit-cli/plugin/enable/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/enable/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Enable a configured plugin in the evaluation pipeline&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin &lt;span class="nb"&gt;enable&lt;/span&gt; &amp;lt;plugin&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members list</title><link>https://divekit.org/docs/2-divekit-cli/members/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/list/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Show configured members and their current GitLab roles&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members list &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--offline Show configured members without checking GitLab roles&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; -t, --token string GitLab token or token file path (file:///...)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit passcheck</title><link>https://divekit.org/docs/2-divekit-cli/passcheck/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/passcheck/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Check and aggregate test results from evaluation pipeline repositories.&lt;/p&gt;&#10;&lt;p&gt;Connects to GitLab and retrieves test results from evaluation pipeline repositories.&#10;Provides an overview of passed/failed tests across all students and can generate&#10;detailed reports in various formats.&lt;/p&gt;&#10;&lt;h2 id="requirements"&gt;Requirements&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Distribution must have an evaluation pipeline enabled&lt;/li&gt;&#10;&lt;li&gt;Evaluation repositories must be configured in the distribution&lt;/li&gt;&#10;&lt;li&gt;Valid GitLab authentication&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="report-formats"&gt;Report Formats&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; excel Microsoft Excel spreadsheet (.xlsx)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; csv Comma-separated values (.csv)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; html HTML report with styling&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; md Markdown table format&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit passcheck &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Check test results for a distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit passcheck -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show detailed results per student&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit passcheck -d ST2M4 --detail&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Generate all report formats&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit passcheck -d ST2M4 --report&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Generate specific report formats&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit passcheck -d ST2M4 --report --report-format excel,csv&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Default report output path&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit passcheck -d ST2M4 --report&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# -&amp;gt; .divekit/local-data/reports/ST2M4/&amp;lt;timestamp&amp;gt;/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Save reports to custom directory&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit passcheck -d ST2M4 --report --output-dir ./results/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--detail Show detailed test results per student&#10; -d, --distribution string Distribution name (auto-detect if not provided)&#10; --output-dir string Output directory for generated reports (default: .divekit/local-data/reports/&amp;lt;distribution&amp;gt;/&amp;lt;timestamp&amp;gt;/)&#10; -r, --remote string Remote repository URL (GitLab instance)&#10; --report Generate report files (xlsx, csv, html, md)&#10; --report-format strings Report formats: excel,csv,html,md (default: all when --report is set)&#10; -t, --token string GitLab token&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit plugin install</title><link>https://divekit.org/docs/2-divekit-cli/plugin/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/install/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Install plugin-ready evaluation-pipeline assets&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin install &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--force Overwrite existing injected CI templates&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members role</title><link>https://divekit.org/docs/2-divekit-cli/members/role/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/role/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Update GitLab access level for members in a distribution.&lt;/p&gt;&#10;&lt;p&gt;Changes the permission level for all project members across all repositories&#10;in a distribution by default. Pass specific members to update only those&#10;users. Downgrades also revoke overprivileged Project Access Tokens on affected&#10;work projects. Useful for adjusting access after deadlines or during different&#10;phases of an assignment.&lt;/p&gt;&#10;&lt;h2 id="access-levels"&gt;Access Levels&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; guest Can view project but not clone/download&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reporter Can clone and view issues&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; developer Can push to non-protected branches&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; maintainer Full access including protected branches&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="use-cases"&gt;Use Cases&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Restrict access after submission deadline (developer → guest)&lt;/li&gt;&#10;&lt;li&gt;Grant access for collaboration phase (guest → developer)&lt;/li&gt;&#10;&lt;li&gt;Emergency lockdown of all repositories&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members role &lt;span class="o"&gt;[&lt;/span&gt;access-level&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;member...&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set all members to developer access&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members role -d ST2M4 developer&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Restrict all members to guest (read-only)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members role -d ST2M4 guest&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Using flag instead of positional argument&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members role -d ST2M4 --access-level reporter&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Re-enable specific members only&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members role -d ST2M4 developer alice bob&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Re-enable specific members with an interactive access-level prompt&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members role -d ST2M4 --member alice --member bob&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Interactive access level selection&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members role -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deprecated alias, still supported&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit role -d ST2M4 developer alice bob&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--access-level string New access level: guest|reporter|developer|maintainer&#10; --member strings GitLab username to update; may be used multiple times&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin list</title><link>https://divekit.org/docs/2-divekit-cli/plugin/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/list/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;List configured plugins for evaluation pipelines&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin list &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--verbose Show detailed plugin list output&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members show</title><link>https://divekit.org/docs/2-divekit-cli/members/show/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/show/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Show groups matching a member name or UUID&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members show &lt;span class="o"&gt;[&lt;/span&gt;member-or-uuid&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin migrate</title><link>https://divekit.org/docs/2-divekit-cli/plugin/migrate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/migrate/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Convert flat v1 plugin state and its materialized layout to plugin suites.&lt;/p&gt;&#10;&lt;p&gt;The command prints the full plan and changes nothing until &amp;lsquo;&amp;ndash;apply&amp;rsquo; is passed.&#10;An applied migration copies every file it overwrites into&#10;&amp;lsquo;.divekit/backup/plugin-migrate-&amp;lt;timestamp&amp;gt;/&amp;rsquo;, which &amp;lsquo;&amp;ndash;rollback&amp;rsquo; restores.&lt;/p&gt;&#10;&lt;p&gt;Before writing, apply verifies the published suite, resolves enabled plugins to&#10;release tags and image digests, and composes the resulting pipeline. If the&#10;suite is incomplete, the origin stays unchanged on contract v1.&lt;/p&gt;</description></item><item><title>divekit purge</title><link>https://divekit.org/docs/2-divekit-cli/purge/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/purge/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Delete the repositories a distribution created in its target groups.&lt;/p&gt;&#10;&lt;p&gt;WARNING: This operation is destructive and cannot be undone.&#10;All repository content is permanently deleted.&lt;/p&gt;&#10;&lt;p&gt;WHAT HAPPENS:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Reads remotes.json to identify the distributed repositories&lt;/li&gt;&#10;&lt;li&gt;Lists the target group projects and keeps only the recorded ones;&#10;other projects in the same groups are reported as skipped&lt;/li&gt;&#10;&lt;li&gt;Shows the deletion plan for confirmation&lt;/li&gt;&#10;&lt;li&gt;Deletes the confirmed repositories&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&amp;ndash;dry-run shows the plan for the real target groups and exits before the&#10;confirmation, so nothing is deleted. &amp;ndash;all-group-projects widens the plan to&#10;every project in the target groups, including ones Divekit did not create.&lt;/p&gt;</description></item><item><title>divekit members status</title><link>https://divekit.org/docs/2-divekit-cli/members/status/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/status/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Show member assignment status without changing anything&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members status &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-r, --remote string Remote repository URL (e.g. GitLab instance)&#10; -t, --token string GitLab token or token file path (file:///...)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin outdated</title><link>https://divekit.org/docs/2-divekit-cli/plugin/outdated/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/outdated/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Show plugins with newer stable versions available&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin outdated &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit role</title><link>https://divekit.org/docs/2-divekit-cli/role/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/role/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;DEPRECATED: Please use &amp;lsquo;divekit members role&amp;rsquo; instead.&lt;/p&gt;&#10;&lt;p&gt;Update GitLab access level for members in a distribution.&lt;/p&gt;&#10;&lt;p&gt;Changes the permission level for all project members across all repositories&#10;in a distribution by default. Pass specific members to update only those&#10;users. Downgrades also revoke overprivileged Project Access Tokens on affected&#10;work projects. Useful for adjusting access after deadlines or during different&#10;phases of an assignment.&lt;/p&gt;</description></item><item><title>divekit members sync</title><link>https://divekit.org/docs/2-divekit-cli/members/sync/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/sync/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Synchronize configured members with distributed work repositories&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members sync &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-r, --remote string Remote repository URL (e.g. GitLab instance)&#10; -t, --token string GitLab token or token file path (file:///...)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members validate</title><link>https://divekit.org/docs/2-divekit-cli/members/validate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/validate/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Validate the configured members file&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members validate &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/"&gt;divekit members&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin override add</title><link>https://divekit.org/docs/2-divekit-cli/plugin/override/add/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/override/add/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Add a manual report override to selected evaluation repositories.&lt;/p&gt;&#10;&lt;p&gt;The override is stored as a JSON file in .divekit/overrides and is&#10;applied by the report renderer after plugin reports are collected.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin override add &amp;lt;plugin&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Override one JaCoCo-PIT test for two groups&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin override add jacoco-pit -d ST2M4 --test-id coverage-threshold --group-ids b8520e99-2bad-c0de-b61c-1249a10f7a5a,a70decaf-bad7-4c95-b211-d0bc95f48204&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Match an existing report entry by category and name&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin override add jacoco-pit -d ST2M4 --category JaCoCo --name Coverage --group-ids 5f5c... --reason &lt;span class="s2"&gt;&amp;#34;Accepted after manual review&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Override every test result from one plugin for one group&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin override add jacoco-pit -d ST2M4 --all-tests --group-ids b8520e99-2bad-c0de-b61c-1249a10f7a5a&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Preview the patch for all eval repositories&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin override add jacoco-pit -d ST2M4 --test-id coverage-threshold --all --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--all Patch all eval repositories in the distribution&#10; --all-tests Override every test result produced by the plugin&#10; --category string Report category to override when no test id is available&#10; -n, --dry-run string[=&amp;#34;true&amp;#34;] Preview changes without applying (alias for --provider simulated)&#10; --group-ids stringArray Group UUIDs from the members file to patch (repeatable or comma-separated)&#10; --id string Override id and file name (default: generated)&#10; --members stringArray Member names whose repositories should be patched (repeatable or comma-separated)&#10; --members-file string Path to a file with member names (one per line)&#10; --name string Report name to narrow a category override&#10; -p, --provider string Provider to use: gitlab (default), local (filesystem), simulated (dry-run)&#10; --reason string Optional reason for the manual override&#10; --status string Status to force: success|warning|failure|fatal (default &amp;#34;success&amp;#34;)&#10; --test-id string Stable plugin test id to override&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/override/"&gt;divekit plugin override&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin source add</title><link>https://divekit.org/docs/2-divekit-cli/plugin/source/add/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/source/add/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Add a trusted plugin source&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin &lt;span class="nb"&gt;source&lt;/span&gt; add &amp;lt;name&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--disabled Add source as disabled&#10; --group string GitLab group path (e.g. divekit/plugins)&#10; --host string Host alias from &amp;#39;divekit config hosts list&amp;#39; (default &amp;#34;gitnrw&amp;#34;)&#10; --project string Single GitLab project path (e.g. my-org/divekit-plugin-foo)&#10; --trusted Confirm this source is trusted&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/source/"&gt;divekit plugin source&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Go Testing Guide (Legacy)</title><link>https://divekit.org/docs/archive/divekit-v2/go-testing-guide-legacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/archive/divekit-v2/go-testing-guide-legacy/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;&#10;&lt;p&gt;Legacy material: this document is preserved for historical context and is not the current testing standard for Divekit CLI.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="what-should-be-tested-in-this-project"&gt;What should be tested in this project?&lt;/h3&gt;&#10;&lt;p&gt;Given that this CLI is the entry point for the user to interact with Divekit, it is essential to test all commands.&#10;Currently, there is only one command &lt;code&gt;patch&lt;/code&gt;, but all commands should be tested with the following aspects in mind:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Command Syntax&lt;/strong&gt;&lt;/em&gt;: Verify that the command syntax is correct&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Command Execution&lt;/strong&gt;&lt;/em&gt;: Ensure that executing the command produces the expected behavior or output&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Options and Arguments&lt;/strong&gt;&lt;/em&gt;: Test each option and argument individually to ensure they are processed correctly&#10;and test various combinations of options and arguments&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Error Handling&lt;/strong&gt;&lt;/em&gt;: Test how the command handles incorrect syntax, invalid options, or missing arguments&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Additionally, testing the utility functions is necessary, as they are used throughout the entire project.&#10;For that the following aspects should be considered:&lt;/p&gt;</description></item><item><title>divekit config hosts list</title><link>https://divekit.org/docs/2-divekit-cli/config/hosts/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/hosts/list/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;List all configured authentication hosts with their URLs and settings.&lt;/p&gt;&#10;&lt;p&gt;Shows host name, URL, concurrency settings, and token status for each configured host.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts list &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts list&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/hosts/"&gt;divekit config hosts&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit config origin list</title><link>https://divekit.org/docs/2-divekit-cli/config/origin/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/origin/list/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;List all available distributions in the current Divekit project.&lt;/p&gt;&#10;&lt;p&gt;Scans the .divekit/distributions directory and shows all configured distributions.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin list &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin list&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/origin/"&gt;divekit config origin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members alias list</title><link>https://divekit.org/docs/2-divekit-cli/members/alias/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/alias/list/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;List configured member display names&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members &lt;span class="nb"&gt;alias&lt;/span&gt; list &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/alias/"&gt;divekit members alias&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin pin</title><link>https://divekit.org/docs/2-divekit-cli/plugin/pin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/pin/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Pin one plugin to a Git reference (branch, tag, or commit), or pin a plugin of a&#10;plugin suite to a version.&lt;/p&gt;&#10;&lt;p&gt;A suite plugin is named by its runtime identity &amp;lt;suite&amp;gt;/&amp;lt;plugin&amp;gt;. Its pin is one&#10;of: an exact version (1.2.1), patch updates (~1.2 or ~1.2.1), or updates within a&#10;major version (^1 or ^1.2.1). The pin replaces the pin of the suite manifest for&#10;this origin. The locked version only moves when it no longer matches the pin;&#10;&amp;lsquo;divekit plugin update&amp;rsquo; picks up newer releases that the pin allows. Use &amp;ndash;clear&#10;to follow the suite manifest again.&lt;/p&gt;</description></item><item><title>divekit search</title><link>https://divekit.org/docs/2-divekit-cli/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/search/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Search for Divekit projects by name, distribution, or user.&lt;/p&gt;&#10;&lt;p&gt;Provides both interactive and non-interactive modes for finding projects&#10;in the local index. Selected projects can be navigated to or have actions&#10;executed on them.&lt;/p&gt;&#10;&lt;h2 id="modes"&gt;Modes&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Interactive (default when no arguments):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Launches a TUI to browse and select projects.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Output: prints selected project path to stdout.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Non-Interactive (when search terms or filters provided):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Searches with provided terms/filters and prints matching paths.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="available-actions"&gt;Available Actions&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; distribute Run distribute on selected project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; doctor Run doctor on selected project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; fetch-all Fetch all repositories&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; fetch-one Fetch single repository&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; overview Show project overview&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; passcheck Run passcheck&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; run Run an extension (requires --run-script)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit search &lt;span class="o"&gt;[&lt;/span&gt;term...&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Launch interactive search (default)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit search&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Search by project name&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit search my-project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Filter by user&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit search --user alice&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Filter by distribution&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit search -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Navigate to selected project&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;divekit search&lt;span class="k"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Search and run distribute on selection&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit search --action distribute&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Search and run an extension&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit search --action run --run-script analyze&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--action string Action to run on selection: distribute|doctor|fetch-all|fetch-one|overview|passcheck|run&#10; -d, --distribution string Filter by distribution name&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; --run-script string Extension to run when --action=run (path or extension name)&#10; -t, --token string GitLab token or token file path (file:///...)&#10; --user string Filter by username&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Testrepo Notes (Legacy)</title><link>https://divekit.org/docs/archive/divekit-v1/testrepo-legacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/archive/divekit-v1/testrepo-legacy/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;&#10;&lt;p&gt;Legacy material: this page is no longer part of the active testing documentation.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="testing-package-structure"&gt;Testing Package structure&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://git.st.archi-lab.io/staff/divekit-example/example-origin/-/blob/master/src/test/java/thkoeln/divekit/archilab/PackageStructureTest_testrepo.java"&gt;ExampleFile&lt;/a&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;final&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;PACKAGE_PREFIX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;thkoeln.divekit.archilab.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@Test&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;testPackageStructure&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PACKAGE_PREFIX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;domainprimitives.StorageCapacity&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PACKAGE_PREFIX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;notebook.application.NotebookDto&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PACKAGE_PREFIX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;notebook.application.NotebookController&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PACKAGE_PREFIX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;notebook.domain.Notebook&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// using individualization and the variableExtensionConfig.json this could be simplified to&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Class.forName(&amp;#34;$entityPackage$.domain.$entityClass$&amp;#34;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ==&amp;gt; Attention: If used, the test can&amp;#39;t be tested in the orgin repo itself&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ClassNotFoundException&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Assertions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;At least one of your entities is not in the right package, or has a wrong name. Please check package structure and spelling!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="testing-rest-controller"&gt;Testing REST Controller&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://git.st.archi-lab.io/staff/divekit-example/example-origin/-/blob/master/src/test/java/thkoeln/divekit/archilab/ControllerTest.java"&gt;ExampleFile&lt;/a&gt;&lt;/p&gt;</description></item><item><title>divekit plugin source list</title><link>https://divekit.org/docs/2-divekit-cli/plugin/source/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/source/list/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;List configured plugin sources&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin &lt;span class="nb"&gt;source&lt;/span&gt; list &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/source/"&gt;divekit plugin source&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin refresh</title><link>https://divekit.org/docs/2-divekit-cli/plugin/refresh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/refresh/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Refresh installed evaluation-pipeline assets and optionally pin one plugin ref&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin refresh &lt;span class="o"&gt;[&lt;/span&gt;plugin&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--ref string Optional ref to pin when updating one plugin&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin override remove</title><link>https://divekit.org/docs/2-divekit-cli/plugin/override/remove/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/override/remove/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Remove a manual report override from selected eval repositories&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin override remove &amp;lt;override-id&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin override remove coverage-threshold-20260529T091500Z -d ST2M4 --members alice,bob&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin override remove coverage-threshold-20260529T091500Z -d ST2M4 --all --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--all Patch all eval repositories in the distribution&#10; -n, --dry-run string[=&amp;#34;true&amp;#34;] Preview changes without applying (alias for --provider simulated)&#10; --group-ids stringArray Group UUIDs from the members file to patch (repeatable or comma-separated)&#10; --members stringArray Member names whose repositories should be patched (repeatable or comma-separated)&#10; --members-file string Path to a file with member names (one per line)&#10; -p, --provider string Provider to use: gitlab (default), local (filesystem), simulated (dry-run)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/override/"&gt;divekit plugin override&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit config hosts rename</title><link>https://divekit.org/docs/2-divekit-cli/config/hosts/rename/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/hosts/rename/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Rename a host entry while preserving all its settings and tokens.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts rename &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts rename --from oldname --to newname&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--from string Current host name&#10; --to string New host name&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/hosts/"&gt;divekit config hosts&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit config origin rm</title><link>https://divekit.org/docs/2-divekit-cli/config/origin/rm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/origin/rm/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Remove a configuration value from config.json.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin rm &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove a key from config&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin rm -d ST2M4 --key unusedSetting&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove createMergeRequest setting&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin rm -d ST2M4 --key createMergeRequest&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name&#10; --key string Configuration key to remove (prefix with remotes. to target remotes.json)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/origin/"&gt;divekit config origin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit members alias set</title><link>https://divekit.org/docs/2-divekit-cli/members/alias/set/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/alias/set/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Set a local display name for a GitLab username.&lt;/p&gt;&#10;&lt;p&gt;The local name is the name already used in a local members file, for example a&#10;student name or internal account name. The GitLab username is the account name&#10;that should be stored in members.json and used for GitLab operations.&lt;/p&gt;&#10;&lt;p&gt;You can pass both values as positional arguments or with explicit flags.&lt;/p&gt;</description></item><item><title>divekit snapshot</title><link>https://divekit.org/docs/2-divekit-cli/snapshot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/snapshot/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Create research snapshots from a Divekit distribution.&lt;/p&gt;&#10;&lt;p&gt;Snapshots clone the selected work repositories, remove Git history, create a&#10;single neutral initial commit, and push the result into a target GitLab group.&lt;/p&gt;&#10;&lt;p&gt;Privacy note: this removes commit history and commit metadata only. UUIDs,&#10;file contents, file paths, and other in-repository data are not anonymized or&#10;scrubbed.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit snapshot &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Snapshot all repositories into an explicit research group&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit snapshot -d ST2M4 --target-group research/course-2026&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Preview without creating subgroups, projects, clones, or pushes&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit snapshot -d ST2M4 --target-group research/course-2026 --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Snapshot selected UUIDs and overwrite existing targets&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit snapshot -d ST2M4 --uuid abc123 --uuid def456 --on-existing overwrite&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--author-email string Neutral snapshot commit author email (default &amp;#34;divekit@invalid.local&amp;#34;)&#10; --author-name string Neutral snapshot commit author name (default &amp;#34;Divekit&amp;#34;)&#10; --branch string Target branch to push (default &amp;#34;main&amp;#34;)&#10; --commit-message string Snapshot commit message (default &amp;#34;Initial snapshot&amp;#34;)&#10; -d, --distribution string Distribution name&#10; -n, --dry-run Show what would happen without cloning, creating GitLab resources, or pushing&#10; --label string Snapshot label (default: local timestamp YYYYMMDD-HHMMSS)&#10; --name-pattern string Target project name template (default: {{distribution}}-{{uuid}})&#10; --on-existing string Existing target behavior: skip, overwrite, or fail (default &amp;#34;skip&amp;#34;)&#10; -o, --output-dir string Local staging output directory to keep after push&#10; --rate-limit float Maximum snapshot tasks per second (unset = preset, 0 = unlimited)&#10; -r, --remote string Remote repository URL (e.g. GitLab instance)&#10; --source-ref string Source branch or tag to clone (default: source default branch)&#10; --target-group string Target GitLab group path or ID&#10; -t, --token string GitLab token or token file path (file:///...)&#10; --user strings Only snapshot repositories for these usernames (repeatable)&#10; --uuid strings Only snapshot repositories with these UUIDs (repeatable)&#10; --visibility string Target project visibility (default &amp;#34;private&amp;#34;)&#10; -w, --workers int Number of concurrent snapshot workers (0 = use preset)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit plugin source remove</title><link>https://divekit.org/docs/2-divekit-cli/plugin/source/remove/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/source/remove/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Remove a plugin source&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin &lt;span class="nb"&gt;source&lt;/span&gt; remove &amp;lt;name&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/source/"&gt;divekit plugin source&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit config hosts rm</title><link>https://divekit.org/docs/2-divekit-cli/config/hosts/rm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/hosts/rm/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Remove a host configuration from the settings.&lt;/p&gt;&#10;&lt;p&gt;By default, only the host entry is removed. Use &amp;ndash;remove-token to also&#10;delete the stored authentication token from the system keychain or the&#10;plaintext fallback store.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts rm &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove host entry only&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts rm --name gitlab&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Remove host entry and stored token&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts rm --name gitlab --remove-token&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--name string Host name to remove&#10; --remove-token Also remove stored token&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/hosts/"&gt;divekit config hosts&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit config origin set</title><link>https://divekit.org/docs/2-divekit-cli/config/origin/set/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/origin/set/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Set or update a configuration value in config.json.&lt;/p&gt;&#10;&lt;p&gt;Values are parsed as JSON when possible, otherwise stored as strings.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set target group ID&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin &lt;span class="nb"&gt;set&lt;/span&gt; -d ST2M4 --key groupId --value &lt;span class="m"&gt;123&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set repository name pattern&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin &lt;span class="nb"&gt;set&lt;/span&gt; -d ST2M4 --key name --value &lt;span class="s2"&gt;&amp;#34;ST2-{{uuid}}&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Change remote provider&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin &lt;span class="nb"&gt;set&lt;/span&gt; -d ST2M4 --key remote --value gitlab&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name&#10; --key string Configuration key (prefix with remotes. to target remotes.json)&#10; --value string Value to set (parsed as JSON when possible)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/origin/"&gt;divekit config origin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit plugin show</title><link>https://divekit.org/docs/2-divekit-cli/plugin/show/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/show/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Show the resolved state for one evaluation-pipeline plugin&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin show &amp;lt;plugin&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit uninstall</title><link>https://divekit.org/docs/2-divekit-cli/uninstall/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/uninstall/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Remove the managed Divekit installation from this user account.&lt;/p&gt;&#10;&lt;p&gt;By default, this removes the installed divekit binary, cleans up PATH entries&#10;managed by Divekit, and removes the install manifest.&lt;/p&gt;&#10;&lt;p&gt;Use &amp;ndash;purge-user-data to also remove ~/.divekit, including configuration,&#10;templates, scripts, logs, and fallback secret storage.&lt;/p&gt;&#10;&lt;p&gt;Use &amp;ndash;remove-tokens to also delete stored authentication tokens from the&#10;system keychain or Divekit fallback secret storage.&lt;/p&gt;</description></item><item><title>divekit members alias unset</title><link>https://divekit.org/docs/2-divekit-cli/members/alias/unset/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/members/alias/unset/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Remove display-name metadata for a GitLab username&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit members &lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nb"&gt;unset&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;gitlab-username&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--dry-run Preview alias removal without writing a new members file&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name (required or prompted)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/members/alias/"&gt;divekit members alias&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit config hosts set</title><link>https://divekit.org/docs/2-divekit-cli/config/hosts/set/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/hosts/set/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Add a new host or update an existing host configuration.&lt;/p&gt;&#10;&lt;p&gt;Use this command to configure GitLab instances or other Git providers.&#10;Tokens can be provided directly, read from environment variables, or entered interactively.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add a host with interactive token prompt (recommended)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts &lt;span class="nb"&gt;set&lt;/span&gt; --name gitlab --url https://gitlab.com --ask-token&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Add a host with token from command line&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts &lt;span class="nb"&gt;set&lt;/span&gt; --name gitlab --url https://gitlab.com --token glpat-xxx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Update concurrency settings for an existing host&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config hosts &lt;span class="nb"&gt;set&lt;/span&gt; --name gitlab --max-workers &lt;span class="m"&gt;5&lt;/span&gt; --enable-concurrency&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--ask-token Prompt for token interactively&#10; --disable-concurrency Disable concurrency for this host&#10; --enable-concurrency Enable concurrency for this host&#10; --max-workers int Override per-host concurrency workers (0 = leave unchanged)&#10; --name string Host alias (e.g. gitlab)&#10; --rate-limit-delay-ms int Delay between requests in milliseconds (0 = leave unchanged)&#10; --token string API token to store securely&#10; --token-key string Override token key (defaults to derived DIVEKIT_API_TOKEN_* env var)&#10; --url string Host URL (e.g. https://gitlab.com)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/hosts/"&gt;divekit config hosts&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit config origin show</title><link>https://divekit.org/docs/2-divekit-cli/config/origin/show/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/config/origin/show/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Display the origin configuration for a specific distribution.&lt;/p&gt;&#10;&lt;p&gt;Shows the contents of config.json and optionally remotes.json.&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin show &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show config as JSON&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin show -d ST2M4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show config and remotes&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin show -d ST2M4 --remotes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Show config in table format&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit config origin show -d ST2M4 --format table&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Distribution name&#10; --format string Output format: json|table (default &amp;#34;json&amp;#34;)&#10; --remotes Also show remotes.json&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/config/origin/"&gt;divekit config origin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit update</title><link>https://divekit.org/docs/2-divekit-cli/update/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/update/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Check for and install updates to the divekit CLI.&lt;/p&gt;&#10;&lt;p&gt;Downloads and installs the latest version from the configured GitLab remote.&#10;Supports both stable and pre-release update channels.&lt;/p&gt;&#10;&lt;h2 id="update-channels"&gt;Update Channels&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; stable Production-ready releases (default)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pre Pre-release versions for testing new features&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit update &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Check and apply updates&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit update&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Only check for available updates&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit update --check&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Update to latest pre-release&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit update --channel pre&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Update with explicit credentials&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit update --token glpat-xxx --remote https://gitlab.git.nrw&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--channel string Update channel: stable or pre (default &amp;#34;stable&amp;#34;)&#10; --check Only check and print versions without updating&#10; -r, --remote string GitLab base URL (e.g., https://gitlab.git.nrw)&#10; -t, --token string GitLab token or token file path (file:///...)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>divekit plugin upgrade</title><link>https://divekit.org/docs/2-divekit-cli/plugin/upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/plugin/upgrade/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Upgrade plugins to the newest stable version&lt;/p&gt;&#10;&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;divekit plugin upgrade &lt;span class="o"&gt;[&lt;/span&gt;plugin&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;flags&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;--all Upgrade all configured plugins with newer stable versions&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="inherited-flags"&gt;Inherited Flags&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-d, --distribution string Target distribution override (default: project-level eval overrides and .divekit state)&#10; -l, --loglevel string log level (debug, info, warn, error, fatal) (default &amp;#34;info&amp;#34;)&#10; --no-index skip project index update&#10; --non-interactive run in non-interactive mode (fails if interactive input is required)&#10; -y, --yes assume yes/default for all prompts (non-interactive with automatic defaults)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="parent-command"&gt;Parent Command&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://divekit.org/docs/2-divekit-cli/plugin/"&gt;divekit plugin&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>divekit version</title><link>https://divekit.org/docs/2-divekit-cli/version/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/docs/2-divekit-cli/version/</guid><description>&lt;!-- Code generated by cmd/docgen. DO NOT EDIT. --&gt;&#10;&lt;h2 id="synopsis"&gt;Synopsis&lt;/h2&gt;&#10;&lt;p&gt;Display version and build information for the divekit CLI.&lt;/p&gt;&#10;&lt;p&gt;Shows the version number, the git commit, and the build date.&lt;/p&gt;&#10;&lt;p&gt;Release builds report the metadata injected at release time. Development&#10;builds report the commit and commit time Go records from the checkout, with&#10;a &amp;ldquo;-dirty&amp;rdquo; suffix when the tree had uncommitted changes, and say so&#10;explicitly when no VCS metadata was recorded.&lt;/p&gt;</description></item><item><title>Search Results</title><link>https://divekit.org/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://divekit.org/search/</guid><description/></item></channel></rss>