Commit 67b9c5f
committed
fix(migration): close silent-pass, false-positive and wrong-guidance defects across the skill
Found by external review (Codex bot, a full-PR rubric pass, and a sweep of the
38 PR files no prior review round had opened). All thirteen sit OUTSIDE
lint-required-messaging-profile.py, which is the only file earlier rounds
examined.
Discovery and validation could not see what they claimed to check:
- scan-twilio-usage.sh matched PHP with a doubled backslash under `grep -F`,
where it means two literal backslashes. No PHP project has ever been
detected: every one scanned as zero files and passed discovery silently.
- run-validation.sh skipped a dedicated .twiml/.texml file whose root element
is not <Response>, so a broken or unconverted document was never validated.
A generic .xml stays exempt.
- validate-migration.sh reported PASS on files it could not read; every grep
ends `2>/dev/null || true`, so an unreadable file contributes no matches.
It now fails: what cannot be read cannot be certified.
- lint-telnyx-correctness.sh lexed alias suffixes (.phtml, .kt, .bash) without
canonicalising, so their comments were never masked and dead code blocked
valid migrations. The sibling scanners already canonicalised.
- lint-telnyx-correctness.sh downgraded EVERY issue to a warning whenever any
product was hybrid, so a leftover Twilio messaging import was waived because
voice was kept. The waiver is now scoped to the product actually kept.
- post-test-diagnostic.sh read count keys at the top level (they live under
`summary`) and compared uppercase status values against lowercase ones, so it
reported "Fails: 0 / All clear" while validation was failing.
- smoke-test.sh appended a second "000" to curl's own output, making the
variable "000000" and the unreachable-webhook branch dead code.
Guidance that does not work, verified against the real SDKs:
- Ruby examples called Telnyx::Webhook.construct_event, which does not exist
(checked against telnyx 5.158.0). NameError is a StandardError, so the usual
rescue swallowed it and every webhook was rejected with 403. Five call sites
across two skills now use client.webhooks.unwrap(payload, headers:, key:).
- The Go verifier accepted any signed payload regardless of age and consumed
the request body without restoring it. It now enforces the documented
5-minute tolerance, restores the body, and checks the key length before
ed25519.Verify, which panics on a wrong-length key.
- test-webhooks-local.py sends a deliberately INVALID signature, yet scored a
2xx as PASS. It passed handlers with no signature verification and failed
every handler that verified one. 401/403 is now the pass, and a 2xx is
reported as INSECURE.
- webrtc-migration.md told readers to write <Dial supervisorRole>, which is a
Conference REST API parameter, not a TeXML attribute. The skill's own
validator rejects it and the runtime drops it silently.
Verified: 250 tests pass; a 366-case contract corpus passes with no known gaps;
each fix carries a control proving it does not over-correct, and each new
contract was mutation-checked against the pre-fix code.1 parent e5e5732 commit 67b9c5f
39 files changed
Lines changed: 669 additions & 132 deletions
File tree
- providers
- claude/plugins
- telnyx-platform/skills/telnyx-twilio-migration
- references
- scripts
- test-migration
- telnyx-whatsapp/skills/telnyx-whatsapp-ruby
- cursor/plugin/skills
- telnyx-twilio-migration
- references
- scripts
- test-migration
- telnyx-whatsapp-ruby
- skills
- telnyx-twilio-migration
- references
- scripts
- test-migration
- telnyx-whatsapp-ruby
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
Lines changed: 26 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
359 | 359 | | |
360 | 360 | | |
361 | 361 | | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
362 | 373 | | |
363 | 374 | | |
364 | 375 | | |
| |||
372 | 383 | | |
373 | 384 | | |
374 | 385 | | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
375 | 401 | | |
376 | 402 | | |
377 | 403 | | |
| |||
Lines changed: 39 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
406 | 406 | | |
407 | 407 | | |
408 | 408 | | |
| 409 | + | |
409 | 410 | | |
410 | 411 | | |
411 | 412 | | |
412 | 413 | | |
| 414 | + | |
| 415 | + | |
413 | 416 | | |
414 | 417 | | |
415 | | - | |
416 | | - | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
417 | 429 | | |
418 | 430 | | |
419 | | - | |
420 | | - | |
421 | | - | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
422 | 451 | | |
423 | | - | |
| 452 | + | |
424 | 453 | | |
425 | 454 | | |
426 | 455 | | |
| |||
435 | 464 | | |
436 | 465 | | |
437 | 466 | | |
438 | | - | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
439 | 471 | | |
440 | 472 | | |
441 | 473 | | |
| |||
Lines changed: 9 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
171 | 171 | | |
172 | 172 | | |
173 | 173 | | |
174 | | - | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
175 | 179 | | |
176 | 180 | | |
177 | 181 | | |
| |||
282 | 286 | | |
283 | 287 | | |
284 | 288 | | |
285 | | - | |
| 289 | + | |
286 | 290 | | |
287 | | - | |
288 | | - | |
289 | | - | |
| 291 | + | |
| 292 | + | |
290 | 293 | | |
291 | 294 | | |
292 | 295 | | |
| |||
382 | 385 | | |
383 | 386 | | |
384 | 387 | | |
385 | | - | |
| 388 | + | |
386 | 389 | | |
387 | 390 | | |
388 | 391 | | |
| |||
Lines changed: 9 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
592 | 592 | | |
593 | 593 | | |
594 | 594 | | |
595 | | - | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
596 | 604 | | |
597 | 605 | | |
598 | 606 | | |
| |||
Lines changed: 39 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
406 | 406 | | |
407 | 407 | | |
408 | 408 | | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
409 | 432 | | |
410 | | - | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
411 | 436 | | |
412 | 437 | | |
413 | 438 | | |
| |||
454 | 479 | | |
455 | 480 | | |
456 | 481 | | |
457 | | - | |
| 482 | + | |
458 | 483 | | |
459 | 484 | | |
460 | 485 | | |
| |||
595 | 620 | | |
596 | 621 | | |
597 | 622 | | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
598 | 629 | | |
599 | | - | |
| 630 | + | |
600 | 631 | | |
601 | 632 | | |
602 | 633 | | |
| |||
789 | 820 | | |
790 | 821 | | |
791 | 822 | | |
792 | | - | |
| 823 | + | |
793 | 824 | | |
794 | 825 | | |
795 | 826 | | |
| |||
833 | 864 | | |
834 | 865 | | |
835 | 866 | | |
836 | | - | |
| 867 | + | |
837 | 868 | | |
838 | 869 | | |
839 | 870 | | |
| |||
850 | 881 | | |
851 | 882 | | |
852 | 883 | | |
853 | | - | |
| 884 | + | |
854 | 885 | | |
855 | 886 | | |
856 | 887 | | |
| |||
862 | 893 | | |
863 | 894 | | |
864 | 895 | | |
865 | | - | |
| 896 | + | |
866 | 897 | | |
867 | 898 | | |
868 | 899 | | |
| |||
877 | 908 | | |
878 | 909 | | |
879 | 910 | | |
880 | | - | |
| 911 | + | |
881 | 912 | | |
882 | 913 | | |
883 | 914 | | |
| |||
Lines changed: 8 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
217 | | - | |
218 | | - | |
219 | | - | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
220 | 220 | | |
221 | 221 | | |
222 | 222 | | |
| |||
247 | 247 | | |
248 | 248 | | |
249 | 249 | | |
250 | | - | |
251 | | - | |
252 | | - | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
253 | 253 | | |
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
257 | 257 | | |
258 | 258 | | |
259 | | - | |
| 259 | + | |
260 | 260 | | |
261 | | - | |
| 261 | + | |
262 | 262 | | |
263 | 263 | | |
264 | 264 | | |
| |||
Lines changed: 21 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
| 152 | + | |
152 | 153 | | |
153 | 154 | | |
154 | 155 | | |
| |||
178 | 179 | | |
179 | 180 | | |
180 | 181 | | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
181 | 193 | | |
182 | 194 | | |
183 | 195 | | |
184 | 196 | | |
185 | 197 | | |
186 | 198 | | |
187 | 199 | | |
188 | | - | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
189 | 209 | | |
190 | 210 | | |
191 | 211 | | |
| |||
Lines changed: 8 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
318 | 318 | | |
319 | 319 | | |
320 | 320 | | |
321 | | - | |
322 | | - | |
323 | | - | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
324 | 329 | | |
325 | 330 | | |
326 | 331 | | |
| |||
0 commit comments