Skip to content

fix: emit contract v4 and drop the committed chart - #243

Merged
catinspace-au merged 2 commits into
mainfrom
fix/contract-v4
Oct 8, 2026
Merged

catinspace-au merged 2 commits into
mainfrom
fix/contract-v4

Conversation

@catinspace-au

@catinspace-au catinspace-au commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

From the next release the loader's chart is assembled from the contract it emits, on the scalo-service 2.14.3 library chart, so the committed chart and the tests pinning it to scalo's chart generator go.

  • scalo 2.14.3 and contract schema 4: a 60 s startup budget, h2c on the push port, a 1Gi GeoIP volume only while geoip.enabled is true, plus resources (200m/256Mi requests, 1/512Mi limits), a 45 s grace period and the default security context.
  • Config::default() gives transport: kafka, the same as serde gives an empty file. The contract's default config carried an empty transport.
  • Config drops its keda block. Nothing in the loader acted on it and the chart never read it. A stored config that still carries one loads as before (keda_block_from_an_older_config_still_loads).
  • every_declared_secret_env_var_reaches_the_config checks each contract env name lands on the config key it spells. Its message carries the env var and group names only.
  • .hyperi-ci.yaml sets release.helm to contract: emit on library 2.14.3 and drops build.type, which hyperi-ci no longer reads.
  • Dockerfile and docs/config-schema.* regenerated with the app's own subcommands. README and docs/deployment/PUBLISHING.md follow.
  • Config::load no longer calls dotenvy::dotenv(), which walked up every parent directory and loaded the first .env it found. The binary's load_config seeds scalo's cascade first, and that reads ./.env only. a_dotenv_in_a_parent_directory_is_not_loaded runs the binary to prove both halves, and failed against the old call. The bench reads the repo's .env by path and dotenvy moves to dev-dependencies.
  • /chart/ is gitignored, since --emit-helm writes ./chart by default.

The emitted contract validates against the library's v4 schema, and differs from dfe-infra's scripts/tests/fixtures/contracts/dfe-loader.json only in emitted-only fields and writable_paths[0].size. Rendered through dfe-weave assemble() on the 2.14.3 library, the two give byte-identical manifests with empty values, config.transport=grpc and config.geoip.enabled=true.

Done when this merges and the next release publishes a dfe-loader chart that renders the same as the fixture.

The release now assembles a thin chart from the emitted contract on scalo-service 2.14.3, so the hand-kept chart and the tests that pinned it to scalo's chart generator go.

- scalo 2.14.3 and contract schema 4: a 60 s startup budget, h2c on the push port, a 1Gi GeoIP volume only while GeoIP is on, and the pod's resources, grace period and security.
- Config::default() now gives transport kafka, the same as serde gives an empty file. The contract's default config carried an empty transport.
- Config drops its keda block. Nothing in the loader acted on it and the chart never read it. A stored config that still carries one loads as before.
- The secret env test checks every contract env name lands on the config key it spells, and its message no longer carries a value.
- .hyperi-ci.yaml sets release.helm to contract emit on library 2.14.3 and drops build.type, which hyperi-ci no longer reads.
Comment thread tests/integration/config_reachability.rs Dismissed
Config::load called dotenvy::dotenv(), which walks up every parent directory and loads the first .env it finds, so a loader started inside another project's tree took that project's settings and credentials.

- The binary's load_config seeds scalo's cascade before Config::load, and the cascade reads ./.env and nothing above it, so the app's own call goes.
- a_dotenv_in_a_parent_directory_is_not_loaded runs the binary from a directory with a .env only above it, and again with its own .env.
- The insert bake-off bench reads the repo's .env by path, and dotenvy moves to dev-dependencies, since nothing in the binary calls it now.
- /chart/ is gitignored, because --emit-helm writes ./chart by default.
@catinspace-au
catinspace-au merged commit 40b7bca into main Oct 8, 2026
17 checks passed
@catinspace-au
catinspace-au deleted the fix/contract-v4 branch October 8, 2026 19:46
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown

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.

2 participants