FID-7: drive NUT worker between phases + install gmp/bcmath#2
Merged
Conversation
The conformance suite's bucket 03 (NUT outbound) and bucket 04 (NUT inbound decrypt) need to drive the PHP queue worker between phases. Without it, transmit_message jobs stay 'pending' forever and inbound rows never advance past RECEIVED — both directions then report false negatives even when the Go peer correctly delivered the envelope. Pass the cron drain command via --node-worker-cmd so the suite spawns bin/worker.php between transmit/receive phases. Also install gmp + bcmath in the setup-php step. brick/math (used by web-token/jwt-framework for RSA-OAEP modPow) falls back to NativeCalculator without one of these — and pure-PHP modPow on 4096-bit RSA routinely runs minutes per envelope, which makes the worker hang inside the 60s drain budget. With gmp the same path completes in single-digit milliseconds.
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.
Summary
Closes the PHP-NUT-as-conformance-target gap. The symmetric suite's bucket 03 + 04 were failing in CI not because the PHP↔Go envelope contract is broken (the GREEN Go-NUT direction proves the wire shape is fine), but because:
bin/worker.phpbetween transmit and the runner's delivery poll, sotransmit_messagejobs stayedpendingforever.Both issues are fixed CI-side:
--node-worker-cmdto the runner with the full env block PHP's worker needs to write to the same sqlite the NUT is using.gmp+bcmathto the setup-php extensions list so brick/math picksGmpCalculator(single-digit ms per modPow).The runner-side support for
--node-worker-cmdand the portable message_id-baseline tests both live in GreicodexJM/fidex-conformance#1; this PR pins the suite checkout to that feature branch until it merges.Test plan
ref:pin in the conformance checkout stepfidex-go-nodeconformance workflow on master) stays GREEN — verified independently after this landsLinked: FID-7.