feat(esdk): reorganize TestServer config and model known bugs per target - #10
Merged
kessplas merged 22 commits intoSep 17, 2026
Merged
Conversation
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
force-pushed
the
kessplas/bug-config
branch
from
August 19, 2026 20:38
8af8a2b to
7f811af
Compare
kessplas
force-pushed
the
kessplas/bug-config
branch
from
August 27, 2026 20:11
8cba7ca to
94df3e9
Compare
…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
force-pushed
the
kessplas/bug-config
branch
2 times, most recently
from
September 2, 2026 20:12
c3ac959 to
6065c6d
Compare
…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
force-pushed
the
kessplas/bug-config
branch
from
September 2, 2026 22:24
6065c6d to
c28bc3c
Compare
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
marked this pull request as ready for review
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
lucasmcdonald3
approved these changes
Sep 16, 2026
kessplas
merged commit Sep 17, 2026
342eadc
into
lucmcdon/esdk-test-server-all-languages
2 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
server-config.json,feature-config.json,bug-config.jsonper server directory.server-config.json,feature-set.json(catalog),bug-list.json(ledger).configPathlocates its file trio.(language, majorVersion, repository).bug-config.json.bug-list.json:{ product, bugs }keyed by id, each{ description, ticketId }.local-overrides.jsonoverlay (with an example) to point a language at a local working tree instead of a clone.Already reviewed and merged into this branch (separate PRs):
aws-encryption-sdk-python(feat(esdk): move the Python Language_Server to aws-encryption-sdk-python #17).aws-encryption-sdk-java(feat(esdk): point the Java Language_Server at aws-encryption-sdk-java #18).docs/LOCAL_DEVELOPMENT.md), and configuration design doc (docs/CONFIG_DESIGN.md) (docs(esdk): add the test-server local-development README #19).Linked language-repo PRs (the config pins each server at these branches):
Squash/merge commit message, if applicable
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.