Repository navigation
docs: D5-2, the Forms side of the realization context (question 7), second reading pass - #49
Merged
Merged
Conversation
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
marked this pull request as ready for review
November 8, 2026 19:21
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.mdand the ADR list (cic-primitive-formsat5531111); the engine'sdocs/MATERIALIZATION-SPEC.md(the scope note at its top) anddocs/RECEIPT-SCHEMA.md(cic-primitive-engineat93c793a); 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
value_originsisauthoredordefault;expandkeeps an origin (authoredormaterialized) and an attestation.Resolvefrom a supplied snapshot, materialize, receipt) is design with no code, and the engine's documents show no receipt producer anywhere in the ecosystem.Parse,Normalize,ResolveandValidateare "permanently the environment's job"; the engine receives a candidate materialized object, checks its Complete property, canonicalizes and digests it.derived_values[]names itsinputsas a set of paths of the object.cic-primitive-formsfinds no occurrence ofrealization,deployment context,tenancy,oraclecloud,base_path,key_idorprovider_id; incic-primitive-engineprovider_idappears only in the OCI conformance fixtures andplan.rstests 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 isResolvefrom 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, aderived_values[].inputsentry 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