Skip to content

Consolidate registrar scenario setup #981

Description

@sehkone

Consolidate registrar scenario setup

Context

The registrar red-team and endurance scenarios both create an isolated live OpenBao/Step CA deployment, but their scripts retain parallel copies of shared deployment and supervisor setup even though scripts/impl/lib/registrar-docker.sh exists for their common launcher support. The endurance work also required a narrow production change: LeafWithChain publication now adds configured trust anchors that the ACME response lacks, allowing a caller with an unchanged root-anchor pin to reach a renewed registrar endpoint leaf. That behavior was merged without the separate pull-request disclosure required for a production fix exposed by an E2E scenario.

Scope

Extract the common registrar live-deployment setup used by scripts/impl/run-registrar-redteam.sh and scripts/impl/run-registrar-endurance.sh into narrowly scoped shared support under scripts/impl/lib/registrar-docker.sh or an adjacent shared registrar launcher library. Update both scenarios to use that one implementation while leaving their distinct assertions and workloads local to each script. The run's instance-name derivation is part of that common setup: derive it in the shared helper against the budget the binary validates (MAX_INSTANCE_NAME_LEN, src/commands/compose_project.rs) rather than an endurance-local literal, keeping the name each arm derives today unchanged for every run token either launcher passes. Record the already-merged LeafWithChain configured-anchor publication where it survives review, which is in the tree rather than in a pull-request description. Document append_configured_anchors (src/acme/flow.rs:788) beside the function itself or in the registrar reference under docs/reference/: the [trust].ca_bundle_path condition it is gated on, why an unchanged root-anchor pin needs it across leaf renewal, and that src/registrar_certs.rs:122 (SURFACE_LEAF_PUBLICATION) is its only LeafWithChain consumer today while any future consumer inherits the behavior, since the change sits in the shared publication arm rather than in registrar-specific code. A pull-request description is not the place for it: that disclosure was owed when #783's pull request merged, and restating it in a later, unrelated pull request buries it where no later reader looks.

Acceptance criteria

  • The two registrar scenario scripts use one shared implementation for their common isolated-deployment and daemon-supervisor setup; scenario-specific red-team and endurance assertions remain in their respective scripts.
  • The shared helper preserves per-run instance names, containers, ports, temporary paths, artifact locations, and cleanup ownership for both scenarios.
  • The red-team checked-out-project/binary/artifact launcher contract and the endurance extended-suite case contract remain intact.
  • The already-merged LeafWithChain anchor publication is documented in the tree, where a later reader will find it — beside append_configured_anchors in src/acme/flow.rs or in the registrar reference under docs/reference/ — covering the [trust].ca_bundle_path gate, the unchanged-root-anchor renewal rationale, and that src/registrar_certs.rs:122 is its sole LeafWithChain consumer today with any future consumer inheriting the behavior. A pull-request description does not satisfy this criterion.
  • The refactor does not change certificate lifetimes, renewal cadence, endpoint pin semantics, or add production tracing/test seams.

Constraints

Keep shared support limited to behavior both scenarios genuinely use; do not turn the library into a replacement for either scenario's assertions. Do not copy setup into a new private helper in either script. Preserve the existing root-owned socket and Docker cleanup behavior, and do not change src/acme/flow.rs production behavior merely to retrofit its documentation.

Out of scope

Changing certificate renewal behavior, adding fast acceptance coverage, changing the existing red-team attack assertions, or revisiting the unrelated host-port override changes that accompanied the original pull request.

Test plan

  • Run the repository shell and run-scope validation covering the changed launcher scripts.
  • Run the registrar red-team scenario through its existing launcher contract.
  • Run the registrar-endurance case through the extended suite and inspect its case artifact and summary record.
  • Confirm the LeafWithChain anchor-publication documentation is present in the tree rather than only in the pull-request description, and that it names the [trust].ca_bundle_path gate, the unchanged-root-anchor renewal rationale, and the sole-consumer-today point.

Dependencies

Part of #783. Part of #784.

Pointers

  • scripts/impl/run-registrar-redteam.sh
  • scripts/impl/run-registrar-endurance.sh
  • scripts/impl/lib/registrar-docker.sh
  • scripts/impl/run-extended-suite.sh
  • scripts/validate-e2e-run-scope.sh
  • src/acme/flow.rs
  • src/registrar_certs.rs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions