diff --git a/AGENTS.md b/AGENTS.md
index cbb1bc2e..ca998ba4 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -8,6 +8,7 @@
- Node 24
- `npm ci`
- `npm test`
+- Dev server with auto-rebuild: `npm start` (port 8080). Production build: `npm run build` (output in `build/prod/`). If the production build OOMs, set `NODE_OPTIONS=--max_old_space_size=2048`.
- Do not spend time fixing Windows-only runtime or dependency issues unless explicitly requested.
- Do not commit repo changes whose only purpose is to make local Windows execution work.
- If a failure appears only in the local Windows shell, do not treat it as a code regression until it reproduces in Docker/Linux.
diff --git a/src/core/operations/GenerateCardValidationData.mjs b/src/core/operations/GenerateCardValidationData.mjs
index a61ec91f..a4b7751d 100644
--- a/src/core/operations/GenerateCardValidationData.mjs
+++ b/src/core/operations/GenerateCardValidationData.mjs
@@ -19,7 +19,7 @@ class GenerateCardValidationData extends Operation {
this.name = "Card Validation Data Generate";
this.module = "Payment";
- this.description = "Paste the combined CVK pair into the input field as hex and generate a card-verification value for software testing.
Input: combined CVK pair as 16-byte or 24-byte hex.
Arguments: select whether you are generating CVV/CVC, CVV2/CVC2, or iCVV, then provide the PAN, expiry components, and service code details.
This implementation is intended for test harnesses and assumes the common CVV decimalization flow used by payment HSM integrations.";
+ this.description = "Paste the combined CVK pair into the input field as hex and generate a card-verification value for software testing.
Input: combined CVK pair as 16-byte or 24-byte hex.
Arguments: select whether you are generating CVV/CVC, CVV2/CVC2, or iCVV, then provide the PAN, expiry components, and service code details.
Profile behaviour: CVV2/CVC2 forces service code 000 regardless of the supplied service code. iCVV forces service code 999. CVV/CVC uses the supplied service code directly.
This implementation is intended for test harnesses and assumes the common CVV decimalization flow used by payment HSM integrations.";
this.inlineHelp = "Input: combined CVK pair hex.
Args: choose the validation-data profile, then provide PAN, expiry, and service-code inputs.";
this.testDataSamples = [
{
diff --git a/src/core/operations/VerifyCardValidationData.mjs b/src/core/operations/VerifyCardValidationData.mjs
index 670ec0fa..b4a0384d 100644
--- a/src/core/operations/VerifyCardValidationData.mjs
+++ b/src/core/operations/VerifyCardValidationData.mjs
@@ -19,7 +19,7 @@ class VerifyCardValidationData extends Operation {
this.name = "Card Validation Data Verify";
this.module = "Payment";
- this.description = "Paste the combined CVK pair into the input field as hex and verify a CVV/CVC-style value for software testing.
Input: combined CVK pair as 16-byte or 24-byte hex.
Arguments: select the validation-data profile, provide the PAN and expiry components, then supply the expected validation data.
This operation recomputes the validation value using the same assumptions as the generate operation and reports whether the supplied value matches.";
+ this.description = "Paste the combined CVK pair into the input field as hex and verify a CVV/CVC-style value for software testing.
Input: combined CVK pair as 16-byte or 24-byte hex.
Arguments: select the validation-data profile, provide the PAN and expiry components, then supply the expected validation data.
Profile behaviour: CVV2/CVC2 forces service code 000 and iCVV forces 999 — the service code arg is ignored for those profiles.
This operation recomputes the validation value using the same assumptions as the generate operation and reports whether the supplied value matches.";
this.inlineHelp = "Input: combined CVK pair hex.
Args: provide PAN, expiry, service-code context, and the validation data to check.";
this.testDataSamples = [
{