Skip to content

feat(esdk): reorganize TestServer config and model known bugs per target - #10

Merged
kessplas merged 22 commits into
lucmcdon/esdk-test-server-all-languagesfrom
kessplas/bug-config
Sep 17, 2026
Merged

kessplas merged 22 commits into
lucmcdon/esdk-test-server-all-languagesfrom
kessplas/bug-config

Conversation

@kessplas

@kessplas kessplas commented Aug 4, 2026 •

Copy link
Copy Markdown
Contributor

Issue #, if available

Description of changes

Reorganizes the ESDK TestServer configuration into per-concern files, models known bugs per target with a central catalog, and adds a dev-only local-overrides overlay.

  • Split config into server-config.json, feature-config.json, bug-config.json per server directory.
  • Commons authoritative set: server-config.json, feature-set.json (catalog), bug-list.json (ledger).
  • Each entry's configPath locates its file trio.
  • Key known bugs by (language, majorVersion, repository).
  • Each server declares its exhibited bug ids in its own bug-config.json.
  • KnownBugGate tolerates only the acting target's declared bugs.
  • Add the commons bug ledger bug-list.json: { product, bugs } keyed by id, each { description, ticketId }.
  • Add a dev-only, gitignored local-overrides.json overlay (with an example) to point a language at a local working tree instead of a clone.
  • Update CI, smoke check, Makefile, and test fixtures to match.

Already reviewed and merged into this branch (separate PRs):

Linked language-repo PRs (the config pins each server at these branches):

Squash/merge commit message, if applicable

feat[ESDK]: reorganize TestServer config and model known bugs per target

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Replace the known-bug ledger's bare languages[] with (language, majorVersion, repository) targets and add per-repository overrides resolved by the orchestrator and injected via esdk.testserver.knownBugOverrides, mirroring the Feature_Declaration mechanism. The committed base ledger is unchanged in effect, so the Commons_Run gates the same rows.
@kessplas
kessplas force-pushed the kessplas/bug-config branch from 8af8a2b to 7f811af Compare August 19, 2026 20:38
@kessplas
kessplas force-pushed the kessplas/bug-config branch from 8cba7ca to 94df3e9 Compare August 27, 2026 20:11
…on.json

Remove the central commons known-bug ledger and the fix-only override model.
Each Language_Server now declares the bugs it exhibits in its own
bug-configuration.json (a flat array of ids); Python declares them inline in
the Configuration_Set. The orchestrator loads each server's bugs and injects
esdk.testserver.knownBugs; KnownBugGate consults the acting target's own set.
Fixing a bug is removing its id from that server's file — no reconciler.
@kessplas
kessplas force-pushed the kessplas/bug-config branch 2 times, most recently from c3ac959 to 6065c6d Compare September 2, 2026 20:12
…nfig per directory

The Configuration_Set splits into config/server-config.json (product + entries)
and config/feature-config.json (the Feature_Catalog). Each server directory
holds server-config.json (commons pointer + product), feature-config.json (the
Feature_Declaration) and bug-config.json side by side, located by a single
per-entry configPath. Python (repo-less) gets its own files under commons
instead of inline. Orchestrator loads the split files by directory.
@kessplas
kessplas force-pushed the kessplas/bug-config branch from 6065c6d to c28bc3c Compare September 2, 2026 22:24
kessplas and others added 9 commits September 4, 2026 19:59
A catalog of every known bug across the languages: { id, description,
ticketId } per entry, ticketId blank until a ticket is filed. Unlike the
Feature_Catalog it does NOT list impacted languages — each server still lists
only the bugs it exhibits in its own bug-config.json, and languages never
declare a bug's absence. The orchestrator loads and structurally validates the
ledger (unique ids, non-blank id/description); ledger<->language reconciliation
is deferred to a future commons-side reconciler.
The commons config/bug-config.json ledger now stores bugs as an object
keyed by bug id, each value {description, ticketId}, with ticketId null
until a ticket is filed (was an array of {id, description, ticketId} with
a blank ticketId). Update the loader to iterate the keyed object and the
shipped-ledger test to assert a null ticketId.
…ist.json

