docs: bring the documentation up to the daemon/client era
A large gap had opened between the docs and the code: the README and INTEGRATION guide did not mention the gRPC daemon or the Python client at all (the entire vendor surface), ARCHITECTURE still described secs_server as the ~1200-line canonical wiring example (it is a ~110-line thin main over EquipmentRuntime), and test counts across six files were stale (445/2753 -> 473/3087 core + the separate 125-assertion daemon suite). - README: new "Integrating your tool (pick a tier)" section — Python client / any-language gRPC / embedded C++ — plus daemon tests and tools/run_interop.sh in the Testing section. - ARCHITECTURE: layer diagram gains the vendor-surface and EquipmentRuntime/default_handlers tiers; stale wiring row fixed. - INTEGRATION: three-tier chooser up front (this guide = the C++ tier). - ch30 tour: secs_gemd + secs_gemd_tests in the binaries table. - ch31: example alarm used a nonexistent `alcd:` field with bit 7 set (which the validator forbids) -> real `category:`/`name:` fields, and the roles: block documented. - ch35: handler-location note now points at default_handlers.cpp's 15 per-capability register_* functions. - ch40: built-artifacts list + sample output counts. - ch50: secsgem::gem runtime/default_handlers/handler_slot/name_index includes + new secsgem::daemon namespace section. - PROOFS: test-count table gains the runtime/handlers/daemon row so the tally adds up; daemon suite noted. VERIFICATION/COMPLIANCE counts. - interop/README: the one-command runner + the two daemon-track harnesses (daemon_interop, pyclient_interop). Audited via a docs-vs-code sweep (the audit itself under-reported: it validated counts textually; reality was 473/3087). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -57,7 +57,7 @@ secs-gem/
|
||||
│ └── fuzz_sml_parse.cpp libFuzzer harness for try_parse_sml.
|
||||
│
|
||||
├── tests/ doctest unit + integration tests.
|
||||
│ └── test_*.cpp 50 files, 445 cases, 2753 assertions.
|
||||
│ └── test_*.cpp 55 files, 473 cases, 3087 assertions.
|
||||
│
|
||||
├── data/ YAML configs (the spec-as-data).
|
||||
│ ├── messages.yaml SECS-II message catalog (164 msgs).
|
||||
@@ -154,7 +154,9 @@ lines). Each binary lives in `build/` after `cmake --build`.
|
||||
| `secs_conformance` | [`apps/secs_conformance.cpp`](../apps/secs_conformance.cpp) | 47 wire-level conformance checks against a live server. |
|
||||
| `secs_interop_probe` | [`apps/secs_interop_probe.cpp`](../apps/secs_interop_probe.cpp) | Active host probing a secsgem-py passive equipment. |
|
||||
| `secs_bench` | [`apps/secs_bench.cpp`](../apps/secs_bench.cpp) | Throughput / latency / memory harness. |
|
||||
| `secsgem_tests` | All `tests/*.cpp` | The 445-case doctest binary. |
|
||||
| `secsgem_tests` | All `tests/*.cpp` | The 473-case doctest binary. |
|
||||
| `secs_gemd` | `apps/secs_gemd.cpp` + `proto/secsgem/v1` | The gRPC daemon: HSMS equipment + name-based tool API. |
|
||||
| `secs_gemd_tests` | `tests/test_daemon_service.cpp` | In-process gRPC service tests (built when grpc++ is). |
|
||||
| `fuzz_secs2_decode` | [`apps/fuzz_secs2_decode.cpp`](../apps/fuzz_secs2_decode.cpp) | libFuzzer (clang only, opt-in `-DSECSGEM_FUZZ=ON`). |
|
||||
| `fuzz_sml_parse` | [`apps/fuzz_sml_parse.cpp`](../apps/fuzz_sml_parse.cpp) | libFuzzer for the SML parser. |
|
||||
|
||||
@@ -196,7 +198,7 @@ standard CMake.
|
||||
|
||||
## Test layout
|
||||
|
||||
50 test files; 445 test cases; 2 753 assertions. One file per
|
||||
50 test files; 473 test cases; 3 087 assertions. One file per
|
||||
concern. Naming is `test_<thing>.cpp` consistently:
|
||||
|
||||
- `test_secs2.cpp`, `test_e5_kat.cpp`, `test_sml.cpp`,
|
||||
|
||||
Reference in New Issue
Block a user