You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reviewer fixes
--------------
- INLINE-STORAGE de-greenwashed: surface test removed, verified-by emptied;
verify gate now reports MISSING (not falsely PASSED) for the no-runtime-
allocation requirement that needs witness instrumentation we don't wire.
- DR-KVS-BACKEND-CHOICE rewritten: matches the actual vendored impl
(json_backend.rs with Adler32 + fs::rename snapshot rotation), not the
fabricated RocksDB ADR that contradicted the code.
- DR-KVS-INLINE-STORAGE-GAP added: records the three honest response
options (witness wiring / heapless / spec downgrade) so the gap has
an audit trail.
- 9 upstream miri_test targets restored via tools/miri.sh + `make miri`
(cargo-miri wrapper — public rules_rust 0.70 has no miri_test rule;
eclipse-score uses a private 0.68.2-score fork).
- verify.py: mutable-default-arg fixed (_LIST_CACHE module-level dict);
bazel build errors no longer swallowed by capture_output=True.
- README: explicit that C++ has the same gap (kvs.cpp:24 carries an
open `// TODO String Handling in set_value TBD`); :status: valid in
sphinx-needs framing clarified as "approved-for-design" not
"must-be-implemented"; 6-of-35 comp-req scope rationale recorded.
Variants model
--------------
- variants/feature-model.yaml + bindings.yaml declare two deployment
contexts: `dev` (engineering iteration) and `prod` (release-mode
safety builds).
- Each variant binds three axes by name: (a) KvsBuilder runtime dials
(KvsDefaults/KvsLoad/snapshot_max_count), (b) bazel --config= profile
in /.bazelrc, (c) audit scope (out-of-scope-for: list).
- /.bazelrc adds --config=dev (fastbuild) and --config=prod (compilation_
mode=opt + lto=fat + codegen-units=1 + overflow-checks=on + strip=
symbols + embed-bitcode=yes). panic=abort lives in a separate
--config=prod_ship for the shipping binary (Rust's #[test] harness
needs unwinding outside nightly's -Zpanic_abort_tests).
- Makefile threads VARIANT= through `make verify` and `make bazel`.
- README + variants/README explain the design and why a variant model
is needed: upstream eclipse-score rust_kvs has NO cargo features in
the core library, so variants ride on builder dials + bazel rustc-
flag profiles + audit scope, not --features.
Gate output (variant=dev, default): 3 PASSED, 2 FAILED, 0 MISSING
Gate output (variant=prod): 3 PASSED, 2 FAILED, 1 MISSING
The 2 FAILED are the confirmed-real upstream falsifications of
comp_req__kvs__key_naming and comp_req__kvs__key_length; the MISSING
under prod is INLINE-STORAGE (out-of-scope for dev).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
are accepted (`:status: valid`) but their declared behavior is not
41
-
implemented and not tested:
40
+
are accepted (`:status: valid`) but their declared behavior is neither
41
+
implemented nor tested in *either* language binding:
42
42
43
-
| Upstream comp-req | RST text (verbatim) | What the impl does|
43
+
| Upstream comp-req | RST text (verbatim) | What both impls do|
44
44
|---|---|---|
45
-
|`comp_req__kvs__key_naming`| "shall accept keys that consist solely of alphanumeric characters, underscores, or dashes" |`Kvs::set_value("with space", _)` returns `Ok(())`. Same for keys containing`.`, `/`, or any other character. |
46
-
|`comp_req__kvs__key_length`| "shall limit the maximum length of a key to 32 bytes" |`Kvs::set_value(&"a".repeat(33), _)` returns `Ok(())`. No length check exists. |
45
+
|`comp_req__kvs__key_naming`| "shall accept keys that consist solely of alphanumeric characters, underscores, or dashes" |`Kvs::set_value("with space", _)` returns `Ok(())` in Rust (`kvs.rs:238`) and the C++ `set_value` (`src/cpp/src/kvs.cpp:24` carries an open `// TODO String Handling in set_value TBD`). Same for`.`, `/`, or any other character. |
46
+
|`comp_req__kvs__key_length`| "shall limit the maximum length of a key to 32 bytes" |`Kvs::set_value(&"a".repeat(33), _)` returns `Ok(())`. No length constant exists in either codebase. |
47
47
48
48
Verified independently (clean-room search across both Rust and C++
49
-
codebases under eclipse-score): there is no `validate_key` / `check_key`
50
-
function anywhere, no length constant, no test case directive
51
-
(`.. test_case::`) tied to either comp-req, no documentation note saying
52
-
"validation happens at the IPC boundary." Both Rust `set_value` and the
53
-
C++ `set_value` accept any input.
49
+
codebases under eclipse-score): no `validate_key` / `check_key` /
50
+
length-constant symbol exists, no `.. test_case::` directive in
51
+
`score/kvs/docs/` references either comp-req ID, no documentation
52
+
note saying "validation happens at the IPC boundary."
53
+
54
+
**Context on `:status: valid`.** In the sphinx-needs workflow
55
+
eclipse-score uses, `:status: valid` means "approved for design" —
56
+
not "must be implemented by release X." SCORE is pre-1.0 and this
57
+
state is normal for early-stage projects. The finding's value is not
58
+
"eclipse-score is broken" but "an artifact-driven gate makes the
59
+
spec/impl delta a CI signal, where a coverage dashboard hides it as
60
+
a wedge." The eclipse-score project itself is healthy and well-run;
61
+
the methodology is the lesson.
54
62
55
63
**The gate calls this out by going RED.** Current `make verify` output:
56
64
@@ -60,17 +68,24 @@ BUCKET ID EVIDENCE
60
68
PASSED COMP-REQ-KVS-KEY-ENCODING 1 test(s) all green
61
69
PASSED COMP-REQ-KVS-VALUE-CHECKSUM 5 test(s) all green
62
70
PASSED COMP-REQ-KVS-ATOMIC-STORE 5 test(s) all green
63
-
PASSED COMP-REQ-KVS-INLINE-STORAGE 1 test(s) all green
64
71
FAILED COMP-REQ-KVS-KEY-NAMING 3 test(s) failed:
65
72
- test_..._space_rejected
66
73
- test_..._dot_rejected
67
74
- test_..._slash_rejected
68
75
FAILED COMP-REQ-KVS-KEY-LENGTH 1 test(s) failed:
69
76
- test_..._32_byte_cap_enforced
77
+
MISSING COMP-REQ-KVS-INLINE-STORAGE verified-by is absent or empty
0 commit comments