@veraxhq/verax 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/README.md +14 -18
  2. package/bin/verax.js +7 -0
  3. package/package.json +15 -5
  4. package/src/cli/commands/baseline.js +104 -0
  5. package/src/cli/commands/default.js +323 -111
  6. package/src/cli/commands/doctor.js +36 -4
  7. package/src/cli/commands/ga.js +243 -0
  8. package/src/cli/commands/gates.js +95 -0
  9. package/src/cli/commands/inspect.js +131 -2
  10. package/src/cli/commands/release-check.js +213 -0
  11. package/src/cli/commands/run.js +498 -103
  12. package/src/cli/commands/security-check.js +211 -0
  13. package/src/cli/commands/truth.js +114 -0
  14. package/src/cli/entry.js +305 -68
  15. package/src/cli/util/angular-component-extractor.js +179 -0
  16. package/src/cli/util/angular-navigation-detector.js +141 -0
  17. package/src/cli/util/angular-network-detector.js +161 -0
  18. package/src/cli/util/angular-state-detector.js +162 -0
  19. package/src/cli/util/ast-interactive-detector.js +546 -0
  20. package/src/cli/util/ast-network-detector.js +603 -0
  21. package/src/cli/util/ast-usestate-detector.js +602 -0
  22. package/src/cli/util/bootstrap-guard.js +86 -0
  23. package/src/cli/util/detection-engine.js +4 -3
  24. package/src/cli/util/determinism-runner.js +123 -0
  25. package/src/cli/util/determinism-writer.js +129 -0
  26. package/src/cli/util/env-url.js +4 -0
  27. package/src/cli/util/events.js +76 -0
  28. package/src/cli/util/expectation-extractor.js +380 -74
  29. package/src/cli/util/findings-writer.js +126 -15
  30. package/src/cli/util/learn-writer.js +3 -1
  31. package/src/cli/util/observation-engine.js +69 -23
  32. package/src/cli/util/observe-writer.js +3 -1
  33. package/src/cli/util/paths.js +6 -14
  34. package/src/cli/util/project-discovery.js +23 -0
  35. package/src/cli/util/project-writer.js +3 -1
  36. package/src/cli/util/redact.js +2 -2
  37. package/src/cli/util/run-resolver.js +64 -0
  38. package/src/cli/util/runtime-budget.js +147 -0
  39. package/src/cli/util/source-requirement.js +55 -0
  40. package/src/cli/util/summary-writer.js +13 -1
  41. package/src/cli/util/svelte-navigation-detector.js +163 -0
  42. package/src/cli/util/svelte-network-detector.js +80 -0
  43. package/src/cli/util/svelte-sfc-extractor.js +147 -0
  44. package/src/cli/util/svelte-state-detector.js +243 -0
  45. package/src/cli/util/vue-navigation-detector.js +177 -0
  46. package/src/cli/util/vue-sfc-extractor.js +162 -0
  47. package/src/cli/util/vue-state-detector.js +215 -0
  48. package/src/types/global.d.ts +28 -0
  49. package/src/types/ts-ast.d.ts +24 -0
  50. package/src/verax/cli/doctor.js +2 -2
  51. package/src/verax/cli/finding-explainer.js +56 -3
  52. package/src/verax/cli/init.js +1 -1
  53. package/src/verax/cli/url-safety.js +12 -2
  54. package/src/verax/cli/wizard.js +13 -2
  55. package/src/verax/core/artifacts/registry.js +154 -0
  56. package/src/verax/core/artifacts/verifier.js +980 -0
  57. package/src/verax/core/baseline/baseline.enforcer.js +137 -0
  58. package/src/verax/core/baseline/baseline.snapshot.js +231 -0
  59. package/src/verax/core/budget-engine.js +1 -1
  60. package/src/verax/core/capabilities/gates.js +499 -0
  61. package/src/verax/core/capabilities/registry.js +475 -0
  62. package/src/verax/core/confidence/confidence-compute.js +137 -0
  63. package/src/verax/core/confidence/confidence-invariants.js +234 -0
  64. package/src/verax/core/confidence/confidence-report-writer.js +112 -0
  65. package/src/verax/core/confidence/confidence-weights.js +44 -0
  66. package/src/verax/core/confidence/confidence.defaults.js +65 -0
  67. package/src/verax/core/confidence/confidence.loader.js +79 -0
  68. package/src/verax/core/confidence/confidence.schema.js +94 -0
  69. package/src/verax/core/confidence-engine-refactor.js +484 -0
  70. package/src/verax/core/confidence-engine.js +486 -0
  71. package/src/verax/core/confidence-engine.js.backup +471 -0
  72. package/src/verax/core/contracts/index.js +29 -0
  73. package/src/verax/core/contracts/types.js +185 -0
  74. package/src/verax/core/contracts/validators.js +381 -0
  75. package/src/verax/core/decision-snapshot.js +31 -4
  76. package/src/verax/core/decisions/decision.trace.js +276 -0
  77. package/src/verax/core/determinism/contract-writer.js +89 -0
  78. package/src/verax/core/determinism/contract.js +139 -0
  79. package/src/verax/core/determinism/diff.js +364 -0
  80. package/src/verax/core/determinism/engine.js +221 -0
  81. package/src/verax/core/determinism/finding-identity.js +148 -0
  82. package/src/verax/core/determinism/normalize.js +438 -0
  83. package/src/verax/core/determinism/report-writer.js +92 -0
  84. package/src/verax/core/determinism/run-fingerprint.js +118 -0
  85. package/src/verax/core/determinism-model.js +35 -6
  86. package/src/verax/core/dynamic-route-intelligence.js +528 -0
  87. package/src/verax/core/evidence/evidence-capture-service.js +307 -0
  88. package/src/verax/core/evidence/evidence-intent-ledger.js +165 -0
  89. package/src/verax/core/evidence-builder.js +487 -0
  90. package/src/verax/core/execution-mode-context.js +77 -0
  91. package/src/verax/core/execution-mode-detector.js +190 -0
  92. package/src/verax/core/failures/exit-codes.js +86 -0
  93. package/src/verax/core/failures/failure-summary.js +76 -0
  94. package/src/verax/core/failures/failure.factory.js +225 -0
  95. package/src/verax/core/failures/failure.ledger.js +132 -0
  96. package/src/verax/core/failures/failure.types.js +196 -0
  97. package/src/verax/core/failures/index.js +10 -0
  98. package/src/verax/core/ga/ga-report-writer.js +43 -0
  99. package/src/verax/core/ga/ga.artifact.js +49 -0
  100. package/src/verax/core/ga/ga.contract.js +434 -0
  101. package/src/verax/core/ga/ga.enforcer.js +86 -0
  102. package/src/verax/core/guardrails/guardrails-report-writer.js +109 -0
  103. package/src/verax/core/guardrails/policy.defaults.js +210 -0
  104. package/src/verax/core/guardrails/policy.loader.js +83 -0
  105. package/src/verax/core/guardrails/policy.schema.js +110 -0
  106. package/src/verax/core/guardrails/truth-reconciliation.js +136 -0
  107. package/src/verax/core/guardrails-engine.js +505 -0
  108. package/src/verax/core/incremental-store.js +15 -7
  109. package/src/verax/core/observe/run-timeline.js +316 -0
  110. package/src/verax/core/perf/perf.contract.js +186 -0
  111. package/src/verax/core/perf/perf.display.js +65 -0
  112. package/src/verax/core/perf/perf.enforcer.js +91 -0
  113. package/src/verax/core/perf/perf.monitor.js +209 -0
  114. package/src/verax/core/perf/perf.report.js +198 -0
  115. package/src/verax/core/pipeline-tracker.js +238 -0
  116. package/src/verax/core/product-definition.js +127 -0
  117. package/src/verax/core/release/provenance.builder.js +271 -0
  118. package/src/verax/core/release/release-report-writer.js +40 -0
  119. package/src/verax/core/release/release.enforcer.js +159 -0
  120. package/src/verax/core/release/reproducibility.check.js +221 -0
  121. package/src/verax/core/release/sbom.builder.js +283 -0
  122. package/src/verax/core/replay-validator.js +4 -4
  123. package/src/verax/core/replay.js +1 -1
  124. package/src/verax/core/report/cross-index.js +192 -0
  125. package/src/verax/core/report/human-summary.js +222 -0
  126. package/src/verax/core/route-intelligence.js +419 -0
  127. package/src/verax/core/security/secrets.scan.js +326 -0
  128. package/src/verax/core/security/security-report.js +50 -0
  129. package/src/verax/core/security/security.enforcer.js +124 -0
  130. package/src/verax/core/security/supplychain.defaults.json +38 -0
  131. package/src/verax/core/security/supplychain.policy.js +326 -0
  132. package/src/verax/core/security/vuln.scan.js +265 -0
  133. package/src/verax/core/silence-impact.js +1 -1
  134. package/src/verax/core/silence-model.js +9 -7
  135. package/src/verax/core/truth/truth.certificate.js +250 -0
  136. package/src/verax/core/ui-feedback-intelligence.js +515 -0
  137. package/src/verax/detect/comparison.js +8 -3
  138. package/src/verax/detect/confidence-engine.js +645 -57
  139. package/src/verax/detect/confidence-helper.js +33 -0
  140. package/src/verax/detect/detection-engine.js +19 -2
  141. package/src/verax/detect/dynamic-route-findings.js +335 -0
  142. package/src/verax/detect/evidence-index.js +15 -65
  143. package/src/verax/detect/expectation-chain-detector.js +417 -0
  144. package/src/verax/detect/expectation-model.js +56 -3
  145. package/src/verax/detect/explanation-helpers.js +1 -1
  146. package/src/verax/detect/finding-detector.js +2 -2
  147. package/src/verax/detect/findings-writer.js +149 -20
  148. package/src/verax/detect/flow-detector.js +4 -4
  149. package/src/verax/detect/index.js +265 -15
  150. package/src/verax/detect/interactive-findings.js +3 -4
  151. package/src/verax/detect/journey-stall-detector.js +558 -0
  152. package/src/verax/detect/route-findings.js +218 -0
  153. package/src/verax/detect/signal-mapper.js +2 -2
  154. package/src/verax/detect/skip-classifier.js +4 -4
  155. package/src/verax/detect/ui-feedback-findings.js +207 -0
  156. package/src/verax/detect/verdict-engine.js +61 -9
  157. package/src/verax/detect/view-switch-correlator.js +242 -0
  158. package/src/verax/flow/flow-engine.js +3 -2
  159. package/src/verax/flow/flow-spec.js +1 -2
  160. package/src/verax/index.js +413 -33
  161. package/src/verax/intel/effect-detector.js +1 -1
  162. package/src/verax/intel/index.js +2 -2
  163. package/src/verax/intel/route-extractor.js +3 -3
  164. package/src/verax/intel/vue-navigation-extractor.js +81 -18
  165. package/src/verax/intel/vue-router-extractor.js +4 -2
  166. package/src/verax/learn/action-contract-extractor.js +684 -66
  167. package/src/verax/learn/ast-contract-extractor.js +53 -1
  168. package/src/verax/learn/index.js +36 -2
  169. package/src/verax/learn/manifest-writer.js +28 -14
  170. package/src/verax/learn/route-extractor.js +1 -1
  171. package/src/verax/learn/route-validator.js +12 -8
  172. package/src/verax/learn/state-extractor.js +1 -1
  173. package/src/verax/learn/static-extractor-navigation.js +1 -1
  174. package/src/verax/learn/static-extractor-validation.js +2 -2
  175. package/src/verax/learn/static-extractor.js +8 -7
  176. package/src/verax/learn/ts-contract-resolver.js +14 -12
  177. package/src/verax/observe/browser.js +22 -3
  178. package/src/verax/observe/console-sensor.js +2 -2
  179. package/src/verax/observe/expectation-executor.js +2 -1
  180. package/src/verax/observe/focus-sensor.js +1 -1
  181. package/src/verax/observe/human-driver.js +29 -10
  182. package/src/verax/observe/index.js +92 -844
  183. package/src/verax/observe/interaction-discovery.js +27 -15
  184. package/src/verax/observe/interaction-runner.js +31 -14
  185. package/src/verax/observe/loading-sensor.js +6 -0
  186. package/src/verax/observe/navigation-sensor.js +1 -1
  187. package/src/verax/observe/observe-context.js +205 -0
  188. package/src/verax/observe/observe-helpers.js +191 -0
  189. package/src/verax/observe/observe-runner.js +226 -0
  190. package/src/verax/observe/observers/budget-observer.js +185 -0
  191. package/src/verax/observe/observers/console-observer.js +102 -0
  192. package/src/verax/observe/observers/coverage-observer.js +107 -0
  193. package/src/verax/observe/observers/interaction-observer.js +471 -0
  194. package/src/verax/observe/observers/navigation-observer.js +132 -0
  195. package/src/verax/observe/observers/network-observer.js +87 -0
  196. package/src/verax/observe/observers/safety-observer.js +82 -0
  197. package/src/verax/observe/observers/ui-feedback-observer.js +99 -0
  198. package/src/verax/observe/settle.js +1 -0
  199. package/src/verax/observe/state-sensor.js +8 -4
  200. package/src/verax/observe/state-ui-sensor.js +7 -1
  201. package/src/verax/observe/traces-writer.js +27 -16
  202. package/src/verax/observe/ui-feedback-detector.js +742 -0
  203. package/src/verax/observe/ui-signal-sensor.js +155 -2
  204. package/src/verax/scan-summary-writer.js +46 -9
  205. package/src/verax/shared/artifact-manager.js +9 -6
  206. package/src/verax/shared/budget-profiles.js +2 -2
  207. package/src/verax/shared/caching.js +1 -1
  208. package/src/verax/shared/config-loader.js +1 -2
  209. package/src/verax/shared/css-spinner-rules.js +204 -0
  210. package/src/verax/shared/dynamic-route-utils.js +12 -6
  211. package/src/verax/shared/retry-policy.js +1 -6
  212. package/src/verax/shared/root-artifacts.js +1 -1
  213. package/src/verax/shared/view-switch-rules.js +208 -0
  214. package/src/verax/shared/zip-artifacts.js +1 -0
  215. package/src/verax/validate/context-validator.js +1 -1
  216. package/src/verax/observe/index.js.backup +0 -1
  217. package/src/verax/validate/context-validator.js.bak +0 -0
