Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,25 @@ Two side findings fixed in the same sweep: the stale `component.global` example
`core/docs/TELEMETRY_PROCESSOR.md`, and **edge-console's missing `config.schema.json`**, now authored
from `ConsoleConfig::from_global` (edge-console PR #10, closes that repo's P0-3).

Then per deck ch. 13: storage/K8s → UI → execution/convergence.
**Slice 4a — the config adoption loop: SHIPPED (2026-07-23).** Deck ch. 13 slice 4's first half
(REVIEW #6, resolved). The definition is now the **source of truth in the site repo**: the canonical
`definition.yaml` + `layers/` + `bindings/` moved into `bottling-company-test/sites/dallas-site`, and
its `config-drift-gate` was rewritten to build the `edgecommons` CLI from public core, **render the
definition, and diff against the checked-in config sources** — self-contained, no cross-repo golden
clone, no secret (which also retires the last consumer of the deleted `EDGECOMMONS_READ_TOKEN`).
Proven locally: the render reproduces all 22 checked-in config files byte-for-byte. Decisions folded
in: definition lives **with the site** (not in core), and the gate is **check-only** (render + diff),
not regenerate-and-commit. Core keeps `fixtures/dallas` as a **frozen regression oracle** — relabeled,
with a README pointing at bct as canonical — so the two copies can't silently drift (the golden test
enforces byte-identity). Config sources covered: the **FILE** sources this HOST site uses; per REVIEW
#3 each config source is its own delivery adapter (`CONFIGMAP`/`GG_CONFIG`/… are other platforms).
`GitCatalogSource` stays deferred until on-edge ref pinning earns its keep.

**Remaining in slice 4:** the **Kubernetes renderer** (4b) — demand-gated on its first consumer (the
org's hand-maintained k8s test chart), so it waits until that chart is ready to be regenerated.

Then per deck ch. 13: slice 5 UI (`studio serve`, read-only config-layers + render-review) →
slice 6 execution/convergence.

## Step 4 — UI decisions — **DONE (2026-07-22)**

Expand Down Expand Up @@ -210,9 +228,9 @@ Mock verified: all nine pages render with zero console errors; wizard walks 4 st

## Still open on the register (user rulings, no urgency)

- `design/REVIEW.md` §6: #5 (device layers / blocked overrides — recommendation authoring-side only),
#6 (render into existing config sources first), #8 (commit render snapshots at release boundaries).
#4 (dataflows) resolves with step 2.4.
- `design/REVIEW.md` §6: #8 (commit render snapshots at release boundaries) remains open. #5 (device
layers) resolved 2026-07-22 (PLAN step 4, 5A); #6 (render into existing config sources) resolved
2026-07-23 (slice 4a); #4 (dataflows) resolved with step 2.4.
- **W8** — concurrent drafts have no story; bites in the first multi-user week.
- Dependency: the deck's Greengrass scenario needs the deferred IPC-primary `uns-bridge` variant
(ROADMAP A52) — a real blocker recorded in REVIEW W7.1.
Expand Down
17 changes: 13 additions & 4 deletions design/REVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -649,10 +649,19 @@ immediately.
with no re-authoring and no migration. Trigger: a concrete driver such as defending against out-of-band
catalog edits.

6. **Config delivery of rendered content: render-into-existing-sources vs `GitCatalogSource`.**
*Recommendation:* CI renders catalogs into file/ConfigMap first (the deck's second path); build
`GitCatalogSource` later, when on-edge ref pinning earns its keep — and record the ref in the catalog's
existing `provenance`/`version` fields meanwhile.
6. **Config delivery of rendered content: render-into-existing-sources vs `GitCatalogSource`.** —
**RESOLVED 2026-07-23 (slice 4a).**
*Decision:* **render into the existing file/ConfigMap sources from CI** (the deck's second path).
`GitCatalogSource` is deferred until on-edge ref pinning earns its keep; the rendered ref is
recorded in the catalog's existing `provenance`/`version` fields meanwhile.
*Realized as the config adoption loop:* the site repo holds the canonical `definition.yaml` (+
`layers/`, `bindings/`), and its CI renders the definition and diffs against the checked-in config
sources — the definition is the source of truth, the configs are its output. First site:
`bottling-company-test/sites/dallas-site`, whose `config-drift-gate` builds the `edgecommons` CLI
from public core, renders, and diffs (self-contained, no secret). The kernel keeps a frozen
snapshot of the same definition as its byte-for-byte regression oracle. Two decisions folded in:
the definition lives **with the site** (deck's "Git-backed definition repositories"), and the gate
is **check-only** (render + diff), not regenerate-and-commit.

7. **Runtime evidence: wire change or control-plane-derived.**
*Recommendation:* control-plane-derived first — cfg-body hash comparison (with matched redaction), Greengrass
Expand Down
Loading