flakelab 0.1.0 → 0.1.2

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 (322) hide show
  1. package/README.md +225 -38
  2. package/dist/analysis/blob-report.d.ts +15 -0
  3. package/dist/analysis/blob-report.js +137 -0
  4. package/dist/analysis/blob-report.js.map +1 -0
  5. package/dist/analysis/cli.d.ts +7 -0
  6. package/dist/analysis/cli.js +28 -0
  7. package/dist/analysis/cli.js.map +1 -0
  8. package/dist/analysis/schema.d.ts +175 -0
  9. package/dist/analysis/schema.js +34 -0
  10. package/dist/analysis/schema.js.map +1 -0
  11. package/dist/analysis/zip-archive.d.ts +6 -0
  12. package/dist/analysis/zip-archive.js +193 -0
  13. package/dist/analysis/zip-archive.js.map +1 -0
  14. package/dist/artifacts/paths.d.ts +3 -0
  15. package/dist/artifacts/paths.js +34 -0
  16. package/dist/artifacts/paths.js.map +1 -0
  17. package/dist/artifacts/retention.d.ts +1 -0
  18. package/dist/artifacts/retention.js +80 -0
  19. package/dist/artifacts/retention.js.map +1 -0
  20. package/dist/bisect/engine.js +0 -1
  21. package/dist/bisect/engine.js.map +1 -1
  22. package/dist/bisect/schema.d.ts +5 -6
  23. package/dist/bisect/schema.js +1 -2
  24. package/dist/bisect/schema.js.map +1 -1
  25. package/dist/bisect/solari-evaluator.js +9 -1
  26. package/dist/bisect/solari-evaluator.js.map +1 -1
  27. package/dist/ci/job-summary.d.ts +2 -0
  28. package/dist/ci/job-summary.js +120 -2
  29. package/dist/ci/job-summary.js.map +1 -1
  30. package/dist/ci/select-command.js +1 -1
  31. package/dist/ci/select-command.js.map +1 -1
  32. package/dist/ci/summary-command.js +12 -7
  33. package/dist/ci/summary-command.js.map +1 -1
  34. package/dist/cli-arguments.d.ts +44 -0
  35. package/dist/cli-arguments.js +356 -0
  36. package/dist/cli-arguments.js.map +1 -0
  37. package/dist/cli-command-help.d.ts +11 -0
  38. package/dist/cli-command-help.js +211 -0
  39. package/dist/cli-command-help.js.map +1 -0
  40. package/dist/cli-help.d.ts +5 -2
  41. package/dist/cli-help.js +122 -45
  42. package/dist/cli-help.js.map +1 -1
  43. package/dist/cli-option-definitions.d.ts +202 -0
  44. package/dist/cli-option-definitions.js +59 -0
  45. package/dist/cli-option-definitions.js.map +1 -0
  46. package/dist/cli.js +100 -100
  47. package/dist/cli.js.map +1 -1
  48. package/dist/commands/analyze-summary.d.ts +5 -0
  49. package/dist/commands/analyze-summary.js +89 -0
  50. package/dist/commands/analyze-summary.js.map +1 -0
  51. package/dist/commands/analyze.d.ts +6 -0
  52. package/dist/commands/analyze.js +128 -0
  53. package/dist/commands/analyze.js.map +1 -0
  54. package/dist/commands/bisect.d.ts +2 -2
  55. package/dist/commands/bisect.js +32 -3
  56. package/dist/commands/bisect.js.map +1 -1
  57. package/dist/commands/diagnose.d.ts +3 -2
  58. package/dist/commands/diagnose.js +355 -23
  59. package/dist/commands/diagnose.js.map +1 -1
  60. package/dist/commands/discover.d.ts +18 -2
  61. package/dist/commands/discover.js +215 -25
  62. package/dist/commands/discover.js.map +1 -1
  63. package/dist/commands/doctor.d.ts +2 -0
  64. package/dist/commands/doctor.js +66 -25
  65. package/dist/commands/doctor.js.map +1 -1
  66. package/dist/commands/investigate.d.ts +3 -2
  67. package/dist/commands/investigate.js +22 -3
  68. package/dist/commands/investigate.js.map +1 -1
  69. package/dist/commands/options.d.ts +123 -16
  70. package/dist/commands/options.js +24 -2
  71. package/dist/commands/options.js.map +1 -1
  72. package/dist/commands/prove.d.ts +2 -2
  73. package/dist/commands/prove.js +38 -1
  74. package/dist/commands/prove.js.map +1 -1
  75. package/dist/commands/repair.d.ts +8 -2
  76. package/dist/commands/repair.js +32 -9
  77. package/dist/commands/repair.js.map +1 -1
  78. package/dist/commands/replay.d.ts +2 -2
  79. package/dist/commands/replay.js +15 -2
  80. package/dist/commands/replay.js.map +1 -1
  81. package/dist/commands/report.d.ts +2 -2
  82. package/dist/commands/report.js +35 -10
  83. package/dist/commands/report.js.map +1 -1
  84. package/dist/commands/scan-summary.d.ts +7 -0
  85. package/dist/commands/scan-summary.js +175 -0
  86. package/dist/commands/scan-summary.js.map +1 -0
  87. package/dist/commands/scan.d.ts +9 -12
  88. package/dist/commands/scan.js +66 -62
  89. package/dist/commands/scan.js.map +1 -1
  90. package/dist/core/plan.js +1 -1
  91. package/dist/core/plan.js.map +1 -1
  92. package/dist/diagnosis/checkpoint.d.ts +6 -0
  93. package/dist/diagnosis/checkpoint.js +46 -0
  94. package/dist/diagnosis/checkpoint.js.map +1 -0
  95. package/dist/diagnosis/cli.d.ts +7 -0
  96. package/dist/diagnosis/cli.js +84 -0
  97. package/dist/diagnosis/cli.js.map +1 -0
  98. package/dist/diagnosis/recommendation.d.ts +13 -0
  99. package/dist/diagnosis/recommendation.js +95 -0
  100. package/dist/diagnosis/recommendation.js.map +1 -0
  101. package/dist/diagnosis/run-state.d.ts +52 -0
  102. package/dist/diagnosis/run-state.js +173 -0
  103. package/dist/diagnosis/run-state.js.map +1 -0
  104. package/dist/diagnosis/schema.d.ts +207 -0
  105. package/dist/diagnosis/schema.js +108 -0
  106. package/dist/diagnosis/schema.js.map +1 -0
  107. package/dist/diagnosis/solari-handoff.d.ts +9 -0
  108. package/dist/diagnosis/solari-handoff.js +40 -0
  109. package/dist/diagnosis/solari-handoff.js.map +1 -0
  110. package/dist/diagnosis/summary.d.ts +3 -0
  111. package/dist/diagnosis/summary.js +115 -0
  112. package/dist/diagnosis/summary.js.map +1 -0
  113. package/dist/discovery/auth-cookie.d.ts +19 -0
  114. package/dist/discovery/auth-cookie.js +26 -0
  115. package/dist/discovery/auth-cookie.js.map +1 -0
  116. package/dist/discovery/evaluate.d.ts +35 -2
  117. package/dist/discovery/evaluate.js +136 -30
  118. package/dist/discovery/evaluate.js.map +1 -1
  119. package/dist/discovery/event-loop.d.ts +25 -0
  120. package/dist/discovery/event-loop.js +84 -0
  121. package/dist/discovery/event-loop.js.map +1 -0
  122. package/dist/discovery/minimize.d.ts +61 -1
  123. package/dist/discovery/minimize.js +179 -7
  124. package/dist/discovery/minimize.js.map +1 -1
  125. package/dist/discovery/resource-loading.d.ts +25 -0
  126. package/dist/discovery/resource-loading.js +84 -0
  127. package/dist/discovery/resource-loading.js.map +1 -0
  128. package/dist/discovery/runner-environment.d.ts +26 -0
  129. package/dist/discovery/runner-environment.js +68 -0
  130. package/dist/discovery/runner-environment.js.map +1 -0
  131. package/dist/discovery/startup-event.d.ts +25 -0
  132. package/dist/discovery/startup-event.js +84 -0
  133. package/dist/discovery/startup-event.js.map +1 -0
  134. package/dist/discovery/storage-state.d.ts +26 -0
  135. package/dist/discovery/storage-state.js +86 -0
  136. package/dist/discovery/storage-state.js.map +1 -0
  137. package/dist/discovery/temporal-environment.d.ts +31 -0
  138. package/dist/discovery/temporal-environment.js +43 -0
  139. package/dist/discovery/temporal-environment.js.map +1 -0
  140. package/dist/discovery/visual-environment.d.ts +28 -0
  141. package/dist/discovery/visual-environment.js +42 -0
  142. package/dist/discovery/visual-environment.js.map +1 -0
  143. package/dist/domain/schema.d.ts +840 -20
  144. package/dist/domain/schema.js +216 -6
  145. package/dist/domain/schema.js.map +1 -1
  146. package/dist/faults/browser-context.d.ts +16 -0
  147. package/dist/faults/browser-context.js +60 -0
  148. package/dist/faults/browser-context.js.map +1 -0
  149. package/dist/faults/cookie-header.d.ts +5 -0
  150. package/dist/faults/cookie-header.js +25 -0
  151. package/dist/faults/cookie-header.js.map +1 -0
  152. package/dist/faults/document-bootstrap.d.ts +5 -0
  153. package/dist/faults/document-bootstrap.js +141 -0
  154. package/dist/faults/document-bootstrap.js.map +1 -0
  155. package/dist/faults/install.d.ts +1 -1
  156. package/dist/faults/install.js +199 -6
  157. package/dist/faults/install.js.map +1 -1
  158. package/dist/faults/pattern.d.ts +1 -0
  159. package/dist/faults/pattern.js +24 -0
  160. package/dist/faults/pattern.js.map +1 -0
  161. package/dist/investigator/agent.js +39 -17
  162. package/dist/investigator/agent.js.map +1 -1
  163. package/dist/investigator/ledger.d.ts +1 -1
  164. package/dist/investigator/ledger.js +2 -2
  165. package/dist/investigator/ledger.js.map +1 -1
  166. package/dist/investigator/safe-source.d.ts +1 -0
  167. package/dist/investigator/safe-source.js +12 -3
  168. package/dist/investigator/safe-source.js.map +1 -1
  169. package/dist/investigator/schema.d.ts +293 -2
  170. package/dist/investigator/schema.js +100 -2
  171. package/dist/investigator/schema.js.map +1 -1
  172. package/dist/proof/cli.d.ts +7 -0
  173. package/dist/proof/cli.js +108 -0
  174. package/dist/proof/cli.js.map +1 -0
  175. package/dist/proof/preflight.d.ts +4 -0
  176. package/dist/proof/preflight.js +9 -0
  177. package/dist/proof/preflight.js.map +1 -0
  178. package/dist/repair/generator.d.ts +12 -1
  179. package/dist/repair/generator.js +30 -6
  180. package/dist/repair/generator.js.map +1 -1
  181. package/dist/repair/remote-proof-runner.js +6 -10
  182. package/dist/repair/remote-proof-runner.js.map +1 -1
  183. package/dist/repair/schema.d.ts +77 -2
  184. package/dist/repair/schema.js +23 -2
  185. package/dist/repair/schema.js.map +1 -1
  186. package/dist/repair/solari-validator.d.ts +2 -0
  187. package/dist/repair/solari-validator.js +4 -6
  188. package/dist/repair/solari-validator.js.map +1 -1
  189. package/dist/repair/summary.d.ts +10 -0
  190. package/dist/repair/summary.js +58 -0
  191. package/dist/repair/summary.js.map +1 -0
  192. package/dist/repair/validator.d.ts +1 -0
  193. package/dist/repair/validator.js +53 -12
  194. package/dist/repair/validator.js.map +1 -1
  195. package/dist/report/bundle.js +16 -37
  196. package/dist/report/bundle.js.map +1 -1
  197. package/dist/report/model.js +131 -12
  198. package/dist/report/model.js.map +1 -1
  199. package/dist/report/open.d.ts +9 -0
  200. package/dist/report/open.js +23 -0
  201. package/dist/report/open.js.map +1 -1
  202. package/dist/report/report-client.css +2 -0
  203. package/dist/report/report-client.js +58 -0
  204. package/dist/report/schema.d.ts +115 -5
  205. package/dist/report/schema.js +24 -5
  206. package/dist/report/schema.js.map +1 -1
  207. package/dist/reproducer/schema.d.ts +89 -4
  208. package/dist/reproducer/schema.js +3 -4
  209. package/dist/reproducer/schema.js.map +1 -1
  210. package/dist/runner/execution-fault.d.ts +10 -0
  211. package/dist/runner/execution-fault.js +24 -0
  212. package/dist/runner/execution-fault.js.map +1 -0
  213. package/dist/runner/fault-proxy.d.ts +7 -0
  214. package/dist/runner/fault-proxy.js +366 -0
  215. package/dist/runner/fault-proxy.js.map +1 -0
  216. package/dist/runner/local.js +2 -2
  217. package/dist/runner/local.js.map +1 -1
  218. package/dist/runner/native-scan.d.ts +25 -0
  219. package/dist/runner/native-scan.js +306 -0
  220. package/dist/runner/native-scan.js.map +1 -0
  221. package/dist/runner/playwright-executor.d.ts +3 -0
  222. package/dist/runner/playwright-executor.js +125 -66
  223. package/dist/runner/playwright-executor.js.map +1 -1
  224. package/dist/runner/process-tree.d.ts +7 -0
  225. package/dist/runner/process-tree.js +62 -0
  226. package/dist/runner/process-tree.js.map +1 -0
  227. package/dist/runner/project-bridge.d.ts +7 -0
  228. package/dist/runner/project-bridge.js +83 -0
  229. package/dist/runner/project-bridge.js.map +1 -0
  230. package/dist/runner/trial-reporter.d.ts +7 -0
  231. package/dist/runner/trial-reporter.js +47 -0
  232. package/dist/runner/trial-reporter.js.map +1 -0
  233. package/dist/scan/failure-clusters.d.ts +24 -0
  234. package/dist/scan/failure-clusters.js +74 -0
  235. package/dist/scan/failure-clusters.js.map +1 -0
  236. package/dist/scan/schema.d.ts +170 -0
  237. package/dist/scan/schema.js +71 -0
  238. package/dist/scan/schema.js.map +1 -0
  239. package/dist/solari/executor.d.ts +5 -1
  240. package/dist/solari/executor.js +25 -17
  241. package/dist/solari/executor.js.map +1 -1
  242. package/dist/solari/run-demo.d.ts +13 -1
  243. package/dist/solari/run-demo.js +35 -16
  244. package/dist/solari/run-demo.js.map +1 -1
  245. package/dist/solari/usage.d.ts +8 -2
  246. package/dist/solari/usage.js +14 -4
  247. package/dist/solari/usage.js.map +1 -1
  248. package/dist/ui/boundary.d.ts +17 -0
  249. package/dist/ui/boundary.js +18 -0
  250. package/dist/ui/boundary.js.map +1 -0
  251. package/dist/ui/console.d.ts +4 -0
  252. package/dist/ui/console.js +11 -0
  253. package/dist/ui/console.js.map +1 -0
  254. package/dist/ui/document.d.ts +40 -0
  255. package/dist/ui/document.js +120 -0
  256. package/dist/ui/document.js.map +1 -0
  257. package/dist/ui/format.d.ts +8 -0
  258. package/dist/ui/format.js +32 -0
  259. package/dist/ui/format.js.map +1 -0
  260. package/dist/ui/progress.d.ts +17 -1
  261. package/dist/ui/progress.js +51 -8
  262. package/dist/ui/progress.js.map +1 -1
  263. package/dist/ui/status.d.ts +7 -0
  264. package/dist/ui/status.js +36 -0
  265. package/dist/ui/status.js.map +1 -0
  266. package/dist/ui/style.d.ts +8 -0
  267. package/dist/ui/style.js +22 -0
  268. package/dist/ui/style.js.map +1 -0
  269. package/dist/ui/text.d.ts +17 -0
  270. package/dist/ui/text.js +123 -0
  271. package/dist/ui/text.js.map +1 -0
  272. package/dist/ui/theme.d.ts +23 -0
  273. package/dist/ui/theme.js +77 -0
  274. package/dist/ui/theme.js.map +1 -0
  275. package/dist/ui/trial-progress.d.ts +13 -0
  276. package/dist/ui/trial-progress.js +42 -0
  277. package/dist/ui/trial-progress.js.map +1 -0
  278. package/package.json +14 -19
  279. package/dist/faults/network-delay.d.ts +0 -5
  280. package/dist/faults/network-delay.js +0 -34
  281. package/dist/faults/network-delay.js.map +0 -1
  282. package/dist/faults/request-failure.d.ts +0 -5
  283. package/dist/faults/request-failure.js +0 -24
  284. package/dist/faults/request-failure.js.map +0 -1
  285. package/dist/playwright.d.ts +0 -3
  286. package/dist/playwright.js +0 -21
  287. package/dist/playwright.js.map +0 -1
  288. package/dist/report/browser-entry.d.ts +0 -2
  289. package/dist/report/browser-entry.js +0 -15
  290. package/dist/report/browser-entry.js.map +0 -1
  291. package/dist/report/components/artifacts.d.ts +0 -4
  292. package/dist/report/components/artifacts.js +0 -6
  293. package/dist/report/components/artifacts.js.map +0 -1
  294. package/dist/report/components/experiments.d.ts +0 -4
  295. package/dist/report/components/experiments.js +0 -7
  296. package/dist/report/components/experiments.js.map +0 -1
  297. package/dist/report/components/hypotheses.d.ts +0 -4
  298. package/dist/report/components/hypotheses.js +0 -26
  299. package/dist/report/components/hypotheses.js.map +0 -1
  300. package/dist/report/components/indicators.d.ts +0 -32
  301. package/dist/report/components/indicators.js +0 -42
  302. package/dist/report/components/indicators.js.map +0 -1
  303. package/dist/report/components/layout.d.ts +0 -29
  304. package/dist/report/components/layout.js +0 -20
  305. package/dist/report/components/layout.js.map +0 -1
  306. package/dist/report/components/proof.d.ts +0 -4
  307. package/dist/report/components/proof.js +0 -34
  308. package/dist/report/components/proof.js.map +0 -1
  309. package/dist/report/components/reproduction.d.ts +0 -4
  310. package/dist/report/components/reproduction.js +0 -19
  311. package/dist/report/components/reproduction.js.map +0 -1
  312. package/dist/report/components/summary.d.ts +0 -4
  313. package/dist/report/components/summary.js +0 -12
  314. package/dist/report/components/summary.js.map +0 -1
  315. package/dist/report/components/verdict.d.ts +0 -4
  316. package/dist/report/components/verdict.js +0 -27
  317. package/dist/report/components/verdict.js.map +0 -1
  318. package/dist/report/report-app.d.ts +0 -6
  319. package/dist/report/report-app.js +0 -16
  320. package/dist/report/report-app.js.map +0 -1
  321. package/dist/report/report-details.css +0 -182
  322. package/dist/report/report.css +0 -404
