feat(apply): declarative extension_points reconcile (§5.5 C3)
Thread extension-point markers through the manifest and the apply engine — a name-only resource modeled on `secrets` (shape) with `vars`-style create/prune write behavior. - manifest: top-level `extension_points = ["theme", …]` (allowed on app and group; overlay stays base-only via deny_unknown_fields); `build_bundle` emits the names. - apply_service: `Bundle.extension_points`, `CurrentState.extension_point_names`, `Plan.extension_points` (+ is_noop), `diff_extension_points` (declared→Create / live-undeclared→Delete / else NoOp), `load_current` loads them, `reconcile_node_tx` inserts on Create + deletes on prune, `state_token_with_names` folds in `ep|<name>`, `validate_bundle` rejects duplicates + reserved names, `ApplyReport` gains created/deleted counts. - CLI client + plan/apply rendering: `extension_points` in PlanDto/NodePlanDto/ ApplyReportDto, an `extension_point` row group in `pic plan`, a count in the apply summary. pull sets it empty for now (wired to the read endpoint in C4). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1320,6 +1320,8 @@ pub struct PlanDto {
|
||||
pub secrets: Vec<ChangeDto>,
|
||||
#[serde(default)]
|
||||
pub vars: Vec<ChangeDto>,
|
||||
#[serde(default)]
|
||||
pub extension_points: Vec<ChangeDto>,
|
||||
/// Fingerprint of the live state this plan was computed against; carried
|
||||
/// in `.picloud/` and replayed to `apply` for the bound-plan check.
|
||||
#[serde(default)]
|
||||
@@ -1358,6 +1360,8 @@ pub struct NodePlanDto {
|
||||
pub secrets: Vec<ChangeDto>,
|
||||
#[serde(default)]
|
||||
pub vars: Vec<ChangeDto>,
|
||||
#[serde(default)]
|
||||
pub extension_points: Vec<ChangeDto>,
|
||||
}
|
||||
|
||||
/// Response of `POST .../apply`: counts of what changed.
|
||||
@@ -1386,6 +1390,10 @@ pub struct ApplyReportDto {
|
||||
#[serde(default)]
|
||||
pub vars_deleted: u32,
|
||||
#[serde(default)]
|
||||
pub extension_points_created: u32,
|
||||
#[serde(default)]
|
||||
pub extension_points_deleted: u32,
|
||||
#[serde(default)]
|
||||
pub warnings: Vec<String>,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user