Conversation
…matches in the NoKV helper Signed-off-by: wchwawa <wch19961116@gmail.com>
… SDK wire schema Signed-off-by: wchwawa <wch19961116@gmail.com>
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.
Goal And Delivered Outcome
s0.nokv_live_matrixands2a.nokv_live_qualificationrows to run against a build of NoKV'sexperimental/metadata-runtimesline, which routes through seeds instead of etcd and moves the wire schema fromnokv.workspace.rpc.v9tov10under an unchanged0.11.0/API 1. Before this change the ladder'senv:nokv_legacygate hard-requiredNOKV_ETCD+NOKV_ETCD_PREFIX,examples/nokv-shadow-provider/live_e2e.pyonly builtRoutingConfig.etcd, and no report recorded which wire schema the wheel actually spoke, so the gate could not be exercised and a wrong wheel surfaced asnokv_transport_protocol_failed.NOKV_SEEDS(comma-separatedIP:PORT) orNOKV_ETCD+NOKV_ETCD_PREFIX; neither isnokv_live_env_missingwithmissing_one_of, both isnokv_routing_env_ambiguous. The live matrix builds the matchingRoutingConfigconstructor and reports SDK facts (version, API,protocol_schema, routing kind, seed count; never endpoint values). The transport records the helper'snokv_protocol_schemahandshake field and types a refused open (NoKVHelperOpenRefusedError.reasonCode); the Stage 2A probe passes that code through and its report carriesnokv_protocol_schema; the ladder pinsnokv_protocol_schemaandnokv_routing_groupinbindingsand treats a wheel that cannot build the configured routing kind asunverified/nokv_sdk_capability_mismatchon both rows instead of a failed row. Rowsreal_backend(three runs) andunit.main, after feat(coordination): accept seed routing and report SDK capability mismatches in the NoKV helper #4724.Scope And Continuation
API_VERSION/0.12.0decision at promotion, and (later) adoption of the feat(publish): atomic expected workspace incarnation fence on publish_bytes NoKV-Lab/NoKV#508 publish fence.Validation
unitpassedpytest -q tests/test_nokv_live_e2e_routing.py tests/test_nokv_jsonl_helper.py tests/control_plane/test_shared_goal_authority_e2e.py -k "routing_group or wrong_wheel": 43 passed. New: seeds/etcd constructor selection with endpoint-free facts; ambiguous / missing / capability-mismatch / invalid routing are typed and construct no client; gatemissing_one_of, ambiguity,nokv_routing_groupbindings, seed and etcd values as privacy tokens, opt-in flag still enforced; Stage 2A probe capability mismatch →unverified, other probe failures still raise. Deterministic ladder projection-m "not stage2c_e2e": 13 passed, 8 skipped (as onmain).real_entrypointpassednode --test tests/control_plane_ts/nokv_jsonl_transport.test.ts tests/control_plane_ts/nokv_stage2a_qualification_harness.test.ts: 176 passed, 0 failed. New: the real helper process reportssdkProtocolSchemanull for the 0.11.0-shaped fixture and the declared string for a newer-shaped fixture; a seeds config against the release-shaped fixture isNoKVHelperOpenRefusedErrorwithreasonCode nokv_sdk_capability_mismatchand no endpoint in the message.staticpassedruff checkon changed Python files;python -m mypy(repository configuration, 22 files);tsc --project tsconfig.control-plane.json --noEmit.real_backendpasseds0.nokv_live_matrix+s2a.nokv_live_qualification2 pass, exit 0; bindingsnokv_protocol_schema: null,nokv_routing_group: NOKV_ETCD. Same rows onmainda6d797 before the change: 2 pass.real_backendpassednokvbinary built from NoKVexperimental/metadata-runtimes(0c0b7e2ad9 plus NoKV-Lab/NoKV#512 head c105fc999b), Holt-backed single owner reached throughNOKV_SEEDS(one seed), same object store class with a fresh bucket/prefix, fresh workbench: 2 pass, exit 0; bindingsnokv_protocol_schema: nokv.workspace.rpc.v10,nokv_routing_group: NOKV_SEEDS; Stage 2A reportnokv_protocol_schema: nokv.workspace.rpc.v10, 13 checks. Wheel and binary SHA-256 are recorded on NoKV-Lab/NoKV#511.real_backendpassedunverified/nokv_sdk_capability_mismatch, exit 1 (exit 0 with--allow-unverified), 0 privacy violations. On the intermediate head without the probe/ladder propagation the same pairing wass2a fail/assertion_failed(nokv_transport_protocol_failed), which is the failing-before for the typed path.regression_paritypassedmainvs head on the etcd path: identical 2-pass outcome and identical 13 Stage 2A check ids; thenokv_providermatrix rows are byte-for-byte the same set. Privacy: an earlier head reported the routing kind literal (etcd/seeds) in evidence and failed the ladder's own privacy scan because the literal is also a client-config string leaf; reports now carry the variable name (NOKV_ETCD/NOKV_SEEDS).0.11.0/API 1; only the schema string and the SHA-256 distinguish it, which is what the new bindings record.