[35/36] Stabilize gRPC demo server reliability - #70
Conversation
|
Verdict: approve with nits. Key question for a reliability PR answered: this addresses the root cause, not a mask. The failure was that the gRPC fixture is a separate process nothing told users to start, and the fix is guidance (README, server.js pointer, docs strings) plus a real testability seam (MISSIO_GRPC_PORT with validation, readiness log from the bindAsync-assigned port so port 0 works) and genuine integration coverage. No retries, timeouts or sleeps anywhere. Note the src/ changes visible in the ledger cancel out across the PR boundary (839c15d fully reverted by 96b5040), so the net increment is docs + demo hardening + tests.
Tests: strong. The smoke test spawns the real grpc-server.js on an ephemeral port, parses stdout for readiness, drives all 7 packaged demos through RequestExecutionService, asserts concrete bodies including the runtime summary, and kills the child in finally. It would fail if the fixture or the execution path regressed, a genuine integration test. Deps: none added (test imports are Node builtins). |
|
Addressed the actionable reliability findings in
Verification: focused OC-160 3/3, targeted matrix 57/57, full suite 480/480, demo collection 47/47, compile and build passed. GitHub build/security checks pass. PR 69 -> 70, PR 70 -> 71, and direct integration with rework PR 72 are all clean, so no descendant implementation branch was modified. |
Stack PR for the Missio 0.8.0 OpenCollection review queue.
Scope
Completes OC-160 by making the separate local gRPC fixture discoverable, configurable, deterministic, and integration-tested across all seven packaged demo requests. The implementation keeps generic transport errors unbranded; demo-specific startup guidance remains in the demo README, fixture logs, folder, and request descriptions.
Review rework is included in
98cf520:SIGINTandSIGTERMwith boundedtryShutdown, then force-shuts down only if the graceful path exceeds two secondsAn aggregate
npm run demoremains intentionally out of scope: OC-160 lists it as optional, the companion-process boundary is documented explicitly, and the integration test starts/stops the real gRPC process itself.Verification
npm run compilenpm test: 25 files, 480 tests passednode scripts/validate-collection.js examples/demo-api: 47/47 files passednpm run build98cf520Stack integrity
Pre-push three-way merge simulations passed for PR 69 -> 70, PR 70 -> 71, and PR 70 -> rework PR 72. Post-push GitHub reports PR 70, immediate child PR 71, and rework PR 72 as
MERGEABLE/CLEAN.