Skip to content

docs: D5-2, the Forms side of the realization context (question 7), second reading pass - #49

Merged
sinkog merged 2 commits into
develfrom
docs/d5-realization-context-forms-side
Nov 8, 2026
Merged

sinkog merged 2 commits into
develfrom
docs/d5-realization-context-forms-side

Conversation

@sinkog

@sinkog sinkog commented Nov 8, 2026 •

Copy link
Copy Markdown
Member

What

Documentation only, an addition to docs/design/specs/realization-context.md (merged in #48): the second reading pass on its open question 7, the Forms side. No module code, no WASM change, no Relay code.

What was read

The Forms library README.md, docs/P1-SUPPORTED-SUBSET.md, docs/P5-RESOLVE-MATERIALIZE-RECEIPT.md and the ADR list (cic-primitive-forms at 5531111); the engine's docs/MATERIALIZATION-SPEC.md (the scope note at its top) and docs/RECEIPT-SCHEMA.md (cic-primitive-engine at 93c793a); a text search of both repositories; the top level of the schema registry. Not read: the ADR bodies, the source of the two repositories beyond the text search, the schemas in the registry, primitives, CIC-basic-knowledge, OIS. The document says so.

Found

  • The Forms library is a pure library (no Git, network, filesystem policy or execution context). Its defaults are schema-declared; value_origins is authored or default; expand keeps an origin (authored or materialized) and an attestation.
  • P5 (Resolve from a supplied snapshot, materialize, receipt) is design with no code, and the engine's documents show no receipt producer anywhere in the ecosystem.
  • The engine's scope correction: Parse, Normalize, Resolve and Validate are "permanently the environment's job"; the engine receives a candidate materialized object, checks its Complete property, canonicalizes and digests it.
  • The receipt contract is closed (15 required fields); derived_values[] names its inputs as a set of paths of the object.
  • A text search of cic-primitive-forms finds no occurrence of realization, deployment context, tenancy, oraclecloud, base_path, key_id or provider_id; in cic-primitive-engine provider_id appears only in the OCI conformance fixtures and plan.rs tests as a state-only field.

Concluded (stated in the document)

A schema default cannot carry a realization value (the rule is schema-default; a host or region in a default would make the schema environment-specific); the library cannot derive it (no execution context); the named seam for facts from outside is Resolve from a supplied snapshot, which is not in code, and proposing a realization context as such a snapshot is a proposal: nothing in the P5 document says it is an accepted kind of snapshot; and the closed receipt cannot name an input that is not a path of the object. Two ways to close that, neither implemented: (i) the context materialized into the object, which requires reconsidering the object's schema and boundary (the object becomes environment-specific); whether the existing receipt contract can represent the derivation without an extension is not verified (if the context is part of the object's schema, a derived_values[].inputs entry could in principle name its paths, so a new receipt field is not shown to be necessary); or (ii) the context outside the object, bound at the execution layer by the realization digest (the receipt contract is not involved and the object stays provider-independent). Section 4 of the document was written for (ii). The engine's word "environment" (the processing layer) and the realization "environment" (a provider account, region and realm) are different things.

Review F1 (commit f2c9c39)

The first version said that putting the context into the object changes the engine's closed receipt contract. The documents read do not show that, so the text now says what is shown: a reconsideration of the schema and the object boundary, with the receipt question left unverified. D5-6 is now stated as not a choice for this repository alone: it touches the object boundary and has to be decided together with the Forms library, engine and Relay contracts.

Decisions this adds (not decided here)

D5-6: the context inside the object or outside it. D5-7: a distinct name for the realization environment. Open question 7 is answered in part: a context-derived value does not enter through defaults or policy resolution.

Not in this PR

No implementation, no engine or registry change, no WASM rebuild or signature, no Relay change, no production-integration claim. Nothing here is verified against the source of the repositories read. No merge without explicit owner GO.

🤖 Generated with Claude Code

Gábor Z Sinkó added 2 commits November 8, 2026 15:52
…econd reading pass

Reads the Forms library and the engine's documents for where a context-derived value could enter, and
records what they say. Forms is a pure library with schema-declared defaults (origin authored or
default) and no execution context; the engine states that Parse, Normalize, Resolve and Validate are
the environment's job and that facts like reference resolution are written onto the object before it
arrives; P5 (Resolve from a supplied snapshot, materialize, receipt) is design with no code and no
receipt producer exists; the closed receipt contract's derived_values name their inputs as paths of the
object. A text search finds no realization, deployment, tenancy, base_path, key_id or provider_id
data in the Forms repository, and provider_id only as a state-only field in the engine's OCI fixtures.

Concludes that a schema default cannot carry a realization value, that the library cannot derive it, that
the named seam is Resolve from a supplied snapshot (not in code), and that the receipt cannot name an
input outside the object today. Records two ways to close that (the context inside the object, with an
engine contract change, or outside it, bound at the execution layer) as decisions D5-6 and D5-7, and a
naming collision between the engine's environment and the realization environment. Documentation only;
nothing is implemented and the source of the repositories read was not read, only their documents and
a text search.

