F4 Go-Live — 2026-08-24

Lane: Growth Control / F4 continuous calibration (geo-SCM), tenant mycocoons Directive: owner override 2026-08-24 ("approved to override the rules, resolve all issues and go live") + four AskUserQuestion scope locks + one derived-values confirmation. Override interpretation (stated to the owner before use): unlocks process ceremony (self-merged arming PRs, no per-step typed gates); it never invents business values — every value below is measured or owner-typed. Outcome: the F4 lane is ARMED and its FIRST CYCLE returned status=scheduled — a holdout registered through the real Cell 36 client and a reservation proposal in the owner's DCP L2 approval queue. Nothing can spend: approval + the deliberately unregistered actuator are both human keys.

Owner-locked scope

Decision Value How set
Lanes armed F4_CALIBRATION only owner click (LTV/MMM/EDGE + supply veto stay dark)
Spend cap $2,500 / cycle owner click
Perturbation band ±30% owner click
Geo pool US-CA, US-NY, US-FL, US-TX DERIVED from real order data; owner-confirmed
Observations weekly order counts, trailing 52 weeks of source owner-confirmed
Staleness call arm + run first cycle on the historical window owner-confirmed

The derivation (measured, diag runs #8–#13 on diag/f4-geo-derive)

What landed

Piece Evidence
mizoki_unified_data.f4_geo_observations view (weekly counts, 20 states × 52 equal points, zero-filled) applied from the repo DDL and shape-verified: run 32683204058 — geos=20 distinct_lengths=1 points_per_geo=52
config/f4_geo_candidates.yaml fill (validator READY — 4 candidate geo(s); approval-gated) PR #795 (owner-merged 02:31Z)
Arming workflow: F4_CALIBRATION=true, observations table env, CELL36/DCP URLs live-derived (underivable ⇒ refuse), outbound invoker grants, /health-only armed-posture probe (exit 24/25 codes) PR #795; green run 32683707924
/health posture string computed (static "flags false" would lie once armed) + armed-direction test; never-invent refusal invariant repointed to the nulls shape in both suites; owner-values pin tests PR #795; suites 78/78; CI gate green
R-51 salt: intent-holdout-salt created (add NOT_FOUND → create SUCCESS ⇒ version 1; value generated in-step, never shown) run 32683391580; pin commit e2a9fd2a
Cell 36 redeploy mounting the salt (replacing the legacy plain-env salt) run 32683706650 green
ARMED deploy: gate, build, deploy, grants, perimeter + armed true-caller probe run 32683707924 green 02:42Z
FIRST CYCLE status=scheduled run 32684119771, execution growth-scheduler-first-cycle-v762t, 02:48Z

Standing safeties (unchanged, live-asserted)

Measured capability facts (new this run)

Follow-ups (owner)

  1. Your L2 approval queue now holds the first F4 reservation proposal — approve or reject it there. Executing an approved reservation additionally requires a human to wire+register the f4-geo-reservation actuator. Ruling 2026-09-15 (P-1, docs/reports/OWNER_RULINGS_2026-09-15_REGISTER_CLOSEOUT.md): REJECT the stale proposal from growth-scheduler-first-cycle-v762t — it was built from values retired on 2026-08-23 (the file-config F4 values the vault ruling replaced); a fresh proposal from the onboarding-form (vault) values replaces it. The DCP has no reject route of its own (propose, authorize-approved, holdout register, decision reads); a queued L2 proposal is denied in service-approval-routing, by a verified human principal holding the request's route role (operator), never by a service identity. Operator call (not run here — the ruling is recorded, the deny is an owner keystroke): # 1. find the pending request id for the tenant GET {APPROVAL_ROUTING_URL}/api/v1/pending?tenant_id=mycocoons # 2. deny it by request_id, with the ruling as the note POST {APPROVAL_ROUTING_URL}/api/v1/deny {"request_id": "APR-<from step 1>", "note": "owner ruling 2026-09-15 P-1: stale v762t proposal built from values retired 2026-08-23; superseded by a fresh vault-valued proposal"} Both calls carry the caller's identity token and are resolved against the verified principal (WO-05: a service principal is refused 403; a body actor that differs from the principal is refused 400). deny is terminal (status=denied, audited as approval.denied); the fresh proposal is a new growth-scheduler cycle invocation under the current vault values, which lands as a new APR-… request.
  2. Observations refresh when live order ingestion (canonical/EKIS) starts flowing; the view definition can then move to the live source in a reviewed commit.
  3. Cloud Scheduler cadence for recurring cycles is a later operator wiring (terraform path is protected); until then cycles are deliberate invocations.
  4. Six merged remote branches remain undeletable through the session's git proxy (delete-push reports "Everything up-to-date"); one-click cleanup in the GitHub UI when convenient — plus diag/f4-geo-derive (scratch diagnostic vehicle) once this lane's tooling is no longer wanted.
← All docsView source on GitHub →