The commons-level Configuration_Set files are the authoritative set/list that
impl repos configure against, not per-server configuration, so give them names
distinct from a Language_Server's files: config/feature-config.json ->
config/feature-set.json and config/bug-config.json -> config/bug-list.json.
server-config.json keeps its name (same semantics both levels), as do the
per-server feature-config.json / bug-config.json. Update loadConfigurationSet
(paths + error labels + javadoc), BugLedgerEntry javadoc, and the structural
smoke check.
Add a gitignored config/local-overrides.json that maps a language to a local
working-tree root the orchestrator uses in place of a clone, so a Commons_Run
(make orchestrate) runs live local edits for that language while every other
language stays a cached clone — enabling multi-repo local development without
pushing branches.

SourceResolver.resolve takes an optional localRepositories map (old 3-arg kept
as a delegating overload) and plans a WorkingTree for a listed non-own language;
precedence is own-language > local-override > configuration-override >
configuration-entry. Adds ResolutionReason.LOCAL_OVERRIDE,
ConfigurationLoader.loadLocalRepositories, threads the overlay through
ESDKTestServer.run and Main (default config/local-overrides.json, or
localOverrides=<path>), gitignores the overlay, and ships a committed example
plus a local-development README.
Relocate the Python Language_Server out of commons and into the
aws-encryption-sdk-python Language_Repository (test-server/), so it lives with
the library it exercises like the other language repositories. Repoint the
python Configuration_Entry at that repo (configPath test-server, serverLocation
in aws-encryption-sdk-python), delete esdk/test-server/servers/python, and drop
the now-obsolete Makefile setup-python/run-python-server conveniences. Update
the structural smoke check (Python server is external; commons holds no copy),
the local-development README, PythonLaunchPlan docs, and the shipped-config
loader assertions.
Repoint the java Configuration_Entry from the not-yet-adopted
aws-crypto-tools-java at its current repository, aws-encryption-sdk-java
(configPath test-server, serverLocation test-server/server, library at the repo
root). The Java server delegates to the ESDK Java Maven artifact, so no
sibling library path is needed. Update the structural smoke check and the
shipped-config loader assertions to the new location.
…moke check

Remove the requirement-numbered header enumeration and the (Req N.N) suffixes
from the smoke check's section comments and pass/fail messages; there is no
requirements document in this repo for them to reference.
…thon

Merge pull request #17 from aws/kessplas/move-python-server
@kessplas
kessplas marked this pull request as ready for review September 14, 2026 21:42
@kessplas
kessplas requested a review from a team as a code owner September 14, 2026 21:42
Remove esdk/test-server/README.md here; it is added in a separate PR against
this branch so the local-development guide can be reviewed on its own.
Local-development guide for the ESDK TestServer: the inner-loop make targets
(no clones/credentials), the fail-closed orchestrated run and its clone reuse,
iterating on a single Language_Server from a working tree, and the dev-only
local-overrides overlay.
…-development sections

Reorganize the local-development guide into two top-level sections — Library
development (running the Tests against local library changes, including the
local-overrides overlay) then TestServer development (the build/validate/
orchestrate-test inner loop). Content is unchanged.
…uisites

A fresh-clone run showed make validate needs the smithy CLI on PATH and a full
make orchestrate needs each language's build toolchain (Maven, Cargo, Go, .NET,
Node, CMake, a Python venv); the TestServer-development targets need none.
Add a short, ESDK-specific top-level README summarizing the TestServer and
linking to the supported servers (config/server-config.json) and the two
detailed docs. Move the local-development guide to docs/LOCAL_DEVELOPMENT.md and
add the configuration design doc as docs/CONFIG_DESIGN.md (copied from the
design doc, without the internal 'Other Work' appendix and trailing draft).
Merge pull request #19 from aws/kessplas/test-server-readme
@kessplas kessplas changed the title feat(esdk): key known bugs by language, version, and repository feat(esdk): reorganize TestServer config and model known bugs per target Sep 16, 2026
@kessplas
kessplas merged commit 342eadc into lucmcdon/esdk-test-server-all-languages Sep 17, 2026
2 checks 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.

2 participants