Skip to content

docs: decision brief for target data and execution binding - #50

Merged
sinkog merged 2 commits into
develfrom
docs/decision-brief-target-and-binding
Nov 8, 2026
Merged

sinkog merged 2 commits into
develfrom
docs/decision-brief-target-and-binding

Conversation

@sinkog

@sinkog sinkog commented Nov 8, 2026

Copy link
Copy Markdown
Member

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 in docs/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.md with relay-requirements.md R6 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.

  • Layer A, architecture: A1 (D5-6) the realization context inside or outside the materialized object [J][O]; where a context is authored and stored; granularity; who issues and authenticates it; routing and decomposition; lifecycle; naming (D5-7). A1 constrains the rest.
  • Layer B, contracts by boundary: the provider module (D-DI-1 to D-DI-5, D5-1, D5-4, D5-5, the poll alias 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".
  • Layer C, order of implementation: steps 1 to 3 (path-building hardening, the API version in the registry, the destroy and invoke digests) 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/invoke document asked where an invoke's declared fields come from. The registry already carries it: each of the four action-role operations (AddVcnCidr, ChangeVcnCompartment, ChangeSubnetCompartment, ChangeInstanceCompartment) has an input schema with declared properties and additionalProperties: false (read from module/schemas/core/*.json); the other roles have none. The module's resourceContract does not load it today (it keeps method, path and role). 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.wasm rebuild or signature, no Relay change, no production-integration claim. The module.wasm release, 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

Gábor Z Sinkó 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
sinkog marked this pull request as ready for review November 8, 2026 19:46
@sinkog
sinkog merged commit 47ef745 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