@@ -1,24 +0,0 @@
1
- import { requestFailureFaultSchema } from "../domain/schema.js";
2
- export async function installRequestFailure(page, fault) {
3
- const validatedFault = requestFailureFaultSchema.parse(fault);
4
- const handler = async (route) => {
5
- await route.fulfill({
6
- status: validatedFault.statusCode,
7
- contentType: "application/json",
8
- body: '{"error":"flakelab-injected-failure"}',
9
- });
10
- };
11
- await page.route(validatedFault.pattern, handler);
12
- return async () => page.unroute(validatedFault.pattern, handler);
13
- }
14
- export function readRequestFailureFromEnvironment() {
15
- if (process.env.FLAKELAB_FAULT_KIND !== "request-failure") {
16
- return undefined;
17
- }
18
- return requestFailureFaultSchema.parse({
19
- kind: "request-failure",
20
- pattern: process.env.FLAKELAB_NETWORK_PATTERN,
21
- statusCode: Number(process.env.FLAKELAB_REQUEST_FAILURE_STATUS ?? "503"),
22
- });
23
- }
24
- //# sourceMappingURL=request-failure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-failure.js","sourceRoot":"","sources":["../../src/faults/request-failure.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAI/D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAU,EACV,KAA0B;IAE1B,MAAM,cAAc,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,KAAK,EAAE,KAAY,EAAiB,EAAE;QACpD,MAAM,KAAK,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,cAAc,CAAC,UAAU;YACjC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,uCAAuC;SAC9C,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACjD,OAAO,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,iBAAiB,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,yBAAyB,CAAC,KAAK,CAAC;QACrC,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QAC7C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,KAAK,CAAC;KACzE,CAAC,CAAA;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import { expect } from "@playwright/test";
2
- export declare const test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
3
- export { expect };
@@ -1,21 +0,0 @@
1
- import { expect, test as base } from "@playwright/test";
2
- import { installFault } from "./faults/install.js";
3
- import { readNetworkDelayFromEnvironment } from "./faults/network-delay.js";
4
- import { readRequestFailureFromEnvironment } from "./faults/request-failure.js";
5
- function readFaultFromEnvironment() {
6
- return readNetworkDelayFromEnvironment() ?? readRequestFailureFromEnvironment();
7
- }
8
- export const test = base.extend({
9
- page: async ({ page }, use) => {
10
- const fault = readFaultFromEnvironment();
11
- const removeFault = fault ? await installFault(page, fault) : undefined;
12
- try {
13
- await use(page);
14
- }
15
- finally {
16
- await removeFault?.();
17
- }
18
- },
19
- });
20
- export { expect };
21
- //# sourceMappingURL=playwright.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playwright.js","sourceRoot":"","sources":["../src/playwright.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAA;AAE/E,SAAS,wBAAwB;IAC/B,OAAO,+BAA+B,EAAE,IAAI,iCAAiC,EAAE,CAAA;AACjF,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,wBAAwB,EAAE,CAAA;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACvE,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC;gBAAS,CAAC;YACT,MAAM,WAAW,EAAE,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;CACF,CAAC,CAAA;AAEF,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -1,2 +0,0 @@
1
- import "./report.css";
2
- import "./report-details.css";
@@ -1,15 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { StrictMode } from "react";
3
- import { createRoot } from "react-dom/client";
4
- import { ReportApp } from "./report-app.js";
5
- import "./report.css";
6
- import "./report-details.css";
7
- import { evidenceReportSchema } from "./schema.js";
8
- const dataElement = document.querySelector("#flakelab-report");
9
- const rootElement = document.querySelector("#root");
10
- if (!dataElement?.textContent || !rootElement) {
11
- throw new Error("FlakeLab report payload is missing");
12
- }
13
- const report = evidenceReportSchema.parse(JSON.parse(dataElement.textContent));
14
- createRoot(rootElement).render(_jsx(StrictMode, { children: _jsx(ReportApp, { report: report }) }));
15
- //# sourceMappingURL=browser-entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-entry.js","sourceRoot":"","sources":["../../src/report/browser-entry.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,cAAc,CAAA;AACrB,OAAO,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAoB,kBAAkB,CAAC,CAAA;AACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAc,OAAO,CAAC,CAAA;AAChE,IAAI,CAAC,WAAW,EAAE,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;AACvD,CAAC;AACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAA;AAC9E,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAC,UAAU,cAAC,KAAC,SAAS,IAAC,MAAM,EAAE,MAAM,GAAI,GAAa,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { EvidenceReport } from "../schema.js";
2
- export declare function ArtifactSection({ report }: Readonly<{
3
- report: EvidenceReport;
4
- }>): React.JSX.Element;
@@ -1,6 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Section } from "./layout.js";
3
- export function ArtifactSection({ report }) {
4
- return _jsxs(Section, { id: "artifacts", meta: `${report.artifacts.length} files`, ordinal: "07", title: "Reproducible artifacts", children: [_jsx("p", { className: "lede", children: "Paths are relative to the project root. They open only when this report is read alongside the run that produced it; nothing here is fetched over the network." }), _jsx("ul", { className: "artifacts", children: report.artifacts.map((artifact) => _jsx("li", { children: _jsxs("a", { className: "artifact", href: artifact.path, children: [_jsx("span", { className: "artifact-label", children: artifact.label }), _jsx("span", { className: "artifact-path", children: artifact.path })] }) }, artifact.label)) })] });
5
- }
6
- //# sourceMappingURL=artifacts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/report/components/artifacts.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAEtC;IACA,OAAO,MAAC,OAAO,IACb,EAAE,EAAC,WAAW,EACd,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,QAAQ,EACxC,OAAO,EAAC,IAAI,EACZ,KAAK,EAAC,wBAAwB,aAE9B,YAAG,SAAS,EAAC,MAAM,8KAGf,EACJ,aAAI,SAAS,EAAC,WAAW,YACtB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,uBAClC,aAAG,SAAS,EAAC,UAAU,EAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,aACzC,eAAM,SAAS,EAAC,gBAAgB,YAAE,QAAQ,CAAC,KAAK,GAAQ,EACxD,eAAM,SAAS,EAAC,eAAe,YAAE,QAAQ,CAAC,IAAI,GAAQ,IACpD,IAJuC,QAAQ,CAAC,KAAK,CAKtD,CAAC,GACH,IACG,CAAA;AACZ,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { EvidenceReport } from "../schema.js";
2
- export declare function ExperimentSection({ report }: Readonly<{
3
- report: EvidenceReport;
4
- }>): React.JSX.Element;
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { percent, RateCell, TrialCounts } from "./indicators.js";
3
- import { Section, TableScroll } from "./layout.js";
4
- export function ExperimentSection({ report }) {
5
- return _jsxs(Section, { id: "experiments", meta: `${report.experiments.length} interventions`, ordinal: "04", title: "Experiment record", children: [_jsx("p", { className: "table-note", children: "Controlled interventions in execution order. Floor is the 80% lower confidence bound on the observed failure rate." }), _jsx(TableScroll, { label: "Experiment record", children: _jsxs("table", { className: "grid", children: [_jsx("caption", { className: "sr-only", children: "Experiment record" }), _jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: "ID" }), _jsx("th", { scope: "col", children: "Tests" }), _jsx("th", { scope: "col", children: "Condition" }), _jsx("th", { className: "num", scope: "col", children: "Trials" }), _jsx("th", { className: "num", scope: "col", children: "Failure rate" }), _jsx("th", { className: "num", scope: "col", children: "Floor" })] }) }), _jsx("tbody", { children: report.experiments.map((experiment) => _jsxs("tr", { id: `exp-${experiment.id}`, children: [_jsx("th", { className: "mono id-cell", scope: "row", children: experiment.id }), _jsx("td", { className: "mono", children: experiment.hypothesisId }), _jsx("td", { children: experiment.condition }), _jsx("td", { className: "num", children: _jsx(TrialCounts, { result: experiment.result }) }), _jsx("td", { className: "num", children: _jsx(RateCell, { rate: experiment.result.failureRate }) }), _jsx("td", { className: "num mono", children: percent(experiment.result.lowerBound80) })] }, experiment.id)) })] }) })] });
6
- }
7
- //# sourceMappingURL=experiments.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"experiments.js","sourceRoot":"","sources":["../../../src/report/components/experiments.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAExC;IACA,OAAO,MAAC,OAAO,IACb,EAAE,EAAC,aAAa,EAChB,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,gBAAgB,EAClD,OAAO,EAAC,IAAI,EACZ,KAAK,EAAC,mBAAmB,aAEzB,YAAG,SAAS,EAAC,YAAY,mIAGrB,EACJ,KAAC,WAAW,IAAC,KAAK,EAAC,mBAAmB,YACpC,iBAAO,SAAS,EAAC,MAAM,aACrB,kBAAS,SAAS,EAAC,SAAS,kCAA4B,EACxD,0BACE,yBACE,aAAI,KAAK,EAAC,KAAK,mBAAQ,EACvB,aAAI,KAAK,EAAC,KAAK,sBAAW,EAC1B,aAAI,KAAK,EAAC,KAAK,0BAAe,EAC9B,aAAI,SAAS,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,uBAAY,EAC3C,aAAI,SAAS,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,6BAAkB,EACjD,aAAI,SAAS,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,sBAAW,IACvC,GACC,EACR,0BACG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,cAAI,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,aACpE,aAAI,SAAS,EAAC,cAAc,EAAC,KAAK,EAAC,KAAK,YAAE,UAAU,CAAC,EAAE,GAAM,EAC7D,aAAI,SAAS,EAAC,MAAM,YAAE,UAAU,CAAC,YAAY,GAAM,EACnD,uBAAK,UAAU,CAAC,SAAS,GAAM,EAC/B,aAAI,SAAS,EAAC,KAAK,YAAC,KAAC,WAAW,IAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAI,GAAK,EACnE,aAAI,SAAS,EAAC,KAAK,YAAC,KAAC,QAAQ,IAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,GAAI,GAAK,EAC1E,aAAI,SAAS,EAAC,UAAU,YAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAM,KANI,UAAU,CAAC,EAAE,CAOrF,CAAC,GACA,IACF,GACI,IACN,CAAA;AACZ,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { EvidenceReport } from "../schema.js";
2
- export declare function HypothesisSection({ report }: Readonly<{
3
- report: EvidenceReport;
4
- }>): React.JSX.Element;
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Section } from "./layout.js";
3
- const GROUPS = [
4
- { heading: "Confirmed", status: "confirmed" },
5
- { heading: "Still proposed", status: "proposed" },
6
- { heading: "Rejected", status: "rejected" },
7
- ];
8
- function EvidenceRefs({ hypothesis, known }) {
9
- return _jsxs("p", { className: "evidence-refs", children: [_jsx("span", { className: "evidence-label", children: "Evidence" }), hypothesis.evidenceExperimentIds.map((id) => known.has(id)
10
- ? _jsx("a", { className: "ref", href: `#exp-${encodeURIComponent(id)}`, children: id }, id)
11
- : _jsx("span", { className: "ref ref-missing", children: id }, id))] });
12
- }
13
- function HypothesisEntry({ hypothesis, known }) {
14
- return _jsxs("article", { className: `hypothesis hypothesis-${hypothesis.status}`, children: [_jsxs("h4", { className: "hypothesis-head", children: [_jsx("span", { className: "hypothesis-id", children: hypothesis.id }), _jsx("span", { className: "hypothesis-statement", children: hypothesis.statement })] }), _jsx("p", { className: "hypothesis-explanation", children: hypothesis.explanation }), _jsx(EvidenceRefs, { hypothesis: hypothesis, known: known })] });
15
- }
16
- export function HypothesisSection({ report }) {
17
- const known = new Set(report.experiments.map((experiment) => experiment.id));
18
- const groups = GROUPS
19
- .map((group) => ({
20
- ...group,
21
- members: report.hypotheses.filter((entry) => entry.status === group.status),
22
- }))
23
- .filter((group) => group.members.length > 0);
24
- return _jsx(Section, { id: "hypotheses", meta: `${report.hypotheses.length} explanations`, ordinal: "05", title: "Competing hypotheses", children: groups.map((group) => _jsxs("div", { className: `group group-${group.status}`, children: [_jsxs("h3", { className: "group-title", children: [group.heading, _jsx("span", { className: "group-count", children: group.members.length })] }), group.members.map((hypothesis) => _jsx(HypothesisEntry, { hypothesis: hypothesis, known: known }, hypothesis.id))] }, group.status)) });
25
- }
26
- //# sourceMappingURL=hypotheses.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hypotheses.js","sourceRoot":"","sources":["../../../src/report/components/hypotheses.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,MAAM,MAAM,GAAG;IACb,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE;IAC7C,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE;IACjD,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;CACnC,CAAA;AAEV,SAAS,YAAY,CAAC,EAAE,UAAU,EAAE,KAAK,EAGvC;IACA,OAAO,aAAG,SAAS,EAAC,eAAe,aACjC,eAAM,SAAS,EAAC,gBAAgB,yBAAgB,EAC/C,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,CAAC,CAAC,YAAG,SAAS,EAAC,KAAK,EAAC,IAAI,EAAE,QAAQ,kBAAkB,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,IAAP,EAAE,CAAU;gBAC9E,CAAC,CAAC,eAAM,SAAS,EAAC,iBAAiB,YAAW,EAAE,IAAP,EAAE,CAAa,CAAC,IACzD,CAAA;AACN,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,UAAU,EAAE,KAAK,EAG1C;IACA,OAAO,mBAAS,SAAS,EAAE,yBAAyB,UAAU,CAAC,MAAM,EAAE,aACrE,cAAI,SAAS,EAAC,iBAAiB,aAC7B,eAAM,SAAS,EAAC,eAAe,YAAE,UAAU,CAAC,EAAE,GAAQ,EACtD,eAAM,SAAS,EAAC,sBAAsB,YAAE,UAAU,CAAC,SAAS,GAAQ,IACjE,EACL,YAAG,SAAS,EAAC,wBAAwB,YAAE,UAAU,CAAC,WAAW,GAAK,EAClE,KAAC,YAAY,IAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAI,IAC9C,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAExC;IACA,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5E,MAAM,MAAM,GAAG,MAAM;SAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,GAAG,KAAK;QACR,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;KAC5E,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC9C,OAAO,KAAC,OAAO,IACb,EAAE,EAAC,YAAY,EACf,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,eAAe,EAChD,OAAO,EAAC,IAAI,EACZ,KAAK,EAAC,sBAAsB,YAE3B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAK,SAAS,EAAE,eAAe,KAAK,CAAC,MAAM,EAAE,aAClE,cAAI,SAAS,EAAC,aAAa,aACxB,KAAK,CAAC,OAAO,EACd,eAAM,SAAS,EAAC,aAAa,YAAE,KAAK,CAAC,OAAO,CAAC,MAAM,GAAQ,IACxD,EACJ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAC,eAAe,IACjD,UAAU,EAAE,UAAU,EAEtB,KAAK,EAAE,KAAK,IADP,UAAU,CAAC,EAAE,CAElB,CAAC,KATsE,KAAK,CAAC,MAAM,CAUjF,CAAC,GACC,CAAA;AACZ,CAAC"}
@@ -1,32 +0,0 @@
1
- import type { EvidenceReport } from "../schema.js";
2
- export type TrialResult = EvidenceReport["experiments"][number]["result"];
3
- export type Hypothesis = EvidenceReport["hypotheses"][number];
4
- export type Experiment = EvidenceReport["experiments"][number];
5
- export type MatrixEntry = EvidenceReport["proof"]["matrix"][number];
6
- export type Artifact = EvidenceReport["artifacts"][number];
7
- /** Semantic tone. Every tone is also carried by a word and a border style, never colour alone. */
8
- export type Tone = "pass" | "fail" | "open";
9
- export declare function percent(value: number): string;
10
- export declare function formatMoney(value: number): string;
11
- /** Renders the ISO timestamp as a stable UTC stamp so two readers never see different times. */
12
- export declare function formatTimestamp(iso: string): string;
13
- export declare function resultTone(result: TrialResult): Tone;
14
- export declare function Tag({ label, tone }: Readonly<{
15
- label: string;
16
- tone: Tone;
17
- }>): React.JSX.Element;
18
- export declare function CheckTag({ label, passed }: Readonly<{
19
- label: string;
20
- passed: boolean;
21
- }>): React.JSX.Element;
22
- /**
23
- * A failure rate as a right-aligned number plus a proportional bar. The bar is decorative;
24
- * the exact percentage is always present as text.
25
- */
26
- export declare function RateCell({ rate }: Readonly<{
27
- rate: number;
28
- }>): React.JSX.Element;
29
- /** Pass/trial counts, with failures and errors spelled out rather than implied. */
30
- export declare function TrialCounts({ result }: Readonly<{
31
- result: TrialResult;
32
- }>): React.JSX.Element;
@@ -1,42 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function percent(value) {
3
- return `${Math.round(value * 100)}%`;
4
- }
5
- export function formatMoney(value) {
6
- return new Intl.NumberFormat("en-US", {
7
- currency: "USD",
8
- maximumFractionDigits: 4,
9
- style: "currency",
10
- }).format(value);
11
- }
12
- function pad(value) {
13
- return String(value).padStart(2, "0");
14
- }
15
- /** Renders the ISO timestamp as a stable UTC stamp so two readers never see different times. */
16
- export function formatTimestamp(iso) {
17
- const at = new Date(iso);
18
- const date = `${at.getUTCFullYear()}-${pad(at.getUTCMonth() + 1)}-${pad(at.getUTCDate())}`;
19
- return `${date} ${pad(at.getUTCHours())}:${pad(at.getUTCMinutes())} UTC`;
20
- }
21
- export function resultTone(result) {
22
- return result.failed === 0 && result.errors === 0 ? "pass" : "fail";
23
- }
24
- export function Tag({ label, tone }) {
25
- return _jsx("span", { className: `tag tag-${tone}`, children: label });
26
- }
27
- export function CheckTag({ label, passed }) {
28
- return _jsxs("span", { className: "check", "data-testid": `check-${label}`, children: [_jsx("span", { className: "check-label", children: label }), _jsx(Tag, { label: passed ? "PASS" : "FAIL", tone: passed ? "pass" : "fail" })] });
29
- }
30
- /**
31
- * A failure rate as a right-aligned number plus a proportional bar. The bar is decorative;
32
- * the exact percentage is always present as text.
33
- */
34
- export function RateCell({ rate }) {
35
- const tone = rate > 0 ? "fail" : "pass";
36
- return _jsxs("span", { className: "rate", children: [_jsx("span", { className: "rate-value", children: percent(rate) }), _jsx("span", { "aria-hidden": "true", className: "rate-track", children: _jsx("span", { className: `rate-fill rate-${tone}`, style: { width: `${rate * 100}%` } }) })] });
37
- }
38
- /** Pass/trial counts, with failures and errors spelled out rather than implied. */
39
- export function TrialCounts({ result }) {
40
- return _jsxs("span", { className: "counts", children: [_jsxs("span", { className: "counts-main", children: [result.passed, "/", result.trials] }), _jsxs("span", { className: "counts-detail", children: [result.failed, " failed", result.errors > 0 ? ` · ${result.errors} errors` : ""] })] });
41
- }
42
- //# sourceMappingURL=indicators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indicators.js","sourceRoot":"","sources":["../../../src/report/components/indicators.tsx"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- export interface SpecEntry {
2
- readonly label: string;
3
- readonly value: React.ReactNode;
4
- /** Renders the value as wrapping monospace, for paths, patterns and signatures. */
5
- readonly mono?: boolean;
6
- }
7
- /**
8
- * A numbered report section. The ordinal is decorative so the accessible heading stays
9
- * "Verdict" rather than "01 Verdict".
10
- */
11
- export declare function Section({ children, id, ordinal, title, meta }: Readonly<{
12
- children: React.ReactNode;
13
- id: string;
14
- ordinal: string;
15
- title: string;
16
- meta?: React.ReactNode;
17
- }>): React.JSX.Element;
18
- /** Label/value evidence rows. A description list, because that is what these rows are. */
19
- export declare function SpecList({ entries }: Readonly<{
20
- entries: readonly SpecEntry[];
21
- }>): React.JSX.Element;
22
- /**
23
- * Keeps wide evidence tables scrollable inside their own region instead of overflowing the
24
- * page, and keeps that region reachable from the keyboard.
25
- */
26
- export declare function TableScroll({ children, label }: Readonly<{
27
- children: React.ReactNode;
28
- label: string;
29
- }>): React.JSX.Element;
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * A numbered report section. The ordinal is decorative so the accessible heading stays
4
- * "Verdict" rather than "01 Verdict".
5
- */
6
- export function Section({ children, id, ordinal, title, meta }) {
7
- return _jsxs("section", { "aria-label": title, className: "section", id: id, children: [_jsxs("div", { className: "section-head", children: [_jsxs("h2", { className: "section-title", id: `${id}-title`, children: [_jsx("span", { "aria-hidden": "true", className: "section-ordinal", children: ordinal }), title] }), _jsx("span", { "aria-hidden": "true", className: "section-rule" }), meta ? _jsx("span", { className: "section-meta", children: meta }) : undefined] }), children] });
8
- }
9
- /** Label/value evidence rows. A description list, because that is what these rows are. */
10
- export function SpecList({ entries }) {
11
- return _jsx("dl", { className: "spec", children: entries.map((entry) => _jsxs("div", { className: "spec-row", children: [_jsx("dt", { children: entry.label }), _jsx("dd", { className: entry.mono ? "spec-mono" : undefined, children: entry.value })] }, entry.label)) });
12
- }
13
- /**
14
- * Keeps wide evidence tables scrollable inside their own region instead of overflowing the
15
- * page, and keeps that region reachable from the keyboard.
16
- */
17
- export function TableScroll({ children, label }) {
18
- return _jsx("div", { "aria-label": label, className: "table-scroll", role: "region", tabIndex: 0, children: children });
19
- }
20
- //# sourceMappingURL=layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/report/components/layout.tsx"],"names":[],"mappings":";AAOA;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAM1D;IACA,OAAO,iCAAqB,KAAK,EAAE,SAAS,EAAC,SAAS,EAAC,EAAE,EAAE,EAAE,aAC3D,eAAK,SAAS,EAAC,cAAc,aAC3B,cAAI,SAAS,EAAC,eAAe,EAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,aAC7C,8BAAkB,MAAM,EAAC,SAAS,EAAC,iBAAiB,YAAE,OAAO,GAAQ,EACpE,KAAK,IACH,EACL,8BAAkB,MAAM,EAAC,SAAS,EAAC,cAAc,GAAG,EACnD,IAAI,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,cAAc,YAAE,IAAI,GAAQ,CAAC,CAAC,CAAC,SAAS,IAC5D,EACL,QAAQ,IACD,CAAA;AACZ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,QAAQ,CAAC,EAAE,OAAO,EAEhC;IACA,OAAO,aAAI,SAAS,EAAC,MAAM,YACxB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAK,SAAS,EAAC,UAAU,aAC/C,uBAAK,KAAK,CAAC,KAAK,GAAM,EACtB,aAAI,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,YAAG,KAAK,CAAC,KAAK,GAAM,KAFlB,KAAK,CAAC,KAAK,CAG5D,CAAC,GACJ,CAAA;AACP,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAG3C;IACA,OAAO,4BAAiB,KAAK,EAAE,SAAS,EAAC,cAAc,EAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,YAC9E,QAAQ,GACL,CAAA;AACR,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { EvidenceReport } from "../schema.js";
2
- export declare function ProofSection({ report }: Readonly<{
3
- report: EvidenceReport;
4
- }>): React.JSX.Element;
@@ -1,34 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { CheckTag, percent, RateCell, resultTone, Tag, TrialCounts } from "./indicators.js";
3
- import { Section, TableScroll } from "./layout.js";
4
- const BEFORE_HOSTILE = "Before · hostile";
5
- const AFTER_HOSTILE = "After · hostile";
6
- function find(matrix, label) {
7
- return matrix.find((entry) => entry.label === label);
8
- }
9
- function DeltaRow({ entry, term }) {
10
- return _jsxs("div", { className: "delta-row", children: [_jsx("dt", { children: term }), _jsxs("dd", { children: [_jsx(RateCell, { rate: entry.result.failureRate }), _jsxs("span", { className: "delta-counts", children: [entry.result.passed, "/", entry.result.trials, " passed"] })] })] });
11
- }
12
- /**
13
- * The headline comparison: the same hostile trigger, before and after the patch. Two aligned
14
- * bars sharing one scale, so the change is legible before any table is read.
15
- */
16
- function HostileDelta({ matrix }) {
17
- const before = find(matrix, BEFORE_HOSTILE);
18
- const after = find(matrix, AFTER_HOSTILE);
19
- if (!before || !after) {
20
- return undefined;
21
- }
22
- return _jsxs("figure", { "aria-labelledby": "delta-caption", className: "delta", children: [_jsx("figcaption", { id: "delta-caption", children: "Failure rate under the hostile trigger, before and after the candidate patch" }), _jsxs("dl", { className: "delta-bars", children: [_jsx(DeltaRow, { entry: before, term: "Before" }), _jsx(DeltaRow, { entry: after, term: "After" })] })] });
23
- }
24
- function MatrixTable({ matrix }) {
25
- return _jsxs(_Fragment, { children: [_jsx("p", { className: "table-note", children: "Every condition re-executed against the patched workspace, including the clean control and regression checks." }), _jsx(TableScroll, { label: "Proof matrix", children: _jsxs("table", { className: "grid", children: [_jsx("caption", { className: "sr-only", children: "Proof matrix" }), _jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: "Condition" }), _jsx("th", { className: "num", scope: "col", children: "Trials" }), _jsx("th", { className: "num", scope: "col", children: "Failure rate" }), _jsx("th", { className: "num", scope: "col", children: "Floor" }), _jsx("th", { scope: "col", children: "Outcome" })] }) }), _jsx("tbody", { children: matrix.map((entry) => {
26
- const tone = resultTone(entry.result);
27
- return _jsxs("tr", { children: [_jsx("th", { className: "mono", scope: "row", children: entry.label }), _jsx("td", { className: "num", children: _jsx(TrialCounts, { result: entry.result }) }), _jsx("td", { className: "num", children: _jsx(RateCell, { rate: entry.result.failureRate }) }), _jsx("td", { className: "num mono", children: percent(entry.result.lowerBound80) }), _jsx("td", { children: _jsx(Tag, { label: tone === "pass" ? "PASS" : "FAIL", tone: tone }) })] }, entry.label);
28
- }) })] }) })] });
29
- }
30
- export function ProofSection({ report }) {
31
- const { proof } = report;
32
- return _jsxs(Section, { id: "proof", meta: proof.execution, ordinal: "06", title: "Proof of repair", children: [_jsx(HostileDelta, { matrix: proof.matrix }), _jsxs("div", { className: "static-checks", children: [_jsx("span", { className: "static-checks-label", children: "Static checks" }), _jsx(CheckTag, { label: "typecheck", passed: proof.staticChecks.typecheck }), _jsx(CheckTag, { label: "eslint", passed: proof.staticChecks.lint })] }), _jsx(MatrixTable, { matrix: proof.matrix })] });
33
- }
34
- //# sourceMappingURL=proof.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proof.js","sourceRoot":"","sources":["../../../src/report/components/proof.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { EvidenceReport } from "../schema.js";
2
- export declare function ReproductionSection({ report }: Readonly<{
3
- report: EvidenceReport;
4
- }>): React.JSX.Element;
@@ -1,19 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { percent } from "./indicators.js";
3
- import { Section, SpecList } from "./layout.js";
4
- function triggerEntries(trigger) {
5
- const entries = [
6
- { label: "Fault", mono: true, value: trigger.kind },
7
- { label: "Route pattern", mono: true, value: trigger.pattern },
8
- { label: "Delay", mono: true, value: `${trigger.delayMs} ms` },
9
- { label: "Required failure rate", mono: true, value: `>= ${percent(trigger.minimumFailureRate)}` },
10
- ];
11
- if (trigger.signature) {
12
- entries.push({ label: "Failure signature", mono: true, value: trigger.signature });
13
- }
14
- return entries;
15
- }
16
- export function ReproductionSection({ report }) {
17
- return _jsxs(Section, { id: "reproduction", ordinal: "02", title: "Reproduction", children: [_jsxs("p", { className: "lede", children: ["The minimal hostile trigger. Applying it reproduces the failure in at least", " ", percent(report.trigger.minimumFailureRate), " of trials."] }), _jsx(SpecList, { entries: triggerEntries(report.trigger) })] });
18
- }
19
- //# sourceMappingURL=reproduction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reproduction.js","sourceRoot":"","sources":["../../../src/report/components/reproduction.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE/C,SAAS,cAAc,CAAC,OAAkC;IACxD,MAAM,OAAO,GAAgB;QAC3B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE;QACnD,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;QAC9D,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,KAAK,EAAE;QAC9D,EAAE,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE;KACnG,CAAA;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAE,MAAM,EAE1C;IACA,OAAO,MAAC,OAAO,IAAC,EAAE,EAAC,cAAc,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,cAAc,aACjE,aAAG,SAAS,EAAC,MAAM,4FAC2D,GAAG,EAC9E,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,mBACzC,EACJ,KAAC,QAAQ,IAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAI,IAC7C,CAAA;AACZ,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { EvidenceReport } from "../schema.js";
2
- export declare function EvidenceSummarySection({ report }: Readonly<{
3
- report: EvidenceReport;
4
- }>): React.JSX.Element;
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { CheckTag, formatMoney } from "./indicators.js";
3
- import { Section } from "./layout.js";
4
- function Metric({ label, value, detail }) {
5
- return _jsxs("div", { className: "metric", children: [_jsx("dt", { children: label }), _jsxs("dd", { children: [_jsx("span", { className: "metric-value", children: value }), detail ? _jsx("span", { className: "metric-detail", children: detail }) : undefined] })] });
6
- }
7
- export function EvidenceSummarySection({ report }) {
8
- const confirmed = report.hypotheses.filter((entry) => entry.status === "confirmed").length;
9
- const tokens = report.usage.inputTokens + report.usage.outputTokens;
10
- return _jsxs(Section, { id: "summary", ordinal: "03", title: "Evidence summary", children: [_jsxs("dl", { className: "metrics", children: [_jsx(Metric, { detail: `${report.hypotheses.length} hypotheses`, label: "Experiments", value: String(report.experiments.length) }), _jsx(Metric, { detail: "of the hypotheses", label: "Confirmed causes", value: String(confirmed) }), _jsx(Metric, { detail: `${tokens.toLocaleString("en-US")} tokens`, label: "Model cost", value: formatMoney(report.usage.estimatedCostUsd) }), _jsx(Metric, { detail: "proof environment", label: "Execution", value: report.proof.execution })] }), _jsxs("div", { className: "static-checks", children: [_jsx("span", { className: "static-checks-label", children: "Static checks" }), _jsx(CheckTag, { label: "typecheck", passed: report.proof.staticChecks.typecheck }), _jsx(CheckTag, { label: "eslint", passed: report.proof.staticChecks.lint })] })] });
11
- }
12
- //# sourceMappingURL=summary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/report/components/summary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAIpC;IACA,OAAO,eAAK,SAAS,EAAC,QAAQ,aAC5B,uBAAK,KAAK,GAAM,EAChB,yBACE,eAAM,SAAS,EAAC,cAAc,YAAE,KAAK,GAAQ,EAC5C,MAAM,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,eAAe,YAAE,MAAM,GAAQ,CAAC,CAAC,CAAC,SAAS,IAClE,IACD,CAAA;AACR,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EAAE,MAAM,EAE7C;IACA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAA;IAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAA;IACnE,OAAO,MAAC,OAAO,IAAC,EAAE,EAAC,SAAS,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,kBAAkB,aAChE,cAAI,SAAS,EAAC,SAAS,aACrB,KAAC,MAAM,IACL,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,aAAa,EAChD,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GACxC,EACF,KAAC,MAAM,IAAC,MAAM,EAAC,mBAAmB,EAAC,KAAK,EAAC,kBAAkB,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,GAAI,EACxF,KAAC,MAAM,IACL,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAClD,KAAK,EAAC,YAAY,EAClB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,GACjD,EACF,KAAC,MAAM,IAAC,MAAM,EAAC,mBAAmB,EAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,GAAI,IACnF,EACL,eAAK,SAAS,EAAC,eAAe,aAC5B,eAAM,SAAS,EAAC,qBAAqB,8BAAqB,EAC1D,KAAC,QAAQ,IAAC,KAAK,EAAC,WAAW,EAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,GAAI,EAC3E,KAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAI,IAC/D,IACE,CAAA;AACZ,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { EvidenceReport } from "../schema.js";
2
- export declare function VerdictSection({ report }: Readonly<{
3
- report: EvidenceReport;
4
- }>): React.JSX.Element;
@@ -1,27 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Tag } from "./indicators.js";
3
- import { Section, SpecList } from "./layout.js";
4
- const VERDICT_COPY = {
5
- FIX_PROVEN: {
6
- headline: "FIX PROVEN",
7
- summary: "The candidate patch was accepted by an independent proof run.",
8
- },
9
- PATCH_REJECTED: {
10
- headline: "PATCH REJECTED",
11
- summary: "The candidate patch was not accepted by the proof run.",
12
- },
13
- };
14
- export function VerdictSection({ report }) {
15
- const proven = report.status === "FIX_PROVEN";
16
- const copy = VERDICT_COPY[report.status];
17
- return _jsxs(Section, { id: "verdict", ordinal: "01", title: "Verdict", children: [_jsxs("div", { className: proven ? "verdict verdict-pass" : "verdict verdict-fail", children: [_jsxs("p", { className: "verdict-headline", children: [copy.headline, _jsx(Tag, { label: proven ? "PASS" : "FAIL", tone: proven ? "pass" : "fail" })] }), _jsx("p", { className: "verdict-summary", children: copy.summary })] }), _jsx(SpecList, { entries: [
18
- { label: "Test", mono: true, value: report.test },
19
- { label: "Ownership", mono: true, value: report.ownership.classification },
20
- {
21
- label: "Confidence",
22
- mono: true,
23
- value: report.ownership.confidence.toUpperCase(),
24
- },
25
- ] }), _jsxs("div", { className: "prose", children: [_jsx("h3", { className: "sub-title", children: "Root cause" }), _jsx("p", { children: report.conclusion }), _jsxs("p", { className: "note", children: [_jsx("span", { className: "note-label", children: "Classification basis" }), report.ownership.rationale] })] })] });
26
- }
27
- //# sourceMappingURL=verdict.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verdict.js","sourceRoot":"","sources":["../../../src/report/components/verdict.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,YAAY,GAAG;IACnB,UAAU,EAAE;QACV,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,+DAA+D;KACzE;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,wDAAwD;KAClE;CACO,CAAA;AAEV,MAAM,UAAU,cAAc,CAAC,EAAE,MAAM,EAErC;IACA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,YAAY,CAAA;IAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACxC,OAAO,MAAC,OAAO,IAAC,EAAE,EAAC,SAAS,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,aACvD,eAAK,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,aACtE,aAAG,SAAS,EAAC,kBAAkB,aAC5B,IAAI,CAAC,QAAQ,EACd,KAAC,GAAG,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAI,IACtE,EACJ,YAAG,SAAS,EAAC,iBAAiB,YAAE,IAAI,CAAC,OAAO,GAAK,IAC7C,EAEN,KAAC,QAAQ,IAAC,OAAO,EAAE;oBACjB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE;oBACjD,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE;oBAC1E;wBACE,KAAK,EAAE,YAAY;wBACnB,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE;qBACjD;iBACF,GAAI,EAEL,eAAK,SAAS,EAAC,OAAO,aACpB,aAAI,SAAS,EAAC,WAAW,2BAAgB,EACzC,sBAAI,MAAM,CAAC,UAAU,GAAK,EAC1B,aAAG,SAAS,EAAC,MAAM,aACjB,eAAM,SAAS,EAAC,YAAY,qCAA4B,EACvD,MAAM,CAAC,SAAS,CAAC,SAAS,IACzB,IACA,IACE,CAAA;AACZ,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { EvidenceReport } from "./schema.js";
2
- interface ReportAppProps {
3
- readonly report: EvidenceReport;
4
- }
5
- export declare function ReportApp({ report }: ReportAppProps): React.JSX.Element;
6
- export {};
@@ -1,16 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ArtifactSection } from "./components/artifacts.js";
3
- import { ExperimentSection } from "./components/experiments.js";
4
- import { HypothesisSection } from "./components/hypotheses.js";
5
- import { formatTimestamp } from "./components/indicators.js";
6
- import { ProofSection } from "./components/proof.js";
7
- import { ReproductionSection } from "./components/reproduction.js";
8
- import { EvidenceSummarySection } from "./components/summary.js";
9
- import { VerdictSection } from "./components/verdict.js";
10
- function Masthead({ report }) {
11
- return _jsxs("header", { className: "masthead", children: [_jsxs("p", { className: "masthead-title", children: [_jsx("span", { className: "masthead-product", children: "FlakeLab" }), _jsx("span", { className: "masthead-kind", children: "Evidence report" })] }), _jsxs("dl", { className: "masthead-meta", children: [_jsxs("div", { children: [_jsx("dt", { children: "Generated" }), _jsx("dd", { children: formatTimestamp(report.generatedAt) })] }), _jsxs("div", { children: [_jsx("dt", { children: "Model" }), _jsx("dd", { children: report.model })] })] })] });
12
- }
13
- export function ReportApp({ report }) {
14
- return _jsxs("div", { className: "page", children: [_jsx(Masthead, { report: report }), _jsxs("main", { children: [_jsxs("h1", { className: "page-title", children: ["Causal evidence for ", _jsx("code", { children: report.test })] }), _jsx(VerdictSection, { report: report }), _jsx(ReproductionSection, { report: report }), _jsx(EvidenceSummarySection, { report: report }), _jsx(ExperimentSection, { report: report }), _jsx(HypothesisSection, { report: report }), _jsx(ProofSection, { report: report }), _jsx(ArtifactSection, { report: report })] }), _jsxs("footer", { className: "colophon", children: [_jsx("p", { children: "Generated locally by FlakeLab. Evidence embedded and schema-validated at render." }), _jsx("p", { children: "No runtime network access \u00B7 credentials redacted \u00B7 content security policy enforced" })] })] });
15
- }
16
- //# sourceMappingURL=report-app.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report-app.js","sourceRoot":"","sources":["../../src/report/report-app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAOxD,SAAS,QAAQ,CAAC,EAAE,MAAM,EAAkB;IAC1C,OAAO,kBAAQ,SAAS,EAAC,UAAU,aACjC,aAAG,SAAS,EAAC,gBAAgB,aAC3B,eAAM,SAAS,EAAC,kBAAkB,yBAAgB,EAClD,eAAM,SAAS,EAAC,eAAe,gCAAuB,IACpD,EACJ,cAAI,SAAS,EAAC,eAAe,aAC3B,0BACE,qCAAkB,EAClB,uBAAK,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,GAAM,IAC1C,EACN,0BACE,iCAAc,EACd,uBAAK,MAAM,CAAC,KAAK,GAAM,IACnB,IACH,IACE,CAAA;AACX,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM,EAAkB;IAClD,OAAO,eAAK,SAAS,EAAC,MAAM,aAC1B,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,EAC5B,2BACE,cAAI,SAAS,EAAC,YAAY,qCACJ,yBAAO,MAAM,CAAC,IAAI,GAAQ,IAC3C,EACL,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,GAAI,EAClC,KAAC,mBAAmB,IAAC,MAAM,EAAE,MAAM,GAAI,EACvC,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,GAAI,EAC1C,KAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,GAAI,EACrC,KAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,GAAI,EACrC,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,GAAI,EAChC,KAAC,eAAe,IAAC,MAAM,EAAE,MAAM,GAAI,IAC9B,EACP,kBAAQ,SAAS,EAAC,UAAU,aAC1B,2GAAuF,EACvF,wHAA0F,IACnF,IACL,CAAA;AACR,CAAC"}