Repository navigation
docs: decision brief for target data and execution binding - #50
Merged
Merged
Conversation
added 2 commits
November 8, 2026 20:26
Gathers, in one place and in dependency order, what the documents of this series left open: the architecture decisions about the realization context (inside or outside the materialized object, where it is authored, who issues it, granularity, routing, lifecycle, naming), the contract decisions by boundary (provider module, Relay, and Forms and engine only if the context goes inside the object), and the order in which they can be implemented and verified. Each decision says how it can be settled (readable from the sources, needs a measurement, the owner's choice, or joint with another repository's contract) and carries a recommendation that is the author's. Finds in the sources one answer the review of the destroy and invoke document asked for: the registry already carries an input schema with declared properties and additionalProperties false for each of the four action operations, which the module does not load today, so the fields of an invoke can come from there. Separates the module-only steps, which do not depend on the architecture layer and are not the realization proof, from the realization context itself, and lists the measurements that are missing. Decides nothing; documentation only. --- [signing-metadata] key = cic-my-sign-key signature = vault:v1:MEUCIH1s5BCbm3TWRtXLEX8kv3cHs2zIhs+3aZxUXMlAwMauAiEAvHXYk+sa1ee3QqxiAwVxxvAUMlebhQ95qzocpM3bmUI= hash-algorithm = sha256 digest = wD5K8cmbBD8UDzdSCJDXtVZW8gD+24j8RWlpNrn7ahI= [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-----
…rding (review F1, F2) --- [signing-metadata] key = cic-my-sign-key signature = vault:v1:MEUCIQCcv9Wwzi1XlEOuD5RDFp643t0Nu8zYa5fU1Qe/TDLNbgIgN33QbOjBejenFVAHlVRhyXvMW+/ZFVUOuZkvqTLSpPQ= hash-algorithm = sha256 digest = V9YMr7767kLwujru6HAcAXrM/S28EJhxk+jHnHf7xUE= [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:46
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. A brief for decisions (
docs/design/decision-brief-target-and-binding.md, an index line indocs/design/README.md) that gathers, in one place and in dependency order, what the documents of this series left open. It decides nothing; every recommendation is the author's and the decision is the owner's.The series:
plan-digest.md(M4a, implemented),approval-and-execution-state.mdwithrelay-requirements.mdR6 to R10 (M4b, concept),destroy-invoke-binding.md,target-origin-and-path-safety.md(D5),realization-context.md(D5-2, Forms side in section 6).Structure
Each decision carries a code for how it can be settled: [S] readable from the sources, [M] needs a measurement that was not made, [O] the owner's choice, [J] joint with another repository's contract (Forms library, engine, Relay). The three layers depend on each other in one direction: architecture decisions constrain contract decisions, contract decisions constrain the order of implementation.
pollalias retirement); the Relay (raise R6 to R10; the host-boundary property of R7); the Forms library and the engine only if A1 is "inside the object".destroyandinvokedigests) are module-only and do not depend on layer A, and none of them is the realization proof; step 4 (the realization context) depends on layer A and, depending on A1, on the Forms, engine and Relay contracts; step 5 is the Relay's.D5-6 is marked as not a choice for this repository alone: it touches the object boundary and has to be decided together with the Forms, engine and Relay contracts.
One answer read from the sources
The review of the
destroy/invokedocument asked where aninvoke's declared fields come from. The registry already carries it: each of the fouraction-role operations (AddVcnCidr,ChangeVcnCompartment,ChangeSubnetCompartment,ChangeInstanceCompartment) has aninputschema with declaredpropertiesandadditionalProperties: false(read frommodule/schemas/core/*.json); the other roles have none. The module'sresourceContractdoes not load it today (it keepsmethod,pathandrole). Whether every future action operation will carry one was not checked.Missing measurements (listed in the document)
What OCI accepts as the number form of an integer field; the request-target that actually goes out over the network (the real Relay, and the Go HTTP client's output for a URL with a query or fragment); dot segments, an encoded dot segment and a double slash; idempotency tokens; the fields of a real Work Request and its OCID type segment; a run of the rewritten manual harness against real OCI.
Not in this PR
No decision, no contract change, no implementation, no claim that any step is implemented. No
module.wasmrebuild or signature, no Relay change, no production-integration claim. Themodule.wasmrelease, the production integration, the asynchronous create cases B and C and phase 3 of #37 stay on hold, unchanged. No merge without explicit owner GO.🤖 Generated with Claude Code