Initial commit — Performance West telecom compliance platform

Includes: API (Express/TypeScript), Astro site, Python workers,
document generators, FCC compliance tools, Canada CRTC formation,
Ansible infrastructure, and deployment scripts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
justin 2026-04-27 06:54:22 -05:00
commit f8cd37ac8c
1823 changed files with 145167 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

View file

@ -0,0 +1,70 @@
[
{
"step": "01_load_order_page",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/01_load_order_page_20260401_140404_pass.png"
],
"error": "",
"duration_s": 1.68
},
{
"step": "02_company_type",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/02_company_type_20260401_140406_pass.png"
],
"error": "",
"duration_s": 1.84
},
{
"step": "03_director_info",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/03_director_info_20260401_140407_pass.png"
],
"error": "",
"duration_s": 1.83
},
{
"step": "04_telecom_details",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/04_telecom_details_20260401_140409_pass.png"
],
"error": "",
"duration_s": 0.97
},
{
"step": "05_identity_verification",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/05_identity_verification_20260401_140409_pass.png"
],
"error": "",
"duration_s": 1.02
},
{
"step": "06_review_and_submit",
"success": false,
"attempts": 3,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140446_fail_0.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140501_fail_1.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140515_fail_2.png"
],
"error": "Locator.click: Timeout 10000ms exceeded.\nCall log:\n - waiting for locator(\"#btn-next\")\n - locator resolved to <button disabled type=\"button\" id=\"btn-next\" class=\"ml-auto inline-flex items-center gap-1.5 px-6 py-2.5 rounded-lg bg-pw-700 text-white text-sm font-medium hover:bg-pw-800 focus:outline-none focus:ring-2 focus:ring-pw-500 focus:ring-offset-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\">Submitting...</button>\n - attempting click action\n 2 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 20ms\n 2 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 100ms\n 19 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 500ms\n",
"duration_s": 65.54
}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

View file

@ -0,0 +1,70 @@
[
{
"step": "01_load_order_page",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/01_load_order_page_20260401_140509_pass.png"
],
"error": "",
"duration_s": 1.56
},
{
"step": "02_company_type",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/02_company_type_20260401_140511_pass.png"
],
"error": "",
"duration_s": 1.85
},
{
"step": "03_director_info",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/03_director_info_20260401_140513_pass.png"
],
"error": "",
"duration_s": 1.81
},
{
"step": "04_telecom_details",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/04_telecom_details_20260401_140514_pass.png"
],
"error": "",
"duration_s": 0.99
},
{
"step": "05_identity_verification",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/05_identity_verification_20260401_140515_pass.png"
],
"error": "",
"duration_s": 1.03
},
{
"step": "06_review_and_submit",
"success": false,
"attempts": 3,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140552_fail_0.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140606_fail_1.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140620_fail_2.png"
],
"error": "Locator.click: Timeout 10000ms exceeded.\nCall log:\n - waiting for locator(\"#btn-next\")\n - locator resolved to <button disabled type=\"button\" id=\"btn-next\" class=\"ml-auto inline-flex items-center gap-1.5 px-6 py-2.5 rounded-lg bg-pw-700 text-white text-sm font-medium hover:bg-pw-800 focus:outline-none focus:ring-2 focus:ring-pw-500 focus:ring-offset-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\">Submitting...</button>\n - attempting click action\n 2 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 20ms\n 2 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 100ms\n 19 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 500ms\n",
"duration_s": 65.69
}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

View file

@ -0,0 +1,70 @@
[
{
"step": "01_load_order_page",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/01_load_order_page_20260401_140633_pass.png"
],
"error": "",
"duration_s": 1.61
},
{
"step": "02_company_type",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/02_company_type_20260401_140635_pass.png"
],
"error": "",
"duration_s": 1.79
},
{
"step": "03_director_info",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/03_director_info_20260401_140637_pass.png"
],
"error": "",
"duration_s": 1.82
},
{
"step": "04_telecom_details",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/04_telecom_details_20260401_140638_pass.png"
],
"error": "",
"duration_s": 1.0
},
{
"step": "05_identity_verification",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/05_identity_verification_20260401_140639_pass.png"
],
"error": "",
"duration_s": 1.0
},
{
"step": "06_review_and_submit",
"success": false,
"attempts": 3,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140715_fail_0.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140730_fail_1.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140744_fail_2.png"
],
"error": "Locator.click: Timeout 10000ms exceeded.\nCall log:\n - waiting for locator(\"#btn-next\")\n - locator resolved to <button disabled type=\"button\" id=\"btn-next\" class=\"ml-auto inline-flex items-center gap-1.5 px-6 py-2.5 rounded-lg bg-pw-700 text-white text-sm font-medium hover:bg-pw-800 focus:outline-none focus:ring-2 focus:ring-pw-500 focus:ring-offset-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\">Submitting...</button>\n - attempting click action\n 2 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 20ms\n 2 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 100ms\n 19 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 500ms\n",
"duration_s": 65.02
}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

View file

@ -0,0 +1,71 @@
[
{
"step": "01_load_order_page",
"success": true,
"attempts": 2,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/01_load_order_page_20260401_140812_fail_0.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/01_load_order_page_20260401_140817_pass.png"
],
"error": "",
"duration_s": 34.88
},
{
"step": "02_company_type",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/02_company_type_20260401_140819_pass.png"
],
"error": "",
"duration_s": 1.84
},
{
"step": "03_director_info",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/03_director_info_20260401_140820_pass.png"
],
"error": "",
"duration_s": 1.83
},
{
"step": "04_telecom_details",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/04_telecom_details_20260401_140821_pass.png"
],
"error": "",
"duration_s": 1.01
},
{
"step": "05_identity_verification",
"success": true,
"attempts": 1,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/05_identity_verification_20260401_140822_pass.png"
],
"error": "",
"duration_s": 1.0
},
{
"step": "06_review_and_submit",
"success": false,
"attempts": 3,
"ai_corrections": [],
"screenshots": [
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140859_fail_0.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140913_fail_1.png",
"/home/justin/projects/performancewest-new-site/scripts/tests/screenshots/06_review_and_submit_20260401_140927_fail_2.png"
],
"error": "Locator.click: Timeout 10000ms exceeded.\nCall log:\n - waiting for locator(\"#btn-next\")\n - locator resolved to <button disabled type=\"button\" id=\"btn-next\" class=\"ml-auto inline-flex items-center gap-1.5 px-6 py-2.5 rounded-lg bg-pw-700 text-white text-sm font-medium hover:bg-pw-800 focus:outline-none focus:ring-2 focus:ring-pw-500 focus:ring-offset-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\">Submitting...</button>\n - attempting click action\n 2 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 20ms\n 2 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 100ms\n 19 \u00d7 waiting for element to be visible, enabled and stable\n - element is not enabled\n - retrying click action\n - waiting 500ms\n",
"duration_s": 64.88
}
]