Repository navigation
docs: D5-2, the realization context: what exists, where the chain breaks, and a proposal - #48
Merged
Merged
Conversation
…aks, and a proposal D5 asked where host, base_path, key_id, resource_id and revision should come from. This surveys what is written and what is in code about the realization context they should be derived from, marking every item implemented, scaffold, concept or not read, with every claim re-read from a live file (the knowledge base was used for orientation only). Found: the logical identity (the CIC uid) and its separation from the provider identity, the state object's provenance and revision, the host-side correlation and conformance code in the Relay (wired only to drift, not to the execution path), the plan-then-execute-signed-plan decision, the OIS seam and the signing identity exist or are written. The realization context itself does not: no document defines it and no Relay Go type carries it, the state object's binding has only provider and provider_id, and the target values reach the module as free request fields. The model exists, but the implementation bridge breaks there. Proposes (concept) a versioned, authenticated realization context per object and provider, the derivation of each target field from it, and a realization digest that makes target_digest a function of the context inside the chain that execution_digest commits to. Lists the open questions that the sources cannot decide, and the sources that were not read (the Forms engine, the schema registry, OIS). Documentation only; nothing is implemented. --- [signing-metadata] key = cic-my-sign-key signature = vault:v1:MEUCIQDKvOw6AJ3B/ctltkjTjJs6RT2+j2tOKzTkCBlHLm23EgIgYcgcipYw+ss/y+pljJbkcEcFSiidLxaoOFkffmOWrOQ= hash-algorithm = sha256 digest = COf9/9ApopusYKgaBw4Xwi28Rixm1w0L30YFH8Ip4No= [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-----
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: no module code, no WASM change, no Relay code. D5 asked where
host,base_path,key_id,resource_idandrevisionshould come from; its premise (the project owner's statement of the CIC model) is that they belong to the realization context, the provider contract and the observed state. This surveys what is written and what is in code about that context, marks each itemimplemented,scaffold,conceptornot read, and proposes a contract (concept).docs/design/specs/realization-context.md(new): section 2 what exists, section 3 where the chain breaks, section 4 a proposal, section 5 open questions.docs/design/README.md: an index entry.The
cic-graphknowledge base (a 2026-10-16 snapshot) was used for orientation only; every claim in the document was re-read from a live file and is cited by file.Found
uid) and its separation from the provider identity (provider_id), with correlation byuidand never byprovider_id; the state object'sbinding,revisionandprovenance; the host-side comparison and conformance code in the Relay (core/nexus/iac,implemented, imported by the drift check and the IaC loader, not by the cabinet or thecic-flowexecution path); the recorded decision "plan, then execute the exact signed plan, the module does not attest its own work"; the OIS seam (implemented, not on the module's execution path); the signing identity and the module's self-declared egress in its signed manifest.cmd,coreandpkgat55a899fhave no Go type for a realization, deployment context, environment or binding (searched by type name). In the state-model spec's example the state object'sbindingcarries onlyproviderandprovider_id. The five target values reach the module as free request fields (measured in docs: what destroy and invoke do today, and a binding contract proposal #46 and docs: D5, what the module does with a caller-given host and base_path, and where target data should come from #47), and the registry records no API version, base path or host.Proposed (concept)
A versioned, authenticated realization context per logical object and provider (
object,provider,environment,provider_contractdigest,execution_identityas a handle never key material,binding,observation, issuer, policy decision, validity); each target field derived from it (hostfrom environment and the provider contract's host rule,base_pathfrom the registry's API version,key_idfrom the identity binding the Relay resolves,resource_idfrom theuidcorrelation,revisionfrom the observation); a realization digest that makestarget_digesta function of the context inside the chain thatexecution_digestcommits to; the context reaching an execution through the authenticated execution context (R6), not the request body. OIS is separate: an approval of a consequence is not an identification of its target. Until such a context exists the module'stargetinput stays what the M4a gate proves consistent: a caller-supplied value.Not read in this pass (stated in the document)
The Forms engine and its docs (
cic-primitive-forms,cic-primitive-engine), the schema registry,primitives,CIC-basic-knowledgeand the OIS repository. The state commit model is cited from the knowledge base only. Statements about these are second-hand and marked. The Relay facts are from55a899f, read, not run.Open questions for the owner (the sources cannot decide them)
Where a context is authored and stored; granularity (per environment or per object); who issues and signs it; the provider contract's record of the host rule and API version (D5-1); routing and decomposition across providers and regions; lifecycle (rotation, revocation, an approved but unexecuted plan whose context changes); and where in the Forms steps "defaults with origin" and "policy resolution" a context-derived value would enter.
Not in this PR
No implementation, no registry or extractor change, no WASM rebuild or signature, no Relay change, no production-integration claim. A signed observation is evidence of what was read, not proof of the physical state. No merge without explicit owner GO.
🤖 Generated with Claude Code