<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Functionality on Porch Documentation</title><link>/v1.5/docs/5_architecture_and_components/controllers/functionality/</link><description>Recent content in Functionality on Porch Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="/v1.5/docs/5_architecture_and_components/controllers/functionality/index.xml" rel="self" type="application/rss+xml"/><item><title>PackageVariant Reconciliation</title><link>/v1.5/docs/5_architecture_and_components/controllers/functionality/packagevariant-reconciliation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.5/docs/5_architecture_and_components/controllers/functionality/packagevariant-reconciliation/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&lt;p&gt;The PackageVariant controller implements a continuous synchronization pattern between upstream and downstream packages. It monitors upstream PackageRevisions for changes, detects when downstream packages need updating, and creates appropriate drafts (clone, upgrade, or edit) to maintain synchronization while applying configured mutations.&lt;/p&gt;
&lt;h3 id="high-level-architecture"&gt;High-Level Architecture&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│ PackageVariant Reconciliation System │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ State Machine │ │ Upstream │ │
│ │ │ ──&amp;gt; │ Tracking │ │
│ │ • No Downstream │ │ │ │
│ │ • Upstream Chg │ │ • UpstreamLock │ │
│ │ • Mutation Chg │ │ • Comparison │ │
│ │ • Up-to-date │ │ • Detection │ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ └───────────┬─────────────┘ │
│ ↓ │
│ ┌──────────────────┐ │
│ │ Draft │ │
│ │ Management │ │
│ │ │ │
│ │ • Clone │ │
│ │ • Upgrade │ │
│ │ • Edit │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="reconciliation-state-machine"&gt;Reconciliation State Machine&lt;/h2&gt;&lt;p&gt;The controller implements a state machine that determines actions based on current state:&lt;/p&gt;</description></item><item><title>PackageVariantSet Reconciliation</title><link>/v1.5/docs/5_architecture_and_components/controllers/functionality/packagevariantset-reconciliation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.5/docs/5_architecture_and_components/controllers/functionality/packagevariantset-reconciliation/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&lt;p&gt;The PackageVariantSet controller implements a declarative fan-out pattern where a single upstream package is automatically instantiated across multiple downstream targets using template-based generation with CEL expressions. It manages bulk creation of PackageVariant CRs based on target selectors and ensures the desired set of PackageVariants matches the actual set through set-based reconciliation.&lt;/p&gt;
&lt;h3 id="high-level-architecture"&gt;High-Level Architecture&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│ PackageVariantSet Reconciliation System │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Target │ │ Template │ │
│ │ Unrolling │ ──&amp;gt; │ Evaluation │ │
│ │ │ │ │ │
│ │ • Repository │ │ • CEL Exprs │ │
│ │ List │ │ • Context │ │
│ │ • Repository │ │ • Dynamic │ │
│ │ Selector │ │ Config │ │
│ │ • Object │ │ │ │
│ │ Selector │ │ │ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ └────────┬────────────────┘ │
│ ↓ │
│ ┌──────────────────┐ │
│ │ Set-Based │ │
│ │ Reconciliation │ │
│ │ │ │
│ │ • Desired Set │ │
│ │ • Existing Set │ │
│ │ • Create/Update │ │
│ │ • Delete │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="reconciliation-flow"&gt;Reconciliation Flow&lt;/h2&gt;&lt;p&gt;The controller follows a structured reconciliation process:&lt;/p&gt;</description></item><item><title>Mutation Application</title><link>/v1.5/docs/5_architecture_and_components/controllers/functionality/mutation-application/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.5/docs/5_architecture_and_components/controllers/functionality/mutation-application/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&lt;p&gt;The PackageVariant controller applies mutations to downstream package revisions to customize them based on the PackageVariant specification. Mutations are systematic transformations applied to package resources after cloning or upgrading from upstream, enabling configuration injection, function pipeline modification, and dynamic resource generation.&lt;/p&gt;
&lt;h3 id="high-level-architecture"&gt;High-Level Architecture&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│ Mutation Application System │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Package │ │ KRM │ │
│ │ Context │ ───&amp;gt; │ Functions │ │
│ │ │ │ │ │
│ │ • ConfigMap │ │ • Prepend │ │
│ │ Data │ │ • Naming │ │
│ │ • Add/Remove │ │ • Pipeline │ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ └────────┬────────────────┘ │
│ ↓ │
│ ┌──────────────────┐ │
│ │ Config │ │
│ │ Injection │ │
│ │ │ │
│ │ • Annotation │ │
│ │ • Selector │ │
│ │ • Field Copy │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="mutation-orchestration"&gt;Mutation Orchestration&lt;/h2&gt;&lt;p&gt;Mutations are applied in a specific order during package revision processing:&lt;/p&gt;</description></item></channel></rss>