@@ -64,12 +64,7 @@ export async function retryOperation(fn, operationName = 'operation', decisionRe
64
64
  // PHASE 6: Record retry decision for determinism tracking
65
65
  if (decisionRecorder && decisionRecorder.record) {
66
66
  const { recordRetryAttempt } = await import('../core/determinism-model.js');
67
- recordRetryAttempt(decisionRecorder, {
68
- attempt: attempt + 1,
69
- errorType: lastError.message,
70
- backoffMs: delayMs,
71
- operationName
72
- });
67
+ recordRetryAttempt(decisionRecorder, operationName, attempt + 1, delayMs, lastError.message);
73
68
  }
74
69
 
75
70
  await new Promise(resolve => setTimeout(resolve, delayMs));
@@ -2,7 +2,7 @@
2
2
  * Root-level artifacts helper
3
3
  * Enforces strict routing of outputs to artifacts/* subdirectories.
4
4
  */
5
- import { resolve, join } from 'path';
5
+ import { resolve } from 'path';
6
6
  import { existsSync, mkdirSync } from 'fs';
7
7
 
8
8
  const BASE = 'artifacts';
@@ -0,0 +1,208 @@
1
+ /**
2
+ * TRUTH BOUNDARY: State-Driven Navigation / View Switch Detection Rules
3
+ *
4
+ * Hard rules encoded as constants and predicates. No prose, only code.
5
+ */
6
+
7
+ /**
8
+ * Detectable view switch function name patterns (strict allowlist)
9
+ * Only literal string/number arguments are accepted.
10
+ */
11
+ export const VIEW_SWITCH_FUNCTION_PATTERNS = {
12
+ // React setState patterns
13
+ react: [
14
+ /^setView$/i,
15
+ /^setPage$/i,
16
+ /^setStep$/i,
17
+ /^setScreen$/i,
18
+ /^setTab$/i,
19
+ /^setModalOpen$/i,
20
+ /^setDrawerOpen$/i,
21
+ /^setPanelOpen$/i,
22
+ /^setActiveTab$/i,
23
+ /^setActiveView$/i,
24
+ /^setCurrentStep$/i,
25
+ /^setCurrentPage$/i,
26
+ /^setCurrentScreen$/i,
27
+ /^setCurrentView$/i,
28
+ /^setShowModal$/i,
29
+ /^setShowDrawer$/i,
30
+ /^setShowPanel$/i,
31
+ /^setIsModalOpen$/i,
32
+ /^setIsDrawerOpen$/i,
33
+ /^setIsPanelOpen$/i
34
+ ],
35
+
36
+ // Redux dispatch action types
37
+ redux: [
38
+ /^NAVIGATE$/i,
39
+ /^SET_VIEW$/i,
40
+ /^SET_STEP$/i,
41
+ /^SET_PAGE$/i,
42
+ /^SET_SCREEN$/i,
43
+ /^SET_TAB$/i,
44
+ /^OPEN_MODAL$/i,
45
+ /^CLOSE_MODAL$/i,
46
+ /^OPEN_DRAWER$/i,
47
+ /^CLOSE_DRAWER$/i,
48
+ /^OPEN_PANEL$/i,
49
+ /^CLOSE_PANEL$/i,
50
+ /^SWITCH_VIEW$/i,
51
+ /^SWITCH_TAB$/i,
52
+ /^SWITCH_STEP$/i
53
+ ],
54
+
55
+ // Generic function call patterns
56
+ generic: [
57
+ /^showModal$/i,
58
+ /^hideModal$/i,
59
+ /^openDrawer$/i,
60
+ /^closeDrawer$/i,
61
+ /^openPanel$/i,
62
+ /^closePanel$/i,
63
+ /^switchView$/i,
64
+ /^switchTab$/i,
65
+ /^switchStep$/i,
66
+ /^navigateTo$/i,
67
+ /^goToView$/i,
68
+ /^goToStep$/i,
69
+ /^goToPage$/i,
70
+ /^goToScreen$/i
71
+ ]
72
+ };
73
+
74
+ /**
75
+ * View switch kinds (categories)
76
+ */
77
+ export const VIEW_SWITCH_KINDS = {
78
+ TAB: 'tab',
79
+ VIEW: 'view',
80
+ MODAL: 'modal',
81
+ DRAWER: 'drawer',
82
+ PANEL: 'panel',
83
+ STEP: 'step',
84
+ SCREEN: 'screen',
85
+ PAGE: 'page'
86
+ };
87
+
88
+ /**
89
+ * Reason codes for truth boundary decisions
90
+ */
91
+ export const VIEW_SWITCH_REASON_CODES = {
92
+ DETECTABLE_LITERAL_ARG: 'DETECTABLE_LITERAL_ARG',
93
+ REJECTED_COMPLEX_EXPRESSION: 'REJECTED_COMPLEX_EXPRESSION',
94
+ REJECTED_DYNAMIC_VALUE: 'REJECTED_DYNAMIC_VALUE',
95
+ REJECTED_MEMBER_EXPRESSION: 'REJECTED_MEMBER_EXPRESSION',
96
+ REJECTED_FUNCTION_CALL: 'REJECTED_FUNCTION_CALL',
97
+ REJECTED_NOT_IN_ALLOWLIST: 'REJECTED_NOT_IN_ALLOWLIST',
98
+ ACCEPTED_STRING_LITERAL: 'ACCEPTED_STRING_LITERAL',
99
+ ACCEPTED_NUMBER_LITERAL: 'ACCEPTED_NUMBER_LITERAL'
100
+ };
101
+
102
+ /**
103
+ * Check if a function name matches view switch patterns
104
+ * @param {string} functionName - Function name to check
105
+ * @returns {Object|null} - { kind, pattern } or null
106
+ */
107
+ export function isViewSwitchFunction(functionName) {
108
+ if (!functionName || typeof functionName !== 'string') return null;
109
+
110
+ // Check React patterns
111
+ for (const pattern of VIEW_SWITCH_FUNCTION_PATTERNS.react) {
112
+ if (pattern.test(functionName)) {
113
+ const kind = inferViewSwitchKind(functionName);
114
+ return { kind, pattern: 'react', functionName };
115
+ }
116
+ }
117
+
118
+ // Check Redux patterns
119
+ for (const pattern of VIEW_SWITCH_FUNCTION_PATTERNS.redux) {
120
+ if (pattern.test(functionName)) {
121
+ const kind = inferViewSwitchKind(functionName);
122
+ return { kind, pattern: 'redux', functionName };
123
+ }
124
+ }
125
+
126
+ // Check generic patterns
127
+ for (const pattern of VIEW_SWITCH_FUNCTION_PATTERNS.generic) {
128
+ if (pattern.test(functionName)) {
129
+ const kind = inferViewSwitchKind(functionName);
130
+ return { kind, pattern: 'generic', functionName };
131
+ }
132
+ }
133
+
134
+ return null;
135
+ }
136
+
137
+ /**
138
+ * Infer view switch kind from function name
139
+ * @param {string} functionName - Function name
140
+ * @returns {string} - View switch kind
141
+ */
142
+ function inferViewSwitchKind(functionName) {
143
+ const lower = functionName.toLowerCase();
144
+
145
+ if (lower.includes('tab')) return VIEW_SWITCH_KINDS.TAB;
146
+ if (lower.includes('modal')) return VIEW_SWITCH_KINDS.MODAL;
147
+ if (lower.includes('drawer')) return VIEW_SWITCH_KINDS.DRAWER;
148
+ if (lower.includes('panel')) return VIEW_SWITCH_KINDS.PANEL;
149
+ if (lower.includes('step')) return VIEW_SWITCH_KINDS.STEP;
150
+ if (lower.includes('screen')) return VIEW_SWITCH_KINDS.SCREEN;
151
+ if (lower.includes('page')) return VIEW_SWITCH_KINDS.PAGE;
152
+ if (lower.includes('view')) return VIEW_SWITCH_KINDS.VIEW;
153
+
154
+ return VIEW_SWITCH_KINDS.VIEW; // Default
155
+ }
156
+
157
+ /**
158
+ * Check if an AST node is a detectable literal argument
159
+ * TRUTH BOUNDARY: Only StringLiteral and NumericLiteral are accepted
160
+ * @param {Object} node - AST node
161
+ * @returns {Object|null} - { value, reasonCode } or null
162
+ */
163
+ export function isDetectableLiteralArg(node) {
164
+ if (!node) return null;
165
+
166
+ // String literal: setView('settings')
167
+ if (node.type === 'StringLiteral') {
168
+ return {
169
+ value: node.value,
170
+ reasonCode: VIEW_SWITCH_REASON_CODES.ACCEPTED_STRING_LITERAL
171
+ };
172
+ }
173
+
174
+ // Number literal: setStep(2)
175
+ if (node.type === 'NumericLiteral') {
176
+ return {
177
+ value: String(node.value),
178
+ reasonCode: VIEW_SWITCH_REASON_CODES.ACCEPTED_NUMBER_LITERAL
179
+ };
180
+ }
181
+
182
+ // Template literal without interpolation: setView(`settings`)
183
+ if (node.type === 'TemplateLiteral' && node.expressions.length === 0) {
184
+ const value = node.quasis[0]?.value?.cooked;
185
+ if (value) {
186
+ return {
187
+ value,
188
+ reasonCode: VIEW_SWITCH_REASON_CODES.ACCEPTED_STRING_LITERAL
189
+ };
190
+ }
191
+ }
192
+
193
+ // REJECTED: Complex expressions
194
+ if (node.type === 'CallExpression') {
195
+ return { reasonCode: VIEW_SWITCH_REASON_CODES.REJECTED_FUNCTION_CALL };
196
+ }
197
+
198
+ if (node.type === 'MemberExpression') {
199
+ return { reasonCode: VIEW_SWITCH_REASON_CODES.REJECTED_MEMBER_EXPRESSION };
200
+ }
201
+
202
+ if (node.type === 'Identifier') {
203
+ return { reasonCode: VIEW_SWITCH_REASON_CODES.REJECTED_DYNAMIC_VALUE };
204
+ }
205
+
206
+ return { reasonCode: VIEW_SWITCH_REASON_CODES.REJECTED_COMPLEX_EXPRESSION };
207
+ }
208
+
@@ -13,6 +13,7 @@ import { mkdirSync } from 'fs';
13
13
  let archiver;
14
14
  async function getArchiver() {
15
15
  if (!archiver) {
16
+ // @ts-expect-error - archiver is an optional dev dependency, types may not be available
16
17
  archiver = (await import('archiver')).default;
17
18
  }
18
19
  return archiver;
@@ -112,7 +112,7 @@ export async function validateContext(manifest, baseUrl, forced = false) {
112
112
 
113
113
  try {
114
114
  // Fetch homepage and parse internal links
115
- const response = await page.goto(baseUrl, {
115
+ await page.goto(baseUrl, {
116
116
  waitUntil: 'domcontentloaded',
117
117
  timeout: CONTEXT_CHECK_TIMEOUT_MS
118
118
  });
@@ -1 +0,0 @@
1
- This is a backup of the broken version
File without changes