LAYER · VALIDATE · ACTIVATE

Environment configuration: convert strings explicitly

Edit real JSON layers. Trace each winning value and compare the candidate with the configuration that is actually active.

Strict types · one atomic candidate

Scroll the diagram horizontally to compare candidate and active values. The table below gives the same fields as text.

Edit candidate layers

Use synthetic values only. Do not paste credentials. Request overrides allow only timeoutMs, maxTokens and temperature.

Validation report

Your experiment

Change the environment timeout to "5 seconds", then to "5000". Observe rejection versus numeric conversion. The active revision must never receive a partially valid layer.

Explicit teaching schema

timeoutMs: integer 50–60,000; maxTokens: integer 1–8,192; temperature: number 0–2; retries: integer 0–5. timeoutMs × (retries + 1) must not exceed 90,000 ms. Model: atlas-lite or atlas-pro. Secret reference: fixture:team-a:v1/v2 or fixture:team-b:v1/v2, matching the selected tenant.

Defaults apply first and request overrides last. The middle layers use the selected precedence. All fields are validated, even when a later layer would overwrite them. A rejected candidate changes nothing in the active revision.

Value provenance and active revision

FieldCandidate valueWinning sourceCurrently active value

Applied-field history

Offline teaching model, not an ADK/Gemini configuration API or a security boundary. Precedence, validation ranges, allowed keys and retry budget are explicit lesson policies. Environment JSON is manually entered: this page never reads process environment variables. Secret references resolve to synthetic metadata; there are no secret values, network requests, cloud credentials or real IAM checks. Unknown fields, invalid types, forbidden request overrides and failed bindings reject the complete candidate. Production reload semantics depend on the application and must be tested separately. Configuration separation · Secret-reference and version guidance.

Convert strings before activation

Environment JSON represents manually entered environment values, not your browser or operating system environment. Its numeric fields must be plain decimal strings. Start with the valid example: timeoutMs becomes 2500, maxTokens becomes 1024 from the tenant, and temperature becomes 0.2 from the request. Change the environment timeout to "5 seconds": the complete candidate fails, including its otherwise valid fields. Change it to "5000" and inspect the successful revision. Bare numeric environment values, exponential notation and surrounding whitespace are deliberately rejected by this teaching parser. These strict choices are application policies, not universal environment-variable rules.

Trace each source and type

Environment, Tenant and Request buttons select the visible JSON editor without changing its contents. Tenant and Request numeric values use JSON numbers. Defaults always apply first; Middle-layer precedence chooses whether environment or tenant wins next, while request values apply last. Switch precedence and watch maxTokens change from 1024 to 512. Set request maxTokens to 42 and it wins under either ordering. The provenance table and applied-field history expose every accepted assignment. Unknown fields, invalid JSON, arrays, null and invalid types reject the candidate even if a later layer supplies a valid replacement. Request overrides allow only timeoutMs, maxTokens and temperature. These are tunable values, not security ceilings: production limits may require minimum-wins or explicit clamping instead.

Inspect atomic failure and tenant binding

Activation mode compares reload with startup. Reload begins with a complete known-good revision 1; a rejected candidate leaves all six active values unchanged. Startup has no previous revision and stays stopped until every check passes. Fixture tenant selects Team A or Team B and its corresponding default reference. A tenant patch naming the other team cannot bind. Synthetic pinned version compares enabled and permitted, disabled, and runtime identity denied. References describe mock metadata only; the page does not read secret bytes or perform IAM checks. Try the cross-tenant and forbidden-request examples, then the retry-budget example: 60000 multiplied by six attempts is 360000 milliseconds, above the fixture limit of 90000. This bound excludes backoff and other overhead and is not a complete request deadline.

Control the inspection

Load a complete example replaces all candidate layers and policy choices; Restore valid example returns to the initial successful fixture. Editing an input resets the inspection and waits for Play. Play and Resume advance eight snapshots across forty-nine seconds, with seven seconds between stages. Pause freezes the position. Next stage advances one seven-second boundary and pauses; Restart inspection returns to zero while retaining inputs and speed. Inspection time seeks directly and pauses. Speed offers quarter, half, normal and double pace; changing it settles elapsed time at the previous rate first. Replay starts again after completion. A hidden tab pauses. This clock gives reading time, not measured configuration-processing latency. The complete-run preview intentionally reveals the eventual outcome while the candidate and active table show only the selected stage. On phones, scroll the diagram and table horizontally or focus their labeled regions and use arrow keys.

Record a controlled comparison

Seek to the final stage, then Capture baseline to save the visible result and inputs. Change one setting, return to the end, and compare the active revision and winning sources. Replace baseline updates that snapshot; Clear baseline removes it. The notebook keeps observations in this browser; Export notes downloads them. Expand experiment and Exit full screen change the view. Record the exact JSON, tenant, precedence and activation mode. Fictional model names and numeric ranges are bounded lesson assumptions. The fixture has no live ADK client, cloud secret manager, persistent server, concurrent reload, nested merge, or duplicate-JSON-key detection; JSON parsing retains the last duplicate key. The readings explain broader configuration practices, whose concrete runtime semantics must be verified independently.