Skip to content

row 166 PR1: secret resolve takes a config-time proof (ConfigScope) and the config-scope gate - #863

Merged
MattJackson merged 1 commit into
predevfrom
lane-row166-secret-lane
Oct 15, 2026
Merged

MattJackson merged 1 commit into
predevfrom
lane-row166-secret-lane

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

Row 166, design B, PR1 (THE DESIGN §11.11 R4 as the OWNER amended it 2026-10-13: the secret kind's file source runs on the disk lane only at config time, never on a request path).

  • busbar-contract::config_time::ConfigScope: private field, not Copy, not Default; made only by ConfigScope::config_time().
  • SecretResolve / SecretCalls gain resolve_at_config (and resolve_string_at_config) defaulting to the request-path forms, so every source that does not read the disk answers byte-identically.
  • Kernel: SecretResolver threads the proof to the linked axis; resolve_settings takes it; appbuild, auth chain load, hook settings, pre-flight, config_validate and tls read_pem pass it. Root: door member credentials and the token-exchange subject pass it. Contended files (appbuild.rs, door_steps.rs) carry call-site hunks only.
  • cargo xtask gate config-scope: every construction sits in an allowed (file, fn); every allowance names a live construction. Selftest REDs: request-path construction, aliased construction, allowed file but other fn, unused allowance. A comment, literal or cfg(test) construction stays green.
  • Tests: settings_resolve_through_the_config_time_form_with_the_proof (RED if resolve_settings goes back to resolve_string), the_kernel_resolver_answers_the_same_at_config_time_for_a_built_in.

PR2 (the disk-need fact, the refused request-path resolve, the DiskLane job, REDs a-e, PerHop::refresh) builds on this.

…act, the *_at_config forms, every boot/apply/refresh/pre-flight/validate resolve switched, and the config-scope gate holds each construction to its (file, fn) allow-list

THE DESIGN §11.11 R4 as the OWNER amended it (2026-10-13): the disk lane serves the secret kind's
file source only at config time, never from a request path. This is PR1 of row 166 (design B):

- busbar-contract: config_time::ConfigScope, a private-field, non-Copy, non-Default proof made only
  by ConfigScope::config_time(); SecretResolve and SecretCalls gain resolve_at_config (and
  resolve_string_at_config) defaulting to the request-path forms, so every source that does not read
  the disk answers byte-identically.
- busbar-kernel: SecretResolver threads the proof to the linked axis; resolve_settings takes it;
  appbuild, auth chain load, hook settings, pre-flight, config_validate and tls read_pem pass it.
- busbar root: a door plane's member credentials and token-exchange subject resolve with it.
- xtask gate config-scope: every ConfigScope construction sits in an allowed (file, fn); every
  allowance names a live construction. Selftest REDs: a request-path construction, an aliased one,
  an allowed file's other fn, an unused allowance; a comment, literal or cfg(test) is green.
- tests: resolve_settings asks through the config-time form (a resolver refusing the request-path
  form answers); the kernel resolver answers a built-in identically through both forms.
@MattJackson

Copy link
Copy Markdown
Collaborator Author

FYI (queue rule 20): $ draft #870 also edits crates/busbar-kernel/src/config_validate/{mod.rs:1553 rate-refusal message, tests/tests.rs:4178-4216 rate test}; hunks are disjoint from yours and merge clean.

MattJackson added a commit that referenced this pull request Oct 15, 2026
…eld; clippy; the six Law 0 cells the merge grew; config-schema snapshot

- busbar-core-connector dialled.rs (#837 over #893's Piece): the datagram leg's body piece states
  `fault: None` and `declared_len: None` (E0063).
- busbar-kernel appbuild: build_app_from_config takes the root's rules as an eighth input (#1001);
  allowed too_many_arguments with that reason. plugin-loader secret_disk_tests: let-else for the
  refused declare (clippy err_expect).
- Law 0 growth over the merge-base (gates log of 3598829 and the group measures):
  kernel x plane: the failover predicate's docs and test say verdict, not decision (#890);
  kernel x instance:secret: the two new SecretRef literals key on SECRET_MODULE_ENV (#863/#864);
  kernel x auth: the resolved provider's and the token endpoint's docs name the client-credentials
  style without spelling the module (#957, #876);
  connector x transport: spawn_env's doc says program members (#865);
  contract x plane: section.rs's trust_from doc names a plane's push trust (#1001);
  busbar x vendor: the health-probe cell's catalog entry is testing/root-fixtures data (#1039);
  busbar x instance:secret: the pinned-cells selftest builds its fixture citing the pinned file
  rather than re-keying it (#1006).
- config-schema: the RAW carrier records each section as the map's value type; the snapshot gains
  DeployCfg.agent_push (serde_yaml::Value, #1001), ProviderLaneCaps (its Deserialize, round 2) and
  the `type ProviderTable` alias (#957).
- qa/scripts-allowlist.toml: the three twilio conformance legs (#998), oracle-driver like their
  siblings.
@MattJackson
MattJackson merged commit 0a5711c into predev Oct 15, 2026
1 check was pending
@MattJackson
MattJackson deleted the lane-row166-secret-lane branch October 15, 2026 13:54
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