---
[signing-metadata]
key = cic-my-sign-key
signature = vault:v1:MEQCIBMBcThmXaWazE/BKhho2cGufzorelu3YVxrIC9wMC5KAiBHLbT0otLH+w/oGMgMmFwApAcZDbXXOJFQzo1Kx1Vkeg==
hash-algorithm = sha256
digest = 7dVcKaS4QBrfAP/GIsE5xHBTnjSLsdIYI51p3Rl8fKY=

[certificate]
-----BEGIN CERTIFICATE-----
MIICBjCCAaygAwIBAgIUSnRMR6RPnEbg296XWPOqq/u5PCwwCgYIKoZIzj0EAwIw
QzELMAkGA1UEBhMCSFUxGTAXBgNVBAoMEENlbnRyYWxJbmZyYUNvcmUxGTAXBgNV
BAMMEENJQyBEZXZlbG9wZXIgQ0EwHhcNMjYwMzIwMTMyMjU5WhcNMjYxMjMxMTMy
MjU5WjBFMQswCQYDVQQGEwJIVTEZMBcGA1UECgwQQ2VudHJhbEluZnJhQ29yZTEb
MBkGA1UEAwwSR2Fib3IgWm9sdGFuIFNpbmtvMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEIG2CVmTfmLB9pLLclj7YmP2eedAjklpy4LGrU2ijoiy6Xqpuybv7OgJe
i+ez31s65NEV8+X/ByeX1cstR988z6N8MHowCQYDVR0TBAIwADAdBgNVHQ4EFgQU
yZN6AIX/TNnIJ9GwAa/NRN3ujHAwHwYDVR0jBBgwFoAUXn6CHYzPUqU4JVP8g+OS
WeDYjhcwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDAKBggqhkjOPQQDAgNIADBFAiEA+bFzXRoJ4PCQbhAAtpkcMjt0vNj5rEW0
lOMBGDNyaWkCIB1vmM7PcZzv/c9bIrxF5kqv6QXomouhByUfeNUTbpKW
-----END CERTIFICATE-----
…w (review F1)

The text said that putting the realization context into the materialized object changes the engine's
closed receipt contract. The documents read do not show that: if the context is part of the object's
schema, a derived_values input could in principle name its paths, so what is needed is a reconsideration
of the schema and the object boundary, and whether the existing receipt can represent the derivation
without an extension is not verified. The text now says that. It also keeps the P5 snapshot idea as a
proposal (nothing says a realization context is an accepted snapshot kind), and records that D5-6 is not
a choice for this repository alone: it touches the object boundary and is to be decided with the Forms,
engine and Relay contracts. Documentation only.

---
[signing-metadata]
key = cic-my-sign-key
signature = vault:v1:MEQCIBiEDAN5EpZWeS9LQgowSgXf9PNWV2lJ5fdQl+KavN/DAiAXEzgN7Z1+JBDeKpESwbIUklTiUfkXCaR6+mI47tW8/A==
hash-algorithm = sha256
digest = QoX3QJavo2LBBG4ZvWe5Cy/z+XQ5CxM7H1JUY4LgMf8=

[certificate]
-----BEGIN CERTIFICATE-----
MIICBjCCAaygAwIBAgIUSnRMR6RPnEbg296XWPOqq/u5PCwwCgYIKoZIzj0EAwIw
QzELMAkGA1UEBhMCSFUxGTAXBgNVBAoMEENlbnRyYWxJbmZyYUNvcmUxGTAXBgNV
BAMMEENJQyBEZXZlbG9wZXIgQ0EwHhcNMjYwMzIwMTMyMjU5WhcNMjYxMjMxMTMy
MjU5WjBFMQswCQYDVQQGEwJIVTEZMBcGA1UECgwQQ2VudHJhbEluZnJhQ29yZTEb
MBkGA1UEAwwSR2Fib3IgWm9sdGFuIFNpbmtvMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEIG2CVmTfmLB9pLLclj7YmP2eedAjklpy4LGrU2ijoiy6Xqpuybv7OgJe
i+ez31s65NEV8+X/ByeX1cstR988z6N8MHowCQYDVR0TBAIwADAdBgNVHQ4EFgQU
yZN6AIX/TNnIJ9GwAa/NRN3ujHAwHwYDVR0jBBgwFoAUXn6CHYzPUqU4JVP8g+OS
WeDYjhcwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDAKBggqhkjOPQQDAgNIADBFAiEA+bFzXRoJ4PCQbhAAtpkcMjt0vNj5rEW0
lOMBGDNyaWkCIB1vmM7PcZzv/c9bIrxF5kqv6QXomouhByUfeNUTbpKW
-----END CERTIFICATE-----
@sinkog
sinkog marked this pull request as ready for review November 8, 2026 19:21
@sinkog
sinkog merged commit a5e2235 into devel Nov 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant