<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>How Divekit Works on Divekit</title><link>https://divekit.org/docs/3-development/architecture/</link><description>Recent content in How Divekit Works on Divekit</description><generator>Hugo</generator><language>en</language><atom:link href="https://divekit.org/docs/3-development/architecture/index.xml" rel="self" type="application/rss+xml"/><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>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></channel></rss>