From c2d40ae39e5f4754b04bd6a6d9671060739f87eb Mon Sep 17 00:00:00 2001 From: datzle123 Date: Sun, 26 Jul 2026 16:59:05 +0700 Subject: [PATCH 1/3] Harden trace retention against secrets --- CHANGELOG.md | 2 + docs/COMPATIBILITY.md | 4 + docs/PERFORMANCE.md | 2 +- docs/PRODUCT_SPECIFICATION.md | 7 +- docs/PRODUCT_STATUS.md | 10 ++- docs/ROADMAP.md | 14 ++++ docs/THREAT_MODEL.md | 5 +- docs/VERIFICATION_MATRIX.md | 1 + src/browser/executor.ts | 29 ++++++- src/contracts/report.ts | 1 + src/contracts/schema.ts | 3 +- src/contracts/verifier.ts | 27 +++++-- src/index.ts | 4 + src/release/artifacts.ts | 134 +++++++++++++++++++++++++++------ src/report/html.ts | 6 ++ src/types.ts | 3 + test/release-artifacts.test.ts | 44 ++++++++++- test/smoke.mjs | 44 +++++++++++ 18 files changed, 296 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cff432..f6f254c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes are documented here. RealDone follows semantic versioning wh ### Added +- Fail-closed per-trace retention for automatic scans and contract/MCP verification: bounded ZIP inspection now runs before report linkage, with additive value-free suppression metadata for deleted unsafe or unscannable traces. - Coverage-balanced quick-scan scheduling that represents more routes, action kinds, intents, and keyboard/submit activation paths within the same finite action budget, while placing known policy/environment denials after runnable actions. - Additive action-selection telemetry in JSON and HTML reports, including eligible/selected/omitted counts, route coverage, semantic coverage, denial counts, the deterministic strategy version, and an explicit partial-scan explanation. - Fresh fingerprint-bound qualification across TodoMVC, Actual Budget, Conduit/SQLite, Conduit/PostgreSQL 17 + Supabase Data API, and Codex-generated Pocket Ledger, including PostgreSQL create/update/delete cleanup, Level 7 roles, and a real Codex MCP baseline → RD901 regression → repair cycle. @@ -13,6 +14,7 @@ All notable changes are documented here. RealDone follows semantic versioning wh ### Fixed +- Playwright traces containing known sensitive field values, generic credential/token material, invalid ZIP data, or bounded-inspection limit failures are removed immediately instead of surviving until the aggregate release artifact gate. - Report timelines and environment summaries now render arrows and separators as UTF-8 instead of mojibake. ## [1.3.3] - 2026-07-26 diff --git a/docs/COMPATIBILITY.md b/docs/COMPATIBILITY.md index 30e9ffa..9326889 100644 --- a/docs/COMPATIBILITY.md +++ b/docs/COMPATIBILITY.md @@ -4,6 +4,8 @@ Unreleased main fingerprint `f3f65840…` preserved the same matrix and package path in hosted run [`30195945498`](https://github.com/datzle123/RealDone/actions/runs/30195945498). All 15 gates passed on Linux, Windows and macOS with Node 20/22, and GitHub signed the aggregate evidence and gate report for merge commit `2572aba57edf418f87750352ed3b3d36868015ac`. +The subsequent Phase I status merge `42006c4` independently repeated the full matrix and signed 15/15 in hosted main run [`30196808460`](https://github.com/datzle123/RealDone/actions/runs/30196808460). + | Surface | Release gate | | --- | --- | | Node.js | 20 and 22 | @@ -26,3 +28,5 @@ Codex and Claude Code integrations are command presets, not embedded SDKs. RealD ## Unreleased report compatibility Coverage-balanced action selection adds an optional `completeness.selection` object to `scan.json`. Existing `schemaVersion: "1.0"` fields and meanings are unchanged, old reports remain readable, and validators use passthrough/additive compatibility. Consumers may ignore the new telemetry or use it to distinguish discovered, selected, omitted, and route-represented action coverage. + +Secret-safe trace retention adds optional `evidence.traceSuppression` on scan findings and optional `artifacts.traceSuppressions` on contract verification. Existing trace paths are unchanged when a ZIP passes inspection; rejected traces are absent by design. Consumers that ignore the new metadata continue to read schema `1.0`, while Windows, macOS and Linux use the same bounded `fflate` ZIP inspection path. diff --git a/docs/PERFORMANCE.md b/docs/PERFORMANCE.md index 83f8c08..2f2e879 100644 --- a/docs/PERFORMANCE.md +++ b/docs/PERFORMANCE.md @@ -4,7 +4,7 @@ Quick scan remains intentionally light: one Chromium worker, no provider/databas `--deep` opens one additional browser context per executed mutation to confirm persistence scope. Keep it opt-in for important flows or scheduled audits rather than paying that cost in every quick scan. -`--trace` records Playwright snapshots/screenshots and `--video` records the browser viewport. Both add I/O, storage, and post-processing work; use them for diagnosis or release evidence rather than routine scans. `--trace-on-failure` starts bounded tracing but deletes passing traces, retaining portable ZIP evidence only for findings or failed contract verification. +`--trace` records Playwright snapshots/screenshots and `--video` records the browser viewport. Both add I/O, storage, and post-processing work; use them for diagnosis or release evidence rather than routine scans. Every newly closed trace receives one bounded ZIP secret inspection before it can be linked; unsafe, invalid, oversized, or over-expanded traces are deleted fail-closed. `--trace-on-failure` then deletes safe passing traces, retaining portable ZIP evidence only for findings or failed contract verification. `scan --full` raises the default safe budgets to 100 pages, 500 actions, and 30 minutes, enables deep persistence and trace-on-failure, but never enables destructive or external effects. Explicit budget flags or policy values still win, and exhausted budgets set `truncated`. diff --git a/docs/PRODUCT_SPECIFICATION.md b/docs/PRODUCT_SPECIFICATION.md index 051f91a..2c038ab 100644 --- a/docs/PRODUCT_SPECIFICATION.md +++ b/docs/PRODUCT_SPECIFICATION.md @@ -658,6 +658,8 @@ Replay Baseline ``` +Mỗi Playwright trace chỉ được liên kết vào evidence sau khi ZIP vừa tạo đã qua kiểm tra secret có giới hạn. Nếu phát hiện secret, ZIP không đọc được, hoặc vượt giới hạn kiểm tra, RealDone phải xóa trace theo hướng fail-closed, không công bố đường dẫn đã bị loại, và chỉ ghi metadata lý do không chứa giá trị hay fingerprint của secret. Quy tắc này áp dụng giống nhau cho scan tự động, contract verification, browser matrix, CI và MCP. + --- # 13. State Snapshot Engine @@ -1109,6 +1111,7 @@ Report phải phân biệt: * unverified action; * regression; * expected change. +* trace đã bị loại bởi kiểm tra secret, tách biệt với việc không bật trace hoặc xóa passing trace theo `--trace-on-failure`. --- @@ -1213,6 +1216,8 @@ RD_TEST__ Cleanup ledger phải ghi mọi resource được tạo. +Trace là artifact nhạy cảm: redaction trong JSON/DOM không đủ để chứng minh ZIP Playwright an toàn. Mọi trace được giữ lại phải qua kiểm tra bounded ngay sau khi đóng trace; trace không kiểm tra được hoặc có secret phải bị xóa trước khi report được ghi. + --- # 26. Benchmark System @@ -1354,7 +1359,7 @@ Một release chỉ được phát hành khi: 11. Environment health gate pass. 12. Cross-platform smoke pass. 13. Report schema backward-compatible. -14. Không có secret trong artifact. +14. Không có secret trong artifact; trace bị phát hiện không an toàn hoặc không kiểm tra được phải bị xóa và không được liên kết trong report. 15. Case study bên ngoài không regression nghiêm trọng. Không được release chỉ vì: diff --git a/docs/PRODUCT_STATUS.md b/docs/PRODUCT_STATUS.md index a863651..47b4ca3 100644 --- a/docs/PRODUCT_STATUS.md +++ b/docs/PRODUCT_STATUS.md @@ -3,7 +3,7 @@ **Snapshot:** 2026-07-26 **Released full product:** **IMPLEMENTED in `v1.3.3`** **Latest release qualification:** hosted run `30189340006` passed and signed all 15 gates for the versioned source commit and installed-package path. -**Latest main qualification:** hosted run `30195945498` passed and signed all 15 gates for Phase I fingerprint `f3f65840…`. +**Latest main qualification:** hosted run `30196808460` passed and signed all 15 gates for Phase I status merge `42006c4` and fingerprint `f3f65840…`. **Area coverage:** **22/22 `IMPLEMENTED`**, **0/22 `PARTIAL`**, **0/22 `PLANNED`**. Detector catalog: **58/58 production-classified and gated**. This file reports current evidence against the normative [`PRODUCT_SPECIFICATION.md`](PRODUCT_SPECIFICATION.md). It does not reduce that specification. `IMPLEMENTED` requires executable evidence; `PARTIAL` means useful code exists but the full normative behavior or release gate does not. @@ -12,6 +12,8 @@ Release `v1.3.3` additionally ran ten pinned MIT projects and detected 10/10 inj Phase I hardening is complete on `main`: coverage-balanced quick-scan scheduling and additive selection telemetry are bound to fingerprint `f3f65840…`. Local type/unit/build (140 tests with 2 expected service-dependent skips), audit, full Chromium smoke, pack and installed-tarball smoke passed. Fresh repository-bound runs covered all five normative external cases: TodoMVC exercised both Enter paths; Actual Budget preserved its safe history-dependent `UNCERTAIN`; Conduit passed untruncated SQLite and PostgreSQL 17 + Supabase Data API scans plus real create/update/delete cleanup; Pocket Ledger passed six visible actions, Level 7 roles, and a new Codex MCP RD901 regression/repair cycle. Hosted run [`30195945498`](https://github.com/datzle123/RealDone/actions/runs/30195945498) passed 15/15 on Linux, macOS and Windows; `gh attestation verify` accepted the signed aggregate evidence and gate report. This main-branch qualification is not a new npm version by itself; `v1.3.3` remains the latest published release. +Phase J is an unreleased hardening candidate: scan and contract/MCP traces are inspected immediately after capture, and unsafe or unscannable ZIPs are deleted before report linkage. The existing full-product status remains valid because this strengthens §12–13/§21/§25 without narrowing behavior; Phase J itself remains a release candidate until its branch and hosted gates pass. + | Specification area | Status | Evidence currently in the repository | Remaining normative gap | | --- | --- | --- | --- | | §4 Quick scan | IMPLEMENTED | `scan`, browser execution, report, reload checks, fixture smoke, and deterministic coverage-balanced selection with explicit eligible/selected/omitted/route telemetry | Broader action and environment coverage is tracked below | @@ -22,16 +24,16 @@ Phase I hardening is complete on `main`: coverage-balanced quick-scan scheduling | §6 Project Discovery/Runtime Manager | IMPLEMENTED | `init` profiles single-package/monorepo projects; npm fallback without lock metadata; project-local Python virtual environments; zero-config static HTML plus conventional Node, Django/FastAPI/Flask, Laravel/PHP, Rails, ASP.NET Core, Spring Boot, Deno, Go and Rust managed runtimes; occupied-port rejection, development/production/Docker health-checks, logs, bounded restarts and process cleanup; installed-tarball scans start, verify and stop metadata-free static and npm projects in hosted run `29977292441` | Custom runtimes use an explicit HTTP URL; new ecosystem hints must add cross-platform broken/control and package evidence | | §7 Environment Health Gate | IMPLEMENTED | main/route document, critical asset/content-type, bootstrap/render, health-endpoint and auth-state checks; separate `environment.json`; broken/control fixtures and TodoMVC defect copy | Additional ecosystem-specific diagnostics may be added without changing the implemented fail-closed contract | | §8–11 Discovery, classification, data, executor | IMPLEMENTED | forms/links/buttons/native controls, Enter, hover/context, lazy-scroll, popup/download, opt-in same-origin iframe, complex-action recording boundaries, constraint-aware canaries, network-idle/stale/retry safety, and budget selection that avoids route/semantic starvation and known-denial budget waste | Framework-specific discovery adapters may broaden coverage without changing the implemented safe-execution contract | -| §12–13 Evidence and snapshots | IMPLEMENTED | URL, redacted semantic DOM/control hashes, cookie hashes, local/session storage, bounded IndexedDB metadata, request/response, WebSocket frames, console/page error, upload/download digests, screenshots, trace/video/timeline, value-free source diffs, and redacted automatic provider evidence/artifacts; reproductions retain value-free provider requirements and replay requires fresh exact causal confirmation | New evidence adapters must preserve the implemented redaction, linkage and replay contract | +| §12–13 Evidence and snapshots | IMPLEMENTED | URL, redacted semantic DOM/control hashes, cookie hashes, local/session storage, bounded IndexedDB metadata, request/response, WebSocket frames, console/page error, upload/download digests, screenshots, trace/video/timeline, value-free source diffs, and redacted automatic provider evidence/artifacts; every retained browser/contract trace passes bounded ZIP and known-secret inspection before linkage, while unsafe/unscannable traces are deleted with value-free suppression metadata; reproductions retain value-free provider requirements and replay requires fresh exact causal confirmation | New evidence adapters must preserve the implemented redaction, retention, linkage and replay contract | | §14 Persistence | IMPLEMENTED | immediate/reload/hard-reload/new-tab/clean-context/logout-login/app-restart/API read-back strategies; all seven scopes are executable through browser smoke, contract Level 6/7 checks and deterministic scope tests | Additional application-specific adapters may extend confirmation without changing the implemented scope contract | | §15–17 Verdicts and evidence hierarchy | IMPLEMENTED | scan verdicts, regression `EXPECTED_CHANGE`/`REGRESSION` outcomes, separate `ENVIRONMENT_INVALID`/`BLOCKED`, priority resolution and Levels 0–7 across scan/contract/baseline/report evidence | New adapters must preserve this implemented hierarchy | | §18 Detector system | IMPLEMENTED | all 58 catalogued RD001–RD1005 detectors have production classification plus unit, browser/contract, regression or environment broken/control evidence | New detectors require the same broken/control and observable-evidence policy | | §19–20 Contracts and replay | IMPLEMENTED | versioned complex-step schemas, semantic source/target locators, assertions, cleanup declarations, fresh canaries/evidence and all five normative replay outcomes with `replay.json` | New step/expectation types must preserve schema compatibility and deterministic replay | -| §21 Report | IMPLEMENTED | HTML/JSON, finding timelines, screenshots/trace/video and dedicated network/snapshot/console/WebSocket/upload/download/contract/reproduction artifacts; application/environment/skipped/uncertain and expected/regression results remain distinct | Additional renderers may consume the implemented portable evidence model | +| §21 Report | IMPLEMENTED | HTML/JSON, finding timelines, screenshots/trace/video and dedicated network/snapshot/console/WebSocket/upload/download/contract/reproduction artifacts; a removed unsafe trace is never linked and appears only as sanitized suppression metadata; application/environment/skipped/uncertain and expected/regression results remain distinct | Additional renderers may consume the implemented portable evidence model | | §22 Database adapters | IMPLEMENTED | zero-config SQLite plus PostgreSQL, Supabase, Firebase, MongoDB and Prisma/custom source connectors; read-only verification, schema/PK/soft-delete discovery, hash snapshots/diff, parameterization/mapping, TLS/remote policy, redaction and confirmed cleanup have integration, browser and external Conduit evidence | New adapters must preserve the implemented source contract and safety gates | | §23 Provider adapters | IMPLEMENTED | maintained Stripe-test, Resend, SendGrid, Mailgun, S3, Supabase Storage and OAuth read-only adapters plus custom provider plugins; bounded requests, secret redaction and production guards pass integration/browser gates | New providers must preserve the implemented read-only, fail-closed contract | | §24 Multi-role | IMPLEMENTED | isolated role storage states, UI visibility, Level 7 cross-role observation, API denial, direct route, cross-tenant read/write, revoked-role and invalidated-session probes | Application-specific role provisioning remains user configuration, not a missing verification capability | -| §25 Safety | IMPLEMENTED | interactive scans require one explicit project-level action consent and non-interactive CLI/MCP execution fails closed without `--yes`/user-owned server authorization; host/destructive/external opt-ins, form/endpoint/provider classification, file/cross-origin/popup boundaries, live pre-execution escalation, redaction, cleanup, read-only adapters, production guards and artifact secret gates remain independent | New action/provider classes must preserve the implemented consent and least-authority boundaries | +| §25 Safety | IMPLEMENTED | interactive scans require one explicit project-level action consent and non-interactive CLI/MCP execution fails closed without `--yes`/user-owned server authorization; host/destructive/external opt-ins, form/endpoint/provider classification, file/cross-origin/popup boundaries, live pre-execution escalation, redaction, cleanup, read-only adapters, production guards, immediate fail-closed trace retention and the aggregate artifact secret gate remain independent | New action/provider/artifact classes must preserve the implemented consent and least-authority boundaries | | §26 Benchmark | IMPLEMENTED | precision, recall, FPR, discovery, expectation coverage, verdict/detector accuracy, replay, truncation, environment validity and confirmed cleanup success are machine-readable and release-gated | Future metrics must remain additive and deterministic | | §27 Real-world cases | IMPLEMENTED | current main fingerprint `f3f65840…` has fresh repository-bound scans for TodoMVC, Actual Budget, Conduit/SQLite, Conduit/PostgreSQL 17 + Supabase Data API and Codex-generated Pocket Ledger; all nine normative capability classes have semantic validator-parsed evidence, including PostgreSQL CRUD cleanup, upload/export, Level 7 roles, multi-step and agent repair; signed hosted run `30195945498` passed Windows/macOS/Linux | Future engine fingerprints must repeat the hosted signed qualification | | §28–31 Engineering/release/performance/UX | IMPLEMENTED | published npm package with registry-smoked `npx realdone scan`; installed-tarball first-scan gates start, verify and clean up metadata-free static and npm projects; one-command managed scan with bounded first-use browser bootstrap; CI, license/audit/package gates, quick/full budgets, coverage-balanced selection, bounded workers, final post-build affected-flow selection, trace-on-failure, snapshot dedup, environment/artifact/schema/raw-case gates and GitHub artifact-attestation workflow; main run `30195945498` passed hosted 15/15 across Windows/macOS/Linux, Node 20/22, PostgreSQL 17, MongoDB 8 and package smoke | Future releases must preserve the same release gates | diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index bd73c8a..d375a4f 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -151,3 +151,17 @@ Gate: - Broken/control unit coverage and a real-browser three-route budget fixture pass with typecheck, audit, browser smoke and package gates. Phase I is complete for fingerprint `f3f65840…`: typecheck/unit/build passed 140 tests with 2 expected service-dependent skips, dependency audit reported no known vulnerabilities, full Chromium smoke passed the real three-route budget control, and pack plus installed-tarball package smoke passed. Fresh SHA-256-bound runs cover TodoMVC, Actual Budget, Conduit/SQLite, Conduit/PostgreSQL 17 + Supabase Data API, PostgreSQL CRUD cleanup, Level 7 roles, and a Codex MCP baseline → RD901 regression → repair cycle. Hosted main run [`30195945498`](https://github.com/datzle123/RealDone/actions/runs/30195945498) passed all 15 gates across Linux, macOS and Windows, Node 20/22, PostgreSQL 17, MongoDB 8 and installed-package smoke. GitHub signed the aggregate evidence and gate report, and `gh attestation verify` accepted both artifacts. + +## Phase J — secret-safe trace retention (release candidate) + +Contributes evidence to: §12–13, §21, §25, §29–30. + +Gate: + +- Every automatic-scan and contract/MCP trace is inspected immediately after Playwright closes the ZIP and before any report links it. +- Exact sensitive values already known to the browser/contract and generic private-key/token/sensitive-field patterns are checked without persisting or reporting those values. +- Secret-bearing, invalid, oversized, or over-expanded trace ZIPs are deleted fail-closed; reports contain only additive value-free suppression metadata. +- A real-browser sensitive-field broken case loses its trace, a non-sensitive trace control remains available, invalid/limit unit controls fail closed, and the final aggregate artifact secret scan remains green. +- Typecheck, unit, browser, audit, package, schema, cleanup and hosted cross-platform release gates pass without weakening RG14. + +The candidate implementation is isolated on `codex/phase-j-secret-safe-traces`. It is not complete until the gate above passes and the hosted branch run confirms the cross-platform/package paths. diff --git a/docs/THREAT_MODEL.md b/docs/THREAT_MODEL.md index 6fdf913..418c2c7 100644 --- a/docs/THREAT_MODEL.md +++ b/docs/THREAT_MODEL.md @@ -20,7 +20,7 @@ RealDone executes browsers, test actions, database reads, optional cleanup, prov | Database cleanup | Destructive by design | CLI and database confirmation, adapter opt-in, exact primary keys, maximum-row guards, dedicated write path | | Coding agent/build | Can edit and execute repository code | clean-worktree gate, shell-free spawn, time/output bounds, sealed baseline, contract hashes, independent verification | | Plugin/provider | Trusted executable code or remote credential | read-only maintained adapters; explicit plugin manifest/permissions; relative entry; schema validation; one-call worker; timeout/memory limits; output redaction | -| Reports/logs | May contain application content | known/environment-secret redaction, ignored local output tree, no credential values by design | +| Reports/logs | May contain application content | known/environment-secret redaction, per-trace bounded ZIP inspection with fail-closed deletion, ignored local output tree, no credential values by design | ## Evidence-integrity threats @@ -30,13 +30,14 @@ RealDone executes browsers, test actions, database reads, optional cleanup, prov - **Plugin invents a verdict:** plugins return a typed observation; RealDone validates it and computes pass/fail. A malicious trusted plugin can still lie about `found`, so plugin provenance remains part of the trust model. - **UI false success:** browser/network/refresh/source/provider/cross-role evidence remains separate from UI claims. - **Release summary detached from its run:** external-case evidence is accepted only when its repository-confined raw `scan.json` exists, matches the recorded SHA-256, and agrees exactly with the published scan counters and verdict map. +- **Browser trace retains a credential:** every newly closed trace is inspected before linkage against generic secret forms and the exact sensitive values known to that scan/contract; unsafe, invalid, oversized, or over-expanded ZIPs are deleted and only value-free suppression metadata remains. ## Residual risks - Worker threads are resource/fault isolation, not OS sandboxes. The worker process environment is reduced to declared/referenced names and global `fetch` is host-allowlisted, but malicious plugin code can still read files (including credential files) or use other Node network APIs. - A coding agent or build command can execute code with its configured process authority. Use a disposable branch/worktree and external sandbox when the repository is untrusted. - Opaque JavaScript/server handlers without observable form, URL, endpoint, provider, or DOM semantics cannot be classified precisely before execution. CLI/MCP therefore require project-level consent that explicitly warns about hidden provider effects; use a recorded flow or project-specific deny/set policy for narrower authority. -- Redaction cannot recognize every domain-specific secret or private data format. Treat local reports and logs as sensitive. +- Redaction and trace inspection cannot recognize every domain-specific secret or private data format. Treat local reports and logs as sensitive even when the automatic gate passes. - Cross-role checks demonstrate one configured observation, not exhaustive authorization or tenant isolation. - Provider adapters demonstrate what the provider API or trusted custom plugin observed, not real-world delivery beyond that provider's boundary. diff --git a/docs/VERIFICATION_MATRIX.md b/docs/VERIFICATION_MATRIX.md index 4a11e95..c7de7d2 100644 --- a/docs/VERIFICATION_MATRIX.md +++ b/docs/VERIFICATION_MATRIX.md @@ -20,6 +20,7 @@ This is the executable matrix for the shipped product, not a product-status ledg | Authorization matrix | RD601–RD605 probe UI visibility, direct API/routes, cross-tenant read/write and revoked roles in isolated role contexts | broken and denied-control Level 7 contracts | | Evidence reports | HTML, scan/summary/finding/environment JSON, screenshots, traces/videos, cleanup ledger, reproductions, and per-finding network/snapshot/console/WebSocket/upload/download/contract JSON | artifact existence and timeline checks in browser smoke | | Trace and video | Portable Playwright trace ZIP and browser video linked from reports | opt-in CLI and contract smoke | +| Secret-safe trace retention | Every newly closed scan/contract trace is inspected before linkage; unsafe or unscannable ZIPs are deleted and only value-free suppression metadata remains | direct ZIP safe/secret/invalid controls plus real-browser automatic-scan and recorded-contract sensitive-field controls; aggregate RG14 scan must remain green | | Replay and cleanup | Fresh execution distinguishes reproduced, changed, environment-changed, target-missing, and uncertain outcomes; provider-backed reproductions require fresh exact causal provider proof; cleanup is idempotent and benchmark-gated | five-outcome browser smoke, provider broken/control replay, benchmark replay, and cleanup smoke | | Flow recording | Human-driven navigation/click/fill/select/check/keypress/upload/rich-text/drag interactions become a schema-valid contract plus masked rrweb evidence | complex recorder browser smoke and real Conduit login recording | | Recorded verification | Semantic source/target steps and request/status/text/persistence/popup/download assertions run deterministically | complex contract browser smoke and generated Playwright execution | diff --git a/src/browser/executor.ts b/src/browser/executor.ts index 7b88941..ced0c42 100644 --- a/src/browser/executor.ts +++ b/src/browser/executor.ts @@ -6,6 +6,7 @@ import { classifyAction } from "../core/classify.js"; import { hashText, isSensitiveKey, safeUrl } from "../core/redact.js"; import { isTransientBrowserError, withRetry } from "../core/retry.js"; import { actionSkipReason, isSafetyEscalation } from "../core/safety.js"; +import { retainSecretSafeTrace, type ArtifactSecret } from "../release/artifacts.js"; import type { ActionSpec, ExecutionEvidence, FilledField, ScanOptions, UploadEvidence } from "../types.js"; import { attachEvidence, captureState, collectUiClaims } from "./evidence.js"; import { resolveSemanticLocator, SemanticTargetNotFoundError } from "./locator.js"; @@ -159,8 +160,14 @@ async function assertLiveActionSafety( if (reason) throw new PreExecutionSafetyError(`Pre-execution safety check: ${reason}`, runtimeAction); } -async function fillForm(page: InteractionScope, action: ActionSpec, canary: string, uploads: UploadEvidence[]): Promise { +async function fillForm( + page: InteractionScope, + action: ActionSpec, + canary: string, + uploads: UploadEvidence[], +): Promise<{ fields: FilledField[]; traceSecrets: ArtifactSecret[] }> { const filled: FilledField[] = []; + const traceSecrets: ArtifactSecret[] = []; for (const [fieldIndex, field] of action.fields.entries()) { if (field.disabled) continue; const plan = valueForField(field, `${canary}_${fieldIndex + 1}`); @@ -190,12 +197,13 @@ async function fillForm(page: InteractionScope, action: ActionSpec, canary: stri const name = field.name ?? field.label ?? field.placeholder ?? field.type; const redacted = plan.redacted || isSensitiveKey(name); filled.push({ selector: field.selector, name, type: field.type, value: redacted ? "[REDACTED]" : plan.value, redacted }); + if (redacted) traceSecrets.push({ label: `browser field ${fieldIndex + 1}`, value: plan.value }); } } catch { // A single unsupported field must not invalidate an otherwise runnable form. } } - return filled; + return { fields: filled, traceSecrets }; } async function nearestTargetText(locator: Locator): Promise { @@ -321,6 +329,7 @@ export async function executeAction( await context.grantPermissions(["clipboard-write"], { origin: new URL(options.targetUrl).origin }).catch(() => undefined); let activationStarted = false; let blockedNavigation: string | undefined; + let traceSecrets: ArtifactSecret[] = []; if (!options.allowExternal) { const targetOrigin = new URL(options.targetUrl).origin; await context.route("**/*", async (route) => { @@ -376,7 +385,9 @@ export async function executeAction( if (targetText) evidence.targetText = targetText; } attached = attachEvidence(page, startedAt, evidence); - evidence.filledFields = await fillForm(targetScope, action, canary, evidence.uploads ??= []); + const filled = await fillForm(targetScope, action, canary, evidence.uploads ??= []); + evidence.filledFields = filled.fields; + traceSecrets = filled.traceSecrets; evidence.beforeAction = await captureState(targetScope, canary, startedAt); // Filling can run application handlers that replace the submitter or escalate // its target. Re-read the effective live action immediately before activation. @@ -537,16 +548,26 @@ export async function executeAction( await attached?.flush(); attached?.detach(); evidence.durationMs = Date.now() - startedAt; + let traceRetentionError: unknown; if (options.trace || options.traceOnFailure) { const tracePath = path.join(traceDirectory, `${action.id}.zip`); const saved = await context.tracing.stop({ path: tracePath }).then(() => true).catch(() => false); - if (saved) evidence.trace = tracePath; + if (saved) { + try { + const retention = await retainSecretSafeTrace(tracePath, { secrets: traceSecrets }); + if (retention.retained) evidence.trace = tracePath; + else evidence.traceSuppression = retention.suppression; + } catch (error) { + traceRetentionError = error; + } + } } await context.close(); if (video) { const videoPath = await video.path().catch(() => undefined); if (videoPath) evidence.video = videoPath; } + if (traceRetentionError) throw traceRetentionError; } return evidence; } diff --git a/src/contracts/report.ts b/src/contracts/report.ts index 7d8830f..5737a78 100644 --- a/src/contracts/report.ts +++ b/src/contracts/report.ts @@ -26,6 +26,7 @@ export function renderContractVerification(result: ContractVerification): string ? `
Full evidence

${[ ...result.artifacts.traces.map((file) => `Trace`), ...result.artifacts.videos.map((file) => `Video`), + ...(result.artifacts.traceSuppressions ?? []).map((suppression) => `Trace suppressed by secret-safety inspection (${escapeHtml(suppression.reason)}; ${escapeHtml(suppression.findingKinds.join(", "))})`), ].join(" · ")}

` : ""; return `RealDone verify · ${escapeHtml(result.contractName)}
REALDONE / RECORDED VERIFICATION

${escapeHtml(result.contractName)}

${result.passed ? "PASSED" : "FAILED"}

${escapeHtml(result.verificationId)} · ${escapeHtml(result.browser)} · ${result.deep ? "deep fresh-context" : "standard"} · roles ${escapeHtml(result.roles.join(", "))} · ${result.steps.length} steps

${performance}${artifacts}${rows}
`; diff --git a/src/contracts/schema.ts b/src/contracts/schema.ts index 3273caf..e669574 100644 --- a/src/contracts/schema.ts +++ b/src/contracts/schema.ts @@ -4,6 +4,7 @@ import type { SourceCleanupTarget, SourceEvidence, SourceExpectation } from "../ import type { BrowserName } from "../browser/runtime.js"; import type { ProviderEvidence, ProviderExpectation } from "../providers/types.js"; import type { PerformanceEvaluation } from "../performance/budget.js"; +import type { TraceSuppression } from "../release/artifacts.js"; import type { EvidenceLevel, LocatorResolution, PersistenceScope, SemanticFingerprint } from "../types.js"; export type ContractStepType = "navigate" | "click" | "fill" | "check" | "select" | "press" | "upload" | "richtext" | "drag"; @@ -119,7 +120,7 @@ export interface ContractVerification { finishedAt: string; passed: boolean; performance?: PerformanceEvaluation; - artifacts?: { traces: string[]; videos: string[] }; + artifacts?: { traces: string[]; videos: string[]; traceSuppressions?: TraceSuppression[] }; steps: StepVerification[]; } diff --git a/src/contracts/verifier.ts b/src/contracts/verifier.ts index 7e4fda5..20cd4fc 100644 --- a/src/contracts/verifier.ts +++ b/src/contracts/verifier.ts @@ -16,6 +16,7 @@ import { PluginHost } from "../plugins/host.js"; import { BuiltinProviderHost } from "../providers/builtin.js"; import { evaluatePerformance, loadPerformanceBudget } from "../performance/budget.js"; import { actionSkipReason } from "../core/safety.js"; +import { retainSecretSafeTrace, type ArtifactSecret, type TraceSuppression } from "../release/artifacts.js"; import type { NetworkEvidence } from "../types.js"; import { loadBehaviorContract, type BehaviorStep, type ContractExpectation, type ContractVerification, type StepVerification } from "./schema.js"; import { renderContractVerification } from "./report.js"; @@ -434,7 +435,7 @@ async function verifyExpectation( interface RolePages { page(role?: string): Promise; freshPage(role?: string): Promise; - close(): Promise<{ traces: string[]; videos: string[] }>; + close(): Promise<{ traces: string[]; videos: string[]; traceSuppressions: TraceSuppression[] }>; } function createRolePages( @@ -454,6 +455,11 @@ function createRolePages( const contexts: ContextEntry[] = []; let freshSequence = 0; const contractDirectory = path.dirname(contractFile); + const traceSecrets: ArtifactSecret[] = contract.steps.flatMap((step, index) => { + if (!step.secretEnv) return []; + const value = process.env[step.secretEnv]; + return value ? [{ label: `contract step ${index + 1}`, value }] : []; + }); const storageFor = (role: string): string | undefined => { if (role === "default") { const contractStorage = contract.authState?.path @@ -495,11 +501,21 @@ function createRolePages( close: async () => { const traces: string[] = []; const videos: string[] = []; + const traceSuppressions: TraceSuppression[] = []; + let traceRetentionError: unknown; for (const entry of contexts) { if (options.trace || options.traceOnFailure) { const tracePath = path.join(outputDirectory, "traces", `${entry.name}.zip`); const saved = await entry.context.tracing.stop({ path: tracePath }).then(() => true).catch(() => false); - if (saved) traces.push(portable(tracePath)); + if (saved) { + try { + const retention = await retainSecretSafeTrace(tracePath, { secrets: traceSecrets }); + if (retention.retained) traces.push(portable(tracePath)); + else traceSuppressions.push(retention.suppression); + } catch (error) { + traceRetentionError ??= error; + } + } } await entry.context.close().catch(() => undefined); if (entry.video) { @@ -509,7 +525,8 @@ function createRolePages( } opened.clear(); contexts.length = 0; - return { traces, videos }; + if (traceRetentionError) throw traceRetentionError; + return { traces, videos, traceSuppressions }; }, }; } @@ -566,7 +583,7 @@ export async function verifyContract( const rolePages = createRolePages(browser, absoluteContract, contract, options, outputDirectory); const startedAt = new Date(); const results: StepVerification[] = []; - let artifacts: { traces: string[]; videos: string[] } = { traces: [], videos: [] }; + let artifacts: { traces: string[]; videos: string[]; traceSuppressions: TraceSuppression[] } = { traces: [], videos: [], traceSuppressions: [] }; let blocked = false; try { for (const step of contract.steps) { @@ -703,7 +720,7 @@ export async function verifyContract( artifacts.traces = []; } if (performance) verification.performance = performance; - if (artifacts.traces.length > 0 || artifacts.videos.length > 0) verification.artifacts = artifacts; + if (artifacts.traces.length > 0 || artifacts.videos.length > 0 || artifacts.traceSuppressions.length > 0) verification.artifacts = artifacts; await Promise.all([ writeFile(path.join(outputDirectory, "verification.json"), `${JSON.stringify(verification, null, 2)}\n`), writeFile(path.join(outputDirectory, "report.html"), renderContractVerification(verification)), diff --git a/src/index.ts b/src/index.ts index 27e70e0..92815dd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -134,12 +134,16 @@ export { detect, findingFromEvidence } from "./detectors/index.js"; export { runManagedScan, type ManagedScanRequest, type RuntimeMode } from "./application/managed-scan.js"; export { createRealDoneMcpServer, runRealDoneMcpServer, type RealDoneMcpDependencies, type RealDoneMcpServerOptions } from "./mcp/server.js"; export { + retainSecretSafeTrace, + scanArtifactFileSecrets, scanArtifactSecrets, type ArtifactSecret, type ArtifactSecretFinding, type ArtifactSecretFindingKind, type ArtifactSecretScan, type ArtifactSecretScanOptions, + type SecretSafeTraceRetention, + type TraceSuppression, } from "./release/artifacts.js"; export { checkArtifactSchemaCompatibility, diff --git a/src/release/artifacts.ts b/src/release/artifacts.ts index f7c0c4a..449c82a 100644 --- a/src/release/artifacts.ts +++ b/src/release/artifacts.ts @@ -1,5 +1,5 @@ import { createHash } from "node:crypto"; -import { readFile, readdir, stat } from "node:fs/promises"; +import { readFile, readdir, rm, stat, truncate } from "node:fs/promises"; import path from "node:path"; import { unzipSync } from "fflate"; @@ -43,6 +43,16 @@ export interface ArtifactSecretScanOptions { maxArchiveExpandedBytes?: number; } +export interface TraceSuppression { + artifact: "trace"; + reason: "secret-detected" | "inspection-failed"; + findingKinds: ArtifactSecretFindingKind[]; +} + +export type SecretSafeTraceRetention = + | { retained: true } + | { retained: false; suppression: TraceSuppression }; + const binaryExtensions = new Set([".gif", ".jpeg", ".jpg", ".mp4", ".pdf", ".png", ".webm"]); const genericPatterns: Array<{ kind: ArtifactSecretFindingKind; expression: RegExp; detail: string }> = [ { kind: "private-key", expression: /-----BEGIN (?:EC |OPENSSH |RSA )?PRIVATE KEY-----/g, detail: "Private-key material appears in an artifact." }, @@ -112,13 +122,7 @@ async function filesUnder(root: string): Promise { return output.sort(); } -export async function scanArtifactSecrets( - root: string, - options: ArtifactSecretScanOptions = {}, -): Promise { - const absoluteRoot = path.resolve(root); - const rootInfo = await stat(absoluteRoot).catch(() => undefined); - if (!rootInfo?.isDirectory()) throw new Error(`Artifact scan root is not a directory: ${absoluteRoot}`); +function createArtifactScanner(options: ArtifactSecretScanOptions) { const secrets = (options.secrets ?? []).filter((secret) => secret.value.length >= 4); const maxFileBytes = options.maxFileBytes ?? 50 * 1024 * 1024; const maxArchiveEntries = options.maxArchiveEntries ?? 5_000; @@ -137,18 +141,30 @@ export async function scanArtifactSecrets( if (archive || path.extname(file).toLowerCase() === ".zip") { scannedArchives += 1; let entries: Record; + let archiveEntries = 0; + let declaredExpandedBytes = 0; + let archiveLimitExceeded = false; try { - entries = unzipSync(bytes); + entries = unzipSync(bytes, { + filter: (entry) => { + archiveEntries += 1; + declaredExpandedBytes += entry.originalSize; + if (archiveEntries > maxArchiveEntries || declaredExpandedBytes > maxArchiveExpandedBytes) { + archiveLimitExceeded = true; + return false; + } + return true; + }, + }); } catch { findings.push({ file, kind: "scan-limit", fingerprint: fingerprint(file), detail: "ZIP artifact could not be inspected." }); return; } - const names = Object.keys(entries); - const expandedBytes = Object.values(entries).reduce((total, value) => total + value.byteLength, 0); - if (names.length > maxArchiveEntries || expandedBytes > maxArchiveExpandedBytes) { + if (archiveLimitExceeded) { findings.push({ file, kind: "scan-limit", fingerprint: fingerprint(file), detail: "ZIP artifact exceeds bounded entry or expanded-size limits." }); return; } + const names = Object.keys(entries); for (const name of names.sort()) { const value = entries[name]; if (!value || !looksText(value)) continue; @@ -160,22 +176,92 @@ export async function scanArtifactSecrets( inspectText(file, new TextDecoder().decode(bytes), secrets, findings); }; + const inspectFile = async (file: string, label: string): Promise => { + const info = await stat(file); + scannedFiles += 1; + if (info.size > maxFileBytes) { + findings.push({ file: label, kind: "scan-limit", fingerprint: fingerprint(label), detail: `Artifact exceeds the ${maxFileBytes}-byte scan limit.` }); + return; + } + const bytes = await readFile(file); + inspectBytes(label, bytes); + }; + + const result = (root: string): ArtifactSecretScan => { + const unique = [...new Map(findings.map((finding) => [`${finding.file}\0${finding.kind}\0${finding.fingerprint}`, finding])).values()] + .sort((left, right) => `${left.file}:${left.kind}`.localeCompare(`${right.file}:${right.kind}`)); + return { + schemaVersion: "1.0", + root, + scannedFiles, + scannedArchives, + scannedBytes, + passed: unique.length === 0, + findings: unique, + }; + }; + + return { inspectFile, result }; +} + +export async function scanArtifactSecrets( + root: string, + options: ArtifactSecretScanOptions = {}, +): Promise { + const absoluteRoot = path.resolve(root); + const rootInfo = await stat(absoluteRoot).catch(() => undefined); + if (!rootInfo?.isDirectory()) throw new Error(`Artifact scan root is not a directory: ${absoluteRoot}`); + const scanner = createArtifactScanner(options); for (const file of await filesUnder(absoluteRoot)) { const relative = path.relative(absoluteRoot, file).split(path.sep).join("/"); - const bytes = await readFile(file); - scannedFiles += 1; - inspectBytes(relative, bytes); + await scanner.inspectFile(file, relative); } + return scanner.result(absoluteRoot); +} + +export async function scanArtifactFileSecrets( + file: string, + options: ArtifactSecretScanOptions = {}, +): Promise { + const absoluteFile = path.resolve(file); + const fileInfo = await stat(absoluteFile).catch(() => undefined); + if (!fileInfo?.isFile()) throw new Error(`Artifact scan target is not a file: ${absoluteFile}`); + const scanner = createArtifactScanner(options); + await scanner.inspectFile(absoluteFile, path.basename(absoluteFile)); + return scanner.result(absoluteFile); +} + +async function removeRejectedTrace(file: string): Promise { + await rm(file, { force: true }).catch(async () => { + await truncate(file, 0); + await rm(file, { force: true }); + }); + if (await stat(file).catch(() => undefined)) throw new Error("Rejected trace artifact could not be removed."); +} - const unique = [...new Map(findings.map((finding) => [`${finding.file}\0${finding.kind}\0${finding.fingerprint}`, finding])).values()] - .sort((left, right) => `${left.file}:${left.kind}`.localeCompare(`${right.file}:${right.kind}`)); +export async function retainSecretSafeTrace( + file: string, + options: ArtifactSecretScanOptions = {}, +): Promise { + let scan: ArtifactSecretScan; + try { + scan = await scanArtifactFileSecrets(file, options); + } catch { + await removeRejectedTrace(file); + return { + retained: false, + suppression: { artifact: "trace", reason: "inspection-failed", findingKinds: ["scan-limit"] }, + }; + } + if (scan.passed) return { retained: true }; + await removeRejectedTrace(file); + const findingKinds = [...new Set(scan.findings.map((finding) => finding.kind))].sort(); return { - schemaVersion: "1.0", - root: absoluteRoot, - scannedFiles, - scannedArchives, - scannedBytes, - passed: unique.length === 0, - findings: unique, + retained: false, + suppression: { + artifact: "trace", + reason: findingKinds.every((kind) => kind === "scan-limit") ? "inspection-failed" : "secret-detected", + findingKinds, + }, }; } diff --git a/src/report/html.ts b/src/report/html.ts index 750597d..17b71cc 100644 --- a/src/report/html.ts +++ b/src/report/html.ts @@ -57,6 +57,12 @@ function findingTimeline(finding: Finding): string { if (evidence.afterAppRestart) items.push({ at: evidence.afterAppRestart.at, text: `Restarted the managed application; canary present: ${evidence.afterAppRestart.canaryPresent}` }); if (evidence.apiReadBack) items.push({ at: evidence.after?.at ?? evidence.durationMs, text: `API read-back ${evidence.apiReadBack.url} → ${evidence.apiReadBack.status ?? "error"}; canary present: ${evidence.apiReadBack.canaryPresent}` }); if (evidence.executionError) items.push({ at: evidence.durationMs, text: `Execution error: ${evidence.executionError}` }); + if (evidence.traceSuppression) { + items.push({ + at: evidence.durationMs, + text: `Trace suppressed by secret-safety inspection (${evidence.traceSuppression.reason}; ${evidence.traceSuppression.findingKinds.join(", ")}).`, + }); + } for (const interaction of evidence.preparedInteractions ?? []) items.push({ at: 0, text: `Prepared interaction: ${interaction}` }); return items .sort((a, b) => a.at - b.at) diff --git a/src/types.ts b/src/types.ts index 751c004..e498984 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,3 +1,5 @@ +import type { TraceSuppression } from "./release/artifacts.js"; + export type ActionKind = "navigation" | "local" | "mutation" | "external"; export type ActionIntent = | "create" @@ -397,6 +399,7 @@ export interface ExecutionEvidence { screenshot?: string; refreshScreenshot?: string; trace?: string; + traceSuppression?: TraceSuppression; video?: string; snapshotIndex?: string; executionError?: string; diff --git a/test/release-artifacts.test.ts b/test/release-artifacts.test.ts index 064b117..be92258 100644 --- a/test/release-artifacts.test.ts +++ b/test/release-artifacts.test.ts @@ -1,10 +1,10 @@ import assert from "node:assert/strict"; -import { mkdtemp, rm, writeFile } from "node:fs/promises"; +import { mkdtemp, rm, stat, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import path from "node:path"; import test from "node:test"; import { strToU8, zipSync } from "fflate"; -import { scanArtifactSecrets } from "../src/release/artifacts.js"; +import { retainSecretSafeTrace, scanArtifactFileSecrets, scanArtifactSecrets } from "../src/release/artifacts.js"; import { checkArtifactSchemaCompatibility } from "../src/release/schema.js"; test("artifact secret gate scans text and ZIP entries without echoing secrets", async (context) => { @@ -39,6 +39,46 @@ test("artifact secret gate passes redacted evidence and fails closed on archive assert.ok(bounded.findings.some((finding) => finding.kind === "scan-limit")); }); +test("trace retention keeps safe ZIPs and removes unsafe or unscannable ZIPs", async (context) => { + const directory = await mkdtemp(path.join(tmpdir(), "realdone-trace-retention-")); + context.after(async () => rm(directory, { recursive: true, force: true })); + const secret = "RD_TRACE_SECRET_93d0f1a7"; + const safeTrace = path.join(directory, "safe.zip"); + const unsafeTrace = path.join(directory, "unsafe.zip"); + const invalidTrace = path.join(directory, "invalid.zip"); + const limitedTrace = path.join(directory, "limited.zip"); + await writeFile(safeTrace, zipSync({ "trace.json": strToU8(JSON.stringify({ password: "[REDACTED]" })) })); + await writeFile(unsafeTrace, zipSync({ "trace.json": strToU8(JSON.stringify({ password: secret })) })); + await writeFile(invalidTrace, "not a ZIP archive"); + await writeFile(limitedTrace, zipSync({ "trace.json": strToU8("safe") })); + + const safeScan = await scanArtifactFileSecrets(safeTrace); + assert.equal(safeScan.passed, true); + assert.deepEqual(await retainSecretSafeTrace(safeTrace), { retained: true }); + assert.ok(await stat(safeTrace)); + + const unsafe = await retainSecretSafeTrace(unsafeTrace, { secrets: [{ label: "browser field", value: secret }] }); + assert.equal(unsafe.retained, false); + if (!unsafe.retained) { + assert.equal(unsafe.suppression.reason, "secret-detected"); + assert.ok(unsafe.suppression.findingKinds.includes("exact-secret")); + } + assert.equal(await stat(unsafeTrace).catch(() => undefined), undefined); + assert.equal(JSON.stringify(unsafe).includes(secret), false); + + const invalid = await retainSecretSafeTrace(invalidTrace); + assert.deepEqual(invalid, { + retained: false, + suppression: { artifact: "trace", reason: "inspection-failed", findingKinds: ["scan-limit"] }, + }); + assert.equal(await stat(invalidTrace).catch(() => undefined), undefined); + + const limited = await retainSecretSafeTrace(limitedTrace, { maxArchiveEntries: 0 }); + assert.equal(limited.retained, false); + if (!limited.retained) assert.equal(limited.suppression.reason, "inspection-failed"); + assert.equal(await stat(limitedTrace).catch(() => undefined), undefined); +}); + test("artifact schema gate accepts a compatible set and rejects a missing required artifact", async (context) => { const directory = await mkdtemp(path.join(tmpdir(), "realdone-artifact-schema-")); context.after(async () => rm(directory, { recursive: true, force: true })); diff --git a/test/smoke.mjs b/test/smoke.mjs index c1106d9..ec45254 100644 --- a/test/smoke.mjs +++ b/test/smoke.mjs @@ -479,6 +479,23 @@ try { }); assert.equal(passingTrace.report.findings[0]?.verdict, "VERIFIED"); assert.equal(passingTrace.report.findings[0]?.evidence.trace, undefined); + const secretTrace = await runScan({ + ...scan, + targetUrl: `${fixture.url}/recorder-secret`, + outputRoot: path.join(outputRoot, "secret-scan-trace"), + maxPages: 1, + maxActions: 1, + deep: false, + trace: true, + traceOnFailure: false, + }); + const secretTraceFinding = secretTrace.report.findings.find((finding) => finding.action.label.includes("Login")); + assert.equal(secretTraceFinding?.verdict, "CONTRADICTORY"); + assert.equal(secretTraceFinding?.evidence.trace, undefined); + assert.equal(secretTraceFinding?.evidence.traceSuppression?.reason, "secret-detected"); + assert.ok(secretTraceFinding?.evidence.traceSuppression?.findingKinds.includes("exact-secret")); + assert.equal((await readdir(path.join(secretTrace.reportDirectory, "traces"))).length, 0); + assert.match(await readFile(path.join(secretTrace.reportDirectory, "report.html"), "utf8"), /Trace suppressed by secret-safety inspection/); const selectorFinding = result.report.findings.find((finding) => finding.action.label.includes("Toggle resilient")); assert.equal(selectorFinding?.evidence.locatorResolution?.chosenStrategy, "role"); const cleanupDryRun = await runCleanup(result.reportDirectory, { confirm: false, allowHosts: [], retries: 1 }); @@ -532,6 +549,33 @@ try { const passwordStep = secretRecording.contract.steps.find((step) => step.type === "fill" && step.secretEnv); assert.equal(passwordStep?.secretEnv, "REALDONE_PASSWORD"); assert.equal(passwordStep?.fingerprint?.accessibleName, "Password"); + const previousRecordedPassword = process.env.REALDONE_PASSWORD; + process.env.REALDONE_PASSWORD = recorderSecret; + let secretTraceVerification; + try { + secretTraceVerification = await verifyContract(secretRecording.contractFile, { + outputRoot: path.join(outputRoot, "secret-trace-verifications"), + headed: false, + timeoutMs: 8_000, + settleMs: 300, + maxRetries: 2, + continueOnFailure: false, + allowDestructive: false, + allowExternal: false, + allowHosts: [], + trace: true, + ...(process.env.REALDONE_BROWSER_PATH ? { executablePath: process.env.REALDONE_BROWSER_PATH } : {}), + }); + } finally { + if (previousRecordedPassword === undefined) delete process.env.REALDONE_PASSWORD; + else process.env.REALDONE_PASSWORD = previousRecordedPassword; + } + assert.equal(secretTraceVerification.verification.passed, true); + assert.equal(secretTraceVerification.verification.artifacts?.traces.length ?? 0, 0); + assert.ok((secretTraceVerification.verification.artifacts?.traceSuppressions?.length ?? 0) > 0); + assert.ok(secretTraceVerification.verification.artifacts.traceSuppressions.some((item) => item.reason === "secret-detected")); + assert.equal((await readdir(path.join(secretTraceVerification.outputDirectory, "traces"))).length, 0); + assert.match(await readFile(path.join(secretTraceVerification.outputDirectory, "report.html"), "utf8"), /Trace suppressed by secret-safety inspection/); const cspRecording = await recordFlow( { targetUrl: `${fixture.url}/recorder-csp`, From ce2d1fdde3042968d1afc900a728bf7db3904534 Mon Sep 17 00:00:00 2001 From: datzle123 Date: Sun, 26 Jul 2026 17:17:22 +0700 Subject: [PATCH 2/3] Cover opaque auth state in trace retention --- CHANGELOG.md | 2 +- docs/PRODUCT_SPECIFICATION.md | 2 +- docs/PRODUCT_STATUS.md | 2 +- docs/ROADMAP.md | 2 +- docs/THREAT_MODEL.md | 2 +- src/browser/executor.ts | 8 ++++--- src/contracts/verifier.ts | 10 +++++---- src/index.ts | 1 + src/release/artifacts.ts | 36 +++++++++++++++++++++++++++++ test/release-artifacts.test.ts | 24 +++++++++++++++++++- test/smoke.mjs | 41 +++++++++++++++++++++++++++++++--- 11 files changed, 114 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6f254c..c0080e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ All notable changes are documented here. RealDone follows semantic versioning wh ### Added -- Fail-closed per-trace retention for automatic scans and contract/MCP verification: bounded ZIP inspection now runs before report linkage, with additive value-free suppression metadata for deleted unsafe or unscannable traces. +- Fail-closed per-trace retention for automatic scans and contract/MCP verification: bounded ZIP inspection now checks generated sensitive fields, contract `secretEnv`, opaque Playwright auth-state cookies/tokens and generic credential patterns before report linkage, with additive value-free suppression metadata for deleted unsafe or unscannable traces. - Coverage-balanced quick-scan scheduling that represents more routes, action kinds, intents, and keyboard/submit activation paths within the same finite action budget, while placing known policy/environment denials after runnable actions. - Additive action-selection telemetry in JSON and HTML reports, including eligible/selected/omitted counts, route coverage, semantic coverage, denial counts, the deterministic strategy version, and an explicit partial-scan explanation. - Fresh fingerprint-bound qualification across TodoMVC, Actual Budget, Conduit/SQLite, Conduit/PostgreSQL 17 + Supabase Data API, and Codex-generated Pocket Ledger, including PostgreSQL create/update/delete cleanup, Level 7 roles, and a real Codex MCP baseline → RD901 regression → repair cycle. diff --git a/docs/PRODUCT_SPECIFICATION.md b/docs/PRODUCT_SPECIFICATION.md index 2c038ab..6497511 100644 --- a/docs/PRODUCT_SPECIFICATION.md +++ b/docs/PRODUCT_SPECIFICATION.md @@ -658,7 +658,7 @@ Replay Baseline ``` -Mỗi Playwright trace chỉ được liên kết vào evidence sau khi ZIP vừa tạo đã qua kiểm tra secret có giới hạn. Nếu phát hiện secret, ZIP không đọc được, hoặc vượt giới hạn kiểm tra, RealDone phải xóa trace theo hướng fail-closed, không công bố đường dẫn đã bị loại, và chỉ ghi metadata lý do không chứa giá trị hay fingerprint của secret. Quy tắc này áp dụng giống nhau cho scan tự động, contract verification, browser matrix, CI và MCP. +Mỗi Playwright trace chỉ được liên kết vào evidence sau khi ZIP vừa tạo đã qua kiểm tra secret có giới hạn. Phép kiểm tra phải gồm cả sensitive field được điền, `secretEnv`, opaque cookie/token trong Playwright `storageState` đã được cấp, và các pattern credential tổng quát. Nếu phát hiện secret, ZIP không đọc được, hoặc vượt giới hạn kiểm tra, RealDone phải xóa trace theo hướng fail-closed, không công bố đường dẫn đã bị loại, và chỉ ghi metadata lý do không chứa giá trị hay fingerprint của secret. Quy tắc này áp dụng giống nhau cho scan tự động, contract verification, browser matrix, CI và MCP. --- diff --git a/docs/PRODUCT_STATUS.md b/docs/PRODUCT_STATUS.md index 47b4ca3..d2faf86 100644 --- a/docs/PRODUCT_STATUS.md +++ b/docs/PRODUCT_STATUS.md @@ -24,7 +24,7 @@ Phase J is an unreleased hardening candidate: scan and contract/MCP traces are i | §6 Project Discovery/Runtime Manager | IMPLEMENTED | `init` profiles single-package/monorepo projects; npm fallback without lock metadata; project-local Python virtual environments; zero-config static HTML plus conventional Node, Django/FastAPI/Flask, Laravel/PHP, Rails, ASP.NET Core, Spring Boot, Deno, Go and Rust managed runtimes; occupied-port rejection, development/production/Docker health-checks, logs, bounded restarts and process cleanup; installed-tarball scans start, verify and stop metadata-free static and npm projects in hosted run `29977292441` | Custom runtimes use an explicit HTTP URL; new ecosystem hints must add cross-platform broken/control and package evidence | | §7 Environment Health Gate | IMPLEMENTED | main/route document, critical asset/content-type, bootstrap/render, health-endpoint and auth-state checks; separate `environment.json`; broken/control fixtures and TodoMVC defect copy | Additional ecosystem-specific diagnostics may be added without changing the implemented fail-closed contract | | §8–11 Discovery, classification, data, executor | IMPLEMENTED | forms/links/buttons/native controls, Enter, hover/context, lazy-scroll, popup/download, opt-in same-origin iframe, complex-action recording boundaries, constraint-aware canaries, network-idle/stale/retry safety, and budget selection that avoids route/semantic starvation and known-denial budget waste | Framework-specific discovery adapters may broaden coverage without changing the implemented safe-execution contract | -| §12–13 Evidence and snapshots | IMPLEMENTED | URL, redacted semantic DOM/control hashes, cookie hashes, local/session storage, bounded IndexedDB metadata, request/response, WebSocket frames, console/page error, upload/download digests, screenshots, trace/video/timeline, value-free source diffs, and redacted automatic provider evidence/artifacts; every retained browser/contract trace passes bounded ZIP and known-secret inspection before linkage, while unsafe/unscannable traces are deleted with value-free suppression metadata; reproductions retain value-free provider requirements and replay requires fresh exact causal confirmation | New evidence adapters must preserve the implemented redaction, retention, linkage and replay contract | +| §12–13 Evidence and snapshots | IMPLEMENTED | URL, redacted semantic DOM/control hashes, cookie hashes, local/session storage, bounded IndexedDB metadata, request/response, WebSocket frames, console/page error, upload/download digests, screenshots, trace/video/timeline, value-free source diffs, and redacted automatic provider evidence/artifacts; every retained browser/contract trace passes bounded ZIP inspection against generated sensitive fields, `secretEnv`, opaque auth-state cookies/tokens and generic credential patterns before linkage, while unsafe/unscannable traces are deleted with value-free suppression metadata; reproductions retain value-free provider requirements and replay requires fresh exact causal confirmation | New evidence adapters must preserve the implemented redaction, retention, linkage and replay contract | | §14 Persistence | IMPLEMENTED | immediate/reload/hard-reload/new-tab/clean-context/logout-login/app-restart/API read-back strategies; all seven scopes are executable through browser smoke, contract Level 6/7 checks and deterministic scope tests | Additional application-specific adapters may extend confirmation without changing the implemented scope contract | | §15–17 Verdicts and evidence hierarchy | IMPLEMENTED | scan verdicts, regression `EXPECTED_CHANGE`/`REGRESSION` outcomes, separate `ENVIRONMENT_INVALID`/`BLOCKED`, priority resolution and Levels 0–7 across scan/contract/baseline/report evidence | New adapters must preserve this implemented hierarchy | | §18 Detector system | IMPLEMENTED | all 58 catalogued RD001–RD1005 detectors have production classification plus unit, browser/contract, regression or environment broken/control evidence | New detectors require the same broken/control and observable-evidence policy | diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index d375a4f..6279197 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -159,7 +159,7 @@ Contributes evidence to: §12–13, §21, §25, §29–30. Gate: - Every automatic-scan and contract/MCP trace is inspected immediately after Playwright closes the ZIP and before any report links it. -- Exact sensitive values already known to the browser/contract and generic private-key/token/sensitive-field patterns are checked without persisting or reporting those values. +- Exact sensitive values already known to the browser/contract—including opaque Playwright auth-state cookies/tokens—and generic private-key/token/sensitive-field patterns are checked without persisting or reporting those values. - Secret-bearing, invalid, oversized, or over-expanded trace ZIPs are deleted fail-closed; reports contain only additive value-free suppression metadata. - A real-browser sensitive-field broken case loses its trace, a non-sensitive trace control remains available, invalid/limit unit controls fail closed, and the final aggregate artifact secret scan remains green. - Typecheck, unit, browser, audit, package, schema, cleanup and hosted cross-platform release gates pass without weakening RG14. diff --git a/docs/THREAT_MODEL.md b/docs/THREAT_MODEL.md index 418c2c7..2e3f3e3 100644 --- a/docs/THREAT_MODEL.md +++ b/docs/THREAT_MODEL.md @@ -30,7 +30,7 @@ RealDone executes browsers, test actions, database reads, optional cleanup, prov - **Plugin invents a verdict:** plugins return a typed observation; RealDone validates it and computes pass/fail. A malicious trusted plugin can still lie about `found`, so plugin provenance remains part of the trust model. - **UI false success:** browser/network/refresh/source/provider/cross-role evidence remains separate from UI claims. - **Release summary detached from its run:** external-case evidence is accepted only when its repository-confined raw `scan.json` exists, matches the recorded SHA-256, and agrees exactly with the published scan counters and verdict map. -- **Browser trace retains a credential:** every newly closed trace is inspected before linkage against generic secret forms and the exact sensitive values known to that scan/contract; unsafe, invalid, oversized, or over-expanded ZIPs are deleted and only value-free suppression metadata remains. +- **Browser trace retains a credential:** every newly closed trace is inspected before linkage against generic secret forms and the exact sensitive values known to that scan/contract, including opaque cookies/tokens read from the granted Playwright storage state; unsafe, invalid, oversized, or over-expanded ZIPs are deleted and only value-free suppression metadata remains. ## Residual risks diff --git a/src/browser/executor.ts b/src/browser/executor.ts index ced0c42..4e549eb 100644 --- a/src/browser/executor.ts +++ b/src/browser/executor.ts @@ -6,7 +6,7 @@ import { classifyAction } from "../core/classify.js"; import { hashText, isSensitiveKey, safeUrl } from "../core/redact.js"; import { isTransientBrowserError, withRetry } from "../core/retry.js"; import { actionSkipReason, isSafetyEscalation } from "../core/safety.js"; -import { retainSecretSafeTrace, type ArtifactSecret } from "../release/artifacts.js"; +import { retainSecretSafeTrace, storageStateArtifactSecrets, type ArtifactSecret } from "../release/artifacts.js"; import type { ActionSpec, ExecutionEvidence, FilledField, ScanOptions, UploadEvidence } from "../types.js"; import { attachEvidence, captureState, collectUiClaims } from "./evidence.js"; import { resolveSemanticLocator, SemanticTargetNotFoundError } from "./locator.js"; @@ -320,6 +320,9 @@ export async function executeAction( ...(options.trace || options.traceOnFailure ? [mkdir(traceDirectory, { recursive: true })] : []), ...(options.video ? [mkdir(videoDirectory, { recursive: true })] : []), ]); + const traceSecrets = options.storageStatePath + ? await storageStateArtifactSecrets(options.storageStatePath) + : []; const context = await browser.newContext( { ...(options.storageStatePath ? { storageState: options.storageStatePath } : {}), @@ -329,7 +332,6 @@ export async function executeAction( await context.grantPermissions(["clipboard-write"], { origin: new URL(options.targetUrl).origin }).catch(() => undefined); let activationStarted = false; let blockedNavigation: string | undefined; - let traceSecrets: ArtifactSecret[] = []; if (!options.allowExternal) { const targetOrigin = new URL(options.targetUrl).origin; await context.route("**/*", async (route) => { @@ -387,7 +389,7 @@ export async function executeAction( attached = attachEvidence(page, startedAt, evidence); const filled = await fillForm(targetScope, action, canary, evidence.uploads ??= []); evidence.filledFields = filled.fields; - traceSecrets = filled.traceSecrets; + traceSecrets.push(...filled.traceSecrets); evidence.beforeAction = await captureState(targetScope, canary, startedAt); // Filling can run application handlers that replace the submitter or escalate // its target. Re-read the effective live action immediately before activation. diff --git a/src/contracts/verifier.ts b/src/contracts/verifier.ts index 20cd4fc..a94d3ac 100644 --- a/src/contracts/verifier.ts +++ b/src/contracts/verifier.ts @@ -16,7 +16,7 @@ import { PluginHost } from "../plugins/host.js"; import { BuiltinProviderHost } from "../providers/builtin.js"; import { evaluatePerformance, loadPerformanceBudget } from "../performance/budget.js"; import { actionSkipReason } from "../core/safety.js"; -import { retainSecretSafeTrace, type ArtifactSecret, type TraceSuppression } from "../release/artifacts.js"; +import { retainSecretSafeTrace, storageStateArtifactSecrets, type ArtifactSecret, type TraceSuppression } from "../release/artifacts.js"; import type { NetworkEvidence } from "../types.js"; import { loadBehaviorContract, type BehaviorStep, type ContractExpectation, type ContractVerification, type StepVerification } from "./schema.js"; import { renderContractVerification } from "./report.js"; @@ -450,12 +450,13 @@ function createRolePages( page: Page; name: string; video: Video | null; + traceSecrets: ArtifactSecret[]; } const opened = new Map(); const contexts: ContextEntry[] = []; let freshSequence = 0; const contractDirectory = path.dirname(contractFile); - const traceSecrets: ArtifactSecret[] = contract.steps.flatMap((step, index) => { + const contractTraceSecrets: ArtifactSecret[] = contract.steps.flatMap((step, index) => { if (!step.secretEnv) return []; const value = process.env[step.secretEnv]; return value ? [{ label: `contract step ${index + 1}`, value }] : []; @@ -475,6 +476,7 @@ function createRolePages( const open = async (role: string, fresh: boolean): Promise => { if (role !== "default" && !contract.roles?.[role]) throw new Error(`Unknown behavior role: ${role}`); const storageState = storageFor(role); + const storageStateSecrets = storageState ? await storageStateArtifactSecrets(storageState) : []; const context = await browser.newContext({ ...(storageState ? { storageState } : {}), ...(options.video ? { recordVideo: { dir: path.join(outputDirectory, "videos") } } : {}), @@ -482,7 +484,7 @@ function createRolePages( const page = await context.newPage(); const name = fresh ? `${role}-fresh-${++freshSequence}` : role; if (options.trace || options.traceOnFailure) await context.tracing.start({ screenshots: true, snapshots: true, sources: false }); - const entry = { context, page, name, video: page.video() }; + const entry = { context, page, name, video: page.video(), traceSecrets: [...contractTraceSecrets, ...storageStateSecrets] }; contexts.push(entry); return entry; }; @@ -509,7 +511,7 @@ function createRolePages( const saved = await entry.context.tracing.stop({ path: tracePath }).then(() => true).catch(() => false); if (saved) { try { - const retention = await retainSecretSafeTrace(tracePath, { secrets: traceSecrets }); + const retention = await retainSecretSafeTrace(tracePath, { secrets: entry.traceSecrets }); if (retention.retained) traces.push(portable(tracePath)); else traceSuppressions.push(retention.suppression); } catch (error) { diff --git a/src/index.ts b/src/index.ts index 92815dd..f2180bc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -137,6 +137,7 @@ export { retainSecretSafeTrace, scanArtifactFileSecrets, scanArtifactSecrets, + storageStateArtifactSecrets, type ArtifactSecret, type ArtifactSecretFinding, type ArtifactSecretFindingKind, diff --git a/src/release/artifacts.ts b/src/release/artifacts.ts index 449c82a..614106b 100644 --- a/src/release/artifacts.ts +++ b/src/release/artifacts.ts @@ -54,6 +54,7 @@ export type SecretSafeTraceRetention = | { retained: false; suppression: TraceSuppression }; const binaryExtensions = new Set([".gif", ".jpeg", ".jpg", ".mp4", ".pdf", ".png", ".webm"]); +const storageSecretKey = /authorization|cookie|password|passwd|secret|token|api[-_]?key|session/i; const genericPatterns: Array<{ kind: ArtifactSecretFindingKind; expression: RegExp; detail: string }> = [ { kind: "private-key", expression: /-----BEGIN (?:EC |OPENSSH |RSA )?PRIVATE KEY-----/g, detail: "Private-key material appears in an artifact." }, { kind: "live-provider-key", expression: /\b(?:rk|sk)_live_[A-Za-z0-9]{8,}\b/g, detail: "A live provider key appears in an artifact." }, @@ -122,6 +123,41 @@ async function filesUnder(root: string): Promise { return output.sort(); } +function objectValue(value: unknown): Record | undefined { + return value && typeof value === "object" && !Array.isArray(value) ? value as Record : undefined; +} + +export async function storageStateArtifactSecrets(file: string, maxBytes = 5 * 1024 * 1024): Promise { + const absoluteFile = path.resolve(file); + const info = await stat(absoluteFile).catch(() => undefined); + if (!info?.isFile() || info.size > maxBytes) throw new Error("Browser storage state could not be inspected safely for trace retention."); + let input: unknown; + try { + input = JSON.parse(await readFile(absoluteFile, "utf8")) as unknown; + } catch { + throw new Error("Browser storage state could not be inspected safely for trace retention."); + } + const root = objectValue(input); + if (!root) throw new Error("Browser storage state could not be inspected safely for trace retention."); + const values: ArtifactSecret[] = []; + for (const [index, value] of (Array.isArray(root.cookies) ? root.cookies : []).entries()) { + const cookie = objectValue(value); + if (typeof cookie?.value === "string" && cookie.value.length >= 4) { + values.push({ label: `storage-state cookie ${index + 1}`, value: cookie.value }); + } + } + for (const origin of Array.isArray(root.origins) ? root.origins : []) { + const storage = objectValue(origin)?.localStorage; + for (const item of Array.isArray(storage) ? storage : []) { + const entry = objectValue(item); + if (typeof entry?.name === "string" && storageSecretKey.test(entry.name) && typeof entry.value === "string" && entry.value.length >= 4) { + values.push({ label: "storage-state sensitive value", value: entry.value }); + } + } + } + return [...new Map(values.map((secret) => [secret.value, secret])).values()]; +} + function createArtifactScanner(options: ArtifactSecretScanOptions) { const secrets = (options.secrets ?? []).filter((secret) => secret.value.length >= 4); const maxFileBytes = options.maxFileBytes ?? 50 * 1024 * 1024; diff --git a/test/release-artifacts.test.ts b/test/release-artifacts.test.ts index be92258..dacf219 100644 --- a/test/release-artifacts.test.ts +++ b/test/release-artifacts.test.ts @@ -4,7 +4,7 @@ import { tmpdir } from "node:os"; import path from "node:path"; import test from "node:test"; import { strToU8, zipSync } from "fflate"; -import { retainSecretSafeTrace, scanArtifactFileSecrets, scanArtifactSecrets } from "../src/release/artifacts.js"; +import { retainSecretSafeTrace, scanArtifactFileSecrets, scanArtifactSecrets, storageStateArtifactSecrets } from "../src/release/artifacts.js"; import { checkArtifactSchemaCompatibility } from "../src/release/schema.js"; test("artifact secret gate scans text and ZIP entries without echoing secrets", async (context) => { @@ -79,6 +79,28 @@ test("trace retention keeps safe ZIPs and removes unsafe or unscannable ZIPs", a assert.equal(await stat(limitedTrace).catch(() => undefined), undefined); }); +test("trace retention treats opaque auth storage state as exact secret input", async (context) => { + const directory = await mkdtemp(path.join(tmpdir(), "realdone-storage-state-retention-")); + context.after(async () => rm(directory, { recursive: true, force: true })); + const opaqueCookie = "opaque-session-51f02d8c"; + const localToken = "opaque-local-token-71c9a0"; + const storageState = path.join(directory, "auth.json"); + const trace = path.join(directory, "trace.zip"); + await writeFile(storageState, JSON.stringify({ + cookies: [{ name: "sid", value: opaqueCookie, domain: "127.0.0.1", path: "/" }], + origins: [{ origin: "http://127.0.0.1", localStorage: [{ name: "access_token", value: localToken }, { name: "theme", value: "dark" }] }], + })); + await writeFile(trace, zipSync({ "trace.network": strToU8(`Cookie: sid=${opaqueCookie}`) })); + + const secrets = await storageStateArtifactSecrets(storageState); + assert.deepEqual(secrets.map((secret) => secret.value).sort(), [localToken, opaqueCookie].sort()); + const retention = await retainSecretSafeTrace(trace, { secrets }); + assert.equal(retention.retained, false); + if (!retention.retained) assert.ok(retention.suppression.findingKinds.includes("exact-secret")); + assert.equal(await stat(trace).catch(() => undefined), undefined); + assert.equal(JSON.stringify(retention).includes(opaqueCookie), false); +}); + test("artifact schema gate accepts a compatible set and rejects a missing required artifact", async (context) => { const directory = await mkdtemp(path.join(tmpdir(), "realdone-artifact-schema-")); context.after(async () => rm(directory, { recursive: true, force: true })); diff --git a/test/smoke.mjs b/test/smoke.mjs index ec45254..3bc44c5 100644 --- a/test/smoke.mjs +++ b/test/smoke.mjs @@ -1,5 +1,5 @@ import assert from "node:assert/strict"; -import { access, mkdir, mkdtemp, readFile, readdir, writeFile } from "node:fs/promises"; +import { access, mkdir, mkdtemp, readFile, readdir, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import path from "node:path"; import { spawn } from "node:child_process"; @@ -525,6 +525,34 @@ try { assert.ok(recording.contract.steps.some((step) => step.type === "fill")); assert.ok(recording.contract.steps.some((step) => step.type === "click")); assert.ok((recording.contract.artifacts?.rrwebEventCount ?? 0) > 0); + const authStateFile = path.join(flowDirectory, "auth.json"); + const opaqueAuthSession = "opaque-smoke-session-5c23f90a"; + const authState = JSON.parse(await readFile(authStateFile, "utf8")); + authState.cookies.push({ + name: "rd_session", + value: opaqueAuthSession, + domain: new URL(fixture.url).hostname, + path: "/", + expires: -1, + httpOnly: true, + secure: false, + sameSite: "Lax", + }); + await writeFile(authStateFile, JSON.stringify(authState)); + const authenticatedTraceScan = await runScan({ + ...scan, + targetUrl: `${fixture.url}/loading-control`, + outputRoot: path.join(outputRoot, "authenticated-scan-trace"), + storageStatePath: authStateFile, + maxPages: 1, + maxActions: 1, + deep: false, + trace: true, + traceOnFailure: false, + }); + assert.equal(authenticatedTraceScan.report.findings[0]?.evidence.trace, undefined); + assert.equal(authenticatedTraceScan.report.findings[0]?.evidence.traceSuppression?.reason, "secret-detected"); + assert.ok(authenticatedTraceScan.report.findings[0]?.evidence.traceSuppression?.findingKinds.includes("exact-secret")); const recorderSecret = "RD-RECORDER-SECRET-42"; const secretRecording = await recordFlow( { @@ -636,10 +664,12 @@ try { allowDestructive: false, allowExternal: true, allowHosts: [], + trace: true, ...(process.env.REALDONE_BROWSER_PATH ? { executablePath: process.env.REALDONE_BROWSER_PATH } : {}), }); delete process.env.REALDONE_UPLOAD_RECEIPT_FILE; assert.equal(complexVerification.verification.passed, true); + assert.ok((complexVerification.verification.artifacts?.traces.length ?? 0) > 0); recording.contract.roles = { observer: { description: "Independent observer", authState: { path: "auth.json" } }, }; @@ -851,7 +881,8 @@ try { assert.ok(verification.verification.steps.some((step) => step.assertions.some((assertion) => assertion.persistenceScope === "SOURCE_OF_TRUTH_CONFIRMED" && assertion.passed))); assert.equal(verification.verification.performance?.passed, true); assert.equal(verification.verification.deep, true); - assert.ok((verification.verification.artifacts?.traces.length ?? 0) > 0); + assert.equal(verification.verification.artifacts?.traces.length ?? 0, 0); + assert.ok((verification.verification.artifacts?.traceSuppressions?.length ?? 0) > 0); assert.ok((verification.verification.artifacts?.videos.length ?? 0) > 0); for (const artifact of [ ...(verification.verification.artifacts?.traces ?? []), @@ -904,7 +935,8 @@ try { }; const brokenAuthorization = await verifyContract(brokenAuthorizationFile, authorizationOptions); assert.equal(brokenAuthorization.verification.passed, false); - assert.ok((brokenAuthorization.verification.artifacts?.traces.length ?? 0) > 0); + assert.equal(brokenAuthorization.verification.artifacts?.traces.length ?? 0, 0); + assert.ok((brokenAuthorization.verification.artifacts?.traceSuppressions?.length ?? 0) > 0); assert.deepEqual( brokenAuthorization.verification.steps.flatMap((step) => step.assertions.map((assertion) => assertion.detectorCode)).filter(Boolean).sort(), ["RD601", "RD602", "RD603", "RD604", "RD605"], @@ -912,6 +944,7 @@ try { const controlAuthorization = await verifyContract(controlAuthorizationFile, authorizationOptions); assert.equal(controlAuthorization.verification.passed, true); assert.equal(controlAuthorization.verification.artifacts?.traces.length ?? 0, 0); + assert.ok((controlAuthorization.verification.artifacts?.traceSuppressions?.length ?? 0) > 0); assert.equal(controlAuthorization.verification.steps.some((step) => step.assertions.some((assertion) => assertion.detectorCode)), false); const verifyOptions = { outputRoot: path.join(outputRoot, "baseline-runs"), @@ -1018,8 +1051,10 @@ try { const sqliteCheck = new SqliteDatabase(sqliteFile, { readonly: true }); assert.equal(sqliteCheck.prepare("SELECT COUNT(*) AS count FROM customers WHERE id = ?").get(1).count, 0); sqliteCheck.close(); + await rm(authStateFile, { force: true }); const artifactSecretGate = await scanArtifactSecrets(outputRoot, { secrets: [ + { label: "opaque auth-state fixture", value: opaqueAuthSession }, { label: "Supabase fixture key", value: "fixture-supabase-key" }, { label: "Stripe fixture key", value: "sk_test_fixture" }, { label: "AWS fixture access key", value: "AKIATEST" }, From c357dfde8a527e37abfaa0a5ad91dbba5c711adb Mon Sep 17 00:00:00 2001 From: datzle123 Date: Sun, 26 Jul 2026 18:12:15 +0700 Subject: [PATCH 3/3] Refresh real-project evidence for Phase J --- CHANGELOG.md | 1 + docs/PRODUCT_STATUS.md | 2 +- docs/REAL_WORLD_VALIDATION.md | 12 +- docs/ROADMAP.md | 2 +- release/evidence/actual-budget.json | 8 +- release/evidence/ai-agent-cycle.json | 30 +- release/evidence/conduit-sources.json | 16 +- release/evidence/conduit.json | 8 +- release/evidence/raw/actual-budget.scan.json | 537 +- release/evidence/raw/ai-agent-cycle.scan.json | 819 +- .../evidence/raw/ai-agent-cycle/baseline.json | 4 +- .../raw/ai-agent-cycle/codex-session.json | 4 +- .../ai-agent-cycle/failed-verification.json | 15 +- .../raw/ai-agent-cycle/regression.json | 10 +- .../evidence/raw/ai-agent-cycle/repair.json | 10 +- .../raw/ai-agent-cycle/role-verification.json | 11 +- .../raw/conduit-postgres-cleanup.json | 7 +- .../raw/conduit-postgres-create.scan.json | 4107 +---- .../raw/conduit-postgres-delete.scan.json | 12619 ++++++++++++---- .../raw/conduit-postgres-update.scan.json | 10635 ++++++------- .../evidence/raw/conduit-sources.scan.json | 10875 ++++--------- release/evidence/raw/conduit.scan.json | 812 +- release/evidence/raw/todomvc.scan.json | 470 +- release/evidence/todomvc.json | 8 +- release/external-cases.json | 20 +- 25 files changed, 19376 insertions(+), 21666 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0080e8..b8ef46f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes are documented here. RealDone follows semantic versioning wh ### Added - Fail-closed per-trace retention for automatic scans and contract/MCP verification: bounded ZIP inspection now checks generated sensitive fields, contract `secretEnv`, opaque Playwright auth-state cookies/tokens and generic credential patterns before report linkage, with additive value-free suppression metadata for deleted unsafe or unscannable traces. +- Fresh fingerprint-bound Phase J qualification across TodoMVC, Actual Budget, Conduit SQLite/PostgreSQL 17/Supabase Data API and Pocket Ledger, including PostgreSQL CRUD cleanup, Level 7 roles and a new Codex MCP RD901 regression/repair cycle. - Coverage-balanced quick-scan scheduling that represents more routes, action kinds, intents, and keyboard/submit activation paths within the same finite action budget, while placing known policy/environment denials after runnable actions. - Additive action-selection telemetry in JSON and HTML reports, including eligible/selected/omitted counts, route coverage, semantic coverage, denial counts, the deterministic strategy version, and an explicit partial-scan explanation. - Fresh fingerprint-bound qualification across TodoMVC, Actual Budget, Conduit/SQLite, Conduit/PostgreSQL 17 + Supabase Data API, and Codex-generated Pocket Ledger, including PostgreSQL create/update/delete cleanup, Level 7 roles, and a real Codex MCP baseline → RD901 regression → repair cycle. diff --git a/docs/PRODUCT_STATUS.md b/docs/PRODUCT_STATUS.md index d2faf86..7c2c3b4 100644 --- a/docs/PRODUCT_STATUS.md +++ b/docs/PRODUCT_STATUS.md @@ -12,7 +12,7 @@ Release `v1.3.3` additionally ran ten pinned MIT projects and detected 10/10 inj Phase I hardening is complete on `main`: coverage-balanced quick-scan scheduling and additive selection telemetry are bound to fingerprint `f3f65840…`. Local type/unit/build (140 tests with 2 expected service-dependent skips), audit, full Chromium smoke, pack and installed-tarball smoke passed. Fresh repository-bound runs covered all five normative external cases: TodoMVC exercised both Enter paths; Actual Budget preserved its safe history-dependent `UNCERTAIN`; Conduit passed untruncated SQLite and PostgreSQL 17 + Supabase Data API scans plus real create/update/delete cleanup; Pocket Ledger passed six visible actions, Level 7 roles, and a new Codex MCP RD901 regression/repair cycle. Hosted run [`30195945498`](https://github.com/datzle123/RealDone/actions/runs/30195945498) passed 15/15 on Linux, macOS and Windows; `gh attestation verify` accepted the signed aggregate evidence and gate report. This main-branch qualification is not a new npm version by itself; `v1.3.3` remains the latest published release. -Phase J is an unreleased hardening candidate: scan and contract/MCP traces are inspected immediately after capture, and unsafe or unscannable ZIPs are deleted before report linkage. The existing full-product status remains valid because this strengthens §12–13/§21/§25 without narrowing behavior; Phase J itself remains a release candidate until its branch and hosted gates pass. +Phase J is an unreleased hardening candidate: scan and contract/MCP traces are inspected immediately after capture, and unsafe or unscannable ZIPs are deleted before report linkage. Candidate fingerprint `0b39d542…` has fresh SHA-256-bound TodoMVC, Actual Budget, Conduit SQLite, Conduit PostgreSQL 17 + Supabase Data API, PostgreSQL CRUD cleanup, Pocket Ledger Level 7 and Codex MCP regression/repair evidence; those inputs merged with the six hosted candidate attestations to pass 15/15 locally, while the signed hosted aggregate rerun remains pending. The existing full-product status remains valid because this strengthens §12–13/§21/§25 without narrowing behavior; Phase J itself remains a release candidate until its branch and hosted gates pass. | Specification area | Status | Evidence currently in the repository | Remaining normative gap | | --- | --- | --- | --- | diff --git a/docs/REAL_WORLD_VALIDATION.md b/docs/REAL_WORLD_VALIDATION.md index 2e73c74..1aa2ad1 100644 --- a/docs/REAL_WORLD_VALIDATION.md +++ b/docs/REAL_WORLD_VALIDATION.md @@ -44,7 +44,7 @@ Replaying the React finding reproduced the same `EPHEMERAL` verdict and the same ## Current-engine release-gate rerun -The Phase G rerun binds each compact evidence document to both the raw `scan.json` SHA-256 and a fingerprint of the current RealDone browser-verification engine. Changes to discovery, managed runtime startup, packaging, release plumbing, or version metadata are instead qualified by the installed-package and hosted cross-platform gates; changes to browser discovery, execution, observation, safety, detectors, contracts, persistence verification, or reports make the checked-in case evidence stale and fail aggregation. +The current-engine rerun binds each compact evidence document to both the raw `scan.json` SHA-256 and a fingerprint of the current RealDone browser-verification engine. Changes to discovery, managed runtime startup, packaging, release plumbing, or version metadata are instead qualified by the installed-package and hosted cross-platform gates; changes to browser discovery, execution, observation, safety, detectors, contracts, persistence verification, or reports make the checked-in case evidence stale and fail aggregation. | Pinned application | Environment | Observable result | Severe RealDone regressions | | --- | --- | --- | --- | @@ -52,13 +52,13 @@ The Phase G rerun binds each compact evidence document to both the raw `scan.jso | Actual Budget | `VALID`, 30/30 assets | 6 `VERIFIED`; one history-dependent missing target remained safely `UNCERTAIN` | 0 | | Conduit + SQLite | `VALID`, untruncated | 17 `VERIFIED`; one generated-credential rejection remained safely `UNCERTAIN` | 0 | | Conduit + PostgreSQL 17 + Supabase Data API | `VALID`, untruncated | 17 `VERIFIED`; signup was `SOURCE_OF_TRUTH_CONFIRMED` Level 6 through both adapters with the same added-row hash | 0 | -| Pocket Ledger | `VALID`, untruncated | all 6 visible actions `VERIFIED`, including focus-revealed skip link, multipart upload and non-empty CSV export | 0 | +| Pocket Ledger | `VALID`, untruncated | all 5 member/public actions `VERIFIED`, including focus-revealed skip link, multipart upload and non-empty CSV export; admin-only Reset was verified separately at Level 7 | 0 | -The current checked-in evidence is bound to Phase I main fingerprint `f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a`. Every primary scan was `VALID` and untruncated. Compact documents bind the primary scans, PostgreSQL CRUD scans, cleanup ledger, Level 7 role verification and Codex cycle artifacts by SHA-256. The first candidate-head run [`30193615824`](https://github.com/datzle123/RealDone/actions/runs/30193615824) correctly rejected the previous fingerprint's external artifacts; after the real cases were rerun, PR run [`30195613599`](https://github.com/datzle123/RealDone/actions/runs/30195613599) passed 15/15. Hosted main run [`30195945498`](https://github.com/datzle123/RealDone/actions/runs/30195945498) repeated the Linux/macOS/Windows, Node 20/22, browser, database and package gates, passed all 15 normative gates, and signed both aggregate JSON artifacts. `gh attestation verify` matched their SHA-256 subjects. Released `v1.3.3` and its independent signed run [`30189340006`](https://github.com/datzle123/RealDone/actions/runs/30189340006) remain the historical published-package qualification. +The current checked-in candidate evidence is bound to Phase J fingerprint `0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047`. Every primary scan was `VALID` and untruncated. Compact documents bind the fresh primary scans, PostgreSQL CRUD scans, cleanup ledger, Level 7 role verification and Codex cycle artifacts by SHA-256. PR run [`30198005122`](https://github.com/datzle123/RealDone/actions/runs/30198005122) passed every Linux/macOS/Windows browser/package job and correctly rejected the earlier Phase I fingerprint at gate 15; the five real cases were then rerun rather than relabelled. The refreshed inputs merged with all six hosted candidate attestations and passed 15/15 locally; Phase J remains a candidate until GitHub repeats and signs that aggregate. Released `v1.3.3` and its independent signed run [`30189340006`](https://github.com/datzle123/RealDone/actions/runs/30189340006) remain the historical published-package qualification. -PostgreSQL qualification used the pinned upstream Conduit app with only a harness port mapping, native PostgreSQL 17.10, real create/update/delete row diffs and key-bounded cleanup. The Supabase source adapter read the same action through a local Supabase Data API-compatible PostgREST 14.15 endpoint; the official Supabase CLI was also checked, but its full Auth/Storage local stack could not start on this machine because Docker Desktop/WSL is absent. This evidence therefore claims the maintained Supabase Data API adapter boundary, not a hosted Supabase service. +PostgreSQL qualification used the pinned upstream Conduit app with only a harness port mapping, an isolated native PostgreSQL 17.10 cluster, real create/update/delete row diffs and key-bounded cleanup. The Supabase source adapter read the same action through a local Supabase Data API-compatible PostgREST 14.15 endpoint; the official Supabase CLI was also checked, but its full Auth/Storage local stack could not start on this machine because Docker Desktop/WSL is absent. This evidence therefore claims the maintained Supabase Data API adapter boundary, not a hosted Supabase service. -Pocket Ledger was generated in a separate MIT repository by Codex, then exercised through the public scanner and a Level 7 role contract. Member state hid Reset and received API 403; admin state saw Reset. Authenticated Codex Desktop thread `019f8770-219f-7612-81eb-98670009f693` used Codex CLI `0.143.0` to call RealDone MCP for a green baseline, produced run `20260726T081932Z-0ea9` with one selected RD901 regression and an unchanged contract, repaired Increment, and finished in run `20260726T082050Z-ad9f` with one selected contract and zero regressions. The release validator parses and cross-checks those bound artifacts instead of trusting the agent's final message. +Pocket Ledger was generated in a separate MIT repository by Codex, then exercised through the public scanner and a Level 7 role contract. Member state hid Reset and received API 403; admin state saw Reset. Authenticated Codex Desktop thread `019f8770-219f-7612-81eb-98670009f693` used Codex CLI `0.143.0` to call RealDone MCP for a fresh green baseline, produced run `20260726T105538Z-d5d0` with one selected RD901 regression and an unchanged contract, repaired Increment, and finished in run `20260726T105629Z-4108` with one selected contract and zero regressions. The release validator parses and cross-checks those bound artifacts instead of trusting the agent's final message. The intentional TodoMVC copy produced exactly 2 `CONTRADICTORY`, 1 `EPHEMERAL`, and 1 `NO_EFFECT` finding while its unbuilt Demo route remained `ENVIRONMENT_INVALID` instead of an app defect. The intentional Conduit copy produced its planted duplicate invoice as `BROKEN`/RD003, failed settings as `CONTRADICTORY`/RD001/RD302, fake delete as `CONTRADICTORY`/RD203/RD301, and inert button as `NO_EFFECT`/RD002. @@ -66,7 +66,7 @@ The first current-engine Conduit rerun exposed an RD501 false positive: the publ The 2026-07-23 Actual Budget rerun then exposed a safety regression: its server target is a text input with an `https://example.com` placeholder rather than `type="url"`. RealDone initially filled a canary and clicked Connect, producing a DNS failure. URL-bearing placeholders now retain external-target classification; the rerun returned to 6 `VERIFIED`, 1 safe `UNCERTAIN`, 3 policy `SKIPPED`, and zero defects. -Machine-readable main inputs are in `release/external-cases.json` and `release/evidence/`; hosted run [`30195945498`](https://github.com/datzle123/RealDone/actions/runs/30195945498) signed the Phase I aggregate after all 15 gates passed. For the released package, hosted run [`30189340006`](https://github.com/datzle123/RealDone/actions/runs/30189340006) independently passed and signed all 15 gates for `v1.3.3`. The earlier `v1.3.2` package path remains qualified by hosted run [`29977292441`](https://github.com/datzle123/RealDone/actions/runs/29977292441). +Machine-readable candidate inputs are in `release/external-cases.json` and `release/evidence/`; the Phase J aggregate is awaiting the refreshed hosted gate. Hosted run [`30195945498`](https://github.com/datzle123/RealDone/actions/runs/30195945498) remains the signed Phase I history, while run [`30189340006`](https://github.com/datzle123/RealDone/actions/runs/30189340006) independently passed and signed all 15 gates for released `v1.3.3`. ### Actual Budget original application diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 6279197..50561d3 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -164,4 +164,4 @@ Gate: - A real-browser sensitive-field broken case loses its trace, a non-sensitive trace control remains available, invalid/limit unit controls fail closed, and the final aggregate artifact secret scan remains green. - Typecheck, unit, browser, audit, package, schema, cleanup and hosted cross-platform release gates pass without weakening RG14. -The candidate implementation is isolated on `codex/phase-j-secret-safe-traces`. It is not complete until the gate above passes and the hosted branch run confirms the cross-platform/package paths. +Candidate fingerprint `0b39d542…` passed the local type/unit/build, audit, full Chromium and installed-tarball gates. Fresh pinned runs cover TodoMVC, Actual Budget, Conduit SQLite, Conduit PostgreSQL 17 + Supabase Data API, PostgreSQL create/update/delete cleanup, Pocket Ledger Level 7 and a new Codex MCP baseline → RD901 → repair cycle. Hosted run `30198005122` passed every cross-platform browser/package job and correctly rejected stale Phase I real-case evidence; after the rerun, the refreshed inputs plus its six platform attestations passed 15/15 locally. Phase J is not complete until GitHub repeats and signs the refreshed aggregate. diff --git a/release/evidence/actual-budget.json b/release/evidence/actual-budget.json index d951158..19c60f3 100644 --- a/release/evidence/actual-budget.json +++ b/release/evidence/actual-budget.json @@ -1,7 +1,7 @@ { "schemaVersion": "1.0", - "generatedAt": "2026-07-26T08:45:00.000Z", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "generatedAt": "2026-07-26T11:10:00.000Z", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "case": { "name": "Actual Budget", "repository": "actualbudget/actual", @@ -12,9 +12,9 @@ "capabilities": [] }, "scan": { - "scanId": "20260726T081239Z-de0e", + "scanId": "20260726T103152Z-84f6", "sourceArtifact": "release/evidence/raw/actual-budget.scan.json", - "sourceSha256": "bfd6dfd2e5522a8efd19c2c233797184dc454b73fcb5ceca2d348cf2a12d6781", + "sourceSha256": "b7c9204c33ba52f25d302ae436aa6faa98fabaca1f0221980d2fd0252e8640a3", "environmentStatus": "VALID", "truncated": false, "pagesDiscovered": 2, diff --git a/release/evidence/ai-agent-cycle.json b/release/evidence/ai-agent-cycle.json index bf71032..753501d 100644 --- a/release/evidence/ai-agent-cycle.json +++ b/release/evidence/ai-agent-cycle.json @@ -1,7 +1,7 @@ { "schemaVersion": "1.0", - "generatedAt": "2026-07-26T08:45:00.000Z", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "generatedAt": "2026-07-26T11:10:00.000Z", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "case": { "name": "Pocket Ledger (Codex-generated)", "repository": "local/Pocket-Ledger", @@ -18,17 +18,17 @@ ] }, "scan": { - "scanId": "20260726T081239Z-a6ab", + "scanId": "20260726T105210Z-98d7", "sourceArtifact": "release/evidence/raw/ai-agent-cycle.scan.json", - "sourceSha256": "29c9f89f23b04ea4bcb4bec206f86cc47fe7e37a67f7a89d53ca2f98d2225622", + "sourceSha256": "62621a661b8bbe4b5f70984a802c545c1ee9728921bea6bb6229463a677d1cf8", "environmentStatus": "VALID", "truncated": false, "pagesDiscovered": 1, - "visibleActions": 6, - "actionsVerified": 6, + "visibleActions": 5, + "actionsVerified": 5, "actionsSkipped": 0, "verdicts": { - "VERIFIED": 6, + "VERIFIED": 5, "CONTRADICTORY": 0, "EPHEMERAL": 0, "BROWSER_LOCAL": 0, @@ -43,37 +43,37 @@ "id": "codex-session", "kind": "agent-session", "sourceArtifact": "release/evidence/raw/ai-agent-cycle/codex-session.json", - "sourceSha256": "393018db4f963563175ed8e28b978c3fec2d6d9b57186fe3f31c4fcf7fba3f5c" + "sourceSha256": "1b3ca13a85509ec3fea3d1ac88918522773e01141579fd7adfd7e4acc9ff88fe" }, { "id": "agent-baseline", "kind": "agent-baseline", "sourceArtifact": "release/evidence/raw/ai-agent-cycle/baseline.json", - "sourceSha256": "85c2891a2604819c88578a57e13ed0801f7fe374bd9534c2060878caaf311ac0" + "sourceSha256": "93ea5475163d24b6526c52a58a7e02b2ea6f8abe16358e3837c82357b96e13af" }, { "id": "agent-regression", "kind": "agent-regression", "sourceArtifact": "release/evidence/raw/ai-agent-cycle/regression.json", - "sourceSha256": "a5f872646d86a2949edd4380f72fa42b14db3e5d3af294a65d52064a3972a414" + "sourceSha256": "f6278ceb13aad601c106c6373bd7cf9dc7f17bcbb3fa10b1a6cdeb596d061838" }, { "id": "failed-verification", "kind": "contract-verification", "sourceArtifact": "release/evidence/raw/ai-agent-cycle/failed-verification.json", - "sourceSha256": "edfc3c24910e4b073ae347d5c54a4c0b612559f27aeb085cb7cf95dfaadf15f3" + "sourceSha256": "03ee0927c34f2070eace195fab8980dcac7b84409fbb8e3281ae930b58153e54" }, { "id": "agent-repair", "kind": "agent-repair", "sourceArtifact": "release/evidence/raw/ai-agent-cycle/repair.json", - "sourceSha256": "71ac24e404f63e49f962536aaaf6a8985f9eb308c1ccd5358b9d6ef971753875" + "sourceSha256": "37e6c4ae44ed4b0e3b2a21dfeb1059a761a272d5ee252a44fbce41f665ad22ac" }, { "id": "role-verification", "kind": "contract-verification", "sourceArtifact": "release/evidence/raw/ai-agent-cycle/role-verification.json", - "sourceSha256": "f9106b1169e9b4ae7ad9da701ab09a1631232853052291d8d8b6fbc3d7c43ede" + "sourceSha256": "3f6420d8d870f703479b7ff3adddcc85f57b82c4afaae571d9a5159ac5388a08" } ], "qualification": { @@ -145,8 +145,8 @@ { "id": "all-visible-actions", "passed": true, - "expected": "all 6 visible actions verified", - "observed": "6 VERIFIED; 0 skipped" + "expected": "all 5 visible actions verified", + "observed": "5 VERIFIED; 0 skipped" } ] } diff --git a/release/evidence/conduit-sources.json b/release/evidence/conduit-sources.json index 4fff64c..55d057c 100644 --- a/release/evidence/conduit-sources.json +++ b/release/evidence/conduit-sources.json @@ -1,7 +1,7 @@ { "schemaVersion": "1.0", - "generatedAt": "2026-07-26T08:45:00.000Z", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "generatedAt": "2026-07-26T11:10:00.000Z", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "case": { "name": "Conduit RealWorld (PostgreSQL + Supabase Data API)", "repository": "TonyMckes/conduit-realworld-example-app", @@ -17,9 +17,9 @@ ] }, "scan": { - "scanId": "20260726T083040Z-3aab", + "scanId": "20260726T104933Z-2a05", "sourceArtifact": "release/evidence/raw/conduit-sources.scan.json", - "sourceSha256": "4b4781d12ae0052f2b24aefb4b033f8d40f1de2217ab69d360b5dc4e2e7e2ee3", + "sourceSha256": "58603d62965aaba18bdf3408e3254ca44cf8182102bbbb54b283f8748952e105", "environmentStatus": "VALID", "truncated": false, "pagesDiscovered": 3, @@ -42,25 +42,25 @@ "id": "postgres-create", "kind": "external-scan", "sourceArtifact": "release/evidence/raw/conduit-postgres-create.scan.json", - "sourceSha256": "27390cff33f9e8d6e2726cc90df4a683acd9152c284e350597b2d4e12e559038" + "sourceSha256": "7cd56db7487ea13e4e2909fd90473c95bc1f8ccb77d5d27612d6ee642088fd3d" }, { "id": "postgres-update", "kind": "external-scan", "sourceArtifact": "release/evidence/raw/conduit-postgres-update.scan.json", - "sourceSha256": "1dcd34e6dabf3bffaca04823aa97d7748624423e6eca4a403a8f3af52a752512" + "sourceSha256": "f321485d1e97ec18f9dd07930f49ca2fb44321add14675d6315c3386644a02b5" }, { "id": "postgres-delete", "kind": "external-scan", "sourceArtifact": "release/evidence/raw/conduit-postgres-delete.scan.json", - "sourceSha256": "bb3fc2eda12911e7d870b1dc1e5f493399ae5dc40bbfc65d6d906e1517c798a2" + "sourceSha256": "d4478acf38bda66100222de749a042d469ef09af6ca05bbc258334cad13bcac9" }, { "id": "postgres-cleanup", "kind": "test-result", "sourceArtifact": "release/evidence/raw/conduit-postgres-cleanup.json", - "sourceSha256": "578f66e898a33a4c48b20bf5c789fc4b9cde20d9ea041d1ca856005117ff87a5" + "sourceSha256": "89f13e2a482647e7e7dec0d4989c6b5da939cfd971b39641fb7531f8593897df" } ], "assertions": [ diff --git a/release/evidence/conduit.json b/release/evidence/conduit.json index d8a6f4c..eee5a20 100644 --- a/release/evidence/conduit.json +++ b/release/evidence/conduit.json @@ -1,7 +1,7 @@ { "schemaVersion": "1.0", - "generatedAt": "2026-07-26T08:45:00.000Z", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "generatedAt": "2026-07-26T11:10:00.000Z", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "case": { "name": "Conduit RealWorld (SQLite)", "repository": "TonyMckes/conduit-realworld-example-app", @@ -14,9 +14,9 @@ ] }, "scan": { - "scanId": "20260726T084136Z-1c78", + "scanId": "20260726T105114Z-0982", "sourceArtifact": "release/evidence/raw/conduit.scan.json", - "sourceSha256": "eed642ab71f6f155bee6373cca80bad029ac4584e032553a61cd3d446803d4aa", + "sourceSha256": "cabf5e362d3e4c675ff66e419300047df606a4e19fb06c9b4a40ea086f9c3239", "environmentStatus": "VALID", "truncated": false, "pagesDiscovered": 3, diff --git a/release/evidence/raw/actual-budget.scan.json b/release/evidence/raw/actual-budget.scan.json index 1719d03..0beb9be 100644 --- a/release/evidence/raw/actual-budget.scan.json +++ b/release/evidence/raw/actual-budget.scan.json @@ -1,9 +1,9 @@ { "schemaVersion": "1.0", - "scanId": "20260726T081239Z-de0e", - "targetUrl": "http://127.0.0.1:37421/", - "startedAt": "2026-07-26T08:12:39.808Z", - "finishedAt": "2026-07-26T08:13:39.156Z", + "scanId": "20260726T103152Z-84f6", + "targetUrl": "http://127.0.0.1:37431/", + "startedAt": "2026-07-26T10:31:52.626Z", + "finishedAt": "2026-07-26T10:32:51.125Z", "options": { "maxPages": 10, "maxActions": 50, @@ -41,25 +41,25 @@ }, "pages": [ { - "url": "http://127.0.0.1:37421/", + "url": "http://127.0.0.1:37431/", "title": "Actual", "actions": [ { - "id": "028a354674cb", - "pageUrl": "http://127.0.0.1:37421/", + "id": "00dbaed4aa9a", + "pageUrl": "http://127.0.0.1:37431/", "label": "Start budgeting", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria3130426097-_r_0_", + "selector": "#react-aria1725181164-_r_0_", "tag": "button", "ordinal": 0, "role": "button", "accessibleName": "Start budgeting", "text": "Start budgeting", - "id": "react-aria3130426097-_r_0_", + "id": "react-aria1725181164-_r_0_", "type": "button", "candidates": [ { @@ -79,7 +79,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria3130426097-_r_0_" + "selector": "#react-aria1725181164-_r_0_" }, { "strategy": "text", @@ -90,28 +90,28 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria3130426097-_r_0_" + "selector": "#react-aria1725181164-_r_0_" } ] }, "fields": [] }, { - "id": "45c63f4323e5", - "pageUrl": "http://127.0.0.1:37421/", + "id": "293c31d6a5d7", + "pageUrl": "http://127.0.0.1:37431/", "label": "Try the demo", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria3130426097-_r_2_", + "selector": "#react-aria1725181164-_r_2_", "tag": "button", "ordinal": 1, "role": "button", "accessibleName": "Try the demo", "text": "Try the demo", - "id": "react-aria3130426097-_r_2_", + "id": "react-aria1725181164-_r_2_", "type": "button", "candidates": [ { @@ -131,7 +131,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria3130426097-_r_2_" + "selector": "#react-aria1725181164-_r_2_" }, { "strategy": "text", @@ -142,28 +142,28 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria3130426097-_r_2_" + "selector": "#react-aria1725181164-_r_2_" } ] }, "fields": [] }, { - "id": "4d95f1dd909c", - "pageUrl": "http://127.0.0.1:37421/", + "id": "f6722661b67a", + "pageUrl": "http://127.0.0.1:37431/", "label": "Connect to a sync server", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria3130426097-_r_4_", + "selector": "#react-aria1725181164-_r_4_", "tag": "button", "ordinal": 2, "role": "button", "accessibleName": "Connect to a sync server", "text": "Connect to a sync server", - "id": "react-aria3130426097-_r_4_", + "id": "react-aria1725181164-_r_4_", "type": "button", "candidates": [ { @@ -183,7 +183,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria3130426097-_r_4_" + "selector": "#react-aria1725181164-_r_4_" }, { "strategy": "text", @@ -194,28 +194,28 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria3130426097-_r_4_" + "selector": "#react-aria1725181164-_r_4_" } ] }, "fields": [] }, { - "id": "96777c5d3995", - "pageUrl": "http://127.0.0.1:37421/", + "id": "64a4a9ac8aec", + "pageUrl": "http://127.0.0.1:37431/", "label": "Import my budget", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria3130426097-_r_6_", + "selector": "#react-aria1725181164-_r_6_", "tag": "button", "ordinal": 3, "role": "button", "accessibleName": "Import my budget", "text": "Import my budget", - "id": "react-aria3130426097-_r_6_", + "id": "react-aria1725181164-_r_6_", "type": "button", "candidates": [ { @@ -235,7 +235,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria3130426097-_r_6_" + "selector": "#react-aria1725181164-_r_6_" }, { "strategy": "text", @@ -246,15 +246,15 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria3130426097-_r_6_" + "selector": "#react-aria1725181164-_r_6_" } ] }, "fields": [] }, { - "id": "dd2fbcc128b2", - "pageUrl": "http://127.0.0.1:37421/", + "id": "bb0466f5e276", + "pageUrl": "http://127.0.0.1:37431/", "label": "guided tour", "activation": "click", "kind": "navigation", @@ -305,8 +305,8 @@ "fields": [] }, { - "id": "95992a8ec53a", - "pageUrl": "http://127.0.0.1:37421/", + "id": "621ef0da6867", + "pageUrl": "http://127.0.0.1:37431/", "label": "Set up sync", "activation": "click", "kind": "navigation", @@ -319,7 +319,7 @@ "role": "link", "accessibleName": "Set up sync", "text": "Set up sync", - "href": "http://127.0.0.1:37421/config-server", + "href": "http://127.0.0.1:37431/config-server", "candidates": [ { "strategy": "role", @@ -338,7 +338,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:37421/config-server" + "value": "http://127.0.0.1:37431/config-server" }, { "strategy": "text", @@ -358,25 +358,25 @@ ] }, { - "url": "http://127.0.0.1:37421/config-server", + "url": "http://127.0.0.1:37431/config-server", "title": "Actual", "actions": [ { - "id": "93054cadc685", - "pageUrl": "http://127.0.0.1:37421/config-server", + "id": "cac102f59033", + "pageUrl": "http://127.0.0.1:37431/config-server", "label": "Back", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "#react-aria2682847574-_r_0_", + "selector": "#react-aria1452926844-_r_0_", "tag": "button", "ordinal": 0, "role": "button", "accessibleName": "Back", "text": "Back", - "id": "react-aria2682847574-_r_0_", + "id": "react-aria1452926844-_r_0_", "type": "button", "candidates": [ { @@ -396,7 +396,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria2682847574-_r_0_" + "selector": "#react-aria1452926844-_r_0_" }, { "strategy": "text", @@ -407,15 +407,15 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria2682847574-_r_0_" + "selector": "#react-aria1452926844-_r_0_" } ] }, "fields": [] }, { - "id": "b718b6124fb5", - "pageUrl": "http://127.0.0.1:37421/config-server", + "id": "e8d20e256031", + "pageUrl": "http://127.0.0.1:37431/config-server", "label": "learn how to set one up", "activation": "click", "kind": "navigation", @@ -466,21 +466,21 @@ "fields": [] }, { - "id": "286b2b81440c", - "pageUrl": "http://127.0.0.1:37421/config-server", + "id": "6e589177bd64", + "pageUrl": "http://127.0.0.1:37431/config-server", "label": "Connect", "activation": "click", "kind": "external", "intent": "external", "risk": "external", "fingerprint": { - "selector": "#react-aria2682847574-_r_2_", + "selector": "#react-aria1452926844-_r_2_", "tag": "button", "ordinal": 2, "role": "button", "accessibleName": "Connect", "text": "Connect", - "id": "react-aria2682847574-_r_2_", + "id": "react-aria1452926844-_r_2_", "type": "button", "candidates": [ { @@ -500,7 +500,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria2682847574-_r_2_" + "selector": "#react-aria1452926844-_r_2_" }, { "strategy": "text", @@ -511,7 +511,7 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria2682847574-_r_2_" + "selector": "#react-aria1452926844-_r_2_" } ] }, @@ -527,21 +527,21 @@ ] }, { - "id": "f6a25772e322", - "pageUrl": "http://127.0.0.1:37421/config-server", + "id": "c4006271e563", + "pageUrl": "http://127.0.0.1:37431/config-server", "label": "Use the current domain", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria2682847574-_r_4_", + "selector": "#react-aria1452926844-_r_4_", "tag": "button", "ordinal": 3, "role": "button", "accessibleName": "Use the current domain", "text": "Use the current domain", - "id": "react-aria2682847574-_r_4_", + "id": "react-aria1452926844-_r_4_", "type": "button", "candidates": [ { @@ -561,7 +561,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria2682847574-_r_4_" + "selector": "#react-aria1452926844-_r_4_" }, { "strategy": "text", @@ -572,7 +572,7 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria2682847574-_r_4_" + "selector": "#react-aria1452926844-_r_4_" } ] }, @@ -585,21 +585,21 @@ { "id": "RD-001", "action": { - "id": "028a354674cb", - "pageUrl": "http://127.0.0.1:37421/", + "id": "00dbaed4aa9a", + "pageUrl": "http://127.0.0.1:37431/", "label": "Start budgeting", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria3130426097-_r_0_", + "selector": "#react-aria1725181164-_r_0_", "tag": "button", "ordinal": 0, "role": "button", "accessibleName": "Start budgeting", "text": "Start budgeting", - "id": "react-aria3130426097-_r_0_", + "id": "react-aria1725181164-_r_0_", "type": "button", "candidates": [ { @@ -619,7 +619,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria3130426097-_r_0_" + "selector": "#react-aria1725181164-_r_0_" }, { "strategy": "text", @@ -630,26 +630,26 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria3130426097-_r_0_" + "selector": "#react-aria1725181164-_r_0_" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:12:47.047Z", - "durationMs": 6797, - "canary": "RD_TEST_31C9E5", + "startedAt": "2026-07-26T10:31:59.351Z", + "durationMs": 6683, + "canary": "RD_TEST_3CF08D", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:37421/static/js/indexeddb-main-thread-worker-e59fee74.B9D89_PE.chunk.js", + "url": "http://127.0.0.1:37431/static/js/indexeddb-main-thread-worker-e59fee74.B9D89_PE.chunk.js", "resourceType": "script", - "startedAt": 5622, + "startedAt": 5537, "status": 200, "ok": true, - "finishedAt": 5627, + "finishedAt": 5541, "contentType": "text/javascript", "resourceTypeHint": "indexeddb-main-thread-worker-e59fee74.B9D89_PE.chunk.js" }, @@ -658,53 +658,53 @@ "method": "GET", "url": "https://api.github.com/repos/actualbudget/actual/releases/latest", "resourceType": "fetch", - "startedAt": 6184 + "startedAt": 5876 }, { "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:37421/static/js/wide.BkKPUPVE.chunk.js", + "url": "http://127.0.0.1:37431/static/js/wide.BkKPUPVE.chunk.js", "resourceType": "script", - "startedAt": 6226, + "startedAt": 5910, "status": 200, "ok": true, - "finishedAt": 6244, + "finishedAt": 5921, "contentType": "text/javascript", "resourceTypeHint": "wide.BkKPUPVE.chunk.js" }, { "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:37421/static/js/AppliedFilters.Dx7PP3C8.chunk.js", + "url": "http://127.0.0.1:37431/static/js/AppliedFilters.Dx7PP3C8.chunk.js", "resourceType": "script", - "startedAt": 6227, + "startedAt": 5910, "status": 200, "ok": true, - "finishedAt": 6243, + "finishedAt": 5919, "contentType": "text/javascript", "resourceTypeHint": "AppliedFilters.Dx7PP3C8.chunk.js" }, { "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:37421/static/js/useTransactionBatchActions.CG8pn3qO.chunk.js", + "url": "http://127.0.0.1:37431/static/js/useTransactionBatchActions.CG8pn3qO.chunk.js", "resourceType": "script", - "startedAt": 6227, + "startedAt": 5911, "status": 200, "ok": true, - "finishedAt": 6241, + "finishedAt": 5918, "contentType": "text/javascript", "resourceTypeHint": "useTransactionBatchActions.CG8pn3qO.chunk.js" }, { "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:37421/static/js/PayeeRuleCountLabel.nEXX1VI1.chunk.js", + "url": "http://127.0.0.1:37431/static/js/PayeeRuleCountLabel.nEXX1VI1.chunk.js", "resourceType": "script", - "startedAt": 6228, + "startedAt": 5911, "status": 200, "ok": true, - "finishedAt": 6241, + "finishedAt": 5918, "contentType": "text/javascript", "resourceTypeHint": "PayeeRuleCountLabel.nEXX1VI1.chunk.js" } @@ -725,7 +725,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 9 + "elapsedMs": 8 } ], "chosenStrategy": "role", @@ -733,8 +733,8 @@ "retryCount": 0 }, "before": { - "at": 5554, - "url": "http://127.0.0.1:37421/", + "at": 5466, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -808,8 +808,8 @@ } }, "beforeAction": { - "at": 5576, - "url": "http://127.0.0.1:37421/", + "at": 5487, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -884,8 +884,8 @@ }, "networkSettled": true, "after": { - "at": 6791, - "url": "http://127.0.0.1:37421/accounts", + "at": 6677, + "url": "http://127.0.0.1:37431/accounts", "title": "Actual", "domHash": "823d03cf2b04dc62", "canaryPresent": false, @@ -1077,7 +1077,7 @@ ] }, { - "name": "documents-Actual-My-Finances-d95149f-db.sqlite", + "name": "documents-Actual-My-Finances-cd53949-db.sqlite", "version": 2, "stores": [ { @@ -1089,7 +1089,7 @@ ] } }, - "trace": "traces/028a354674cb.zip", + "trace": "traces/00dbaed4aa9a.zip", "snapshotIndex": "snapshots/RD-001.index.json" }, "verdict": "VERIFIED", @@ -1100,21 +1100,21 @@ { "id": "RD-002", "action": { - "id": "45c63f4323e5", - "pageUrl": "http://127.0.0.1:37421/", + "id": "293c31d6a5d7", + "pageUrl": "http://127.0.0.1:37431/", "label": "Try the demo", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria3130426097-_r_2_", + "selector": "#react-aria1725181164-_r_2_", "tag": "button", "ordinal": 1, "role": "button", "accessibleName": "Try the demo", "text": "Try the demo", - "id": "react-aria3130426097-_r_2_", + "id": "react-aria1725181164-_r_2_", "type": "button", "candidates": [ { @@ -1134,7 +1134,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria3130426097-_r_2_" + "selector": "#react-aria1725181164-_r_2_" }, { "strategy": "text", @@ -1145,28 +1145,83 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria3130426097-_r_2_" + "selector": "#react-aria1725181164-_r_2_" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:12:54.417Z", - "durationMs": 8220, - "canary": "RD_TEST_F14B4D", + "startedAt": "2026-07-26T10:32:06.728Z", + "durationMs": 7865, + "canary": "RD_TEST_6B2D91", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:37421/static/js/indexeddb-main-thread-worker-e59fee74.B9D89_PE.chunk.js", + "url": "http://127.0.0.1:37431/static/js/indexeddb-main-thread-worker-e59fee74.B9D89_PE.chunk.js", "resourceType": "script", - "startedAt": 7032, + "startedAt": 6643, "status": 200, "ok": true, - "finishedAt": 7037, + "finishedAt": 6647, "contentType": "text/javascript", "resourceTypeHint": "indexeddb-main-thread-worker-e59fee74.B9D89_PE.chunk.js" + }, + { + "id": "net-2", + "method": "GET", + "url": "https://api.github.com/repos/actualbudget/actual/releases/latest", + "resourceType": "fetch", + "startedAt": 7762 + }, + { + "id": "net-3", + "method": "GET", + "url": "http://127.0.0.1:37431/static/js/wide.BkKPUPVE.chunk.js", + "resourceType": "script", + "startedAt": 7823, + "status": 200, + "ok": true, + "finishedAt": 7834, + "contentType": "text/javascript", + "resourceTypeHint": "wide.BkKPUPVE.chunk.js" + }, + { + "id": "net-4", + "method": "GET", + "url": "http://127.0.0.1:37431/static/js/AppliedFilters.Dx7PP3C8.chunk.js", + "resourceType": "script", + "startedAt": 7823, + "status": 200, + "ok": true, + "finishedAt": 7833, + "contentType": "text/javascript", + "resourceTypeHint": "AppliedFilters.Dx7PP3C8.chunk.js" + }, + { + "id": "net-5", + "method": "GET", + "url": "http://127.0.0.1:37431/static/js/useTransactionBatchActions.CG8pn3qO.chunk.js", + "resourceType": "script", + "startedAt": 7824, + "status": 200, + "ok": true, + "finishedAt": 7832, + "contentType": "text/javascript", + "resourceTypeHint": "useTransactionBatchActions.CG8pn3qO.chunk.js" + }, + { + "id": "net-6", + "method": "GET", + "url": "http://127.0.0.1:37431/static/js/PayeeRuleCountLabel.nEXX1VI1.chunk.js", + "resourceType": "script", + "startedAt": 7824, + "status": 200, + "ok": true, + "finishedAt": 7834, + "contentType": "text/javascript", + "resourceTypeHint": "PayeeRuleCountLabel.nEXX1VI1.chunk.js" } ], "console": [], @@ -1185,7 +1240,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 7 + "elapsedMs": 8 } ], "chosenStrategy": "role", @@ -1193,8 +1248,8 @@ "retryCount": 0 }, "before": { - "at": 6971, - "url": "http://127.0.0.1:37421/", + "at": 6577, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -1268,8 +1323,8 @@ } }, "beforeAction": { - "at": 6992, - "url": "http://127.0.0.1:37421/", + "at": 6598, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -1344,10 +1399,10 @@ }, "networkSettled": true, "after": { - "at": 8214, - "url": "http://127.0.0.1:37421/", + "at": 7853, + "url": "http://127.0.0.1:37431/budget", "title": "Actual", - "domHash": "e58c55874a03866c", + "domHash": "924df8fa0c1809d8", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1359,10 +1414,60 @@ "accessDenied": false }, "semanticDom": { - "textHash": "d578440bdb7e287d", - "visualHash": "4f53cda18c2baa0c", - "text": "Making demo... App: v26.7.0 | Server: N/A", - "controls": [] + "textHash": "a532b6b3b2f9366b", + "visualHash": "6bed3bc5283d15f3", + "text": "Test Budget Budget Reports Schedules More All accounts 66,851.95 On budget 15,562.97 Bank of America 10,974.46 Ally Savings 3,254.20 Capital One Checking 456.95 HSBC 877.36 Off budget 51,288.98 Vanguard 401k 1,908.60 Mortgage -320,852.15 House Asset 0.00 Roth IRA 0.00 Add account No server Help", + "controls": [ + { + "tag": "button", + "type": "button", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "button", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "button", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "button", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "button", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "button", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "button", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, "busyControls": 0, "disabledControls": 0, @@ -1392,14 +1497,14 @@ "stores": [ { "name": "data", - "count": 225 + "count": 246 } ] } ] } }, - "trace": "traces/45c63f4323e5.zip", + "trace": "traces/293c31d6a5d7.zip", "snapshotIndex": "snapshots/RD-002.index.json" }, "verdict": "VERIFIED", @@ -1410,21 +1515,21 @@ { "id": "RD-003", "action": { - "id": "4d95f1dd909c", - "pageUrl": "http://127.0.0.1:37421/", + "id": "f6722661b67a", + "pageUrl": "http://127.0.0.1:37431/", "label": "Connect to a sync server", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria3130426097-_r_4_", + "selector": "#react-aria1725181164-_r_4_", "tag": "button", "ordinal": 2, "role": "button", "accessibleName": "Connect to a sync server", "text": "Connect to a sync server", - "id": "react-aria3130426097-_r_4_", + "id": "react-aria1725181164-_r_4_", "type": "button", "candidates": [ { @@ -1444,7 +1549,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria3130426097-_r_4_" + "selector": "#react-aria1725181164-_r_4_" }, { "strategy": "text", @@ -1455,16 +1560,16 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria3130426097-_r_4_" + "selector": "#react-aria1725181164-_r_4_" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:13:03.210Z", - "durationMs": 6918, - "canary": "RD_TEST_EF3A31", + "startedAt": "2026-07-26T10:32:15.243Z", + "durationMs": 6625, + "canary": "RD_TEST_FBB7A6", "network": [], "console": [], "pageErrors": [], @@ -1482,7 +1587,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 9 + "elapsedMs": 7 } ], "chosenStrategy": "role", @@ -1490,8 +1595,8 @@ "retryCount": 0 }, "before": { - "at": 5668, - "url": "http://127.0.0.1:37421/", + "at": 5399, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -1565,8 +1670,8 @@ } }, "beforeAction": { - "at": 5693, - "url": "http://127.0.0.1:37421/", + "at": 5418, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -1641,8 +1746,8 @@ }, "networkSettled": true, "after": { - "at": 6913, - "url": "http://127.0.0.1:37421/config-server", + "at": 6621, + "url": "http://127.0.0.1:37431/config-server", "title": "Actual", "domHash": "97f712565aa26638", "canaryPresent": false, @@ -1716,7 +1821,7 @@ ] } }, - "trace": "traces/4d95f1dd909c.zip", + "trace": "traces/f6722661b67a.zip", "snapshotIndex": "snapshots/RD-003.index.json" }, "verdict": "VERIFIED", @@ -1727,21 +1832,21 @@ { "id": "RD-004", "action": { - "id": "96777c5d3995", - "pageUrl": "http://127.0.0.1:37421/", + "id": "64a4a9ac8aec", + "pageUrl": "http://127.0.0.1:37431/", "label": "Import my budget", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria3130426097-_r_6_", + "selector": "#react-aria1725181164-_r_6_", "tag": "button", "ordinal": 3, "role": "button", "accessibleName": "Import my budget", "text": "Import my budget", - "id": "react-aria3130426097-_r_6_", + "id": "react-aria1725181164-_r_6_", "type": "button", "candidates": [ { @@ -1761,7 +1866,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria3130426097-_r_6_" + "selector": "#react-aria1725181164-_r_6_" }, { "strategy": "text", @@ -1772,16 +1877,16 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria3130426097-_r_6_" + "selector": "#react-aria1725181164-_r_6_" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:13:10.657Z", - "durationMs": 6748, - "canary": "RD_TEST_1C6B10", + "startedAt": "2026-07-26T10:32:22.445Z", + "durationMs": 6795, + "canary": "RD_TEST_29E575", "network": [], "console": [], "pageErrors": [], @@ -1799,7 +1904,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 8 + "elapsedMs": 7 } ], "chosenStrategy": "role", @@ -1807,8 +1912,8 @@ "retryCount": 0 }, "before": { - "at": 5468, - "url": "http://127.0.0.1:37421/", + "at": 5525, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -1882,8 +1987,8 @@ } }, "beforeAction": { - "at": 5489, - "url": "http://127.0.0.1:37421/", + "at": 5544, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -1958,8 +2063,8 @@ }, "networkSettled": true, "after": { - "at": 6743, - "url": "http://127.0.0.1:37421/", + "at": 6790, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "3948e6fc1b26ba3f", "canaryPresent": false, @@ -2067,7 +2172,7 @@ ] } }, - "trace": "traces/96777c5d3995.zip", + "trace": "traces/64a4a9ac8aec.zip", "snapshotIndex": "snapshots/RD-004.index.json" }, "verdict": "VERIFIED", @@ -2078,8 +2183,8 @@ { "id": "RD-005", "action": { - "id": "95992a8ec53a", - "pageUrl": "http://127.0.0.1:37421/", + "id": "621ef0da6867", + "pageUrl": "http://127.0.0.1:37431/", "label": "Set up sync", "activation": "click", "kind": "navigation", @@ -2092,7 +2197,7 @@ "role": "link", "accessibleName": "Set up sync", "text": "Set up sync", - "href": "http://127.0.0.1:37421/config-server", + "href": "http://127.0.0.1:37431/config-server", "candidates": [ { "strategy": "role", @@ -2111,7 +2216,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:37421/config-server" + "value": "http://127.0.0.1:37431/config-server" }, { "strategy": "text", @@ -2129,9 +2234,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:13:17.913Z", - "durationMs": 6894, - "canary": "RD_TEST_F94FC8", + "startedAt": "2026-07-26T10:32:29.828Z", + "durationMs": 6803, + "canary": "RD_TEST_FE54B4", "network": [], "console": [], "pageErrors": [], @@ -2149,7 +2254,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 7 + "elapsedMs": 6 } ], "chosenStrategy": "role", @@ -2157,8 +2262,8 @@ "retryCount": 0 }, "before": { - "at": 5660, - "url": "http://127.0.0.1:37421/", + "at": 5591, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -2232,8 +2337,8 @@ } }, "beforeAction": { - "at": 5673, - "url": "http://127.0.0.1:37421/", + "at": 5601, + "url": "http://127.0.0.1:37431/", "title": "Actual", "domHash": "0e5db8d3d3693839", "canaryPresent": false, @@ -2308,8 +2413,8 @@ }, "networkSettled": true, "after": { - "at": 6888, - "url": "http://127.0.0.1:37421/config-server", + "at": 6798, + "url": "http://127.0.0.1:37431/config-server", "title": "Actual", "domHash": "97f712565aa26638", "canaryPresent": false, @@ -2383,7 +2488,7 @@ ] } }, - "trace": "traces/95992a8ec53a.zip", + "trace": "traces/621ef0da6867.zip", "snapshotIndex": "snapshots/RD-005.index.json" }, "verdict": "VERIFIED", @@ -2394,21 +2499,21 @@ { "id": "RD-006", "action": { - "id": "93054cadc685", - "pageUrl": "http://127.0.0.1:37421/config-server", + "id": "cac102f59033", + "pageUrl": "http://127.0.0.1:37431/config-server", "label": "Back", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "#react-aria2682847574-_r_0_", + "selector": "#react-aria1452926844-_r_0_", "tag": "button", "ordinal": 0, "role": "button", "accessibleName": "Back", "text": "Back", - "id": "react-aria2682847574-_r_0_", + "id": "react-aria1452926844-_r_0_", "type": "button", "candidates": [ { @@ -2428,7 +2533,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria2682847574-_r_0_" + "selector": "#react-aria1452926844-_r_0_" }, { "strategy": "text", @@ -2439,16 +2544,16 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria2682847574-_r_0_" + "selector": "#react-aria1452926844-_r_0_" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:13:25.337Z", - "durationMs": 6196, - "canary": "RD_TEST_CA5396", + "startedAt": "2026-07-26T10:32:37.191Z", + "durationMs": 6109, + "canary": "RD_TEST_E8A663", "network": [], "console": [], "pageErrors": [], @@ -2467,21 +2572,21 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 3 + "elapsedMs": 4 }, { "strategy": "role", "weight": 82, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 3 + "elapsedMs": 2 }, { "strategy": "id", "weight": 80, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "text", @@ -2495,21 +2600,21 @@ "weight": 35, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 3 + "elapsedMs": 2 }, { "strategy": "role", "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 4 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "id", @@ -2558,21 +2663,21 @@ "weight": 60, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "css", "weight": 35, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 3 + "elapsedMs": 2 } ], "retryCount": 2 }, "executionError": "No visible element matched the semantic fingerprint. The action was not executed.", - "screenshot": "screenshots/93054cadc685-error.png", - "trace": "traces/93054cadc685.zip", + "screenshot": "screenshots/cac102f59033-error.png", + "trace": "traces/cac102f59033.zip", "snapshotIndex": "snapshots/RD-006.index.json" }, "verdict": "UNCERTAIN", @@ -2583,21 +2688,21 @@ { "id": "RD-007", "action": { - "id": "f6a25772e322", - "pageUrl": "http://127.0.0.1:37421/config-server", + "id": "c4006271e563", + "pageUrl": "http://127.0.0.1:37431/config-server", "label": "Use the current domain", "activation": "click", "kind": "local", "intent": "interact", "risk": "safe", "fingerprint": { - "selector": "#react-aria2682847574-_r_4_", + "selector": "#react-aria1452926844-_r_4_", "tag": "button", "ordinal": 3, "role": "button", "accessibleName": "Use the current domain", "text": "Use the current domain", - "id": "react-aria2682847574-_r_4_", + "id": "react-aria1452926844-_r_4_", "type": "button", "candidates": [ { @@ -2617,7 +2722,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria2682847574-_r_4_" + "selector": "#react-aria1452926844-_r_4_" }, { "strategy": "text", @@ -2628,16 +2733,16 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria2682847574-_r_4_" + "selector": "#react-aria1452926844-_r_4_" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:13:31.980Z", - "durationMs": 6667, - "canary": "RD_TEST_C8AEAC", + "startedAt": "2026-07-26T10:32:43.902Z", + "durationMs": 6658, + "canary": "RD_TEST_7AF9F8", "network": [], "console": [], "pageErrors": [], @@ -2655,7 +2760,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 7 + "elapsedMs": 6 } ], "chosenStrategy": "role", @@ -2663,8 +2768,8 @@ "retryCount": 0 }, "before": { - "at": 5417, - "url": "http://127.0.0.1:37421/config-server", + "at": 5426, + "url": "http://127.0.0.1:37431/config-server", "title": "Actual", "domHash": "0152be5d7ccd41ff", "canaryPresent": false, @@ -2739,8 +2844,8 @@ } }, "beforeAction": { - "at": 5439, - "url": "http://127.0.0.1:37421/config-server", + "at": 5444, + "url": "http://127.0.0.1:37431/config-server", "title": "Actual", "domHash": "0152be5d7ccd41ff", "canaryPresent": false, @@ -2816,10 +2921,10 @@ }, "networkSettled": true, "after": { - "at": 6662, - "url": "http://127.0.0.1:37421/config-server", + "at": 6653, + "url": "http://127.0.0.1:37431/config-server", "title": "Actual", - "domHash": "eb89451058d6b510", + "domHash": "1f1fb3917a4de776", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -2838,7 +2943,7 @@ { "tag": "input", "type": "text", - "valueHash": "b16024101adc0b0b", + "valueHash": "70ff51ef969bdd4e", "checked": false, "disabled": false, "visible": true @@ -2891,7 +2996,7 @@ ] } }, - "trace": "traces/f6a25772e322.zip", + "trace": "traces/c4006271e563.zip", "snapshotIndex": "snapshots/RD-007.index.json" }, "verdict": "VERIFIED", @@ -2902,8 +3007,8 @@ { "id": "RD-008", "action": { - "id": "dd2fbcc128b2", - "pageUrl": "http://127.0.0.1:37421/", + "id": "bb0466f5e276", + "pageUrl": "http://127.0.0.1:37431/", "label": "guided tour", "activation": "click", "kind": "navigation", @@ -2976,8 +3081,8 @@ { "id": "RD-009", "action": { - "id": "b718b6124fb5", - "pageUrl": "http://127.0.0.1:37421/config-server", + "id": "e8d20e256031", + "pageUrl": "http://127.0.0.1:37431/config-server", "label": "learn how to set one up", "activation": "click", "kind": "navigation", @@ -3050,21 +3155,21 @@ { "id": "RD-010", "action": { - "id": "286b2b81440c", - "pageUrl": "http://127.0.0.1:37421/config-server", + "id": "6e589177bd64", + "pageUrl": "http://127.0.0.1:37431/config-server", "label": "Connect", "activation": "click", "kind": "external", "intent": "external", "risk": "external", "fingerprint": { - "selector": "#react-aria2682847574-_r_2_", + "selector": "#react-aria1452926844-_r_2_", "tag": "button", "ordinal": 2, "role": "button", "accessibleName": "Connect", "text": "Connect", - "id": "react-aria2682847574-_r_2_", + "id": "react-aria1452926844-_r_2_", "type": "button", "candidates": [ { @@ -3084,7 +3189,7 @@ { "strategy": "id", "weight": 80, - "selector": "#react-aria2682847574-_r_2_" + "selector": "#react-aria1452926844-_r_2_" }, { "strategy": "text", @@ -3095,7 +3200,7 @@ { "strategy": "css", "weight": 35, - "selector": "#react-aria2682847574-_r_2_" + "selector": "#react-aria1452926844-_r_2_" } ] }, @@ -3133,9 +3238,9 @@ ], "environment": { "status": "VALID", - "checkedAt": "2026-07-26T08:12:39.873Z", - "durationMs": 3181, - "targetUrl": "http://127.0.0.1:37421/", + "checkedAt": "2026-07-26T10:31:52.690Z", + "durationMs": 2733, + "targetUrl": "http://127.0.0.1:37431/", "mainDocument": { "status": 200, "contentType": "text/html" diff --git a/release/evidence/raw/ai-agent-cycle.scan.json b/release/evidence/raw/ai-agent-cycle.scan.json index 6fd8ae9..c4ecd94 100644 --- a/release/evidence/raw/ai-agent-cycle.scan.json +++ b/release/evidence/raw/ai-agent-cycle.scan.json @@ -1,9 +1,9 @@ { "schemaVersion": "1.0", - "scanId": "20260726T081239Z-a6ab", + "scanId": "20260726T105210Z-98d7", "targetUrl": "http://127.0.0.1:37300/", - "startedAt": "2026-07-26T08:12:39.130Z", - "finishedAt": "2026-07-26T08:12:55.346Z", + "startedAt": "2026-07-26T10:52:10.716Z", + "finishedAt": "2026-07-26T10:52:23.768Z", "options": { "maxPages": 2, "maxActions": 20, @@ -24,11 +24,11 @@ }, "summary": { "pagesDiscovered": 1, - "visibleActions": 6, - "actionsVerified": 6, + "visibleActions": 5, + "actionsVerified": 5, "actionsSkipped": 0, "verdicts": { - "VERIFIED": 6, + "VERIFIED": 5, "CONTRADICTORY": 0, "EPHEMERAL": 0, "BROWSER_LOCAL": 0, @@ -183,58 +183,6 @@ }, "fields": [] }, - { - "id": "aab0fa0876cf", - "pageUrl": "http://127.0.0.1:37300/", - "label": "Reset counter", - "activation": "click", - "kind": "local", - "intent": "interact", - "risk": "safe", - "fingerprint": { - "selector": "#reset", - "tag": "button", - "ordinal": 3, - "role": "button", - "accessibleName": "Reset counter", - "text": "Reset counter", - "id": "reset", - "type": "button", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "button", - "name": "Reset counter", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "button", - "name": "Reset counter", - "exact": false - }, - { - "strategy": "id", - "weight": 80, - "selector": "#reset" - }, - { - "strategy": "text", - "weight": 60, - "value": "Reset counter", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "#reset" - } - ] - }, - "fields": [] - }, { "id": "947f43cdc520", "pageUrl": "http://127.0.0.1:37300/", @@ -246,7 +194,7 @@ "fingerprint": { "selector": "#receipt-form", "tag": "form", - "ordinal": 4, + "ordinal": 3, "accessibleName": "Text receipt Store receipt details", "text": "Text receipt Store receipt details", "id": "receipt-form", @@ -292,7 +240,7 @@ "fingerprint": { "selector": "body > main > section:nth-of-type(3) > a", "tag": "a", - "ordinal": 5, + "ordinal": 4, "role": "link", "accessibleName": "Download CSV", "text": "Download CSV", @@ -391,9 +339,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:12:41.406Z", - "durationMs": 2215, - "canary": "RD_TEST_5C5E36", + "startedAt": "2026-07-26T10:52:12.836Z", + "durationMs": 2090, + "canary": "RD_TEST_87A9F2", "network": [], "console": [], "pageErrors": [], @@ -411,7 +359,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 7 + "elapsedMs": 6 } ], "chosenStrategy": "role", @@ -419,10 +367,10 @@ "retryCount": 0 }, "before": { - "at": 1229, + "at": 1096, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "beed6a6b4f788564", + "domHash": "3c584d8b62afcfc0", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -434,15 +382,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "911221dd55342bda", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 1 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "33d6fd6e94178d8a", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 4 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -465,7 +413,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -488,13 +436,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -502,10 +444,10 @@ } }, "beforeAction": { - "at": 1242, + "at": 1108, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "beed6a6b4f788564", + "domHash": "3c584d8b62afcfc0", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -517,15 +459,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "911221dd55342bda", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 1 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "33d6fd6e94178d8a", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 4 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -548,7 +490,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -571,13 +513,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -587,10 +523,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2211, + "at": 2086, "url": "http://127.0.0.1:37300/#main", "title": "Pocket Ledger", - "domHash": "beed6a6b4f788564", + "domHash": "3c584d8b62afcfc0", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -602,15 +538,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "911221dd55342bda", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 1 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "33d6fd6e94178d8a", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 4 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -633,7 +569,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -656,13 +592,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -716,9 +646,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:12:43.652Z", - "durationMs": 2150, - "canary": "RD_TEST_188602", + "startedAt": "2026-07-26T10:52:14.964Z", + "durationMs": 2057, + "canary": "RD_TEST_6B506F", "network": [], "console": [], "pageErrors": [], @@ -736,7 +666,7 @@ "weight": 80, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 5 + "elapsedMs": 6 } ], "chosenStrategy": "id", @@ -744,10 +674,10 @@ "retryCount": 0 }, "before": { - "at": 1185, + "at": 1088, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "beed6a6b4f788564", + "domHash": "3c584d8b62afcfc0", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -759,15 +689,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "911221dd55342bda", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 1 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "33d6fd6e94178d8a", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 4 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -790,7 +720,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -813,13 +743,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -827,10 +751,10 @@ } }, "beforeAction": { - "at": 1196, + "at": 1100, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "beed6a6b4f788564", + "domHash": "3c584d8b62afcfc0", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -842,15 +766,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "911221dd55342bda", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 1 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "33d6fd6e94178d8a", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 4 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -873,7 +797,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -896,13 +820,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -912,10 +830,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2144, + "at": 2053, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "cf1ceaf2dcccec74", + "domHash": "bc6ea7f6db7d7320", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -927,9 +845,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "28ca0cbe910c0090", + "textHash": "5541389139c78e6b", "visualHash": "46857e11c9fc209f", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 1 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV Now viewing as member.", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 4 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV Now viewing as member.", "controls": [ { "tag": "select", @@ -1057,19 +975,19 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:12:45.839Z", - "durationMs": 2357, - "canary": "RD_TEST_7B4180", + "startedAt": "2026-07-26T10:52:17.055Z", + "durationMs": 2229, + "canary": "RD_TEST_2EC324", "network": [ { "id": "net-1", "method": "POST", "url": "http://127.0.0.1:37300/api/counter/increment", "resourceType": "fetch", - "startedAt": 1267, + "startedAt": 1123, "status": 200, "ok": true, - "finishedAt": 1277, + "finishedAt": 1136, "contentType": "application/json", "resourceTypeHint": "increment" } @@ -1090,7 +1008,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 8 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -1098,10 +1016,10 @@ "retryCount": 0 }, "before": { - "at": 1223, + "at": 1088, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "beed6a6b4f788564", + "domHash": "3c584d8b62afcfc0", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1113,15 +1031,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "911221dd55342bda", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 1 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "33d6fd6e94178d8a", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 4 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -1144,7 +1062,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -1167,13 +1085,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -1181,10 +1093,10 @@ } }, "beforeAction": { - "at": 1233, + "at": 1098, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "beed6a6b4f788564", + "domHash": "3c584d8b62afcfc0", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1196,15 +1108,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "911221dd55342bda", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 1 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "33d6fd6e94178d8a", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 4 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -1227,7 +1139,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -1250,13 +1162,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -1266,10 +1172,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2243, + "at": 2108, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "8808d5e1545ad46b", + "domHash": "25336baf22e3e652", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1281,15 +1187,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "e8f7ee17257c8537", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 2 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV Counter incremented.", + "textHash": "fba9b9772d25349d", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 5 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV Counter incremented.", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -1312,7 +1218,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -1335,13 +1241,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -1359,361 +1259,6 @@ }, { "id": "RD-004", - "action": { - "id": "aab0fa0876cf", - "pageUrl": "http://127.0.0.1:37300/", - "label": "Reset counter", - "activation": "click", - "kind": "local", - "intent": "interact", - "risk": "safe", - "fingerprint": { - "selector": "#reset", - "tag": "button", - "ordinal": 3, - "role": "button", - "accessibleName": "Reset counter", - "text": "Reset counter", - "id": "reset", - "type": "button", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "button", - "name": "Reset counter", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "button", - "name": "Reset counter", - "exact": false - }, - { - "strategy": "id", - "weight": 80, - "selector": "#reset" - }, - { - "strategy": "text", - "weight": 60, - "value": "Reset counter", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "#reset" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:12:48.255Z", - "durationMs": 2394, - "canary": "RD_TEST_12736F", - "network": [ - { - "id": "net-1", - "method": "POST", - "url": "http://127.0.0.1:37300/api/counter/reset", - "resourceType": "fetch", - "startedAt": 1316, - "status": 200, - "ok": true, - "finishedAt": 1327, - "contentType": "application/json", - "resourceTypeHint": "reset" - } - ], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 7 - } - ], - "chosenStrategy": "role", - "chosenWeight": 92, - "retryCount": 0 - }, - "before": { - "at": 1272, - "url": "http://127.0.0.1:37300/", - "title": "Pocket Ledger", - "domHash": "30ef61fc36aebb5d", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "13194bfa0b020974", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 2 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", - "controls": [ - { - "tag": "select", - "type": "select-one", - "name": "role", - "valueHash": "8c6976e5b5410415", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": true, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "file", - "name": "receipt", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 1, - "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1288, - "url": "http://127.0.0.1:37300/", - "title": "Pocket Ledger", - "domHash": "30ef61fc36aebb5d", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "13194bfa0b020974", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 2 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", - "controls": [ - { - "tag": "select", - "type": "select-one", - "name": "role", - "valueHash": "8c6976e5b5410415", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": true, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "file", - "name": "receipt", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 1, - "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2287, - "url": "http://127.0.0.1:37300/", - "title": "Pocket Ledger", - "domHash": "d7ea1f20b9490b0c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "4a3d89df8a96d211", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 0 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV Counter reset.", - "controls": [ - { - "tag": "select", - "type": "select-one", - "name": "role", - "valueHash": "8c6976e5b5410415", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": true, - "visible": true - }, - { - "tag": "button", - "type": "button", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "file", - "name": "receipt", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 1, - "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "screenshot": "screenshots/aab0fa0876cf-after.png", - "trace": "traces/aab0fa0876cf.zip", - "snapshotIndex": "snapshots/RD-004.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 2, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-005", "action": { "id": "947f43cdc520", "pageUrl": "http://127.0.0.1:37300/", @@ -1725,7 +1270,7 @@ "fingerprint": { "selector": "#receipt-form", "tag": "form", - "ordinal": 4, + "ordinal": 3, "accessibleName": "Text receipt Store receipt details", "text": "Text receipt Store receipt details", "id": "receipt-form", @@ -1761,19 +1306,19 @@ ] }, "evidence": { - "startedAt": "2026-07-26T08:12:50.685Z", - "durationMs": 2323, - "canary": "RD_TEST_98A07E", + "startedAt": "2026-07-26T10:52:19.319Z", + "durationMs": 2218, + "canary": "RD_TEST_9E4048", "network": [ { "id": "net-1", "method": "POST", "url": "http://127.0.0.1:37300/api/receipts", "resourceType": "fetch", - "startedAt": 1202, + "startedAt": 1141, "status": 200, "ok": true, - "finishedAt": 1213, + "finishedAt": 1153, "contentType": "application/json", "resourceTypeHint": "receipts" } @@ -1786,7 +1331,7 @@ "selector": "#receipt", "name": "receipt", "type": "file", - "value": "RD_TEST_98A07E_1.txt", + "value": "RD_TEST_9E4048_1.txt", "redacted": false } ], @@ -1795,10 +1340,10 @@ "downloadEvidence": [], "uploads": [ { - "fileName": "RD_TEST_98A07E_1.txt", + "fileName": "RD_TEST_9E4048_1.txt", "contentType": "text/plain", "size": 41, - "contentHash": "e78eaa52f16913d2", + "contentHash": "3995f03410d9e067", "containsCanary": true } ], @@ -1810,7 +1355,7 @@ "weight": 80, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 5 + "elapsedMs": 4 } ], "chosenStrategy": "id", @@ -1818,10 +1363,10 @@ "retryCount": 0 }, "before": { - "at": 1142, + "at": 1087, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "c67ae97561f167d1", + "domHash": "a148d06bb36e0f9c", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1833,15 +1378,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "befc6c3ad06633fd", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 0 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "95f6762886f5d500", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 5 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -1864,7 +1409,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -1887,13 +1432,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -1901,10 +1440,10 @@ } }, "beforeAction": { - "at": 1165, + "at": 1112, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "03be2c679204ac8c", + "domHash": "3418e5d3608689bc", "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1916,15 +1455,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "befc6c3ad06633fd", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 0 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_7B19BC_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "95f6762886f5d500", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 5 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -1947,13 +1486,13 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", "type": "file", "name": "receipt", - "valueHash": "f4d911ab8e8349c4", + "valueHash": "d2fe99ebf8040c94", "checked": false, "disabled": false, "visible": true @@ -1970,13 +1509,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -1986,10 +1519,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2202, + "at": 2122, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "3d8b8f728eb3351a", + "domHash": "8ea981a860bff596", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -2001,15 +1534,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "755ec0bd331b0b64", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 0 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV Receipt details stored. The file contents were discarded.", + "textHash": "04f028b3f54f8419", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 5 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_9E4048_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV Receipt details stored. The file contents were discarded.", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -2032,7 +1565,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -2055,13 +1588,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -2070,7 +1597,7 @@ }, "screenshot": "screenshots/947f43cdc520-after.png", "trace": "traces/947f43cdc520.zip", - "snapshotIndex": "snapshots/RD-005.index.json" + "snapshotIndex": "snapshots/RD-004.index.json" }, "verdict": "VERIFIED", "evidenceLevel": 2, @@ -2078,7 +1605,7 @@ "detectorMatches": [] }, { - "id": "RD-006", + "id": "RD-005", "action": { "id": "837be486ade9", "pageUrl": "http://127.0.0.1:37300/", @@ -2090,7 +1617,7 @@ "fingerprint": { "selector": "body > main > section:nth-of-type(3) > a", "tag": "a", - "ordinal": 5, + "ordinal": 4, "role": "link", "accessibleName": "Download CSV", "text": "Download CSV", @@ -2132,9 +1659,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:12:53.052Z", - "durationMs": 2275, - "canary": "RD_TEST_68AE42", + "startedAt": "2026-07-26T10:52:21.575Z", + "durationMs": 2175, + "canary": "RD_TEST_7FEE9B", "network": [], "console": [], "pageErrors": [], @@ -2148,7 +1675,7 @@ { "fileName": "pocket-ledger.csv", "size": 117, - "contentHash": "e598a1376c2551efbdca87e57b951e536f5adf7d102e4f6d98e7e0a57bdf13ce", + "contentHash": "4d2e53dc62724a36642c9a5e06a1dcb918322507ecff7fab43780e7926bf06da", "containsCanary": false, "expectedFieldValues": 0, "matchedFieldValues": 0, @@ -2172,10 +1699,10 @@ "retryCount": 0 }, "before": { - "at": 1181, + "at": 1100, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "92704757e23bb2ff", + "domHash": "32200925706fa31e", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -2187,15 +1714,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "ee9f77cbf0dfc873", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 0 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "c6b32c9dc4718c5e", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 5 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_9E4048_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -2218,7 +1745,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -2241,13 +1768,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -2255,10 +1776,10 @@ } }, "beforeAction": { - "at": 1192, + "at": 1110, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "92704757e23bb2ff", + "domHash": "32200925706fa31e", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -2270,15 +1791,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "ee9f77cbf0dfc873", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 0 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "c6b32c9dc4718c5e", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 5 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_9E4048_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -2301,7 +1822,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -2324,13 +1845,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -2340,10 +1855,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2174, + "at": 2084, "url": "http://127.0.0.1:37300/", "title": "Pocket Ledger", - "domHash": "92704757e23bb2ff", + "domHash": "32200925706fa31e", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -2355,15 +1870,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "ee9f77cbf0dfc873", - "visualHash": "1e959c21ea94979b", - "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 0 Increment Decrement Decrement is planned, but not available yet. Admin controls Reset only the counter; receipt metadata is kept. Reset counter RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_98A07E_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", + "textHash": "c6b32c9dc4718c5e", + "visualHash": "46857e11c9fc209f", + "text": "Skip to content POCKET LEDGER A tiny record, kept reliably. Update the count, note a receipt, and export the current snapshot. View as Member Admin CURRENT TOTAL Counter 5 Increment Decrement Decrement is planned, but not available yet. RECEIPT NOTE Store safe file details Choose a plain-text receipt. Its contents are checked and discarded; only filename, size, and media type are retained. Text receipt Store receipt details Stored filename RD_TEST_9E4048_1.txt PORTABLE SNAPSHOT Export current state Download a CSV containing the current counter and receipt metadata. Download CSV", "controls": [ { "tag": "select", "type": "select-one", "name": "role", - "valueHash": "8c6976e5b5410415", + "valueHash": "e31ab643c44f7a0e", "disabled": false, "visible": true }, @@ -2386,7 +1901,7 @@ "type": "button", "valueHash": "e3b0c44298fc1c14", "disabled": false, - "visible": true + "visible": false }, { "tag": "input", @@ -2409,13 +1924,7 @@ "busyControls": 0, "disabledControls": 1, "storage": { - "local": [ - { - "key": "pocket-ledger-role", - "valueHash": "8c6976e5b5410415", - "containsCanary": false - } - ], + "local": [], "session": [], "cookieNames": [], "cookies": [], @@ -2424,7 +1933,7 @@ }, "screenshot": "screenshots/837be486ade9-after.png", "trace": "traces/837be486ade9.zip", - "snapshotIndex": "snapshots/RD-006.index.json" + "snapshotIndex": "snapshots/RD-005.index.json" }, "verdict": "VERIFIED", "evidenceLevel": 1, @@ -2434,8 +1943,8 @@ ], "environment": { "status": "VALID", - "checkedAt": "2026-07-26T08:12:39.209Z", - "durationMs": 1046, + "checkedAt": "2026-07-26T10:52:10.780Z", + "durationMs": 968, "targetUrl": "http://127.0.0.1:37300/", "mainDocument": { "status": 200, @@ -2448,9 +1957,9 @@ "failed": 0 }, "render": { - "bodyTextLength": 663, - "visibleElements": 44, - "interactiveElements": 8, + "bodyTextLength": 584, + "visibleElements": 39, + "interactiveElements": 7, "ready": true }, "findings": [], @@ -2463,8 +1972,8 @@ "reasons": [], "selection": { "strategy": "coverage-balanced-v1", - "eligibleActions": 6, - "selectedActions": 6, + "eligibleActions": 5, + "selectedActions": 5, "omittedActions": 0, "eligiblePages": 1, "selectedPages": 1, diff --git a/release/evidence/raw/ai-agent-cycle/baseline.json b/release/evidence/raw/ai-agent-cycle/baseline.json index bc2250f..226a68a 100644 --- a/release/evidence/raw/ai-agent-cycle/baseline.json +++ b/release/evidence/raw/ai-agent-cycle/baseline.json @@ -1,6 +1,6 @@ { "schemaVersion": "1.0", - "generatedAt": "2026-07-26T08:13:56.254Z", + "generatedAt": "2026-07-26T10:53:12.965Z", "contracts": [ { "id": "increment-persistent-counter-6270", @@ -21,7 +21,7 @@ "stepCount": 2, "baseline": { "passed": true, - "verificationId": "20260726T081354Z-345d", + "verificationId": "20260726T105311Z-4598", "steps": [ { "id": "S001", diff --git a/release/evidence/raw/ai-agent-cycle/codex-session.json b/release/evidence/raw/ai-agent-cycle/codex-session.json index d798158..7acefd5 100644 --- a/release/evidence/raw/ai-agent-cycle/codex-session.json +++ b/release/evidence/raw/ai-agent-cycle/codex-session.json @@ -13,14 +13,14 @@ { "tool": "verify_change", "passed": false, - "runId": "20260726T081932Z-0ea9", + "runId": "20260726T105538Z-d5d0", "selectedContracts": 1, "regressions": 1 }, { "tool": "verify_change", "passed": true, - "runId": "20260726T082050Z-ad9f", + "runId": "20260726T105629Z-4108", "selectedContracts": 1, "regressions": 0 } diff --git a/release/evidence/raw/ai-agent-cycle/failed-verification.json b/release/evidence/raw/ai-agent-cycle/failed-verification.json index bd4d211..c8f1dd8 100644 --- a/release/evidence/raw/ai-agent-cycle/failed-verification.json +++ b/release/evidence/raw/ai-agent-cycle/failed-verification.json @@ -1,6 +1,6 @@ { "schemaVersion": "1.0", - "verificationId": "20260726T081932Z-86b6", + "verificationId": "20260726T105538Z-a11a", "contractId": "increment-persistent-counter-6270", "contractName": "Increment persistent counter", "browser": "chromium", @@ -8,8 +8,8 @@ "default" ], "deep": false, - "startedAt": "2026-07-26T08:19:32.863Z", - "finishedAt": "2026-07-26T08:19:34.200Z", + "startedAt": "2026-07-26T10:55:39.096Z", + "finishedAt": "2026-07-26T10:55:40.394Z", "passed": false, "steps": [ { @@ -17,7 +17,7 @@ "type": "navigate", "role": "default", "status": "passed", - "durationMs": 669, + "durationMs": 645, "reason": "Step and recorded expectations passed.", "assertions": [] }, @@ -26,7 +26,7 @@ "type": "click", "role": "default", "status": "failed", - "durationMs": 595, + "durationMs": 557, "reason": "One or more recorded expectations failed.", "locatorResolution": { "attempts": [ @@ -35,7 +35,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 24 + "elapsedMs": 23 } ], "chosenStrategy": "role", @@ -70,6 +70,7 @@ "traces": [ "traces/default.zip" ], - "videos": [] + "videos": [], + "traceSuppressions": [] } } diff --git a/release/evidence/raw/ai-agent-cycle/regression.json b/release/evidence/raw/ai-agent-cycle/regression.json index 26a1666..353e47d 100644 --- a/release/evidence/raw/ai-agent-cycle/regression.json +++ b/release/evidence/raw/ai-agent-cycle/regression.json @@ -1,8 +1,8 @@ { "schemaVersion": "1.0", - "runId": "20260726T081932Z-0ea9", - "baselineFile": "F:\\RealDone\\work\\phase-i-qualification\\pocket-ledger\\.realdone\\baseline.json", - "generatedAt": "2026-07-26T08:19:35.245Z", + "runId": "20260726T105538Z-d5d0", + "baselineFile": "F:\\RealDone\\work\\phase-i-qualification\\pocket-ledger\\.realdone\\phase-j-baseline.json", + "generatedAt": "2026-07-26T10:55:40.404Z", "passed": false, "selectedContracts": 1, "regressions": 1, @@ -32,8 +32,8 @@ false ], "verificationId": [ - "20260726T081354Z-345d", - "20260726T081932Z-86b6" + "20260726T105311Z-4598", + "20260726T105538Z-a11a" ], "steps": { "1": { diff --git a/release/evidence/raw/ai-agent-cycle/repair.json b/release/evidence/raw/ai-agent-cycle/repair.json index 3940465..76c3803 100644 --- a/release/evidence/raw/ai-agent-cycle/repair.json +++ b/release/evidence/raw/ai-agent-cycle/repair.json @@ -1,8 +1,8 @@ { "schemaVersion": "1.0", - "runId": "20260726T082050Z-ad9f", - "baselineFile": "F:\\RealDone\\work\\phase-i-qualification\\pocket-ledger\\.realdone\\baseline.json", - "generatedAt": "2026-07-26T08:20:53.166Z", + "runId": "20260726T105629Z-4108", + "baselineFile": "F:\\RealDone\\work\\phase-i-qualification\\pocket-ledger\\.realdone\\phase-j-baseline.json", + "generatedAt": "2026-07-26T10:56:31.240Z", "passed": true, "selectedContracts": 1, "regressions": 0, @@ -26,8 +26,8 @@ "0": { "baseline": { "verificationId": [ - "20260726T081354Z-345d", - "20260726T082050Z-8a6e" + "20260726T105311Z-4598", + "20260726T105629Z-bcb2" ] } }, diff --git a/release/evidence/raw/ai-agent-cycle/role-verification.json b/release/evidence/raw/ai-agent-cycle/role-verification.json index 9dc02d3..74ab15b 100644 --- a/release/evidence/raw/ai-agent-cycle/role-verification.json +++ b/release/evidence/raw/ai-agent-cycle/role-verification.json @@ -1,6 +1,6 @@ { "schemaVersion": "1.0", - "verificationId": "20260726T081304Z-9075", + "verificationId": "20260726T105254Z-3c11", "contractId": "pocket-ledger-role-authorization", "contractName": "Member denial and admin visibility", "browser": "chromium", @@ -10,8 +10,8 @@ "member" ], "deep": true, - "startedAt": "2026-07-26T08:13:04.510Z", - "finishedAt": "2026-07-26T08:13:05.672Z", + "startedAt": "2026-07-26T10:52:54.183Z", + "finishedAt": "2026-07-26T10:52:55.181Z", "passed": true, "steps": [ { @@ -19,7 +19,7 @@ "type": "navigate", "role": "member", "status": "passed", - "durationMs": 1071, + "durationMs": 909, "reason": "Step and recorded expectations passed.", "assertions": [ { @@ -66,6 +66,7 @@ "traces/member.zip", "traces/admin.zip" ], - "videos": [] + "videos": [], + "traceSuppressions": [] } } diff --git a/release/evidence/raw/conduit-postgres-cleanup.json b/release/evidence/raw/conduit-postgres-cleanup.json index fecceae..722d700 100644 --- a/release/evidence/raw/conduit-postgres-cleanup.json +++ b/release/evidence/raw/conduit-postgres-cleanup.json @@ -1,8 +1,8 @@ { "schemaVersion": "1.0", - "generatedAt": "2026-07-26T08:37:02.892Z", + "generatedAt": "2026-07-26T11:04:00.000Z", "adapter": "postgresql", - "database": "conduit", + "database": "conduit_phase_j", "resources": [ { "resource": "signup-scan-user", @@ -10,13 +10,14 @@ "cleanupKey": "server-generated-primary-key" }, { - "resource": "crud-qualification-user", + "resource": "crud-qualification-articles", "status": "cleaned", "cleanupKey": "server-generated-primary-key" } ], "deletedRows": 2, "remainingQualificationUsers": 0, + "remainingQualificationArticles": 0, "transaction": "read-write", "scope": "disposable-local-qualification-database" } diff --git a/release/evidence/raw/conduit-postgres-create.scan.json b/release/evidence/raw/conduit-postgres-create.scan.json index 1fc059e..d74bb7c 100644 --- a/release/evidence/raw/conduit-postgres-create.scan.json +++ b/release/evidence/raw/conduit-postgres-create.scan.json @@ -1,21 +1,21 @@ { "schemaVersion": "1.0", - "scanId": "20260726T083351Z-6b0c", - "targetUrl": "http://127.0.0.1:3000/#/editor", - "startedAt": "2026-07-26T08:33:51.887Z", - "finishedAt": "2026-07-26T08:34:27.684Z", + "scanId": "20260726T105841Z-a0d2", + "targetUrl": "http://127.0.0.1:37213/#/editor", + "startedAt": "2026-07-26T10:58:41.145Z", + "finishedAt": "2026-07-26T10:59:16.677Z", "options": { - "maxPages": 10, - "maxActions": 30, + "maxPages": 3, + "maxActions": 50, "timeoutMs": 12000, "settleMs": 800, "maxDurationMs": 300000, "maxRetries": 2, - "allowDestructive": false, + "allowDestructive": true, "allowExternal": false, "mutationAllowed": true, "deep": true, - "trace": false, + "trace": true, "traceOnFailure": false, "video": false, "environmentTimeoutMs": 10000, @@ -41,12 +41,12 @@ }, "pages": [ { - "url": "http://127.0.0.1:3000/#/editor", + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", "actions": [ { - "id": "e2c4a07d29c9", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "4240ac8c9986", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "conduit", "activation": "click", "kind": "navigation", @@ -59,7 +59,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -78,7 +78,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -96,8 +96,8 @@ "fields": [] }, { - "id": "b4f9d978244f", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "cf7f7e055d50", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Source code", "activation": "click", "kind": "navigation", @@ -147,8 +147,8 @@ "fields": [] }, { - "id": "83251d79e73a", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "b2ce5788ac2d", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Home", "activation": "click", "kind": "navigation", @@ -161,7 +161,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -180,7 +180,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -198,8 +198,8 @@ "fields": [] }, { - "id": "92a9b567b4fa", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "38dd0a454d48", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "New Article", "activation": "click", "kind": "navigation", @@ -212,7 +212,7 @@ "role": "link", "accessibleName": "New Article", "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", + "href": "http://127.0.0.1:37213/#/editor", "candidates": [ { "strategy": "role", @@ -231,7 +231,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "value": "http://127.0.0.1:37213/#/editor" }, { "strategy": "text", @@ -249,8 +249,8 @@ "fields": [] }, { - "id": "9b8462828b58", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "b725edd599a8", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Publish Article", "activation": "submit", "kind": "mutation", @@ -316,8 +316,8 @@ ] }, { - "id": "87ec9ce9b221", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "615ef8bfaf91", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "conduit", "activation": "click", "kind": "navigation", @@ -330,7 +330,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -349,7 +349,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -367,8 +367,8 @@ "fields": [] }, { - "id": "799b5221fec8", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "955bb7c4ae7a", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -418,8 +418,8 @@ "fields": [] }, { - "id": "37e9aaab233a", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "865611a40b7e", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Source code", "activation": "click", "kind": "navigation", @@ -471,12 +471,12 @@ ] }, { - "url": "http://127.0.0.1:3000/", + "url": "http://127.0.0.1:37213/", "title": "Conduit", "actions": [ { - "id": "41da37d8eedb", - "pageUrl": "http://127.0.0.1:3000/", + "id": "a0147c56db57", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -489,7 +489,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -508,7 +508,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -526,8 +526,8 @@ "fields": [] }, { - "id": "25e3419d67d3", - "pageUrl": "http://127.0.0.1:3000/", + "id": "36a91b6a1f72", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -577,8 +577,8 @@ "fields": [] }, { - "id": "1f1deb778a19", - "pageUrl": "http://127.0.0.1:3000/", + "id": "63ad14060515", + "pageUrl": "http://127.0.0.1:37213/", "label": "Home", "activation": "click", "kind": "navigation", @@ -591,7 +591,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -610,7 +610,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -628,8 +628,8 @@ "fields": [] }, { - "id": "23e7c4644d98", - "pageUrl": "http://127.0.0.1:3000/", + "id": "2b6be7d79a5f", + "pageUrl": "http://127.0.0.1:37213/", "label": "New Article", "activation": "click", "kind": "navigation", @@ -642,7 +642,7 @@ "role": "link", "accessibleName": "New Article", "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", + "href": "http://127.0.0.1:37213/#/editor", "candidates": [ { "strategy": "role", @@ -661,7 +661,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "value": "http://127.0.0.1:37213/#/editor" }, { "strategy": "text", @@ -679,8 +679,8 @@ "fields": [] }, { - "id": "2d9ff0a4be0d", - "pageUrl": "http://127.0.0.1:3000/", + "id": "b6f0b8724ae3", + "pageUrl": "http://127.0.0.1:37213/", "label": "Your Feed", "activation": "click", "kind": "local", @@ -725,8 +725,8 @@ "fields": [] }, { - "id": "3e6593f2a04d", - "pageUrl": "http://127.0.0.1:3000/", + "id": "98ade3898516", + "pageUrl": "http://127.0.0.1:37213/", "label": "Global Feed", "activation": "click", "kind": "local", @@ -771,8 +771,8 @@ "fields": [] }, { - "id": "f485075d62a6", - "pageUrl": "http://127.0.0.1:3000/", + "id": "60e12226e19d", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -785,7 +785,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -804,7 +804,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -822,8 +822,8 @@ "fields": [] }, { - "id": "6959be4b6ca4", - "pageUrl": "http://127.0.0.1:3000/", + "id": "731b624cc34c", + "pageUrl": "http://127.0.0.1:37213/", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -873,8 +873,8 @@ "fields": [] }, { - "id": "c9b7b6b4d242", - "pageUrl": "http://127.0.0.1:3000/", + "id": "c5063859c1ad", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -930,8 +930,8 @@ { "id": "RD-001", "action": { - "id": "e2c4a07d29c9", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "4240ac8c9986", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "conduit", "activation": "click", "kind": "navigation", @@ -944,7 +944,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -963,7 +963,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -981,55 +981,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:33:57.330Z", - "durationMs": 2621, - "canary": "RD_TEST_1DC874", + "startedAt": "2026-07-26T10:58:46.373Z", + "durationMs": 2551, + "canary": "RD_TEST_96078D", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1620, + "startedAt": 1585, "status": 200, "ok": true, - "finishedAt": 1633, + "finishedAt": 1592, "contentType": "application/json", "resourceTypeHint": "feed" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 1621, + "startedAt": 1586, "status": 200, "ok": true, - "finishedAt": 1630, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1622, - "status": 200, - "ok": true, - "finishedAt": 1636, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1622, - "status": 200, - "ok": true, - "finishedAt": 1632, + "finishedAt": 1590, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -1050,35 +1026,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 6 + "elapsedMs": 9 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 7 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -1086,10 +1062,10 @@ "retryCount": 0 }, "before": { - "at": 1569, - "url": "http://127.0.0.1:3000/#/editor", + "at": 1543, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1101,9 +1077,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -1155,7 +1131,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1166,10 +1142,10 @@ } }, "beforeAction": { - "at": 1577, - "url": "http://127.0.0.1:3000/#/editor", + "at": 1554, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1181,9 +1157,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -1235,7 +1211,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1248,10 +1224,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2618, - "url": "http://127.0.0.1:3000/#/", + "at": 2547, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "1614f3853a8eb1c1", + "domHash": "712217d34ae7776a", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1263,9 +1239,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "0358d857e97a4e33", + "textHash": "e7fb8b5727d2c916", "visualHash": "dfad2167a8f7c17f", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -1289,7 +1265,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1299,6 +1275,14 @@ "indexedDb": [] } }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-001.index.json" }, "verdict": "VERIFIED", @@ -1309,8 +1293,8 @@ { "id": "RD-002", "action": { - "id": "83251d79e73a", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "b2ce5788ac2d", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Home", "activation": "click", "kind": "navigation", @@ -1323,7 +1307,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -1342,7 +1326,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -1360,55 +1344,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:33:59.956Z", - "durationMs": 2493, - "canary": "RD_TEST_2728C6", + "startedAt": "2026-07-26T10:58:48.993Z", + "durationMs": 2476, + "canary": "RD_TEST_9F2EBB", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1530, + "startedAt": 1516, "status": 200, "ok": true, - "finishedAt": 1544, + "finishedAt": 1523, "contentType": "application/json", "resourceTypeHint": "feed" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1531, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "tags", - "finishedAt": 1539 - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1531, - "status": 200, - "ok": true, - "finishedAt": 1544, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 1531, + "startedAt": 1517, "status": 200, "ok": true, - "finishedAt": 1540, + "finishedAt": 1522, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -1429,14 +1389,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -1444,10 +1404,10 @@ "retryCount": 0 }, "before": { - "at": 1503, - "url": "http://127.0.0.1:3000/#/editor", + "at": 1475, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1459,9 +1419,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -1513,7 +1473,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1524,10 +1484,10 @@ } }, "beforeAction": { - "at": 1509, - "url": "http://127.0.0.1:3000/#/editor", + "at": 1485, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1539,9 +1499,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -1593,7 +1553,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1606,10 +1566,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2490, - "url": "http://127.0.0.1:3000/#/", + "at": 2472, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "1614f3853a8eb1c1", + "domHash": "712217d34ae7776a", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1621,9 +1581,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "0358d857e97a4e33", + "textHash": "e7fb8b5727d2c916", "visualHash": "dfad2167a8f7c17f", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -1647,7 +1607,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1657,6 +1617,14 @@ "indexedDb": [] } }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-002.index.json" }, "verdict": "VERIFIED", @@ -1667,8 +1635,8 @@ { "id": "RD-003", "action": { - "id": "9b8462828b58", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "b725edd599a8", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Publish Article", "activation": "submit", "kind": "mutation", @@ -1734,3127 +1702,427 @@ ] }, "evidence": { - "startedAt": "2026-07-26T08:34:02.492Z", - "durationMs": 7331, - "canary": "RD_TEST_F95995", + "startedAt": "2026-07-26T10:58:51.558Z", + "durationMs": 7183, + "canary": "RD_TEST_1DB90D", "network": [ { "id": "net-1", "method": "POST", - "url": "http://127.0.0.1:3000/api/articles", + "url": "http://127.0.0.1:37213/api/articles", "resourceType": "xhr", - "startedAt": 1612, + "startedAt": 1624, "status": 201, "ok": true, - "finishedAt": 1630, + "finishedAt": 1641, "contentType": "application/json", "resourceTypeHint": "articles" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 1635, - "status": 200, - "ok": true, - "finishedAt": 1640, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-3", - "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", "resourceType": "font", - "startedAt": 1647, + "startedAt": 1649, "status": 200, "ok": true, - "finishedAt": 1694, + "finishedAt": 1695, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { - "id": "net-4", + "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1/comments", + "url": "http://127.0.0.1:37213/api/articles/rd-test-1db90d-1/comments", "resourceType": "xhr", "startedAt": 1650, "status": 200, "ok": true, - "finishedAt": 1662, + "finishedAt": 1659, "contentType": "application/json", "resourceTypeHint": "comments" }, { - "id": "net-5", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1", - "resourceType": "xhr", - "startedAt": 1651, - "status": 200, - "ok": true, - "finishedAt": 1667, - "contentType": "application/json", - "resourceTypeHint": "rd-test-f95995-1" - }, - { - "id": "net-6", + "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1/comments", + "url": "http://127.0.0.1:37213/api/articles/rd-test-1db90d-1", "resourceType": "xhr", "startedAt": 1651, "status": 200, "ok": true, "finishedAt": 1663, "contentType": "application/json", - "resourceTypeHint": "comments" - }, - { - "id": "net-7", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1", - "resourceType": "xhr", - "startedAt": 1652, - "status": 200, - "ok": true, - "finishedAt": 1680, - "contentType": "application/json", - "resourceTypeHint": "rd-test-f95995-1" + "resourceTypeHint": "rd-test-1db90d-1" }, { - "id": "net-8", + "id": "net-5", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", "resourceType": "font", - "startedAt": 1687, + "startedAt": 1681, "status": 200, "ok": true, - "finishedAt": 1733, + "finishedAt": 1732, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" }, { - "id": "net-9", + "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:3000/", + "url": "http://127.0.0.1:37213/", "resourceType": "document", - "startedAt": 2747, + "startedAt": 2755, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "resource", - "finishedAt": 2757 - }, - { - "id": "net-10", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 2755, - "status": 200, - "ok": true, - "finishedAt": 2769, - "contentType": "text/javascript", - "resourceTypeHint": "client" + "finishedAt": 2764 }, { - "id": "net-11", + "id": "net-7", "method": "GET", "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 2756, + "startedAt": 2762, "status": 307, "ok": false, - "finishedAt": 2759, + "finishedAt": 2765, "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-12", - "method": "GET", - "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", - "resourceType": "stylesheet", - "startedAt": 2756, - "status": 200, - "ok": true, - "finishedAt": 2807, - "contentType": "text/css", - "resourceTypeHint": "css" - }, - { - "id": "net-13", - "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", - "resourceType": "script", - "startedAt": 2756, - "status": 200, - "ok": true, - "finishedAt": 2763, - "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" - }, - { - "id": "net-14", - "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 2757, - "status": 200, - "ok": true, - "finishedAt": 2770, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" - }, - { - "id": "net-15", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 2759, - "status": 200, - "ok": true, - "finishedAt": 3059, - "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-16", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 2764, - "status": 200, - "ok": true, - "finishedAt": 2773, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" - }, - { - "id": "net-17", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 2765, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "react.js", - "finishedAt": 2777 - }, - { - "id": "net-18", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 2765, - "status": 200, - "ok": true, - "finishedAt": 2803, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" - }, - { - "id": "net-19", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 2765, - "status": 200, - "ok": true, - "finishedAt": 2795, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" - }, - { - "id": "net-20", - "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 2765, - "status": 200, - "ok": true, - "finishedAt": 2784, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" - }, - { - "id": "net-21", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 2766, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx", - "finishedAt": 2785 - }, - { - "id": "net-22", - "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 2767, - "status": 200, - "ok": true, - "finishedAt": 2783, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" - }, - { - "id": "net-23", - "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 2767, - "status": 200, - "ok": true, - "finishedAt": 2785, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" - }, - { - "id": "net-24", - "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 2768, - "status": 200, - "ok": true, - "finishedAt": 2785, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" - }, - { - "id": "net-25", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 2768, - "status": 200, - "ok": true, - "finishedAt": 2788, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" - }, - { - "id": "net-26", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 2768, - "status": 200, - "ok": true, - "finishedAt": 2787, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" - }, - { - "id": "net-27", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 2769, - "status": 200, - "ok": true, - "finishedAt": 2788, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" - }, - { - "id": "net-28", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 2769, - "status": 200, - "ok": true, - "finishedAt": 2789, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" - }, - { - "id": "net-29", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 2769, - "status": 200, - "ok": true, - "finishedAt": 2790, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" - }, - { - "id": "net-30", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 2770, - "status": 200, - "ok": true, - "finishedAt": 2790, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" - }, - { - "id": "net-31", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 2770, - "status": 200, - "ok": true, - "finishedAt": 2797, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" - }, - { - "id": "net-32", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 2770, - "status": 200, - "ok": true, - "finishedAt": 2797, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" - }, - { - "id": "net-33", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 2770, - "status": 200, - "ok": true, - "finishedAt": 2799, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" - }, - { - "id": "net-34", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 2771, - "status": 200, - "ok": true, - "finishedAt": 2800, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" - }, - { - "id": "net-35", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 2771, - "status": 200, - "ok": true, - "finishedAt": 2800, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" - }, - { - "id": "net-36", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 2771, - "status": 200, - "ok": true, - "finishedAt": 2802, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" - }, - { - "id": "net-37", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 2771, - "status": 200, - "ok": true, - "finishedAt": 2802, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" - }, - { - "id": "net-38", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 2773, - "status": 200, - "ok": true, - "finishedAt": 2803, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" - }, - { - "id": "net-39", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 2773, - "status": 200, - "ok": true, - "finishedAt": 2803, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" - }, - { - "id": "net-40", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 2790, - "status": 200, - "ok": true, - "finishedAt": 2804, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-41", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 2791, - "status": 200, - "ok": true, - "finishedAt": 2804, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-42", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 2791, - "status": 200, - "ok": true, - "finishedAt": 2804, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" - }, - { - "id": "net-43", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 2793, - "status": 200, - "ok": true, - "finishedAt": 2809, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-44", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 2793, - "status": 200, - "ok": true, - "finishedAt": 2809, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-45", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 2793, - "status": 200, - "ok": true, - "finishedAt": 2809, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-46", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 2793, - "status": 200, - "ok": true, - "finishedAt": 2809, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-47", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 2794, - "status": 200, - "ok": true, - "finishedAt": 2814, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" - }, - { - "id": "net-48", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 2794, - "status": 200, - "ok": true, - "finishedAt": 2812, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-49", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 2794, - "status": 200, - "ok": true, - "finishedAt": 2813, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-50", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 2797, - "status": 200, - "ok": true, - "finishedAt": 2815, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-51", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 2797, - "status": 200, - "ok": true, - "finishedAt": 2817, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-52", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 2797, - "status": 200, - "ok": true, - "finishedAt": 2817, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" - }, - { - "id": "net-53", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 2798, - "status": 200, - "ok": true, - "finishedAt": 2817, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-54", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 2798, - "status": 200, - "ok": true, - "finishedAt": 2818, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" - }, - { - "id": "net-55", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 2798, - "status": 200, - "ok": true, - "finishedAt": 2818, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-56", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 2798, - "status": 200, - "ok": true, - "finishedAt": 2818, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-57", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 2799, - "status": 200, - "ok": true, - "finishedAt": 2818, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-58", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 2799, - "status": 200, - "ok": true, - "finishedAt": 2819, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" - }, - { - "id": "net-59", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 2799, - "status": 200, - "ok": true, - "finishedAt": 2820, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-60", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 2799, - "status": 200, - "ok": true, - "finishedAt": 2821, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-61", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 2802, - "status": 200, - "ok": true, - "finishedAt": 2823, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" - }, - { - "id": "net-62", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 2802, - "status": 200, - "ok": true, - "finishedAt": 2822, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-63", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 2802, - "status": 200, - "ok": true, - "finishedAt": 2824, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-64", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 2803, - "status": 200, - "ok": true, - "finishedAt": 2825, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-65", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 2803, - "status": 200, - "ok": true, - "finishedAt": 2825, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-66", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2825, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" - }, - { - "id": "net-67", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2826, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" - }, - { - "id": "net-68", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 2805, - "status": 200, - "ok": true, - "finishedAt": 2830, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" - }, - { - "id": "net-69", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 2805, - "status": 200, - "ok": true, - "finishedAt": 2826, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" - }, - { - "id": "net-70", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 2809, - "status": 200, - "ok": true, - "finishedAt": 2830, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" - }, - { - "id": "net-71", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 2809, - "status": 200, - "ok": true, - "finishedAt": 2830, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" - }, - { - "id": "net-72", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 2810, - "status": 200, - "ok": true, - "finishedAt": 2830, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" - }, - { - "id": "net-73", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 2812, - "status": 200, - "ok": true, - "finishedAt": 2833, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" - }, - { - "id": "net-74", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 2813, - "status": 200, - "ok": true, - "finishedAt": 2834, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" - }, - { - "id": "net-75", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 2813, - "status": 200, - "ok": true, - "finishedAt": 2834, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" - }, - { - "id": "net-76", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 2817, - "status": 200, - "ok": true, - "finishedAt": 2837, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" - }, - { - "id": "net-77", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 2821, - "status": 200, - "ok": true, - "finishedAt": 2839, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" - }, - { - "id": "net-78", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 2821, - "status": 200, - "ok": true, - "finishedAt": 2839, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" - }, - { - "id": "net-79", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 2821, - "status": 200, - "ok": true, - "finishedAt": 2839, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" - }, - { - "id": "net-80", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 2822, - "status": 200, - "ok": true, - "finishedAt": 2840, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" - }, - { - "id": "net-81", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 2822, - "status": 200, - "ok": true, - "finishedAt": 2840, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" - }, - { - "id": "net-82", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 2825, - "status": 200, - "ok": true, - "finishedAt": 2843, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" - }, - { - "id": "net-83", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 2825, - "status": 200, - "ok": true, - "finishedAt": 2843, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" - }, - { - "id": "net-84", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 2825, - "status": 200, - "ok": true, - "finishedAt": 2843, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" - }, - { - "id": "net-85", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 2826, - "status": 200, - "ok": true, - "finishedAt": 2844, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" - }, - { - "id": "net-86", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 2826, - "status": 200, - "ok": true, - "finishedAt": 2844, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" - }, - { - "id": "net-87", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 2826, - "status": 200, - "ok": true, - "finishedAt": 2844, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" - }, - { - "id": "net-88", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 2827, - "status": 200, - "ok": true, - "finishedAt": 2845, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" - }, - { - "id": "net-89", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 2827, - "status": 200, - "ok": true, - "finishedAt": 2845, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-90", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 2829, - "status": 200, - "ok": true, - "finishedAt": 2848, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" - }, - { - "id": "net-91", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 2830, - "status": 200, - "ok": true, - "finishedAt": 2849, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" - }, - { - "id": "net-92", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 2831, - "status": 200, - "ok": true, - "finishedAt": 2849, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-93", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 2831, - "status": 200, - "ok": true, - "finishedAt": 2849, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" - }, - { - "id": "net-94", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 2831, - "status": 200, - "ok": true, - "finishedAt": 2849, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" - }, - { - "id": "net-95", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 2832, - "status": 200, - "ok": true, - "finishedAt": 2850, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" - }, - { - "id": "net-96", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 2833, - "status": 200, - "ok": true, - "finishedAt": 2851, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" - }, - { - "id": "net-97", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 2833, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" - }, - { - "id": "net-98", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 2834, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-99", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 2834, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-100", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 2834, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-101", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 2835, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-102", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 2839, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" - }, - { - "id": "net-103", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 2840, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" - }, - { - "id": "net-104", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 2840, - "status": 200, - "ok": true, - "finishedAt": 2856, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" - }, - { - "id": "net-105", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 2840, - "status": 200, - "ok": true, - "finishedAt": 2856, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" - }, - { - "id": "net-106", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 2846, - "status": 200, - "ok": true, - "finishedAt": 2856, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" - }, - { - "id": "net-107", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 2847, - "status": 200, - "ok": true, - "finishedAt": 2856, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" - }, - { - "id": "net-108", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 2847, - "status": 200, - "ok": true, - "finishedAt": 2857, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" - }, - { - "id": "net-109", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 2848, - "status": 200, - "ok": true, - "finishedAt": 2857, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" - }, - { - "id": "net-110", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 2848, - "status": 200, - "ok": true, - "finishedAt": 2858, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" - }, - { - "id": "net-111", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 2852, - "status": 200, - "ok": true, - "finishedAt": 2859, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" - }, - { - "id": "net-112", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 2852, - "status": 200, - "ok": true, - "finishedAt": 2859, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" - }, - { - "id": "net-113", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 2852, - "status": 200, - "ok": true, - "finishedAt": 2859, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" - }, - { - "id": "net-114", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 2855, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx", - "finishedAt": 2861 - }, - { - "id": "net-115", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 2855, - "status": 200, - "ok": true, - "finishedAt": 2861, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" - }, - { - "id": "net-116", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 2855, - "status": 200, - "ok": true, - "finishedAt": 2861, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" - }, - { - "id": "net-117", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 2856, - "status": 200, - "ok": true, - "finishedAt": 2862, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" - }, - { - "id": "net-118", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 2859, - "status": 200, - "ok": true, - "finishedAt": 2863, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-119", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 2862, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js", - "finishedAt": 2865 - }, - { - "id": "net-120", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 2863, - "status": 200, - "ok": true, - "finishedAt": 2866, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js" - }, - { - "id": "net-121", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 2863, - "status": 200, - "ok": true, - "finishedAt": 2866, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" - }, - { - "id": "net-122", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 3074, - "status": 200, - "ok": true, - "finishedAt": 3079, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-123", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", - "resourceType": "font", - "startedAt": 3077, - "status": 200, - "ok": true, - "finishedAt": 3122, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" - }, - { - "id": "net-124", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", - "resourceType": "font", - "startedAt": 3077, - "status": 200, - "ok": true, - "finishedAt": 3188, - "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf" - }, - { - "id": "net-125", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", - "resourceType": "font", - "startedAt": 3078, - "status": 200, - "ok": true, - "finishedAt": 3124, - "contentType": "font/woff2", - "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" - }, - { - "id": "net-126", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", - "resourceType": "font", - "startedAt": 3078, - "status": 200, - "ok": true, - "finishedAt": 3124, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" - }, - { - "id": "net-127", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", - "resourceType": "font", - "startedAt": 3078, - "status": 200, - "ok": true, - "finishedAt": 3177, - "contentType": "font/woff2", - "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" - }, - { - "id": "net-128", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1/comments", - "resourceType": "xhr", - "startedAt": 3082, - "status": 200, - "ok": true, - "finishedAt": 3090, - "contentType": "application/json", - "resourceTypeHint": "comments" - }, - { - "id": "net-129", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1", - "resourceType": "xhr", - "startedAt": 3082, - "status": 200, - "ok": true, - "finishedAt": 3105, - "contentType": "application/json", - "resourceTypeHint": "rd-test-f95995-1" - }, - { - "id": "net-130", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 3083, - "status": 200, - "ok": true, - "finishedAt": 3092, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-131", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1/comments", - "resourceType": "xhr", - "startedAt": 3083, - "status": 200, - "ok": true, - "finishedAt": 3098, - "contentType": "application/json", - "resourceTypeHint": "comments" - }, - { - "id": "net-132", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1", - "resourceType": "xhr", - "startedAt": 3084, - "status": 200, - "ok": true, - "finishedAt": 3104, - "contentType": "application/json", - "resourceTypeHint": "rd-test-f95995-1" - }, - { - "id": "net-133", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 3084, - "status": 200, - "ok": true, - "finishedAt": 3098, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-134", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", - "resourceType": "font", - "startedAt": 3112, - "status": 200, - "ok": true, - "finishedAt": 3164, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" - }, - { - "id": "net-135", - "method": "GET", - "url": "http://127.0.0.1:3000/", - "resourceType": "document", - "startedAt": 3962, - "status": 200, - "ok": true, - "contentType": "text/html", - "resourceTypeHint": "resource", - "finishedAt": 3971 - }, - { - "id": "net-136", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 3969, - "status": 200, - "ok": true, - "finishedAt": 3979, - "contentType": "text/javascript", - "resourceTypeHint": "client" - }, - { - "id": "net-137", - "method": "GET", - "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 3970, - "status": 307, - "ok": false, - "finishedAt": 3973, - "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-138", - "method": "GET", - "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", - "resourceType": "stylesheet", - "startedAt": 3970, - "status": 200, - "ok": true, - "finishedAt": 4020, - "contentType": "text/css", - "resourceTypeHint": "css" - }, - { - "id": "net-139", - "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", - "resourceType": "script", - "startedAt": 3970, - "status": 200, - "ok": true, - "finishedAt": 3976, - "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" - }, - { - "id": "net-140", - "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 3971, - "status": 200, - "ok": true, - "finishedAt": 3984, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" - }, - { - "id": "net-141", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 3973, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-142", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 3978, - "status": 200, - "ok": true, - "finishedAt": 3987, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" - }, - { - "id": "net-143", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 3978, - "status": 200, - "ok": true, - "finishedAt": 3988, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" - }, - { - "id": "net-144", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 3979, - "status": 200, - "ok": true, - "finishedAt": 4016, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" - }, - { - "id": "net-145", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 3979, - "status": 200, - "ok": true, - "finishedAt": 4016, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" - }, - { - "id": "net-146", - "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 3980, - "status": 200, - "ok": true, - "finishedAt": 4002, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" - }, - { - "id": "net-147", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 3981, - "status": 200, - "ok": true, - "finishedAt": 4002, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" - }, - { - "id": "net-148", - "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 3981, - "status": 200, - "ok": true, - "finishedAt": 4003, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" - }, - { - "id": "net-149", - "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 3982, - "status": 200, - "ok": true, - "finishedAt": 4003, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" - }, - { - "id": "net-150", - "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 3982, - "status": 200, - "ok": true, - "finishedAt": 4004, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" - }, - { - "id": "net-151", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 3982, - "status": 200, - "ok": true, - "finishedAt": 4005, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" - }, - { - "id": "net-152", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 3984, - "status": 200, - "ok": true, - "finishedAt": 4005, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" - }, - { - "id": "net-153", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 3984, - "status": 200, - "ok": true, - "finishedAt": 4005, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" - }, - { - "id": "net-154", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 3984, - "status": 200, - "ok": true, - "finishedAt": 4006, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" - }, - { - "id": "net-155", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 3985, - "status": 200, - "ok": true, - "finishedAt": 4007, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" - }, - { - "id": "net-156", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 3985, - "status": 200, - "ok": true, - "finishedAt": 4007, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" - }, - { - "id": "net-157", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 3985, - "status": 200, - "ok": true, - "finishedAt": 4009, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" - }, - { - "id": "net-158", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 3985, - "status": 200, - "ok": true, - "finishedAt": 4011, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" - }, - { - "id": "net-159", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 3985, - "status": 200, - "ok": true, - "finishedAt": 4015, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" - }, - { - "id": "net-160", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 3986, - "status": 200, - "ok": true, - "finishedAt": 4016, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" - }, - { - "id": "net-161", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 3986, - "status": 200, - "ok": true, - "finishedAt": 4016, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" - }, - { - "id": "net-162", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 3986, - "status": 200, - "ok": true, - "finishedAt": 4016, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" - }, - { - "id": "net-163", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 3986, - "status": 200, - "ok": true, - "finishedAt": 4018, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" - }, - { - "id": "net-164", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 3987, - "status": 200, - "ok": true, - "finishedAt": 4018, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" - }, - { - "id": "net-165", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 3988, - "status": 200, - "ok": true, - "finishedAt": 4018, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" - }, - { - "id": "net-166", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 4008, - "status": 200, - "ok": true, - "finishedAt": 4020, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-167", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 4008, - "status": 200, - "ok": true, - "finishedAt": 4020, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-168", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 4008, - "status": 200, - "ok": true, - "finishedAt": 4020, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" - }, - { - "id": "net-169", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 4011, - "status": 200, - "ok": true, - "finishedAt": 4027, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-170", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 4011, - "status": 200, - "ok": true, - "finishedAt": 4029, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-171", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 4012, - "status": 200, - "ok": true, - "finishedAt": 4032, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" - }, - { - "id": "net-172", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 4012, - "status": 200, - "ok": true, - "finishedAt": 4030, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-173", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 4012, - "status": 200, - "ok": true, - "finishedAt": 4031, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-174", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 4012, - "status": 200, - "ok": true, - "finishedAt": 4031, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-175", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 4013, - "status": 200, - "ok": true, - "finishedAt": 4032, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-176", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 4013, - "status": 200, - "ok": true, - "finishedAt": 4033, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" - }, - { - "id": "net-177", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 4013, - "status": 200, - "ok": true, - "finishedAt": 4034, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-178", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 4013, - "status": 200, - "ok": true, - "finishedAt": 4034, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-179", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 4014, - "status": 200, - "ok": true, - "finishedAt": 4034, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-180", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 4014, - "status": 200, - "ok": true, - "finishedAt": 4035, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" - }, - { - "id": "net-181", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 4014, - "status": 200, - "ok": true, - "finishedAt": 4036, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-182", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 4014, - "status": 200, - "ok": true, - "finishedAt": 4037, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-183", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 4014, - "status": 200, - "ok": true, - "finishedAt": 4039, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-184", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 4015, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" - }, - { - "id": "net-185", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 4015, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-186", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 4015, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-187", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 4015, - "status": 200, - "ok": true, - "finishedAt": 4044, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-188", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 4016, - "status": 200, - "ok": true, - "finishedAt": 4045, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-189", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 4018, - "status": 200, - "ok": true, - "finishedAt": 4046, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" - }, - { - "id": "net-190", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 4018, - "status": 200, - "ok": true, - "finishedAt": 4046, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-191", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 4018, - "status": 200, - "ok": true, - "finishedAt": 4047, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-192", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 4020, - "status": 200, - "ok": true, - "finishedAt": 4047, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" - }, - { - "id": "net-193", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 4020, - "status": 200, - "ok": true, - "finishedAt": 4047, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" - }, - { - "id": "net-194", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 4020, - "status": 200, - "ok": true, - "finishedAt": 4051, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" - }, - { - "id": "net-195", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 4021, - "status": 200, - "ok": true, - "finishedAt": 4047, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" - }, - { - "id": "net-196", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 4032, - "status": 200, - "ok": true, - "finishedAt": 4051, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" - }, - { - "id": "net-197", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 4036, - "status": 200, - "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" - }, - { - "id": "net-198", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 4037, - "status": 200, - "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" - }, - { - "id": "net-199", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 4038, - "status": 200, - "ok": true, - "finishedAt": 4055, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" - }, - { - "id": "net-200", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 4039, - "status": 200, - "ok": true, - "finishedAt": 4056, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" - }, - { - "id": "net-201", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 4039, - "status": 200, - "ok": true, - "finishedAt": 4057, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" - }, - { - "id": "net-202", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 4041, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" - }, - { - "id": "net-203", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 4042, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" - }, - { - "id": "net-204", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 4042, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" - }, - { - "id": "net-205", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 4044, - "status": 200, - "ok": true, - "finishedAt": 4063, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" - }, - { - "id": "net-206", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 4045, - "status": 200, - "ok": true, - "finishedAt": 4064, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" - }, - { - "id": "net-207", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 4045, - "status": 200, - "ok": true, - "finishedAt": 4064, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" - }, - { - "id": "net-208", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 4046, - "status": 200, - "ok": true, - "finishedAt": 4064, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" - }, - { - "id": "net-209", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 4047, - "status": 200, - "ok": true, - "finishedAt": 4065, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" - }, - { - "id": "net-210", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 4047, - "status": 200, - "ok": true, - "finishedAt": 4065, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" - }, - { - "id": "net-211", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 4047, - "status": 200, - "ok": true, - "finishedAt": 4066, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" - }, - { - "id": "net-212", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "finishedAt": 4066, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" - }, - { - "id": "net-213", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx", - "finishedAt": 4069 - }, - { - "id": "net-214", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx", - "finishedAt": 4070 - }, - { - "id": "net-215", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "finishedAt": 4068, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-216", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "finishedAt": 4070, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" - }, - { - "id": "net-217", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 4051, - "status": 200, - "ok": true, - "finishedAt": 4071, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" - }, - { - "id": "net-218", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 4051, - "status": 200, - "ok": true, - "finishedAt": 4072, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-219", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 4052, - "status": 200, - "ok": true, - "finishedAt": 4072, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" - }, - { - "id": "net-220", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 4052, - "status": 200, - "ok": true, - "finishedAt": 4073, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" - }, - { - "id": "net-221", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 4052, - "status": 200, - "ok": true, - "finishedAt": 4075, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" - }, - { - "id": "net-222", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 4053, - "status": 200, - "ok": true, - "finishedAt": 4076, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" - }, - { - "id": "net-223", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 4056, - "status": 200, - "ok": true, - "finishedAt": 4077, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-224", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 4056, - "status": 200, - "ok": true, - "finishedAt": 4077, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-225", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 4057, - "status": 200, - "ok": true, - "finishedAt": 4077, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-226", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 4061, - "status": 200, - "ok": true, - "finishedAt": 4077, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" - }, - { - "id": "net-227", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 4061, - "status": 200, - "ok": true, - "finishedAt": 4077, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-228", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 4062, - "status": 200, - "ok": true, - "finishedAt": 4078, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" - }, - { - "id": "net-229", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 4067, - "status": 200, - "ok": true, - "finishedAt": 4081, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-230", + "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 4069, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 2762, "status": 200, "ok": true, - "finishedAt": 4081, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" + "finishedAt": 2811, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-231", + "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 4069, + "startedAt": 2763, "status": 200, "ok": true, - "finishedAt": 4082, + "finishedAt": 2775, "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-232", + "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 4069, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2763, "status": 200, "ok": true, - "finishedAt": 4082, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" + "finishedAt": 2769, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-233", + "id": "net-11", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 4071, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2765, "status": 200, "ok": true, - "finishedAt": 4082, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" + "finishedAt": 3055, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-234", + "id": "net-12", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 4073, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 3065, "status": 200, "ok": true, - "finishedAt": 4083, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" + "finishedAt": 3112, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-235", + "id": "net-13", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 4075, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 3065, "status": 200, "ok": true, - "finishedAt": 4086, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" + "finishedAt": 3186, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-236", + "id": "net-14", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 4075, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 3066, "status": 200, "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js", - "finishedAt": 4088 + "finishedAt": 3115, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-237", + "id": "net-15", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 4076, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 3066, "status": 200, "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js", - "finishedAt": 4088 + "finishedAt": 3114, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { - "id": "net-238", + "id": "net-16", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 4076, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 3066, "status": 200, "ok": true, - "finishedAt": 4088, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" + "finishedAt": 3164, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-239", + "id": "net-17", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 4077, + "url": "http://127.0.0.1:37213/api/articles/rd-test-1db90d-1/comments", + "resourceType": "xhr", + "startedAt": 3068, "status": 200, "ok": true, - "finishedAt": 4088, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" + "finishedAt": 3075, + "contentType": "application/json", + "resourceTypeHint": "comments" }, { - "id": "net-240", + "id": "net-18", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 4078, + "url": "http://127.0.0.1:37213/api/articles/rd-test-1db90d-1", + "resourceType": "xhr", + "startedAt": 3068, "status": 200, "ok": true, - "finishedAt": 4089, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" + "finishedAt": 3078, + "contentType": "application/json", + "resourceTypeHint": "rd-test-1db90d-1" }, { - "id": "net-241", + "id": "net-19", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 4080, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 3069, "status": 200, "ok": true, - "finishedAt": 4089, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" + "finishedAt": 3076, + "contentType": "application/json", + "resourceTypeHint": "user" }, { - "id": "net-242", + "id": "net-20", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 4080, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 3083, "status": 200, "ok": true, - "finishedAt": 4089, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" + "finishedAt": 3154, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" }, { - "id": "net-243", + "id": "net-21", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 4080, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3941, "status": 200, "ok": true, - "finishedAt": 4089, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 3950 }, { - "id": "net-244", + "id": "net-22", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 4089, - "status": 200, - "ok": true, - "finishedAt": 4094, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3948, + "status": 307, + "ok": false, + "finishedAt": 3951, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-245", + "id": "net-23", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 4090, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 3948, "status": 200, "ok": true, - "finishedAt": 4094, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" + "finishedAt": 3990, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-246", + "id": "net-24", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 4090, + "startedAt": 3949, "status": 200, "ok": true, - "finishedAt": 4095, + "finishedAt": 3961, "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-247", + "id": "net-25", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 4090, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 3949, "status": 200, "ok": true, - "finishedAt": 4095, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" + "finishedAt": 3954, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-248", + "id": "net-26", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 4108, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3951, "status": 200, "ok": true, - "finishedAt": 4113, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" + "finishedAt": 4028, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-249", + "id": "net-27", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", "resourceType": "font", - "startedAt": 4110, + "startedAt": 4038, "status": 200, "ok": true, - "finishedAt": 4156, + "finishedAt": 4087, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-250", + "id": "net-28", "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", "resourceType": "font", - "startedAt": 4111, + "startedAt": 4038, "status": 200, "ok": true, - "finishedAt": 4221, + "finishedAt": 4157, "contentType": "font/ttf", "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-251", + "id": "net-29", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", "resourceType": "font", - "startedAt": 4111, + "startedAt": 4039, "status": 200, "ok": true, - "finishedAt": 4158, + "finishedAt": 4084, "contentType": "font/woff2", "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-252", + "id": "net-30", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", "resourceType": "font", - "startedAt": 4112, + "startedAt": 4040, "status": 200, "ok": true, - "finishedAt": 4159, + "finishedAt": 4087, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { - "id": "net-253", + "id": "net-31", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", "resourceType": "font", - "startedAt": 4112, + "startedAt": 4040, "status": 200, "ok": true, - "finishedAt": 4159, + "finishedAt": 4088, "contentType": "font/woff2", "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-254", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1/comments", - "resourceType": "xhr", - "startedAt": 4116, - "status": 200, - "ok": true, - "finishedAt": 4134, - "contentType": "application/json", - "resourceTypeHint": "comments" - }, - { - "id": "net-255", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1", - "resourceType": "xhr", - "startedAt": 4116, - "status": 200, - "ok": true, - "finishedAt": 4139, - "contentType": "application/json", - "resourceTypeHint": "rd-test-f95995-1" - }, - { - "id": "net-256", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 4116, - "status": 200, - "ok": true, - "finishedAt": 4127, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-257", + "id": "net-32", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1/comments", + "url": "http://127.0.0.1:37213/api/articles/rd-test-1db90d-1/comments", "resourceType": "xhr", - "startedAt": 4117, + "startedAt": 4041, "status": 200, "ok": true, - "finishedAt": 4135, + "finishedAt": 4048, "contentType": "application/json", "resourceTypeHint": "comments" }, { - "id": "net-258", + "id": "net-33", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1", + "url": "http://127.0.0.1:37213/api/articles/rd-test-1db90d-1", "resourceType": "xhr", - "startedAt": 4117, + "startedAt": 4041, "status": 200, "ok": true, - "finishedAt": 4139, + "finishedAt": 4054, "contentType": "application/json", - "resourceTypeHint": "rd-test-f95995-1" + "resourceTypeHint": "rd-test-1db90d-1" }, { - "id": "net-259", + "id": "net-34", "method": "GET", - "url": "http://127.0.0.1:3000/api/user", + "url": "http://127.0.0.1:37213/api/user", "resourceType": "xhr", - "startedAt": 4117, + "startedAt": 4042, "status": 200, "ok": true, - "finishedAt": 4135, "contentType": "application/json", - "resourceTypeHint": "user" + "resourceTypeHint": "user", + "finishedAt": 4048 }, { - "id": "net-260", + "id": "net-35", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", "resourceType": "font", - "startedAt": 4144, + "startedAt": 4064, "status": 200, "ok": true, - "finishedAt": 4211, + "finishedAt": 4128, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" } @@ -4867,28 +2135,28 @@ "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(1) > input", "name": "title", "type": "text", - "value": "RD_TEST_F95995_1", + "value": "RD_TEST_1DB90D_1", "redacted": false }, { "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(2) > input", "name": "description", "type": "text", - "value": "RD_TEST_F95995_2", + "value": "RD_TEST_1DB90D_2", "redacted": false }, { "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(3) > textarea", "name": "body", "type": "textarea", - "value": "RD_TEST_F95995_3", + "value": "RD_TEST_1DB90D_3", "redacted": false }, { "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(4) > input", "name": "tags", "type": "text", - "value": "RD_TEST_F95995_4", + "value": "RD_TEST_1DB90D_4", "redacted": false } ], @@ -4904,7 +2172,7 @@ "weight": 60, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "text", @@ -4912,10 +2180,10 @@ "retryCount": 0 }, "before": { - "at": 1537, - "url": "http://127.0.0.1:3000/#/editor", + "at": 1513, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -4927,9 +2195,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -4981,7 +2249,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -4994,23 +2262,18 @@ { "adapter": "postgresql", "resource": "articles", - "schemaHash": "d718b75b5f43908b", + "schemaHash": "811ce917dc830ae0", "rows": [], "truncated": false }, { "adapter": "postgresql", "resource": "users", - "schemaHash": "4dc457684d4d0982", + "schemaHash": "b7a8a911cd0fd4e9", "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "b722d6313737881a", - "softDeleted": false - }, { "keyHash": "da7114755c3b82ba", - "rowHash": "8fc053865923194c", + "rowHash": "f1108a413122f589", "softDeleted": false } ], @@ -5019,10 +2282,10 @@ ] }, "beforeAction": { - "at": 1576, - "url": "http://127.0.0.1:3000/#/editor", + "at": 1571, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "e0fcab256097f31b", + "domHash": "129b77ab6b3ff0ae", "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -5034,15 +2297,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", "type": "text", "name": "title", - "valueHash": "b1ecbb2c73c74aae", + "valueHash": "b1e6e711a6234597", "checked": false, "disabled": false, "visible": true @@ -5051,7 +2314,7 @@ "tag": "input", "type": "text", "name": "description", - "valueHash": "7ecc020bffae0253", + "valueHash": "b88339d960a264a0", "checked": false, "disabled": false, "visible": true @@ -5060,7 +2323,7 @@ "tag": "textarea", "type": "textarea", "name": "body", - "valueHash": "6c0eafd99f29ca4d", + "valueHash": "576c4815d7a09b26", "disabled": false, "visible": true }, @@ -5068,7 +2331,7 @@ "tag": "input", "type": "text", "name": "tags", - "valueHash": "ca4dbf3dc5193203", + "valueHash": "77ae5c6394cae14e", "checked": false, "disabled": false, "visible": true @@ -5088,7 +2351,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5102,10 +2365,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2695, - "url": "http://127.0.0.1:3000/#/article/rd-test-f95995-1", + "at": 2696, + "url": "http://127.0.0.1:37213/#/article/rd-test-1db90d-1", "title": "Conduit", - "domHash": "25b61309ee9b15ab", + "domHash": "f6df27fc845c10bf", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -5117,9 +2380,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "fda3dd7493ba82f2", + "textHash": "2c403465c0040d0a", "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_F95995_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_F95995_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_1DB90D_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_1DB90D_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5171,7 +2434,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5184,11 +2447,11 @@ { "adapter": "postgresql", "resource": "articles", - "schemaHash": "d718b75b5f43908b", + "schemaHash": "811ce917dc830ae0", "rows": [ { "keyHash": "186347d9ea7673a2", - "rowHash": "2303100aae39ad27", + "rowHash": "39c9ca19e186f10d", "softDeleted": false } ], @@ -5197,16 +2460,11 @@ { "adapter": "postgresql", "resource": "users", - "schemaHash": "4dc457684d4d0982", + "schemaHash": "b7a8a911cd0fd4e9", "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "b722d6313737881a", - "softDeleted": false - }, { "keyHash": "da7114755c3b82ba", - "rowHash": "8fc053865923194c", + "rowHash": "f1108a413122f589", "softDeleted": false } ], @@ -5214,29 +2472,12 @@ } ] }, - "screenshot": "screenshots/9b8462828b58-after.png", - "webSockets": [ - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 3063, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [], - "closedAt": 3967 - }, - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 4061, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [] - } - ], + "screenshot": "screenshots/b725edd599a8-after.png", "afterRefresh": { - "at": 3905, - "url": "http://127.0.0.1:3000/#/article/rd-test-f95995-1", + "at": 3890, + "url": "http://127.0.0.1:37213/#/article/rd-test-1db90d-1", "title": "Conduit", - "domHash": "25b61309ee9b15ab", + "domHash": "f6df27fc845c10bf", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -5248,9 +2489,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "fda3dd7493ba82f2", + "textHash": "2c403465c0040d0a", "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_F95995_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_F95995_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_1DB90D_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_1DB90D_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5302,7 +2543,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5312,12 +2553,12 @@ "indexedDb": [] } }, - "refreshScreenshot": "screenshots/9b8462828b58-refresh.png", + "refreshScreenshot": "screenshots/b725edd599a8-refresh.png", "afterHardRefresh": { - "at": 4932, - "url": "http://127.0.0.1:3000/#/article/rd-test-f95995-1", + "at": 4866, + "url": "http://127.0.0.1:37213/#/article/rd-test-1db90d-1", "title": "Conduit", - "domHash": "25b61309ee9b15ab", + "domHash": "f6df27fc845c10bf", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -5329,9 +2570,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "fda3dd7493ba82f2", + "textHash": "2c403465c0040d0a", "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_F95995_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_F95995_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_1DB90D_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_1DB90D_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5383,7 +2624,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5394,10 +2635,10 @@ } }, "afterNewTab": { - "at": 5967, - "url": "http://127.0.0.1:3000/#/editor", + "at": 5855, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -5409,9 +2650,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -5463,7 +2704,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5474,10 +2715,10 @@ } }, "afterNewContext": { - "at": 7327, - "url": "http://127.0.0.1:3000/#/article/rd-test-f95995-1", + "at": 7180, + "url": "http://127.0.0.1:37213/#/article/rd-test-1db90d-1", "title": "Conduit", - "domHash": "25b61309ee9b15ab", + "domHash": "f6df27fc845c10bf", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -5489,9 +2730,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "fda3dd7493ba82f2", + "textHash": "2c403465c0040d0a", "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_F95995_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_F95995_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_1DB90D_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_1DB90D_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5543,7 +2784,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5554,6 +2795,14 @@ } }, "persistenceScope": "SOURCE_OF_TRUTH_CONFIRMED", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "sourceDiffs": [ { "adapter": "postgresql", @@ -5587,8 +2836,8 @@ { "id": "RD-004", "action": { - "id": "87ec9ce9b221", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "615ef8bfaf91", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "conduit", "activation": "click", "kind": "navigation", @@ -5601,7 +2850,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -5620,7 +2869,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -5638,55 +2887,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:34:09.867Z", - "durationMs": 2532, - "canary": "RD_TEST_FC28E2", + "startedAt": "2026-07-26T10:58:58.873Z", + "durationMs": 2517, + "canary": "RD_TEST_84BB18", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1536, + "startedAt": 1555, "status": 200, "ok": true, - "finishedAt": 1550, + "finishedAt": 1561, "contentType": "application/json", "resourceTypeHint": "feed" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1537, - "status": 200, - "ok": true, - "finishedAt": 1551, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1537, - "status": 200, - "ok": true, - "finishedAt": 1554, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 1537, + "startedAt": 1556, "status": 200, "ok": true, - "finishedAt": 1551, + "finishedAt": 1560, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -5707,35 +2932,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 5 + "elapsedMs": 7 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 7 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 1 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -5743,10 +2968,10 @@ "retryCount": 0 }, "before": { - "at": 1507, - "url": "http://127.0.0.1:3000/#/editor", + "at": 1520, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -5758,9 +2983,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -5812,7 +3037,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5823,10 +3048,10 @@ } }, "beforeAction": { - "at": 1514, - "url": "http://127.0.0.1:3000/#/editor", + "at": 1529, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -5838,9 +3063,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -5892,7 +3117,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5905,10 +3130,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2529, - "url": "http://127.0.0.1:3000/#/", + "at": 2514, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -5920,9 +3145,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5953,7 +3178,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5963,6 +3188,14 @@ "indexedDb": [] } }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-004.index.json" }, "verdict": "VERIFIED", @@ -5973,8 +3206,8 @@ { "id": "RD-005", "action": { - "id": "41da37d8eedb", - "pageUrl": "http://127.0.0.1:3000/", + "id": "a0147c56db57", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -5987,7 +3220,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -6006,7 +3239,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -6024,9 +3257,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:34:12.402Z", - "durationMs": 2503, - "canary": "RD_TEST_12F106", + "startedAt": "2026-07-26T10:59:01.426Z", + "durationMs": 2519, + "canary": "RD_TEST_1B18AC", "network": [], "console": [], "pageErrors": [], @@ -6044,35 +3277,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 7 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 2 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -6080,10 +3313,10 @@ "retryCount": 0 }, "before": { - "at": 1518, - "url": "http://127.0.0.1:3000/", + "at": 1514, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6095,9 +3328,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6128,7 +3361,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6139,10 +3372,10 @@ } }, "beforeAction": { - "at": 1525, - "url": "http://127.0.0.1:3000/", + "at": 1522, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6154,9 +3387,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6187,7 +3420,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6200,10 +3433,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2500, - "url": "http://127.0.0.1:3000/#/", + "at": 2515, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6215,9 +3448,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6248,7 +3481,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6258,6 +3491,14 @@ "indexedDb": [] } }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-005.index.json" }, "verdict": "VERIFIED", @@ -6268,8 +3509,8 @@ { "id": "RD-006", "action": { - "id": "1f1deb778a19", - "pageUrl": "http://127.0.0.1:3000/", + "id": "63ad14060515", + "pageUrl": "http://127.0.0.1:37213/", "label": "Home", "activation": "click", "kind": "navigation", @@ -6282,7 +3523,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -6301,7 +3542,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -6319,9 +3560,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:34:14.908Z", - "durationMs": 2524, - "canary": "RD_TEST_20ABB1", + "startedAt": "2026-07-26T10:59:03.972Z", + "durationMs": 2496, + "canary": "RD_TEST_F68B22", "network": [], "console": [], "pageErrors": [], @@ -6339,14 +3580,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -6354,10 +3595,10 @@ "retryCount": 0 }, "before": { - "at": 1532, - "url": "http://127.0.0.1:3000/", + "at": 1489, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6369,9 +3610,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6402,7 +3643,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6413,10 +3654,10 @@ } }, "beforeAction": { - "at": 1538, - "url": "http://127.0.0.1:3000/", + "at": 1499, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6428,9 +3669,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6461,7 +3702,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6474,10 +3715,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2521, - "url": "http://127.0.0.1:3000/#/", + "at": 2492, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6489,9 +3730,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6522,7 +3763,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6532,6 +3773,14 @@ "indexedDb": [] } }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-006.index.json" }, "verdict": "VERIFIED", @@ -6542,8 +3791,8 @@ { "id": "RD-007", "action": { - "id": "23e7c4644d98", - "pageUrl": "http://127.0.0.1:3000/", + "id": "2b6be7d79a5f", + "pageUrl": "http://127.0.0.1:37213/", "label": "New Article", "activation": "click", "kind": "navigation", @@ -6556,7 +3805,7 @@ "role": "link", "accessibleName": "New Article", "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", + "href": "http://127.0.0.1:37213/#/editor", "candidates": [ { "strategy": "role", @@ -6575,7 +3824,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "value": "http://127.0.0.1:37213/#/editor" }, { "strategy": "text", @@ -6593,9 +3842,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:34:17.434Z", - "durationMs": 2517, - "canary": "RD_TEST_537EB8", + "startedAt": "2026-07-26T10:59:06.496Z", + "durationMs": 2495, + "canary": "RD_TEST_836648", "network": [], "console": [], "pageErrors": [], @@ -6613,14 +3862,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -6628,10 +3877,10 @@ "retryCount": 0 }, "before": { - "at": 1518, - "url": "http://127.0.0.1:3000/", + "at": 1492, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6643,9 +3892,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6676,7 +3925,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6687,10 +3936,10 @@ } }, "beforeAction": { - "at": 1524, - "url": "http://127.0.0.1:3000/", + "at": 1500, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6702,9 +3951,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6735,7 +3984,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6748,10 +3997,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2513, - "url": "http://127.0.0.1:3000/#/editor", + "at": 2491, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6763,9 +4012,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -6817,7 +4066,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6827,6 +4076,14 @@ "indexedDb": [] } }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-007.index.json" }, "verdict": "VERIFIED", @@ -6837,8 +4094,8 @@ { "id": "RD-008", "action": { - "id": "2d9ff0a4be0d", - "pageUrl": "http://127.0.0.1:3000/", + "id": "b6f0b8724ae3", + "pageUrl": "http://127.0.0.1:37213/", "label": "Your Feed", "activation": "click", "kind": "local", @@ -6883,19 +4140,19 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:34:19.953Z", - "durationMs": 2594, - "canary": "RD_TEST_FE52A0", + "startedAt": "2026-07-26T10:59:09.031Z", + "durationMs": 2546, + "canary": "RD_TEST_B153C4", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1582, + "startedAt": 1547, "status": 200, "ok": true, - "finishedAt": 1593, + "finishedAt": 1558, "contentType": "application/json", "resourceTypeHint": "feed" } @@ -6916,7 +4173,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -6924,10 +4181,10 @@ "retryCount": 0 }, "before": { - "at": 1551, - "url": "http://127.0.0.1:3000/", + "at": 1507, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6939,9 +4196,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6972,7 +4229,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6983,10 +4240,10 @@ } }, "beforeAction": { - "at": 1558, - "url": "http://127.0.0.1:3000/", + "at": 1516, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6998,9 +4255,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7031,7 +4288,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7044,10 +4301,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2566, - "url": "http://127.0.0.1:3000/", + "at": 2520, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7059,9 +4316,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7092,7 +4349,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7102,7 +4359,15 @@ "indexedDb": [] } }, - "screenshot": "screenshots/2d9ff0a4be0d-after.png", + "screenshot": "screenshots/b6f0b8724ae3-after.png", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-008.index.json" }, "verdict": "VERIFIED", @@ -7113,8 +4378,8 @@ { "id": "RD-009", "action": { - "id": "3e6593f2a04d", - "pageUrl": "http://127.0.0.1:3000/", + "id": "98ade3898516", + "pageUrl": "http://127.0.0.1:37213/", "label": "Global Feed", "activation": "click", "kind": "local", @@ -7159,43 +4424,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:34:22.550Z", - "durationMs": 2585, - "canary": "RD_TEST_55D27D", + "startedAt": "2026-07-26T10:59:11.614Z", + "durationMs": 2519, + "canary": "RD_TEST_A4CBAB", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1537, + "startedAt": 1480, "status": 200, "ok": true, - "finishedAt": 1547, + "finishedAt": 1491, "contentType": "application/json", "resourceTypeHint": "articles" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 1561, - "status": 200, - "ok": true, - "finishedAt": 1568, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-3", - "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", "resourceType": "font", - "startedAt": 1566, + "startedAt": 1505, "status": 200, "ok": true, - "finishedAt": 1611, + "finishedAt": 1548, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" } @@ -7216,7 +4469,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -7224,10 +4477,10 @@ "retryCount": 0 }, "before": { - "at": 1496, - "url": "http://127.0.0.1:3000/", + "at": 1444, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7239,9 +4492,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7272,7 +4525,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7283,10 +4536,10 @@ } }, "beforeAction": { - "at": 1502, - "url": "http://127.0.0.1:3000/", + "at": 1452, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7298,9 +4551,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7331,7 +4584,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7344,10 +4597,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2582, - "url": "http://127.0.0.1:3000/", + "at": 2514, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "ceb85936b41179c4", + "domHash": "1833272e3e93cd5f", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7359,9 +4612,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "8a9f519f45b7c60f", + "textHash": "2e9dec301abdcb4f", "visualHash": "805f65e8f4aada8d", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed rdq1785054823102 July 26, 2026 ( 0 ) RD_TEST_F95995_1 RD_TEST_F95995_2 Read more... RD_TEST_F95995_4 1 Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_1DB90D_1 RD_TEST_1DB90D_2 Read more... RD_TEST_1DB90D_4 1 Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7399,7 +4652,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7409,6 +4662,14 @@ "indexedDb": [] } }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-009.index.json" }, "verdict": "VERIFIED", @@ -7419,8 +4680,8 @@ { "id": "RD-010", "action": { - "id": "f485075d62a6", - "pageUrl": "http://127.0.0.1:3000/", + "id": "60e12226e19d", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -7433,7 +4694,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -7452,7 +4713,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -7470,9 +4731,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:34:25.137Z", - "durationMs": 2544, - "canary": "RD_TEST_946897", + "startedAt": "2026-07-26T10:59:14.175Z", + "durationMs": 2474, + "canary": "RD_TEST_A94CD5", "network": [], "console": [], "pageErrors": [], @@ -7490,35 +4751,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 8 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 2 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -7526,10 +4787,10 @@ "retryCount": 0 }, "before": { - "at": 1549, - "url": "http://127.0.0.1:3000/", + "at": 1494, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7541,9 +4802,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7574,7 +4835,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7585,10 +4846,10 @@ } }, "beforeAction": { - "at": 1556, - "url": "http://127.0.0.1:3000/", + "at": 1502, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7600,9 +4861,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7633,7 +4894,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7646,10 +4907,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2541, - "url": "http://127.0.0.1:3000/#/", + "at": 2470, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7661,9 +4922,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7694,7 +4955,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7704,6 +4965,14 @@ "indexedDb": [] } }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, "snapshotIndex": "snapshots/RD-010.index.json" }, "verdict": "VERIFIED", @@ -7714,8 +4983,8 @@ { "id": "RD-011", "action": { - "id": "b4f9d978244f", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "cf7f7e055d50", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Source code", "activation": "click", "kind": "navigation", @@ -7787,8 +5056,8 @@ { "id": "RD-012", "action": { - "id": "92a9b567b4fa", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "38dd0a454d48", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "New Article", "activation": "click", "kind": "navigation", @@ -7801,7 +5070,7 @@ "role": "link", "accessibleName": "New Article", "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", + "href": "http://127.0.0.1:37213/#/editor", "candidates": [ { "strategy": "role", @@ -7820,7 +5089,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "value": "http://127.0.0.1:37213/#/editor" }, { "strategy": "text", @@ -7860,8 +5129,8 @@ { "id": "RD-013", "action": { - "id": "799b5221fec8", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "955bb7c4ae7a", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -7933,8 +5202,8 @@ { "id": "RD-014", "action": { - "id": "37e9aaab233a", - "pageUrl": "http://127.0.0.1:3000/#/editor", + "id": "865611a40b7e", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Source code", "activation": "click", "kind": "navigation", @@ -8006,8 +5275,8 @@ { "id": "RD-015", "action": { - "id": "25e3419d67d3", - "pageUrl": "http://127.0.0.1:3000/", + "id": "36a91b6a1f72", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -8079,8 +5348,8 @@ { "id": "RD-016", "action": { - "id": "6959be4b6ca4", - "pageUrl": "http://127.0.0.1:3000/", + "id": "731b624cc34c", + "pageUrl": "http://127.0.0.1:37213/", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -8152,8 +5421,8 @@ { "id": "RD-017", "action": { - "id": "c9b7b6b4d242", - "pageUrl": "http://127.0.0.1:3000/", + "id": "c5063859c1ad", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -8225,17 +5494,17 @@ ], "environment": { "status": "VALID", - "checkedAt": "2026-07-26T08:33:51.954Z", - "durationMs": 2765, - "targetUrl": "http://127.0.0.1:3000/#/editor", + "checkedAt": "2026-07-26T10:58:41.208Z", + "durationMs": 2667, + "targetUrl": "http://127.0.0.1:37213/#/editor", "mainDocument": { "status": 200, "contentType": "text/html" }, "assets": { - "checked": 218, - "scripts": 218, - "stylesheets": 0, + "checked": 4, + "scripts": 2, + "stylesheets": 2, "failed": 0 }, "render": { diff --git a/release/evidence/raw/conduit-postgres-delete.scan.json b/release/evidence/raw/conduit-postgres-delete.scan.json index 7ac8ce3..7085d5c 100644 --- a/release/evidence/raw/conduit-postgres-delete.scan.json +++ b/release/evidence/raw/conduit-postgres-delete.scan.json @@ -1,21 +1,21 @@ { "schemaVersion": "1.0", - "scanId": "20260726T083609Z-d4a2", - "targetUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "startedAt": "2026-07-26T08:36:09.504Z", - "finishedAt": "2026-07-26T08:36:22.134Z", + "scanId": "20260726T110104Z-96ae", + "targetUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "startedAt": "2026-07-26T11:01:04.097Z", + "finishedAt": "2026-07-26T11:02:21.536Z", "options": { - "maxPages": 1, - "maxActions": 30, + "maxPages": 2, + "maxActions": 50, "timeoutMs": 12000, "settleMs": 800, - "maxDurationMs": 180000, + "maxDurationMs": 300000, "maxRetries": 2, "allowDestructive": true, "allowExternal": false, "mutationAllowed": true, "deep": true, - "trace": false, + "trace": true, "traceOnFailure": false, "video": false, "environmentTimeoutMs": 10000, @@ -23,30 +23,30 @@ "allowIframes": false }, "summary": { - "pagesDiscovered": 1, - "visibleActions": 16, - "actionsVerified": 2, - "actionsSkipped": 14, + "pagesDiscovered": 2, + "visibleActions": 27, + "actionsVerified": 21, + "actionsSkipped": 6, "verdicts": { - "VERIFIED": 1, + "VERIFIED": 18, "CONTRADICTORY": 0, "EPHEMERAL": 0, "BROWSER_LOCAL": 0, "BROKEN": 0, "NO_EFFECT": 0, - "UNCERTAIN": 1, - "SKIPPED": 14 + "UNCERTAIN": 3, + "SKIPPED": 6 }, "environmentStatus": "VALID" }, "pages": [ { - "url": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "title": "Conduit", "actions": [ { - "id": "b762d9d37e55", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "d4ddf83b9dbe", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "conduit", "activation": "click", "kind": "navigation", @@ -59,7 +59,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -78,7 +78,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -96,8 +96,8 @@ "fields": [] }, { - "id": "3f10c08e039a", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "51e8c444aa67", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Source code", "activation": "click", "kind": "navigation", @@ -147,8 +147,8 @@ "fields": [] }, { - "id": "9fa78fb93c48", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "980651fff005", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Home", "activation": "click", "kind": "navigation", @@ -161,7 +161,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -180,7 +180,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -198,8 +198,8 @@ "fields": [] }, { - "id": "ca1741f07442", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "c857e6fd5693", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "New Article", "activation": "click", "kind": "navigation", @@ -212,7 +212,7 @@ "role": "link", "accessibleName": "New Article", "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", + "href": "http://127.0.0.1:37213/#/editor", "candidates": [ { "strategy": "role", @@ -231,7 +231,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "value": "http://127.0.0.1:37213/#/editor" }, { "strategy": "text", @@ -249,9 +249,9 @@ "fields": [] }, { - "id": "1a74f155df00", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "id": "c782e424b251", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", "activation": "click", "kind": "navigation", "intent": "navigate", @@ -261,12 +261,12 @@ "tag": "a", "ordinal": 4, "role": "link", - "href": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "href": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", "candidates": [ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/profile/rdq1785054823102" + "value": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1" }, { "strategy": "css", @@ -278,9 +278,9 @@ "fields": [] }, { - "id": "bae90ec66252", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "rdq1785054823102", + "id": "981ae4cd0d15", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "RD_TEST_AFDF00_1", "activation": "click", "kind": "navigation", "intent": "navigate", @@ -290,33 +290,33 @@ "tag": "a", "ordinal": 5, "role": "link", - "accessibleName": "rdq1785054823102", - "text": "rdq1785054823102", - "href": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "accessibleName": "RD_TEST_AFDF00_1", + "text": "RD_TEST_AFDF00_1", + "href": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", "candidates": [ { "strategy": "role", "weight": 92, "role": "link", - "name": "rdq1785054823102", + "name": "RD_TEST_AFDF00_1", "exact": true }, { "strategy": "role", "weight": 82, "role": "link", - "name": "rdq1785054823102", + "name": "RD_TEST_AFDF00_1", "exact": false }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/profile/rdq1785054823102" + "value": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1" }, { "strategy": "text", "weight": 60, - "value": "rdq1785054823102", + "value": "RD_TEST_AFDF00_1", "exact": true }, { @@ -329,8 +329,8 @@ "fields": [] }, { - "id": "b19cc47f4064", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "49c799c46ed8", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Delete Article", "activation": "click", "kind": "mutation", @@ -375,8 +375,8 @@ "fields": [] }, { - "id": "608a379796a9", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "501c5ce7d0a7", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Edit Article", "activation": "click", "kind": "mutation", @@ -421,9 +421,9 @@ "fields": [] }, { - "id": "7c2525ea457d", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "id": "f7fa09e24ecd", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", "activation": "click", "kind": "navigation", "intent": "navigate", @@ -433,12 +433,12 @@ "tag": "a", "ordinal": 8, "role": "link", - "href": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "href": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", "candidates": [ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/profile/rdq1785054823102" + "value": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1" }, { "strategy": "css", @@ -450,9 +450,9 @@ "fields": [] }, { - "id": "5f4a1fd48ba4", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "rdq1785054823102", + "id": "dafd6c2b8d6a", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "RD_TEST_AFDF00_1", "activation": "click", "kind": "navigation", "intent": "navigate", @@ -462,33 +462,33 @@ "tag": "a", "ordinal": 9, "role": "link", - "accessibleName": "rdq1785054823102", - "text": "rdq1785054823102", - "href": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "accessibleName": "RD_TEST_AFDF00_1", + "text": "RD_TEST_AFDF00_1", + "href": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", "candidates": [ { "strategy": "role", "weight": 92, "role": "link", - "name": "rdq1785054823102", + "name": "RD_TEST_AFDF00_1", "exact": true }, { "strategy": "role", "weight": 82, "role": "link", - "name": "rdq1785054823102", + "name": "RD_TEST_AFDF00_1", "exact": false }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/profile/rdq1785054823102" + "value": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1" }, { "strategy": "text", "weight": 60, - "value": "rdq1785054823102", + "value": "RD_TEST_AFDF00_1", "exact": true }, { @@ -501,8 +501,8 @@ "fields": [] }, { - "id": "ecd3be0d2ec5", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "ed33d250c2e1", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Delete Article", "activation": "click", "kind": "mutation", @@ -547,8 +547,8 @@ "fields": [] }, { - "id": "dfdc9f148c07", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "17b6c4f59d23", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Edit Article", "activation": "click", "kind": "mutation", @@ -593,8 +593,8 @@ "fields": [] }, { - "id": "6635954920fe", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "2f8cbf31b77a", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Post Comment", "activation": "submit", "kind": "mutation", @@ -632,8 +632,8 @@ ] }, { - "id": "cfdf37caa8f3", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "dc2ff02ca3a5", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "conduit", "activation": "click", "kind": "navigation", @@ -646,7 +646,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -665,7 +665,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -683,8 +683,8 @@ "fields": [] }, { - "id": "ed2174de651c", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "ddb3e20b6534", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -734,8 +734,8 @@ "fields": [] }, { - "id": "be4fe57c7f48", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "2cb5cd0f9fea", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "label": "Source code", "activation": "click", "kind": "navigation", @@ -785,3095 +785,9522 @@ "fields": [] } ] - } - ], - "findings": [ + }, { - "id": "RD-001", - "action": { - "id": "b19cc47f4064", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "Delete Article", - "activation": "click", - "kind": "mutation", - "intent": "delete", - "risk": "destructive", - "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(1) > div > div > button:nth-of-type(1)", - "tag": "button", - "ordinal": 6, - "role": "button", - "accessibleName": "Delete Article", - "text": "Delete Article", - "type": "submit", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "button", - "name": "Delete Article", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "button", - "name": "Delete Article", - "exact": false - }, - { - "strategy": "text", - "weight": 60, - "value": "Delete Article", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(1) > div > div > button:nth-of-type(1)" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:36:12.627Z", - "durationMs": 7367, - "canary": "RD_TEST_3E4ACF", - "network": [ - { - "id": "net-1", - "method": "DELETE", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1/", - "resourceType": "xhr", - "startedAt": 1589, - "status": 200, - "ok": true, - "finishedAt": 1600, - "contentType": "application/json", - "resourceTypeHint": "rd-test-612495-1" - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1608, - "status": 200, - "ok": true, - "finishedAt": 1620, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1608, - "status": 200, - "ok": true, - "finishedAt": 1617, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1609, - "status": 200, - "ok": true, - "finishedAt": 1621, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-5", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1609, - "status": 200, - "ok": true, - "finishedAt": 1619, - "contentType": "application/json", - "resourceTypeHint": "tags" + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "actions": [ + { + "id": "a0147c56db57", + "pageUrl": "http://127.0.0.1:37213/", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > a", + "tag": "a", + "ordinal": 0, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > a" + } + ] }, - { - "id": "net-6", - "method": "GET", - "url": "http://127.0.0.1:3000/", - "resourceType": "document", - "startedAt": 2836, - "status": 200, - "ok": true, - "contentType": "text/html", - "resourceTypeHint": "resource", - "finishedAt": 2843 + "fields": [] + }, + { + "id": "36a91b6a1f72", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Source code", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a", + "tag": "a", + "ordinal": 1, + "role": "link", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Source code", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Source code", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" + }, + { + "strategy": "text", + "weight": 60, + "value": "Source code", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a" + } + ] }, - { - "id": "net-7", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 2842, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "client" + "fields": [] + }, + { + "id": "63ad14060515", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Home", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", + "tag": "a", + "ordinal": 2, + "role": "link", + "accessibleName": "Home", + "text": "Home", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Home", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Home", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Home", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" + } + ] }, - { - "id": "net-8", - "method": "GET", - "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 2842, - "status": 307, - "ok": false, - "finishedAt": 2845, - "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-9", - "method": "GET", - "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", - "resourceType": "stylesheet", - "startedAt": 2842, - "status": 200, - "ok": true, - "finishedAt": 2899, - "contentType": "text/css", - "resourceTypeHint": "css" - }, - { - "id": "net-10", - "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", - "resourceType": "script", - "startedAt": 2843, - "status": 200, - "ok": true, - "finishedAt": 2849, - "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" - }, - { - "id": "net-11", - "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 2843, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" - }, - { - "id": "net-12", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 2845, - "status": 200, - "ok": true, - "finishedAt": 3130, - "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-13", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 2850, - "status": 200, - "ok": true, - "finishedAt": 2858, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" + "fields": [] + }, + { + "id": "2b6be7d79a5f", + "pageUrl": "http://127.0.0.1:37213/", + "label": "New Article", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "tag": "a", + "ordinal": 3, + "role": "link", + "accessibleName": "New Article", + "text": "New Article", + "href": "http://127.0.0.1:37213/#/editor", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "New Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "New Article", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/editor" + }, + { + "strategy": "text", + "weight": 60, + "value": "New Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" + } + ] }, - { - "id": "net-14", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 2851, - "status": 200, - "ok": true, - "finishedAt": 2859, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" + "fields": [] + }, + { + "id": "b6f0b8724ae3", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Your Feed", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(1) > button", + "tag": "button", + "ordinal": 4, + "role": "button", + "accessibleName": "Your Feed", + "text": "Your Feed", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Your Feed", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Your Feed", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Your Feed", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(1) > button" + } + ] }, - { - "id": "net-15", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 2851, - "status": 200, - "ok": true, - "finishedAt": 2893, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" + "fields": [] + }, + { + "id": "98ade3898516", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Global Feed", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(2) > button", + "tag": "button", + "ordinal": 5, + "role": "button", + "accessibleName": "Global Feed", + "text": "Global Feed", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Global Feed", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Global Feed", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Global Feed", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(2) > button" + } + ] }, - { - "id": "net-16", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 2851, - "status": 200, - "ok": true, - "finishedAt": 2884, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" + "fields": [] + }, + { + "id": "e1289f1d4fb5", + "pageUrl": "http://127.0.0.1:37213/", + "label": "RD_TEST_1DB90D_4", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > aside > div > div > button:nth-of-type(1)", + "tag": "button", + "ordinal": 6, + "role": "button", + "accessibleName": "RD_TEST_1DB90D_4", + "text": "RD_TEST_1DB90D_4", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "RD_TEST_1DB90D_4", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "RD_TEST_1DB90D_4", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "RD_TEST_1DB90D_4", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > aside > div > div > button:nth-of-type(1)" + } + ] }, - { - "id": "net-17", - "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 2852, - "status": 200, - "ok": true, - "finishedAt": 2870, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" + "fields": [] + }, + { + "id": "ff4472b3a283", + "pageUrl": "http://127.0.0.1:37213/", + "label": "RD_TEST_DA5A96_4", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > aside > div > div > button:nth-of-type(2)", + "tag": "button", + "ordinal": 7, + "role": "button", + "accessibleName": "RD_TEST_DA5A96_4", + "text": "RD_TEST_DA5A96_4", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "RD_TEST_DA5A96_4", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "RD_TEST_DA5A96_4", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "RD_TEST_DA5A96_4", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > aside > div > div > button:nth-of-type(2)" + } + ] }, - { - "id": "net-18", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 2852, - "status": 200, - "ok": true, - "finishedAt": 2871, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" - }, - { - "id": "net-19", - "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 2853, - "status": 200, - "ok": true, - "finishedAt": 2871, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" - }, - { - "id": "net-20", - "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 2853, - "status": 200, - "ok": true, - "finishedAt": 2871, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" - }, - { - "id": "net-21", - "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 2853, - "status": 200, - "ok": true, - "finishedAt": 2872, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" + "fields": [] + }, + { + "id": "60e12226e19d", + "pageUrl": "http://127.0.0.1:37213/", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > a", + "tag": "a", + "ordinal": 8, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > a" + } + ] }, - { - "id": "net-22", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 2853, - "status": 200, - "ok": true, - "finishedAt": 2873, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" + "fields": [] + }, + { + "id": "731b624cc34c", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Thinkster", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > span > a", + "tag": "a", + "ordinal": 9, + "role": "link", + "accessibleName": "Thinkster", + "text": "Thinkster", + "href": "https://thinkster.io/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Thinkster", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Thinkster", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "https://thinkster.io/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Thinkster", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > span > a" + } + ] }, - { - "id": "net-23", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 2853, - "status": 200, - "ok": true, - "finishedAt": 2872, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" + "fields": [] + }, + { + "id": "c5063859c1ad", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Source code", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > ul > li > a", + "tag": "a", + "ordinal": 10, + "role": "link", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Source code", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Source code", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" + }, + { + "strategy": "text", + "weight": 60, + "value": "Source code", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > ul > li > a" + } + ] }, + "fields": [] + } + ] + } + ], + "findings": [ + { + "id": "RD-001", + "action": { + "id": "d4ddf83b9dbe", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > a", + "tag": "a", + "ordinal": 0, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:09.275Z", + "durationMs": 2557, + "canary": "RD_TEST_26F4D0", + "network": [ { - "id": "net-24", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 2854, + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1580, "status": 200, "ok": true, - "finishedAt": 2873, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" + "finishedAt": 1585, + "contentType": "application/json", + "resourceTypeHint": "feed" }, { - "id": "net-25", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 2855, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1580, "status": 200, "ok": true, - "finishedAt": 2874, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" - }, - { - "id": "net-26", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 2855, - "status": 200, - "ok": true, - "finishedAt": 2874, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" - }, - { - "id": "net-27", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 2856, - "status": 200, - "ok": true, - "finishedAt": 2874, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" + "finishedAt": 1584, + "contentType": "application/json", + "resourceTypeHint": "tags" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 9 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 9 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1542, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-28", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 2856, - "status": 200, - "ok": true, - "finishedAt": 2880, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-29", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 2856, - "status": 200, - "ok": true, - "finishedAt": 2880, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1553, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-30", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 2856, - "status": 200, - "ok": true, - "finishedAt": 2881, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-31", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 2856, - "status": 200, - "ok": true, - "finishedAt": 2890, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2553, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-32", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 2857, - "status": 200, - "ok": true, - "finishedAt": 2887, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" - }, - { - "id": "net-33", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 2857, - "status": 200, - "ok": true, - "finishedAt": 2891, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" - }, - { - "id": "net-34", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 2857, - "status": 200, - "ok": true, - "finishedAt": 2891, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-001.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-002", + "action": { + "id": "980651fff005", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Home", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", + "tag": "a", + "ordinal": 2, + "role": "link", + "accessibleName": "Home", + "text": "Home", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Home", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Home", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Home", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:11.910Z", + "durationMs": 2473, + "canary": "RD_TEST_DF005B", + "network": [ { - "id": "net-35", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 2858, + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1509, "status": 200, "ok": true, - "finishedAt": 2892, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" + "finishedAt": 1516, + "contentType": "application/json", + "resourceTypeHint": "feed" }, { - "id": "net-36", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 2858, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1510, "status": 200, "ok": true, - "finishedAt": 2892, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" + "finishedAt": 1515, + "contentType": "application/json", + "resourceTypeHint": "tags" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 6 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1469, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-37", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 2875, - "status": 200, - "ok": true, - "finishedAt": 2893, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-38", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 2875, - "status": 200, - "ok": true, - "finishedAt": 2900, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1478, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-39", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 2879, - "status": 200, - "ok": true, - "finishedAt": 2901, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" - }, - { - "id": "net-40", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 2884, - "status": 200, - "ok": true, - "finishedAt": 2907, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-41", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 2884, - "status": 200, - "ok": true, - "finishedAt": 2908, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-42", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 2885, - "status": 200, - "ok": true, - "finishedAt": 2908, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2469, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-43", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 2885, - "status": 200, - "ok": true, - "finishedAt": 2909, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-44", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 2885, - "status": 200, - "ok": true, - "finishedAt": 2912, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-002.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-003", + "action": { + "id": "c857e6fd5693", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "New Article", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "tag": "a", + "ordinal": 3, + "role": "link", + "accessibleName": "New Article", + "text": "New Article", + "href": "http://127.0.0.1:37213/#/editor", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "New Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "New Article", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/editor" + }, + { + "strategy": "text", + "weight": 60, + "value": "New Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:14.437Z", + "durationMs": 2468, + "canary": "RD_TEST_0B0337", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 6 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1473, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-45", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 2886, - "status": 200, - "ok": true, - "finishedAt": 2909, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-46", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 2886, - "status": 200, - "ok": true, - "finishedAt": 2911, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1483, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-47", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 2887, - "status": 200, - "ok": true, - "finishedAt": 2911, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-48", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 2887, - "status": 200, - "ok": true, - "finishedAt": 2911, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2464, + "url": "http://127.0.0.1:37213/#/editor", + "title": "Conduit", + "domHash": "25121aa0be44bdb5", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-003.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-004", + "action": { + "id": "c782e424b251", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div:nth-of-type(1) > div > div > a", + "tag": "a", + "ordinal": 4, + "role": "link", + "href": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "candidates": [ + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1" + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div:nth-of-type(1) > div > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:16.957Z", + "durationMs": 2491, + "canary": "RD_TEST_C1C942", + "network": [ { - "id": "net-49", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 2887, + "url": "http://127.0.0.1:37213/api/articles?author=RD_TEST_AFDF00_1&&limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1512, "status": 200, "ok": true, - "finishedAt": 2913, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" - }, - { - "id": "net-50", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 2888, - "status": 200, - "ok": true, - "finishedAt": 2914, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-51", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 2888, - "status": 200, - "ok": true, - "finishedAt": 2914, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" - }, - { - "id": "net-52", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 2888, - "status": 200, - "ok": true, - "finishedAt": 2915, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 1524, + "contentType": "application/json", + "resourceTypeHint": "articles" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1477, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-53", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 2889, - "status": 200, - "ok": true, - "finishedAt": 2916, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-54", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 2889, - "status": 200, - "ok": true, - "finishedAt": 2917, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1487, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-55", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 2889, - "status": 200, - "ok": true, - "finishedAt": 2917, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-56", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 2890, - "status": 200, - "ok": true, - "finishedAt": 2917, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "after": { + "at": 2487, + "url": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "title": "Conduit", + "domHash": "641996250f583471", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-57", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 2890, - "status": 200, - "ok": true, - "finishedAt": 2917, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-58", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 2891, - "status": 200, - "ok": true, - "finishedAt": 2919, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-59", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 2891, - "status": 200, - "ok": true, - "finishedAt": 2920, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-60", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 2892, - "status": 200, - "ok": true, - "finishedAt": 2920, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" - }, - { - "id": "net-61", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 2892, - "status": 200, - "ok": true, - "finishedAt": 2921, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-62", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 2893, - "status": 200, - "ok": true, - "finishedAt": 2922, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-63", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 2893, - "status": 200, - "ok": true, - "finishedAt": 2923, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" + "semanticDom": { + "textHash": "5c2d6c3ce00bb3c6", + "visualHash": "51ee9543781f73ba", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_AFDF00_1 Edit Profile Settings My Articles Favorited Articles RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_DA5A96_1 RD_TEST_DA5A96_2 Read more... RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_D97009_1 RD_TEST_D97009_2 Read more... RD_TEST_1DB90D_4 1 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-004.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-005", + "action": { + "id": "981ae4cd0d15", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "RD_TEST_AFDF00_1", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div:nth-of-type(1) > div > div > div > a", + "tag": "a", + "ordinal": 5, + "role": "link", + "accessibleName": "RD_TEST_AFDF00_1", + "text": "RD_TEST_AFDF00_1", + "href": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "RD_TEST_AFDF00_1", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "RD_TEST_AFDF00_1", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1" + }, + { + "strategy": "text", + "weight": 60, + "value": "RD_TEST_AFDF00_1", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div:nth-of-type(1) > div > div > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:19.490Z", + "durationMs": 2535, + "canary": "RD_TEST_892BE6", + "network": [ { - "id": "net-64", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 2900, + "url": "http://127.0.0.1:37213/api/articles?author=RD_TEST_AFDF00_1&&limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1562, "status": 200, "ok": true, - "finishedAt": 2923, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" + "finishedAt": 1572, + "contentType": "application/json", + "resourceTypeHint": "articles" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 4, + "visibleCount": 4, + "elapsedMs": 13 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 4, + "visibleCount": 4, + "elapsedMs": 12 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 3, + "visibleCount": 3, + "elapsedMs": 8 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1524, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-65", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 2901, - "status": 200, - "ok": true, - "finishedAt": 2926, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-66", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 2901, - "status": 200, - "ok": true, - "finishedAt": 2923, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1534, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-67", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 2912, - "status": 200, - "ok": true, - "finishedAt": 2926, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-68", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 2913, - "status": 200, - "ok": true, - "finishedAt": 2926, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2531, + "url": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "title": "Conduit", + "domHash": "641996250f583471", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "5c2d6c3ce00bb3c6", + "visualHash": "51ee9543781f73ba", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_AFDF00_1 Edit Profile Settings My Articles Favorited Articles RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_DA5A96_1 RD_TEST_DA5A96_2 Read more... RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_D97009_1 RD_TEST_D97009_2 Read more... RD_TEST_1DB90D_4 1 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-005.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-006", + "action": { + "id": "501c5ce7d0a7", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Edit Article", + "activation": "click", + "kind": "mutation", + "intent": "update", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div:nth-of-type(1) > div > div > button:nth-of-type(2)", + "tag": "button", + "ordinal": 7, + "role": "button", + "accessibleName": "Edit Article", + "text": "Edit Article", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Edit Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Edit Article", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Edit Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div:nth-of-type(1) > div > div > button:nth-of-type(2)" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:22.106Z", + "durationMs": 7226, + "canary": "RD_TEST_DE576E", + "network": [ { - "id": "net-69", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 2913, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 2818, "status": 200, "ok": true, - "finishedAt": 2926, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 2826 }, { - "id": "net-70", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 2915, - "status": 200, - "ok": true, - "finishedAt": 2926, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2824, + "status": 307, + "ok": false, + "finishedAt": 2827, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-71", + "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 2915, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 2824, "status": 200, "ok": true, - "finishedAt": 2929, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" + "finishedAt": 2865, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-72", + "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 2916, + "startedAt": 2824, "status": 200, "ok": true, - "finishedAt": 2930, + "finishedAt": 2839, "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-73", + "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 2917, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2825, "status": 200, "ok": true, - "finishedAt": 2930, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" + "finishedAt": 2831, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-74", + "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 2917, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2827, "status": 200, "ok": true, - "finishedAt": 2930, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" + "finishedAt": 3125, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-75", + "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 2918, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 3135, "status": 200, "ok": true, - "finishedAt": 2931, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" + "finishedAt": 3182, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-76", + "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 2920, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 3136, "status": 200, "ok": true, - "finishedAt": 2933, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" + "finishedAt": 3241, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-77", + "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 2920, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 3136, "status": 200, "ok": true, - "finishedAt": 2933, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" + "finishedAt": 3185, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-78", + "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 2920, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 3137, "status": 200, "ok": true, - "finishedAt": 2933, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" + "finishedAt": 3181, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-79", + "id": "net-11", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 2922, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 3138, "status": 200, "ok": true, - "finishedAt": 2935, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" + "finishedAt": 3142, + "contentType": "application/json", + "resourceTypeHint": "user" }, { - "id": "net-80", + "id": "net-12", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 2922, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3998, "status": 200, "ok": true, - "finishedAt": 2935, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 4005 }, { - "id": "net-81", + "id": "net-13", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 2922, - "status": 200, - "ok": true, - "finishedAt": 2935, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" - }, - { - "id": "net-82", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 2923, - "status": 200, - "ok": true, - "finishedAt": 2936, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" - }, - { - "id": "net-83", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 2923, - "status": 200, - "ok": true, - "finishedAt": 2936, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 4003, + "status": 307, + "ok": false, + "finishedAt": 4006, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-84", + "id": "net-14", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 2925, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 4004, "status": 200, "ok": true, - "finishedAt": 2938, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" + "finishedAt": 4043, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-85", + "id": "net-15", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 2925, + "startedAt": 4004, "status": 200, "ok": true, - "finishedAt": 2938, + "finishedAt": 4017, "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-86", + "id": "net-16", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 2925, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 4005, "status": 200, "ok": true, - "finishedAt": 2938, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css", + "finishedAt": 4009 }, { - "id": "net-87", + "id": "net-17", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 2926, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 4006, "status": 200, "ok": true, - "finishedAt": 2939, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" + "finishedAt": 4084, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-88", + "id": "net-18", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 2927, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 4093, "status": 200, "ok": true, - "finishedAt": 2939, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" + "finishedAt": 4145, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-89", + "id": "net-19", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 2927, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 4094, "status": 200, "ok": true, - "finishedAt": 2939, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 4199, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-90", + "id": "net-20", "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 2928, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 4094, "status": 200, "ok": true, - "finishedAt": 2943, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" + "finishedAt": 4141, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-91", + "id": "net-21", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 2929, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 4095, "status": 200, "ok": true, - "finishedAt": 2943, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" + "finishedAt": 4140, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-92", + "id": "net-22", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 2929, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 4096, "status": 200, "ok": true, - "finishedAt": 2943, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" + "finishedAt": 4100, + "contentType": "application/json", + "resourceTypeHint": "user" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1510, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-93", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 2929, - "status": 200, - "ok": true, - "finishedAt": 2944, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-94", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 2929, - "status": 200, - "ok": true, - "finishedAt": 2943, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-95", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 2929, - "status": 200, - "ok": true, - "finishedAt": 2944, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + }, + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] + }, + "beforeAction": { + "at": 1519, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-96", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 2930, - "status": 200, - "ok": true, - "finishedAt": 2945, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-97", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 2930, - "status": 200, - "ok": true, - "finishedAt": 2945, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-98", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 2931, - "status": 200, - "ok": true, - "finishedAt": 2947, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "targetDisabledAfter": false, + "networkSettled": true, + "after": { + "at": 2784, + "url": "http://127.0.0.1:37213/#/editor/rd-test-d97009-1", + "title": "Conduit", + "domHash": "3554f29cbab51410", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-99", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 2931, - "status": 200, - "ok": true, - "finishedAt": 2947, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-100", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 2933, - "status": 200, - "ok": true, - "finishedAt": 2947, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-101", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 2933, - "status": 200, - "ok": true, - "finishedAt": 2947, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + }, + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] + }, + "screenshot": "screenshots/501c5ce7d0a7-after.png", + "afterRefresh": { + "at": 3957, + "url": "http://127.0.0.1:37213/#/editor/rd-test-d97009-1", + "title": "Conduit", + "domHash": "3554f29cbab51410", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-102", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 2934, - "status": 200, - "ok": true, - "finishedAt": 2947, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-103", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 2936, - "status": 200, - "ok": true, - "finishedAt": 2949, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "refreshScreenshot": "screenshots/501c5ce7d0a7-refresh.png", + "afterHardRefresh": { + "at": 4924, + "url": "http://127.0.0.1:37213/#/editor/rd-test-d97009-1", + "title": "Conduit", + "domHash": "3554f29cbab51410", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-104", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 2936, - "status": 200, - "ok": true, - "finishedAt": 2949, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-105", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 2939, - "status": 200, - "ok": true, - "finishedAt": 2949, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewTab": { + "at": 5921, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-106", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 2940, - "status": 200, - "ok": true, - "finishedAt": 2950, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-107", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 2941, - "status": 200, - "ok": true, - "finishedAt": 2950, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewContext": { + "at": 7223, + "url": "http://127.0.0.1:37213/#/editor/rd-test-d97009-1", + "title": "Conduit", + "domHash": "3554f29cbab51410", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "sourceDiffs": [ { - "id": "net-108", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 2941, - "status": 200, - "ok": true, - "finishedAt": 2950, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" + "adapter": "postgresql", + "resource": "articles", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false }, { - "id": "net-109", + "adapter": "postgresql", + "resource": "users", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + } + ], + "sourceSnapshotErrors": [], + "snapshotIndex": "snapshots/RD-006.index.json" + }, + "verdict": "UNCERTAIN", + "evidenceLevel": 1, + "reason": "An effect was observed, but persistence could not be established.", + "detectorMatches": [] + }, + { + "id": "RD-007", + "action": { + "id": "f7fa09e24ecd", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > a", + "tag": "a", + "ordinal": 8, + "role": "link", + "href": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "candidates": [ + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1" + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:29.435Z", + "durationMs": 2510, + "canary": "RD_TEST_221C06", + "network": [ + { + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 2941, + "url": "http://127.0.0.1:37213/api/articles?author=RD_TEST_AFDF00_1&&limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1533, "status": 200, "ok": true, - "finishedAt": 2950, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" - }, - { - "id": "net-110", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 2942, - "status": 200, - "ok": true, - "finishedAt": 2950, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" - }, - { - "id": "net-111", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 2946, - "status": 200, - "ok": true, - "finishedAt": 2951, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" - }, - { - "id": "net-112", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 2948, - "status": 200, - "ok": true, - "finishedAt": 2954, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" + "finishedAt": 1544, + "contentType": "application/json", + "resourceTypeHint": "articles" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1495, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-113", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 2948, - "status": 200, - "ok": true, - "finishedAt": 2954, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-114", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 2949, - "status": 200, - "ok": true, - "finishedAt": 2955, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1504, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-115", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 2950, - "status": 200, - "ok": true, - "finishedAt": 2955, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-116", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 2954, - "status": 200, - "ok": true, - "finishedAt": 2958, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "after": { + "at": 2505, + "url": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "title": "Conduit", + "domHash": "641996250f583471", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-117", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 2955, - "status": 200, - "ok": true, - "finishedAt": 2958, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" - }, - { - "id": "net-118", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 2956, - "status": 200, - "ok": true, - "finishedAt": 2958, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" - }, - { - "id": "net-119", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 3143, - "status": 200, - "ok": true, - "finishedAt": 3148, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-120", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", - "resourceType": "font", - "startedAt": 3146, - "status": 200, - "ok": true, - "finishedAt": 3192, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" - }, - { - "id": "net-121", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", - "resourceType": "font", - "startedAt": 3147, - "status": 200, - "ok": true, - "finishedAt": 3253, - "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf" - }, - { - "id": "net-122", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", - "resourceType": "font", - "startedAt": 3147, - "status": 200, - "ok": true, - "finishedAt": 3192, - "contentType": "font/woff2", - "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" - }, - { - "id": "net-123", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", - "resourceType": "font", - "startedAt": 3147, - "status": 200, - "ok": true, - "finishedAt": 3193, - "contentType": "font/woff2", - "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" - }, - { - "id": "net-124", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 3151, - "status": 200, - "ok": true, - "finishedAt": 3166, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-125", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 3152, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "tags", - "finishedAt": 3161 - }, - { - "id": "net-126", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 3152, - "status": 200, - "ok": true, - "finishedAt": 3162, - "contentType": "application/json", - "resourceTypeHint": "user" + "semanticDom": { + "textHash": "5c2d6c3ce00bb3c6", + "visualHash": "51ee9543781f73ba", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_AFDF00_1 Edit Profile Settings My Articles Favorited Articles RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_DA5A96_1 RD_TEST_DA5A96_2 Read more... RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_D97009_1 RD_TEST_D97009_2 Read more... RD_TEST_1DB90D_4 1 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-007.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-008", + "action": { + "id": "dafd6c2b8d6a", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "RD_TEST_AFDF00_1", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > div > a", + "tag": "a", + "ordinal": 9, + "role": "link", + "accessibleName": "RD_TEST_AFDF00_1", + "text": "RD_TEST_AFDF00_1", + "href": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "RD_TEST_AFDF00_1", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "RD_TEST_AFDF00_1", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1" + }, + { + "strategy": "text", + "weight": 60, + "value": "RD_TEST_AFDF00_1", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:31.985Z", + "durationMs": 2491, + "canary": "RD_TEST_F591C0", + "network": [ { - "id": "net-127", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles?author=RD_TEST_AFDF00_1&&limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 3152, + "startedAt": 1550, "status": 200, "ok": true, - "finishedAt": 3166, + "finishedAt": 1560, "contentType": "application/json", - "resourceTypeHint": "feed" + "resourceTypeHint": "articles" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 4, + "visibleCount": 4, + "elapsedMs": 13 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 4, + "visibleCount": 4, + "elapsedMs": 12 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 3, + "visibleCount": 3, + "elapsedMs": 8 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1518, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-128", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 3153, - "status": 200, - "ok": true, - "finishedAt": 3165, - "contentType": "application/json", - "resourceTypeHint": "tags" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-129", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 3153, - "status": 200, - "ok": true, - "finishedAt": 3166, - "contentType": "application/json", - "resourceTypeHint": "user" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1527, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "after": { + "at": 2487, + "url": "http://127.0.0.1:37213/#/profile/RD_TEST_AFDF00_1", + "title": "Conduit", + "domHash": "641996250f583471", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "5c2d6c3ce00bb3c6", + "visualHash": "51ee9543781f73ba", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_AFDF00_1 Edit Profile Settings My Articles Favorited Articles RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_DA5A96_1 RD_TEST_DA5A96_2 Read more... RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_D97009_1 RD_TEST_D97009_2 Read more... RD_TEST_1DB90D_4 1 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-008.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-009", + "action": { + "id": "17b6c4f59d23", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Edit Article", + "activation": "click", + "kind": "mutation", + "intent": "update", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > button:nth-of-type(2)", + "tag": "button", + "ordinal": 11, + "role": "button", + "accessibleName": "Edit Article", + "text": "Edit Article", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Edit Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Edit Article", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Edit Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > button:nth-of-type(2)" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:34.560Z", + "durationMs": 7202, + "canary": "RD_TEST_B46CE8", + "network": [ { - "id": "net-130", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/", + "url": "http://127.0.0.1:37213/", "resourceType": "document", - "startedAt": 4002, + "startedAt": 2809, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "resource", - "finishedAt": 4012 - }, - { - "id": "net-131", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 4009, - "status": 200, - "ok": true, - "finishedAt": 4020, - "contentType": "text/javascript", - "resourceTypeHint": "client" + "finishedAt": 2816 }, { - "id": "net-132", + "id": "net-2", "method": "GET", "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 4011, + "startedAt": 2815, "status": 307, "ok": false, - "finishedAt": 4015, + "finishedAt": 2818, "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-133", + "id": "net-3", "method": "GET", "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", "resourceType": "stylesheet", - "startedAt": 4011, + "startedAt": 2815, "status": 200, "ok": true, - "finishedAt": 4060, + "finishedAt": 2856, "contentType": "text/css", "resourceTypeHint": "css" }, { - "id": "net-134", + "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 4011, + "startedAt": 2816, "status": 200, "ok": true, - "finishedAt": 4019, + "finishedAt": 2829, "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-135", + "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 4012, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2816, "status": 200, "ok": true, - "finishedAt": 4026, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" + "finishedAt": 2821, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-136", + "id": "net-6", "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 4015, + "startedAt": 2818, "status": 200, "ok": true, - "finishedAt": 4099, + "finishedAt": 3109, "contentType": "text/css", "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-137", + "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 4021, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 3118, "status": 200, "ok": true, - "finishedAt": 4030, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" + "finishedAt": 3169, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-138", + "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 4021, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 3118, "status": 200, "ok": true, - "finishedAt": 4030, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" + "finishedAt": 3235, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-139", + "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 4021, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 3119, "status": 200, "ok": true, - "finishedAt": 4050, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" + "finishedAt": 3165, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-140", + "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 4022, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 3120, "status": 200, "ok": true, - "finishedAt": 4054, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" + "finishedAt": 3165, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-141", + "id": "net-11", "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 4023, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 3121, "status": 200, "ok": true, - "finishedAt": 4042, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" + "finishedAt": 3125, + "contentType": "application/json", + "resourceTypeHint": "user" }, { - "id": "net-142", + "id": "net-12", "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 4023, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3981, "status": 200, "ok": true, - "finishedAt": 4043, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 3988 }, { - "id": "net-143", + "id": "net-13", "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 4023, - "status": 200, - "ok": true, - "finishedAt": 4043, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" - }, - { - "id": "net-144", - "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 4023, - "status": 200, - "ok": true, - "finishedAt": 4044, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" - }, - { - "id": "net-145", - "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 4023, - "status": 200, - "ok": true, - "finishedAt": 4045, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3987, + "status": 307, + "ok": false, + "finishedAt": 3989, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-146", + "id": "net-14", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 4024, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 3987, "status": 200, "ok": true, - "finishedAt": 4046, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" + "finishedAt": 4029, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-147", + "id": "net-15", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 4024, + "startedAt": 3988, "status": 200, "ok": true, - "finishedAt": 4046, + "finishedAt": 4000, "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-148", + "id": "net-16", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 4024, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 3988, "status": 200, "ok": true, - "finishedAt": 4047, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" + "finishedAt": 3993, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-149", + "id": "net-17", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 4024, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3989, "status": 200, "ok": true, - "finishedAt": 4049, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" + "finishedAt": 4068, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-150", + "id": "net-18", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 4024, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 4078, "status": 200, "ok": true, - "finishedAt": 4051, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" + "finishedAt": 4130, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-151", + "id": "net-19", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 4025, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 4079, "status": 200, "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" + "finishedAt": 4196, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-152", + "id": "net-20", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 4025, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 4080, "status": 200, "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" + "finishedAt": 4126, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-153", + "id": "net-21", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 4026, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 4081, "status": 200, "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" + "finishedAt": 4128, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-154", + "id": "net-22", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 4026, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 4081, "status": 200, "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" + "finishedAt": 4087, + "contentType": "application/json", + "resourceTypeHint": "user" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1516, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-155", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 4026, - "status": 200, - "ok": true, - "finishedAt": 4055, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-156", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 4027, - "status": 200, - "ok": true, - "finishedAt": 4058, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-157", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 4027, - "status": 200, - "ok": true, - "finishedAt": 4058, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + }, + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] + }, + "beforeAction": { + "at": 1525, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-158", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 4027, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-159", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 4032, - "status": 200, - "ok": true, - "finishedAt": 4060, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "targetDisabledAfter": false, + "networkSettled": true, + "after": { + "at": 2769, + "url": "http://127.0.0.1:37213/#/editor/rd-test-d97009-1", + "title": "Conduit", + "domHash": "3554f29cbab51410", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-160", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 4032, - "status": 200, - "ok": true, - "finishedAt": 4060, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-161", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "finishedAt": 4062, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-162", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "finishedAt": 4063, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + }, + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] + }, + "screenshot": "screenshots/17b6c4f59d23-after.png", + "afterRefresh": { + "at": 3935, + "url": "http://127.0.0.1:37213/#/editor/rd-test-d97009-1", + "title": "Conduit", + "domHash": "3554f29cbab51410", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-163", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 4049, - "status": 200, - "ok": true, - "finishedAt": 4063, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-164", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 4052, - "status": 200, - "ok": true, - "finishedAt": 4071, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "refreshScreenshot": "screenshots/17b6c4f59d23-refresh.png", + "afterHardRefresh": { + "at": 4894, + "url": "http://127.0.0.1:37213/#/editor/rd-test-d97009-1", + "title": "Conduit", + "domHash": "3554f29cbab51410", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-165", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 4053, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "index.js", - "finishedAt": 4070 + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewTab": { + "at": 5890, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewContext": { + "at": 7199, + "url": "http://127.0.0.1:37213/#/editor/rd-test-d97009-1", + "title": "Conduit", + "domHash": "3554f29cbab51410", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "sourceDiffs": [ + { + "adapter": "postgresql", + "resource": "articles", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false }, { - "id": "net-166", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 4053, - "status": 200, + "adapter": "postgresql", + "resource": "users", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + } + ], + "sourceSnapshotErrors": [], + "snapshotIndex": "snapshots/RD-009.index.json" + }, + "verdict": "UNCERTAIN", + "evidenceLevel": 1, + "reason": "An effect was observed, but persistence could not be established.", + "detectorMatches": [] + }, + { + "id": "RD-010", + "action": { + "id": "2f8cbf31b77a", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Post Comment", + "activation": "submit", + "kind": "mutation", + "intent": "submit", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(3) > div > form", + "tag": "form", + "ordinal": 12, + "accessibleName": "Post Comment", + "text": "Post Comment", + "candidates": [ + { + "strategy": "text", + "weight": 60, + "value": "Post Comment", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(3) > div > form" + } + ] + }, + "fields": [ + { + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(3) > div > form > div:nth-of-type(1) > textarea", + "tag": "textarea", + "type": "textarea", + "required": false, + "disabled": false, + "placeholder": "Write a comment..." + } + ] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:41.873Z", + "durationMs": 7011, + "canary": "RD_TEST_53B0B6", + "network": [ + { + "id": "net-1", + "method": "POST", + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1/comments", + "resourceType": "xhr", + "startedAt": 1565, + "status": 201, "ok": true, - "finishedAt": 4070, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 1576, + "contentType": "application/json", + "resourceTypeHint": "comments" }, { - "id": "net-167", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 4053, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1/comments", + "resourceType": "xhr", + "startedAt": 1577, "status": 200, "ok": true, - "finishedAt": 4071, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 1583, + "contentType": "application/json", + "resourceTypeHint": "comments" }, { - "id": "net-168", + "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 4053, - "status": 200, - "ok": true, - "finishedAt": 4072, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-169", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 4054, - "status": 200, - "ok": true, - "finishedAt": 4073, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" - }, - { - "id": "net-170", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 4054, - "status": 200, - "ok": true, - "finishedAt": 4073, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-171", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 4055, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 2619, "status": 200, "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 2627 }, { - "id": "net-172", + "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 4055, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2625, + "status": 307, + "ok": false, + "finishedAt": 2629, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-173", + "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 4055, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 2626, "status": 200, "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 2663, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-174", + "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 4057, + "startedAt": 2626, "status": 200, "ok": true, - "finishedAt": 4076, + "finishedAt": 2639, "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-175", + "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 4058, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2627, "status": 200, "ok": true, - "finishedAt": 4076, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" + "finishedAt": 2632, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-176", + "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 4058, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2629, "status": 200, "ok": true, - "finishedAt": 4077, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 2909, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-177", + "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 4058, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 2918, "status": 200, "ok": true, - "finishedAt": 4078, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" + "finishedAt": 2965, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-178", + "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 4059, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 2918, "status": 200, "ok": true, - "finishedAt": 4079, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 3031, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-179", + "id": "net-11", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 4059, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 2919, "status": 200, "ok": true, - "finishedAt": 4080, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 2970, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-180", + "id": "net-12", "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 4059, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 2919, "status": 200, "ok": true, - "finishedAt": 4082, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" + "finishedAt": 2968, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { - "id": "net-181", + "id": "net-13", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 4059, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 2920, "status": 200, "ok": true, - "finishedAt": 4081, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 2969, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-182", + "id": "net-14", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 4060, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1/comments", + "resourceType": "xhr", + "startedAt": 2921, "status": 200, "ok": true, - "finishedAt": 4083, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 2931, + "contentType": "application/json", + "resourceTypeHint": "comments" }, { - "id": "net-183", + "id": "net-15", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 4060, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1", + "resourceType": "xhr", + "startedAt": 2922, "status": 200, "ok": true, - "finishedAt": 4085, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 2932, + "contentType": "application/json", + "resourceTypeHint": "rd-test-d97009-1" }, { - "id": "net-184", + "id": "net-16", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 4060, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 2922, "status": 200, "ok": true, - "finishedAt": 4085, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 2928, + "contentType": "application/json", + "resourceTypeHint": "user" }, { - "id": "net-185", + "id": "net-17", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 4060, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 2944, "status": 200, "ok": true, - "finishedAt": 4085, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 2989, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" }, { - "id": "net-186", + "id": "net-18", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 4061, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3805, "status": 200, "ok": true, - "finishedAt": 4087, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 3814 }, { - "id": "net-187", + "id": "net-19", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 4062, - "status": 200, - "ok": true, - "finishedAt": 4088, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3812, + "status": 307, + "ok": false, + "finishedAt": 3816, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-188", + "id": "net-20", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 4063, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 3812, "status": 200, "ok": true, - "finishedAt": 4088, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" + "finishedAt": 3850, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-189", + "id": "net-21", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 4063, + "startedAt": 3813, "status": 200, "ok": true, - "finishedAt": 4090, + "finishedAt": 3825, "contentType": "text/javascript", - "resourceTypeHint": "axios.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-190", + "id": "net-22", "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 4063, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 3813, "status": 200, "ok": true, - "finishedAt": 4088, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css", + "finishedAt": 3818 }, { - "id": "net-191", + "id": "net-23", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 4075, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3816, "status": 200, "ok": true, - "finishedAt": 4090, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" + "finishedAt": 3889, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-192", + "id": "net-24", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 4076, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 3901, "status": 200, "ok": true, - "finishedAt": 4092, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" + "finishedAt": 3950, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-193", + "id": "net-25", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 4077, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 3902, "status": 200, "ok": true, - "finishedAt": 4092, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf", + "finishedAt": 4015 }, { - "id": "net-194", + "id": "net-26", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 4078, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 3902, "status": 200, "ok": true, - "finishedAt": 4093, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" + "finishedAt": 3954, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-195", + "id": "net-27", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 4080, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 3903, "status": 200, "ok": true, - "finishedAt": 4095, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" + "finishedAt": 3953, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { - "id": "net-196", + "id": "net-28", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 4080, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 3904, "status": 200, "ok": true, - "finishedAt": 4096, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" + "finishedAt": 3953, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-197", + "id": "net-29", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 4083, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1/comments", + "resourceType": "xhr", + "startedAt": 3905, "status": 200, "ok": true, - "finishedAt": 4098, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" + "finishedAt": 3919, + "contentType": "application/json", + "resourceTypeHint": "comments" }, { - "id": "net-198", + "id": "net-30", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 4083, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1", + "resourceType": "xhr", + "startedAt": 3906, "status": 200, "ok": true, - "finishedAt": 4098, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" + "finishedAt": 3920, + "contentType": "application/json", + "resourceTypeHint": "rd-test-d97009-1" }, { - "id": "net-199", + "id": "net-31", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 4083, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 3906, "status": 200, "ok": true, - "finishedAt": 4098, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" + "finishedAt": 3916, + "contentType": "application/json", + "resourceTypeHint": "user" }, { - "id": "net-200", + "id": "net-32", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 4086, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 3927, "status": 200, "ok": true, - "finishedAt": 4101, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" - }, + "finishedAt": 3970, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [ { - "id": "net-201", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 4086, - "status": 200, - "ok": true, - "finishedAt": 4102, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(3) > div > form > div:nth-of-type(1) > textarea", + "name": "Write a comment...", + "type": "textarea", + "value": "RD_TEST_53B0B6_1", + "redacted": false + } + ], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "text", + "weight": 60, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 + } + ], + "chosenStrategy": "text", + "chosenWeight": 60, + "retryCount": 0 + }, + "before": { + "at": 1501, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-202", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 4086, - "status": 200, - "ok": true, - "finishedAt": 4102, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" - }, - { - "id": "net-203", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 4086, - "status": 200, - "ok": true, - "finishedAt": 4103, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" - }, - { - "id": "net-204", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 4087, - "status": 200, - "ok": true, - "finishedAt": 4104, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" - }, - { - "id": "net-205", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 4087, - "status": 200, - "ok": true, - "finishedAt": 4104, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" - }, - { - "id": "net-206", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 4088, - "status": 200, - "ok": true, - "finishedAt": 4104, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" - }, - { - "id": "net-207", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 4090, - "status": 200, - "ok": true, - "finishedAt": 4106, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" - }, - { - "id": "net-208", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 4090, - "status": 200, - "ok": true, - "finishedAt": 4107, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" - }, - { - "id": "net-209", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 4090, - "status": 200, - "ok": true, - "finishedAt": 4106, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" - }, - { - "id": "net-210", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 4091, - "status": 200, - "ok": true, - "finishedAt": 4108, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-211", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 4091, - "status": 200, - "ok": true, - "finishedAt": 4107, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-212", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 4091, - "status": 200, - "ok": true, - "finishedAt": 4108, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + }, + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] + }, + "beforeAction": { + "at": 1525, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "bf3b37ad637e533d", + "canaryPresent": true, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-213", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 4092, - "status": 200, - "ok": true, - "finishedAt": 4110, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "432076bc14bf67e2", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-214", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 4092, - "status": 200, - "ok": true, - "finishedAt": 4113, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "targetDisabledAfter": false, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2551, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "31946d67021bf408", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-215", + "semanticDom": { + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + }, + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + }, + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] + }, + "screenshot": "screenshots/2f8cbf31b77a-after.png", + "afterRefresh": { + "at": 3745, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "31946d67021bf408", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "refreshScreenshot": "screenshots/2f8cbf31b77a-refresh.png", + "afterHardRefresh": { + "at": 4726, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "31946d67021bf408", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewTab": { + "at": 5717, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "31946d67021bf408", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewContext": { + "at": 7008, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "31946d67021bf408", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "persistenceScope": "BACKEND_PERSISTENT", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "sourceDiffs": [ + { + "adapter": "postgresql", + "resource": "articles", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + } + ], + "sourceSnapshotErrors": [], + "snapshotIndex": "snapshots/RD-010.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 5, + "reason": "The generated canary remained after page reload.", + "detectorMatches": [] + }, + { + "id": "RD-011", + "action": { + "id": "dc2ff02ca3a5", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > a", + "tag": "a", + "ordinal": 13, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:49.058Z", + "durationMs": 2504, + "canary": "RD_TEST_02EC2B", + "network": [ + { + "id": "net-1", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1543, + "status": 200, + "ok": true, + "finishedAt": 1549, + "contentType": "application/json", + "resourceTypeHint": "feed" + }, + { + "id": "net-2", + "method": "GET", + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1544, + "status": 200, + "ok": true, + "finishedAt": 1548, + "contentType": "application/json", + "resourceTypeHint": "tags" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 8 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1504, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "31946d67021bf408", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1513, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "31946d67021bf408", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2500, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-011.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-012", + "action": { + "id": "a0147c56db57", + "pageUrl": "http://127.0.0.1:37213/", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > a", + "tag": "a", + "ordinal": 0, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:51.602Z", + "durationMs": 2507, + "canary": "RD_TEST_0E5CB5", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1488, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1496, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2503, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-012.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-013", + "action": { + "id": "63ad14060515", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Home", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", + "tag": "a", + "ordinal": 2, + "role": "link", + "accessibleName": "Home", + "text": "Home", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Home", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Home", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Home", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:54.144Z", + "durationMs": 2489, + "canary": "RD_TEST_E25891", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1470, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1478, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2485, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-013.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-014", + "action": { + "id": "2b6be7d79a5f", + "pageUrl": "http://127.0.0.1:37213/", + "label": "New Article", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "tag": "a", + "ordinal": 3, + "role": "link", + "accessibleName": "New Article", + "text": "New Article", + "href": "http://127.0.0.1:37213/#/editor", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "New Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "New Article", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/editor" + }, + { + "strategy": "text", + "weight": 60, + "value": "New Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:56.661Z", + "durationMs": 2501, + "canary": "RD_TEST_F6B8D4", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1491, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1500, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2497, + "url": "http://127.0.0.1:37213/#/editor", + "title": "Conduit", + "domHash": "25121aa0be44bdb5", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-014.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-015", + "action": { + "id": "b6f0b8724ae3", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Your Feed", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(1) > button", + "tag": "button", + "ordinal": 4, + "role": "button", + "accessibleName": "Your Feed", + "text": "Your Feed", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Your Feed", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Your Feed", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Your Feed", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(1) > button" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:01:59.205Z", + "durationMs": 2543, + "canary": "RD_TEST_D09C47", + "network": [ + { + "id": "net-1", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1532, + "status": 200, + "ok": true, + "finishedAt": 1543, + "contentType": "application/json", + "resourceTypeHint": "feed" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "role", + "chosenWeight": 92, + "retryCount": 0 + }, + "before": { + "at": 1502, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1510, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2514, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "screenshot": "screenshots/b6f0b8724ae3-after.png", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-015.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-016", + "action": { + "id": "98ade3898516", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Global Feed", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(2) > button", + "tag": "button", + "ordinal": 5, + "role": "button", + "accessibleName": "Global Feed", + "text": "Global Feed", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Global Feed", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Global Feed", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Global Feed", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(2) > button" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:02:01.790Z", + "durationMs": 2568, + "canary": "RD_TEST_4929D7", + "network": [ + { + "id": "net-1", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1515, + "status": 200, + "ok": true, + "finishedAt": 1526, + "contentType": "application/json", + "resourceTypeHint": "articles" + }, + { + "id": "net-2", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 1541, + "status": 200, + "ok": true, + "finishedAt": 1589, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "role", + "chosenWeight": 92, + "retryCount": 0 + }, + "before": { + "at": 1480, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1489, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2565, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "61bd705b60de1013", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "3203af04a695a158", + "visualHash": "80775a8344dd3205", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_DA5A96_1 RD_TEST_DA5A96_2 Read more... RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_D97009_1 RD_TEST_D97009_2 Read more... RD_TEST_1DB90D_4 1 Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-016.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-017", + "action": { + "id": "e1289f1d4fb5", + "pageUrl": "http://127.0.0.1:37213/", + "label": "RD_TEST_1DB90D_4", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > aside > div > div > button:nth-of-type(1)", + "tag": "button", + "ordinal": 6, + "role": "button", + "accessibleName": "RD_TEST_1DB90D_4", + "text": "RD_TEST_1DB90D_4", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "RD_TEST_1DB90D_4", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "RD_TEST_1DB90D_4", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "RD_TEST_1DB90D_4", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > aside > div > div > button:nth-of-type(1)" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:02:04.402Z", + "durationMs": 2578, + "canary": "RD_TEST_13EF90", + "network": [ + { + "id": "net-1", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles?tag=RD_TEST_1DB90D_4&&limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1536, + "status": 200, + "ok": true, + "finishedAt": 1546, + "contentType": "application/json", + "resourceTypeHint": "articles" + }, + { + "id": "net-2", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 1567, + "status": 200, + "ok": true, + "finishedAt": 1612, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "role", + "chosenWeight": 92, + "retryCount": 0 + }, + "before": { + "at": 1500, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1508, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2574, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a65c9cdc5c51b465", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "b8ce064b7f27ecbc", + "visualHash": "c3eb30fd4dc354f6", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_D97009_1 RD_TEST_D97009_2 Read more... RD_TEST_1DB90D_4 1 Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-017.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-018", + "action": { + "id": "ff4472b3a283", + "pageUrl": "http://127.0.0.1:37213/", + "label": "RD_TEST_DA5A96_4", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > aside > div > div > button:nth-of-type(2)", + "tag": "button", + "ordinal": 7, + "role": "button", + "accessibleName": "RD_TEST_DA5A96_4", + "text": "RD_TEST_DA5A96_4", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "RD_TEST_DA5A96_4", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "RD_TEST_DA5A96_4", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "RD_TEST_DA5A96_4", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > aside > div > div > button:nth-of-type(2)" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:02:07.031Z", + "durationMs": 2547, + "canary": "RD_TEST_111349", + "network": [ + { + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 4093, + "url": "http://127.0.0.1:37213/api/articles?tag=RD_TEST_DA5A96_4&&limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1506, "status": 200, "ok": true, - "finishedAt": 4113, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 1516, + "contentType": "application/json", + "resourceTypeHint": "articles" + }, + { + "id": "net-2", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 1537, + "status": 200, + "ok": true, + "finishedAt": 1581, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "role", + "chosenWeight": 92, + "retryCount": 0 + }, + "before": { + "at": 1468, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1476, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2543, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "420e23502ce8bd2c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-216", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 4093, - "status": 200, - "ok": true, - "finishedAt": 4113, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "7cf570127a9c5d30", + "visualHash": "c3eb30fd4dc354f6", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_DA5A96_1 RD_TEST_DA5A96_2 Read more... RD_TEST_DA5A96_4 1 Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-217", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 4095, - "status": 200, - "ok": true, - "finishedAt": 4113, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-018.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-019", + "action": { + "id": "60e12226e19d", + "pageUrl": "http://127.0.0.1:37213/", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > a", + "tag": "a", + "ordinal": 8, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:02:09.628Z", + "durationMs": 2498, + "canary": "RD_TEST_33C2FB", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 5 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1486, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-218", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 4096, - "status": 200, - "ok": true, - "finishedAt": 4113, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1494, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-219", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 4096, - "status": 200, - "ok": true, - "finishedAt": 4115, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-220", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 4096, - "status": 200, - "ok": true, - "finishedAt": 4115, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2494, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "f16e71f9610b9322", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-221", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 4098, - "status": 200, - "ok": true, - "finishedAt": 4115, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" + "semanticDom": { + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-019.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-020", + "action": { + "id": "49c799c46ed8", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Delete Article", + "activation": "click", + "kind": "mutation", + "intent": "delete", + "risk": "destructive", + "fingerprint": { + "selector": "body > div > main > div > div:nth-of-type(1) > div > div > button:nth-of-type(1)", + "tag": "button", + "ordinal": 6, + "role": "button", + "accessibleName": "Delete Article", + "text": "Delete Article", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Delete Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Delete Article", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Delete Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div:nth-of-type(1) > div > div > button:nth-of-type(1)" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:02:12.199Z", + "durationMs": 7145, + "canary": "RD_TEST_F05D6B", + "network": [ { - "id": "net-222", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 4098, + "id": "net-1", + "method": "DELETE", + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1/", + "resourceType": "xhr", + "startedAt": 1539, "status": 200, "ok": true, - "finishedAt": 4116, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 1551, + "contentType": "application/json", + "resourceTypeHint": "rd-test-d97009-1" }, { - "id": "net-223", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 4098, + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1555, "status": 200, "ok": true, - "finishedAt": 4116, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" + "finishedAt": 1561, + "contentType": "application/json", + "resourceTypeHint": "feed" }, { - "id": "net-224", + "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 4102, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1556, "status": 200, "ok": true, - "finishedAt": 4116, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" + "finishedAt": 1561, + "contentType": "application/json", + "resourceTypeHint": "tags" }, { - "id": "net-225", + "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 4105, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 2793, "status": 200, "ok": true, - "finishedAt": 4116, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 2800 }, { - "id": "net-226", + "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 4108, - "status": 200, - "ok": true, - "finishedAt": 4117, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2798, + "status": 307, + "ok": false, + "finishedAt": 2802, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-227", + "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 4108, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 2799, "status": 200, "ok": true, - "finishedAt": 4118, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" + "finishedAt": 2837, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-228", + "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 4109, + "startedAt": 2799, "status": 200, "ok": true, - "finishedAt": 4118, + "finishedAt": 2812, "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-229", + "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 4111, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2800, "status": 200, "ok": true, - "finishedAt": 4122, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" + "finishedAt": 2804, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-230", + "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 4111, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2802, "status": 200, "ok": true, - "finishedAt": 4123, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" + "finishedAt": 3088, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-231", + "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 4112, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 3097, "status": 200, "ok": true, - "finishedAt": 4123, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" + "finishedAt": 3145, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-232", + "id": "net-11", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 4112, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 3098, "status": 200, "ok": true, - "finishedAt": 4124, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf", + "finishedAt": 3221 }, { - "id": "net-233", + "id": "net-12", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 4112, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 3098, "status": 200, "ok": true, - "finishedAt": 4125, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" + "finishedAt": 3146, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-234", + "id": "net-13", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 4113, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 3098, "status": 200, "ok": true, - "finishedAt": 4125, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" + "finishedAt": 3143, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-235", + "id": "net-14", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 4115, + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 3100, "status": 200, "ok": true, - "finishedAt": 4125, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" + "finishedAt": 3108, + "contentType": "application/json", + "resourceTypeHint": "feed" }, { - "id": "net-236", + "id": "net-15", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 4115, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 3100, "status": 200, "ok": true, - "finishedAt": 4125, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" + "finishedAt": 3106, + "contentType": "application/json", + "resourceTypeHint": "tags" }, { - "id": "net-237", + "id": "net-16", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 4116, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 3101, "status": 200, "ok": true, - "finishedAt": 4125, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" + "finishedAt": 3107, + "contentType": "application/json", + "resourceTypeHint": "user" }, { - "id": "net-238", + "id": "net-17", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 4116, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3946, "status": 200, "ok": true, - "finishedAt": 4126, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 3953 }, { - "id": "net-239", + "id": "net-18", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 4125, - "status": 200, - "ok": true, - "finishedAt": 4129, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3951, + "status": 307, + "ok": false, + "finishedAt": 3955, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-240", + "id": "net-19", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 4126, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 3952, "status": 200, "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js", - "finishedAt": 4133 + "finishedAt": 3991, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-241", + "id": "net-20", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 4126, + "startedAt": 3953, "status": 200, "ok": true, - "finishedAt": 4133, + "finishedAt": 3965, "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-242", + "id": "net-21", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 4126, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 3953, "status": 200, "ok": true, - "finishedAt": 4133, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css", + "finishedAt": 3957 }, { - "id": "net-243", + "id": "net-22", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 4143, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3955, "status": 200, "ok": true, - "finishedAt": 4150, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" + "finishedAt": 4033, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-244", + "id": "net-23", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", "resourceType": "font", - "startedAt": 4145, + "startedAt": 4041, "status": 200, "ok": true, - "finishedAt": 4191, + "finishedAt": 4088, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-245", + "id": "net-24", "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", "resourceType": "font", - "startedAt": 4145, + "startedAt": 4043, "status": 200, "ok": true, - "finishedAt": 4249, "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf" + "resourceTypeHint": "ionicons.ttf", + "finishedAt": 4165 }, { - "id": "net-246", + "id": "net-25", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", "resourceType": "font", - "startedAt": 4146, + "startedAt": 4043, "status": 200, "ok": true, - "finishedAt": 4199, + "finishedAt": 4089, "contentType": "font/woff2", "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-247", + "id": "net-26", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", "resourceType": "font", - "startedAt": 4146, + "startedAt": 4043, "status": 200, "ok": true, - "finishedAt": 4190, + "finishedAt": 4089, "contentType": "font/woff2", "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-248", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 4148, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "feed", - "finishedAt": 4159 - }, - { - "id": "net-249", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 4148, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "tags", - "finishedAt": 4158 - }, - { - "id": "net-250", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 4149, - "status": 200, - "ok": true, - "finishedAt": 4159, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-251", + "id": "net-27", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 4149, + "startedAt": 4044, "status": 200, "ok": true, - "finishedAt": 4162, + "finishedAt": 4052, "contentType": "application/json", "resourceTypeHint": "feed" }, { - "id": "net-252", + "id": "net-28", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 4150, + "startedAt": 4044, "status": 200, "ok": true, - "finishedAt": 4160, "contentType": "application/json", - "resourceTypeHint": "tags" + "resourceTypeHint": "tags", + "finishedAt": 4050 }, { - "id": "net-253", + "id": "net-29", "method": "GET", - "url": "http://127.0.0.1:3000/api/user", + "url": "http://127.0.0.1:37213/api/user", "resourceType": "xhr", - "startedAt": 4150, + "startedAt": 4045, "status": 200, "ok": true, - "finishedAt": 4159, + "finishedAt": 4051, "contentType": "application/json", "resourceTypeHint": "user" } @@ -3903,21 +10330,21 @@ "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 8 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 5 } ], "chosenStrategy": "css", @@ -3925,10 +10352,10 @@ "retryCount": 0 }, "before": { - "at": 1542, - "url": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "at": 1461, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "title": "Conduit", - "domHash": "055aada6581c1e1b", + "domHash": "31946d67021bf408", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -3940,9 +10367,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "02ca7f6b6550bdfa", - "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_612495_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_612495_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -3979,6 +10406,13 @@ "disabled": false, "visible": true }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, { "tag": "button", "type": "submit", @@ -3994,7 +10428,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -4007,11 +10441,16 @@ { "adapter": "postgresql", "resource": "articles", - "schemaHash": "d718b75b5f43908b", + "schemaHash": "811ce917dc830ae0", "rows": [ { "keyHash": "186347d9ea7673a2", - "rowHash": "dd289eee40f7c4c1", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + }, + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", "softDeleted": false } ], @@ -4020,16 +10459,11 @@ { "adapter": "postgresql", "resource": "users", - "schemaHash": "4dc457684d4d0982", + "schemaHash": "b7a8a911cd0fd4e9", "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "b722d6313737881a", - "softDeleted": false - }, { "keyHash": "da7114755c3b82ba", - "rowHash": "8fc053865923194c", + "rowHash": "f1108a413122f589", "softDeleted": false } ], @@ -4038,10 +10472,10 @@ ] }, "beforeAction": { - "at": 1554, - "url": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "at": 1475, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "title": "Conduit", - "domHash": "055aada6581c1e1b", + "domHash": "31946d67021bf408", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -4053,9 +10487,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "02ca7f6b6550bdfa", - "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_612495_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_612495_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "9575a081d32d3c17", + "visualHash": "e92a3e18c194e797", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment RD_TEST_53B0B6_1 RD_TEST_AFDF00_1July 26, 2026 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -4092,6 +10526,13 @@ "disabled": false, "visible": true }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, { "tag": "button", "type": "submit", @@ -4107,7 +10548,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -4120,10 +10561,10 @@ "targetDisabledAfter": false, "networkSettled": true, "after": { - "at": 2797, - "url": "http://127.0.0.1:3000/#/", + "at": 2765, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "f16e71f9610b9322", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -4135,9 +10576,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -4153,6 +10594,13 @@ "disabled": false, "visible": true }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, { "tag": "button", "type": "submit", @@ -4168,7 +10616,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -4181,23 +10629,24 @@ { "adapter": "postgresql", "resource": "articles", - "schemaHash": "d718b75b5f43908b", - "rows": [], + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", + "softDeleted": false + } + ], "truncated": false }, { "adapter": "postgresql", "resource": "users", - "schemaHash": "4dc457684d4d0982", + "schemaHash": "b7a8a911cd0fd4e9", "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "b722d6313737881a", - "softDeleted": false - }, { "keyHash": "da7114755c3b82ba", - "rowHash": "8fc053865923194c", + "rowHash": "f1108a413122f589", "softDeleted": false } ], @@ -4205,29 +10654,12 @@ } ] }, - "screenshot": "screenshots/b19cc47f4064-after.png", - "webSockets": [ - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 3137, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [], - "closedAt": 4007 - }, - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 4100, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [] - } - ], + "screenshot": "screenshots/49c799c46ed8-after.png", "afterRefresh": { - "at": 3972, - "url": "http://127.0.0.1:3000/#/", + "at": 3914, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "f16e71f9610b9322", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -4239,9 +10671,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -4257,6 +10689,13 @@ "disabled": false, "visible": true }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, { "tag": "button", "type": "submit", @@ -4272,7 +10711,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -4282,12 +10721,12 @@ "indexedDb": [] } }, - "refreshScreenshot": "screenshots/b19cc47f4064-refresh.png", + "refreshScreenshot": "screenshots/49c799c46ed8-refresh.png", "afterHardRefresh": { - "at": 4961, - "url": "http://127.0.0.1:3000/#/", + "at": 4862, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "f16e71f9610b9322", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -4299,9 +10738,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -4317,6 +10756,13 @@ "disabled": false, "visible": true }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, { "tag": "button", "type": "submit", @@ -4332,7 +10778,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -4343,8 +10789,8 @@ } }, "afterNewTab": { - "at": 6007, - "url": "http://127.0.0.1:3000/#/not-found", + "at": 5852, + "url": "http://127.0.0.1:37213/#/not-found", "title": "Conduit", "domHash": "cbdcb0acc42ff88a", "canaryPresent": false, @@ -4369,7 +10815,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -4380,10 +10826,10 @@ } }, "afterNewContext": { - "at": 7364, - "url": "http://127.0.0.1:3000/#/", + "at": 7142, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "f16e71f9610b9322", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -4395,9 +10841,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -4417,218 +10863,50 @@ "tag": "button", "type": "submit", "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "sourceDiffs": [ - { - "adapter": "postgresql", - "resource": "articles", - "added": [], - "removed": [ - "186347d9ea7673a2" - ], - "changed": [], - "softDeleted": [], - "truncated": false - }, - { - "adapter": "postgresql", - "resource": "users", - "added": [], - "removed": [], - "changed": [], - "softDeleted": [], - "truncated": false - } - ], - "sourceSnapshotErrors": [], - "persistenceScope": "SOURCE_OF_TRUTH_CONFIRMED", - "snapshotIndex": "snapshots/RD-001.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 6, - "reason": "The configured source of truth independently confirmed a persisted change during the action.", - "detectorMatches": [] - }, - { - "id": "RD-002", - "action": { - "id": "ecd3be0d2ec5", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "Delete Article", - "activation": "click", - "kind": "mutation", - "intent": "delete", - "risk": "destructive", - "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > button:nth-of-type(1)", - "tag": "button", - "ordinal": 10, - "role": "button", - "accessibleName": "Delete Article", - "text": "Delete Article", - "type": "submit", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "button", - "name": "Delete Article", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "button", - "name": "Delete Article", - "exact": false - }, - { - "strategy": "text", - "weight": 60, - "value": "Delete Article", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > button:nth-of-type(1)" - } - ] + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:36:20.048Z", - "durationMs": 2047, - "canary": "RD_TEST_2B6A15", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "targetNotFound": true, - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "text", - "weight": 60, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "css", - "weight": 35, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "role", - "weight": 92, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "text", - "weight": 60, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 0 - }, - { - "strategy": "css", - "weight": 35, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "role", - "weight": 92, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 2 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 0 - }, - { - "strategy": "text", - "weight": 60, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "css", - "weight": 35, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - } - ], - "retryCount": 2 + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] }, - "executionError": "No visible element matched the semantic fingerprint. The action was not executed.", - "screenshot": "screenshots/ecd3be0d2ec5-error.png", "sourceDiffs": [ { "adapter": "postgresql", "resource": "articles", "added": [], - "removed": [], + "removed": [ + "186347d9ea7673a2" + ], "changed": [], "softDeleted": [], "truncated": false @@ -4644,221 +10922,66 @@ } ], "sourceSnapshotErrors": [], - "snapshotIndex": "snapshots/RD-002.index.json" - }, - "verdict": "UNCERTAIN", - "evidenceLevel": 0, - "reason": "The discovered semantic target was not present in a fresh execution context, so no substitute element was executed.", - "detectorMatches": [] - }, - { - "id": "RD-003", - "action": { - "id": "b762d9d37e55", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "conduit", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > a", - "tag": "a", - "ordinal": 0, - "role": "link", - "accessibleName": "conduit", - "text": "conduit", - "href": "http://127.0.0.1:3000/#/", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "conduit", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "conduit", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/" - }, - { - "strategy": "text", - "weight": 60, - "value": "conduit", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > header > nav > div > a" - } - ] - }, - "fields": [] - }, - "verdict": "SKIPPED", - "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", - "detectorMatches": [], - "evidence": { - "startedAt": "", - "durationMs": 0, - "canary": "", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "popupUrls": [], - "snapshotIndex": "snapshots/RD-003.index.json" - } - }, - { - "id": "RD-004", - "action": { - "id": "3f10c08e039a", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "Source code", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a", - "tag": "a", - "ordinal": 1, - "role": "link", - "accessibleName": "Source code", - "text": "Source code", - "href": "https://github.com/TonyMckes/conduit-realworld-example-app", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "Source code", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "Source code", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "https://github.com/TonyMckes/conduit-realworld-example-app" - }, - { - "strategy": "text", - "weight": 60, - "value": "Source code", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a" - } - ] - }, - "fields": [] + "persistenceScope": "SOURCE_OF_TRUTH_CONFIRMED", + "snapshotIndex": "snapshots/RD-020.index.json" }, - "verdict": "SKIPPED", - "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", - "detectorMatches": [], - "evidence": { - "startedAt": "", - "durationMs": 0, - "canary": "", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "popupUrls": [], - "snapshotIndex": "snapshots/RD-004.index.json" - } + "verdict": "VERIFIED", + "evidenceLevel": 6, + "reason": "The configured source of truth independently confirmed a persisted change during the action.", + "detectorMatches": [] }, { - "id": "RD-005", + "id": "RD-021", "action": { - "id": "9fa78fb93c48", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "Home", + "id": "ed33d250c2e1", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Delete Article", "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", + "kind": "mutation", + "intent": "delete", + "risk": "destructive", "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", - "tag": "a", - "ordinal": 2, - "role": "link", - "accessibleName": "Home", - "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > button:nth-of-type(1)", + "tag": "button", + "ordinal": 10, + "role": "button", + "accessibleName": "Delete Article", + "text": "Delete Article", + "type": "submit", "candidates": [ { "strategy": "role", "weight": 92, - "role": "link", - "name": "Home", + "role": "button", + "name": "Delete Article", "exact": true }, { "strategy": "role", "weight": 82, - "role": "link", - "name": "Home", + "role": "button", + "name": "Delete Article", "exact": false }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/" - }, { "strategy": "text", "weight": 60, - "value": "Home", + "value": "Delete Article", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" + "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > button:nth-of-type(1)" } ] }, "fields": [] }, - "verdict": "SKIPPED", - "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", - "detectorMatches": [], "evidence": { - "startedAt": "", - "durationMs": 0, - "canary": "", + "startedAt": "2026-07-26T11:02:19.483Z", + "durationMs": 1986, + "canary": "RD_TEST_E5464A", "network": [], "console": [], "pageErrors": [], @@ -4866,301 +10989,185 @@ "filledFields": [], "dialogs": [], "downloads": [], + "downloadEvidence": [], + "uploads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-005.index.json" - } - }, - { - "id": "RD-006", - "action": { - "id": "ca1741f07442", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "New Article", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", - "tag": "a", - "ordinal": 3, - "role": "link", - "accessibleName": "New Article", - "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", - "candidates": [ + "targetNotFound": true, + "locatorResolution": { + "attempts": [ { "strategy": "role", "weight": 92, - "role": "link", - "name": "New Article", - "exact": true + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 }, { "strategy": "role", "weight": 82, - "role": "link", - "name": "New Article", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, - "value": "New Article", - "exact": true + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 }, { "strategy": "css", "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" - } - ] - }, - "fields": [] - }, - "verdict": "SKIPPED", - "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", - "detectorMatches": [], - "evidence": { - "startedAt": "", - "durationMs": 0, - "canary": "", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "popupUrls": [], - "snapshotIndex": "snapshots/RD-006.index.json" - } - }, - { - "id": "RD-007", - "action": { - "id": "1a74f155df00", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "http://127.0.0.1:3000/#/profile/rdq1785054823102", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(1) > div > div > a", - "tag": "a", - "ordinal": 4, - "role": "link", - "href": "http://127.0.0.1:3000/#/profile/rdq1785054823102", - "candidates": [ - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/profile/rdq1785054823102" + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 1 }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(1) > div > div > a" - } - ] - }, - "fields": [] - }, - "verdict": "SKIPPED", - "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", - "detectorMatches": [], - "evidence": { - "startedAt": "", - "durationMs": 0, - "canary": "", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "popupUrls": [], - "snapshotIndex": "snapshots/RD-007.index.json" - } - }, - { - "id": "RD-008", - "action": { - "id": "bae90ec66252", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "rdq1785054823102", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(1) > div > div > div > a", - "tag": "a", - "ordinal": 5, - "role": "link", - "accessibleName": "rdq1785054823102", - "text": "rdq1785054823102", - "href": "http://127.0.0.1:3000/#/profile/rdq1785054823102", - "candidates": [ { "strategy": "role", "weight": 92, - "role": "link", - "name": "rdq1785054823102", - "exact": true + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, - "role": "link", - "name": "rdq1785054823102", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/profile/rdq1785054823102" - }, - { - "strategy": "text", - "weight": 60, - "value": "rdq1785054823102", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(1) > div > div > div > a" - } - ] - }, - "fields": [] - }, - "verdict": "SKIPPED", - "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", - "detectorMatches": [], - "evidence": { - "startedAt": "", - "durationMs": 0, - "canary": "", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "popupUrls": [], - "snapshotIndex": "snapshots/RD-008.index.json" - } - }, - { - "id": "RD-009", - "action": { - "id": "608a379796a9", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "Edit Article", - "activation": "click", - "kind": "mutation", - "intent": "update", - "risk": "safe", - "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(1) > div > div > button:nth-of-type(2)", - "tag": "button", - "ordinal": 7, - "role": "button", - "accessibleName": "Edit Article", - "text": "Edit Article", - "type": "submit", - "candidates": [ + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 1 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, { "strategy": "role", "weight": 92, - "role": "button", - "name": "Edit Article", - "exact": true + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 }, { "strategy": "role", "weight": 82, - "role": "button", - "name": "Edit Article", - "exact": false + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 1 }, { "strategy": "text", "weight": 60, - "value": "Edit Article", - "exact": true + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 }, { "strategy": "css", "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(1) > div > div > button:nth-of-type(2)" + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 } + ], + "retryCount": 2 + }, + "executionError": "No visible element matched the semantic fingerprint. The action was not executed.", + "screenshot": "screenshots/ed33d250c2e1-error.png", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" ] }, - "fields": [] + "sourceDiffs": [ + { + "adapter": "postgresql", + "resource": "articles", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + } + ], + "sourceSnapshotErrors": [], + "snapshotIndex": "snapshots/RD-021.index.json" }, - "verdict": "SKIPPED", + "verdict": "UNCERTAIN", "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", - "detectorMatches": [], - "evidence": { - "startedAt": "", - "durationMs": 0, - "canary": "", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "popupUrls": [], - "snapshotIndex": "snapshots/RD-009.index.json" - } + "reason": "The discovered semantic target was not present in a fresh execution context, so no substitute element was executed.", + "detectorMatches": [] }, { - "id": "RD-010", + "id": "RD-022", "action": { - "id": "7c2525ea457d", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "id": "51e8c444aa67", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Source code", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > a", + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a", "tag": "a", - "ordinal": 8, + "ordinal": 1, "role": "link", - "href": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Source code", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Source code", + "exact": false + }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/profile/rdq1785054823102" + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" + }, + { + "strategy": "text", + "weight": 60, + "value": "Source code", + "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > a" + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a" } ] }, @@ -5168,8 +11175,8 @@ }, "verdict": "SKIPPED", "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", "detectorMatches": [], "evidence": { "startedAt": "", @@ -5183,57 +11190,57 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-010.index.json" + "snapshotIndex": "snapshots/RD-022.index.json" } }, { - "id": "RD-011", + "id": "RD-023", "action": { - "id": "5f4a1fd48ba4", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "rdq1785054823102", + "id": "ddb3e20b6534", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Thinkster", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > div > a", + "selector": "body > div > footer > div > span > a", "tag": "a", - "ordinal": 9, + "ordinal": 14, "role": "link", - "accessibleName": "rdq1785054823102", - "text": "rdq1785054823102", - "href": "http://127.0.0.1:3000/#/profile/rdq1785054823102", + "accessibleName": "Thinkster", + "text": "Thinkster", + "href": "https://thinkster.io/", "candidates": [ { "strategy": "role", "weight": 92, "role": "link", - "name": "rdq1785054823102", + "name": "Thinkster", "exact": true }, { "strategy": "role", "weight": 82, "role": "link", - "name": "rdq1785054823102", + "name": "Thinkster", "exact": false }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/profile/rdq1785054823102" + "value": "https://thinkster.io/" }, { "strategy": "text", "weight": 60, - "value": "rdq1785054823102", + "value": "Thinkster", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > div > a" + "selector": "body > div > footer > div > span > a" } ] }, @@ -5241,8 +11248,8 @@ }, "verdict": "SKIPPED", "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", "detectorMatches": [], "evidence": { "startedAt": "", @@ -5256,122 +11263,66 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-011.index.json" + "snapshotIndex": "snapshots/RD-023.index.json" } }, { - "id": "RD-012", + "id": "RD-024", "action": { - "id": "dfdc9f148c07", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "Edit Article", + "id": "2cb5cd0f9fea", + "pageUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "label": "Source code", "activation": "click", - "kind": "mutation", - "intent": "update", + "kind": "navigation", + "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > button:nth-of-type(2)", - "tag": "button", - "ordinal": 11, - "role": "button", - "accessibleName": "Edit Article", - "text": "Edit Article", - "type": "submit", + "selector": "body > div > footer > div > ul > li > a", + "tag": "a", + "ordinal": 15, + "role": "link", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", "candidates": [ { "strategy": "role", "weight": 92, - "role": "button", - "name": "Edit Article", + "role": "link", + "name": "Source code", "exact": true }, { "strategy": "role", "weight": 82, - "role": "button", - "name": "Edit Article", + "role": "link", + "name": "Source code", "exact": false }, { - "strategy": "text", - "weight": 60, - "value": "Edit Article", - "exact": true + "strategy": "href", + "weight": 72, + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(2) > div > button:nth-of-type(2)" - } - ] - }, - "fields": [] - }, - "verdict": "SKIPPED", - "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", - "detectorMatches": [], - "evidence": { - "startedAt": "", - "durationMs": 0, - "canary": "", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "popupUrls": [], - "snapshotIndex": "snapshots/RD-012.index.json" - } - }, - { - "id": "RD-013", - "action": { - "id": "6635954920fe", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "Post Comment", - "activation": "submit", - "kind": "mutation", - "intent": "submit", - "risk": "safe", - "fingerprint": { - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(3) > div > form", - "tag": "form", - "ordinal": 12, - "accessibleName": "Post Comment", - "text": "Post Comment", - "candidates": [ { "strategy": "text", "weight": 60, - "value": "Post Comment", + "value": "Source code", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(3) > div > form" + "selector": "body > div > footer > div > ul > li > a" } ] }, - "fields": [ - { - "selector": "body > div > main > div > div:nth-of-type(2) > div:nth-of-type(3) > div > form > div:nth-of-type(1) > textarea", - "tag": "textarea", - "type": "textarea", - "required": false, - "disabled": false, - "placeholder": "Write a comment..." - } - ] + "fields": [] }, "verdict": "SKIPPED", "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", "detectorMatches": [], "evidence": { "startedAt": "", @@ -5385,57 +11336,57 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-013.index.json" + "snapshotIndex": "snapshots/RD-024.index.json" } }, { - "id": "RD-014", + "id": "RD-025", "action": { - "id": "cfdf37caa8f3", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", - "label": "conduit", + "id": "36a91b6a1f72", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Source code", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > footer > div > a", + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a", "tag": "a", - "ordinal": 13, + "ordinal": 1, "role": "link", - "accessibleName": "conduit", - "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", "candidates": [ { "strategy": "role", "weight": 92, "role": "link", - "name": "conduit", + "name": "Source code", "exact": true }, { "strategy": "role", "weight": 82, "role": "link", - "name": "conduit", + "name": "Source code", "exact": false }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" }, { "strategy": "text", "weight": 60, - "value": "conduit", + "value": "Source code", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > footer > div > a" + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a" } ] }, @@ -5443,8 +11394,8 @@ }, "verdict": "SKIPPED", "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", "detectorMatches": [], "evidence": { "startedAt": "", @@ -5458,14 +11409,14 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-014.index.json" + "snapshotIndex": "snapshots/RD-025.index.json" } }, { - "id": "RD-015", + "id": "RD-026", "action": { - "id": "ed2174de651c", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "731b624cc34c", + "pageUrl": "http://127.0.0.1:37213/", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -5474,7 +11425,7 @@ "fingerprint": { "selector": "body > div > footer > div > span > a", "tag": "a", - "ordinal": 14, + "ordinal": 9, "role": "link", "accessibleName": "Thinkster", "text": "Thinkster", @@ -5516,8 +11467,8 @@ }, "verdict": "SKIPPED", "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", "detectorMatches": [], "evidence": { "startedAt": "", @@ -5531,14 +11482,14 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-015.index.json" + "snapshotIndex": "snapshots/RD-026.index.json" } }, { - "id": "RD-016", + "id": "RD-027", "action": { - "id": "be4fe57c7f48", - "pageUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "id": "c5063859c1ad", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -5547,7 +11498,7 @@ "fingerprint": { "selector": "body > div > footer > div > ul > li > a", "tag": "a", - "ordinal": 15, + "ordinal": 10, "role": "link", "accessibleName": "Source code", "text": "Source code", @@ -5589,8 +11540,8 @@ }, "verdict": "SKIPPED", "evidenceLevel": 0, - "reason": "Disposable CRUD qualification executes only the target delete action.", - "skippedReason": "Disposable CRUD qualification executes only the target delete action.", + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", "detectorMatches": [], "evidence": { "startedAt": "", @@ -5604,23 +11555,23 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-016.index.json" + "snapshotIndex": "snapshots/RD-027.index.json" } } ], "environment": { "status": "VALID", - "checkedAt": "2026-07-26T08:36:09.568Z", - "durationMs": 1402, - "targetUrl": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "checkedAt": "2026-07-26T11:01:04.154Z", + "durationMs": 2641, + "targetUrl": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", "mainDocument": { "status": 200, "contentType": "text/html" }, "assets": { - "checked": 109, - "scripts": 109, - "stylesheets": 0, + "checked": 4, + "scripts": 2, + "stylesheets": 2, "failed": 0 }, "render": { @@ -5631,7 +11582,7 @@ }, "findings": [], "acceptedRisk": false, - "routesChecked": 1, + "routesChecked": 2, "invalidRoutes": 0 }, "completeness": { @@ -5641,33 +11592,37 @@ ], "selection": { "strategy": "coverage-balanced-v1", - "eligibleActions": 16, - "selectedActions": 16, + "eligibleActions": 27, + "selectedActions": 27, "omittedActions": 0, - "eligiblePages": 1, - "selectedPages": 1, + "eligiblePages": 2, + "selectedPages": 2, "eligibleKinds": [ "mutation", + "local", "navigation" ], "selectedKinds": [ "mutation", + "local", "navigation" ], "eligibleIntents": [ "update", "submit", + "interact", "navigate", "delete" ], "selectedIntents": [ "update", "submit", + "interact", "navigate", "delete" ], - "deniedEligibleActions": 14, - "deniedSelectedActions": 14 + "deniedEligibleActions": 6, + "deniedSelectedActions": 6 } } } diff --git a/release/evidence/raw/conduit-postgres-update.scan.json b/release/evidence/raw/conduit-postgres-update.scan.json index 9df069e..1190ae6 100644 --- a/release/evidence/raw/conduit-postgres-update.scan.json +++ b/release/evidence/raw/conduit-postgres-update.scan.json @@ -1,21 +1,21 @@ { "schemaVersion": "1.0", - "scanId": "20260726T083508Z-ef21", - "targetUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", - "startedAt": "2026-07-26T08:35:08.087Z", - "finishedAt": "2026-07-26T08:35:48.932Z", + "scanId": "20260726T105940Z-509e", + "targetUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "startedAt": "2026-07-26T10:59:40.202Z", + "finishedAt": "2026-07-26T11:00:38.198Z", "options": { - "maxPages": 2, - "maxActions": 20, + "maxPages": 3, + "maxActions": 50, "timeoutMs": 12000, "settleMs": 800, - "maxDurationMs": 180000, + "maxDurationMs": 300000, "maxRetries": 2, - "allowDestructive": false, + "allowDestructive": true, "allowExternal": false, "mutationAllowed": true, "deep": true, - "trace": false, + "trace": true, "traceOnFailure": false, "video": false, "environmentTimeoutMs": 10000, @@ -23,30 +23,30 @@ "allowIframes": false }, "summary": { - "pagesDiscovered": 2, - "visibleActions": 18, - "actionsVerified": 12, - "actionsSkipped": 6, + "pagesDiscovered": 3, + "visibleActions": 26, + "actionsVerified": 16, + "actionsSkipped": 10, "verdicts": { - "VERIFIED": 12, + "VERIFIED": 16, "CONTRADICTORY": 0, "EPHEMERAL": 0, "BROWSER_LOCAL": 0, "BROKEN": 0, "NO_EFFECT": 0, "UNCERTAIN": 0, - "SKIPPED": 6 + "SKIPPED": 10 }, "environmentStatus": "VALID" }, "pages": [ { - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "title": "Conduit", "actions": [ { - "id": "4db22f7cf4f1", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "f55e6fed4b37", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "label": "conduit", "activation": "click", "kind": "navigation", @@ -59,7 +59,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -78,7 +78,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -96,8 +96,8 @@ "fields": [] }, { - "id": "7244750fb0e2", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "992665d7b765", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "label": "Source code", "activation": "click", "kind": "navigation", @@ -147,8 +147,8 @@ "fields": [] }, { - "id": "77039a373aea", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "c4d0c627d270", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "label": "Home", "activation": "click", "kind": "navigation", @@ -161,7 +161,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -180,7 +180,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -198,8 +198,8 @@ "fields": [] }, { - "id": "4634557aadaa", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "ba3091508c94", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "label": "New Article", "activation": "click", "kind": "navigation", @@ -212,7 +212,7 @@ "role": "link", "accessibleName": "New Article", "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", + "href": "http://127.0.0.1:37213/#/editor", "candidates": [ { "strategy": "role", @@ -231,7 +231,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "value": "http://127.0.0.1:37213/#/editor" }, { "strategy": "text", @@ -249,8 +249,8 @@ "fields": [] }, { - "id": "4da0f6d01b9f", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "a33068fbaae8", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "label": "Update Article", "activation": "submit", "kind": "mutation", @@ -284,7 +284,7 @@ "required": true, "disabled": false, "name": "title", - "label": "RD_TEST_F95995_1", + "label": "RD_TEST_1DB90D_1", "placeholder": "Article Title" }, { @@ -294,7 +294,7 @@ "required": true, "disabled": false, "name": "description", - "label": "RD_TEST_F95995_2", + "label": "RD_TEST_1DB90D_2", "placeholder": "What's this article about?" }, { @@ -313,14 +313,14 @@ "required": false, "disabled": false, "name": "tags", - "label": "RD_TEST_F95995_4", + "label": "RD_TEST_1DB90D_4", "placeholder": "Enter tags" } ] }, { - "id": "8e91a4b368af", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "491cb9cc2566", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "label": "conduit", "activation": "click", "kind": "navigation", @@ -333,7 +333,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -352,7 +352,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -370,8 +370,8 @@ "fields": [] }, { - "id": "c4e7eb1ccc17", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "bba422159b08", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -421,8 +421,8 @@ "fields": [] }, { - "id": "e1aaac6ec218", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "c146986c5ac9", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "label": "Source code", "activation": "click", "kind": "navigation", @@ -474,12 +474,12 @@ ] }, { - "url": "http://127.0.0.1:3000/", + "url": "http://127.0.0.1:37213/", "title": "Conduit", "actions": [ { - "id": "41da37d8eedb", - "pageUrl": "http://127.0.0.1:3000/", + "id": "a0147c56db57", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -492,7 +492,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -511,7 +511,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -529,8 +529,8 @@ "fields": [] }, { - "id": "25e3419d67d3", - "pageUrl": "http://127.0.0.1:3000/", + "id": "36a91b6a1f72", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -580,8 +580,8 @@ "fields": [] }, { - "id": "1f1deb778a19", - "pageUrl": "http://127.0.0.1:3000/", + "id": "63ad14060515", + "pageUrl": "http://127.0.0.1:37213/", "label": "Home", "activation": "click", "kind": "navigation", @@ -594,7 +594,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -613,7 +613,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -631,8 +631,8 @@ "fields": [] }, { - "id": "23e7c4644d98", - "pageUrl": "http://127.0.0.1:3000/", + "id": "2b6be7d79a5f", + "pageUrl": "http://127.0.0.1:37213/", "label": "New Article", "activation": "click", "kind": "navigation", @@ -645,7 +645,7 @@ "role": "link", "accessibleName": "New Article", "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", + "href": "http://127.0.0.1:37213/#/editor", "candidates": [ { "strategy": "role", @@ -664,7 +664,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "value": "http://127.0.0.1:37213/#/editor" }, { "strategy": "text", @@ -682,8 +682,8 @@ "fields": [] }, { - "id": "2d9ff0a4be0d", - "pageUrl": "http://127.0.0.1:3000/", + "id": "b6f0b8724ae3", + "pageUrl": "http://127.0.0.1:37213/", "label": "Your Feed", "activation": "click", "kind": "local", @@ -728,8 +728,8 @@ "fields": [] }, { - "id": "3e6593f2a04d", - "pageUrl": "http://127.0.0.1:3000/", + "id": "98ade3898516", + "pageUrl": "http://127.0.0.1:37213/", "label": "Global Feed", "activation": "click", "kind": "local", @@ -774,9 +774,9 @@ "fields": [] }, { - "id": "728383b5947d", - "pageUrl": "http://127.0.0.1:3000/", - "label": "RD_TEST_F95995_4", + "id": "a2758003a662", + "pageUrl": "http://127.0.0.1:37213/", + "label": "RD_TEST_1DB90D_4", "activation": "click", "kind": "local", "intent": "interact", @@ -786,28 +786,28 @@ "tag": "button", "ordinal": 6, "role": "button", - "accessibleName": "RD_TEST_F95995_4", - "text": "RD_TEST_F95995_4", + "accessibleName": "RD_TEST_1DB90D_4", + "text": "RD_TEST_1DB90D_4", "type": "submit", "candidates": [ { "strategy": "role", "weight": 92, "role": "button", - "name": "RD_TEST_F95995_4", + "name": "RD_TEST_1DB90D_4", "exact": true }, { "strategy": "role", "weight": 82, "role": "button", - "name": "RD_TEST_F95995_4", + "name": "RD_TEST_1DB90D_4", "exact": false }, { "strategy": "text", "weight": 60, - "value": "RD_TEST_F95995_4", + "value": "RD_TEST_1DB90D_4", "exact": true }, { @@ -820,8 +820,8 @@ "fields": [] }, { - "id": "f485075d62a6", - "pageUrl": "http://127.0.0.1:3000/", + "id": "60e12226e19d", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -834,7 +834,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -853,7 +853,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -871,8 +871,8 @@ "fields": [] }, { - "id": "6959be4b6ca4", - "pageUrl": "http://127.0.0.1:3000/", + "id": "731b624cc34c", + "pageUrl": "http://127.0.0.1:37213/", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -922,8 +922,8 @@ "fields": [] }, { - "id": "c9b7b6b4d242", - "pageUrl": "http://127.0.0.1:3000/", + "id": "c5063859c1ad", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -973,498 +973,518 @@ "fields": [] } ] - } - ], - "findings": [ + }, { - "id": "RD-001", - "action": { - "id": "4db22f7cf4f1", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", - "label": "conduit", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > a", - "tag": "a", - "ordinal": 0, - "role": "link", - "accessibleName": "conduit", - "text": "conduit", - "href": "http://127.0.0.1:3000/#/", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "conduit", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "conduit", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/" - }, - { - "strategy": "text", - "weight": 60, - "value": "conduit", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > header > nav > div > a" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:35:13.579Z", - "durationMs": 2570, - "canary": "RD_TEST_BFF535", - "network": [ - { - "id": "net-1", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1587, - "status": 200, - "ok": true, - "finishedAt": 1608, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1588, - "status": 200, - "ok": true, - "finishedAt": 1599, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1588, - "status": 200, - "ok": true, - "finishedAt": 1608, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1589, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "tags", - "finishedAt": 1598 - } - ], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 6 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 2 - }, - { - "strategy": "href", - "weight": 72, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "text", - "weight": 60, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 3 - }, - { - "strategy": "css", - "weight": 35, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 2 - } - ], - "chosenStrategy": "css", - "chosenWeight": 35, - "retryCount": 0 - }, - "before": { - "at": 1554, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", - "title": "Conduit", - "domHash": "319c3f111f0df4bf", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", - "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ + "url": "http://127.0.0.1:37213/#/editor", + "title": "Conduit", + "actions": [ + { + "id": "4240ac8c9986", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > a", + "tag": "a", + "ordinal": 0, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ { - "tag": "input", - "type": "text", - "name": "title", - "valueHash": "b1ecbb2c73c74aae", - "checked": false, - "disabled": false, - "visible": true + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true }, { - "tag": "input", - "type": "text", - "name": "description", - "valueHash": "7ecc020bffae0253", - "checked": false, - "disabled": false, - "visible": true + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false }, { - "tag": "textarea", - "type": "textarea", - "name": "body", - "valueHash": "6c0eafd99f29ca4d", - "disabled": false, - "visible": true + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" }, { - "tag": "input", - "type": "text", - "name": "tags", - "valueHash": "ca4dbf3dc5193203", - "checked": false, - "disabled": false, - "visible": true + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true }, { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > a" } ] }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } + "fields": [] }, - "beforeAction": { - "at": 1562, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", - "title": "Conduit", - "domHash": "319c3f111f0df4bf", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", - "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "title", - "valueHash": "b1ecbb2c73c74aae", - "checked": false, - "disabled": false, - "visible": true - }, + { + "id": "cf7f7e055d50", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "Source code", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a", + "tag": "a", + "ordinal": 1, + "role": "link", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", + "candidates": [ { - "tag": "input", - "type": "text", - "name": "description", - "valueHash": "7ecc020bffae0253", - "checked": false, - "disabled": false, - "visible": true + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Source code", + "exact": true }, { - "tag": "textarea", - "type": "textarea", - "name": "body", - "valueHash": "6c0eafd99f29ca4d", - "disabled": false, - "visible": true + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Source code", + "exact": false }, { - "tag": "input", - "type": "text", - "name": "tags", - "valueHash": "ca4dbf3dc5193203", - "checked": false, - "disabled": false, - "visible": true + "strategy": "href", + "weight": 72, + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" }, { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true + "strategy": "text", + "weight": 60, + "value": "Source code", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a" } ] }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ + "fields": [] + }, + { + "id": "b2ce5788ac2d", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "Home", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", + "tag": "a", + "ordinal": 2, + "role": "link", + "accessibleName": "Home", + "text": "Home", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Home", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Home", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Home", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2567, - "url": "http://127.0.0.1:3000/#/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false + ] }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ + "fields": [] + }, + { + "id": "38dd0a454d48", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "New Article", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "tag": "a", + "ordinal": 3, + "role": "link", + "accessibleName": "New Article", + "text": "New Article", + "href": "http://127.0.0.1:37213/#/editor", + "candidates": [ { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true + "strategy": "role", + "weight": 92, + "role": "link", + "name": "New Article", + "exact": true }, { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true + "strategy": "role", + "weight": 82, + "role": "link", + "name": "New Article", + "exact": false }, { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/editor" + }, + { + "strategy": "text", + "weight": 60, + "value": "New Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" } ] }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ + "fields": [] + }, + { + "id": "b725edd599a8", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "Publish Article", + "activation": "submit", + "kind": "mutation", + "intent": "submit", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > form", + "tag": "form", + "ordinal": 4, + "accessibleName": "Publish Article", + "text": "Publish Article", + "candidates": [ { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false + "strategy": "text", + "weight": 60, + "value": "Publish Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > form" } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "snapshotIndex": "snapshots/RD-001.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 2, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-002", - "action": { - "id": "77039a373aea", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", - "label": "Home", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", - "tag": "a", - "ordinal": 2, - "role": "link", - "accessibleName": "Home", - "text": "Home", - "href": "http://127.0.0.1:3000/#/", - "candidates": [ + ] + }, + "fields": [ { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "Home", - "exact": true + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(1) > input", + "tag": "input", + "type": "text", + "required": true, + "disabled": false, + "name": "title", + "placeholder": "Article Title" + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(2) > input", + "tag": "input", + "type": "text", + "required": true, + "disabled": false, + "name": "description", + "placeholder": "What's this article about?" + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(3) > textarea", + "tag": "textarea", + "type": "textarea", + "required": true, + "disabled": false, + "name": "body", + "placeholder": "Write your article (in markdown)" + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(4) > input", + "tag": "input", + "type": "text", + "required": false, + "disabled": false, + "name": "tags", + "placeholder": "Enter tags" + } + ] + }, + { + "id": "615ef8bfaf91", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > a", + "tag": "a", + "ordinal": 5, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > a" + } + ] + }, + "fields": [] + }, + { + "id": "955bb7c4ae7a", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "Thinkster", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > span > a", + "tag": "a", + "ordinal": 6, + "role": "link", + "accessibleName": "Thinkster", + "text": "Thinkster", + "href": "https://thinkster.io/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Thinkster", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Thinkster", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "https://thinkster.io/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Thinkster", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > span > a" + } + ] + }, + "fields": [] + }, + { + "id": "865611a40b7e", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "Source code", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > ul > li > a", + "tag": "a", + "ordinal": 7, + "role": "link", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Source code", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Source code", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" + }, + { + "strategy": "text", + "weight": 60, + "value": "Source code", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > ul > li > a" + } + ] + }, + "fields": [] + } + ] + } + ], + "findings": [ + { + "id": "RD-001", + "action": { + "id": "f55e6fed4b37", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > a", + "tag": "a", + "ordinal": 0, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true }, { "strategy": "role", "weight": 82, "role": "link", - "name": "Home", + "name": "conduit", "exact": false }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", "weight": 60, - "value": "Home", + "value": "conduit", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" + "selector": "body > div > header > nav > div > a" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:35:16.155Z", - "durationMs": 2515, - "canary": "RD_TEST_834028", + "startedAt": "2026-07-26T10:59:47.629Z", + "durationMs": 2517, + "canary": "RD_TEST_150A3F", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1529, + "startedAt": 1561, "status": 200, "ok": true, - "finishedAt": 1543, + "finishedAt": 1567, "contentType": "application/json", "resourceTypeHint": "feed" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1529, - "status": 200, - "ok": true, - "finishedAt": 1537, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1530, - "status": 200, - "ok": true, - "finishedAt": 1544, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 1530, + "startedAt": 1561, "status": 200, "ok": true, - "finishedAt": 1538, + "finishedAt": 1566, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -1483,27 +1503,48 @@ { "strategy": "role", "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 9 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "href", + "weight": 72, "matchCount": 0, "visibleCount": 0, "elapsedMs": 2 }, { - "strategy": "role", - "weight": 82, + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "css", + "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], - "chosenStrategy": "role", - "chosenWeight": 82, + "chosenStrategy": "css", + "chosenWeight": 35, "retryCount": 0 }, "before": { - "at": 1497, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "at": 1523, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "title": "Conduit", - "domHash": "319c3f111f0df4bf", + "domHash": "8822866c80e08994", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1515,15 +1556,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", + "textHash": "3d23bd88be98cc02", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", "type": "text", "name": "title", - "valueHash": "b1ecbb2c73c74aae", + "valueHash": "b1e6e711a6234597", "checked": false, "disabled": false, "visible": true @@ -1532,7 +1573,7 @@ "tag": "input", "type": "text", "name": "description", - "valueHash": "7ecc020bffae0253", + "valueHash": "b88339d960a264a0", "checked": false, "disabled": false, "visible": true @@ -1541,7 +1582,7 @@ "tag": "textarea", "type": "textarea", "name": "body", - "valueHash": "6c0eafd99f29ca4d", + "valueHash": "576c4815d7a09b26", "disabled": false, "visible": true }, @@ -1549,7 +1590,7 @@ "tag": "input", "type": "text", "name": "tags", - "valueHash": "ca4dbf3dc5193203", + "valueHash": "77ae5c6394cae14e", "checked": false, "disabled": false, "visible": true @@ -1569,7 +1610,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1580,10 +1621,10 @@ } }, "beforeAction": { - "at": 1503, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "at": 1533, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "title": "Conduit", - "domHash": "319c3f111f0df4bf", + "domHash": "8822866c80e08994", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1595,15 +1636,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", + "textHash": "3d23bd88be98cc02", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", "type": "text", "name": "title", - "valueHash": "b1ecbb2c73c74aae", + "valueHash": "b1e6e711a6234597", "checked": false, "disabled": false, "visible": true @@ -1612,7 +1653,7 @@ "tag": "input", "type": "text", "name": "description", - "valueHash": "7ecc020bffae0253", + "valueHash": "b88339d960a264a0", "checked": false, "disabled": false, "visible": true @@ -1621,7 +1662,7 @@ "tag": "textarea", "type": "textarea", "name": "body", - "valueHash": "6c0eafd99f29ca4d", + "valueHash": "576c4815d7a09b26", "disabled": false, "visible": true }, @@ -1629,7 +1670,7 @@ "tag": "input", "type": "text", "name": "tags", - "valueHash": "ca4dbf3dc5193203", + "valueHash": "77ae5c6394cae14e", "checked": false, "disabled": false, "visible": true @@ -1649,7 +1690,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1662,10 +1703,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2512, - "url": "http://127.0.0.1:3000/#/", + "at": 2513, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1677,9 +1718,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -1710,7 +1751,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1720,7 +1761,15 @@ "indexedDb": [] } }, - "snapshotIndex": "snapshots/RD-002.index.json" + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-001.index.json" }, "verdict": "VERIFIED", "evidenceLevel": 2, @@ -1728,63 +1777,88 @@ "detectorMatches": [] }, { - "id": "RD-003", + "id": "RD-002", "action": { - "id": "4634557aadaa", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", - "label": "New Article", + "id": "c4d0c627d270", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "label": "Home", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", "tag": "a", - "ordinal": 3, + "ordinal": 2, "role": "link", - "accessibleName": "New Article", - "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", + "accessibleName": "Home", + "text": "Home", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", "weight": 92, "role": "link", - "name": "New Article", + "name": "Home", "exact": true }, { "strategy": "role", "weight": 82, "role": "link", - "name": "New Article", + "name": "Home", "exact": false }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", "weight": 60, - "value": "New Article", + "value": "Home", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:35:18.673Z", - "durationMs": 2527, - "canary": "RD_TEST_4340A7", - "network": [], + "startedAt": "2026-07-26T10:59:50.218Z", + "durationMs": 2491, + "canary": "RD_TEST_DE328D", + "network": [ + { + "id": "net-1", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1520, + "status": 200, + "ok": true, + "finishedAt": 1526, + "contentType": "application/json", + "resourceTypeHint": "feed" + }, + { + "id": "net-2", + "method": "GET", + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1520, + "status": 200, + "ok": true, + "finishedAt": 1525, + "contentType": "application/json", + "resourceTypeHint": "tags" + } + ], "console": [], "pageErrors": [], "uiClaims": [], @@ -1801,14 +1875,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -1816,10 +1890,10 @@ "retryCount": 0 }, "before": { - "at": 1531, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "at": 1475, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "title": "Conduit", - "domHash": "319c3f111f0df4bf", + "domHash": "8822866c80e08994", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1831,15 +1905,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", + "textHash": "3d23bd88be98cc02", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", "type": "text", "name": "title", - "valueHash": "b1ecbb2c73c74aae", + "valueHash": "b1e6e711a6234597", "checked": false, "disabled": false, "visible": true @@ -1848,7 +1922,7 @@ "tag": "input", "type": "text", "name": "description", - "valueHash": "7ecc020bffae0253", + "valueHash": "b88339d960a264a0", "checked": false, "disabled": false, "visible": true @@ -1857,7 +1931,7 @@ "tag": "textarea", "type": "textarea", "name": "body", - "valueHash": "6c0eafd99f29ca4d", + "valueHash": "576c4815d7a09b26", "disabled": false, "visible": true }, @@ -1865,7 +1939,7 @@ "tag": "input", "type": "text", "name": "tags", - "valueHash": "ca4dbf3dc5193203", + "valueHash": "77ae5c6394cae14e", "checked": false, "disabled": false, "visible": true @@ -1885,7 +1959,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1896,10 +1970,10 @@ } }, "beforeAction": { - "at": 1538, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "at": 1484, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "title": "Conduit", - "domHash": "319c3f111f0df4bf", + "domHash": "8822866c80e08994", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1911,15 +1985,15 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", + "textHash": "3d23bd88be98cc02", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", "type": "text", "name": "title", - "valueHash": "b1ecbb2c73c74aae", + "valueHash": "b1e6e711a6234597", "checked": false, "disabled": false, "visible": true @@ -1928,7 +2002,7 @@ "tag": "input", "type": "text", "name": "description", - "valueHash": "7ecc020bffae0253", + "valueHash": "b88339d960a264a0", "checked": false, "disabled": false, "visible": true @@ -1937,7 +2011,7 @@ "tag": "textarea", "type": "textarea", "name": "body", - "valueHash": "6c0eafd99f29ca4d", + "valueHash": "576c4815d7a09b26", "disabled": false, "visible": true }, @@ -1945,7 +2019,7 @@ "tag": "input", "type": "text", "name": "tags", - "valueHash": "ca4dbf3dc5193203", + "valueHash": "77ae5c6394cae14e", "checked": false, "disabled": false, "visible": true @@ -1965,7 +2039,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -1978,10 +2052,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2524, - "url": "http://127.0.0.1:3000/#/editor", + "at": 2487, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "5ebc0985cd298024", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1993,42 +2067,21 @@ "accessDenied": false }, "semanticDom": { - "textHash": "623d2b57c26f13d5", - "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "input", - "type": "text", - "name": "title", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "text", - "name": "description", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "textarea", - "type": "textarea", - "name": "body", + "tag": "button", + "type": "submit", "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, { - "tag": "input", - "type": "text", - "name": "tags", + "tag": "button", + "type": "submit", "valueHash": "e3b0c44298fc1c14", - "checked": false, "disabled": false, "visible": true }, @@ -2047,7 +2100,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -2057,3207 +2110,3200 @@ "indexedDb": [] } }, - "snapshotIndex": "snapshots/RD-003.index.json" + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-002.index.json" }, "verdict": "VERIFIED", - "evidenceLevel": 1, + "evidenceLevel": 2, "reason": "The action produced an observable effect.", "detectorMatches": [] }, { - "id": "RD-004", + "id": "RD-003", "action": { - "id": "4da0f6d01b9f", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", - "label": "Update Article", - "activation": "submit", - "kind": "mutation", - "intent": "update", + "id": "ba3091508c94", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "label": "New Article", + "activation": "click", + "kind": "navigation", + "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > main > div > div > div > div > form", - "tag": "form", - "ordinal": 4, - "accessibleName": "Update Article", - "text": "Update Article", + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "tag": "a", + "ordinal": 3, + "role": "link", + "accessibleName": "New Article", + "text": "New Article", + "href": "http://127.0.0.1:37213/#/editor", "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "New Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "New Article", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/editor" + }, { "strategy": "text", "weight": 60, - "value": "Update Article", + "value": "New Article", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > main > div > div > div > div > form" + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" } ] }, - "fields": [ - { - "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(1) > input", - "tag": "input", - "type": "text", - "required": true, - "disabled": false, - "name": "title", - "label": "RD_TEST_F95995_1", - "placeholder": "Article Title" - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(2) > input", - "tag": "input", - "type": "text", - "required": true, - "disabled": false, - "name": "description", - "label": "RD_TEST_F95995_2", - "placeholder": "What's this article about?" - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(3) > textarea", - "tag": "textarea", - "type": "textarea", - "required": true, - "disabled": false, - "name": "body", - "placeholder": "Write your article (in markdown)" - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(4) > input", - "tag": "input", - "type": "text", - "required": false, - "disabled": false, - "name": "tags", - "label": "RD_TEST_F95995_4", - "placeholder": "Enter tags" - } - ] + "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:35:21.244Z", - "durationMs": 7327, - "canary": "RD_TEST_612495", - "network": [ - { - "id": "net-1", - "method": "PUT", - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1", - "resourceType": "xhr", - "startedAt": 1639, - "status": 200, - "ok": true, - "finishedAt": 1651, - "contentType": "application/json", - "resourceTypeHint": "rd-test-f95995-1" - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 1656, - "status": 200, - "ok": true, - "finishedAt": 1661, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", - "resourceType": "font", - "startedAt": 1665, - "status": 200, - "ok": true, - "finishedAt": 1712, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1/comments", - "resourceType": "xhr", - "startedAt": 1668, - "status": 200, - "ok": true, - "finishedAt": 1679, - "contentType": "application/json", - "resourceTypeHint": "comments" - }, - { - "id": "net-5", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1", - "resourceType": "xhr", - "startedAt": 1669, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "rd-test-612495-1", - "finishedAt": 1686 + "startedAt": "2026-07-26T10:59:52.761Z", + "durationMs": 2481, + "canary": "RD_TEST_DDFCE6", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1466, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "title": "Conduit", + "domHash": "8822866c80e08994", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-6", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1/comments", - "resourceType": "xhr", - "startedAt": 1670, - "status": 200, - "ok": true, - "finishedAt": 1680, - "contentType": "application/json", - "resourceTypeHint": "comments" - }, - { - "id": "net-7", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1", - "resourceType": "xhr", - "startedAt": 1670, - "status": 200, - "ok": true, - "finishedAt": 1686, - "contentType": "application/json", - "resourceTypeHint": "rd-test-612495-1" - }, - { - "id": "net-8", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", - "resourceType": "font", - "startedAt": 1718, - "status": 200, - "ok": true, - "finishedAt": 1763, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" - }, - { - "id": "net-9", - "method": "GET", - "url": "http://127.0.0.1:3000/", - "resourceType": "document", - "startedAt": 2751, - "status": 200, - "ok": true, - "contentType": "text/html", - "resourceTypeHint": "resource", - "finishedAt": 2760 + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "b1e6e711a6234597", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "b88339d960a264a0", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "576c4815d7a09b26", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-10", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 2758, - "status": 200, - "ok": true, - "finishedAt": 2772, - "contentType": "text/javascript", - "resourceTypeHint": "client" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1480, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "title": "Conduit", + "domHash": "8822866c80e08994", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-11", - "method": "GET", - "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 2759, - "status": 307, - "ok": false, - "finishedAt": 2762, - "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceTypeHint": "ionicons.min.css" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "b1e6e711a6234597", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "b88339d960a264a0", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "576c4815d7a09b26", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-12", - "method": "GET", - "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", - "resourceType": "stylesheet", - "startedAt": 2759, - "status": 200, - "ok": true, - "finishedAt": 2807, - "contentType": "text/css", - "resourceTypeHint": "css" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2477, + "url": "http://127.0.0.1:37213/#/editor", + "title": "Conduit", + "domHash": "25121aa0be44bdb5", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-13", - "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", - "resourceType": "script", - "startedAt": 2759, - "status": 200, - "ok": true, - "finishedAt": 2767, - "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" + "semanticDom": { + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-14", - "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 2760, - "status": 200, - "ok": true, - "finishedAt": 2773, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-003.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-004", + "action": { + "id": "a33068fbaae8", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "label": "Update Article", + "activation": "submit", + "kind": "mutation", + "intent": "update", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > form", + "tag": "form", + "ordinal": 4, + "accessibleName": "Update Article", + "text": "Update Article", + "candidates": [ + { + "strategy": "text", + "weight": 60, + "value": "Update Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > form" + } + ] + }, + "fields": [ + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(1) > input", + "tag": "input", + "type": "text", + "required": true, + "disabled": false, + "name": "title", + "label": "RD_TEST_1DB90D_1", + "placeholder": "Article Title" }, { - "id": "net-15", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 2762, + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(2) > input", + "tag": "input", + "type": "text", + "required": true, + "disabled": false, + "name": "description", + "label": "RD_TEST_1DB90D_2", + "placeholder": "What's this article about?" + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(3) > textarea", + "tag": "textarea", + "type": "textarea", + "required": true, + "disabled": false, + "name": "body", + "placeholder": "Write your article (in markdown)" + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(4) > input", + "tag": "input", + "type": "text", + "required": false, + "disabled": false, + "name": "tags", + "label": "RD_TEST_1DB90D_4", + "placeholder": "Enter tags" + } + ] + }, + "evidence": { + "startedAt": "2026-07-26T10:59:55.330Z", + "durationMs": 7191, + "canary": "RD_TEST_D97009", + "network": [ + { + "id": "net-1", + "method": "PUT", + "url": "http://127.0.0.1:37213/api/articles/rd-test-1db90d-1", + "resourceType": "xhr", + "startedAt": 1564, "status": 200, "ok": true, - "finishedAt": 3053, - "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css" + "finishedAt": 1576, + "contentType": "application/json", + "resourceTypeHint": "rd-test-1db90d-1" }, { - "id": "net-16", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 2768, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 1583, "status": 200, "ok": true, - "finishedAt": 2778, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" + "finishedAt": 1632, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { - "id": "net-17", + "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 2768, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1/comments", + "resourceType": "xhr", + "startedAt": 1584, "status": 200, "ok": true, - "finishedAt": 2778, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" + "finishedAt": 1590, + "contentType": "application/json", + "resourceTypeHint": "comments" }, { - "id": "net-18", + "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 2769, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1", + "resourceType": "xhr", + "startedAt": 1585, "status": 200, "ok": true, - "finishedAt": 2805, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" + "finishedAt": 1593, + "contentType": "application/json", + "resourceTypeHint": "rd-test-d97009-1" }, { - "id": "net-19", + "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 2769, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 1609, "status": 200, "ok": true, - "finishedAt": 2799, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" + "finishedAt": 1656, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" }, { - "id": "net-20", + "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 2770, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 2708, "status": 200, "ok": true, - "finishedAt": 2787, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 2717 }, { - "id": "net-21", + "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 2771, - "status": 200, - "ok": true, - "finishedAt": 2788, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2716, + "status": 307, + "ok": false, + "finishedAt": 2719, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-22", + "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 2771, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 2716, "status": 200, "ok": true, - "finishedAt": 2789, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" + "finishedAt": 2753, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-23", + "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 2771, + "startedAt": 2716, "status": 200, "ok": true, - "finishedAt": 2788, + "finishedAt": 2729, "contentType": "text/javascript", - "resourceTypeHint": "index.css" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-24", + "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 2772, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2716, "status": 200, "ok": true, - "finishedAt": 2789, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css", + "finishedAt": 2722 }, { - "id": "net-25", + "id": "net-11", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 2773, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2719, "status": 200, "ok": true, - "finishedAt": 2789, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" + "finishedAt": 3035, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-26", + "id": "net-12", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 2773, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 3046, "status": 200, "ok": true, - "finishedAt": 2790, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" + "finishedAt": 3093, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-27", + "id": "net-13", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 2773, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 3046, "status": 200, "ok": true, - "finishedAt": 2792, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" + "finishedAt": 3159, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-28", + "id": "net-14", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 2774, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 3047, "status": 200, "ok": true, - "finishedAt": 2792, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" + "finishedAt": 3098, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-29", + "id": "net-15", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 2774, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 3047, "status": 200, "ok": true, - "finishedAt": 2794, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" + "finishedAt": 3092, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { - "id": "net-30", + "id": "net-16", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 2774, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 3048, "status": 200, "ok": true, - "finishedAt": 2794, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" + "finishedAt": 3146, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-31", + "id": "net-17", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 2774, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1/comments", + "resourceType": "xhr", + "startedAt": 3049, "status": 200, "ok": true, - "finishedAt": 2795, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" + "finishedAt": 3058, + "contentType": "application/json", + "resourceTypeHint": "comments" }, { - "id": "net-32", + "id": "net-18", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 2774, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1", + "resourceType": "xhr", + "startedAt": 3050, "status": 200, "ok": true, - "finishedAt": 2795, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" + "finishedAt": 3061, + "contentType": "application/json", + "resourceTypeHint": "rd-test-d97009-1" }, { - "id": "net-33", + "id": "net-19", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 2775, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 3050, "status": 200, "ok": true, - "finishedAt": 2798, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" + "contentType": "application/json", + "resourceTypeHint": "user", + "finishedAt": 3057 }, { - "id": "net-34", + "id": "net-20", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 2775, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 3065, "status": 200, "ok": true, - "finishedAt": 2799, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" + "finishedAt": 3134, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" }, { - "id": "net-35", + "id": "net-21", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 2775, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3933, "status": 200, "ok": true, - "finishedAt": 2801, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 3941 }, { - "id": "net-36", + "id": "net-22", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 2776, - "status": 200, - "ok": true, - "finishedAt": 2801, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" - }, - { - "id": "net-37", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 2776, - "status": 200, - "ok": true, - "finishedAt": 2801, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" - }, - { - "id": "net-38", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 2778, - "status": 200, - "ok": true, - "finishedAt": 2805, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3939, + "status": 307, + "ok": false, + "finishedAt": 3942, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-39", + "id": "net-23", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 2779, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 3940, "status": 200, "ok": true, - "finishedAt": 2802, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" + "finishedAt": 3979, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-40", + "id": "net-24", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 2790, + "startedAt": 3940, "status": 200, "ok": true, - "finishedAt": 2806, + "finishedAt": 3953, "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-41", + "id": "net-25", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 2791, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 3940, "status": 200, "ok": true, - "finishedAt": 2806, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css", + "finishedAt": 3945 }, { - "id": "net-42", + "id": "net-26", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 2795, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3942, "status": 200, "ok": true, - "finishedAt": 2810, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" + "finishedAt": 4033, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-43", + "id": "net-27", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 2795, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 4045, "status": 200, "ok": true, - "finishedAt": 2813, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" + "finishedAt": 4099, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-44", + "id": "net-28", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 2796, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 4045, "status": 200, "ok": true, - "finishedAt": 2811, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 4163, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-45", + "id": "net-29", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 2796, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 4045, "status": 200, "ok": true, - "finishedAt": 2811, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 4096, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-46", + "id": "net-30", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 2796, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 4046, "status": 200, "ok": true, - "finishedAt": 2811, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 4101, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { - "id": "net-47", + "id": "net-31", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 2797, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 4046, "status": 200, "ok": true, - "finishedAt": 2812, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 4100, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-48", + "id": "net-32", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 2798, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1/comments", + "resourceType": "xhr", + "startedAt": 4053, "status": 200, "ok": true, - "finishedAt": 2815, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" + "finishedAt": 4060, + "contentType": "application/json", + "resourceTypeHint": "comments" }, { - "id": "net-49", + "id": "net-33", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 2798, + "url": "http://127.0.0.1:37213/api/articles/rd-test-d97009-1", + "resourceType": "xhr", + "startedAt": 4053, "status": 200, "ok": true, - "finishedAt": 2815, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 4065, + "contentType": "application/json", + "resourceTypeHint": "rd-test-d97009-1" }, { - "id": "net-50", + "id": "net-34", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 2799, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 4053, "status": 200, "ok": true, - "finishedAt": 2816, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 4058, + "contentType": "application/json", + "resourceTypeHint": "user" }, { - "id": "net-51", + "id": "net-35", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 2799, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 4067, "status": 200, "ok": true, - "finishedAt": 2816, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, + "finishedAt": 4133, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [ { - "id": "net-52", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 2801, - "status": 200, - "ok": true, - "finishedAt": 2818, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(1) > input", + "name": "title", + "type": "text", + "value": "RD_TEST_D97009_1", + "redacted": false }, { - "id": "net-53", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 2802, - "status": 200, - "ok": true, - "finishedAt": 2818, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(2) > input", + "name": "description", + "type": "text", + "value": "RD_TEST_D97009_2", + "redacted": false }, { - "id": "net-54", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 2802, - "status": 200, - "ok": true, - "finishedAt": 2819, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(3) > textarea", + "name": "body", + "type": "textarea", + "value": "RD_TEST_D97009_3", + "redacted": false }, { - "id": "net-55", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 2802, - "status": 200, - "ok": true, - "finishedAt": 2819, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(4) > input", + "name": "tags", + "type": "text", + "value": "RD_TEST_D97009_4", + "redacted": false + } + ], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "text", + "weight": 60, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "text", + "chosenWeight": 60, + "retryCount": 0 + }, + "before": { + "at": 1456, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "title": "Conduit", + "domHash": "8822866c80e08994", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-56", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 2802, - "status": 200, - "ok": true, - "finishedAt": 2819, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "b1e6e711a6234597", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "b88339d960a264a0", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "576c4815d7a09b26", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "77ae5c6394cae14e", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-57", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 2803, - "status": 200, - "ok": true, - "finishedAt": 2819, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-58", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 2803, - "status": 200, - "ok": true, - "finishedAt": 2821, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" - }, - { - "id": "net-59", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 2803, - "status": 200, - "ok": true, - "finishedAt": 2821, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-60", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 2803, - "status": 200, - "ok": true, - "finishedAt": 2822, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "39c9ca19e186f10d", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] + }, + "beforeAction": { + "at": 1513, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "title": "Conduit", + "domHash": "2a87529da1b01dbd", + "canaryPresent": true, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-61", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2823, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "bb8b2867d2490613", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "d6bf36bb39a2b742", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "4a1a708e19ade686", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "4fa2bfacc87dc2f7", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-62", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2823, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "targetDisabledAfter": false, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2633, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-63", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2825, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-64", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2825, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-65", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 2805, - "status": 200, - "ok": true, - "finishedAt": 2826, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] + }, + "screenshot": "screenshots/a33068fbaae8-after.png", + "apiReadBack": { + "url": "http://127.0.0.1:37213/api/articles/rd-test-1db90d-1", + "status": 404, + "ok": false, + "canaryPresent": false, + "expectedFieldValues": 4, + "matchedFieldValues": 0 + }, + "afterRefresh": { + "at": 3872, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-66", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 2806, - "status": 200, - "ok": true, - "finishedAt": 2828, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" - }, - { - "id": "net-67", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 2806, - "status": 200, - "ok": true, - "finishedAt": 2828, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-68", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 2810, - "status": 200, - "ok": true, - "finishedAt": 2831, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "refreshScreenshot": "screenshots/a33068fbaae8-refresh.png", + "afterHardRefresh": { + "at": 4875, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-69", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 2810, - "status": 200, - "ok": true, - "finishedAt": 2828, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-70", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 2811, - "status": 200, - "ok": true, - "finishedAt": 2829, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewTab": { + "at": 5884, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "title": "Conduit", + "domHash": "22aaa9329ca89c3d", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-71", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 2812, - "status": 200, - "ok": true, - "finishedAt": 2829, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-72", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 2812, - "status": 200, - "ok": true, - "finishedAt": 2831, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewContext": { + "at": 7188, + "url": "http://127.0.0.1:37213/#/article/rd-test-d97009-1", + "title": "Conduit", + "domHash": "a5fd021e38a35f59", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-73", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 2813, - "status": 200, - "ok": true, - "finishedAt": 2831, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" - }, - { - "id": "net-74", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 2816, - "status": 200, - "ok": true, - "finishedAt": 2832, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" - }, - { - "id": "net-75", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 2817, - "status": 200, - "ok": true, - "finishedAt": 2833, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" - }, - { - "id": "net-76", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 2817, - "status": 200, - "ok": true, - "finishedAt": 2837, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" + "semanticDom": { + "textHash": "4fc22202d903e566", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_D97009_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_D97009_3 RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "persistenceScope": "SOURCE_OF_TRUTH_CONFIRMED", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "sourceDiffs": [ { - "id": "net-77", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 2820, - "status": 200, - "ok": true, - "finishedAt": 2838, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" + "adapter": "postgresql", + "resource": "articles", + "added": [], + "removed": [], + "changed": [ + "186347d9ea7673a2" + ], + "softDeleted": [], + "truncated": false }, { - "id": "net-78", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 2820, - "status": 200, - "ok": true, - "finishedAt": 2838, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" - }, + "adapter": "postgresql", + "resource": "users", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + } + ], + "sourceSnapshotErrors": [], + "snapshotIndex": "snapshots/RD-004.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 6, + "reason": "The configured source of truth independently confirmed a persisted change during the action.", + "detectorMatches": [] + }, + { + "id": "RD-005", + "action": { + "id": "491cb9cc2566", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > a", + "tag": "a", + "ordinal": 5, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:00:02.643Z", + "durationMs": 2537, + "canary": "RD_TEST_29F813", + "network": [ { - "id": "net-79", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 2823, + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1563, "status": 200, "ok": true, - "finishedAt": 2839, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" + "finishedAt": 1569, + "contentType": "application/json", + "resourceTypeHint": "feed" }, { - "id": "net-80", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 2824, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1564, "status": 200, "ok": true, - "finishedAt": 2840, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" + "finishedAt": 1568, + "contentType": "application/json", + "resourceTypeHint": "tags" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1523, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "title": "Conduit", + "domHash": "22aaa9329ca89c3d", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-81", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 2824, - "status": 200, - "ok": true, - "finishedAt": 2840, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" - }, - { - "id": "net-82", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 2826, - "status": 200, - "ok": true, - "finishedAt": 2842, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" - }, - { - "id": "net-83", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 2828, - "status": 200, - "ok": true, - "finishedAt": 2844, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" - }, - { - "id": "net-84", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 2828, - "status": 200, - "ok": true, - "finishedAt": 2844, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" - }, - { - "id": "net-85", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 2829, - "status": 200, - "ok": true, - "finishedAt": 2844, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" - }, - { - "id": "net-86", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 2830, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" - }, - { - "id": "net-87", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 2831, - "status": 200, - "ok": true, - "finishedAt": 2853, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" - }, - { - "id": "net-88", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 2831, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" - }, - { - "id": "net-89", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 2831, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-90", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 2832, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1532, + "url": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "title": "Conduit", + "domHash": "22aaa9329ca89c3d", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-91", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 2832, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" + "semanticDom": { + "textHash": "3d23bd88be98cc02", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-92", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 2832, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2533, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-93", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 2832, - "status": 200, - "ok": true, - "finishedAt": 2855, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-94", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 2833, - "status": 200, - "ok": true, - "finishedAt": 2855, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-95", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 2836, - "status": 200, - "ok": true, - "finishedAt": 2856, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-96", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 2837, - "status": 200, - "ok": true, - "finishedAt": 2856, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" - }, - { - "id": "net-97", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 2838, - "status": 200, - "ok": true, - "finishedAt": 2857, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" - }, - { - "id": "net-98", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 2838, - "status": 200, - "ok": true, - "finishedAt": 2858, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" - }, - { - "id": "net-99", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 2838, - "status": 200, - "ok": true, - "finishedAt": 2859, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" - }, - { - "id": "net-100", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 2839, - "status": 200, - "ok": true, - "finishedAt": 2860, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" - }, - { - "id": "net-101", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 2839, - "status": 200, - "ok": true, - "finishedAt": 2860, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-102", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 2839, - "status": 200, - "ok": true, - "finishedAt": 2861, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" - }, - { - "id": "net-103", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 2840, - "status": 200, - "ok": true, - "finishedAt": 2861, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" - }, - { - "id": "net-104", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 2840, - "status": 200, - "ok": true, - "finishedAt": 2861, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" - }, - { - "id": "net-105", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 2840, - "status": 200, - "ok": true, - "finishedAt": 2861, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" - }, - { - "id": "net-106", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 2844, - "status": 200, - "ok": true, - "finishedAt": 2862, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" - }, - { - "id": "net-107", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 2844, - "status": 200, - "ok": true, - "finishedAt": 2862, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" - }, - { - "id": "net-108", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 2857, - "status": 200, - "ok": true, - "finishedAt": 2865, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" - }, - { - "id": "net-109", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 2858, - "status": 200, - "ok": true, - "finishedAt": 2866, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" - }, - { - "id": "net-110", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 2858, - "status": 200, - "ok": true, - "finishedAt": 2867, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" - }, - { - "id": "net-111", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 2859, - "status": 200, - "ok": true, - "finishedAt": 2868, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" - }, - { - "id": "net-112", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 2860, - "status": 200, - "ok": true, - "finishedAt": 2868, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" - }, - { - "id": "net-113", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 2860, - "status": 200, - "ok": true, - "finishedAt": 2869, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" - }, - { - "id": "net-114", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 2860, - "status": 200, - "ok": true, - "finishedAt": 2869, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" - }, - { - "id": "net-115", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 2860, - "status": 200, - "ok": true, - "finishedAt": 2870, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" - }, - { - "id": "net-116", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 2861, - "status": 200, - "ok": true, - "finishedAt": 2870, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" - }, - { - "id": "net-117", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 2862, - "status": 200, - "ok": true, - "finishedAt": 2871, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" - }, - { - "id": "net-118", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 2869, - "status": 200, - "ok": true, - "finishedAt": 2874, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-119", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 2870, - "status": 200, - "ok": true, - "finishedAt": 2874, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js" - }, - { - "id": "net-120", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 2871, - "status": 200, - "ok": true, - "finishedAt": 2875, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" - }, - { - "id": "net-121", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 2871, - "status": 200, - "ok": true, - "finishedAt": 2875, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" - }, - { - "id": "net-122", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 3070, - "status": 200, - "ok": true, - "finishedAt": 3076, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-123", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", - "resourceType": "font", - "startedAt": 3073, - "status": 200, - "ok": true, - "finishedAt": 3122, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" - }, - { - "id": "net-124", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", - "resourceType": "font", - "startedAt": 3074, - "status": 200, - "ok": true, - "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf", - "finishedAt": 3178 - }, - { - "id": "net-125", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", - "resourceType": "font", - "startedAt": 3074, - "status": 200, - "ok": true, - "finishedAt": 3122, - "contentType": "font/woff2", - "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" - }, - { - "id": "net-126", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", - "resourceType": "font", - "startedAt": 3075, - "status": 200, - "ok": true, - "finishedAt": 3121, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" - }, - { - "id": "net-127", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", - "resourceType": "font", - "startedAt": 3075, - "status": 200, - "ok": true, - "finishedAt": 3173, - "contentType": "font/woff2", - "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" - }, - { - "id": "net-128", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1/comments", - "resourceType": "xhr", - "startedAt": 3079, - "status": 200, - "ok": true, - "finishedAt": 3087, - "contentType": "application/json", - "resourceTypeHint": "comments" - }, - { - "id": "net-129", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1", - "resourceType": "xhr", - "startedAt": 3080, - "status": 200, - "ok": true, - "finishedAt": 3098, - "contentType": "application/json", - "resourceTypeHint": "rd-test-612495-1" - }, - { - "id": "net-130", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 3080, - "status": 200, - "ok": true, - "finishedAt": 3089, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-131", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1/comments", - "resourceType": "xhr", - "startedAt": 3080, - "status": 200, - "ok": true, - "finishedAt": 3093, - "contentType": "application/json", - "resourceTypeHint": "comments" - }, - { - "id": "net-132", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1", - "resourceType": "xhr", - "startedAt": 3081, - "status": 200, - "ok": true, - "finishedAt": 3098, - "contentType": "application/json", - "resourceTypeHint": "rd-test-612495-1" - }, - { - "id": "net-133", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 3081, - "status": 200, - "ok": true, - "finishedAt": 3093, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-134", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", - "resourceType": "font", - "startedAt": 3119, - "status": 200, - "ok": true, - "finishedAt": 3165, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" - }, - { - "id": "net-135", - "method": "GET", - "url": "http://127.0.0.1:3000/", - "resourceType": "document", - "startedAt": 3942, - "status": 200, - "ok": true, - "contentType": "text/html", - "resourceTypeHint": "resource", - "finishedAt": 3952 - }, - { - "id": "net-136", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 3951, - "status": 200, - "ok": true, - "finishedAt": 3959, - "contentType": "text/javascript", - "resourceTypeHint": "client" - }, - { - "id": "net-137", - "method": "GET", - "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 3951, - "status": 307, - "ok": false, - "finishedAt": 3955, - "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-138", - "method": "GET", - "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", - "resourceType": "stylesheet", - "startedAt": 3951, - "status": 200, - "ok": true, - "finishedAt": 4005, - "contentType": "text/css", - "resourceTypeHint": "css" - }, - { - "id": "net-139", - "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", - "resourceType": "script", - "startedAt": 3952, - "status": 200, - "ok": true, - "finishedAt": 3959, - "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" - }, - { - "id": "net-140", - "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 3952, - "status": 200, - "ok": true, - "finishedAt": 3966, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" - }, - { - "id": "net-141", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 3955, - "status": 200, - "ok": true, - "finishedAt": 4049, - "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-142", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 3960, - "status": 200, - "ok": true, - "finishedAt": 3969, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" - }, - { - "id": "net-143", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 3961, - "status": 200, - "ok": true, - "finishedAt": 3970, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" - }, - { - "id": "net-144", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 3962, - "status": 200, - "ok": true, - "finishedAt": 4001, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" - }, - { - "id": "net-145", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 3962, - "status": 200, - "ok": true, - "finishedAt": 3989, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" - }, - { - "id": "net-146", - "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 3962, - "status": 200, - "ok": true, - "finishedAt": 3981, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" - }, - { - "id": "net-147", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 3963, - "status": 200, - "ok": true, - "finishedAt": 3983, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" - }, - { - "id": "net-148", - "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 3963, - "status": 200, - "ok": true, - "finishedAt": 3983, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" - }, - { - "id": "net-149", - "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 3963, - "status": 200, - "ok": true, - "finishedAt": 3984, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" - }, - { - "id": "net-150", - "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 3963, - "status": 200, - "ok": true, - "finishedAt": 3984, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" - }, - { - "id": "net-151", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 3965, - "status": 200, - "ok": true, - "finishedAt": 3985, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" - }, - { - "id": "net-152", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 3965, - "status": 200, - "ok": true, - "finishedAt": 3986, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" - }, - { - "id": "net-153", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 3965, - "status": 200, - "ok": true, - "finishedAt": 3987, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" - }, - { - "id": "net-154", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 3966, - "status": 200, - "ok": true, - "finishedAt": 3987, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" - }, - { - "id": "net-155", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 3966, - "status": 200, - "ok": true, - "finishedAt": 3988, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" - }, - { - "id": "net-156", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 3966, - "status": 200, - "ok": true, - "finishedAt": 3991, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" - }, - { - "id": "net-157", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 3966, - "status": 200, - "ok": true, - "finishedAt": 3992, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" - }, - { - "id": "net-158", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 3966, - "status": 200, - "ok": true, - "finishedAt": 3995, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" - }, - { - "id": "net-159", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 3967, - "status": 200, - "ok": true, - "finishedAt": 3999, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" - }, - { - "id": "net-160", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 3967, - "status": 200, - "ok": true, - "finishedAt": 4001, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" - }, - { - "id": "net-161", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 3967, - "status": 200, - "ok": true, - "finishedAt": 4001, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" - }, - { - "id": "net-162", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 3968, - "status": 200, - "ok": true, - "finishedAt": 4001, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" - }, - { - "id": "net-163", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 3968, - "status": 200, - "ok": true, - "finishedAt": 4002, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" - }, - { - "id": "net-164", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 3970, - "status": 200, - "ok": true, - "finishedAt": 4003, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" - }, - { - "id": "net-165", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 3970, - "status": 200, - "ok": true, - "finishedAt": 4002, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" - }, - { - "id": "net-166", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 3988, - "status": 200, - "ok": true, - "finishedAt": 4005, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-167", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 3991, - "status": 200, - "ok": true, - "finishedAt": 4007, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-168", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 3992, - "status": 200, - "ok": true, - "finishedAt": 4008, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" - }, - { - "id": "net-169", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 3995, - "status": 200, - "ok": true, - "finishedAt": 4018, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" - }, - { - "id": "net-170", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 3995, - "status": 200, - "ok": true, - "finishedAt": 4014, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-171", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 3995, - "status": 200, - "ok": true, - "finishedAt": 4016, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-172", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 3996, - "status": 200, - "ok": true, - "finishedAt": 4017, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-173", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 3996, - "status": 200, - "ok": true, - "finishedAt": 4017, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-174", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 3996, - "status": 200, - "ok": true, - "finishedAt": 4017, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" - }, - { - "id": "net-175", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 3997, - "status": 200, - "ok": true, - "finishedAt": 4019, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-176", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 3997, - "status": 200, - "ok": true, - "finishedAt": 4023, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-177", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 3997, - "status": 200, - "ok": true, - "finishedAt": 4023, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-178", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 3997, - "status": 200, - "ok": true, - "finishedAt": 4024, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-179", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 3997, - "status": 200, - "ok": true, - "finishedAt": 4024, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-180", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 3998, - "status": 200, - "ok": true, - "finishedAt": 4024, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" - }, - { - "id": "net-181", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 3998, - "status": 200, - "ok": true, - "finishedAt": 4027, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-182", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 3998, - "status": 200, - "ok": true, - "finishedAt": 4027, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-183", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 3999, - "status": 200, - "ok": true, - "finishedAt": 4027, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-184", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 3999, - "status": 200, - "ok": true, - "finishedAt": 4027, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" - }, - { - "id": "net-185", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 4000, - "status": 200, - "ok": true, - "finishedAt": 4031, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" - }, - { - "id": "net-186", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 4000, - "status": 200, - "ok": true, - "finishedAt": 4030, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-187", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 4001, - "status": 200, - "ok": true, - "finishedAt": 4032, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-188", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 4002, - "status": 200, - "ok": true, - "finishedAt": 4032, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-189", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 4002, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-190", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 4004, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-191", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 4005, - "status": 200, - "ok": true, - "finishedAt": 4042, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-192", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 4005, - "status": 200, - "ok": true, - "finishedAt": 4043, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" - }, - { - "id": "net-193", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 4007, - "status": 200, - "ok": true, - "finishedAt": 4043, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" - }, - { - "id": "net-194", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 4008, - "status": 200, - "ok": true, - "finishedAt": 4044, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" - }, - { - "id": "net-195", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 4008, - "status": 200, - "ok": true, - "finishedAt": 4043, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" - }, - { - "id": "net-196", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 4020, - "status": 200, - "ok": true, - "finishedAt": 4044, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" - }, - { - "id": "net-197", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 4020, - "status": 200, - "ok": true, - "finishedAt": 4047, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" - }, - { - "id": "net-198", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 4021, - "status": 200, - "ok": true, - "finishedAt": 4046, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" - }, - { - "id": "net-199", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 4021, - "status": 200, - "ok": true, - "finishedAt": 4047, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" - }, - { - "id": "net-200", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 4026, - "status": 200, - "ok": true, - "finishedAt": 4051, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" - }, - { - "id": "net-201", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 4031, - "status": 200, - "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" - }, - { - "id": "net-202", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 4031, - "status": 200, - "ok": true, - "finishedAt": 4053, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" - }, - { - "id": "net-203", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 4031, - "status": 200, - "ok": true, - "finishedAt": 4053, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" - }, - { - "id": "net-204", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 4032, - "status": 200, - "ok": true, - "finishedAt": 4053, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" - }, - { - "id": "net-205", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 4033, - "status": 200, - "ok": true, - "finishedAt": 4053, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" - }, - { - "id": "net-206", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 4033, - "status": 200, - "ok": true, - "finishedAt": 4053, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" - }, - { - "id": "net-207", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 4034, - "status": 200, - "ok": true, - "finishedAt": 4054, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" - }, - { - "id": "net-208", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 4041, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" - }, - { - "id": "net-209", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 4042, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" - }, - { - "id": "net-210", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 4042, - "status": 200, - "ok": true, - "finishedAt": 4061, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" - }, - { - "id": "net-211", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 4042, - "status": 200, - "ok": true, - "finishedAt": 4061, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" - }, - { - "id": "net-212", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 4043, - "status": 200, - "ok": true, - "finishedAt": 4061, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" - }, - { - "id": "net-213", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 4043, - "status": 200, - "ok": true, - "finishedAt": 4061, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" - }, - { - "id": "net-214", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 4043, - "status": 200, - "ok": true, - "finishedAt": 4063, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" - }, - { - "id": "net-215", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 4043, - "status": 200, - "ok": true, - "finishedAt": 4063, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-216", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 4044, - "status": 200, - "ok": true, - "finishedAt": 4063, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" - }, - { - "id": "net-217", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 4047, - "status": 200, - "ok": true, - "finishedAt": 4065, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" - }, - { - "id": "net-218", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 4047, - "status": 200, - "ok": true, - "finishedAt": 4067, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-219", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 4047, - "status": 200, - "ok": true, - "finishedAt": 4067, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-220", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "finishedAt": 4067, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-221", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 4048, - "status": 200, - "ok": true, - "finishedAt": 4069, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-222", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 4051, - "status": 200, - "ok": true, - "finishedAt": 4069, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" - }, - { - "id": "net-223", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 4053, - "status": 200, - "ok": true, - "finishedAt": 4070, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" - }, - { - "id": "net-224", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 4054, - "status": 200, - "ok": true, - "finishedAt": 4071, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" - }, - { - "id": "net-225", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 4055, - "status": 200, - "ok": true, - "finishedAt": 4072, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" - }, - { - "id": "net-226", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 4056, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" - }, - { - "id": "net-227", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 4056, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-228", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 4057, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" - }, - { - "id": "net-229", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 4058, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" - }, - { - "id": "net-230", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 4058, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" - }, - { - "id": "net-231", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 4058, - "status": 200, - "ok": true, - "finishedAt": 4075, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" - }, - { - "id": "net-232", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 4065, - "status": 200, - "ok": true, - "finishedAt": 4077, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" - }, - { - "id": "net-233", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 4066, - "status": 200, - "ok": true, - "finishedAt": 4078, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" - }, - { - "id": "net-234", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 4066, - "status": 200, - "ok": true, - "finishedAt": 4078, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" - }, - { - "id": "net-235", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 4067, - "status": 200, - "ok": true, - "finishedAt": 4078, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" - }, - { - "id": "net-236", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 4069, - "status": 200, - "ok": true, - "finishedAt": 4080, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" - }, - { - "id": "net-237", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 4069, - "status": 200, - "ok": true, - "finishedAt": 4080, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" - }, - { - "id": "net-238", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 4070, - "status": 200, - "ok": true, - "finishedAt": 4081, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-005.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-006", + "action": { + "id": "a0147c56db57", + "pageUrl": "http://127.0.0.1:37213/", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > a", + "tag": "a", + "ordinal": 0, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:00:05.215Z", + "durationMs": 2529, + "canary": "RD_TEST_C4321E", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 3 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1526, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-239", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 4072, - "status": 200, - "ok": true, - "finishedAt": 4082, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-240", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 4072, - "status": 200, - "ok": true, - "finishedAt": 4082, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1534, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-241", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 4073, - "status": 200, - "ok": true, - "finishedAt": 4083, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-242", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 4073, - "status": 200, - "ok": true, - "finishedAt": 4084, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2525, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-243", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 4075, - "status": 200, - "ok": true, - "finishedAt": 4084, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-244", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 4082, - "status": 200, - "ok": true, - "finishedAt": 4087, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-006.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-007", + "action": { + "id": "63ad14060515", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Home", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", + "tag": "a", + "ordinal": 2, + "role": "link", + "accessibleName": "Home", + "text": "Home", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Home", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Home", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Home", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:00:07.772Z", + "durationMs": 2516, + "canary": "RD_TEST_CAC094", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1496, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-245", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 4083, - "status": 200, - "ok": true, - "finishedAt": 4088, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-246", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 4084, - "status": 200, - "ok": true, - "finishedAt": 4088, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1505, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-247", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 4084, - "status": 200, - "ok": true, - "finishedAt": 4088, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-248", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 4101, - "status": 200, - "ok": true, - "finishedAt": 4108, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2513, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-249", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", - "resourceType": "font", - "startedAt": 4103, - "status": 200, - "ok": true, - "finishedAt": 4149, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-250", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", - "resourceType": "font", - "startedAt": 4104, - "status": 200, - "ok": true, - "finishedAt": 4208, - "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-007.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-008", + "action": { + "id": "2b6be7d79a5f", + "pageUrl": "http://127.0.0.1:37213/", + "label": "New Article", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "tag": "a", + "ordinal": 3, + "role": "link", + "accessibleName": "New Article", + "text": "New Article", + "href": "http://127.0.0.1:37213/#/editor", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "New Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "New Article", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/editor" + }, + { + "strategy": "text", + "weight": 60, + "value": "New Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:00:10.318Z", + "durationMs": 2496, + "canary": "RD_TEST_BC8FC6", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1482, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-251", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", - "resourceType": "font", - "startedAt": 4105, - "status": 200, - "ok": true, - "finishedAt": 4152, - "contentType": "font/woff2", - "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-252", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", - "resourceType": "font", - "startedAt": 4105, - "status": 200, - "ok": true, - "finishedAt": 4153, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1490, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-253", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", - "resourceType": "font", - "startedAt": 4106, - "status": 200, - "ok": true, - "finishedAt": 4153, - "contentType": "font/woff2", - "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-254", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1/comments", - "resourceType": "xhr", - "startedAt": 4109, - "status": 200, - "ok": true, - "finishedAt": 4127, - "contentType": "application/json", - "resourceTypeHint": "comments" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2492, + "url": "http://127.0.0.1:37213/#/editor", + "title": "Conduit", + "domHash": "25121aa0be44bdb5", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-008.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-009", + "action": { + "id": "b6f0b8724ae3", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Your Feed", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(1) > button", + "tag": "button", + "ordinal": 4, + "role": "button", + "accessibleName": "Your Feed", + "text": "Your Feed", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Your Feed", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Your Feed", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Your Feed", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(1) > button" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:00:12.857Z", + "durationMs": 2512, + "canary": "RD_TEST_7472FF", + "network": [ { - "id": "net-255", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 4109, + "startedAt": 1536, "status": 200, "ok": true, - "finishedAt": 4134, + "finishedAt": 1546, "contentType": "application/json", - "resourceTypeHint": "rd-test-612495-1" + "resourceTypeHint": "feed" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 + } + ], + "chosenStrategy": "role", + "chosenWeight": 92, + "retryCount": 0 + }, + "before": { + "at": 1506, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-256", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 4110, - "status": 200, - "ok": true, - "finishedAt": 4121, - "contentType": "application/json", - "resourceTypeHint": "user" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-257", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1/comments", - "resourceType": "xhr", - "startedAt": 4110, - "status": 200, - "ok": true, - "finishedAt": 4128, - "contentType": "application/json", - "resourceTypeHint": "comments" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1514, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-258", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/rd-test-612495-1", - "resourceType": "xhr", - "startedAt": 4110, - "status": 200, - "ok": true, - "finishedAt": 4134, - "contentType": "application/json", - "resourceTypeHint": "rd-test-612495-1" + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2486, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "screenshot": "screenshots/b6f0b8724ae3-after.png", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-009.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-010", + "action": { + "id": "98ade3898516", + "pageUrl": "http://127.0.0.1:37213/", + "label": "Global Feed", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(2) > button", + "tag": "button", + "ordinal": 5, + "role": "button", + "accessibleName": "Global Feed", + "text": "Global Feed", + "type": "submit", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "button", + "name": "Global Feed", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "Global Feed", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "Global Feed", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(2) > button" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:00:15.405Z", + "durationMs": 2572, + "canary": "RD_TEST_43C9EF", + "network": [ { - "id": "net-259", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/user", + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 4110, + "startedAt": 1537, "status": 200, "ok": true, - "finishedAt": 4127, + "finishedAt": 1549, "contentType": "application/json", - "resourceTypeHint": "user" + "resourceTypeHint": "articles" }, { - "id": "net-260", + "id": "net-2", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", "resourceType": "font", - "startedAt": 4138, + "startedAt": 1563, "status": 200, "ok": true, - "finishedAt": 4191, + "finishedAt": 1614, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" } @@ -5265,36 +5311,7 @@ "console": [], "pageErrors": [], "uiClaims": [], - "filledFields": [ - { - "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(1) > input", - "name": "title", - "type": "text", - "value": "RD_TEST_612495_1", - "redacted": false - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(2) > input", - "name": "description", - "type": "text", - "value": "RD_TEST_612495_2", - "redacted": false - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(3) > textarea", - "name": "body", - "type": "textarea", - "value": "RD_TEST_612495_3", - "redacted": false - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(4) > input", - "name": "tags", - "type": "text", - "value": "RD_TEST_612495_4", - "redacted": false - } - ], + "filledFields": [], "dialogs": [], "downloads": [], "downloadEvidence": [], @@ -5303,22 +5320,22 @@ "locatorResolution": { "attempts": [ { - "strategy": "text", - "weight": 60, + "strategy": "role", + "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 5 } ], - "chosenStrategy": "text", - "chosenWeight": 60, + "chosenStrategy": "role", + "chosenWeight": 92, "retryCount": 0 }, "before": { - "at": 1557, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "at": 1500, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "319c3f111f0df4bf", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -5330,42 +5347,80 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", - "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "input", - "type": "text", - "name": "title", - "valueHash": "b1ecbb2c73c74aae", - "checked": false, + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, { - "tag": "input", - "type": "text", - "name": "description", - "valueHash": "7ecc020bffae0253", - "checked": false, + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, { - "tag": "textarea", - "type": "textarea", - "name": "body", - "valueHash": "6c0eafd99f29ca4d", + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1508, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false + }, + "semanticDom": { + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, { - "tag": "input", - "type": "text", - "name": "tags", - "valueHash": "ca4dbf3dc5193203", - "checked": false, + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, @@ -5384,7 +5439,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5392,47 +5447,198 @@ "cookieNames": [], "cookies": [], "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2568, + "url": "http://127.0.0.1:37213/", + "title": "Conduit", + "domHash": "a3babced0bf0a21e", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - "sourceSnapshots": [ + "semanticDom": { + "textHash": "cb995e15ef0e0692", + "visualHash": "805f65e8f4aada8d", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_D97009_1 RD_TEST_D97009_2 Read more... RD_TEST_1DB90D_4 1 Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-010.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-011", + "action": { + "id": "a2758003a662", + "pageUrl": "http://127.0.0.1:37213/", + "label": "RD_TEST_1DB90D_4", + "activation": "click", + "kind": "local", + "intent": "interact", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > aside > div > div > button", + "tag": "button", + "ordinal": 6, + "role": "button", + "accessibleName": "RD_TEST_1DB90D_4", + "text": "RD_TEST_1DB90D_4", + "type": "submit", + "candidates": [ { - "adapter": "postgresql", - "resource": "articles", - "schemaHash": "d718b75b5f43908b", - "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "2303100aae39ad27", - "softDeleted": false - } - ], - "truncated": false + "strategy": "role", + "weight": 92, + "role": "button", + "name": "RD_TEST_1DB90D_4", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "button", + "name": "RD_TEST_1DB90D_4", + "exact": false + }, + { + "strategy": "text", + "weight": 60, + "value": "RD_TEST_1DB90D_4", + "exact": true }, { - "adapter": "postgresql", - "resource": "users", - "schemaHash": "4dc457684d4d0982", - "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "b722d6313737881a", - "softDeleted": false - }, - { - "keyHash": "da7114755c3b82ba", - "rowHash": "8fc053865923194c", - "softDeleted": false - } - ], - "truncated": false + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > aside > div > div > button" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:00:18.020Z", + "durationMs": 2561, + "canary": "RD_TEST_C7AE47", + "network": [ + { + "id": "net-1", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles?tag=RD_TEST_1DB90D_4&&limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1522, + "status": 200, + "ok": true, + "finishedAt": 1532, + "contentType": "application/json", + "resourceTypeHint": "articles" + }, + { + "id": "net-2", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 1553, + "status": 200, + "ok": true, + "finishedAt": 1602, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 } - ] + ], + "chosenStrategy": "role", + "chosenWeight": 92, + "retryCount": 0 }, - "beforeAction": { - "at": 1597, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "before": { + "at": 1480, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "769b972480c651c1", - "canaryPresent": true, + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, "auth": { @@ -5443,42 +5649,21 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", - "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "input", - "type": "text", - "name": "title", - "valueHash": "a27b6219fc8a7961", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "text", - "name": "description", - "valueHash": "cbd2a679023e402a", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "textarea", - "type": "textarea", - "name": "body", - "valueHash": "90ece51066905343", + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, { - "tag": "input", - "type": "text", - "name": "tags", - "valueHash": "69987540bb2a03ad", - "checked": false, + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, @@ -5497,7 +5682,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5507,16 +5692,13 @@ "indexedDb": [] } }, - "targetDisabledAfter": false, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2687, - "url": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "beforeAction": { + "at": 1488, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "055aada6581c1e1b", - "canaryPresent": true, - "bodyCanaryPresent": true, + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, "temporaryBlobUrls": 0, "auth": { "artifacts": 0, @@ -5526,9 +5708,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "02ca7f6b6550bdfa", - "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_612495_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_612495_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5544,27 +5726,6 @@ "disabled": false, "visible": true }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "textarea", - "type": "textarea", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, { "tag": "button", "type": "submit", @@ -5580,7 +5741,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5588,74 +5749,17 @@ "cookieNames": [], "cookies": [], "indexedDb": [] - }, - "sourceSnapshots": [ - { - "adapter": "postgresql", - "resource": "articles", - "schemaHash": "d718b75b5f43908b", - "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "dd289eee40f7c4c1", - "softDeleted": false - } - ], - "truncated": false - }, - { - "adapter": "postgresql", - "resource": "users", - "schemaHash": "4dc457684d4d0982", - "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "b722d6313737881a", - "softDeleted": false - }, - { - "keyHash": "da7114755c3b82ba", - "rowHash": "8fc053865923194c", - "softDeleted": false - } - ], - "truncated": false - } - ] - }, - "screenshot": "screenshots/4da0f6d01b9f-after.png", - "apiReadBack": { - "url": "http://127.0.0.1:3000/api/articles/rd-test-f95995-1", - "status": 404, - "ok": false, - "canaryPresent": false, - "expectedFieldValues": 4, - "matchedFieldValues": 0 - }, - "webSockets": [ - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 3060, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [], - "closedAt": 3948 - }, - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 4049, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [] } - ], - "afterRefresh": { - "at": 3892, - "url": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2557, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "055aada6581c1e1b", - "canaryPresent": true, - "bodyCanaryPresent": true, + "domHash": "00444e77bc13597b", + "canaryPresent": false, + "bodyCanaryPresent": false, "temporaryBlobUrls": 0, "auth": { "artifacts": 0, @@ -5665,9 +5769,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "02ca7f6b6550bdfa", - "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_612495_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_612495_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "0af22bb0665924f2", + "visualHash": "95abe9be32f407d5", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed RD_TEST_1DB90D_4 RD_TEST_AFDF00_1 July 26, 2026 ( 0 ) RD_TEST_D97009_1 RD_TEST_D97009_2 Read more... RD_TEST_1DB90D_4 1 Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5697,13 +5801,6 @@ "disabled": false, "visible": true }, - { - "tag": "textarea", - "type": "textarea", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, { "tag": "button", "type": "submit", @@ -5719,7 +5816,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5729,14 +5826,137 @@ "indexedDb": [] } }, - "refreshScreenshot": "screenshots/4da0f6d01b9f-refresh.png", - "afterHardRefresh": { - "at": 4920, - "url": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-011.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-012", + "action": { + "id": "60e12226e19d", + "pageUrl": "http://127.0.0.1:37213/", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > a", + "tag": "a", + "ordinal": 7, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T11:00:20.634Z", + "durationMs": 2558, + "canary": "RD_TEST_460E24", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 8 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 7 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1548, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "055aada6581c1e1b", - "canaryPresent": true, - "bodyCanaryPresent": true, + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, "temporaryBlobUrls": 0, "auth": { "artifacts": 0, @@ -5746,9 +5966,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "02ca7f6b6550bdfa", - "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_612495_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_612495_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5764,27 +5984,6 @@ "disabled": false, "visible": true }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "textarea", - "type": "textarea", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, { "tag": "button", "type": "submit", @@ -5800,7 +5999,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5810,11 +6009,11 @@ "indexedDb": [] } }, - "afterNewTab": { - "at": 5971, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "beforeAction": { + "at": 1556, + "url": "http://127.0.0.1:37213/", "title": "Conduit", - "domHash": "a241e346f6a28218", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -5826,42 +6025,21 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", - "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "input", - "type": "text", - "name": "title", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "text", - "name": "description", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "textarea", - "type": "textarea", - "name": "body", + "tag": "button", + "type": "submit", "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, { - "tag": "input", - "type": "text", - "name": "tags", + "tag": "button", + "type": "submit", "valueHash": "e3b0c44298fc1c14", - "checked": false, "disabled": false, "visible": true }, @@ -5880,7 +6058,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5890,13 +6068,15 @@ "indexedDb": [] } }, - "afterNewContext": { - "at": 7323, - "url": "http://127.0.0.1:3000/#/article/rd-test-612495-1", + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2554, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "055aada6581c1e1b", - "canaryPresent": true, - "bodyCanaryPresent": true, + "domHash": "a2c5dd8fb3c76cc2", + "canaryPresent": false, + "bodyCanaryPresent": false, "temporaryBlobUrls": 0, "auth": { "artifacts": 0, @@ -5906,9 +6086,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "02ca7f6b6550bdfa", - "visualHash": "471347ba69eaf940", - "text": "conduit Source code Home New Article rdq1785054823102 RD_TEST_612495_1 rdq1785054823102 July 26, 2026 Delete Article Edit Article RD_TEST_612495_3 RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "259817bb48ae635b", + "visualHash": "72ad38eb67085423", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -5924,27 +6104,6 @@ "disabled": false, "visible": true }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "textarea", - "type": "textarea", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, { "tag": "button", "type": "submit", @@ -5960,7 +6119,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -5970,55 +6129,39 @@ "indexedDb": [] } }, - "persistenceScope": "SOURCE_OF_TRUTH_CONFIRMED", - "sourceDiffs": [ - { - "adapter": "postgresql", - "resource": "articles", - "added": [], - "removed": [], - "changed": [ - "186347d9ea7673a2" - ], - "softDeleted": [], - "truncated": false - }, - { - "adapter": "postgresql", - "resource": "users", - "added": [], - "removed": [], - "changed": [], - "softDeleted": [], - "truncated": false - } - ], - "sourceSnapshotErrors": [], - "snapshotIndex": "snapshots/RD-004.index.json" + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-012.index.json" }, "verdict": "VERIFIED", - "evidenceLevel": 6, - "reason": "The configured source of truth independently confirmed a persisted change during the action.", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", "detectorMatches": [] }, { - "id": "RD-005", + "id": "RD-013", "action": { - "id": "8e91a4b368af", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "4240ac8c9986", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "conduit", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > footer > div > a", + "selector": "body > div > header > nav > div > a", "tag": "a", - "ordinal": 5, + "ordinal": 0, "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -6037,7 +6180,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -6048,62 +6191,38 @@ { "strategy": "css", "weight": 35, - "selector": "body > div > footer > div > a" + "selector": "body > div > header > nav > div > a" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:35:28.618Z", - "durationMs": 2574, - "canary": "RD_TEST_1B86A7", + "startedAt": "2026-07-26T11:00:23.221Z", + "durationMs": 2521, + "canary": "RD_TEST_60B09F", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1581, + "startedAt": 1549, "status": 200, "ok": true, - "finishedAt": 1595, + "finishedAt": 1555, "contentType": "application/json", "resourceTypeHint": "feed" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1581, - "status": 200, - "ok": true, - "finishedAt": 1589, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1582, - "status": 200, - "ok": true, - "finishedAt": 1595, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 1582, + "startedAt": 1550, "status": 200, "ok": true, - "finishedAt": 1590, + "finishedAt": 1554, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -6124,35 +6243,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 5 + "elapsedMs": 7 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 7 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 2 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -6160,10 +6279,10 @@ "retryCount": 0 }, "before": { - "at": 1547, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "at": 1507, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "a241e346f6a28218", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6175,9 +6294,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -6229,7 +6348,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6240,10 +6359,10 @@ } }, "beforeAction": { - "at": 1553, - "url": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "at": 1515, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "a241e346f6a28218", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6255,9 +6374,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "dcdc0f6db71ab4cc", + "textHash": "e43f8008221f4f9e", "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Update Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -6309,7 +6428,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6322,10 +6441,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2570, - "url": "http://127.0.0.1:3000/#/", + "at": 2518, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6337,9 +6456,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6370,7 +6489,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6380,7 +6499,15 @@ "indexedDb": [] } }, - "snapshotIndex": "snapshots/RD-005.index.json" + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-013.index.json" }, "verdict": "VERIFIED", "evidenceLevel": 2, @@ -6388,63 +6515,88 @@ "detectorMatches": [] }, { - "id": "RD-006", + "id": "RD-014", "action": { - "id": "41da37d8eedb", - "pageUrl": "http://127.0.0.1:3000/", - "label": "conduit", + "id": "b2ce5788ac2d", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "Home", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > header > nav > div > a", + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", "tag": "a", - "ordinal": 0, + "ordinal": 2, "role": "link", - "accessibleName": "conduit", - "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "accessibleName": "Home", + "text": "Home", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", "weight": 92, "role": "link", - "name": "conduit", + "name": "Home", "exact": true }, { "strategy": "role", "weight": 82, "role": "link", - "name": "conduit", + "name": "Home", "exact": false }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", "weight": 60, - "value": "conduit", + "value": "Home", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > header > nav > div > a" + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:35:31.195Z", - "durationMs": 2480, - "canary": "RD_TEST_68DBA3", - "network": [], + "startedAt": "2026-07-26T11:00:25.776Z", + "durationMs": 2503, + "canary": "RD_TEST_1D2077", + "network": [ + { + "id": "net-1", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1529, + "status": 200, + "ok": true, + "finishedAt": 1536, + "contentType": "application/json", + "resourceTypeHint": "feed" + }, + { + "id": "net-2", + "method": "GET", + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1530, + "status": 200, + "ok": true, + "finishedAt": 1534, + "contentType": "application/json", + "resourceTypeHint": "tags" + } + ], "console": [], "pageErrors": [], "uiClaims": [], @@ -6459,48 +6611,27 @@ { "strategy": "role", "weight": 92, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 4 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 3 - }, - { - "strategy": "href", - "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "text", - "weight": 60, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 2 }, { - "strategy": "css", - "weight": 35, + "strategy": "role", + "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 1 + "elapsedMs": 5 } ], - "chosenStrategy": "css", - "chosenWeight": 35, + "chosenStrategy": "role", + "chosenWeight": 82, "retryCount": 0 }, "before": { - "at": 1493, - "url": "http://127.0.0.1:3000/", + "at": 1490, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6512,21 +6643,42 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "title", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, @@ -6545,7 +6697,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6556,10 +6708,10 @@ } }, "beforeAction": { - "at": 1500, - "url": "http://127.0.0.1:3000/", + "at": 1499, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6571,21 +6723,42 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "title", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, @@ -6604,7 +6777,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6617,10 +6790,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2477, - "url": "http://127.0.0.1:3000/#/", + "at": 2499, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "a2c5dd8fb3c76cc2", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -6632,9 +6805,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", + "textHash": "259817bb48ae635b", "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -6665,7 +6838,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -6675,652 +6848,549 @@ "indexedDb": [] } }, - "snapshotIndex": "snapshots/RD-006.index.json" + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-014.index.json" }, "verdict": "VERIFIED", - "evidenceLevel": 1, + "evidenceLevel": 2, "reason": "The action produced an observable effect.", "detectorMatches": [] }, { - "id": "RD-007", + "id": "RD-015", "action": { - "id": "1f1deb778a19", - "pageUrl": "http://127.0.0.1:3000/", - "label": "Home", - "activation": "click", - "kind": "navigation", - "intent": "navigate", + "id": "b725edd599a8", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "Publish Article", + "activation": "submit", + "kind": "mutation", + "intent": "submit", "risk": "safe", "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", - "tag": "a", - "ordinal": 2, - "role": "link", - "accessibleName": "Home", - "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "selector": "body > div > main > div > div > div > div > form", + "tag": "form", + "ordinal": 4, + "accessibleName": "Publish Article", + "text": "Publish Article", "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "Home", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "Home", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/" - }, { "strategy": "text", "weight": 60, - "value": "Home", + "value": "Publish Article", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" + "selector": "body > div > main > div > div > div > div > form" } ] }, - "fields": [] + "fields": [ + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(1) > input", + "tag": "input", + "type": "text", + "required": true, + "disabled": false, + "name": "title", + "placeholder": "Article Title" + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(2) > input", + "tag": "input", + "type": "text", + "required": true, + "disabled": false, + "name": "description", + "placeholder": "What's this article about?" + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(3) > textarea", + "tag": "textarea", + "type": "textarea", + "required": true, + "disabled": false, + "name": "body", + "placeholder": "Write your article (in markdown)" + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(4) > input", + "tag": "input", + "type": "text", + "required": false, + "disabled": false, + "name": "tags", + "placeholder": "Enter tags" + } + ] }, "evidence": { - "startedAt": "2026-07-26T08:35:33.678Z", - "durationMs": 2550, - "canary": "RD_TEST_5BC7A7", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 2 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 2 - } - ], - "chosenStrategy": "role", - "chosenWeight": 82, - "retryCount": 0 - }, - "before": { - "at": 1555, - "url": "http://127.0.0.1:3000/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false + "startedAt": "2026-07-26T11:00:28.368Z", + "durationMs": 7143, + "canary": "RD_TEST_DA5A96", + "network": [ + { + "id": "net-1", + "method": "POST", + "url": "http://127.0.0.1:37213/api/articles", + "resourceType": "xhr", + "startedAt": 1595, + "status": 201, + "ok": true, + "finishedAt": 1609, + "contentType": "application/json", + "resourceTypeHint": "articles" + }, + { + "id": "net-2", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 1616, + "status": 200, + "ok": true, + "finishedAt": 1661, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" + }, + { + "id": "net-3", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/rd-test-da5a96-1/comments", + "resourceType": "xhr", + "startedAt": 1617, + "status": 200, + "ok": true, + "finishedAt": 1625, + "contentType": "application/json", + "resourceTypeHint": "comments" + }, + { + "id": "net-4", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/rd-test-da5a96-1", + "resourceType": "xhr", + "startedAt": 1618, + "status": 200, + "ok": true, + "finishedAt": 1627, + "contentType": "application/json", + "resourceTypeHint": "rd-test-da5a96-1" + }, + { + "id": "net-5", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 1644, + "status": 200, + "ok": true, + "finishedAt": 1690, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + }, + { + "id": "net-6", + "method": "GET", + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 2709, + "status": 200, + "ok": true, + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 2718 + }, + { + "id": "net-7", + "method": "GET", + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2716, + "status": 307, + "ok": false, + "finishedAt": 2719, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" + }, + { + "id": "net-8", + "method": "GET", + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 2717, + "status": 200, + "ok": true, + "finishedAt": 2760, + "contentType": "text/css", + "resourceTypeHint": "css" }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] + { + "id": "net-9", + "method": "GET", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", + "resourceType": "script", + "startedAt": 2717, + "status": 200, + "ok": true, + "finishedAt": 2729, + "contentType": "text/javascript", + "resourceTypeHint": "index-CLdavoKn.js" }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1561, - "url": "http://127.0.0.1:3000/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false + { + "id": "net-10", + "method": "GET", + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2717, + "status": 200, + "ok": true, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css", + "finishedAt": 2722 }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] + { + "id": "net-11", + "method": "GET", + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2719, + "status": 200, + "ok": true, + "finishedAt": 3015, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2547, - "url": "http://127.0.0.1:3000/#/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false + { + "id": "net-12", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 3024, + "status": 200, + "ok": true, + "finishedAt": 3069, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] + { + "id": "net-13", + "method": "GET", + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 3025, + "status": 200, + "ok": true, + "finishedAt": 3131, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" + }, + { + "id": "net-14", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 3025, + "status": 200, + "ok": true, + "finishedAt": 3072, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" + }, + { + "id": "net-15", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 3025, + "status": 200, + "ok": true, + "finishedAt": 3072, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" + }, + { + "id": "net-16", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 3025, + "status": 200, + "ok": true, + "finishedAt": 3123, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" + }, + { + "id": "net-17", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/rd-test-da5a96-1/comments", + "resourceType": "xhr", + "startedAt": 3027, + "status": 200, + "ok": true, + "finishedAt": 3033, + "contentType": "application/json", + "resourceTypeHint": "comments" + }, + { + "id": "net-18", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/rd-test-da5a96-1", + "resourceType": "xhr", + "startedAt": 3027, + "status": 200, + "ok": true, + "finishedAt": 3037, + "contentType": "application/json", + "resourceTypeHint": "rd-test-da5a96-1" + }, + { + "id": "net-19", + "method": "GET", + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 3028, + "status": 200, + "ok": true, + "finishedAt": 3034, + "contentType": "application/json", + "resourceTypeHint": "user" + }, + { + "id": "net-20", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 3054, + "status": 200, + "ok": true, + "finishedAt": 3110, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + }, + { + "id": "net-21", + "method": "GET", + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3923, + "status": 200, + "ok": true, + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 3931 + }, + { + "id": "net-22", + "method": "GET", + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3929, + "status": 307, + "ok": false, + "finishedAt": 3933, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "snapshotIndex": "snapshots/RD-007.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 1, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-008", - "action": { - "id": "23e7c4644d98", - "pageUrl": "http://127.0.0.1:3000/", - "label": "New Article", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", - "tag": "a", - "ordinal": 3, - "role": "link", - "accessibleName": "New Article", - "text": "New Article", - "href": "http://127.0.0.1:3000/#/editor", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "New Article", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "New Article", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/editor" - }, - { - "strategy": "text", - "weight": 60, - "value": "New Article", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:35:36.231Z", - "durationMs": 2497, - "canary": "RD_TEST_63453D", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 2 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 2 - } - ], - "chosenStrategy": "role", - "chosenWeight": 82, - "retryCount": 0 - }, - "before": { - "at": 1500, - "url": "http://127.0.0.1:3000/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false + { + "id": "net-23", + "method": "GET", + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 3930, + "status": 200, + "ok": true, + "finishedAt": 3968, + "contentType": "text/css", + "resourceTypeHint": "css" }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] + { + "id": "net-24", + "method": "GET", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", + "resourceType": "script", + "startedAt": 3931, + "status": 200, + "ok": true, + "finishedAt": 3943, + "contentType": "text/javascript", + "resourceTypeHint": "index-CLdavoKn.js" }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1507, - "url": "http://127.0.0.1:3000/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false + { + "id": "net-25", + "method": "GET", + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 3931, + "status": 200, + "ok": true, + "finishedAt": 3936, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] + { + "id": "net-26", + "method": "GET", + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3933, + "status": 200, + "ok": true, + "finishedAt": 4010, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" + }, + { + "id": "net-27", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 4019, + "status": 200, + "ok": true, + "finishedAt": 4068, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" + }, + { + "id": "net-28", + "method": "GET", + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 4020, + "status": 200, + "ok": true, + "finishedAt": 4125, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" + }, + { + "id": "net-29", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 4021, + "status": 200, + "ok": true, + "finishedAt": 4066, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2494, - "url": "http://127.0.0.1:3000/#/editor", - "title": "Conduit", - "domHash": "5ebc0985cd298024", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false + { + "id": "net-30", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", + "resourceType": "font", + "startedAt": 4021, + "status": 200, + "ok": true, + "finishedAt": 4069, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, - "semanticDom": { - "textHash": "623d2b57c26f13d5", - "visualHash": "b85410fa0ea5a358", - "text": "conduit Source code Home New Article rdq1785054823102 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "title", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "text", - "name": "description", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "textarea", - "type": "textarea", - "name": "body", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "text", - "name": "tags", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] + { + "id": "net-31", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 4021, + "status": 200, + "ok": true, + "finishedAt": 4069, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "snapshotIndex": "snapshots/RD-008.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 1, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-009", - "action": { - "id": "2d9ff0a4be0d", - "pageUrl": "http://127.0.0.1:3000/", - "label": "Your Feed", - "activation": "click", - "kind": "local", - "intent": "interact", - "risk": "safe", - "fingerprint": { - "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(1) > button", - "tag": "button", - "ordinal": 4, - "role": "button", - "accessibleName": "Your Feed", - "text": "Your Feed", - "type": "submit", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "button", - "name": "Your Feed", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "button", - "name": "Your Feed", - "exact": false - }, - { - "strategy": "text", - "weight": 60, - "value": "Your Feed", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(1) > button" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:35:38.731Z", - "durationMs": 2516, - "canary": "RD_TEST_F09453", - "network": [ { - "id": "net-1", + "id": "net-32", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/rd-test-da5a96-1/comments", "resourceType": "xhr", - "startedAt": 1533, + "startedAt": 4023, "status": 200, "ok": true, - "finishedAt": 1545, + "finishedAt": 4031, "contentType": "application/json", - "resourceTypeHint": "feed" + "resourceTypeHint": "comments" + }, + { + "id": "net-33", + "method": "GET", + "url": "http://127.0.0.1:37213/api/articles/rd-test-da5a96-1", + "resourceType": "xhr", + "startedAt": 4023, + "status": 200, + "ok": true, + "finishedAt": 4032, + "contentType": "application/json", + "resourceTypeHint": "rd-test-da5a96-1" + }, + { + "id": "net-34", + "method": "GET", + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 4024, + "status": 200, + "ok": true, + "finishedAt": 4029, + "contentType": "application/json", + "resourceTypeHint": "user" + }, + { + "id": "net-35", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", + "resourceType": "font", + "startedAt": 4036, + "status": 200, + "ok": true, + "finishedAt": 4105, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" } ], "console": [], "pageErrors": [], "uiClaims": [], - "filledFields": [], + "filledFields": [ + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(1) > input", + "name": "title", + "type": "text", + "value": "RD_TEST_DA5A96_1", + "redacted": false + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(2) > input", + "name": "description", + "type": "text", + "value": "RD_TEST_DA5A96_2", + "redacted": false + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(3) > textarea", + "name": "body", + "type": "textarea", + "value": "RD_TEST_DA5A96_3", + "redacted": false + }, + { + "selector": "body > div > main > div > div > div > div > form > fieldset > fieldset:nth-of-type(4) > input", + "name": "tags", + "type": "text", + "value": "RD_TEST_DA5A96_4", + "redacted": false + } + ], "dialogs": [], "downloads": [], "downloadEvidence": [], @@ -7329,22 +7399,22 @@ "locatorResolution": { "attempts": [ { - "strategy": "role", - "weight": 92, + "strategy": "text", + "weight": 60, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 5 } ], - "chosenStrategy": "role", - "chosenWeight": 92, + "chosenStrategy": "text", + "chosenWeight": 60, "retryCount": 0 }, "before": { - "at": 1507, - "url": "http://127.0.0.1:3000/", + "at": 1485, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7356,21 +7426,42 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "tags", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, @@ -7389,7 +7480,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7397,14 +7488,42 @@ "cookieNames": [], "cookies": [], "indexedDb": [] - } + }, + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + } + ], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false + } + ] }, "beforeAction": { - "at": 1514, - "url": "http://127.0.0.1:3000/", + "at": 1543, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, + "domHash": "b53f12e3dc5c5bc6", + "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, "auth": { @@ -7415,21 +7534,42 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "729300c48ba0be4d", + "checked": false, "disabled": false, "visible": true }, { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "f604f5ce42ef40fa", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "3d3aa4e1d86879f9", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", + "valueHash": "09cfa9d45a1a2918", + "checked": false, "disabled": false, "visible": true }, @@ -7448,7 +7588,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7458,15 +7598,16 @@ "indexedDb": [] } }, + "targetDisabledAfter": false, "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2493, - "url": "http://127.0.0.1:3000/", + "at": 2650, + "url": "http://127.0.0.1:37213/#/article/rd-test-da5a96-1", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, + "domHash": "44fd42b1b6f0eca6", + "canaryPresent": true, + "bodyCanaryPresent": true, "temporaryBlobUrls": 0, "auth": { "artifacts": 0, @@ -7476,9 +7617,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "ff658a462349de63", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_DA5A96_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_DA5A96_3 RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7494,6 +7635,27 @@ "disabled": false, "visible": true }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, { "tag": "button", "type": "submit", @@ -7509,7 +7671,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7517,136 +7679,130 @@ "cookieNames": [], "cookies": [], "indexedDb": [] - } - }, - "screenshot": "screenshots/2d9ff0a4be0d-after.png", - "snapshotIndex": "snapshots/RD-009.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 2, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-010", - "action": { - "id": "3e6593f2a04d", - "pageUrl": "http://127.0.0.1:3000/", - "label": "Global Feed", - "activation": "click", - "kind": "local", - "intent": "interact", - "risk": "safe", - "fingerprint": { - "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(2) > button", - "tag": "button", - "ordinal": 5, - "role": "button", - "accessibleName": "Global Feed", - "text": "Global Feed", - "type": "submit", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "button", - "name": "Global Feed", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "button", - "name": "Global Feed", - "exact": false - }, + }, + "sourceSnapshots": [ { - "strategy": "text", - "weight": 60, - "value": "Global Feed", - "exact": true + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [ + { + "keyHash": "186347d9ea7673a2", + "rowHash": "0d57a14d8f768e38", + "softDeleted": false + }, + { + "keyHash": "da7114755c3b82ba", + "rowHash": "8a838f560ae73b56", + "softDeleted": false + } + ], + "truncated": false }, { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div > div > div > div:nth-of-type(1) > ul > li:nth-of-type(2) > button" + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [ + { + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", + "softDeleted": false + } + ], + "truncated": false } ] }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:35:41.249Z", - "durationMs": 2548, - "canary": "RD_TEST_ED5077", - "network": [ - { - "id": "net-1", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1516, - "status": 200, - "ok": true, - "finishedAt": 1527, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 1540, - "status": 200, - "ok": true, - "finishedAt": 1546, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" + "screenshot": "screenshots/b725edd599a8-after.png", + "afterRefresh": { + "at": 3854, + "url": "http://127.0.0.1:37213/#/article/rd-test-da5a96-1", + "title": "Conduit", + "domHash": "44fd42b1b6f0eca6", + "canaryPresent": true, + "bodyCanaryPresent": true, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-3", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", - "resourceType": "font", - "startedAt": 1545, - "status": 200, - "ok": true, - "finishedAt": 1590, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + "semanticDom": { + "textHash": "ff658a462349de63", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_DA5A96_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_DA5A96_3 RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] + }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [ + { + "key": "loggedUser", + "valueHash": "a7264f4e63c29386", + "containsCanary": false + } + ], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] } - ], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 2 - } - ], - "chosenStrategy": "role", - "chosenWeight": 92, - "retryCount": 0 }, - "before": { - "at": 1491, - "url": "http://127.0.0.1:3000/", + "refreshScreenshot": "screenshots/b725edd599a8-refresh.png", + "afterHardRefresh": { + "at": 4849, + "url": "http://127.0.0.1:37213/#/article/rd-test-da5a96-1", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, + "domHash": "44fd42b1b6f0eca6", + "canaryPresent": true, + "bodyCanaryPresent": true, "temporaryBlobUrls": 0, "auth": { "artifacts": 0, @@ -7656,9 +7812,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "ff658a462349de63", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_DA5A96_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_DA5A96_3 RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7674,6 +7830,27 @@ "disabled": false, "visible": true }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, { "tag": "button", "type": "submit", @@ -7689,7 +7866,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7699,11 +7876,11 @@ "indexedDb": [] } }, - "beforeAction": { - "at": 1497, - "url": "http://127.0.0.1:3000/", + "afterNewTab": { + "at": 5841, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7715,21 +7892,42 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "title", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, @@ -7748,7 +7946,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7758,15 +7956,13 @@ "indexedDb": [] } }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2545, - "url": "http://127.0.0.1:3000/", + "afterNewContext": { + "at": 7140, + "url": "http://127.0.0.1:37213/#/article/rd-test-da5a96-1", "title": "Conduit", - "domHash": "627e997dcc748f41", - "canaryPresent": false, - "bodyCanaryPresent": false, + "domHash": "44fd42b1b6f0eca6", + "canaryPresent": true, + "bodyCanaryPresent": true, "temporaryBlobUrls": 0, "auth": { "artifacts": 0, @@ -7776,9 +7972,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "cdb4d72e4bb69503", - "visualHash": "805f65e8f4aada8d", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed rdq1785054823102 July 26, 2026 ( 0 ) RD_TEST_612495_1 RD_TEST_612495_2 Read more... RD_TEST_F95995_4 1 Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "ff658a462349de63", + "visualHash": "471347ba69eaf940", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 RD_TEST_DA5A96_1 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article RD_TEST_DA5A96_3 RD_TEST_DA5A96_4 RD_TEST_AFDF00_1 July 26, 2026 Delete Article Edit Article Post Comment There are no comments yet... conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7801,6 +7997,20 @@ "disabled": false, "visible": true }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, { "tag": "button", "type": "submit", @@ -7816,7 +8026,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -7826,101 +8036,126 @@ "indexedDb": [] } }, - "snapshotIndex": "snapshots/RD-010.index.json" + "persistenceScope": "SOURCE_OF_TRUTH_CONFIRMED", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "sourceDiffs": [ + { + "adapter": "postgresql", + "resource": "articles", + "added": [ + "da7114755c3b82ba" + ], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + } + ], + "sourceSnapshotErrors": [], + "snapshotIndex": "snapshots/RD-015.index.json" }, "verdict": "VERIFIED", - "evidenceLevel": 2, - "reason": "The action produced an observable effect.", + "evidenceLevel": 6, + "reason": "The configured source of truth independently confirmed a persisted change during the action.", "detectorMatches": [] }, { - "id": "RD-011", + "id": "RD-016", "action": { - "id": "728383b5947d", - "pageUrl": "http://127.0.0.1:3000/", - "label": "RD_TEST_F95995_4", + "id": "615ef8bfaf91", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "conduit", "activation": "click", - "kind": "local", - "intent": "interact", + "kind": "navigation", + "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > main > div > div > div > aside > div > div > button", - "tag": "button", - "ordinal": 6, - "role": "button", - "accessibleName": "RD_TEST_F95995_4", - "text": "RD_TEST_F95995_4", - "type": "submit", + "selector": "body > div > footer > div > a", + "tag": "a", + "ordinal": 5, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", "weight": 92, - "role": "button", - "name": "RD_TEST_F95995_4", + "role": "link", + "name": "conduit", "exact": true }, { "strategy": "role", "weight": 82, - "role": "button", - "name": "RD_TEST_F95995_4", + "role": "link", + "name": "conduit", "exact": false }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, { "strategy": "text", "weight": 60, - "value": "RD_TEST_F95995_4", + "value": "conduit", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > main > div > div > div > aside > div > div > button" + "selector": "body > div > footer > div > a" } ] }, "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:35:43.800Z", - "durationMs": 2620, - "canary": "RD_TEST_EBDDC7", + "startedAt": "2026-07-26T11:00:35.638Z", + "durationMs": 2528, + "canary": "RD_TEST_F22938", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?tag=RD_TEST_F95995_4&&limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1582, + "startedAt": 1550, "status": 200, "ok": true, - "finishedAt": 1593, + "finishedAt": 1556, "contentType": "application/json", - "resourceTypeHint": "articles" + "resourceTypeHint": "feed" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 1605, - "status": 200, - "ok": true, - "finishedAt": 1614, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2", - "resourceType": "font", - "startedAt": 1614, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1551, "status": 200, "ok": true, - "finishedAt": 1659, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2" + "finishedAt": 1555, + "contentType": "application/json", + "resourceTypeHint": "tags" } ], "console": [], @@ -7937,20 +8172,48 @@ { "strategy": "role", "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "css", + "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 3 } ], - "chosenStrategy": "role", - "chosenWeight": 92, + "chosenStrategy": "css", + "chosenWeight": 35, "retryCount": 0 }, "before": { - "at": 1558, - "url": "http://127.0.0.1:3000/", + "at": 1514, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7962,21 +8225,42 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "title", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", "valueHash": "e3b0c44298fc1c14", "disabled": false, "visible": true }, { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "tags", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, @@ -7995,7 +8279,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -8006,10 +8290,10 @@ } }, "beforeAction": { - "at": 1564, - "url": "http://127.0.0.1:3000/", + "at": 1522, + "url": "http://127.0.0.1:37213/#/editor", "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", + "domHash": "25121aa0be44bdb5", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -8021,21 +8305,42 @@ "accessDenied": false }, "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "e43f8008221f4f9e", + "visualHash": "b85410fa0ea5a358", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Publish Article conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "title", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, { - "tag": "button", - "type": "submit", + "tag": "input", + "type": "text", + "name": "description", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "textarea", + "type": "textarea", + "name": "body", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "text", + "name": "tags", "valueHash": "e3b0c44298fc1c14", + "checked": false, "disabled": false, "visible": true }, @@ -8054,7 +8359,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -8067,10 +8372,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2617, - "url": "http://127.0.0.1:3000/", + "at": 2524, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "7cc3955400c775b2", + "domHash": "f16e71f9610b9322", "canaryPresent": false, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -8082,9 +8387,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "f7b0a22a40eb884d", - "visualHash": "95abe9be32f407d5", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed RD_TEST_F95995_4 rdq1785054823102 July 26, 2026 ( 0 ) RD_TEST_612495_1 RD_TEST_612495_2 Read more... RD_TEST_F95995_4 1 Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "textHash": "a8b069a14856a893", + "visualHash": "efa2f7065933782f", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_1DB90D_4RD_TEST_DA5A96_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -8107,13 +8412,6 @@ "disabled": false, "visible": true }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, { "tag": "button", "type": "submit", @@ -8129,7 +8427,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", + "valueHash": "a7264f4e63c29386", "containsCanary": false } ], @@ -8139,7 +8437,15 @@ "indexedDb": [] } }, - "snapshotIndex": "snapshots/RD-011.index.json" + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "jwt", + "sensitive-field" + ] + }, + "snapshotIndex": "snapshots/RD-016.index.json" }, "verdict": "VERIFIED", "evidenceLevel": 2, @@ -8147,62 +8453,67 @@ "detectorMatches": [] }, { - "id": "RD-012", + "id": "RD-017", "action": { - "id": "f485075d62a6", - "pageUrl": "http://127.0.0.1:3000/", - "label": "conduit", + "id": "992665d7b765", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "label": "Source code", "activation": "click", "kind": "navigation", "intent": "navigate", "risk": "safe", "fingerprint": { - "selector": "body > div > footer > div > a", + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a", "tag": "a", - "ordinal": 7, + "ordinal": 1, "role": "link", - "accessibleName": "conduit", - "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", "candidates": [ { "strategy": "role", "weight": 92, "role": "link", - "name": "conduit", + "name": "Source code", "exact": true }, { "strategy": "role", "weight": 82, "role": "link", - "name": "conduit", + "name": "Source code", "exact": false }, { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" }, { "strategy": "text", "weight": 60, - "value": "conduit", + "value": "Source code", "exact": true }, { "strategy": "css", "weight": 35, - "selector": "body > div > footer > div > a" + "selector": "body > div > header > nav > div > ul:nth-of-type(1) > li > a" } ] }, "fields": [] }, + "verdict": "SKIPPED", + "evidenceLevel": 0, + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "detectorMatches": [], "evidence": { - "startedAt": "2026-07-26T08:35:46.423Z", - "durationMs": 2507, - "canary": "RD_TEST_275787", + "startedAt": "", + "durationMs": 0, + "canary": "", "network": [], "console": [], "pageErrors": [], @@ -8210,242 +8521,161 @@ "filledFields": [], "dialogs": [], "downloads": [], - "downloadEvidence": [], - "uploads": [], "popupUrls": [], - "locatorResolution": { - "attempts": [ + "snapshotIndex": "snapshots/RD-017.index.json" + } + }, + { + "id": "RD-018", + "action": { + "id": "bba422159b08", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "label": "Thinkster", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > span > a", + "tag": "a", + "ordinal": 6, + "role": "link", + "accessibleName": "Thinkster", + "text": "Thinkster", + "href": "https://thinkster.io/", + "candidates": [ { "strategy": "role", "weight": 92, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 4 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 3 - }, - { - "strategy": "href", - "weight": 72, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "text", - "weight": 60, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 3 + "role": "link", + "name": "Thinkster", + "exact": true }, - { - "strategy": "css", - "weight": 35, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 1 - } - ], - "chosenStrategy": "css", - "chosenWeight": 35, - "retryCount": 0 - }, - "before": { - "at": 1510, - "url": "http://127.0.0.1:3000/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1516, - "url": "http://127.0.0.1:3000/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Thinkster", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "https://thinkster.io/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Thinkster", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > span > a" + } + ] }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2504, - "url": "http://127.0.0.1:3000/#/", - "title": "Conduit", - "domHash": "f12a3cec7e00e6bc", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "97e2b175e91d32b0", - "visualHash": "72ad38eb67085423", - "text": "conduit Source code Home New Article rdq1785054823102 Your Feed Global Feed Articles not available. Popular Tags RD_TEST_F95995_4 conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [ - { - "key": "loggedUser", - "valueHash": "5530bc1e89316fe8", - "containsCanary": false - } - ], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } + "fields": [] + }, + "verdict": "SKIPPED", + "evidenceLevel": 0, + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "detectorMatches": [], + "evidence": { + "startedAt": "", + "durationMs": 0, + "canary": "", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "popupUrls": [], + "snapshotIndex": "snapshots/RD-018.index.json" + } + }, + { + "id": "RD-019", + "action": { + "id": "c146986c5ac9", + "pageUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", + "label": "Source code", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > ul > li > a", + "tag": "a", + "ordinal": 7, + "role": "link", + "accessibleName": "Source code", + "text": "Source code", + "href": "https://github.com/TonyMckes/conduit-realworld-example-app", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Source code", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Source code", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "https://github.com/TonyMckes/conduit-realworld-example-app" + }, + { + "strategy": "text", + "weight": 60, + "value": "Source code", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > ul > li > a" + } + ] }, - "snapshotIndex": "snapshots/RD-012.index.json" + "fields": [] }, - "verdict": "VERIFIED", - "evidenceLevel": 1, - "reason": "The action produced an observable effect.", - "detectorMatches": [] + "verdict": "SKIPPED", + "evidenceLevel": 0, + "reason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "skippedReason": "Cross-origin navigation blocked by the default safety policy. Use --allow-external explicitly.", + "detectorMatches": [], + "evidence": { + "startedAt": "", + "durationMs": 0, + "canary": "", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "popupUrls": [], + "snapshotIndex": "snapshots/RD-019.index.json" + } }, { - "id": "RD-013", + "id": "RD-020", "action": { - "id": "7244750fb0e2", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "36a91b6a1f72", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -8511,14 +8741,14 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-013.index.json" + "snapshotIndex": "snapshots/RD-020.index.json" } }, { - "id": "RD-014", + "id": "RD-021", "action": { - "id": "c4e7eb1ccc17", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "731b624cc34c", + "pageUrl": "http://127.0.0.1:37213/", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -8527,7 +8757,7 @@ "fingerprint": { "selector": "body > div > footer > div > span > a", "tag": "a", - "ordinal": 6, + "ordinal": 8, "role": "link", "accessibleName": "Thinkster", "text": "Thinkster", @@ -8584,14 +8814,14 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-014.index.json" + "snapshotIndex": "snapshots/RD-021.index.json" } }, { - "id": "RD-015", + "id": "RD-022", "action": { - "id": "e1aaac6ec218", - "pageUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "id": "c5063859c1ad", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -8600,7 +8830,7 @@ "fingerprint": { "selector": "body > div > footer > div > ul > li > a", "tag": "a", - "ordinal": 7, + "ordinal": 9, "role": "link", "accessibleName": "Source code", "text": "Source code", @@ -8657,14 +8887,14 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-015.index.json" + "snapshotIndex": "snapshots/RD-022.index.json" } }, { - "id": "RD-016", + "id": "RD-023", "action": { - "id": "25e3419d67d3", - "pageUrl": "http://127.0.0.1:3000/", + "id": "cf7f7e055d50", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Source code", "activation": "click", "kind": "navigation", @@ -8730,14 +8960,87 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-016.index.json" + "snapshotIndex": "snapshots/RD-023.index.json" } }, { - "id": "RD-017", + "id": "RD-024", + "action": { + "id": "38dd0a454d48", + "pageUrl": "http://127.0.0.1:37213/#/editor", + "label": "New Article", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "tag": "a", + "ordinal": 3, + "role": "link", + "accessibleName": "New Article", + "text": "New Article", + "href": "http://127.0.0.1:37213/#/editor", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "New Article", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "New Article", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/editor" + }, + { + "strategy": "text", + "weight": 60, + "value": "New Article", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" + } + ] + }, + "fields": [] + }, + "verdict": "SKIPPED", + "evidenceLevel": 0, + "reason": "Navigation target is already the current page.", + "skippedReason": "Navigation target is already the current page.", + "detectorMatches": [], + "evidence": { + "startedAt": "", + "durationMs": 0, + "canary": "", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "popupUrls": [], + "snapshotIndex": "snapshots/RD-024.index.json" + } + }, + { + "id": "RD-025", "action": { - "id": "6959be4b6ca4", - "pageUrl": "http://127.0.0.1:3000/", + "id": "955bb7c4ae7a", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -8746,7 +9049,7 @@ "fingerprint": { "selector": "body > div > footer > div > span > a", "tag": "a", - "ordinal": 8, + "ordinal": 6, "role": "link", "accessibleName": "Thinkster", "text": "Thinkster", @@ -8803,14 +9106,14 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-017.index.json" + "snapshotIndex": "snapshots/RD-025.index.json" } }, { - "id": "RD-018", + "id": "RD-026", "action": { - "id": "c9b7b6b4d242", - "pageUrl": "http://127.0.0.1:3000/", + "id": "865611a40b7e", + "pageUrl": "http://127.0.0.1:37213/#/editor", "label": "Source code", "activation": "click", "kind": "navigation", @@ -8819,7 +9122,7 @@ "fingerprint": { "selector": "body > div > footer > div > ul > li > a", "tag": "a", - "ordinal": 9, + "ordinal": 7, "role": "link", "accessibleName": "Source code", "text": "Source code", @@ -8876,23 +9179,23 @@ "dialogs": [], "downloads": [], "popupUrls": [], - "snapshotIndex": "snapshots/RD-018.index.json" + "snapshotIndex": "snapshots/RD-026.index.json" } } ], "environment": { "status": "VALID", - "checkedAt": "2026-07-26T08:35:08.152Z", - "durationMs": 2838, - "targetUrl": "http://127.0.0.1:3000/#/editor/rd-test-f95995-1", + "checkedAt": "2026-07-26T10:59:40.261Z", + "durationMs": 3948, + "targetUrl": "http://127.0.0.1:37213/#/editor/rd-test-1db90d-1", "mainDocument": { "status": 200, "contentType": "text/html" }, "assets": { - "checked": 218, - "scripts": 218, - "stylesheets": 0, + "checked": 6, + "scripts": 3, + "stylesheets": 3, "failed": 0 }, "render": { @@ -8903,7 +9206,7 @@ }, "findings": [], "acceptedRisk": false, - "routesChecked": 2, + "routesChecked": 3, "invalidRoutes": 0 }, "completeness": { @@ -8913,11 +9216,11 @@ ], "selection": { "strategy": "coverage-balanced-v1", - "eligibleActions": 18, - "selectedActions": 18, + "eligibleActions": 26, + "selectedActions": 26, "omittedActions": 0, - "eligiblePages": 2, - "selectedPages": 2, + "eligiblePages": 3, + "selectedPages": 3, "eligibleKinds": [ "mutation", "local", @@ -8930,16 +9233,18 @@ ], "eligibleIntents": [ "update", + "submit", "interact", "navigate" ], "selectedIntents": [ "update", + "submit", "interact", "navigate" ], - "deniedEligibleActions": 6, - "deniedSelectedActions": 6 + "deniedEligibleActions": 10, + "deniedSelectedActions": 10 } } } diff --git a/release/evidence/raw/conduit-sources.scan.json b/release/evidence/raw/conduit-sources.scan.json index 4a15c28..da1e065 100644 --- a/release/evidence/raw/conduit-sources.scan.json +++ b/release/evidence/raw/conduit-sources.scan.json @@ -1,21 +1,21 @@ { "schemaVersion": "1.0", - "scanId": "20260726T083040Z-3aab", - "targetUrl": "http://127.0.0.1:3000/", - "startedAt": "2026-07-26T08:30:40.166Z", - "finishedAt": "2026-07-26T08:31:44.758Z", + "scanId": "20260726T104933Z-2a05", + "targetUrl": "http://127.0.0.1:37213/", + "startedAt": "2026-07-26T10:49:33.332Z", + "finishedAt": "2026-07-26T10:50:35.155Z", "options": { - "maxPages": 12, - "maxActions": 30, + "maxPages": 10, + "maxActions": 100, "timeoutMs": 12000, "settleMs": 800, - "maxDurationMs": 300000, + "maxDurationMs": 900000, "maxRetries": 2, "allowDestructive": false, "allowExternal": false, "mutationAllowed": true, "deep": true, - "trace": false, + "trace": true, "traceOnFailure": false, "video": false, "environmentTimeoutMs": 10000, @@ -41,12 +41,12 @@ }, "pages": [ { - "url": "http://127.0.0.1:3000/", + "url": "http://127.0.0.1:37213/", "title": "Conduit", "actions": [ { - "id": "41da37d8eedb", - "pageUrl": "http://127.0.0.1:3000/", + "id": "a0147c56db57", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -59,7 +59,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -78,7 +78,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -96,8 +96,8 @@ "fields": [] }, { - "id": "25e3419d67d3", - "pageUrl": "http://127.0.0.1:3000/", + "id": "36a91b6a1f72", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -147,8 +147,8 @@ "fields": [] }, { - "id": "1f1deb778a19", - "pageUrl": "http://127.0.0.1:3000/", + "id": "63ad14060515", + "pageUrl": "http://127.0.0.1:37213/", "label": "Home", "activation": "click", "kind": "navigation", @@ -161,7 +161,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -180,7 +180,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -198,8 +198,8 @@ "fields": [] }, { - "id": "d4d94cb603a0", - "pageUrl": "http://127.0.0.1:3000/", + "id": "fbcb31d578a0", + "pageUrl": "http://127.0.0.1:37213/", "label": "Login", "activation": "click", "kind": "navigation", @@ -212,7 +212,7 @@ "role": "link", "accessibleName": "Login", "text": "Login", - "href": "http://127.0.0.1:3000/#/login", + "href": "http://127.0.0.1:37213/#/login", "candidates": [ { "strategy": "role", @@ -231,7 +231,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/login" + "value": "http://127.0.0.1:37213/#/login" }, { "strategy": "text", @@ -249,8 +249,8 @@ "fields": [] }, { - "id": "721014d6d852", - "pageUrl": "http://127.0.0.1:3000/", + "id": "1a3562360a45", + "pageUrl": "http://127.0.0.1:37213/", "label": "Sign up", "activation": "click", "kind": "navigation", @@ -263,7 +263,7 @@ "role": "link", "accessibleName": "Sign up", "text": "Sign up", - "href": "http://127.0.0.1:3000/#/register", + "href": "http://127.0.0.1:37213/#/register", "candidates": [ { "strategy": "role", @@ -282,7 +282,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/register" + "value": "http://127.0.0.1:37213/#/register" }, { "strategy": "text", @@ -300,8 +300,8 @@ "fields": [] }, { - "id": "0a8473d5a771", - "pageUrl": "http://127.0.0.1:3000/", + "id": "a623d49666be", + "pageUrl": "http://127.0.0.1:37213/", "label": "Global Feed", "activation": "click", "kind": "local", @@ -346,8 +346,8 @@ "fields": [] }, { - "id": "f485075d62a6", - "pageUrl": "http://127.0.0.1:3000/", + "id": "60e12226e19d", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -360,7 +360,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -379,7 +379,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -397,8 +397,8 @@ "fields": [] }, { - "id": "6959be4b6ca4", - "pageUrl": "http://127.0.0.1:3000/", + "id": "731b624cc34c", + "pageUrl": "http://127.0.0.1:37213/", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -448,8 +448,8 @@ "fields": [] }, { - "id": "c9b7b6b4d242", - "pageUrl": "http://127.0.0.1:3000/", + "id": "c5063859c1ad", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -501,12 +501,12 @@ ] }, { - "url": "http://127.0.0.1:3000/#/login", + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "actions": [ { - "id": "0ab782512c9d", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "e0ddb36c3731", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "conduit", "activation": "click", "kind": "navigation", @@ -519,7 +519,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -538,7 +538,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -556,8 +556,8 @@ "fields": [] }, { - "id": "1e4683e9dd3a", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "0a96ce3e0599", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Source code", "activation": "click", "kind": "navigation", @@ -607,8 +607,8 @@ "fields": [] }, { - "id": "1ac9625794b3", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "22c7207efda0", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Home", "activation": "click", "kind": "navigation", @@ -621,7 +621,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -640,7 +640,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -658,8 +658,8 @@ "fields": [] }, { - "id": "57d0ff701b4f", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "8e0749e6c4bd", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Login", "activation": "click", "kind": "navigation", @@ -672,7 +672,7 @@ "role": "link", "accessibleName": "Login", "text": "Login", - "href": "http://127.0.0.1:3000/#/login", + "href": "http://127.0.0.1:37213/#/login", "candidates": [ { "strategy": "role", @@ -691,7 +691,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/login" + "value": "http://127.0.0.1:37213/#/login" }, { "strategy": "text", @@ -709,8 +709,8 @@ "fields": [] }, { - "id": "42750ec3d0d7", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "771b3bf039ac", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Sign up", "activation": "click", "kind": "navigation", @@ -723,7 +723,7 @@ "role": "link", "accessibleName": "Sign up", "text": "Sign up", - "href": "http://127.0.0.1:3000/#/register", + "href": "http://127.0.0.1:37213/#/register", "candidates": [ { "strategy": "role", @@ -742,7 +742,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/register" + "value": "http://127.0.0.1:37213/#/register" }, { "strategy": "text", @@ -760,8 +760,8 @@ "fields": [] }, { - "id": "ac983b03deb5", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "8a2159eabaa0", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Need an account?", "activation": "click", "kind": "navigation", @@ -774,7 +774,7 @@ "role": "link", "accessibleName": "Need an account?", "text": "Need an account?", - "href": "http://127.0.0.1:3000/#/register", + "href": "http://127.0.0.1:37213/#/register", "candidates": [ { "strategy": "role", @@ -793,7 +793,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/register" + "value": "http://127.0.0.1:37213/#/register" }, { "strategy": "text", @@ -811,8 +811,8 @@ "fields": [] }, { - "id": "fd4121f2d18b", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "e57b4c4aef96", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Login", "activation": "submit", "kind": "mutation", @@ -861,8 +861,8 @@ ] }, { - "id": "705fc8947a53", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "9e707db551a2", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "conduit", "activation": "click", "kind": "navigation", @@ -875,7 +875,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -894,7 +894,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -912,8 +912,8 @@ "fields": [] }, { - "id": "05734be5adff", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "ea0c68fd2737", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -963,8 +963,8 @@ "fields": [] }, { - "id": "d84c94c719e0", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "afb29f9198b9", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Source code", "activation": "click", "kind": "navigation", @@ -1016,12 +1016,12 @@ ] }, { - "url": "http://127.0.0.1:3000/#/register", + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", "actions": [ { - "id": "4c3238860432", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "f176b2c13933", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "conduit", "activation": "click", "kind": "navigation", @@ -1034,7 +1034,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -1053,7 +1053,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -1071,8 +1071,8 @@ "fields": [] }, { - "id": "213b072ec36e", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "b6abdef8912c", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Source code", "activation": "click", "kind": "navigation", @@ -1122,8 +1122,8 @@ "fields": [] }, { - "id": "e98ea4d042a5", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "f488a7413f35", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Home", "activation": "click", "kind": "navigation", @@ -1136,7 +1136,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -1155,7 +1155,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -1173,8 +1173,8 @@ "fields": [] }, { - "id": "34267b8ce9b3", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "dbcb9b0c432e", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Login", "activation": "click", "kind": "navigation", @@ -1187,7 +1187,7 @@ "role": "link", "accessibleName": "Login", "text": "Login", - "href": "http://127.0.0.1:3000/#/login", + "href": "http://127.0.0.1:37213/#/login", "candidates": [ { "strategy": "role", @@ -1206,7 +1206,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/login" + "value": "http://127.0.0.1:37213/#/login" }, { "strategy": "text", @@ -1224,8 +1224,8 @@ "fields": [] }, { - "id": "8aa697f19422", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "7eb4978c14a5", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Sign up", "activation": "click", "kind": "navigation", @@ -1238,7 +1238,7 @@ "role": "link", "accessibleName": "Sign up", "text": "Sign up", - "href": "http://127.0.0.1:3000/#/register", + "href": "http://127.0.0.1:37213/#/register", "candidates": [ { "strategy": "role", @@ -1257,7 +1257,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/register" + "value": "http://127.0.0.1:37213/#/register" }, { "strategy": "text", @@ -1275,8 +1275,8 @@ "fields": [] }, { - "id": "b9816023669f", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "6e82ef58bd97", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Sign in to your account", "activation": "click", "kind": "navigation", @@ -1289,7 +1289,7 @@ "role": "link", "accessibleName": "Sign in to your account", "text": "Sign in to your account", - "href": "http://127.0.0.1:3000/#/login", + "href": "http://127.0.0.1:37213/#/login", "candidates": [ { "strategy": "role", @@ -1308,7 +1308,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/login" + "value": "http://127.0.0.1:37213/#/login" }, { "strategy": "text", @@ -1326,8 +1326,8 @@ "fields": [] }, { - "id": "cf5c3df21bab", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "f1d2305ca322", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Sign up", "activation": "submit", "kind": "mutation", @@ -1384,8 +1384,8 @@ ] }, { - "id": "0b13af847ba5", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "641cbb0f1c53", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "conduit", "activation": "click", "kind": "navigation", @@ -1398,7 +1398,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -1417,7 +1417,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -1435,8 +1435,8 @@ "fields": [] }, { - "id": "1f3d957d32f9", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "253c660955b4", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -1486,8 +1486,8 @@ "fields": [] }, { - "id": "fd605c2f6cee", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "dcb1127e6e40", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Source code", "activation": "click", "kind": "navigation", @@ -1543,8 +1543,8 @@ { "id": "RD-001", "action": { - "id": "41da37d8eedb", - "pageUrl": "http://127.0.0.1:3000/", + "id": "a0147c56db57", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -1557,7 +1557,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -1576,7 +1576,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -1594,9 +1594,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:30:50.383Z", - "durationMs": 2501, - "canary": "RD_TEST_DFD36E", + "startedAt": "2026-07-26T10:49:40.561Z", + "durationMs": 2497, + "canary": "RD_TEST_AEB565", "network": [], "console": [], "pageErrors": [], @@ -1614,35 +1614,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 5 + "elapsedMs": 11 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 7 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 0 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 3, "visibleCount": 3, - "elapsedMs": 4 + "elapsedMs": 9 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 3 } ], "chosenStrategy": "css", @@ -1650,8 +1650,8 @@ "retryCount": 0 }, "before": { - "at": 1506, - "url": "http://127.0.0.1:3000/", + "at": 1485, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -1689,8 +1689,8 @@ } }, "beforeAction": { - "at": 1514, - "url": "http://127.0.0.1:3000/", + "at": 1495, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -1730,8 +1730,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2498, - "url": "http://127.0.0.1:3000/#/", + "at": 2492, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -1768,6 +1768,7 @@ "indexedDb": [] } }, + "trace": "traces/a0147c56db57.zip", "snapshotIndex": "snapshots/RD-001.index.json" }, "verdict": "VERIFIED", @@ -1778,8 +1779,8 @@ { "id": "RD-002", "action": { - "id": "1f1deb778a19", - "pageUrl": "http://127.0.0.1:3000/", + "id": "63ad14060515", + "pageUrl": "http://127.0.0.1:37213/", "label": "Home", "activation": "click", "kind": "navigation", @@ -1792,7 +1793,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -1811,7 +1812,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -1829,9 +1830,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:30:52.888Z", - "durationMs": 2451, - "canary": "RD_TEST_9F74C8", + "startedAt": "2026-07-26T10:49:43.134Z", + "durationMs": 2457, + "canary": "RD_TEST_A8F9DA", "network": [], "console": [], "pageErrors": [], @@ -1849,14 +1850,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -1864,8 +1865,8 @@ "retryCount": 0 }, "before": { - "at": 1453, - "url": "http://127.0.0.1:3000/", + "at": 1439, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -1903,8 +1904,8 @@ } }, "beforeAction": { - "at": 1459, - "url": "http://127.0.0.1:3000/", + "at": 1448, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -1944,8 +1945,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2448, - "url": "http://127.0.0.1:3000/#/", + "at": 2453, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -1982,6 +1983,7 @@ "indexedDb": [] } }, + "trace": "traces/63ad14060515.zip", "snapshotIndex": "snapshots/RD-002.index.json" }, "verdict": "VERIFIED", @@ -1992,8 +1994,8 @@ { "id": "RD-003", "action": { - "id": "d4d94cb603a0", - "pageUrl": "http://127.0.0.1:3000/", + "id": "fbcb31d578a0", + "pageUrl": "http://127.0.0.1:37213/", "label": "Login", "activation": "click", "kind": "navigation", @@ -2006,7 +2008,7 @@ "role": "link", "accessibleName": "Login", "text": "Login", - "href": "http://127.0.0.1:3000/#/login", + "href": "http://127.0.0.1:37213/#/login", "candidates": [ { "strategy": "role", @@ -2025,7 +2027,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/login" + "value": "http://127.0.0.1:37213/#/login" }, { "strategy": "text", @@ -2043,9 +2045,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:30:55.342Z", - "durationMs": 2440, - "canary": "RD_TEST_D4B247", + "startedAt": "2026-07-26T10:49:45.622Z", + "durationMs": 2439, + "canary": "RD_TEST_F6BEE6", "network": [], "console": [], "pageErrors": [], @@ -2063,14 +2065,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 4 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -2078,8 +2080,8 @@ "retryCount": 0 }, "before": { - "at": 1437, - "url": "http://127.0.0.1:3000/", + "at": 1431, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2117,8 +2119,8 @@ } }, "beforeAction": { - "at": 1443, - "url": "http://127.0.0.1:3000/", + "at": 1439, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2158,8 +2160,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2438, - "url": "http://127.0.0.1:3000/#/login", + "at": 2435, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -2214,6 +2216,7 @@ "indexedDb": [] } }, + "trace": "traces/fbcb31d578a0.zip", "snapshotIndex": "snapshots/RD-003.index.json" }, "verdict": "VERIFIED", @@ -2224,8 +2227,8 @@ { "id": "RD-004", "action": { - "id": "721014d6d852", - "pageUrl": "http://127.0.0.1:3000/", + "id": "1a3562360a45", + "pageUrl": "http://127.0.0.1:37213/", "label": "Sign up", "activation": "click", "kind": "navigation", @@ -2238,7 +2241,7 @@ "role": "link", "accessibleName": "Sign up", "text": "Sign up", - "href": "http://127.0.0.1:3000/#/register", + "href": "http://127.0.0.1:37213/#/register", "candidates": [ { "strategy": "role", @@ -2257,7 +2260,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/register" + "value": "http://127.0.0.1:37213/#/register" }, { "strategy": "text", @@ -2275,9 +2278,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:30:57.785Z", - "durationMs": 2453, - "canary": "RD_TEST_311FF5", + "startedAt": "2026-07-26T10:49:48.106Z", + "durationMs": 2442, + "canary": "RD_TEST_F67795", "network": [], "console": [], "pageErrors": [], @@ -2295,7 +2298,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 4 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -2303,8 +2306,8 @@ "retryCount": 0 }, "before": { - "at": 1443, - "url": "http://127.0.0.1:3000/", + "at": 1449, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2342,8 +2345,8 @@ } }, "beforeAction": { - "at": 1450, - "url": "http://127.0.0.1:3000/", + "at": 1458, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2383,8 +2386,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2450, - "url": "http://127.0.0.1:3000/#/register", + "at": 2438, + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", "canaryPresent": false, @@ -2448,6 +2451,7 @@ "indexedDb": [] } }, + "trace": "traces/1a3562360a45.zip", "snapshotIndex": "snapshots/RD-004.index.json" }, "verdict": "VERIFIED", @@ -2458,8 +2462,8 @@ { "id": "RD-005", "action": { - "id": "0a8473d5a771", - "pageUrl": "http://127.0.0.1:3000/", + "id": "a623d49666be", + "pageUrl": "http://127.0.0.1:37213/", "label": "Global Feed", "activation": "click", "kind": "local", @@ -2504,19 +2508,19 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:31:00.241Z", - "durationMs": 2537, - "canary": "RD_TEST_502645", + "startedAt": "2026-07-26T10:49:50.595Z", + "durationMs": 2485, + "canary": "RD_TEST_04F4BE", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1521, + "startedAt": 1489, "status": 200, "ok": true, - "finishedAt": 1531, + "finishedAt": 1499, "contentType": "application/json", "resourceTypeHint": "articles" } @@ -2537,7 +2541,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -2545,8 +2549,8 @@ "retryCount": 0 }, "before": { - "at": 1489, - "url": "http://127.0.0.1:3000/", + "at": 1449, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2584,8 +2588,8 @@ } }, "beforeAction": { - "at": 1496, - "url": "http://127.0.0.1:3000/", + "at": 1457, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2625,8 +2629,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2508, - "url": "http://127.0.0.1:3000/", + "at": 2458, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2663,7 +2667,8 @@ "indexedDb": [] } }, - "screenshot": "screenshots/0a8473d5a771-after.png", + "screenshot": "screenshots/a623d49666be-after.png", + "trace": "traces/a623d49666be.zip", "snapshotIndex": "snapshots/RD-005.index.json" }, "verdict": "VERIFIED", @@ -2674,8 +2679,8 @@ { "id": "RD-006", "action": { - "id": "f485075d62a6", - "pageUrl": "http://127.0.0.1:3000/", + "id": "60e12226e19d", + "pageUrl": "http://127.0.0.1:37213/", "label": "conduit", "activation": "click", "kind": "navigation", @@ -2688,7 +2693,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -2707,7 +2712,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -2725,9 +2730,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:31:02.781Z", - "durationMs": 2498, - "canary": "RD_TEST_047F95", + "startedAt": "2026-07-26T10:49:53.113Z", + "durationMs": 2515, + "canary": "RD_TEST_DE37F5", "network": [], "console": [], "pageErrors": [], @@ -2745,35 +2750,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 5 + "elapsedMs": 8 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 3, "visibleCount": 3, - "elapsedMs": 3 + "elapsedMs": 7 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -2781,8 +2786,8 @@ "retryCount": 0 }, "before": { - "at": 1491, - "url": "http://127.0.0.1:3000/", + "at": 1502, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2820,8 +2825,8 @@ } }, "beforeAction": { - "at": 1497, - "url": "http://127.0.0.1:3000/", + "at": 1510, + "url": "http://127.0.0.1:37213/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2861,8 +2866,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2495, - "url": "http://127.0.0.1:3000/#/", + "at": 2511, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -2899,6 +2904,7 @@ "indexedDb": [] } }, + "trace": "traces/60e12226e19d.zip", "snapshotIndex": "snapshots/RD-006.index.json" }, "verdict": "VERIFIED", @@ -2909,8 +2915,8 @@ { "id": "RD-007", "action": { - "id": "0ab782512c9d", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "e0ddb36c3731", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "conduit", "activation": "click", "kind": "navigation", @@ -2923,7 +2929,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -2942,7 +2948,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -2960,55 +2966,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:31:05.281Z", - "durationMs": 2486, - "canary": "RD_TEST_C25438", + "startedAt": "2026-07-26T10:49:55.656Z", + "durationMs": 2435, + "canary": "RD_TEST_35F1D2", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1501, + "startedAt": 1477, "status": 200, "ok": true, "contentType": "application/json", "resourceTypeHint": "articles", - "finishedAt": 1512 + "finishedAt": 1482 }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1502, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "tags", - "finishedAt": 1511 - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1502, - "status": 200, - "ok": true, - "finishedAt": 1513, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 1503, + "startedAt": 1477, "status": 200, "ok": true, - "finishedAt": 1512, + "finishedAt": 1482, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -3029,35 +3011,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 7 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -3065,8 +3047,8 @@ "retryCount": 0 }, "before": { - "at": 1460, - "url": "http://127.0.0.1:3000/#/login", + "at": 1441, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -3122,8 +3104,8 @@ } }, "beforeAction": { - "at": 1468, - "url": "http://127.0.0.1:3000/#/login", + "at": 1449, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -3181,8 +3163,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2483, - "url": "http://127.0.0.1:3000/#/", + "at": 2431, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -3219,6 +3201,7 @@ "indexedDb": [] } }, + "trace": "traces/e0ddb36c3731.zip", "snapshotIndex": "snapshots/RD-007.index.json" }, "verdict": "VERIFIED", @@ -3229,8 +3212,8 @@ { "id": "RD-008", "action": { - "id": "1ac9625794b3", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "22c7207efda0", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Home", "activation": "click", "kind": "navigation", @@ -3243,7 +3226,7 @@ "role": "link", "accessibleName": "Home", "text": "Home", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -3262,7 +3245,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -3280,57 +3263,33 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:31:07.770Z", - "durationMs": 2407, - "canary": "RD_TEST_9CFEED", + "startedAt": "2026-07-26T10:49:58.137Z", + "durationMs": 2451, + "canary": "RD_TEST_2E07A8", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1495, - "status": 200, - "ok": true, - "finishedAt": 1506, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1496, - "status": 200, - "ok": true, - "finishedAt": 1507, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", "resourceType": "xhr", "startedAt": 1497, "status": 200, "ok": true, - "finishedAt": 1507, + "finishedAt": 1502, "contentType": "application/json", "resourceTypeHint": "articles" }, { - "id": "net-4", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", "startedAt": 1497, "status": 200, "ok": true, - "finishedAt": 1508, "contentType": "application/json", - "resourceTypeHint": "tags" + "resourceTypeHint": "tags", + "finishedAt": 1501 } ], "console": [], @@ -3349,14 +3308,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -3364,8 +3323,8 @@ "retryCount": 0 }, "before": { - "at": 1445, - "url": "http://127.0.0.1:3000/#/login", + "at": 1461, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -3421,8 +3380,8 @@ } }, "beforeAction": { - "at": 1452, - "url": "http://127.0.0.1:3000/#/login", + "at": 1470, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -3480,8 +3439,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2404, - "url": "http://127.0.0.1:3000/#/", + "at": 2447, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -3518,6 +3477,7 @@ "indexedDb": [] } }, + "trace": "traces/22c7207efda0.zip", "snapshotIndex": "snapshots/RD-008.index.json" }, "verdict": "VERIFIED", @@ -3528,8 +3488,8 @@ { "id": "RD-009", "action": { - "id": "42750ec3d0d7", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "771b3bf039ac", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Sign up", "activation": "click", "kind": "navigation", @@ -3542,7 +3502,7 @@ "role": "link", "accessibleName": "Sign up", "text": "Sign up", - "href": "http://127.0.0.1:3000/#/register", + "href": "http://127.0.0.1:37213/#/register", "candidates": [ { "strategy": "role", @@ -3561,7 +3521,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/register" + "value": "http://127.0.0.1:37213/#/register" }, { "strategy": "text", @@ -3579,9 +3539,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:31:10.180Z", - "durationMs": 2454, - "canary": "RD_TEST_447BD9", + "startedAt": "2026-07-26T10:50:00.635Z", + "durationMs": 2447, + "canary": "RD_TEST_3F4CC9", "network": [], "console": [], "pageErrors": [], @@ -3599,7 +3559,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 4 + "elapsedMs": 6 } ], "chosenStrategy": "role", @@ -3607,8 +3567,8 @@ "retryCount": 0 }, "before": { - "at": 1452, - "url": "http://127.0.0.1:3000/#/login", + "at": 1436, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -3664,8 +3624,8 @@ } }, "beforeAction": { - "at": 1459, - "url": "http://127.0.0.1:3000/#/login", + "at": 1444, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -3723,8 +3683,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2448, - "url": "http://127.0.0.1:3000/#/register", + "at": 2444, + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", "canaryPresent": false, @@ -3788,6 +3748,7 @@ "indexedDb": [] } }, + "trace": "traces/771b3bf039ac.zip", "snapshotIndex": "snapshots/RD-009.index.json" }, "verdict": "VERIFIED", @@ -3798,8 +3759,8 @@ { "id": "RD-010", "action": { - "id": "ac983b03deb5", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "8a2159eabaa0", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Need an account?", "activation": "click", "kind": "navigation", @@ -3812,7 +3773,7 @@ "role": "link", "accessibleName": "Need an account?", "text": "Need an account?", - "href": "http://127.0.0.1:3000/#/register", + "href": "http://127.0.0.1:37213/#/register", "candidates": [ { "strategy": "role", @@ -3831,7 +3792,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/register" + "value": "http://127.0.0.1:37213/#/register" }, { "strategy": "text", @@ -3849,9 +3810,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:31:12.637Z", - "durationMs": 2449, - "canary": "RD_TEST_50CD4A", + "startedAt": "2026-07-26T10:50:03.128Z", + "durationMs": 2440, + "canary": "RD_TEST_C7D1B8", "network": [], "console": [], "pageErrors": [], @@ -3869,7 +3830,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 6 } ], "chosenStrategy": "role", @@ -3877,8 +3838,8 @@ "retryCount": 0 }, "before": { - "at": 1455, - "url": "http://127.0.0.1:3000/#/login", + "at": 1425, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -3934,8 +3895,8 @@ } }, "beforeAction": { - "at": 1461, - "url": "http://127.0.0.1:3000/#/login", + "at": 1434, + "url": "http://127.0.0.1:37213/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", "canaryPresent": false, @@ -3993,8 +3954,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2446, - "url": "http://127.0.0.1:3000/#/register", + "at": 2436, + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", "canaryPresent": false, @@ -4058,6 +4019,7 @@ "indexedDb": [] } }, + "trace": "traces/8a2159eabaa0.zip", "snapshotIndex": "snapshots/RD-010.index.json" }, "verdict": "VERIFIED", @@ -4068,8 +4030,8 @@ { "id": "RD-011", "action": { - "id": "fd4121f2d18b", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "e57b4c4aef96", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Login", "activation": "submit", "kind": "mutation", @@ -4118,20 +4080,20 @@ ] }, "evidence": { - "startedAt": "2026-07-26T08:31:15.205Z", - "durationMs": 7255, - "canary": "RD_TEST_1A4C53", + "startedAt": "2026-07-26T10:50:05.820Z", + "durationMs": 6934, + "canary": "RD_TEST_38CC21", "network": [ { "id": "net-1", "method": "POST", - "url": "http://127.0.0.1:3000/api/users/login", + "url": "http://127.0.0.1:37213/api/users/login", "resourceType": "xhr", - "startedAt": 1557, + "startedAt": 1549, "status": 404, "ok": false, "contentType": "application/json", - "finishedAt": 1738, + "finishedAt": 1560, "resourceTypeHint": "login" }, { @@ -4139,8040 +4101,2719 @@ "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", "resourceType": "font", - "startedAt": 1750, + "startedAt": 1577, "status": 200, "ok": true, - "finishedAt": 1796, + "finishedAt": 1624, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, { "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:3000/", + "url": "http://127.0.0.1:37213/", "resourceType": "document", - "startedAt": 2780, + "startedAt": 2609, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "resource", - "finishedAt": 2790 + "finishedAt": 2618 }, { "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 2788, - "status": 200, - "ok": true, - "finishedAt": 2799, - "contentType": "text/javascript", - "resourceTypeHint": "client" - }, - { - "id": "net-5", - "method": "GET", "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 2789, + "startedAt": 2615, "status": 307, "ok": false, - "finishedAt": 2792, + "finishedAt": 2619, "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-6", + "id": "net-5", "method": "GET", "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", "resourceType": "stylesheet", - "startedAt": 2789, + "startedAt": 2616, "status": 200, "ok": true, - "finishedAt": 2840, + "finishedAt": 2656, "contentType": "text/css", "resourceTypeHint": "css" }, { - "id": "net-7", + "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 2790, + "startedAt": 2617, "status": 200, "ok": true, - "finishedAt": 2796, + "finishedAt": 2630, "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-8", + "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 2790, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2617, "status": 200, "ok": true, - "finishedAt": 2799, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" + "finishedAt": 2623, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-9", + "id": "net-8", "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 2792, + "startedAt": 2619, "status": 200, "ok": true, - "finishedAt": 3085, + "finishedAt": 2901, "contentType": "text/css", "resourceTypeHint": "ionicons.min.css" }, + { + "id": "net-9", + "method": "GET", + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 2908, + "status": 200, + "ok": true, + "finishedAt": 2956, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" + }, { "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 2797, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 2908, "status": 200, "ok": true, - "finishedAt": 2806, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" + "finishedAt": 3018, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { "id": "net-11", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 2799, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 2909, "status": 200, "ok": true, - "finishedAt": 2808, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" + "finishedAt": 2955, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { "id": "net-12", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 2799, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 2909, "status": 200, "ok": true, - "finishedAt": 2837, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" + "finishedAt": 2955, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { "id": "net-13", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 2799, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3761, "status": 200, "ok": true, - "finishedAt": 2839, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 3768 }, { "id": "net-14", "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 2800, - "status": 200, - "ok": true, - "finishedAt": 2820, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3766, + "status": 307, + "ok": false, + "finishedAt": 3770, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { "id": "net-15", "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 2800, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 3767, "status": 200, "ok": true, - "finishedAt": 2820, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" + "finishedAt": 3806, + "contentType": "text/css", + "resourceTypeHint": "css" }, { "id": "net-16", "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 2800, + "startedAt": 3767, "status": 200, "ok": true, - "finishedAt": 2821, + "finishedAt": 3788, "contentType": "text/javascript", - "resourceTypeHint": "styles.css" + "resourceTypeHint": "index-CLdavoKn.js" }, { "id": "net-17", "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 2801, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 3767, "status": 200, "ok": true, - "finishedAt": 2820, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css", + "finishedAt": 3772 }, { "id": "net-18", "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 2801, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3770, "status": 200, "ok": true, - "finishedAt": 2822, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" + "finishedAt": 3846, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { "id": "net-19", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 2802, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 3853, "status": 200, "ok": true, - "finishedAt": 2823, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" + "finishedAt": 3900, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { "id": "net-20", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 2802, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 3854, "status": 200, "ok": true, - "finishedAt": 2823, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" + "finishedAt": 3963, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { "id": "net-21", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 2802, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 3855, "status": 200, "ok": true, - "finishedAt": 2824, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" + "finishedAt": 3902, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { "id": "net-22", "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 2802, - "status": 200, - "ok": true, - "finishedAt": 2824, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" - }, - { - "id": "net-23", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 2803, - "status": 200, - "ok": true, - "finishedAt": 2827, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" - }, - { - "id": "net-24", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2827, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" - }, - { - "id": "net-25", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2828, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" - }, - { - "id": "net-26", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 2804, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 3855, "status": 200, "ok": true, - "finishedAt": 2828, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" - }, + "finishedAt": 3901, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" + } + ], + "console": [ { - "id": "net-27", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 2804, - "status": 200, - "ok": true, - "finishedAt": 2832, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" - }, + "type": "error", + "text": "Failed to load resource: the server responded with a status of 404 (Not Found)", + "at": 1559 + } + ], + "pageErrors": [], + "uiClaims": [], + "filledFields": [ { - "id": "net-28", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 2805, - "status": 200, - "ok": true, - "finishedAt": 2834, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" + "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(1) > input", + "name": "email", + "type": "email", + "value": "rd-rd_test_38cc21_1@example.test", + "redacted": false }, { - "id": "net-29", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 2805, - "status": 200, - "ok": true, - "finishedAt": 2836, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" - }, - { - "id": "net-30", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 2805, - "status": 200, - "ok": true, - "finishedAt": 2836, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" + "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(2) > input", + "name": "password", + "type": "password", + "value": "[REDACTED]", + "redacted": true + } + ], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 7 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1467, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-31", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 2806, - "status": 200, - "ok": true, - "finishedAt": 2836, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-32", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 2807, - "status": 200, - "ok": true, - "finishedAt": 2839, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-33", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 2807, - "status": 200, - "ok": true, - "finishedAt": 2839, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [], + "truncated": false + }, + { + "adapter": "supabase", + "resource": "articles", + "schemaHash": "777de19e0eca5f66", + "rows": [], + "truncated": false + }, + { + "adapter": "supabase", + "resource": "users", + "schemaHash": "cd9a96cfad9b0bff", + "rows": [], + "truncated": false + } + ] + }, + "beforeAction": { + "at": 1502, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "2d4d9f77bf2e179c", + "canaryPresent": true, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-34", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 2825, - "status": 200, - "ok": true, - "finishedAt": 2840, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "043d001b7657e0ee", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-35", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 2825, - "status": 200, - "ok": true, - "finishedAt": 2841, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "targetDisabledAfter": false, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2555, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "83f2a3b016985302", + "canaryPresent": true, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-36", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 2826, - "status": 200, - "ok": true, - "finishedAt": 2842, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" + "semanticDom": { + "textHash": "df9ded375a63f323", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Email not found sign in first Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "043d001b7657e0ee", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-37", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 2828, - "status": 200, - "ok": true, - "finishedAt": 2843, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] }, - { - "id": "net-38", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 2831, - "status": 200, - "ok": true, - "finishedAt": 2850, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "sourceSnapshots": [ + { + "adapter": "postgresql", + "resource": "articles", + "schemaHash": "811ce917dc830ae0", + "rows": [], + "truncated": false + }, + { + "adapter": "postgresql", + "resource": "users", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [], + "truncated": false + }, + { + "adapter": "supabase", + "resource": "articles", + "schemaHash": "777de19e0eca5f66", + "rows": [], + "truncated": false + }, + { + "adapter": "supabase", + "resource": "users", + "schemaHash": "cd9a96cfad9b0bff", + "rows": [], + "truncated": false + } + ] + }, + "screenshot": "screenshots/e57b4c4aef96-after.png", + "afterRefresh": { + "at": 3727, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-39", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 2832, - "status": 200, - "ok": true, - "finishedAt": 2872, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-40", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 2832, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "refreshScreenshot": "screenshots/e57b4c4aef96-refresh.png", + "afterHardRefresh": { + "at": 4680, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-41", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 2832, - "status": 200, - "ok": true, - "finishedAt": 2851, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-42", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 2833, - "status": 200, - "ok": true, - "finishedAt": 2851, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewTab": { + "at": 5660, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-43", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 2833, - "status": 200, - "ok": true, - "finishedAt": 2852, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-44", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 2833, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "afterNewContext": { + "at": 6932, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-45", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 2833, - "status": 200, - "ok": true, - "finishedAt": 2854, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-46", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 2834, - "status": 200, - "ok": true, - "finishedAt": 2858, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-47", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 2834, - "status": 200, - "ok": true, - "finishedAt": 2856, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-48", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 2834, - "status": 200, - "ok": true, - "finishedAt": 2858, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "persistenceScope": "MEMORY_ONLY", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "exact-secret", + "sensitive-field" + ] + }, + "sourceDiffs": [ { - "id": "net-49", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 2834, - "status": 200, - "ok": true, - "finishedAt": 2857, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "adapter": "postgresql", + "resource": "articles", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false }, { - "id": "net-50", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 2835, - "status": 200, - "ok": true, - "finishedAt": 2860, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "adapter": "postgresql", + "resource": "users", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false }, { - "id": "net-51", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 2835, - "status": 200, - "ok": true, - "finishedAt": 2862, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "adapter": "supabase", + "resource": "articles", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false }, { - "id": "net-52", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 2835, - "status": 200, - "ok": true, - "finishedAt": 2862, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" - }, + "adapter": "supabase", + "resource": "users", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + } + ], + "sourceSnapshotErrors": [], + "snapshotIndex": "snapshots/RD-011.index.json" + }, + "verdict": "UNCERTAIN", + "evidenceLevel": 2, + "reason": "The server rejected generated login credentials; a disposable authenticated test account is required to verify this action.", + "detectorMatches": [] + }, + { + "id": "RD-012", + "action": { + "id": "9e707db551a2", + "pageUrl": "http://127.0.0.1:37213/#/login", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > footer > div > a", + "tag": "a", + "ordinal": 7, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > footer > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T10:50:12.910Z", + "durationMs": 2452, + "canary": "RD_TEST_0DE21A", + "network": [ { - "id": "net-53", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 2835, + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1476, "status": 200, "ok": true, - "finishedAt": 2862, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 1483, + "contentType": "application/json", + "resourceTypeHint": "articles" }, { - "id": "net-54", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 2836, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1477, "status": 200, "ok": true, - "finishedAt": 2862, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "finishedAt": 1483, + "contentType": "application/json", + "resourceTypeHint": "tags" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 8 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 3 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1440, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-55", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 2836, - "status": 200, - "ok": true, - "finishedAt": 2866, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-56", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 2836, - "status": 200, - "ok": true, - "finishedAt": 2867, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-57", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 2839, - "status": 200, - "ok": true, - "finishedAt": 2867, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-58", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 2839, - "status": 200, - "ok": true, - "finishedAt": 2867, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-59", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 2840, - "status": 200, - "ok": true, - "finishedAt": 2868, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1448, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-60", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 2840, - "status": 200, - "ok": true, - "finishedAt": 2872, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-61", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 2841, - "status": 200, - "ok": true, - "finishedAt": 2872, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2448, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "3c44d4d1ff59317a", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-62", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 2842, - "status": 200, - "ok": true, - "finishedAt": 2877, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" + "semanticDom": { + "textHash": "f8034dbcac655938", + "visualHash": "f56dba1689c65663", + "text": "conduit Source code Home Login Sign up conduit A place to share your knowledge. Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "trace": "traces/9e707db551a2.zip", + "snapshotIndex": "snapshots/RD-012.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-013", + "action": { + "id": "f176b2c13933", + "pageUrl": "http://127.0.0.1:37213/#/register", + "label": "conduit", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > a", + "tag": "a", + "ordinal": 0, + "role": "link", + "accessibleName": "conduit", + "text": "conduit", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "conduit", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "conduit", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "conduit", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T10:50:15.405Z", + "durationMs": 2451, + "canary": "RD_TEST_D363FA", + "network": [ { - "id": "net-63", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 2842, + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1482, "status": 200, "ok": true, - "finishedAt": 2877, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" + "finishedAt": 1492, + "contentType": "application/json", + "resourceTypeHint": "articles" }, { - "id": "net-64", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 2843, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1483, "status": 200, "ok": true, - "finishedAt": 2877, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" - }, - { - "id": "net-65", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 2853, - "status": 200, - "ok": true, - "finishedAt": 2877, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" - }, - { - "id": "net-66", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 2855, - "status": 200, - "ok": true, - "finishedAt": 2879, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" - }, - { - "id": "net-67", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 2858, - "status": 200, - "ok": true, - "finishedAt": 2880, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" + "finishedAt": 1487, + "contentType": "application/json", + "resourceTypeHint": "tags" + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 8 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "href", + "weight": 72, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 2 + }, + { + "strategy": "text", + "weight": 60, + "matchCount": 2, + "visibleCount": 2, + "elapsedMs": 6 + }, + { + "strategy": "css", + "weight": 35, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 4 + } + ], + "chosenStrategy": "css", + "chosenWeight": 35, + "retryCount": 0 + }, + "before": { + "at": 1449, + "url": "http://127.0.0.1:37213/#/register", + "title": "Conduit", + "domHash": "1f4fa65964895f4c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-68", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 2858, - "status": 200, - "ok": true, - "finishedAt": 2880, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" + "semanticDom": { + "textHash": "ab6aef9fc7cf2d60", + "visualHash": "b600fd6441482f1a", + "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "username", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-69", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 2859, - "status": 200, - "ok": true, - "finishedAt": 2882, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1457, + "url": "http://127.0.0.1:37213/#/register", + "title": "Conduit", + "domHash": "1f4fa65964895f4c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-70", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 2861, - "status": 200, - "ok": true, - "finishedAt": 2883, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" + "semanticDom": { + "textHash": "ab6aef9fc7cf2d60", + "visualHash": "b600fd6441482f1a", + "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "username", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-71", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 2862, - "status": 200, - "ok": true, - "finishedAt": 2883, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2447, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "3c44d4d1ff59317a", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-72", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 2863, - "status": 200, - "ok": true, - "finishedAt": 2884, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" - }, - { - "id": "net-73", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 2864, - "status": 200, - "ok": true, - "finishedAt": 2885, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" - }, - { - "id": "net-74", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 2866, - "status": 200, - "ok": true, - "finishedAt": 2887, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" + "semanticDom": { + "textHash": "f8034dbcac655938", + "visualHash": "f56dba1689c65663", + "text": "conduit Source code Home Login Sign up conduit A place to share your knowledge. Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "trace": "traces/f176b2c13933.zip", + "snapshotIndex": "snapshots/RD-013.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-014", + "action": { + "id": "f488a7413f35", + "pageUrl": "http://127.0.0.1:37213/#/register", + "label": "Home", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", + "tag": "a", + "ordinal": 2, + "role": "link", + "accessibleName": "Home", + "text": "Home", + "href": "http://127.0.0.1:37213/#/", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Home", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Home", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/" + }, + { + "strategy": "text", + "weight": 60, + "value": "Home", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T10:50:17.896Z", + "durationMs": 2423, + "canary": "RD_TEST_315392", + "network": [ { - "id": "net-75", + "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 2872, + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1452, "status": 200, "ok": true, - "finishedAt": 2889, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" + "finishedAt": 1458, + "contentType": "application/json", + "resourceTypeHint": "articles" }, { - "id": "net-76", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 2873, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1452, "status": 200, "ok": true, - "finishedAt": 2889, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" + "contentType": "application/json", + "resourceTypeHint": "tags", + "finishedAt": 1457 + } + ], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1416, + "url": "http://127.0.0.1:37213/#/register", + "title": "Conduit", + "domHash": "1f4fa65964895f4c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-77", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 2873, - "status": 200, - "ok": true, - "finishedAt": 2889, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" + "semanticDom": { + "textHash": "ab6aef9fc7cf2d60", + "visualHash": "b600fd6441482f1a", + "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "username", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-78", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 2874, - "status": 200, - "ok": true, - "finishedAt": 2889, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1424, + "url": "http://127.0.0.1:37213/#/register", + "title": "Conduit", + "domHash": "1f4fa65964895f4c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-79", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 2874, - "status": 200, - "ok": true, - "finishedAt": 2889, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" + "semanticDom": { + "textHash": "ab6aef9fc7cf2d60", + "visualHash": "b600fd6441482f1a", + "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "username", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-80", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 2876, - "status": 200, - "ok": true, - "finishedAt": 2893, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" - }, - { - "id": "net-81", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 2876, - "status": 200, - "ok": true, - "finishedAt": 2894, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" - }, - { - "id": "net-82", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 2877, - "status": 200, - "ok": true, - "finishedAt": 2895, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" - }, - { - "id": "net-83", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 2877, - "status": 200, - "ok": true, - "finishedAt": 2895, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-84", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 2878, - "status": 200, - "ok": true, - "finishedAt": 2896, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" - }, - { - "id": "net-85", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 2878, - "status": 200, - "ok": true, - "finishedAt": 2896, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" - }, - { - "id": "net-86", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 2878, - "status": 200, - "ok": true, - "finishedAt": 2897, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-87", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 2878, - "status": 200, - "ok": true, - "finishedAt": 2898, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" - }, - { - "id": "net-88", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 2879, - "status": 200, - "ok": true, - "finishedAt": 2898, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" - }, - { - "id": "net-89", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 2879, - "status": 200, - "ok": true, - "finishedAt": 2899, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" - }, - { - "id": "net-90", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 2879, - "status": 200, - "ok": true, - "finishedAt": 2900, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" - }, - { - "id": "net-91", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 2882, - "status": 200, - "ok": true, - "finishedAt": 2903, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-92", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 2882, - "status": 200, - "ok": true, - "finishedAt": 2903, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-93", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 2883, - "status": 200, - "ok": true, - "finishedAt": 2903, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-94", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 2883, - "status": 200, - "ok": true, - "finishedAt": 2903, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" - }, - { - "id": "net-95", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 2883, - "status": 200, - "ok": true, - "finishedAt": 2903, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-96", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 2884, - "status": 200, - "ok": true, - "finishedAt": 2904, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" - }, - { - "id": "net-97", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 2885, - "status": 200, - "ok": true, - "finishedAt": 2904, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" - }, - { - "id": "net-98", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 2885, - "status": 200, - "ok": true, - "finishedAt": 2905, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" - }, - { - "id": "net-99", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 2887, - "status": 200, - "ok": true, - "finishedAt": 2906, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" - }, - { - "id": "net-100", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 2889, - "status": 200, - "ok": true, - "finishedAt": 2906, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" - }, - { - "id": "net-101", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 2889, - "status": 200, - "ok": true, - "finishedAt": 2906, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" - }, - { - "id": "net-102", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 2899, - "status": 200, - "ok": true, - "finishedAt": 2908, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" - }, - { - "id": "net-103", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 2900, - "status": 200, - "ok": true, - "finishedAt": 2908, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" - }, - { - "id": "net-104", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 2901, - "status": 200, - "ok": true, - "finishedAt": 2908, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" - }, - { - "id": "net-105", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 2901, - "status": 200, - "ok": true, - "finishedAt": 2908, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" - }, - { - "id": "net-106", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 2901, - "status": 200, - "ok": true, - "finishedAt": 2909, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" - }, - { - "id": "net-107", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 2902, - "status": 200, - "ok": true, - "finishedAt": 2910, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" - }, - { - "id": "net-108", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 2904, - "status": 200, - "ok": true, - "finishedAt": 2911, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" - }, - { - "id": "net-109", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 2905, - "status": 200, - "ok": true, - "finishedAt": 2911, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" - }, - { - "id": "net-110", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 2905, - "status": 200, - "ok": true, - "finishedAt": 2912, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" - }, - { - "id": "net-111", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 2905, - "status": 200, - "ok": true, - "finishedAt": 2912, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" - }, - { - "id": "net-112", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 2910, - "status": 200, - "ok": true, - "finishedAt": 2913, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-113", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 2911, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js", - "finishedAt": 2915 - }, - { - "id": "net-114", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 2912, - "status": 200, - "ok": true, - "finishedAt": 2916, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" - }, - { - "id": "net-115", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 2913, - "status": 200, - "ok": true, - "finishedAt": 2916, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" - }, - { - "id": "net-116", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", - "resourceType": "font", - "startedAt": 3098, - "status": 200, - "ok": true, - "finishedAt": 3145, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" - }, - { - "id": "net-117", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", - "resourceType": "font", - "startedAt": 3098, - "status": 200, - "ok": true, - "finishedAt": 3206, - "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf" - }, - { - "id": "net-118", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", - "resourceType": "font", - "startedAt": 3099, - "status": 200, - "ok": true, - "finishedAt": 3145, - "contentType": "font/woff2", - "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" - }, - { - "id": "net-119", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", - "resourceType": "font", - "startedAt": 3099, - "status": 200, - "ok": true, - "finishedAt": 3144, - "contentType": "font/woff2", - "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" - }, - { - "id": "net-120", - "method": "GET", - "url": "http://127.0.0.1:3000/", - "resourceType": "document", - "startedAt": 3951, - "status": 200, - "ok": true, - "contentType": "text/html", - "resourceTypeHint": "resource", - "finishedAt": 3959 - }, - { - "id": "net-121", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 3957, - "status": 200, - "ok": true, - "finishedAt": 3968, - "contentType": "text/javascript", - "resourceTypeHint": "client" - }, - { - "id": "net-122", - "method": "GET", - "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 3958, - "status": 307, - "ok": false, - "finishedAt": 3961, - "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-123", - "method": "GET", - "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", - "resourceType": "stylesheet", - "startedAt": 3958, - "status": 200, - "ok": true, - "finishedAt": 4008, - "contentType": "text/css", - "resourceTypeHint": "css" - }, - { - "id": "net-124", - "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", - "resourceType": "script", - "startedAt": 3958, - "status": 200, - "ok": true, - "finishedAt": 3964, - "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" - }, - { - "id": "net-125", - "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 3959, - "status": 200, - "ok": true, - "finishedAt": 3969, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" - }, - { - "id": "net-126", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 3961, - "status": 200, - "ok": true, - "finishedAt": 4049, - "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-127", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 3966, - "status": 200, - "ok": true, - "finishedAt": 3975, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" - }, - { - "id": "net-128", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 3966, - "status": 200, - "ok": true, - "finishedAt": 3975, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" - }, - { - "id": "net-129", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 3966, - "status": 200, - "ok": true, - "finishedAt": 3995, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" - }, - { - "id": "net-130", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 3967, - "status": 200, - "ok": true, - "finishedAt": 3994, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" - }, - { - "id": "net-131", - "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 3967, - "status": 200, - "ok": true, - "finishedAt": 3983, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" - }, - { - "id": "net-132", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 3969, - "status": 200, - "ok": true, - "finishedAt": 3984, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" - }, - { - "id": "net-133", - "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 3969, - "status": 200, - "ok": true, - "finishedAt": 3987, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" - }, - { - "id": "net-134", - "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 3969, - "status": 200, - "ok": true, - "finishedAt": 3988, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" - }, - { - "id": "net-135", - "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 3969, - "status": 200, - "ok": true, - "finishedAt": 3988, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" - }, - { - "id": "net-136", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 3970, - "status": 200, - "ok": true, - "finishedAt": 3989, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" - }, - { - "id": "net-137", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 3970, - "status": 200, - "ok": true, - "finishedAt": 3988, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" - }, - { - "id": "net-138", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 3970, - "status": 200, - "ok": true, - "finishedAt": 3992, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" - }, - { - "id": "net-139", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 3971, - "status": 200, - "ok": true, - "finishedAt": 3993, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" - }, - { - "id": "net-140", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 3971, - "status": 200, - "ok": true, - "finishedAt": 3993, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" - }, - { - "id": "net-141", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 3971, - "status": 200, - "ok": true, - "finishedAt": 3994, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" - }, - { - "id": "net-142", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 3971, - "status": 200, - "ok": true, - "finishedAt": 3995, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" - }, - { - "id": "net-143", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 3972, - "status": 200, - "ok": true, - "finishedAt": 3995, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" - }, - { - "id": "net-144", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 3972, - "status": 200, - "ok": true, - "finishedAt": 3999, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" - }, - { - "id": "net-145", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 3972, - "status": 200, - "ok": true, - "finishedAt": 3999, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" - }, - { - "id": "net-146", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 3973, - "status": 200, - "ok": true, - "finishedAt": 4001, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" - }, - { - "id": "net-147", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 3973, - "status": 200, - "ok": true, - "finishedAt": 4001, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" - }, - { - "id": "net-148", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 3974, - "status": 200, - "ok": true, - "finishedAt": 4001, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" - }, - { - "id": "net-149", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 3975, - "status": 200, - "ok": true, - "finishedAt": 4003, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" - }, - { - "id": "net-150", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 3975, - "status": 200, - "ok": true, - "finishedAt": 4002, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" - }, - { - "id": "net-151", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 3990, - "status": 200, - "ok": true, - "finishedAt": 4007, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-152", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 3991, - "status": 200, - "ok": true, - "finishedAt": 4007, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-153", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 3991, - "status": 200, - "ok": true, - "finishedAt": 4007, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" - }, - { - "id": "net-154", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 3994, - "status": 200, - "ok": true, - "finishedAt": 4011, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-155", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 3995, - "status": 200, - "ok": true, - "finishedAt": 4010, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-156", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 3995, - "status": 200, - "ok": true, - "finishedAt": 4015, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" - }, - { - "id": "net-157", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 3996, - "status": 200, - "ok": true, - "finishedAt": 4014, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-158", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 3996, - "status": 200, - "ok": true, - "finishedAt": 4014, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-159", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 3996, - "status": 200, - "ok": true, - "finishedAt": 4016, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-160", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 3997, - "status": 200, - "ok": true, - "finishedAt": 4017, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-161", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 3997, - "status": 200, - "ok": true, - "finishedAt": 4017, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" - }, - { - "id": "net-162", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 3997, - "status": 200, - "ok": true, - "finishedAt": 4017, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-163", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 3998, - "status": 200, - "ok": true, - "finishedAt": 4018, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-164", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 3998, - "status": 200, - "ok": true, - "finishedAt": 4018, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-165", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 3998, - "status": 200, - "ok": true, - "finishedAt": 4019, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" - }, - { - "id": "net-166", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 3999, - "status": 200, - "ok": true, - "finishedAt": 4020, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-167", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 3999, - "status": 200, - "ok": true, - "finishedAt": 4021, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-168", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 4001, - "status": 200, - "ok": true, - "finishedAt": 4020, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-169", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 4001, - "status": 200, - "ok": true, - "finishedAt": 4021, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" - }, - { - "id": "net-170", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 4002, - "status": 200, - "ok": true, - "finishedAt": 4022, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" - }, - { - "id": "net-171", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 4002, - "status": 200, - "ok": true, - "finishedAt": 4022, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-172", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 4002, - "status": 200, - "ok": true, - "finishedAt": 4026, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-173", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 4002, - "status": 200, - "ok": true, - "finishedAt": 4026, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-174", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 4003, - "status": 200, - "ok": true, - "finishedAt": 4029, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-175", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 4003, - "status": 200, - "ok": true, - "finishedAt": 4029, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-176", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 4003, - "status": 200, - "ok": true, - "finishedAt": 4029, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-177", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 4007, - "status": 200, - "ok": true, - "finishedAt": 4030, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" - }, - { - "id": "net-178", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 4007, - "status": 200, - "ok": true, - "finishedAt": 4030, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" - }, - { - "id": "net-179", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 4008, - "status": 200, - "ok": true, - "finishedAt": 4031, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" - }, - { - "id": "net-180", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 4008, - "status": 200, - "ok": true, - "finishedAt": 4030, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" - }, - { - "id": "net-181", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 4016, - "status": 200, - "ok": true, - "finishedAt": 4032, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" - }, - { - "id": "net-182", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 4017, - "status": 200, - "ok": true, - "finishedAt": 4032, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" - }, - { - "id": "net-183", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 4019, - "status": 200, - "ok": true, - "finishedAt": 4034, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" - }, - { - "id": "net-184", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 4019, - "status": 200, - "ok": true, - "finishedAt": 4035, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" - }, - { - "id": "net-185", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 4021, - "status": 200, - "ok": true, - "finishedAt": 4037, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" - }, - { - "id": "net-186", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 4023, - "status": 200, - "ok": true, - "finishedAt": 4038, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" - }, - { - "id": "net-187", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 4024, - "status": 200, - "ok": true, - "finishedAt": 4038, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" - }, - { - "id": "net-188", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 4024, - "status": 200, - "ok": true, - "finishedAt": 4038, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" - }, - { - "id": "net-189", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 4024, - "status": 200, - "ok": true, - "finishedAt": 4039, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" - }, - { - "id": "net-190", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 4027, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" - }, - { - "id": "net-191", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 4027, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" - }, - { - "id": "net-192", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 4027, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" - }, - { - "id": "net-193", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 4028, - "status": 200, - "ok": true, - "finishedAt": 4041, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" - }, - { - "id": "net-194", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 4029, - "status": 200, - "ok": true, - "finishedAt": 4043, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" - }, - { - "id": "net-195", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 4030, - "status": 200, - "ok": true, - "finishedAt": 4045, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" - }, - { - "id": "net-196", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 4030, - "status": 200, - "ok": true, - "finishedAt": 4046, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" - }, - { - "id": "net-197", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 4031, - "status": 200, - "ok": true, - "finishedAt": 4046, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" - }, - { - "id": "net-198", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 4031, - "status": 200, - "ok": true, - "finishedAt": 4046, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" - }, - { - "id": "net-199", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 4032, - "status": 200, - "ok": true, - "finishedAt": 4050, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" - }, - { - "id": "net-200", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 4032, - "status": 200, - "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-201", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 4032, - "status": 200, - "ok": true, - "finishedAt": 4052, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" - }, - { - "id": "net-202", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 4034, - "status": 200, - "ok": true, - "finishedAt": 4053, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" - }, - { - "id": "net-203", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 4034, - "status": 200, - "ok": true, - "finishedAt": 4054, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" - }, - { - "id": "net-204", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 4035, - "status": 200, - "ok": true, - "finishedAt": 4054, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" - }, - { - "id": "net-205", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 4035, - "status": 200, - "ok": true, - "finishedAt": 4055, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" - }, - { - "id": "net-206", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 4035, - "status": 200, - "ok": true, - "finishedAt": 4055, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" - }, - { - "id": "net-207", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 4035, - "status": 200, - "ok": true, - "finishedAt": 4057, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-208", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 4036, - "status": 200, - "ok": true, - "finishedAt": 4057, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-209", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 4036, - "status": 200, - "ok": true, - "finishedAt": 4057, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-210", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 4037, - "status": 200, - "ok": true, - "finishedAt": 4057, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-211", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 4038, - "status": 200, - "ok": true, - "finishedAt": 4057, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" - }, - { - "id": "net-212", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 4039, - "status": 200, - "ok": true, - "finishedAt": 4057, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-213", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 4039, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" - }, - { - "id": "net-214", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 4041, - "status": 200, - "ok": true, - "finishedAt": 4059, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" - }, - { - "id": "net-215", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 4041, - "status": 200, - "ok": true, - "finishedAt": 4060, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" - }, - { - "id": "net-216", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 4041, - "status": 200, - "ok": true, - "finishedAt": 4060, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" - }, - { - "id": "net-217", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 4050, - "status": 200, - "ok": true, - "finishedAt": 4061, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" - }, - { - "id": "net-218", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 4050, - "status": 200, - "ok": true, - "finishedAt": 4061, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" - }, - { - "id": "net-219", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 4051, - "status": 200, - "ok": true, - "finishedAt": 4063, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" - }, - { - "id": "net-220", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 4055, - "status": 200, - "ok": true, - "finishedAt": 4063, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" - }, - { - "id": "net-221", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 4059, - "status": 200, - "ok": true, - "finishedAt": 4068, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" - }, - { - "id": "net-222", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 4060, - "status": 200, - "ok": true, - "finishedAt": 4067, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" - }, - { - "id": "net-223", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 4060, - "status": 200, - "ok": true, - "finishedAt": 4068, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" - }, - { - "id": "net-224", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 4061, - "status": 200, - "ok": true, - "finishedAt": 4068, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" - }, - { - "id": "net-225", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 4061, - "status": 200, - "ok": true, - "finishedAt": 4069, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" - }, - { - "id": "net-226", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 4061, - "status": 200, - "ok": true, - "finishedAt": 4070, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" - }, - { - "id": "net-227", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 4062, - "status": 200, - "ok": true, - "finishedAt": 4070, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" - }, - { - "id": "net-228", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 4063, - "status": 200, - "ok": true, - "finishedAt": 4070, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" - }, - { - "id": "net-229", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 4069, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-230", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 4070, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js" - }, - { - "id": "net-231", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 4071, - "status": 200, - "ok": true, - "finishedAt": 4074, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" - }, - { - "id": "net-232", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 4071, - "status": 200, - "ok": true, - "finishedAt": 4075, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" - }, - { - "id": "net-233", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", - "resourceType": "font", - "startedAt": 4088, - "status": 200, - "ok": true, - "finishedAt": 4135, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" - }, - { - "id": "net-234", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", - "resourceType": "font", - "startedAt": 4089, - "status": 200, - "ok": true, - "finishedAt": 4195, - "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf" - }, - { - "id": "net-235", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", - "resourceType": "font", - "startedAt": 4090, - "status": 200, - "ok": true, - "finishedAt": 4135, - "contentType": "font/woff2", - "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" - }, - { - "id": "net-236", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", - "resourceType": "font", - "startedAt": 4090, - "status": 200, - "ok": true, - "finishedAt": 4135, - "contentType": "font/woff2", - "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" - } - ], - "console": [ - { - "type": "error", - "text": "Failed to load resource: the server responded with a status of 404 (Not Found)", - "at": 1737 - } - ], - "pageErrors": [], - "uiClaims": [], - "filledFields": [ - { - "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(1) > input", - "name": "email", - "type": "email", - "value": "rd-rd_test_1a4c53_1@example.test", - "redacted": false - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(2) > input", - "name": "password", - "type": "password", - "value": "[REDACTED]", - "redacted": true - } - ], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "text", - "weight": 60, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 2 - }, - { - "strategy": "css", - "weight": 35, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 2 - } - ], - "chosenStrategy": "css", - "chosenWeight": 35, - "retryCount": 0 - }, - "before": { - "at": 1483, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - }, - "sourceSnapshots": [ - { - "adapter": "postgresql", - "resource": "articles", - "schemaHash": "d718b75b5f43908b", - "rows": [], - "truncated": false - }, - { - "adapter": "postgresql", - "resource": "users", - "schemaHash": "4dc457684d4d0982", - "rows": [], - "truncated": false - }, - { - "adapter": "supabase", - "resource": "users", - "schemaHash": "17fd9bf966bbce4c", - "rows": [], - "truncated": false - } - ] - }, - "beforeAction": { - "at": 1507, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "932c982eeada2c97", - "canaryPresent": true, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "ba10135e838abbd2", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "targetDisabledAfter": false, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2741, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "5e7c4e2431c36a4d", - "canaryPresent": true, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "df9ded375a63f323", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Email not found sign in first Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "ba10135e838abbd2", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - }, - "sourceSnapshots": [ - { - "adapter": "postgresql", - "resource": "articles", - "schemaHash": "d718b75b5f43908b", - "rows": [], - "truncated": false - }, - { - "adapter": "postgresql", - "resource": "users", - "schemaHash": "4dc457684d4d0982", - "rows": [], - "truncated": false - }, - { - "adapter": "supabase", - "resource": "users", - "schemaHash": "17fd9bf966bbce4c", - "rows": [], - "truncated": false - } - ] - }, - "screenshot": "screenshots/fd4121f2d18b-after.png", - "webSockets": [ - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 3091, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [], - "closedAt": 3955 - }, - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 4060, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [] - } - ], - "afterRefresh": { - "at": 3920, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "refreshScreenshot": "screenshots/fd4121f2d18b-refresh.png", - "afterHardRefresh": { - "at": 4901, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "afterNewTab": { - "at": 5941, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "afterNewContext": { - "at": 7251, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "persistenceScope": "MEMORY_ONLY", - "sourceDiffs": [ - { - "adapter": "postgresql", - "resource": "articles", - "added": [], - "removed": [], - "changed": [], - "softDeleted": [], - "truncated": false - }, - { - "adapter": "postgresql", - "resource": "users", - "added": [], - "removed": [], - "changed": [], - "softDeleted": [], - "truncated": false - }, - { - "adapter": "supabase", - "resource": "users", - "added": [], - "removed": [], - "changed": [], - "softDeleted": [], - "truncated": false - } - ], - "sourceSnapshotErrors": [], - "snapshotIndex": "snapshots/RD-011.index.json" - }, - "verdict": "UNCERTAIN", - "evidenceLevel": 2, - "reason": "The server rejected generated login credentials; a disposable authenticated test account is required to verify this action.", - "detectorMatches": [] - }, - { - "id": "RD-012", - "action": { - "id": "705fc8947a53", - "pageUrl": "http://127.0.0.1:3000/#/login", - "label": "conduit", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > footer > div > a", - "tag": "a", - "ordinal": 7, - "role": "link", - "accessibleName": "conduit", - "text": "conduit", - "href": "http://127.0.0.1:3000/#/", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "conduit", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "conduit", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/" - }, - { - "strategy": "text", - "weight": 60, - "value": "conduit", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > footer > div > a" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:31:22.525Z", - "durationMs": 2480, - "canary": "RD_TEST_6A3B94", - "network": [ - { - "id": "net-1", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1505, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "articles", - "finishedAt": 1517 - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1505, - "status": 200, - "ok": true, - "finishedAt": 1518, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1506, - "status": 200, - "ok": true, - "finishedAt": 1519, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1506, - "status": 200, - "ok": true, - "finishedAt": 1519, - "contentType": "application/json", - "resourceTypeHint": "tags" - } - ], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 5 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 3 - }, - { - "strategy": "href", - "weight": 72, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "text", - "weight": 60, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 2 - }, - { - "strategy": "css", - "weight": 35, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 2 - } - ], - "chosenStrategy": "css", - "chosenWeight": 35, - "retryCount": 0 - }, - "before": { - "at": 1463, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1470, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2477, - "url": "http://127.0.0.1:3000/#/", - "title": "Conduit", - "domHash": "3c44d4d1ff59317a", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "f8034dbcac655938", - "visualHash": "f56dba1689c65663", - "text": "conduit Source code Home Login Sign up conduit A place to share your knowledge. Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "snapshotIndex": "snapshots/RD-012.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 2, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-013", - "action": { - "id": "4c3238860432", - "pageUrl": "http://127.0.0.1:3000/#/register", - "label": "conduit", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > a", - "tag": "a", - "ordinal": 0, - "role": "link", - "accessibleName": "conduit", - "text": "conduit", - "href": "http://127.0.0.1:3000/#/", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "conduit", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "conduit", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/" - }, - { - "strategy": "text", - "weight": 60, - "value": "conduit", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > header > nav > div > a" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:31:25.007Z", - "durationMs": 2501, - "canary": "RD_TEST_66BC02", - "network": [ - { - "id": "net-1", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1521, - "status": 200, - "ok": true, - "finishedAt": 1537, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1522, - "status": 200, - "ok": true, - "finishedAt": 1536, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1523, - "status": 200, - "ok": true, - "finishedAt": 1537, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1523, - "status": 200, - "ok": true, - "finishedAt": 1536, - "contentType": "application/json", - "resourceTypeHint": "tags" - } - ], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 5 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 3 - }, - { - "strategy": "href", - "weight": 72, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "text", - "weight": 60, - "matchCount": 2, - "visibleCount": 2, - "elapsedMs": 3 - }, - { - "strategy": "css", - "weight": 35, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 2 - } - ], - "chosenStrategy": "css", - "chosenWeight": 35, - "retryCount": 0 - }, - "before": { - "at": 1490, - "url": "http://127.0.0.1:3000/#/register", - "title": "Conduit", - "domHash": "1f4fa65964895f4c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "ab6aef9fc7cf2d60", - "visualHash": "b600fd6441482f1a", - "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "username", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1497, - "url": "http://127.0.0.1:3000/#/register", - "title": "Conduit", - "domHash": "1f4fa65964895f4c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "ab6aef9fc7cf2d60", - "visualHash": "b600fd6441482f1a", - "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "username", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2498, - "url": "http://127.0.0.1:3000/#/", - "title": "Conduit", - "domHash": "3c44d4d1ff59317a", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "f8034dbcac655938", - "visualHash": "f56dba1689c65663", - "text": "conduit Source code Home Login Sign up conduit A place to share your knowledge. Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "snapshotIndex": "snapshots/RD-013.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 2, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-014", - "action": { - "id": "e98ea4d042a5", - "pageUrl": "http://127.0.0.1:3000/#/register", - "label": "Home", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a", - "tag": "a", - "ordinal": 2, - "role": "link", - "accessibleName": "Home", - "text": "Home", - "href": "http://127.0.0.1:3000/#/", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "Home", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "Home", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/" - }, - { - "strategy": "text", - "weight": 60, - "value": "Home", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(1) > a" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:31:27.510Z", - "durationMs": 2492, - "canary": "RD_TEST_D27D78", - "network": [ - { - "id": "net-1", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1503, - "status": 200, - "ok": true, - "finishedAt": 1515, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1504, - "status": 200, - "ok": true, - "finishedAt": 1515, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1504, - "status": 200, - "ok": true, - "finishedAt": 1516, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1504, - "status": 200, - "ok": true, - "finishedAt": 1515, - "contentType": "application/json", - "resourceTypeHint": "tags" - } - ], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 1 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 3 - } - ], - "chosenStrategy": "role", - "chosenWeight": 82, - "retryCount": 0 - }, - "before": { - "at": 1471, - "url": "http://127.0.0.1:3000/#/register", - "title": "Conduit", - "domHash": "1f4fa65964895f4c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "ab6aef9fc7cf2d60", - "visualHash": "b600fd6441482f1a", - "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "username", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1477, - "url": "http://127.0.0.1:3000/#/register", - "title": "Conduit", - "domHash": "1f4fa65964895f4c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "ab6aef9fc7cf2d60", - "visualHash": "b600fd6441482f1a", - "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "username", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2489, - "url": "http://127.0.0.1:3000/#/", - "title": "Conduit", - "domHash": "3c44d4d1ff59317a", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "f8034dbcac655938", - "visualHash": "f56dba1689c65663", - "text": "conduit Source code Home Login Sign up conduit A place to share your knowledge. Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "snapshotIndex": "snapshots/RD-014.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 2, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-015", - "action": { - "id": "34267b8ce9b3", - "pageUrl": "http://127.0.0.1:3000/#/register", - "label": "Login", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", - "tag": "a", - "ordinal": 3, - "role": "link", - "accessibleName": "Login", - "text": "Login", - "href": "http://127.0.0.1:3000/#/login", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "Login", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "Login", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/login" - }, - { - "strategy": "text", - "weight": 60, - "value": "Login", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:31:30.004Z", - "durationMs": 2439, - "canary": "RD_TEST_740D29", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 0, - "visibleCount": 0, - "elapsedMs": 2 - }, - { - "strategy": "role", - "weight": 82, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 2 - } - ], - "chosenStrategy": "role", - "chosenWeight": 82, - "retryCount": 0 - }, - "before": { - "at": 1451, - "url": "http://127.0.0.1:3000/#/register", - "title": "Conduit", - "domHash": "1f4fa65964895f4c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "ab6aef9fc7cf2d60", - "visualHash": "b600fd6441482f1a", - "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "username", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1459, - "url": "http://127.0.0.1:3000/#/register", - "title": "Conduit", - "domHash": "1f4fa65964895f4c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "ab6aef9fc7cf2d60", - "visualHash": "b600fd6441482f1a", - "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "username", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2437, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "snapshotIndex": "snapshots/RD-015.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 1, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-016", - "action": { - "id": "b9816023669f", - "pageUrl": "http://127.0.0.1:3000/#/register", - "label": "Sign in to your account", - "activation": "click", - "kind": "navigation", - "intent": "navigate", - "risk": "safe", - "fingerprint": { - "selector": "body > div > main > div > div > div > div > p > a", - "tag": "a", - "ordinal": 5, - "role": "link", - "accessibleName": "Sign in to your account", - "text": "Sign in to your account", - "href": "http://127.0.0.1:3000/#/login", - "candidates": [ - { - "strategy": "role", - "weight": 92, - "role": "link", - "name": "Sign in to your account", - "exact": true - }, - { - "strategy": "role", - "weight": 82, - "role": "link", - "name": "Sign in to your account", - "exact": false - }, - { - "strategy": "href", - "weight": 72, - "value": "http://127.0.0.1:3000/#/login" - }, - { - "strategy": "text", - "weight": 60, - "value": "Sign in to your account", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div > div > div > p > a" - } - ] - }, - "fields": [] - }, - "evidence": { - "startedAt": "2026-07-26T08:31:32.446Z", - "durationMs": 2448, - "canary": "RD_TEST_B67FEA", - "network": [], - "console": [], - "pageErrors": [], - "uiClaims": [], - "filledFields": [], - "dialogs": [], - "downloads": [], - "downloadEvidence": [], - "uploads": [], - "popupUrls": [], - "locatorResolution": { - "attempts": [ - { - "strategy": "role", - "weight": 92, - "matchCount": 1, - "visibleCount": 1, - "elapsedMs": 4 - } - ], - "chosenStrategy": "role", - "chosenWeight": 92, - "retryCount": 0 - }, - "before": { - "at": 1446, - "url": "http://127.0.0.1:3000/#/register", - "title": "Conduit", - "domHash": "1f4fa65964895f4c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "ab6aef9fc7cf2d60", - "visualHash": "b600fd6441482f1a", - "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "username", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "beforeAction": { - "at": 1454, - "url": "http://127.0.0.1:3000/#/register", - "title": "Conduit", - "domHash": "1f4fa65964895f4c", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "ab6aef9fc7cf2d60", - "visualHash": "b600fd6441482f1a", - "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "text", - "name": "username", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "networkSettled": true, - "targetBusyAfter": false, - "after": { - "at": 2445, - "url": "http://127.0.0.1:3000/#/login", - "title": "Conduit", - "domHash": "c659be8900b0e706", - "canaryPresent": false, - "bodyCanaryPresent": false, - "temporaryBlobUrls": 0, - "auth": { - "artifacts": 0, - "expiredArtifacts": 0, - "privateContent": false, - "adminContent": false, - "accessDenied": false - }, - "semanticDom": { - "textHash": "9c42030bf33d5537", - "visualHash": "5b9081b1fb63beac", - "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", - "controls": [ - { - "tag": "input", - "type": "email", - "name": "email", - "valueHash": "e3b0c44298fc1c14", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "input", - "type": "password", - "name": "password", - "valueHash": "e54b74eb9192b480", - "checked": false, - "disabled": false, - "visible": true - }, - { - "tag": "button", - "type": "submit", - "valueHash": "e3b0c44298fc1c14", - "disabled": false, - "visible": true - } - ] - }, - "busyControls": 0, - "disabledControls": 0, - "storage": { - "local": [], - "session": [], - "cookieNames": [], - "cookies": [], - "indexedDb": [] - } - }, - "snapshotIndex": "snapshots/RD-016.index.json" - }, - "verdict": "VERIFIED", - "evidenceLevel": 1, - "reason": "The action produced an observable effect.", - "detectorMatches": [] - }, - { - "id": "RD-017", - "action": { - "id": "cf5c3df21bab", - "pageUrl": "http://127.0.0.1:3000/#/register", - "label": "Sign up", - "activation": "submit", - "kind": "mutation", - "intent": "submit", - "risk": "safe", - "fingerprint": { - "selector": "body > div > main > div > div > div > div > form", - "tag": "form", - "ordinal": 6, - "accessibleName": "Sign up", - "text": "Sign up", - "candidates": [ - { - "strategy": "text", - "weight": 60, - "value": "Sign up", - "exact": true - }, - { - "strategy": "css", - "weight": 35, - "selector": "body > div > main > div > div > div > div > form" - } - ] - }, - "fields": [ - { - "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(1) > input", - "tag": "input", - "type": "text", - "required": true, - "disabled": false, - "name": "username", - "placeholder": "Your Name" - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(2) > input", - "tag": "input", - "type": "email", - "required": true, - "disabled": false, - "name": "email", - "placeholder": "Email" - }, - { - "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(3) > input", - "tag": "input", - "type": "password", - "required": true, - "disabled": false, - "name": "password", - "placeholder": "Password" - } - ] - }, - "evidence": { - "startedAt": "2026-07-26T08:31:35.052Z", - "durationMs": 7174, - "canary": "RD_TEST_3D72CE", - "network": [ - { - "id": "net-1", - "method": "POST", - "url": "http://127.0.0.1:3000/api/users", - "resourceType": "xhr", - "startedAt": 1541, - "status": 201, - "ok": true, - "finishedAt": 1618, - "contentType": "application/json", - "resourceTypeHint": "users" - }, - { - "id": "net-2", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 1622, - "status": 200, - "ok": true, - "finishedAt": 1628, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 1627, - "status": 200, - "ok": true, - "finishedAt": 1635, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1632, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "feed", - "finishedAt": 1647 - }, - { - "id": "net-5", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1633, - "status": 200, - "ok": true, - "finishedAt": 1643, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-6", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1634, - "status": 200, - "ok": true, - "finishedAt": 1647, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-7", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1634, - "status": 200, - "ok": true, - "finishedAt": 1643, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-8", - "method": "GET", - "url": "http://127.0.0.1:3000/", - "resourceType": "document", - "startedAt": 2637, - "status": 200, - "ok": true, - "contentType": "text/html", - "resourceTypeHint": "resource", - "finishedAt": 2645 - }, - { - "id": "net-9", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 2644, - "status": 200, - "ok": true, - "finishedAt": 2653, - "contentType": "text/javascript", - "resourceTypeHint": "client" - }, - { - "id": "net-10", - "method": "GET", - "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 2644, - "status": 307, - "ok": false, - "finishedAt": 2647, - "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-11", - "method": "GET", - "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", - "resourceType": "stylesheet", - "startedAt": 2645, - "status": 200, - "ok": true, - "finishedAt": 2700, - "contentType": "text/css", - "resourceTypeHint": "css" - }, - { - "id": "net-12", - "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", - "resourceType": "script", - "startedAt": 2645, - "status": 200, - "ok": true, - "finishedAt": 2651, - "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" - }, - { - "id": "net-13", - "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 2645, - "status": 200, - "ok": true, - "finishedAt": 2659, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" - }, - { - "id": "net-14", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 2647, - "status": 200, - "ok": true, - "finishedAt": 2924, - "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-15", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 2654, - "status": 200, - "ok": true, - "finishedAt": 2663, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" - }, - { - "id": "net-16", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 2656, - "status": 200, - "ok": true, - "finishedAt": 2669, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" - }, - { - "id": "net-17", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 2656, - "status": 200, - "ok": true, - "finishedAt": 2693, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" - }, - { - "id": "net-18", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 2656, - "status": 200, - "ok": true, - "finishedAt": 2698, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" - }, - { - "id": "net-19", - "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 2657, - "status": 200, - "ok": true, - "finishedAt": 2682, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" - }, - { - "id": "net-20", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 2657, - "status": 200, - "ok": true, - "finishedAt": 2683, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" - }, - { - "id": "net-21", - "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 2657, - "status": 200, - "ok": true, - "finishedAt": 2682, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" - }, - { - "id": "net-22", - "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 2657, - "status": 200, - "ok": true, - "finishedAt": 2681, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" - }, - { - "id": "net-23", - "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 2658, - "status": 200, - "ok": true, - "finishedAt": 2684, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" - }, - { - "id": "net-24", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 2658, - "status": 200, - "ok": true, - "finishedAt": 2686, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" - }, - { - "id": "net-25", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 2658, - "status": 200, - "ok": true, - "finishedAt": 2684, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" - }, - { - "id": "net-26", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 2658, - "status": 200, - "ok": true, - "finishedAt": 2685, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" - }, - { - "id": "net-27", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 2659, - "status": 200, - "ok": true, - "finishedAt": 2686, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" - }, - { - "id": "net-28", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 2659, - "status": 200, - "ok": true, - "finishedAt": 2685, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" - }, - { - "id": "net-29", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 2659, - "status": 200, - "ok": true, - "finishedAt": 2686, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" - }, - { - "id": "net-30", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 2660, - "status": 200, - "ok": true, - "finishedAt": 2688, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" - }, - { - "id": "net-31", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 2660, - "status": 200, - "ok": true, - "finishedAt": 2694, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" - }, - { - "id": "net-32", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 2660, - "status": 200, - "ok": true, - "finishedAt": 2697, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" - }, - { - "id": "net-33", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 2660, - "status": 200, - "ok": true, - "finishedAt": 2697, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" - }, - { - "id": "net-34", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 2661, - "status": 200, - "ok": true, - "finishedAt": 2700, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" - }, - { - "id": "net-35", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 2661, - "status": 200, - "ok": true, - "finishedAt": 2700, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" - }, - { - "id": "net-36", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 2662, - "status": 200, - "ok": true, - "finishedAt": 2700, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" - }, - { - "id": "net-37", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 2663, - "status": 200, - "ok": true, - "finishedAt": 2701, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" - }, - { - "id": "net-38", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 2664, - "status": 200, - "ok": true, - "finishedAt": 2700, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" - }, - { - "id": "net-39", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 2687, - "status": 200, - "ok": true, - "finishedAt": 2706, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-40", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 2689, - "status": 200, - "ok": true, - "finishedAt": 2710, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-41", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 2689, - "status": 200, - "ok": true, - "finishedAt": 2710, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" - }, - { - "id": "net-42", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 2690, - "status": 200, - "ok": true, - "finishedAt": 2711, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-43", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 2690, - "status": 200, - "ok": true, - "finishedAt": 2712, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-44", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 2691, - "status": 200, - "ok": true, - "finishedAt": 2712, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-45", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 2691, - "status": 200, - "ok": true, - "finishedAt": 2713, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-46", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 2691, - "status": 200, - "ok": true, - "finishedAt": 2716, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-47", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 2692, - "status": 200, - "ok": true, - "finishedAt": 2716, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-48", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 2692, - "status": 200, - "ok": true, - "finishedAt": 2716, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" - }, - { - "id": "net-49", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 2692, - "status": 200, - "ok": true, - "finishedAt": 2717, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" - }, - { - "id": "net-50", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 2693, - "status": 200, - "ok": true, - "finishedAt": 2718, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-51", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 2693, - "status": 200, - "ok": true, - "finishedAt": 2723, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-52", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 2697, - "status": 200, - "ok": true, - "finishedAt": 2730, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-53", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 2697, - "status": 200, - "ok": true, - "finishedAt": 2735, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" - }, - { - "id": "net-54", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 2698, - "status": 200, - "ok": true, - "finishedAt": 2730, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-55", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 2698, - "status": 200, - "ok": true, - "finishedAt": 2731, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-56", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 2699, - "status": 200, - "ok": true, - "finishedAt": 2731, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-57", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 2699, - "status": 200, - "ok": true, - "finishedAt": 2732, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" - }, - { - "id": "net-58", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 2699, - "status": 200, - "ok": true, - "finishedAt": 2732, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-59", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 2699, - "status": 200, - "ok": true, - "finishedAt": 2734, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-60", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 2701, - "status": 200, - "ok": true, - "finishedAt": 2735, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" - }, - { - "id": "net-61", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 2701, - "status": 200, - "ok": true, - "finishedAt": 2734, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-62", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 2701, - "status": 200, - "ok": true, - "finishedAt": 2734, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-63", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 2701, - "status": 200, - "ok": true, - "finishedAt": 2734, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-64", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 2702, - "status": 200, - "ok": true, - "finishedAt": 2734, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-65", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 2706, - "status": 200, - "ok": true, - "finishedAt": 2735, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" - }, - { - "id": "net-66", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 2718, - "status": 200, - "ok": true, - "finishedAt": 2738, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" - }, - { - "id": "net-67", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 2720, - "status": 200, - "ok": true, - "finishedAt": 2740, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" - }, - { - "id": "net-68", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 2721, - "status": 200, - "ok": true, - "finishedAt": 2740, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" - }, - { - "id": "net-69", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 2722, - "status": 200, - "ok": true, - "finishedAt": 2740, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" - }, - { - "id": "net-70", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 2722, - "status": 200, - "ok": true, - "finishedAt": 2740, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" - }, - { - "id": "net-71", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 2726, - "status": 200, - "ok": true, - "finishedAt": 2743, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" - }, - { - "id": "net-72", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 2726, - "status": 200, - "ok": true, - "finishedAt": 2743, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" - }, - { - "id": "net-73", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 2729, - "status": 200, - "ok": true, - "finishedAt": 2745, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" - }, - { - "id": "net-74", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 2729, - "status": 200, - "ok": true, - "finishedAt": 2746, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" - }, - { - "id": "net-75", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 2730, - "status": 200, - "ok": true, - "finishedAt": 2747, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" - }, - { - "id": "net-76", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 2731, - "status": 200, - "ok": true, - "finishedAt": 2747, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" - }, - { - "id": "net-77", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 2731, - "status": 200, - "ok": true, - "finishedAt": 2748, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" - }, - { - "id": "net-78", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 2732, - "status": 200, - "ok": true, - "finishedAt": 2748, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" - }, - { - "id": "net-79", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 2732, - "status": 200, - "ok": true, - "finishedAt": 2751, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" - }, - { - "id": "net-80", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 2733, - "status": 200, - "ok": true, - "finishedAt": 2751, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" - }, - { - "id": "net-81", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 2733, - "status": 200, - "ok": true, - "finishedAt": 2752, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" - }, - { - "id": "net-82", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 2734, - "status": 200, - "ok": true, - "finishedAt": 2753, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" - }, - { - "id": "net-83", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 2734, - "status": 200, - "ok": true, - "finishedAt": 2753, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" - }, - { - "id": "net-84", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 2735, - "status": 200, - "ok": true, - "finishedAt": 2756, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" - }, - { - "id": "net-85", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 2735, - "status": 200, - "ok": true, - "finishedAt": 2757, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" - }, - { - "id": "net-86", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 2735, - "status": 200, - "ok": true, - "finishedAt": 2757, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" - }, - { - "id": "net-87", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 2735, - "status": 200, - "ok": true, - "finishedAt": 2757, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" - }, - { - "id": "net-88", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 2736, - "status": 200, - "ok": true, - "finishedAt": 2759, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-89", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 2738, - "status": 200, - "ok": true, - "finishedAt": 2759, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" - }, - { - "id": "net-90", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 2740, - "status": 200, - "ok": true, - "finishedAt": 2759, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" - }, - { - "id": "net-91", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 2740, - "status": 200, - "ok": true, - "finishedAt": 2759, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-92", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 2741, - "status": 200, - "ok": true, - "finishedAt": 2761, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" - }, - { - "id": "net-93", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 2741, - "status": 200, - "ok": true, - "finishedAt": 2761, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" - }, - { - "id": "net-94", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 2741, - "status": 200, - "ok": true, - "finishedAt": 2763, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" - }, - { - "id": "net-95", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 2742, - "status": 200, - "ok": true, - "finishedAt": 2764, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" - }, - { - "id": "net-96", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 2743, - "status": 200, - "ok": true, - "finishedAt": 2763, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" - }, - { - "id": "net-97", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 2744, - "status": 200, - "ok": true, - "finishedAt": 2764, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-98", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 2750, - "status": 200, - "ok": true, - "finishedAt": 2764, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" - }, - { - "id": "net-99", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 2752, - "status": 200, - "ok": true, - "finishedAt": 2764, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-100", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 2754, - "status": 200, - "ok": true, - "finishedAt": 2766, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" - }, - { - "id": "net-101", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 2755, - "status": 200, - "ok": true, - "finishedAt": 2766, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" - }, - { - "id": "net-102", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 2755, - "status": 200, - "ok": true, - "finishedAt": 2766, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" - }, - { - "id": "net-103", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 2758, - "status": 200, - "ok": true, - "finishedAt": 2770, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-104", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 2759, - "status": 200, - "ok": true, - "finishedAt": 2771, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-105", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 2759, - "status": 200, - "ok": true, - "finishedAt": 2771, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" - }, - { - "id": "net-106", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", - "resourceType": "script", - "startedAt": 2760, - "status": 200, - "ok": true, - "finishedAt": 2772, - "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" - }, - { - "id": "net-107", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 2760, - "status": 200, - "ok": true, - "finishedAt": 2773, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" - }, - { - "id": "net-108", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 2761, - "status": 200, - "ok": true, - "finishedAt": 2772, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" - }, - { - "id": "net-109", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 2761, - "status": 200, - "ok": true, - "finishedAt": 2774, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" - }, - { - "id": "net-110", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 2761, - "status": 200, - "ok": true, - "finishedAt": 2774, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" - }, - { - "id": "net-111", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 2761, - "status": 200, - "ok": true, - "finishedAt": 2774, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" - }, - { - "id": "net-112", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 2763, - "status": 200, - "ok": true, - "finishedAt": 2775, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" - }, - { - "id": "net-113", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 2764, - "status": 200, - "ok": true, - "finishedAt": 2775, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" - }, - { - "id": "net-114", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 2764, - "status": 200, - "ok": true, - "finishedAt": 2775, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" - }, - { - "id": "net-115", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 2773, - "status": 200, - "ok": true, - "finishedAt": 2778, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" - }, - { - "id": "net-116", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 2774, - "status": 200, - "ok": true, - "finishedAt": 2779, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" - }, - { - "id": "net-117", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 2775, - "status": 200, - "ok": true, - "finishedAt": 2780, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-118", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", - "resourceType": "script", - "startedAt": 2776, - "status": 200, - "ok": true, - "finishedAt": 2781, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" - }, - { - "id": "net-119", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 2778, - "status": 200, - "ok": true, - "finishedAt": 2781, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js" - }, - { - "id": "net-120", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 2779, - "status": 200, - "ok": true, - "finishedAt": 2782, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" - }, - { - "id": "net-121", - "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 2938, - "status": 200, - "ok": true, - "finishedAt": 2942, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" - }, - { - "id": "net-122", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", - "resourceType": "font", - "startedAt": 2941, - "status": 200, - "ok": true, - "finishedAt": 2989, - "contentType": "font/woff2", - "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" - }, - { - "id": "net-123", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", - "resourceType": "font", - "startedAt": 2941, - "status": 200, - "ok": true, - "finishedAt": 3060, - "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf" - }, - { - "id": "net-124", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", - "resourceType": "font", - "startedAt": 2942, - "status": 200, - "ok": true, - "finishedAt": 2987, - "contentType": "font/woff2", - "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" - }, - { - "id": "net-125", - "method": "GET", - "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", - "resourceType": "font", - "startedAt": 2942, - "status": 200, - "ok": true, - "finishedAt": 2989, - "contentType": "font/woff2", - "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" - }, - { - "id": "net-126", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 2945, - "status": 200, - "ok": true, - "contentType": "application/json", - "resourceTypeHint": "feed", - "finishedAt": 2956 - }, - { - "id": "net-127", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 2946, - "status": 200, - "ok": true, - "finishedAt": 2954, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-128", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 2947, - "status": 200, - "ok": true, - "finishedAt": 2957, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-129", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 2947, - "status": 200, - "ok": true, - "finishedAt": 2960, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-130", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 2947, - "status": 200, - "ok": true, - "finishedAt": 2960, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-131", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 2948, - "status": 200, - "ok": true, - "finishedAt": 2959, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-132", - "method": "GET", - "url": "http://127.0.0.1:3000/", - "resourceType": "document", - "startedAt": 3804, - "status": 200, - "ok": true, - "contentType": "text/html", - "resourceTypeHint": "resource", - "finishedAt": 3814 - }, - { - "id": "net-133", - "method": "GET", - "url": "http://127.0.0.1:3000/@vite/client", - "resourceType": "script", - "startedAt": 3813, - "status": 200, - "ok": true, - "finishedAt": 3822, - "contentType": "text/javascript", - "resourceTypeHint": "client" - }, - { - "id": "net-134", - "method": "GET", - "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 3813, - "status": 307, - "ok": false, - "finishedAt": 3817, - "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-135", - "method": "GET", - "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", - "resourceType": "stylesheet", - "startedAt": 3814, - "status": 200, - "ok": true, - "finishedAt": 3869, - "contentType": "text/css", - "resourceTypeHint": "css" - }, - { - "id": "net-136", - "method": "GET", - "url": "http://127.0.0.1:3000/src/main.jsx", - "resourceType": "script", - "startedAt": 3814, - "status": 200, - "ok": true, - "finishedAt": 3820, - "contentType": "text/javascript", - "resourceTypeHint": "main.jsx" - }, - { - "id": "net-137", - "method": "GET", - "url": "http://127.0.0.1:3000/@react-refresh", - "resourceType": "script", - "startedAt": 3815, - "status": 200, - "ok": true, - "finishedAt": 3830, - "contentType": "text/javascript", - "resourceTypeHint": "@react-refresh" - }, - { - "id": "net-138", - "method": "GET", - "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", - "resourceType": "stylesheet", - "startedAt": 3817, - "status": 200, - "ok": true, - "finishedAt": 3904, - "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css" - }, - { - "id": "net-139", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=96de0870", - "resourceType": "script", - "startedAt": 3822, - "status": 200, - "ok": true, - "finishedAt": 3833, - "contentType": "text/javascript", - "resourceTypeHint": "react_jsx-dev-runtime.js" - }, - { - "id": "net-140", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react.js?v=96de0870", - "resourceType": "script", - "startedAt": 3823, - "status": 200, - "ok": true, - "finishedAt": 3834, - "contentType": "text/javascript", - "resourceTypeHint": "react.js" - }, - { - "id": "net-141", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-dom_client.js?v=96de0870", - "resourceType": "script", - "startedAt": 3824, - "status": 200, - "ok": true, - "finishedAt": 3854, - "contentType": "text/javascript", - "resourceTypeHint": "react-dom_client.js" - }, - { - "id": "net-142", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-router-dom.js?v=96de0870", - "resourceType": "script", - "startedAt": 3824, - "status": 200, - "ok": true, - "finishedAt": 3850, - "contentType": "text/javascript", - "resourceTypeHint": "react-router-dom.js" - }, - { - "id": "net-143", - "method": "GET", - "url": "http://127.0.0.1:3000/src/App.jsx", - "resourceType": "script", - "startedAt": 3826, - "status": 200, - "ok": true, - "finishedAt": 3842, - "contentType": "text/javascript", - "resourceTypeHint": "App.jsx" - }, - { - "id": "net-144", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/AuthContext.jsx", - "resourceType": "script", - "startedAt": 3827, - "status": 200, - "ok": true, - "finishedAt": 3842, - "contentType": "text/javascript", - "resourceTypeHint": "AuthContext.jsx" - }, - { - "id": "net-145", - "method": "GET", - "url": "http://127.0.0.1:3000/src/styles.css", - "resourceType": "script", - "startedAt": 3827, - "status": 200, - "ok": true, - "finishedAt": 3844, - "contentType": "text/javascript", - "resourceTypeHint": "styles.css" - }, - { - "id": "net-146", - "method": "GET", - "url": "http://127.0.0.1:3000/src/index.css", - "resourceType": "script", - "startedAt": 3827, - "status": 200, - "ok": true, - "finishedAt": 3843, - "contentType": "text/javascript", - "resourceTypeHint": "index.css" - }, - { - "id": "net-147", - "method": "GET", - "url": "http://127.0.0.1:3000/src/reportWebVitals.js", - "resourceType": "script", - "startedAt": 3828, - "status": 200, - "ok": true, - "finishedAt": 3843, - "contentType": "text/javascript", - "resourceTypeHint": "reportWebVitals.js" - }, - { - "id": "net-148", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/Article.jsx", - "resourceType": "script", - "startedAt": 3828, - "status": 200, - "ok": true, - "finishedAt": 3844, - "contentType": "text/javascript", - "resourceTypeHint": "Article.jsx" - }, - { - "id": "net-149", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Article/CommentsSection.jsx", - "resourceType": "script", - "startedAt": 3829, - "status": 200, - "ok": true, - "finishedAt": 3853, - "contentType": "text/javascript", - "resourceTypeHint": "CommentsSection.jsx" - }, - { - "id": "net-150", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/ArticleEditor.jsx", - "resourceType": "script", - "startedAt": 3829, - "status": 200, - "ok": true, - "finishedAt": 3851, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditor.jsx" - }, - { - "id": "net-151", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Home.jsx", - "resourceType": "script", - "startedAt": 3829, - "status": 200, - "ok": true, - "finishedAt": 3855, - "contentType": "text/javascript", - "resourceTypeHint": "Home.jsx" - }, - { - "id": "net-152", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/HomeArticles.jsx", - "resourceType": "script", - "startedAt": 3829, - "status": 200, - "ok": true, - "finishedAt": 3856, - "contentType": "text/javascript", - "resourceTypeHint": "HomeArticles.jsx" - }, - { - "id": "net-153", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Login.jsx", - "resourceType": "script", - "startedAt": 3829, - "status": 200, - "ok": true, - "finishedAt": 3856, - "contentType": "text/javascript", - "resourceTypeHint": "Login.jsx" - }, - { - "id": "net-154", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/NotFound.jsx", - "resourceType": "script", - "startedAt": 3830, - "status": 200, - "ok": true, - "finishedAt": 3856, - "contentType": "text/javascript", - "resourceTypeHint": "NotFound.jsx" - }, - { - "id": "net-155", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/Profile.jsx", - "resourceType": "script", - "startedAt": 3830, - "status": 200, - "ok": true, - "finishedAt": 3856, - "contentType": "text/javascript", - "resourceTypeHint": "Profile.jsx" - }, - { - "id": "net-156", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileArticles.jsx", - "resourceType": "script", - "startedAt": 3830, - "status": 200, - "ok": true, - "finishedAt": 3859, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileArticles.jsx" - }, - { - "id": "net-157", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Profile/ProfileFavArticles.jsx", - "resourceType": "script", - "startedAt": 3831, - "status": 200, - "ok": true, - "finishedAt": 3864, - "contentType": "text/javascript", - "resourceTypeHint": "ProfileFavArticles.jsx" - }, - { - "id": "net-158", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/Settings.jsx", - "resourceType": "script", - "startedAt": 3831, - "status": 200, - "ok": true, - "finishedAt": 3859, - "contentType": "text/javascript", - "resourceTypeHint": "Settings.jsx" - }, - { - "id": "net-159", - "method": "GET", - "url": "http://127.0.0.1:3000/src/routes/SignUp.jsx", - "resourceType": "script", - "startedAt": 3831, - "status": 200, - "ok": true, - "finishedAt": 3865, - "contentType": "text/javascript", - "resourceTypeHint": "SignUp.jsx" - }, - { - "id": "net-160", - "method": "GET", - "url": "http://127.0.0.1:3000/@fs/F:/RealDone/work/real-projects/conduit-postgres/node_modules/vite/dist/client/env.mjs", - "resourceType": "script", - "startedAt": 3831, - "status": 200, - "ok": true, - "finishedAt": 3865, - "contentType": "text/javascript", - "resourceTypeHint": "env.mjs" - }, - { - "id": "net-161", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-MP6PTA7G.js?v=96de0870", - "resourceType": "script", - "startedAt": 3833, - "status": 200, - "ok": true, - "finishedAt": 3866, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-MP6PTA7G.js" - }, - { - "id": "net-162", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-G3PMV62Z.js?v=96de0870", - "resourceType": "script", - "startedAt": 3833, - "status": 200, - "ok": true, - "finishedAt": 3865, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-G3PMV62Z.js" - }, - { - "id": "net-163", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getUser.js", - "resourceType": "script", - "startedAt": 3849, - "status": 200, - "ok": true, - "finishedAt": 3871, - "contentType": "text/javascript", - "resourceTypeHint": "getUser.js" - }, - { - "id": "net-164", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/index.js", - "resourceType": "script", - "startedAt": 3850, - "status": 200, - "ok": true, - "finishedAt": 3872, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-165", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/index.js", - "resourceType": "script", - "startedAt": 3851, - "status": 200, - "ok": true, - "finishedAt": 3872, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-166", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/markdown-to-jsx.js?v=96de0870", - "resourceType": "script", - "startedAt": 3851, - "status": 200, - "ok": true, - "finishedAt": 3875, - "contentType": "text/javascript", - "resourceTypeHint": "markdown-to-jsx.js" - }, - { - "id": "net-167", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/index.js", - "resourceType": "script", - "startedAt": 3851, - "status": 200, - "ok": true, - "finishedAt": 3873, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-168", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/index.js", - "resourceType": "script", - "startedAt": 3852, - "status": 200, - "ok": true, - "finishedAt": 3874, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-169", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/index.js", - "resourceType": "script", - "startedAt": 3852, - "status": 200, - "ok": true, - "finishedAt": 3874, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-170", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/index.js", - "resourceType": "script", - "startedAt": 3853, - "status": 200, - "ok": true, - "finishedAt": 3874, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-171", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticle.js", - "resourceType": "script", - "startedAt": 3853, - "status": 200, - "ok": true, - "finishedAt": 3874, - "contentType": "text/javascript", - "resourceTypeHint": "getArticle.js" - }, - { - "id": "net-172", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/chunk-HYJYOVZJ.js?v=96de0870", - "resourceType": "script", - "startedAt": 3858, - "status": 200, - "ok": true, - "finishedAt": 3878, - "contentType": "text/javascript", - "resourceTypeHint": "chunk-HYJYOVZJ.js" - }, - { - "id": "net-173", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/index.js", - "resourceType": "script", - "startedAt": 3859, - "status": 200, - "ok": true, - "contentType": "text/javascript", - "resourceTypeHint": "index.js", - "finishedAt": 3878 - }, - { - "id": "net-174", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/index.js", - "resourceType": "script", - "startedAt": 3859, - "status": 200, - "ok": true, - "finishedAt": 3881, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-175", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/index.js", - "resourceType": "script", - "startedAt": 3860, - "status": 200, - "ok": true, - "finishedAt": 3882, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-176", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/index.js", - "resourceType": "script", - "startedAt": 3860, - "status": 200, - "ok": true, - "finishedAt": 3882, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-177", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/index.js", - "resourceType": "script", - "startedAt": 3860, - "status": 200, - "ok": true, - "finishedAt": 3882, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-178", - "method": "GET", - "url": "http://127.0.0.1:3000/src/context/FeedContext.jsx", - "resourceType": "script", - "startedAt": 3861, - "status": 200, - "ok": true, - "finishedAt": 3885, - "contentType": "text/javascript", - "resourceTypeHint": "FeedContext.jsx" - }, - { - "id": "net-179", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/index.js", - "resourceType": "script", - "startedAt": 3861, - "status": 200, - "ok": true, - "finishedAt": 3885, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-180", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/index.js", - "resourceType": "script", - "startedAt": 3862, - "status": 200, - "ok": true, - "finishedAt": 3886, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-181", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/index.js", - "resourceType": "script", - "startedAt": 3862, - "status": 200, - "ok": true, - "finishedAt": 3885, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-182", - "method": "GET", - "url": "http://127.0.0.1:3000/src/hooks/useArticles.js", - "resourceType": "script", - "startedAt": 3863, - "status": 200, - "ok": true, - "finishedAt": 3886, - "contentType": "text/javascript", - "resourceTypeHint": "useArticles.js" - }, - { - "id": "net-183", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/index.js", - "resourceType": "script", - "startedAt": 3863, - "status": 200, - "ok": true, - "finishedAt": 3887, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-184", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/index.js", - "resourceType": "script", - "startedAt": 3863, - "status": 200, - "ok": true, - "finishedAt": 3890, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-185", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/index.js", - "resourceType": "script", - "startedAt": 3864, - "status": 200, - "ok": true, - "finishedAt": 3890, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-186", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/index.js", - "resourceType": "script", - "startedAt": 3864, - "status": 200, - "ok": true, - "finishedAt": 3890, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-187", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/index.js", - "resourceType": "script", - "startedAt": 3865, - "status": 200, - "ok": true, - "finishedAt": 3891, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-188", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/index.js", - "resourceType": "script", - "startedAt": 3866, - "status": 200, - "ok": true, - "finishedAt": 3892, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" - }, - { - "id": "net-189", - "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/axios.js?v=96de0870", - "resourceType": "script", - "startedAt": 3872, - "status": 200, - "ok": true, - "finishedAt": 3899, - "contentType": "text/javascript", - "resourceTypeHint": "axios.js" - }, - { - "id": "net-190", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/errorHandler.js", - "resourceType": "script", - "startedAt": 3872, - "status": 200, - "ok": true, - "finishedAt": 3894, - "contentType": "text/javascript", - "resourceTypeHint": "errorHandler.js" - }, - { - "id": "net-191", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Footer/Footer.jsx", - "resourceType": "script", - "startedAt": 3873, - "status": 200, - "ok": true, - "finishedAt": 3894, - "contentType": "text/javascript", - "resourceTypeHint": "Footer.jsx" - }, - { - "id": "net-192", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/Navbar.jsx", - "resourceType": "script", - "startedAt": 3873, - "status": 200, - "ok": true, - "finishedAt": 3894, - "contentType": "text/javascript", - "resourceTypeHint": "Navbar.jsx" - }, - { - "id": "net-193", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleMeta/ArticleMeta.jsx", - "resourceType": "script", - "startedAt": 3874, - "status": 200, - "ok": true, - "finishedAt": 3898, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleMeta.jsx" - }, - { - "id": "net-194", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesButtons/ArticlesButtons.jsx", - "resourceType": "script", - "startedAt": 3874, - "status": 200, - "ok": true, - "finishedAt": 3898, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesButtons.jsx" - }, - { - "id": "net-195", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleTags/ArticleTags.jsx", - "resourceType": "script", - "startedAt": 3874, - "status": 200, - "ok": true, - "finishedAt": 3898, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleTags.jsx" - }, - { - "id": "net-196", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/BannerContainer/BannerContainer.jsx", - "resourceType": "script", - "startedAt": 3875, - "status": 200, - "ok": true, - "finishedAt": 3899, - "contentType": "text/javascript", - "resourceTypeHint": "BannerContainer.jsx" - }, - { - "id": "net-197", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleEditorForm/ArticleEditorForm.jsx", - "resourceType": "script", - "startedAt": 3884, - "status": 200, - "ok": true, - "finishedAt": 3904, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleEditorForm.jsx" - }, - { - "id": "net-198", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ContainerRow/ContainerRow.jsx", - "resourceType": "script", - "startedAt": 3888, - "status": 200, - "ok": true, - "finishedAt": 3905, - "contentType": "text/javascript", - "resourceTypeHint": "ContainerRow.jsx" - }, - { - "id": "net-199", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentEditor/CommentEditor.jsx", - "resourceType": "script", - "startedAt": 3888, - "status": 200, - "ok": true, - "finishedAt": 3905, - "contentType": "text/javascript", - "resourceTypeHint": "CommentEditor.jsx" - }, - { - "id": "net-200", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentList.jsx", - "resourceType": "script", - "startedAt": 3888, - "status": 200, - "ok": true, - "finishedAt": 3905, - "contentType": "text/javascript", - "resourceTypeHint": "CommentList.jsx" - }, - { - "id": "net-201", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedToggler.jsx", - "resourceType": "script", - "startedAt": 3889, - "status": 200, - "ok": true, - "finishedAt": 3905, - "contentType": "text/javascript", - "resourceTypeHint": "FeedToggler.jsx" - }, - { - "id": "net-202", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPreview/ArticlesPreview.jsx", - "resourceType": "script", - "startedAt": 3892, - "status": 200, - "ok": true, - "finishedAt": 3911, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPreview.jsx" - }, - { - "id": "net-203", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/PopularTags.jsx", - "resourceType": "script", - "startedAt": 3893, - "status": 200, - "ok": true, - "finishedAt": 3912, - "contentType": "text/javascript", - "resourceTypeHint": "PopularTags.jsx" - }, - { - "id": "net-204", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticlesPagination/ArticlesPagination.jsx", - "resourceType": "script", - "startedAt": 3893, - "status": 200, - "ok": true, - "finishedAt": 3912, - "contentType": "text/javascript", - "resourceTypeHint": "ArticlesPagination.jsx" - }, - { - "id": "net-205", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getArticles.js", - "resourceType": "script", - "startedAt": 3893, - "status": 200, - "ok": true, - "finishedAt": 3912, - "contentType": "text/javascript", - "resourceTypeHint": "getArticles.js" - }, - { - "id": "net-206", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthPageContainer/AuthPageContainer.jsx", - "resourceType": "script", - "startedAt": 3893, - "status": 200, - "ok": true, - "finishedAt": 3912, - "contentType": "text/javascript", - "resourceTypeHint": "AuthPageContainer.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2419, + "url": "http://127.0.0.1:37213/#/", + "title": "Conduit", + "domHash": "3c44d4d1ff59317a", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-207", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/LoginForm/LoginForm.jsx", - "resourceType": "script", - "startedAt": 3896, - "status": 200, - "ok": true, - "finishedAt": 3916, - "contentType": "text/javascript", - "resourceTypeHint": "LoginForm.jsx" + "semanticDom": { + "textHash": "f8034dbcac655938", + "visualHash": "f56dba1689c65663", + "text": "conduit Source code Home Login Sign up conduit A place to share your knowledge. Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-208", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/AuthorInfo/AuthorInfo.jsx", - "resourceType": "script", - "startedAt": 3897, - "status": 200, - "ok": true, - "finishedAt": 3916, - "contentType": "text/javascript", - "resourceTypeHint": "AuthorInfo.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "trace": "traces/f488a7413f35.zip", + "snapshotIndex": "snapshots/RD-014.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 2, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-015", + "action": { + "id": "dbcb9b0c432e", + "pageUrl": "http://127.0.0.1:37213/#/register", + "label": "Login", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a", + "tag": "a", + "ordinal": 3, + "role": "link", + "accessibleName": "Login", + "text": "Login", + "href": "http://127.0.0.1:37213/#/login", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Login", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Login", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/login" + }, + { + "strategy": "text", + "weight": 60, + "value": "Login", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > header > nav > div > ul:nth-of-type(2) > li:nth-of-type(2) > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T10:50:20.369Z", + "durationMs": 2463, + "canary": "RD_TEST_9C033B", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 0, + "visibleCount": 0, + "elapsedMs": 3 + }, + { + "strategy": "role", + "weight": 82, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 + } + ], + "chosenStrategy": "role", + "chosenWeight": 82, + "retryCount": 0 + }, + "before": { + "at": 1454, + "url": "http://127.0.0.1:37213/#/register", + "title": "Conduit", + "domHash": "1f4fa65964895f4c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-209", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/NavItem/NavItem.jsx", - "resourceType": "script", - "startedAt": 3897, - "status": 200, - "ok": true, - "finishedAt": 3916, - "contentType": "text/javascript", - "resourceTypeHint": "NavItem.jsx" + "semanticDom": { + "textHash": "ab6aef9fc7cf2d60", + "visualHash": "b600fd6441482f1a", + "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "username", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-210", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SettingsForm/SettingsForm.jsx", - "resourceType": "script", - "startedAt": 3897, - "status": 200, - "ok": true, - "finishedAt": 3916, - "contentType": "text/javascript", - "resourceTypeHint": "SettingsForm.jsx" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1463, + "url": "http://127.0.0.1:37213/#/register", + "title": "Conduit", + "domHash": "1f4fa65964895f4c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-211", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SignUpForm/SignUpForm.jsx", - "resourceType": "script", - "startedAt": 3898, - "status": 200, - "ok": true, - "finishedAt": 3918, - "contentType": "text/javascript", - "resourceTypeHint": "SignUpForm.jsx" + "semanticDom": { + "textHash": "ab6aef9fc7cf2d60", + "visualHash": "b600fd6441482f1a", + "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "username", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-212", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/index.js", - "resourceType": "script", - "startedAt": 3898, - "status": 200, - "ok": true, - "finishedAt": 3916, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2460, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-213", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownMenu.jsx", - "resourceType": "script", - "startedAt": 3898, - "status": 200, - "ok": true, - "finishedAt": 3920, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownMenu.jsx" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-214", - "method": "GET", - "url": "http://127.0.0.1:3000/src/helpers/dateFormatter.js", - "resourceType": "script", - "startedAt": 3899, - "status": 200, - "ok": true, - "finishedAt": 3920, - "contentType": "text/javascript", - "resourceTypeHint": "dateFormatter.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "trace": "traces/dbcb9b0c432e.zip", + "snapshotIndex": "snapshots/RD-015.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-016", + "action": { + "id": "6e82ef58bd97", + "pageUrl": "http://127.0.0.1:37213/#/register", + "label": "Sign in to your account", + "activation": "click", + "kind": "navigation", + "intent": "navigate", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > p > a", + "tag": "a", + "ordinal": 5, + "role": "link", + "accessibleName": "Sign in to your account", + "text": "Sign in to your account", + "href": "http://127.0.0.1:37213/#/login", + "candidates": [ + { + "strategy": "role", + "weight": 92, + "role": "link", + "name": "Sign in to your account", + "exact": true + }, + { + "strategy": "role", + "weight": 82, + "role": "link", + "name": "Sign in to your account", + "exact": false + }, + { + "strategy": "href", + "weight": 72, + "value": "http://127.0.0.1:37213/#/login" + }, + { + "strategy": "text", + "weight": 60, + "value": "Sign in to your account", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > p > a" + } + ] + }, + "fields": [] + }, + "evidence": { + "startedAt": "2026-07-26T10:50:22.873Z", + "durationMs": 2435, + "canary": "RD_TEST_C31F5F", + "network": [], + "console": [], + "pageErrors": [], + "uiClaims": [], + "filledFields": [], + "dialogs": [], + "downloads": [], + "downloadEvidence": [], + "uploads": [], + "popupUrls": [], + "locatorResolution": { + "attempts": [ + { + "strategy": "role", + "weight": 92, + "matchCount": 1, + "visibleCount": 1, + "elapsedMs": 5 + } + ], + "chosenStrategy": "role", + "chosenWeight": 92, + "retryCount": 0 + }, + "before": { + "at": 1412, + "url": "http://127.0.0.1:37213/#/register", + "title": "Conduit", + "domHash": "1f4fa65964895f4c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-215", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/index.js", - "resourceType": "script", - "startedAt": 3899, - "status": 200, - "ok": true, - "finishedAt": 3920, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "ab6aef9fc7cf2d60", + "visualHash": "b600fd6441482f1a", + "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "username", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-216", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/index.js", - "resourceType": "script", - "startedAt": 3899, - "status": 200, - "ok": true, - "finishedAt": 3920, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "beforeAction": { + "at": 1421, + "url": "http://127.0.0.1:37213/#/register", + "title": "Conduit", + "domHash": "1f4fa65964895f4c", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-217", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/index.js", - "resourceType": "script", - "startedAt": 3900, - "status": 200, - "ok": true, - "finishedAt": 3921, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "semanticDom": { + "textHash": "ab6aef9fc7cf2d60", + "visualHash": "b600fd6441482f1a", + "text": "conduit Source code Home Login Sign up Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "text", + "name": "username", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, - { - "id": "net-218", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/index.js", - "resourceType": "script", - "startedAt": 3900, - "status": 200, - "ok": true, - "finishedAt": 3921, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "networkSettled": true, + "targetBusyAfter": false, + "after": { + "at": 2432, + "url": "http://127.0.0.1:37213/#/login", + "title": "Conduit", + "domHash": "c659be8900b0e706", + "canaryPresent": false, + "bodyCanaryPresent": false, + "temporaryBlobUrls": 0, + "auth": { + "artifacts": 0, + "expiredArtifacts": 0, + "privateContent": false, + "adminContent": false, + "accessDenied": false }, - { - "id": "net-219", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/setArticle.js", - "resourceType": "script", - "startedAt": 3905, - "status": 200, - "ok": true, - "finishedAt": 3925, - "contentType": "text/javascript", - "resourceTypeHint": "setArticle.js" + "semanticDom": { + "textHash": "9c42030bf33d5537", + "visualHash": "5b9081b1fb63beac", + "text": "conduit Source code Home Login Sign up Sign in Need an account? Login conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "controls": [ + { + "tag": "input", + "type": "email", + "name": "email", + "valueHash": "e3b0c44298fc1c14", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "input", + "type": "password", + "name": "password", + "valueHash": "e54b74eb9192b480", + "checked": false, + "disabled": false, + "visible": true + }, + { + "tag": "button", + "type": "submit", + "valueHash": "e3b0c44298fc1c14", + "disabled": false, + "visible": true + } + ] }, + "busyControls": 0, + "disabledControls": 0, + "storage": { + "local": [], + "session": [], + "cookieNames": [], + "cookies": [], + "indexedDb": [] + } + }, + "trace": "traces/6e82ef58bd97.zip", + "snapshotIndex": "snapshots/RD-016.index.json" + }, + "verdict": "VERIFIED", + "evidenceLevel": 1, + "reason": "The action produced an observable effect.", + "detectorMatches": [] + }, + { + "id": "RD-017", + "action": { + "id": "f1d2305ca322", + "pageUrl": "http://127.0.0.1:37213/#/register", + "label": "Sign up", + "activation": "submit", + "kind": "mutation", + "intent": "submit", + "risk": "safe", + "fingerprint": { + "selector": "body > div > main > div > div > div > div > form", + "tag": "form", + "ordinal": 6, + "accessibleName": "Sign up", + "text": "Sign up", + "candidates": [ + { + "strategy": "text", + "weight": 60, + "value": "Sign up", + "exact": true + }, + { + "strategy": "css", + "weight": 35, + "selector": "body > div > main > div > div > div > div > form" + } + ] + }, + "fields": [ { - "id": "net-220", - "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/index.js", - "resourceType": "script", - "startedAt": 3905, - "status": 200, - "ok": true, - "finishedAt": 3926, - "contentType": "text/javascript", - "resourceTypeHint": "index.js" + "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(1) > input", + "tag": "input", + "type": "text", + "required": true, + "disabled": false, + "name": "username", + "placeholder": "Your Name" }, { - "id": "net-221", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/postComment.js", - "resourceType": "script", - "startedAt": 3907, - "status": 200, - "ok": true, - "finishedAt": 3927, - "contentType": "text/javascript", - "resourceTypeHint": "postComment.js" + "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(2) > input", + "tag": "input", + "type": "email", + "required": true, + "disabled": false, + "name": "email", + "placeholder": "Email" }, { - "id": "net-222", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteComment.js", - "resourceType": "script", - "startedAt": 3908, - "status": 200, - "ok": true, - "finishedAt": 3928, - "contentType": "text/javascript", - "resourceTypeHint": "deleteComment.js" - }, + "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(3) > input", + "tag": "input", + "type": "password", + "required": true, + "disabled": false, + "name": "password", + "placeholder": "Password" + } + ] + }, + "evidence": { + "startedAt": "2026-07-26T10:50:25.546Z", + "durationMs": 6897, + "canary": "RD_TEST_AFDF00", + "network": [ { - "id": "net-223", - "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getComments.js", - "resourceType": "script", - "startedAt": 3908, - "status": 200, + "id": "net-1", + "method": "POST", + "url": "http://127.0.0.1:37213/api/users", + "resourceType": "xhr", + "startedAt": 1505, + "status": 201, "ok": true, - "finishedAt": 3928, - "contentType": "text/javascript", - "resourceTypeHint": "getComments.js" + "finishedAt": 1564, + "contentType": "application/json", + "resourceTypeHint": "users" }, { - "id": "net-224", + "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/CommentList/CommentAuthor.jsx", - "resourceType": "script", - "startedAt": 3908, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 1568, "status": 200, "ok": true, - "finishedAt": 3928, - "contentType": "text/javascript", - "resourceTypeHint": "CommentAuthor.jsx" + "finishedAt": 1573, + "contentType": "application/json", + "resourceTypeHint": "user" }, { - "id": "net-225", + "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FeedToggler/FeedNavLink.jsx", - "resourceType": "script", - "startedAt": 3909, + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 1571, "status": 200, "ok": true, - "finishedAt": 3928, - "contentType": "text/javascript", - "resourceTypeHint": "FeedNavLink.jsx" + "finishedAt": 1577, + "contentType": "application/json", + "resourceTypeHint": "feed" }, { - "id": "net-226", + "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getTags.js", - "resourceType": "script", - "startedAt": 3912, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 1572, "status": 200, "ok": true, - "finishedAt": 3928, - "contentType": "text/javascript", - "resourceTypeHint": "getTags.js" + "finishedAt": 1576, + "contentType": "application/json", + "resourceTypeHint": "tags" }, { - "id": "net-227", + "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/PopularTags/TagButton.jsx", - "resourceType": "script", - "startedAt": 3913, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 2525, "status": 200, "ok": true, - "finishedAt": 3928, - "contentType": "text/javascript", - "resourceTypeHint": "TagButton.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 2533 }, { - "id": "net-228", + "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:3000/node_modules/.vite/deps/react-paginate.js?v=96de0870", - "resourceType": "script", - "startedAt": 3913, - "status": 200, - "ok": true, - "finishedAt": 3928, - "contentType": "text/javascript", - "resourceTypeHint": "react-paginate.js" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2532, + "status": 307, + "ok": false, + "finishedAt": 2535, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-229", + "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/getProfile.js", - "resourceType": "script", - "startedAt": 3918, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 2532, "status": 200, "ok": true, - "finishedAt": 3929, - "contentType": "text/javascript", - "resourceTypeHint": "getProfile.js" + "finishedAt": 2570, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-230", + "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogin.js", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 3919, + "startedAt": 2532, "status": 200, "ok": true, - "finishedAt": 3930, + "finishedAt": 2547, "contentType": "text/javascript", - "resourceTypeHint": "userLogin.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-231", + "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/SourceCodeLink/SourceCodeLink.jsx", - "resourceType": "script", - "startedAt": 3922, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 2533, "status": 200, "ok": true, - "finishedAt": 3932, - "contentType": "text/javascript", - "resourceTypeHint": "SourceCodeLink.jsx" + "finishedAt": 2541, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-232", + "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userUpdate.js", - "resourceType": "script", - "startedAt": 3922, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 2535, "status": 200, "ok": true, - "finishedAt": 3932, - "contentType": "text/javascript", - "resourceTypeHint": "userUpdate.js" + "finishedAt": 2829, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-233", + "id": "net-11", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userSignUp.js", - "resourceType": "script", - "startedAt": 3923, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", + "resourceType": "font", + "startedAt": 2839, "status": 200, "ok": true, - "finishedAt": 3932, - "contentType": "text/javascript", - "resourceTypeHint": "userSignUp.js" + "finishedAt": 2885, + "contentType": "font/woff2", + "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-234", + "id": "net-12", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/userLogout.js", - "resourceType": "script", - "startedAt": 3923, + "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", + "resourceType": "font", + "startedAt": 2840, "status": 200, "ok": true, - "finishedAt": 3932, - "contentType": "text/javascript", - "resourceTypeHint": "userLogout.js" + "finishedAt": 2947, + "contentType": "font/ttf", + "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-235", + "id": "net-13", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Navbar/DropdownItem.jsx", - "resourceType": "script", - "startedAt": 3923, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", + "resourceType": "font", + "startedAt": 2840, "status": 200, "ok": true, - "finishedAt": 3933, - "contentType": "text/javascript", - "resourceTypeHint": "DropdownItem.jsx" + "finishedAt": 2886, + "contentType": "font/woff2", + "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-236", + "id": "net-14", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/Avatar/Avatar.jsx", - "resourceType": "script", - "startedAt": 3924, + "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", + "resourceType": "font", + "startedAt": 2840, "status": 200, "ok": true, - "finishedAt": 3934, - "contentType": "text/javascript", - "resourceTypeHint": "Avatar.jsx" + "finishedAt": 2887, + "contentType": "font/woff2", + "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-237", + "id": "net-15", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/ArticleAuthorButtons/ArticleAuthorButtons.jsx", - "resourceType": "script", - "startedAt": 3925, + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", + "resourceType": "xhr", + "startedAt": 2842, "status": 200, "ok": true, - "finishedAt": 3934, - "contentType": "text/javascript", - "resourceTypeHint": "ArticleAuthorButtons.jsx" + "finishedAt": 2850, + "contentType": "application/json", + "resourceTypeHint": "feed" }, { - "id": "net-238", + "id": "net-16", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FavButton/FavButton.jsx", - "resourceType": "script", - "startedAt": 3925, + "url": "http://127.0.0.1:37213/api/tags", + "resourceType": "xhr", + "startedAt": 2842, "status": 200, "ok": true, - "finishedAt": 3935, - "contentType": "text/javascript", - "resourceTypeHint": "FavButton.jsx" + "finishedAt": 2848, + "contentType": "application/json", + "resourceTypeHint": "tags" }, { - "id": "net-239", + "id": "net-17", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FollowButton/FollowButton.jsx", - "resourceType": "script", - "startedAt": 3926, + "url": "http://127.0.0.1:37213/api/user", + "resourceType": "xhr", + "startedAt": 2842, "status": 200, "ok": true, - "finishedAt": 3935, - "contentType": "text/javascript", - "resourceTypeHint": "FollowButton.jsx" + "contentType": "application/json", + "resourceTypeHint": "user", + "finishedAt": 2849 }, { - "id": "net-240", + "id": "net-18", "method": "GET", - "url": "http://127.0.0.1:3000/src/components/FormFieldset/FormFieldset.jsx", - "resourceType": "script", - "startedAt": 3927, + "url": "http://127.0.0.1:37213/", + "resourceType": "document", + "startedAt": 3700, "status": 200, "ok": true, - "finishedAt": 3936, - "contentType": "text/javascript", - "resourceTypeHint": "FormFieldset.jsx" + "contentType": "text/html", + "resourceTypeHint": "resource", + "finishedAt": 3708 }, { - "id": "net-241", + "id": "net-19", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg?import", - "resourceType": "script", - "startedAt": 3935, - "status": 200, - "ok": true, - "finishedAt": 3939, - "contentType": "text/javascript", - "resourceTypeHint": "smiley-cyrus.jpeg" + "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3706, + "status": 307, + "ok": false, + "finishedAt": 3710, + "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-242", + "id": "net-20", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/deleteArticle.js", - "resourceType": "script", - "startedAt": 3935, + "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", + "resourceType": "stylesheet", + "startedAt": 3707, "status": 200, "ok": true, - "finishedAt": 3940, - "contentType": "text/javascript", - "resourceTypeHint": "deleteArticle.js" + "finishedAt": 3748, + "contentType": "text/css", + "resourceTypeHint": "css" }, { - "id": "net-243", + "id": "net-21", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFav.js", + "url": "http://127.0.0.1:37213/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 3935, + "startedAt": 3707, "status": 200, "ok": true, - "finishedAt": 3940, + "finishedAt": 3720, "contentType": "text/javascript", - "resourceTypeHint": "toggleFav.js" + "resourceTypeHint": "index-CLdavoKn.js" }, { - "id": "net-244", + "id": "net-22", "method": "GET", - "url": "http://127.0.0.1:3000/src/services/toggleFollow.js", - "resourceType": "script", - "startedAt": 3935, + "url": "http://127.0.0.1:37213/assets/index-De1Lwdlm.css", + "resourceType": "stylesheet", + "startedAt": 3707, "status": 200, "ok": true, - "finishedAt": 3940, - "contentType": "text/javascript", - "resourceTypeHint": "toggleFollow.js" + "finishedAt": 3712, + "contentType": "text/css", + "resourceTypeHint": "index-De1Lwdlm.css" }, { - "id": "net-245", + "id": "net-23", "method": "GET", - "url": "http://127.0.0.1:3000/src/assets/smiley-cyrus.jpeg", - "resourceType": "image", - "startedAt": 3952, + "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", + "resourceType": "stylesheet", + "startedAt": 3710, "status": 200, "ok": true, - "finishedAt": 3963, - "contentType": "image/jpeg", - "resourceTypeHint": "smiley-cyrus.jpeg" + "finishedAt": 3787, + "contentType": "text/css", + "resourceTypeHint": "ionicons.min.css" }, { - "id": "net-246", + "id": "net-24", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", "resourceType": "font", - "startedAt": 3954, + "startedAt": 3795, "status": 200, "ok": true, - "finishedAt": 4001, + "finishedAt": 3842, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, { - "id": "net-247", + "id": "net-25", "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", "resourceType": "font", - "startedAt": 3955, + "startedAt": 3795, "status": 200, "ok": true, - "finishedAt": 4074, + "finishedAt": 3901, "contentType": "font/ttf", "resourceTypeHint": "ionicons.ttf" }, { - "id": "net-248", + "id": "net-26", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", "resourceType": "font", - "startedAt": 3956, + "startedAt": 3796, "status": 200, "ok": true, - "finishedAt": 4003, + "finishedAt": 3843, "contentType": "font/woff2", "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, { - "id": "net-249", + "id": "net-27", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", "resourceType": "font", - "startedAt": 3956, + "startedAt": 3797, "status": 200, "ok": true, - "finishedAt": 4003, + "finishedAt": 3844, "contentType": "font/woff2", "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, { - "id": "net-250", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 3958, - "status": 200, - "ok": true, - "finishedAt": 3970, - "contentType": "application/json", - "resourceTypeHint": "feed" - }, - { - "id": "net-251", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 3959, - "status": 200, - "ok": true, - "finishedAt": 3972, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-252", - "method": "GET", - "url": "http://127.0.0.1:3000/api/user", - "resourceType": "xhr", - "startedAt": 3960, - "status": 200, - "ok": true, - "finishedAt": 3973, - "contentType": "application/json", - "resourceTypeHint": "user" - }, - { - "id": "net-253", + "id": "net-28", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles/feed?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 3962, + "startedAt": 3798, "status": 200, "ok": true, - "finishedAt": 3977, + "finishedAt": 3806, "contentType": "application/json", "resourceTypeHint": "feed" }, { - "id": "net-254", + "id": "net-29", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 3963, + "startedAt": 3799, "status": 200, "ok": true, - "finishedAt": 3976, "contentType": "application/json", - "resourceTypeHint": "tags" + "resourceTypeHint": "tags", + "finishedAt": 3804 }, { - "id": "net-255", + "id": "net-30", "method": "GET", - "url": "http://127.0.0.1:3000/api/user", + "url": "http://127.0.0.1:37213/api/user", "resourceType": "xhr", - "startedAt": 3964, + "startedAt": 3799, "status": 200, "ok": true, - "finishedAt": 3976, + "finishedAt": 3805, "contentType": "application/json", "resourceTypeHint": "user" } @@ -12185,14 +6826,14 @@ "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(1) > input", "name": "username", "type": "text", - "value": "RD_TEST_3D72CE_1", + "value": "RD_TEST_AFDF00_1", "redacted": false }, { "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(2) > input", "name": "email", "type": "email", - "value": "rd-rd_test_3d72ce_2@example.test", + "value": "rd-rd_test_afdf00_2@example.test", "redacted": false }, { @@ -12215,14 +6856,14 @@ "weight": 60, "matchCount": 3, "visibleCount": 3, - "elapsedMs": 3 + "elapsedMs": 8 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -12230,8 +6871,8 @@ "retryCount": 0 }, "before": { - "at": 1462, - "url": "http://127.0.0.1:3000/#/register", + "at": 1417, + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", "canaryPresent": false, @@ -12298,31 +6939,38 @@ { "adapter": "postgresql", "resource": "articles", - "schemaHash": "d718b75b5f43908b", + "schemaHash": "811ce917dc830ae0", "rows": [], "truncated": false }, { "adapter": "postgresql", "resource": "users", - "schemaHash": "4dc457684d4d0982", + "schemaHash": "b7a8a911cd0fd4e9", + "rows": [], + "truncated": false + }, + { + "adapter": "supabase", + "resource": "articles", + "schemaHash": "777de19e0eca5f66", "rows": [], "truncated": false }, { "adapter": "supabase", "resource": "users", - "schemaHash": "17fd9bf966bbce4c", + "schemaHash": "cd9a96cfad9b0bff", "rows": [], "truncated": false } ] }, "beforeAction": { - "at": 1496, - "url": "http://127.0.0.1:3000/#/register", + "at": 1464, + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", - "domHash": "98d032663fb14180", + "domHash": "c980649d9e02e98b", "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -12342,7 +6990,7 @@ "tag": "input", "type": "text", "name": "username", - "valueHash": "0653c803bd099914", + "valueHash": "8369442a76f12504", "checked": false, "disabled": false, "visible": true @@ -12351,7 +6999,7 @@ "tag": "input", "type": "email", "name": "email", - "valueHash": "1f000865a7e3a74a", + "valueHash": "da4574f169c75ae2", "checked": false, "disabled": false, "visible": true @@ -12387,10 +7035,10 @@ "targetDisabledAfter": false, "networkSettled": true, "after": { - "at": 2607, - "url": "http://127.0.0.1:3000/#/", + "at": 2496, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "a68879a8f6df4737", + "domHash": "712217d34ae7776a", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -12402,9 +7050,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "5cc6c79dade7c998", + "textHash": "e7fb8b5727d2c916", "visualHash": "dfad2167a8f7c17f", - "text": "conduit Source code Home New Article RD_TEST_3D72CE_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -12428,7 +7076,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "117614825226bbaa", + "valueHash": "18c9b7a78ce6d4c7", "containsCanary": true } ], @@ -12441,31 +7089,38 @@ { "adapter": "postgresql", "resource": "articles", - "schemaHash": "d718b75b5f43908b", + "schemaHash": "811ce917dc830ae0", "rows": [], "truncated": false }, { "adapter": "postgresql", "resource": "users", - "schemaHash": "4dc457684d4d0982", + "schemaHash": "b7a8a911cd0fd4e9", "rows": [ { - "keyHash": "186347d9ea7673a2", - "rowHash": "b722d6313737881a", + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", "softDeleted": false } ], "truncated": false }, + { + "adapter": "supabase", + "resource": "articles", + "schemaHash": "777de19e0eca5f66", + "rows": [], + "truncated": false + }, { "adapter": "supabase", "resource": "users", - "schemaHash": "17fd9bf966bbce4c", + "schemaHash": "cd9a96cfad9b0bff", "rows": [ { - "keyHash": "186347d9ea7673a2", - "rowHash": "714a2b3e2a26f5e1", + "keyHash": "da7114755c3b82ba", + "rowHash": "f1108a413122f589", "softDeleted": false } ], @@ -12473,29 +7128,12 @@ } ] }, - "screenshot": "screenshots/cf5c3df21bab-after.png", - "webSockets": [ - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 2931, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [], - "closedAt": 3810 - }, - { - "url": "ws://127.0.0.1:3000/?token=%5BREDACTED%5D", - "openedAt": 3906, - "sentFrames": 0, - "receivedFrames": 1, - "errors": [] - } - ], + "screenshot": "screenshots/f1d2305ca322-after.png", "afterRefresh": { - "at": 3764, - "url": "http://127.0.0.1:3000/#/", + "at": 3665, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "a68879a8f6df4737", + "domHash": "712217d34ae7776a", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -12507,9 +7145,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "5cc6c79dade7c998", + "textHash": "e7fb8b5727d2c916", "visualHash": "dfad2167a8f7c17f", - "text": "conduit Source code Home New Article RD_TEST_3D72CE_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -12533,7 +7171,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "117614825226bbaa", + "valueHash": "18c9b7a78ce6d4c7", "containsCanary": true } ], @@ -12543,12 +7181,12 @@ "indexedDb": [] } }, - "refreshScreenshot": "screenshots/cf5c3df21bab-refresh.png", + "refreshScreenshot": "screenshots/f1d2305ca322-refresh.png", "afterHardRefresh": { - "at": 4771, - "url": "http://127.0.0.1:3000/#/", + "at": 4622, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", - "domHash": "a68879a8f6df4737", + "domHash": "712217d34ae7776a", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -12560,9 +7198,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "5cc6c79dade7c998", + "textHash": "e7fb8b5727d2c916", "visualHash": "dfad2167a8f7c17f", - "text": "conduit Source code Home New Article RD_TEST_3D72CE_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -12586,7 +7224,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "117614825226bbaa", + "valueHash": "18c9b7a78ce6d4c7", "containsCanary": true } ], @@ -12597,10 +7235,10 @@ } }, "afterNewTab": { - "at": 5850, - "url": "http://127.0.0.1:3000/#/register", + "at": 5607, + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", - "domHash": "1aaf74668a205c07", + "domHash": "d12f15fe03a77697", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -12612,9 +7250,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "b3e70a4f00a9d673", + "textHash": "d28cd67d36533c65", "visualHash": "4ab503dc0bf627e7", - "text": "conduit Source code Home New Article RD_TEST_3D72CE_1 Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_AFDF00_1 Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -12658,7 +7296,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "117614825226bbaa", + "valueHash": "18c9b7a78ce6d4c7", "containsCanary": true } ], @@ -12669,8 +7307,8 @@ } }, "afterNewContext": { - "at": 7171, - "url": "http://127.0.0.1:3000/#/", + "at": 6894, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -12708,6 +7346,15 @@ } }, "persistenceScope": "SOURCE_OF_TRUTH_CONFIRMED", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "exact-secret", + "jwt", + "sensitive-field" + ] + }, "sourceDiffs": [ { "adapter": "postgresql", @@ -12722,18 +7369,27 @@ "adapter": "postgresql", "resource": "users", "added": [ - "186347d9ea7673a2" + "da7114755c3b82ba" ], "removed": [], "changed": [], "softDeleted": [], "truncated": false }, + { + "adapter": "supabase", + "resource": "articles", + "added": [], + "removed": [], + "changed": [], + "softDeleted": [], + "truncated": false + }, { "adapter": "supabase", "resource": "users", "added": [ - "186347d9ea7673a2" + "da7114755c3b82ba" ], "removed": [], "changed": [], @@ -12752,8 +7408,8 @@ { "id": "RD-018", "action": { - "id": "0b13af847ba5", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "641cbb0f1c53", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "conduit", "activation": "click", "kind": "navigation", @@ -12766,7 +7422,7 @@ "role": "link", "accessibleName": "conduit", "text": "conduit", - "href": "http://127.0.0.1:3000/#/", + "href": "http://127.0.0.1:37213/#/", "candidates": [ { "strategy": "role", @@ -12785,7 +7441,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/" + "value": "http://127.0.0.1:37213/#/" }, { "strategy": "text", @@ -12803,55 +7459,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:31:42.284Z", - "durationMs": 2471, - "canary": "RD_TEST_C63DD2", + "startedAt": "2026-07-26T10:50:32.660Z", + "durationMs": 2457, + "canary": "RD_TEST_8BB333", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", + "url": "http://127.0.0.1:37213/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1495, + "startedAt": 1487, "status": 200, "ok": true, - "finishedAt": 1508, + "finishedAt": 1493, "contentType": "application/json", "resourceTypeHint": "articles" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", - "resourceType": "xhr", - "startedAt": 1496, - "status": 200, - "ok": true, - "finishedAt": 1507, - "contentType": "application/json", - "resourceTypeHint": "tags" - }, - { - "id": "net-3", - "method": "GET", - "url": "http://127.0.0.1:3000/api/articles?limit=3&&offset=0", - "resourceType": "xhr", - "startedAt": 1496, - "status": 200, - "ok": true, - "finishedAt": 1508, - "contentType": "application/json", - "resourceTypeHint": "articles" - }, - { - "id": "net-4", - "method": "GET", - "url": "http://127.0.0.1:3000/api/tags", + "url": "http://127.0.0.1:37213/api/tags", "resourceType": "xhr", - "startedAt": 1497, + "startedAt": 1488, "status": 200, "ok": true, - "finishedAt": 1509, + "finishedAt": 1492, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -12872,35 +7504,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 5 + "elapsedMs": 8 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 5 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 1 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -12908,8 +7540,8 @@ "retryCount": 0 }, "before": { - "at": 1456, - "url": "http://127.0.0.1:3000/#/register", + "at": 1446, + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", "canaryPresent": false, @@ -12974,8 +7606,8 @@ } }, "beforeAction": { - "at": 1464, - "url": "http://127.0.0.1:3000/#/register", + "at": 1454, + "url": "http://127.0.0.1:37213/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", "canaryPresent": false, @@ -13042,8 +7674,8 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2468, - "url": "http://127.0.0.1:3000/#/", + "at": 2453, + "url": "http://127.0.0.1:37213/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", "canaryPresent": false, @@ -13080,6 +7712,7 @@ "indexedDb": [] } }, + "trace": "traces/641cbb0f1c53.zip", "snapshotIndex": "snapshots/RD-018.index.json" }, "verdict": "VERIFIED", @@ -13090,8 +7723,8 @@ { "id": "RD-019", "action": { - "id": "25e3419d67d3", - "pageUrl": "http://127.0.0.1:3000/", + "id": "36a91b6a1f72", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -13163,8 +7796,8 @@ { "id": "RD-020", "action": { - "id": "6959be4b6ca4", - "pageUrl": "http://127.0.0.1:3000/", + "id": "731b624cc34c", + "pageUrl": "http://127.0.0.1:37213/", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -13236,8 +7869,8 @@ { "id": "RD-021", "action": { - "id": "c9b7b6b4d242", - "pageUrl": "http://127.0.0.1:3000/", + "id": "c5063859c1ad", + "pageUrl": "http://127.0.0.1:37213/", "label": "Source code", "activation": "click", "kind": "navigation", @@ -13309,8 +7942,8 @@ { "id": "RD-022", "action": { - "id": "1e4683e9dd3a", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "0a96ce3e0599", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Source code", "activation": "click", "kind": "navigation", @@ -13382,8 +8015,8 @@ { "id": "RD-023", "action": { - "id": "57d0ff701b4f", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "8e0749e6c4bd", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Login", "activation": "click", "kind": "navigation", @@ -13396,7 +8029,7 @@ "role": "link", "accessibleName": "Login", "text": "Login", - "href": "http://127.0.0.1:3000/#/login", + "href": "http://127.0.0.1:37213/#/login", "candidates": [ { "strategy": "role", @@ -13415,7 +8048,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/login" + "value": "http://127.0.0.1:37213/#/login" }, { "strategy": "text", @@ -13455,8 +8088,8 @@ { "id": "RD-024", "action": { - "id": "05734be5adff", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "ea0c68fd2737", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -13528,8 +8161,8 @@ { "id": "RD-025", "action": { - "id": "d84c94c719e0", - "pageUrl": "http://127.0.0.1:3000/#/login", + "id": "afb29f9198b9", + "pageUrl": "http://127.0.0.1:37213/#/login", "label": "Source code", "activation": "click", "kind": "navigation", @@ -13601,8 +8234,8 @@ { "id": "RD-026", "action": { - "id": "213b072ec36e", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "b6abdef8912c", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Source code", "activation": "click", "kind": "navigation", @@ -13674,8 +8307,8 @@ { "id": "RD-027", "action": { - "id": "8aa697f19422", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "7eb4978c14a5", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Sign up", "activation": "click", "kind": "navigation", @@ -13688,7 +8321,7 @@ "role": "link", "accessibleName": "Sign up", "text": "Sign up", - "href": "http://127.0.0.1:3000/#/register", + "href": "http://127.0.0.1:37213/#/register", "candidates": [ { "strategy": "role", @@ -13707,7 +8340,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:3000/#/register" + "value": "http://127.0.0.1:37213/#/register" }, { "strategy": "text", @@ -13747,8 +8380,8 @@ { "id": "RD-028", "action": { - "id": "1f3d957d32f9", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "253c660955b4", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Thinkster", "activation": "click", "kind": "navigation", @@ -13820,8 +8453,8 @@ { "id": "RD-029", "action": { - "id": "fd605c2f6cee", - "pageUrl": "http://127.0.0.1:3000/#/register", + "id": "dcb1127e6e40", + "pageUrl": "http://127.0.0.1:37213/#/register", "label": "Source code", "activation": "click", "kind": "navigation", @@ -13893,17 +8526,17 @@ ], "environment": { "status": "VALID", - "checkedAt": "2026-07-26T08:30:40.234Z", - "durationMs": 6726, - "targetUrl": "http://127.0.0.1:3000/", + "checkedAt": "2026-07-26T10:49:33.396Z", + "durationMs": 3824, + "targetUrl": "http://127.0.0.1:37213/", "mainDocument": { "status": 200, "contentType": "text/html" }, "assets": { - "checked": 327, - "scripts": 327, - "stylesheets": 0, + "checked": 6, + "scripts": 3, + "stylesheets": 3, "failed": 0 }, "render": { diff --git a/release/evidence/raw/conduit.scan.json b/release/evidence/raw/conduit.scan.json index 4e08a5f..5aaeb67 100644 --- a/release/evidence/raw/conduit.scan.json +++ b/release/evidence/raw/conduit.scan.json @@ -1,21 +1,21 @@ { "schemaVersion": "1.0", - "scanId": "20260726T084136Z-1c78", + "scanId": "20260726T105114Z-0982", "targetUrl": "http://127.0.0.1:37211/", - "startedAt": "2026-07-26T08:41:36.480Z", - "finishedAt": "2026-07-26T08:42:36.394Z", + "startedAt": "2026-07-26T10:51:14.600Z", + "finishedAt": "2026-07-26T10:52:16.031Z", "options": { - "maxPages": 12, - "maxActions": 30, + "maxPages": 10, + "maxActions": 100, "timeoutMs": 12000, "settleMs": 800, - "maxDurationMs": 300000, + "maxDurationMs": 900000, "maxRetries": 2, "allowDestructive": false, "allowExternal": false, "mutationAllowed": true, "deep": true, - "trace": false, + "trace": true, "traceOnFailure": false, "video": false, "environmentTimeoutMs": 10000, @@ -1594,9 +1594,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:41:43.792Z", - "durationMs": 2491, - "canary": "RD_TEST_200A59", + "startedAt": "2026-07-26T10:51:21.861Z", + "durationMs": 2517, + "canary": "RD_TEST_1D3B88", "network": [], "console": [], "pageErrors": [], @@ -1614,35 +1614,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 6 + "elapsedMs": 9 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 3, "visibleCount": 3, - "elapsedMs": 5 + "elapsedMs": 8 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 1 + "elapsedMs": 5 } ], "chosenStrategy": "css", @@ -1650,7 +1650,7 @@ "retryCount": 0 }, "before": { - "at": 1492, + "at": 1508, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -1689,7 +1689,7 @@ } }, "beforeAction": { - "at": 1500, + "at": 1517, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -1730,7 +1730,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2488, + "at": 2513, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -1768,6 +1768,7 @@ "indexedDb": [] } }, + "trace": "traces/010b144d48c7.zip", "snapshotIndex": "snapshots/RD-001.index.json" }, "verdict": "VERIFIED", @@ -1829,9 +1830,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:41:46.287Z", - "durationMs": 2442, - "canary": "RD_TEST_F0381B", + "startedAt": "2026-07-26T10:51:24.424Z", + "durationMs": 2475, + "canary": "RD_TEST_A7B313", "network": [], "console": [], "pageErrors": [], @@ -1849,14 +1850,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -1864,7 +1865,7 @@ "retryCount": 0 }, "before": { - "at": 1438, + "at": 1451, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -1903,7 +1904,7 @@ } }, "beforeAction": { - "at": 1445, + "at": 1460, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -1944,7 +1945,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2439, + "at": 2471, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -1982,6 +1983,7 @@ "indexedDb": [] } }, + "trace": "traces/43d3a1048392.zip", "snapshotIndex": "snapshots/RD-002.index.json" }, "verdict": "VERIFIED", @@ -2043,9 +2045,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:41:48.732Z", - "durationMs": 2420, - "canary": "RD_TEST_790F77", + "startedAt": "2026-07-26T10:51:26.930Z", + "durationMs": 2484, + "canary": "RD_TEST_4BA3ED", "network": [], "console": [], "pageErrors": [], @@ -2063,14 +2065,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -2078,7 +2080,7 @@ "retryCount": 0 }, "before": { - "at": 1430, + "at": 1478, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2117,7 +2119,7 @@ } }, "beforeAction": { - "at": 1438, + "at": 1488, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2158,7 +2160,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2417, + "at": 2479, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -2214,6 +2216,7 @@ "indexedDb": [] } }, + "trace": "traces/3e1acc106b83.zip", "snapshotIndex": "snapshots/RD-003.index.json" }, "verdict": "VERIFIED", @@ -2275,9 +2278,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:41:51.156Z", - "durationMs": 2441, - "canary": "RD_TEST_DB7727", + "startedAt": "2026-07-26T10:51:29.459Z", + "durationMs": 2461, + "canary": "RD_TEST_E82F28", "network": [], "console": [], "pageErrors": [], @@ -2295,7 +2298,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -2303,7 +2306,7 @@ "retryCount": 0 }, "before": { - "at": 1445, + "at": 1451, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2342,7 +2345,7 @@ } }, "beforeAction": { - "at": 1452, + "at": 1460, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2383,7 +2386,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2438, + "at": 2457, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -2448,6 +2451,7 @@ "indexedDb": [] } }, + "trace": "traces/01cd0c9655aa.zip", "snapshotIndex": "snapshots/RD-004.index.json" }, "verdict": "VERIFIED", @@ -2504,19 +2508,19 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:41:53.599Z", - "durationMs": 2432, - "canary": "RD_TEST_C6A7AE", + "startedAt": "2026-07-26T10:51:31.961Z", + "durationMs": 2516, + "canary": "RD_TEST_C616FB", "network": [ { "id": "net-1", "method": "GET", "url": "http://127.0.0.1:37211/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1442, + "startedAt": 1520, "status": 200, "ok": true, - "finishedAt": 1452, + "finishedAt": 1529, "contentType": "application/json", "resourceTypeHint": "articles" } @@ -2537,7 +2541,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -2545,7 +2549,7 @@ "retryCount": 0 }, "before": { - "at": 1412, + "at": 1482, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2584,7 +2588,7 @@ } }, "beforeAction": { - "at": 1419, + "at": 1490, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2625,7 +2629,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2403, + "at": 2481, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2664,6 +2668,7 @@ } }, "screenshot": "screenshots/d0dd9425c9ec-after.png", + "trace": "traces/d0dd9425c9ec.zip", "snapshotIndex": "snapshots/RD-005.index.json" }, "verdict": "VERIFIED", @@ -2725,9 +2730,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:41:56.034Z", - "durationMs": 2434, - "canary": "RD_TEST_399DAD", + "startedAt": "2026-07-26T10:51:34.511Z", + "durationMs": 2478, + "canary": "RD_TEST_DA60FF", "network": [], "console": [], "pageErrors": [], @@ -2745,35 +2750,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 8 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 3, "visibleCount": 3, - "elapsedMs": 3 + "elapsedMs": 8 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 3 } ], "chosenStrategy": "css", @@ -2781,7 +2786,7 @@ "retryCount": 0 }, "before": { - "at": 1451, + "at": 1464, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2820,7 +2825,7 @@ } }, "beforeAction": { - "at": 1457, + "at": 1473, "url": "http://127.0.0.1:37211/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2861,7 +2866,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2431, + "at": 2474, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -2899,6 +2904,7 @@ "indexedDb": [] } }, + "trace": "traces/ebc87132381c.zip", "snapshotIndex": "snapshots/RD-006.index.json" }, "verdict": "VERIFIED", @@ -2960,31 +2966,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:41:58.471Z", - "durationMs": 2423, - "canary": "RD_TEST_0D842B", + "startedAt": "2026-07-26T10:51:37.016Z", + "durationMs": 2467, + "canary": "RD_TEST_DA9FBD", "network": [ { "id": "net-1", "method": "GET", "url": "http://127.0.0.1:37211/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1470, + "startedAt": 1496, "status": 200, "ok": true, + "finishedAt": 1503, "contentType": "application/json", - "resourceTypeHint": "articles", - "finishedAt": 1476 + "resourceTypeHint": "articles" }, { "id": "net-2", "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 1470, + "startedAt": 1497, "status": 200, "ok": true, - "finishedAt": 1477, + "finishedAt": 1504, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -3005,35 +3011,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 5 + "elapsedMs": 7 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -3041,7 +3047,7 @@ "retryCount": 0 }, "before": { - "at": 1437, + "at": 1460, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -3098,7 +3104,7 @@ } }, "beforeAction": { - "at": 1443, + "at": 1469, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -3157,7 +3163,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2420, + "at": 2464, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -3195,6 +3201,7 @@ "indexedDb": [] } }, + "trace": "traces/d9cb9b16904a.zip", "snapshotIndex": "snapshots/RD-007.index.json" }, "verdict": "VERIFIED", @@ -3256,31 +3263,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:00.896Z", - "durationMs": 2423, - "canary": "RD_TEST_81FCCA", + "startedAt": "2026-07-26T10:51:39.530Z", + "durationMs": 2460, + "canary": "RD_TEST_11E923", "network": [ { "id": "net-1", "method": "GET", "url": "http://127.0.0.1:37211/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1444, + "startedAt": 1481, "status": 200, "ok": true, - "finishedAt": 1451, "contentType": "application/json", - "resourceTypeHint": "articles" + "resourceTypeHint": "articles", + "finishedAt": 1487 }, { "id": "net-2", "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 1444, + "startedAt": 1482, "status": 200, "ok": true, - "finishedAt": 1451, + "finishedAt": 1488, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -3301,14 +3308,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -3316,7 +3323,7 @@ "retryCount": 0 }, "before": { - "at": 1404, + "at": 1442, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -3373,7 +3380,7 @@ } }, "beforeAction": { - "at": 1410, + "at": 1450, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -3432,7 +3439,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2421, + "at": 2457, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -3470,6 +3477,7 @@ "indexedDb": [] } }, + "trace": "traces/34045263ad97.zip", "snapshotIndex": "snapshots/RD-008.index.json" }, "verdict": "VERIFIED", @@ -3531,9 +3539,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:03.321Z", - "durationMs": 2410, - "canary": "RD_TEST_977691", + "startedAt": "2026-07-26T10:51:42.047Z", + "durationMs": 2453, + "canary": "RD_TEST_32D091", "network": [], "console": [], "pageErrors": [], @@ -3551,7 +3559,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 4 + "elapsedMs": 6 } ], "chosenStrategy": "role", @@ -3559,7 +3567,7 @@ "retryCount": 0 }, "before": { - "at": 1414, + "at": 1443, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -3616,7 +3624,7 @@ } }, "beforeAction": { - "at": 1421, + "at": 1452, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -3675,7 +3683,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2407, + "at": 2449, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -3740,6 +3748,7 @@ "indexedDb": [] } }, + "trace": "traces/0b686cd5ddf4.zip", "snapshotIndex": "snapshots/RD-009.index.json" }, "verdict": "VERIFIED", @@ -3801,9 +3810,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:05.734Z", - "durationMs": 2425, - "canary": "RD_TEST_53A256", + "startedAt": "2026-07-26T10:51:44.540Z", + "durationMs": 2426, + "canary": "RD_TEST_884B47", "network": [], "console": [], "pageErrors": [], @@ -3821,7 +3830,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -3829,7 +3838,7 @@ "retryCount": 0 }, "before": { - "at": 1430, + "at": 1429, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -3886,7 +3895,7 @@ } }, "beforeAction": { - "at": 1437, + "at": 1438, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -4010,6 +4019,7 @@ "indexedDb": [] } }, + "trace": "traces/bc493dcbfb71.zip", "snapshotIndex": "snapshots/RD-010.index.json" }, "verdict": "VERIFIED", @@ -4070,20 +4080,20 @@ ] }, "evidence": { - "startedAt": "2026-07-26T08:42:08.165Z", - "durationMs": 6833, - "canary": "RD_TEST_BAA921", + "startedAt": "2026-07-26T10:51:47.011Z", + "durationMs": 6877, + "canary": "RD_TEST_0E121E", "network": [ { "id": "net-1", "method": "POST", "url": "http://127.0.0.1:37211/api/users/login", "resourceType": "xhr", - "startedAt": 1491, + "startedAt": 1555, "status": 404, "ok": false, "contentType": "application/json", - "finishedAt": 1554, + "finishedAt": 1572, "resourceTypeHint": "login" }, { @@ -4091,10 +4101,10 @@ "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2", "resourceType": "font", - "startedAt": 1570, + "startedAt": 1581, "status": 200, "ok": true, - "finishedAt": 1622, + "finishedAt": 1627, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2" }, @@ -4103,22 +4113,22 @@ "method": "GET", "url": "http://127.0.0.1:37211/", "resourceType": "document", - "startedAt": 2622, + "startedAt": 2618, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "resource", - "finishedAt": 2630 + "finishedAt": 2626 }, { "id": "net-4", "method": "GET", "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 2628, + "startedAt": 2624, "status": 307, "ok": false, - "finishedAt": 2631, + "finishedAt": 2628, "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceTypeHint": "ionicons.min.css" }, @@ -4127,10 +4137,10 @@ "method": "GET", "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", "resourceType": "stylesheet", - "startedAt": 2629, + "startedAt": 2624, "status": 200, "ok": true, - "finishedAt": 2674, + "finishedAt": 2664, "contentType": "text/css", "resourceTypeHint": "css" }, @@ -4139,10 +4149,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 2629, + "startedAt": 2625, "status": 200, "ok": true, - "finishedAt": 2643, + "finishedAt": 2638, "contentType": "text/javascript", "resourceTypeHint": "index-CLdavoKn.js" }, @@ -4151,10 +4161,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/assets/index-De1Lwdlm.css", "resourceType": "stylesheet", - "startedAt": 2629, + "startedAt": 2625, "status": 200, "ok": true, - "finishedAt": 2635, + "finishedAt": 2631, "contentType": "text/css", "resourceTypeHint": "index-De1Lwdlm.css" }, @@ -4163,22 +4173,22 @@ "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 2631, + "startedAt": 2628, "status": 200, "ok": true, "contentType": "text/css", "resourceTypeHint": "ionicons.min.css", - "finishedAt": 2783 + "finishedAt": 2777 }, { "id": "net-9", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", "resourceType": "font", - "startedAt": 2790, + "startedAt": 2784, "status": 200, "ok": true, - "finishedAt": 2839, + "finishedAt": 2830, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, @@ -4187,10 +4197,10 @@ "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", "resourceType": "font", - "startedAt": 2790, + "startedAt": 2784, "status": 200, "ok": true, - "finishedAt": 2952, + "finishedAt": 2963, "contentType": "font/ttf", "resourceTypeHint": "ionicons.ttf" }, @@ -4199,10 +4209,10 @@ "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", "resourceType": "font", - "startedAt": 2791, + "startedAt": 2785, "status": 200, "ok": true, - "finishedAt": 2837, + "finishedAt": 2833, "contentType": "font/woff2", "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, @@ -4211,10 +4221,10 @@ "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", "resourceType": "font", - "startedAt": 2791, + "startedAt": 2786, "status": 200, "ok": true, - "finishedAt": 2836, + "finishedAt": 2832, "contentType": "font/woff2", "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, @@ -4223,22 +4233,22 @@ "method": "GET", "url": "http://127.0.0.1:37211/", "resourceType": "document", - "startedAt": 3653, + "startedAt": 3649, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "resource", - "finishedAt": 3662 + "finishedAt": 3658 }, { "id": "net-14", "method": "GET", "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 3661, + "startedAt": 3656, "status": 307, "ok": false, - "finishedAt": 3664, + "finishedAt": 3659, "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceTypeHint": "ionicons.min.css" }, @@ -4247,10 +4257,10 @@ "method": "GET", "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", "resourceType": "stylesheet", - "startedAt": 3661, + "startedAt": 3657, "status": 200, "ok": true, - "finishedAt": 3703, + "finishedAt": 3712, "contentType": "text/css", "resourceTypeHint": "css" }, @@ -4259,10 +4269,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 3661, + "startedAt": 3657, "status": 200, "ok": true, - "finishedAt": 3676, + "finishedAt": 3670, "contentType": "text/javascript", "resourceTypeHint": "index-CLdavoKn.js" }, @@ -4271,10 +4281,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/assets/index-De1Lwdlm.css", "resourceType": "stylesheet", - "startedAt": 3662, + "startedAt": 3657, "status": 200, "ok": true, - "finishedAt": 3668, + "finishedAt": 3663, "contentType": "text/css", "resourceTypeHint": "index-De1Lwdlm.css" }, @@ -4283,12 +4293,12 @@ "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 3664, + "startedAt": 3659, "status": 200, "ok": true, "contentType": "text/css", "resourceTypeHint": "ionicons.min.css", - "finishedAt": 3744 + "finishedAt": 3741 }, { "id": "net-19", @@ -4298,7 +4308,7 @@ "startedAt": 3752, "status": 200, "ok": true, - "finishedAt": 3802, + "finishedAt": 3799, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, @@ -4310,7 +4320,7 @@ "startedAt": 3752, "status": 200, "ok": true, - "finishedAt": 3863, + "finishedAt": 3869, "contentType": "font/ttf", "resourceTypeHint": "ionicons.ttf" }, @@ -4322,7 +4332,7 @@ "startedAt": 3753, "status": 200, "ok": true, - "finishedAt": 3799, + "finishedAt": 3798, "contentType": "font/woff2", "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, @@ -4331,10 +4341,10 @@ "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", "resourceType": "font", - "startedAt": 3753, + "startedAt": 3754, "status": 200, "ok": true, - "finishedAt": 3798, + "finishedAt": 3800, "contentType": "font/woff2", "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" } @@ -4343,7 +4353,7 @@ { "type": "error", "text": "Failed to load resource: the server responded with a status of 404 (Not Found)", - "at": 1553 + "at": 1571 } ], "pageErrors": [], @@ -4353,7 +4363,7 @@ "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(1) > input", "name": "email", "type": "email", - "value": "rd-rd_test_baa921_1@example.test", + "value": "rd-rd_test_0e121e_1@example.test", "redacted": false }, { @@ -4376,14 +4386,14 @@ "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 7 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 1 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -4391,7 +4401,7 @@ "retryCount": 0 }, "before": { - "at": 1425, + "at": 1473, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -4521,42 +4531,16 @@ "adapter": "sqlite", "resource": "Users", "schemaHash": "565bde25c1fa7c3f", - "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "a673f7916d5fd0f3", - "softDeleted": false - }, - { - "keyHash": "da7114755c3b82ba", - "rowHash": "b59dd0c0c8425175", - "softDeleted": false - }, - { - "keyHash": "84cf60166b2ca345", - "rowHash": "03cdb9683302919a", - "softDeleted": false - }, - { - "keyHash": "9ef59241e15425e0", - "rowHash": "63453967fdb89d52", - "softDeleted": false - }, - { - "keyHash": "82a8445b12df5a29", - "rowHash": "ee3a949188ccec1f", - "softDeleted": false - } - ], + "rows": [], "truncated": false } ] }, "beforeAction": { - "at": 1448, + "at": 1509, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", - "domHash": "0e5fbc1631aae76b", + "domHash": "cd52b48bf8afd456", "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -4576,7 +4560,7 @@ "tag": "input", "type": "email", "name": "email", - "valueHash": "3181725ee86589e3", + "valueHash": "4b90cc4dc320ffdd", "checked": false, "disabled": false, "visible": true @@ -4613,10 +4597,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2587, + "at": 2575, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", - "domHash": "45f32846b54952d5", + "domHash": "11736da89855acb7", "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -4636,7 +4620,7 @@ "tag": "input", "type": "email", "name": "email", - "valueHash": "3181725ee86589e3", + "valueHash": "4b90cc4dc320ffdd", "checked": false, "disabled": false, "visible": true @@ -4743,40 +4727,14 @@ "adapter": "sqlite", "resource": "Users", "schemaHash": "565bde25c1fa7c3f", - "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "a673f7916d5fd0f3", - "softDeleted": false - }, - { - "keyHash": "da7114755c3b82ba", - "rowHash": "b59dd0c0c8425175", - "softDeleted": false - }, - { - "keyHash": "84cf60166b2ca345", - "rowHash": "03cdb9683302919a", - "softDeleted": false - }, - { - "keyHash": "9ef59241e15425e0", - "rowHash": "63453967fdb89d52", - "softDeleted": false - }, - { - "keyHash": "82a8445b12df5a29", - "rowHash": "ee3a949188ccec1f", - "softDeleted": false - } - ], + "rows": [], "truncated": false } ] }, "screenshot": "screenshots/4991c205504d-after.png", "afterRefresh": { - "at": 3607, + "at": 3603, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -4834,7 +4792,7 @@ }, "refreshScreenshot": "screenshots/4991c205504d-refresh.png", "afterHardRefresh": { - "at": 4571, + "at": 4580, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -4891,7 +4849,7 @@ } }, "afterNewTab": { - "at": 5551, + "at": 5582, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -4948,7 +4906,7 @@ } }, "afterNewContext": { - "at": 6829, + "at": 6874, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -5005,6 +4963,14 @@ } }, "persistenceScope": "MEMORY_ONLY", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "exact-secret", + "sensitive-field" + ] + }, "sourceDiffs": [ { "adapter": "sqlite", @@ -5141,31 +5107,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:15.003Z", - "durationMs": 2411, - "canary": "RD_TEST_CDAA33", + "startedAt": "2026-07-26T10:51:53.992Z", + "durationMs": 2454, + "canary": "RD_TEST_218FCA", "network": [ { "id": "net-1", "method": "GET", "url": "http://127.0.0.1:37211/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1451, + "startedAt": 1485, "status": 200, "ok": true, - "finishedAt": 1458, "contentType": "application/json", - "resourceTypeHint": "articles" + "resourceTypeHint": "articles", + "finishedAt": 1491 }, { "id": "net-2", "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 1452, + "startedAt": 1486, "status": 200, "ok": true, - "finishedAt": 1458, + "finishedAt": 1491, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -5186,35 +5152,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 8 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 5 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 0 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 1 + "elapsedMs": 3 } ], "chosenStrategy": "css", @@ -5222,7 +5188,7 @@ "retryCount": 0 }, "before": { - "at": 1426, + "at": 1451, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -5279,7 +5245,7 @@ } }, "beforeAction": { - "at": 1432, + "at": 1459, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -5338,7 +5304,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2408, + "at": 2450, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -5376,6 +5342,7 @@ "indexedDb": [] } }, + "trace": "traces/fcc68ac443ac.zip", "snapshotIndex": "snapshots/RD-012.index.json" }, "verdict": "VERIFIED", @@ -5437,31 +5404,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:17.417Z", - "durationMs": 2414, - "canary": "RD_TEST_2E4B0A", + "startedAt": "2026-07-26T10:51:56.485Z", + "durationMs": 2473, + "canary": "RD_TEST_E65C3F", "network": [ { "id": "net-1", "method": "GET", "url": "http://127.0.0.1:37211/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1454, + "startedAt": 1507, "status": 200, "ok": true, + "finishedAt": 1513, "contentType": "application/json", - "resourceTypeHint": "articles", - "finishedAt": 1460 + "resourceTypeHint": "articles" }, { "id": "net-2", "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 1454, + "startedAt": 1508, "status": 200, "ok": true, - "finishedAt": 1460, + "finishedAt": 1513, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -5482,35 +5449,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 4 + "elapsedMs": 7 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -5518,7 +5485,7 @@ "retryCount": 0 }, "before": { - "at": 1419, + "at": 1463, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -5584,7 +5551,7 @@ } }, "beforeAction": { - "at": 1424, + "at": 1471, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -5652,7 +5619,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2412, + "at": 2469, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -5690,6 +5657,7 @@ "indexedDb": [] } }, + "trace": "traces/59e2b437f2d6.zip", "snapshotIndex": "snapshots/RD-013.index.json" }, "verdict": "VERIFIED", @@ -5751,31 +5719,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:19.834Z", - "durationMs": 2400, - "canary": "RD_TEST_F07FA4", + "startedAt": "2026-07-26T10:51:59.013Z", + "durationMs": 2455, + "canary": "RD_TEST_B20F2A", "network": [ { "id": "net-1", "method": "GET", "url": "http://127.0.0.1:37211/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1438, + "startedAt": 1482, "status": 200, "ok": true, "contentType": "application/json", "resourceTypeHint": "articles", - "finishedAt": 1445 + "finishedAt": 1488 }, { "id": "net-2", "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 1439, + "startedAt": 1482, "status": 200, "ok": true, - "finishedAt": 1445, + "finishedAt": 1488, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -5796,14 +5764,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "role", @@ -5811,7 +5779,7 @@ "retryCount": 0 }, "before": { - "at": 1406, + "at": 1448, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -5877,7 +5845,7 @@ } }, "beforeAction": { - "at": 1412, + "at": 1456, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -5945,7 +5913,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2397, + "at": 2451, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -5983,6 +5951,7 @@ "indexedDb": [] } }, + "trace": "traces/1a0c7bf79395.zip", "snapshotIndex": "snapshots/RD-014.index.json" }, "verdict": "VERIFIED", @@ -6044,9 +6013,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:22.236Z", - "durationMs": 2433, - "canary": "RD_TEST_44C0E3", + "startedAt": "2026-07-26T10:52:01.503Z", + "durationMs": 2472, + "canary": "RD_TEST_720A48", "network": [], "console": [], "pageErrors": [], @@ -6064,14 +6033,14 @@ "weight": 92, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 2 + "elapsedMs": 3 }, { "strategy": "role", "weight": 82, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -6079,7 +6048,7 @@ "retryCount": 0 }, "before": { - "at": 1433, + "at": 1453, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -6145,7 +6114,7 @@ } }, "beforeAction": { - "at": 1439, + "at": 1463, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -6213,7 +6182,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2430, + "at": 2467, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -6269,6 +6238,7 @@ "indexedDb": [] } }, + "trace": "traces/d5c6b9ea21ab.zip", "snapshotIndex": "snapshots/RD-015.index.json" }, "verdict": "VERIFIED", @@ -6330,9 +6300,9 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:24.671Z", - "durationMs": 2449, - "canary": "RD_TEST_2BDDE0", + "startedAt": "2026-07-26T10:52:04.018Z", + "durationMs": 2451, + "canary": "RD_TEST_AA1022", "network": [], "console": [], "pageErrors": [], @@ -6350,7 +6320,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 3 + "elapsedMs": 5 } ], "chosenStrategy": "role", @@ -6358,7 +6328,7 @@ "retryCount": 0 }, "before": { - "at": 1443, + "at": 1436, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -6424,7 +6394,7 @@ } }, "beforeAction": { - "at": 1450, + "at": 1446, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -6492,7 +6462,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2446, + "at": 2447, "url": "http://127.0.0.1:37211/#/login", "title": "Conduit", "domHash": "c659be8900b0e706", @@ -6548,6 +6518,7 @@ "indexedDb": [] } }, + "trace": "traces/a36c397a3a4f.zip", "snapshotIndex": "snapshots/RD-016.index.json" }, "verdict": "VERIFIED", @@ -6616,19 +6587,19 @@ ] }, "evidence": { - "startedAt": "2026-07-26T08:42:27.126Z", - "durationMs": 6850, - "canary": "RD_TEST_63F192", + "startedAt": "2026-07-26T10:52:06.518Z", + "durationMs": 6925, + "canary": "RD_TEST_184709", "network": [ { "id": "net-1", "method": "POST", "url": "http://127.0.0.1:37211/api/users", "resourceType": "xhr", - "startedAt": 1497, + "startedAt": 1511, "status": 201, "ok": true, - "finishedAt": 1648, + "finishedAt": 1649, "contentType": "application/json", "resourceTypeHint": "users" }, @@ -6640,7 +6611,7 @@ "startedAt": 1653, "status": 200, "ok": true, - "finishedAt": 1658, + "finishedAt": 1659, "contentType": "application/json", "resourceTypeHint": "user" }, @@ -6652,7 +6623,7 @@ "startedAt": 1655, "status": 200, "ok": true, - "finishedAt": 1664, + "finishedAt": 1665, "contentType": "application/json", "resourceTypeHint": "feed" }, @@ -6661,10 +6632,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 1655, + "startedAt": 1656, "status": 200, "ok": true, - "finishedAt": 1661, + "finishedAt": 1663, "contentType": "application/json", "resourceTypeHint": "tags" }, @@ -6673,22 +6644,22 @@ "method": "GET", "url": "http://127.0.0.1:37211/", "resourceType": "document", - "startedAt": 2643, + "startedAt": 2646, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "resource", - "finishedAt": 2652 + "finishedAt": 2654 }, { "id": "net-6", "method": "GET", "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 2650, + "startedAt": 2653, "status": 307, "ok": false, - "finishedAt": 2653, + "finishedAt": 2656, "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceTypeHint": "ionicons.min.css" }, @@ -6697,10 +6668,10 @@ "method": "GET", "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", "resourceType": "stylesheet", - "startedAt": 2650, + "startedAt": 2653, "status": 200, "ok": true, - "finishedAt": 2698, + "finishedAt": 2694, "contentType": "text/css", "resourceTypeHint": "css" }, @@ -6709,10 +6680,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 2651, + "startedAt": 2653, "status": 200, "ok": true, - "finishedAt": 2665, + "finishedAt": 2666, "contentType": "text/javascript", "resourceTypeHint": "index-CLdavoKn.js" }, @@ -6721,34 +6692,34 @@ "method": "GET", "url": "http://127.0.0.1:37211/assets/index-De1Lwdlm.css", "resourceType": "stylesheet", - "startedAt": 2651, + "startedAt": 2654, "status": 200, "ok": true, "contentType": "text/css", "resourceTypeHint": "index-De1Lwdlm.css", - "finishedAt": 2658 + "finishedAt": 2660 }, { "id": "net-10", "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 2653, + "startedAt": 2656, "status": 200, "ok": true, "contentType": "text/css", "resourceTypeHint": "ionicons.min.css", - "finishedAt": 2797 + "finishedAt": 2801 }, { "id": "net-11", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", "resourceType": "font", - "startedAt": 2806, + "startedAt": 2812, "status": 200, "ok": true, - "finishedAt": 2857, + "finishedAt": 2858, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, @@ -6757,10 +6728,10 @@ "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", "resourceType": "font", - "startedAt": 2807, + "startedAt": 2814, "status": 200, "ok": true, - "finishedAt": 2975, + "finishedAt": 2921, "contentType": "font/ttf", "resourceTypeHint": "ionicons.ttf" }, @@ -6769,10 +6740,10 @@ "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", "resourceType": "font", - "startedAt": 2807, + "startedAt": 2814, "status": 200, "ok": true, - "finishedAt": 2854, + "finishedAt": 2860, "contentType": "font/woff2", "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, @@ -6781,10 +6752,10 @@ "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", "resourceType": "font", - "startedAt": 2808, + "startedAt": 2814, "status": 200, "ok": true, - "finishedAt": 2853, + "finishedAt": 2860, "contentType": "font/woff2", "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, @@ -6793,10 +6764,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 2809, + "startedAt": 2816, "status": 200, "ok": true, - "finishedAt": 2818, + "finishedAt": 2825, "contentType": "application/json", "resourceTypeHint": "feed" }, @@ -6805,22 +6776,22 @@ "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 2809, + "startedAt": 2816, "status": 200, "ok": true, "contentType": "application/json", "resourceTypeHint": "tags", - "finishedAt": 2816 + "finishedAt": 2823 }, { "id": "net-17", "method": "GET", "url": "http://127.0.0.1:37211/api/user", "resourceType": "xhr", - "startedAt": 2809, + "startedAt": 2816, "status": 200, "ok": true, - "finishedAt": 2816, + "finishedAt": 2823, "contentType": "application/json", "resourceTypeHint": "user" }, @@ -6829,22 +6800,22 @@ "method": "GET", "url": "http://127.0.0.1:37211/", "resourceType": "document", - "startedAt": 3646, + "startedAt": 3686, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "resource", - "finishedAt": 3653 + "finishedAt": 3695 }, { "id": "net-19", "method": "GET", "url": "http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 3652, + "startedAt": 3693, "status": 307, "ok": false, - "finishedAt": 3655, + "finishedAt": 3696, "location": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceTypeHint": "ionicons.min.css" }, @@ -6853,10 +6824,10 @@ "method": "GET", "url": "http://fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic", "resourceType": "stylesheet", - "startedAt": 3652, + "startedAt": 3693, "status": 200, "ok": true, - "finishedAt": 3697, + "finishedAt": 3736, "contentType": "text/css", "resourceTypeHint": "css" }, @@ -6865,10 +6836,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/assets/index-CLdavoKn.js", "resourceType": "script", - "startedAt": 3653, + "startedAt": 3693, "status": 200, "ok": true, - "finishedAt": 3667, + "finishedAt": 3709, "contentType": "text/javascript", "resourceTypeHint": "index-CLdavoKn.js" }, @@ -6877,34 +6848,34 @@ "method": "GET", "url": "http://127.0.0.1:37211/assets/index-De1Lwdlm.css", "resourceType": "stylesheet", - "startedAt": 3653, + "startedAt": 3694, "status": 200, "ok": true, + "finishedAt": 3700, "contentType": "text/css", - "resourceTypeHint": "index-De1Lwdlm.css", - "finishedAt": 3658 + "resourceTypeHint": "index-De1Lwdlm.css" }, { "id": "net-23", "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css", "resourceType": "stylesheet", - "startedAt": 3655, + "startedAt": 3697, "status": 200, "ok": true, + "finishedAt": 3787, "contentType": "text/css", - "resourceTypeHint": "ionicons.min.css", - "finishedAt": 3731 + "resourceTypeHint": "ionicons.min.css" }, { "id": "net-24", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2", "resourceType": "font", - "startedAt": 3739, + "startedAt": 3797, "status": 200, "ok": true, - "finishedAt": 3789, + "finishedAt": 3847, "contentType": "font/woff2", "resourceTypeHint": "6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2" }, @@ -6913,22 +6884,22 @@ "method": "GET", "url": "https://code.ionicframework.com/ionicons/2.0.1/fonts/ionicons.ttf?v=2.0.1", "resourceType": "font", - "startedAt": 3739, + "startedAt": 3797, "status": 200, "ok": true, - "finishedAt": 3847, "contentType": "font/ttf", - "resourceTypeHint": "ionicons.ttf" + "resourceTypeHint": "ionicons.ttf", + "finishedAt": 3908 }, { "id": "net-26", "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2", "resourceType": "font", - "startedAt": 3740, + "startedAt": 3798, "status": 200, "ok": true, - "finishedAt": 3785, + "finishedAt": 3845, "contentType": "font/woff2", "resourceTypeHint": "6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2" }, @@ -6937,10 +6908,10 @@ "method": "GET", "url": "http://fonts.gstatic.com/s/sourcesanspro/v23/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2", "resourceType": "font", - "startedAt": 3740, + "startedAt": 3798, "status": 200, "ok": true, - "finishedAt": 3784, + "finishedAt": 3847, "contentType": "font/woff2", "resourceTypeHint": "6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2" }, @@ -6949,10 +6920,10 @@ "method": "GET", "url": "http://127.0.0.1:37211/api/articles/feed?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 3741, + "startedAt": 3800, "status": 200, "ok": true, - "finishedAt": 3750, + "finishedAt": 3811, "contentType": "application/json", "resourceTypeHint": "feed" }, @@ -6961,22 +6932,22 @@ "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 3741, + "startedAt": 3801, "status": 200, "ok": true, - "finishedAt": 3747, "contentType": "application/json", - "resourceTypeHint": "tags" + "resourceTypeHint": "tags", + "finishedAt": 3809 }, { "id": "net-30", "method": "GET", "url": "http://127.0.0.1:37211/api/user", "resourceType": "xhr", - "startedAt": 3742, + "startedAt": 3801, "status": 200, "ok": true, - "finishedAt": 3748, + "finishedAt": 3809, "contentType": "application/json", "resourceTypeHint": "user" } @@ -6989,14 +6960,14 @@ "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(1) > input", "name": "username", "type": "text", - "value": "RD_TEST_63F192_1", + "value": "RD_TEST_184709_1", "redacted": false }, { "selector": "body > div > main > div > div > div > div > form > fieldset:nth-of-type(2) > input", "name": "email", "type": "email", - "value": "rd-rd_test_63f192_2@example.test", + "value": "rd-rd_test_184709_2@example.test", "redacted": false }, { @@ -7019,14 +6990,14 @@ "weight": 60, "matchCount": 3, "visibleCount": 3, - "elapsedMs": 4 + "elapsedMs": 9 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -7034,7 +7005,7 @@ "retryCount": 0 }, "before": { - "at": 1423, + "at": 1413, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -7173,42 +7144,16 @@ "adapter": "sqlite", "resource": "Users", "schemaHash": "565bde25c1fa7c3f", - "rows": [ - { - "keyHash": "186347d9ea7673a2", - "rowHash": "a673f7916d5fd0f3", - "softDeleted": false - }, - { - "keyHash": "da7114755c3b82ba", - "rowHash": "b59dd0c0c8425175", - "softDeleted": false - }, - { - "keyHash": "84cf60166b2ca345", - "rowHash": "03cdb9683302919a", - "softDeleted": false - }, - { - "keyHash": "9ef59241e15425e0", - "rowHash": "63453967fdb89d52", - "softDeleted": false - }, - { - "keyHash": "82a8445b12df5a29", - "rowHash": "ee3a949188ccec1f", - "softDeleted": false - } - ], + "rows": [], "truncated": false } ] }, "beforeAction": { - "at": 1452, + "at": 1459, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", - "domHash": "7c6ebac4abec4e61", + "domHash": "f49385412faf488b", "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -7228,7 +7173,7 @@ "tag": "input", "type": "text", "name": "username", - "valueHash": "e29cdc9f96cc4014", + "valueHash": "e77f2ddc2e4bf03e", "checked": false, "disabled": false, "visible": true @@ -7237,7 +7182,7 @@ "tag": "input", "type": "email", "name": "email", - "valueHash": "5021c46c0ddc1676", + "valueHash": "9527c5a03cf9681a", "checked": false, "disabled": false, "visible": true @@ -7273,10 +7218,10 @@ "targetDisabledAfter": false, "networkSettled": true, "after": { - "at": 2609, + "at": 2617, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", - "domHash": "136d5803496de529", + "domHash": "7bcd13fe9b22405b", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -7288,9 +7233,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "98f6bed52127767e", + "textHash": "ca0891f28472ddae", "visualHash": "dfad2167a8f7c17f", - "text": "conduit Source code Home New Article RD_TEST_63F192_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_184709_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7314,7 +7259,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "26e814be78761ba9", + "valueHash": "12ac6e5e7e965b6c", "containsCanary": true } ], @@ -7401,32 +7346,7 @@ "rows": [ { "keyHash": "186347d9ea7673a2", - "rowHash": "a673f7916d5fd0f3", - "softDeleted": false - }, - { - "keyHash": "da7114755c3b82ba", - "rowHash": "b59dd0c0c8425175", - "softDeleted": false - }, - { - "keyHash": "84cf60166b2ca345", - "rowHash": "03cdb9683302919a", - "softDeleted": false - }, - { - "keyHash": "9ef59241e15425e0", - "rowHash": "63453967fdb89d52", - "softDeleted": false - }, - { - "keyHash": "82a8445b12df5a29", - "rowHash": "ee3a949188ccec1f", - "softDeleted": false - }, - { - "keyHash": "2766c815d1c00dbe", - "rowHash": "9e4b5c5f9ea6f3e8", + "rowHash": "91032cf2e2adac60", "softDeleted": false } ], @@ -7436,10 +7356,10 @@ }, "screenshot": "screenshots/3db25a95d913-after.png", "afterRefresh": { - "at": 3616, + "at": 3636, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", - "domHash": "136d5803496de529", + "domHash": "7bcd13fe9b22405b", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -7451,9 +7371,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "98f6bed52127767e", + "textHash": "ca0891f28472ddae", "visualHash": "dfad2167a8f7c17f", - "text": "conduit Source code Home New Article RD_TEST_63F192_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_184709_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7477,7 +7397,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "26e814be78761ba9", + "valueHash": "12ac6e5e7e965b6c", "containsCanary": true } ], @@ -7489,10 +7409,10 @@ }, "refreshScreenshot": "screenshots/3db25a95d913-refresh.png", "afterHardRefresh": { - "at": 4553, + "at": 4624, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", - "domHash": "136d5803496de529", + "domHash": "7bcd13fe9b22405b", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -7504,9 +7424,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "98f6bed52127767e", + "textHash": "ca0891f28472ddae", "visualHash": "dfad2167a8f7c17f", - "text": "conduit Source code Home New Article RD_TEST_63F192_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_184709_1 Your Feed Global Feed Articles not available. Popular Tags Tags list not available conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "button", @@ -7530,7 +7450,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "26e814be78761ba9", + "valueHash": "12ac6e5e7e965b6c", "containsCanary": true } ], @@ -7541,10 +7461,10 @@ } }, "afterNewTab": { - "at": 5544, + "at": 5656, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", - "domHash": "507501d758ecbedc", + "domHash": "c02ac7532ea5ad22", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -7556,9 +7476,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "00e9987ca17dfa45", + "textHash": "aa9f38caded9e1b1", "visualHash": "4ab503dc0bf627e7", - "text": "conduit Source code Home New Article RD_TEST_63F192_1 Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", + "text": "conduit Source code Home New Article RD_TEST_184709_1 Sign up Sign in to your account Sign up conduit An interactive learning project from Thinkster. Code & design licensed under MIT. Source code", "controls": [ { "tag": "input", @@ -7602,7 +7522,7 @@ "local": [ { "key": "loggedUser", - "valueHash": "26e814be78761ba9", + "valueHash": "12ac6e5e7e965b6c", "containsCanary": true } ], @@ -7613,7 +7533,7 @@ } }, "afterNewContext": { - "at": 6847, + "at": 6922, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -7652,6 +7572,15 @@ } }, "persistenceScope": "SOURCE_OF_TRUTH_CONFIRMED", + "traceSuppression": { + "artifact": "trace", + "reason": "secret-detected", + "findingKinds": [ + "exact-secret", + "jwt", + "sensitive-field" + ] + }, "sourceDiffs": [ { "adapter": "sqlite", @@ -7720,7 +7649,7 @@ "adapter": "sqlite", "resource": "Users", "added": [ - "2766c815d1c00dbe" + "186347d9ea7673a2" ], "removed": [], "changed": [], @@ -7790,31 +7719,31 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:42:33.981Z", - "durationMs": 2411, - "canary": "RD_TEST_4C4DEB", + "startedAt": "2026-07-26T10:52:13.516Z", + "durationMs": 2479, + "canary": "RD_TEST_FC15DA", "network": [ { "id": "net-1", "method": "GET", "url": "http://127.0.0.1:37211/api/articles?limit=3&&offset=0", "resourceType": "xhr", - "startedAt": 1457, + "startedAt": 1510, "status": 200, "ok": true, "contentType": "application/json", "resourceTypeHint": "articles", - "finishedAt": 1462 + "finishedAt": 1517 }, { "id": "net-2", "method": "GET", "url": "http://127.0.0.1:37211/api/tags", "resourceType": "xhr", - "startedAt": 1457, + "startedAt": 1511, "status": 200, "ok": true, - "finishedAt": 1463, + "finishedAt": 1517, "contentType": "application/json", "resourceTypeHint": "tags" } @@ -7835,35 +7764,35 @@ "weight": 92, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 5 + "elapsedMs": 7 }, { "strategy": "role", "weight": 82, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 3 + "elapsedMs": 6 }, { "strategy": "href", "weight": 72, "matchCount": 0, "visibleCount": 0, - "elapsedMs": 1 + "elapsedMs": 2 }, { "strategy": "text", "weight": 60, "matchCount": 2, "visibleCount": 2, - "elapsedMs": 2 + "elapsedMs": 8 }, { "strategy": "css", "weight": 35, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 2 + "elapsedMs": 4 } ], "chosenStrategy": "css", @@ -7871,7 +7800,7 @@ "retryCount": 0 }, "before": { - "at": 1424, + "at": 1462, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -7937,7 +7866,7 @@ } }, "beforeAction": { - "at": 1430, + "at": 1471, "url": "http://127.0.0.1:37211/#/register", "title": "Conduit", "domHash": "1f4fa65964895f4c", @@ -8005,7 +7934,7 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2407, + "at": 2476, "url": "http://127.0.0.1:37211/#/", "title": "Conduit", "domHash": "3c44d4d1ff59317a", @@ -8043,6 +7972,7 @@ "indexedDb": [] } }, + "trace": "traces/f79995dd7ed7.zip", "snapshotIndex": "snapshots/RD-018.index.json" }, "verdict": "VERIFIED", @@ -8856,8 +8786,8 @@ ], "environment": { "status": "VALID", - "checkedAt": "2026-07-26T08:41:36.546Z", - "durationMs": 3913, + "checkedAt": "2026-07-26T10:51:14.663Z", + "durationMs": 3843, "targetUrl": "http://127.0.0.1:37211/", "mainDocument": { "status": 200, diff --git a/release/evidence/raw/todomvc.scan.json b/release/evidence/raw/todomvc.scan.json index b888b81..f566abf 100644 --- a/release/evidence/raw/todomvc.scan.json +++ b/release/evidence/raw/todomvc.scan.json @@ -1,9 +1,9 @@ { "schemaVersion": "1.0", - "scanId": "20260726T081307Z-637b", - "targetUrl": "http://127.0.0.1:37281/examples/react/dist/", - "startedAt": "2026-07-26T08:13:07.707Z", - "finishedAt": "2026-07-26T08:13:24.832Z", + "scanId": "20260726T102927Z-70c7", + "targetUrl": "http://127.0.0.1:37282/examples/react/dist/", + "startedAt": "2026-07-26T10:29:27.792Z", + "finishedAt": "2026-07-26T10:29:44.503Z", "options": { "maxPages": 2, "maxActions": 20, @@ -41,12 +41,12 @@ }, "pages": [ { - "url": "http://127.0.0.1:37281/examples/react/dist/", + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", "actions": [ { - "id": "a648a1fe4475", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "5c96781a2d4a", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Source", "activation": "click", "kind": "navigation", @@ -96,8 +96,8 @@ "fields": [] }, { - "id": "371506dd6bc1", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "1accd238e942", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Demo", "activation": "click", "kind": "navigation", @@ -110,7 +110,7 @@ "role": "link", "accessibleName": "Demo", "text": "Demo", - "href": "http://127.0.0.1:37281/examples/typescript-react", + "href": "http://127.0.0.1:37282/examples/typescript-react", "candidates": [ { "strategy": "role", @@ -129,7 +129,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:37281/examples/typescript-react" + "value": "http://127.0.0.1:37282/examples/typescript-react" }, { "strategy": "text", @@ -147,8 +147,8 @@ "fields": [] }, { - "id": "0c21eea9d35a", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "4fbbba7427dc", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Source", "activation": "click", "kind": "navigation", @@ -198,8 +198,8 @@ "fields": [] }, { - "id": "138fd677a27c", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "fd4dd0395956", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "React", "activation": "click", "kind": "navigation", @@ -249,8 +249,8 @@ "fields": [] }, { - "id": "2b3591622da9", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "439a07d4ec15", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Quick Start", "activation": "click", "kind": "navigation", @@ -300,8 +300,8 @@ "fields": [] }, { - "id": "fb1a8a81551a", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "21fdaa901a31", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "API Reference", "activation": "click", "kind": "navigation", @@ -351,8 +351,8 @@ "fields": [] }, { - "id": "537ea2ada93c", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "64865107a530", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Philosophy", "activation": "click", "kind": "navigation", @@ -402,8 +402,8 @@ "fields": [] }, { - "id": "195cf1362372", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "e4e33d4d519a", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "React Community", "activation": "click", "kind": "navigation", @@ -453,8 +453,8 @@ "fields": [] }, { - "id": "e590eb6c9f2e", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "690e1d54dfe9", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "ReactJS on Stack Overflow", "activation": "click", "kind": "navigation", @@ -504,8 +504,8 @@ "fields": [] }, { - "id": "9d8b9b6cd1ac", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "703fac4adf34", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "let us know", "activation": "click", "kind": "navigation", @@ -555,8 +555,8 @@ "fields": [] }, { - "id": "bc3124709ecf", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "dc203b781336", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "New Todo Input", "activation": "enter", "kind": "mutation", @@ -611,8 +611,8 @@ ] }, { - "id": "15c861c63aff", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "8ee9f25813d5", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "TodoMVC", "activation": "click", "kind": "navigation", @@ -664,12 +664,12 @@ ] }, { - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", "actions": [ { - "id": "9f2414f5f8f0", - "pageUrl": "http://127.0.0.1:37281/examples/typescript-react/#/", + "id": "0956bb6bbaa2", + "pageUrl": "http://127.0.0.1:37282/examples/typescript-react/#/", "label": "What needs to be done?", "activation": "enter", "kind": "mutation", @@ -716,8 +716,8 @@ ] }, { - "id": "292678b6efda", - "pageUrl": "http://127.0.0.1:37281/examples/typescript-react/#/", + "id": "506abaa80116", + "pageUrl": "http://127.0.0.1:37282/examples/typescript-react/#/", "label": "Remo H. Jansen", "activation": "click", "kind": "navigation", @@ -767,8 +767,8 @@ "fields": [] }, { - "id": "89af6cc813cd", - "pageUrl": "http://127.0.0.1:37281/examples/typescript-react/#/", + "id": "4d94cf5a1297", + "pageUrl": "http://127.0.0.1:37282/examples/typescript-react/#/", "label": "TodoMVC", "activation": "click", "kind": "navigation", @@ -824,8 +824,8 @@ { "id": "RD-001", "action": { - "id": "371506dd6bc1", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "1accd238e942", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Demo", "activation": "click", "kind": "navigation", @@ -838,7 +838,7 @@ "role": "link", "accessibleName": "Demo", "text": "Demo", - "href": "http://127.0.0.1:37281/examples/typescript-react", + "href": "http://127.0.0.1:37282/examples/typescript-react", "candidates": [ { "strategy": "role", @@ -857,7 +857,7 @@ { "strategy": "href", "weight": 72, - "value": "http://127.0.0.1:37281/examples/typescript-react" + "value": "http://127.0.0.1:37282/examples/typescript-react" }, { "strategy": "text", @@ -875,79 +875,79 @@ "fields": [] }, "evidence": { - "startedAt": "2026-07-26T08:13:11.675Z", - "durationMs": 2118, - "canary": "RD_TEST_63DDA0", + "startedAt": "2026-07-26T10:29:31.536Z", + "durationMs": 2059, + "canary": "RD_TEST_D7CAAB", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react", + "url": "http://127.0.0.1:37282/examples/typescript-react", "resourceType": "document", - "startedAt": 1130, + "startedAt": 1082, "status": 301, "ok": false, - "finishedAt": 1134, - "location": "http://127.0.0.1:37281/examples/typescript-react/", + "finishedAt": 1086, + "location": "http://127.0.0.1:37282/examples/typescript-react/", "resourceTypeHint": "typescript-react" }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/", + "url": "http://127.0.0.1:37282/examples/typescript-react/", "resourceType": "document", - "startedAt": 1134, + "startedAt": 1086, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "typescript-react", - "finishedAt": 1144 + "finishedAt": 1096 }, { "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/todomvc-common/base.css", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/todomvc-common/base.css", "resourceType": "stylesheet", - "startedAt": 1141, + "startedAt": 1093, "status": 200, "ok": true, - "finishedAt": 1152, + "finishedAt": 1103, "contentType": "text/css", "resourceTypeHint": "base.css" }, { "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/todomvc-app-css/index.css", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/todomvc-app-css/index.css", "resourceType": "stylesheet", - "startedAt": 1142, + "startedAt": 1094, "status": 200, "ok": true, - "finishedAt": 1153, "contentType": "text/css", - "resourceTypeHint": "index.css" + "resourceTypeHint": "index.css", + "finishedAt": 1104 }, { "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/director/build/director.js", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/director/build/director.js", "resourceType": "script", - "startedAt": 1142, + "startedAt": 1094, "status": 200, "ok": true, - "finishedAt": 1157, + "finishedAt": 1110, "contentType": "application/javascript", "resourceTypeHint": "director.js" }, { "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/js/bundle.js", + "url": "http://127.0.0.1:37282/examples/typescript-react/js/bundle.js", "resourceType": "script", - "startedAt": 1144, + "startedAt": 1095, "status": 200, "ok": true, - "finishedAt": 1168, + "finishedAt": 1120, "contentType": "application/javascript", "resourceTypeHint": "bundle.js" } @@ -968,7 +968,7 @@ "weight": 92, "matchCount": 1, "visibleCount": 1, - "elapsedMs": 8 + "elapsedMs": 9 } ], "chosenStrategy": "role", @@ -976,8 +976,8 @@ "retryCount": 0 }, "before": { - "at": 1081, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 1033, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", "domHash": "84ea4bd670111ab8", "canaryPresent": false, @@ -1031,8 +1031,8 @@ } }, "beforeAction": { - "at": 1095, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 1045, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", "domHash": "84ea4bd670111ab8", "canaryPresent": false, @@ -1087,8 +1087,8 @@ }, "networkSettled": true, "after": { - "at": 2107, - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "at": 2049, + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", "domHash": "12538a75df36416c", "canaryPresent": false, @@ -1126,7 +1126,7 @@ "indexedDb": [] } }, - "trace": "traces/371506dd6bc1.zip", + "trace": "traces/1accd238e942.zip", "snapshotIndex": "snapshots/RD-001.index.json" }, "verdict": "VERIFIED", @@ -1137,8 +1137,8 @@ { "id": "RD-002", "action": { - "id": "bc3124709ecf", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "dc203b781336", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "New Todo Input", "activation": "enter", "kind": "mutation", @@ -1193,127 +1193,127 @@ ] }, "evidence": { - "startedAt": "2026-07-26T08:13:13.828Z", - "durationMs": 5427, - "canary": "RD_TEST_848118", + "startedAt": "2026-07-26T10:29:33.647Z", + "durationMs": 5247, + "canary": "RD_TEST_A3B566", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:37281/examples/react/dist/", + "url": "http://127.0.0.1:37282/examples/react/dist/", "resourceType": "document", - "startedAt": 2018, + "startedAt": 1992, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "dist", - "finishedAt": 2028 + "finishedAt": 2001 }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:37281/examples/react/dist/app.bundle.js", + "url": "http://127.0.0.1:37282/examples/react/dist/app.bundle.js", "resourceType": "script", - "startedAt": 2027, + "startedAt": 2000, "status": 200, "ok": true, - "finishedAt": 2046, + "finishedAt": 2018, "contentType": "application/javascript", "resourceTypeHint": "app.bundle.js" }, { "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:37281/examples/react/dist/app.css", + "url": "http://127.0.0.1:37282/examples/react/dist/app.css", "resourceType": "stylesheet", - "startedAt": 2027, + "startedAt": 2000, "status": 200, "ok": true, - "finishedAt": 2055, + "finishedAt": 2013, "contentType": "text/css", "resourceTypeHint": "app.css" }, { "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:37281/examples/react/dist/base.js", + "url": "http://127.0.0.1:37282/examples/react/dist/base.js", "resourceType": "script", - "startedAt": 2028, + "startedAt": 2001, "status": 200, "ok": true, - "finishedAt": 2056, + "finishedAt": 2014, "contentType": "application/javascript", "resourceTypeHint": "base.js" }, { "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:37281/learn.json", + "url": "http://127.0.0.1:37282/learn.json", "resourceType": "xhr", - "startedAt": 2056, + "startedAt": 2014, "status": 200, "ok": true, - "finishedAt": 2065, + "finishedAt": 2020, "contentType": "application/json", "resourceTypeHint": "learn.json" }, { "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:37281/examples/react/dist/", + "url": "http://127.0.0.1:37282/examples/react/dist/", "resourceType": "document", - "startedAt": 2849, + "startedAt": 2825, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "dist", - "finishedAt": 2859 + "finishedAt": 2834 }, { "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:37281/examples/react/dist/app.bundle.js", + "url": "http://127.0.0.1:37282/examples/react/dist/app.bundle.js", "resourceType": "script", - "startedAt": 2857, + "startedAt": 2832, "status": 200, "ok": true, - "finishedAt": 2877, + "finishedAt": 2862, "contentType": "application/javascript", "resourceTypeHint": "app.bundle.js" }, { "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:37281/examples/react/dist/app.css", + "url": "http://127.0.0.1:37282/examples/react/dist/app.css", "resourceType": "stylesheet", - "startedAt": 2858, + "startedAt": 2833, "status": 200, "ok": true, - "finishedAt": 2872, "contentType": "text/css", - "resourceTypeHint": "app.css" + "resourceTypeHint": "app.css", + "finishedAt": 2858 }, { "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:37281/examples/react/dist/base.js", + "url": "http://127.0.0.1:37282/examples/react/dist/base.js", "resourceType": "script", - "startedAt": 2858, + "startedAt": 2833, "status": 200, "ok": true, - "finishedAt": 2873, + "finishedAt": 2859, "contentType": "application/javascript", "resourceTypeHint": "base.js" }, { "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:37281/learn.json", + "url": "http://127.0.0.1:37282/learn.json", "resourceType": "xhr", - "startedAt": 2873, + "startedAt": 2859, "status": 200, "ok": true, - "finishedAt": 2889, + "finishedAt": 2865, "contentType": "application/json", "resourceTypeHint": "learn.json" } @@ -1326,7 +1326,7 @@ "selector": "[data-testid=\"text-input\"]", "name": "New Todo Input", "type": "text", - "value": "RD_TEST_848118_1", + "value": "RD_TEST_A3B566_1", "redacted": false } ], @@ -1350,8 +1350,8 @@ "retryCount": 0 }, "before": { - "at": 1009, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 1011, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", "domHash": "84ea4bd670111ab8", "canaryPresent": false, @@ -1405,10 +1405,10 @@ } }, "beforeAction": { - "at": 1035, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 1032, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", - "domHash": "2de441e4ba4d8d9d", + "domHash": "e717acb9027cda82", "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -1427,7 +1427,7 @@ { "tag": "input", "type": "text", - "valueHash": "e3316bb4a662a1a6", + "valueHash": "f939a4d4af014b31", "checked": false, "disabled": false, "visible": true @@ -1463,10 +1463,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 1949, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 1930, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", - "domHash": "dd1d56c59868eeb8", + "domHash": "a7569bfb755c08b1", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -1478,9 +1478,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "7c9137f4727ad3af", + "textHash": "8c99f2f0463ea29e", "visualHash": "95e7119833ff437e", - "text": "React React Source TypeScript + React Demo, Source React is a JavaScript library for building user interfaces. You compose UI from function components and describe state with hooks; React handles the rendering and keeps the UI in sync as state changes. The modern ecosystem (createRoot, Suspense, Server Components) builds on the same component model. React Official Resources Quick Start API Reference Philosophy React Community Community ReactJS on Stack Overflow If you have other helpful links to share, or find any of the links above no longer work, please let us know. todos Toggle All Input RD_TEST_848118_1 1 item left! AllActiveCompleted Double-click to edit a todo Created by the TodoMVC Team Part of TodoMVC", + "text": "React React Source TypeScript + React Demo, Source React is a JavaScript library for building user interfaces. You compose UI from function components and describe state with hooks; React handles the rendering and keeps the UI in sync as state changes. The modern ecosystem (createRoot, Suspense, Server Components) builds on the same component model. React Official Resources Quick Start API Reference Philosophy React Community Community ReactJS on Stack Overflow If you have other helpful links to share, or find any of the links above no longer work, please let us know. todos Toggle All Input RD_TEST_A3B566_1 1 item left! AllActiveCompleted Double-click to edit a todo Created by the TodoMVC Team Part of TodoMVC", "controls": [ { "tag": "input", @@ -1532,10 +1532,10 @@ "indexedDb": [] } }, - "screenshot": "screenshots/bc3124709ecf-after.png", + "screenshot": "screenshots/dc203b781336-after.png", "afterRefresh": { - "at": 2782, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 2750, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", "domHash": "84ea4bd670111ab8", "canaryPresent": false, @@ -1588,10 +1588,10 @@ "indexedDb": [] } }, - "refreshScreenshot": "screenshots/bc3124709ecf-refresh.png", + "refreshScreenshot": "screenshots/dc203b781336-refresh.png", "afterHardRefresh": { - "at": 3621, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 3601, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", "domHash": "84ea4bd670111ab8", "canaryPresent": false, @@ -1645,8 +1645,8 @@ } }, "afterNewTab": { - "at": 4498, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 4438, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", "domHash": "84ea4bd670111ab8", "canaryPresent": false, @@ -1700,8 +1700,8 @@ } }, "afterNewContext": { - "at": 5423, - "url": "http://127.0.0.1:37281/examples/react/dist/", + "at": 5244, + "url": "http://127.0.0.1:37282/examples/react/dist/", "title": "TodoMVC: React", "domHash": "84ea4bd670111ab8", "canaryPresent": false, @@ -1755,7 +1755,7 @@ } }, "persistenceScope": "MEMORY_ONLY", - "trace": "traces/bc3124709ecf.zip", + "trace": "traces/dc203b781336.zip", "snapshotIndex": "snapshots/RD-002.index.json" }, "verdict": "EPHEMERAL", @@ -1782,8 +1782,8 @@ { "id": "RD-003", "action": { - "id": "9f2414f5f8f0", - "pageUrl": "http://127.0.0.1:37281/examples/typescript-react/#/", + "id": "0956bb6bbaa2", + "pageUrl": "http://127.0.0.1:37282/examples/typescript-react/#/", "label": "What needs to be done?", "activation": "enter", "kind": "mutation", @@ -1830,127 +1830,127 @@ ] }, "evidence": { - "startedAt": "2026-07-26T08:13:19.323Z", - "durationMs": 5476, - "canary": "RD_TEST_02A394", + "startedAt": "2026-07-26T10:29:38.968Z", + "durationMs": 5321, + "canary": "RD_TEST_E76C83", "network": [ { "id": "net-1", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/", + "url": "http://127.0.0.1:37282/examples/typescript-react/", "resourceType": "document", - "startedAt": 2047, + "startedAt": 1989, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "typescript-react", - "finishedAt": 2056 + "finishedAt": 1999 }, { "id": "net-2", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/todomvc-common/base.css", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/todomvc-common/base.css", "resourceType": "stylesheet", - "startedAt": 2054, + "startedAt": 1997, "status": 200, "ok": true, - "finishedAt": 2060, + "finishedAt": 2027, "contentType": "text/css", "resourceTypeHint": "base.css" }, { "id": "net-3", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/todomvc-app-css/index.css", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/todomvc-app-css/index.css", "resourceType": "stylesheet", - "startedAt": 2054, + "startedAt": 1998, "status": 200, "ok": true, + "finishedAt": 2028, "contentType": "text/css", - "resourceTypeHint": "index.css", - "finishedAt": 2071 + "resourceTypeHint": "index.css" }, { "id": "net-4", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/director/build/director.js", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/director/build/director.js", "resourceType": "script", - "startedAt": 2055, + "startedAt": 1999, "status": 200, "ok": true, - "finishedAt": 2072, + "finishedAt": 2030, "contentType": "application/javascript", "resourceTypeHint": "director.js" }, { "id": "net-5", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/js/bundle.js", + "url": "http://127.0.0.1:37282/examples/typescript-react/js/bundle.js", "resourceType": "script", - "startedAt": 2055, + "startedAt": 1999, "status": 200, "ok": true, - "finishedAt": 2094, + "finishedAt": 2039, "contentType": "application/javascript", "resourceTypeHint": "bundle.js" }, { "id": "net-6", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/", + "url": "http://127.0.0.1:37282/examples/typescript-react/", "resourceType": "document", - "startedAt": 2898, + "startedAt": 2833, "status": 200, "ok": true, "contentType": "text/html", "resourceTypeHint": "typescript-react", - "finishedAt": 2907 + "finishedAt": 2844 }, { "id": "net-7", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/todomvc-common/base.css", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/todomvc-common/base.css", "resourceType": "stylesheet", - "startedAt": 2905, + "startedAt": 2841, "status": 200, "ok": true, - "finishedAt": 2911, + "finishedAt": 2849, "contentType": "text/css", "resourceTypeHint": "base.css" }, { "id": "net-8", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/todomvc-app-css/index.css", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/todomvc-app-css/index.css", "resourceType": "stylesheet", - "startedAt": 2906, + "startedAt": 2842, "status": 200, "ok": true, - "finishedAt": 2914, + "finishedAt": 2861, "contentType": "text/css", "resourceTypeHint": "index.css" }, { "id": "net-9", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/node_modules/director/build/director.js", + "url": "http://127.0.0.1:37282/examples/typescript-react/node_modules/director/build/director.js", "resourceType": "script", - "startedAt": 2906, + "startedAt": 2843, "status": 200, "ok": true, - "finishedAt": 2919, + "finishedAt": 2858, "contentType": "application/javascript", "resourceTypeHint": "director.js" }, { "id": "net-10", "method": "GET", - "url": "http://127.0.0.1:37281/examples/typescript-react/js/bundle.js", + "url": "http://127.0.0.1:37282/examples/typescript-react/js/bundle.js", "resourceType": "script", - "startedAt": 2907, + "startedAt": 2843, "status": 200, "ok": true, - "finishedAt": 2927, + "finishedAt": 2871, "contentType": "application/javascript", "resourceTypeHint": "bundle.js" } @@ -1963,7 +1963,7 @@ "selector": "body > section > div > header > input", "name": "What needs to be done?", "type": "text", - "value": "RD_TEST_02A394_1", + "value": "RD_TEST_E76C83_1", "redacted": false } ], @@ -1987,8 +1987,8 @@ "retryCount": 0 }, "before": { - "at": 1082, - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "at": 1030, + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", "domHash": "12538a75df36416c", "canaryPresent": false, @@ -2027,10 +2027,10 @@ } }, "beforeAction": { - "at": 1105, - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "at": 1050, + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", - "domHash": "df6a8ef80ec3e428", + "domHash": "c1b7344011f6d77d", "canaryPresent": true, "bodyCanaryPresent": false, "temporaryBlobUrls": 0, @@ -2049,7 +2049,7 @@ { "tag": "input", "type": "text", - "valueHash": "0bec6eac64c7aa6f", + "valueHash": "bd4367cb05fa4b2f", "checked": false, "disabled": false, "visible": true @@ -2070,10 +2070,10 @@ "networkSettled": true, "targetBusyAfter": false, "after": { - "at": 2007, - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "at": 1948, + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", - "domHash": "e35ed0ff08316dd8", + "domHash": "b04740d6631e367e", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -2085,9 +2085,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "22cabfbc912bb5f7", + "textHash": "cc1856329cf7c673", "visualHash": "23536a708be967a8", - "text": "todos Mark all as complete RD_TEST_02A394_1 1 item left All Active Completed Double-click to edit a todo Created by Remo H. Jansen Part of TodoMVC", + "text": "todos Mark all as complete RD_TEST_E76C83_1 1 item left All Active Completed Double-click to edit a todo Created by Remo H. Jansen Part of TodoMVC", "controls": [ { "tag": "input", @@ -2123,7 +2123,7 @@ { "tag": "input", "type": "text", - "valueHash": "0bec6eac64c7aa6f", + "valueHash": "bd4367cb05fa4b2f", "checked": false, "disabled": false, "visible": false @@ -2136,7 +2136,7 @@ "local": [ { "key": "react-todos", - "valueHash": "f6d2b84d1a820f09", + "valueHash": "63f9a7c3b6f39432", "containsCanary": true } ], @@ -2146,12 +2146,12 @@ "indexedDb": [] } }, - "screenshot": "screenshots/9f2414f5f8f0-after.png", + "screenshot": "screenshots/0956bb6bbaa2-after.png", "afterRefresh": { - "at": 2861, - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "at": 2795, + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", - "domHash": "e35ed0ff08316dd8", + "domHash": "b04740d6631e367e", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -2163,9 +2163,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "22cabfbc912bb5f7", + "textHash": "cc1856329cf7c673", "visualHash": "23536a708be967a8", - "text": "todos Mark all as complete RD_TEST_02A394_1 1 item left All Active Completed Double-click to edit a todo Created by Remo H. Jansen Part of TodoMVC", + "text": "todos Mark all as complete RD_TEST_E76C83_1 1 item left All Active Completed Double-click to edit a todo Created by Remo H. Jansen Part of TodoMVC", "controls": [ { "tag": "input", @@ -2201,7 +2201,7 @@ { "tag": "input", "type": "text", - "valueHash": "0bec6eac64c7aa6f", + "valueHash": "bd4367cb05fa4b2f", "checked": false, "disabled": false, "visible": false @@ -2214,7 +2214,7 @@ "local": [ { "key": "react-todos", - "valueHash": "f6d2b84d1a820f09", + "valueHash": "63f9a7c3b6f39432", "containsCanary": true } ], @@ -2224,12 +2224,12 @@ "indexedDb": [] } }, - "refreshScreenshot": "screenshots/9f2414f5f8f0-refresh.png", + "refreshScreenshot": "screenshots/0956bb6bbaa2-refresh.png", "afterHardRefresh": { - "at": 3698, - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "at": 3631, + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", - "domHash": "e35ed0ff08316dd8", + "domHash": "b04740d6631e367e", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -2241,9 +2241,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "22cabfbc912bb5f7", + "textHash": "cc1856329cf7c673", "visualHash": "23536a708be967a8", - "text": "todos Mark all as complete RD_TEST_02A394_1 1 item left All Active Completed Double-click to edit a todo Created by Remo H. Jansen Part of TodoMVC", + "text": "todos Mark all as complete RD_TEST_E76C83_1 1 item left All Active Completed Double-click to edit a todo Created by Remo H. Jansen Part of TodoMVC", "controls": [ { "tag": "input", @@ -2279,7 +2279,7 @@ { "tag": "input", "type": "text", - "valueHash": "0bec6eac64c7aa6f", + "valueHash": "bd4367cb05fa4b2f", "checked": false, "disabled": false, "visible": false @@ -2292,7 +2292,7 @@ "local": [ { "key": "react-todos", - "valueHash": "f6d2b84d1a820f09", + "valueHash": "63f9a7c3b6f39432", "containsCanary": true } ], @@ -2303,10 +2303,10 @@ } }, "afterNewTab": { - "at": 4657, - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "at": 4501, + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", - "domHash": "e35ed0ff08316dd8", + "domHash": "b04740d6631e367e", "canaryPresent": true, "bodyCanaryPresent": true, "temporaryBlobUrls": 0, @@ -2318,9 +2318,9 @@ "accessDenied": false }, "semanticDom": { - "textHash": "22cabfbc912bb5f7", + "textHash": "cc1856329cf7c673", "visualHash": "23536a708be967a8", - "text": "todos Mark all as complete RD_TEST_02A394_1 1 item left All Active Completed Double-click to edit a todo Created by Remo H. Jansen Part of TodoMVC", + "text": "todos Mark all as complete RD_TEST_E76C83_1 1 item left All Active Completed Double-click to edit a todo Created by Remo H. Jansen Part of TodoMVC", "controls": [ { "tag": "input", @@ -2356,7 +2356,7 @@ { "tag": "input", "type": "text", - "valueHash": "0bec6eac64c7aa6f", + "valueHash": "bd4367cb05fa4b2f", "checked": false, "disabled": false, "visible": false @@ -2369,7 +2369,7 @@ "local": [ { "key": "react-todos", - "valueHash": "f6d2b84d1a820f09", + "valueHash": "63f9a7c3b6f39432", "containsCanary": true } ], @@ -2380,8 +2380,8 @@ } }, "afterNewContext": { - "at": 5473, - "url": "http://127.0.0.1:37281/examples/typescript-react/#/", + "at": 5318, + "url": "http://127.0.0.1:37282/examples/typescript-react/#/", "title": "React • TodoMVC", "domHash": "12538a75df36416c", "canaryPresent": false, @@ -2420,7 +2420,7 @@ } }, "persistenceScope": "BROWSER_LOCAL", - "trace": "traces/9f2414f5f8f0.zip", + "trace": "traces/0956bb6bbaa2.zip", "snapshotIndex": "snapshots/RD-003.index.json" }, "verdict": "BROWSER_LOCAL", @@ -2442,8 +2442,8 @@ { "id": "RD-004", "action": { - "id": "a648a1fe4475", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "5c96781a2d4a", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Source", "activation": "click", "kind": "navigation", @@ -2515,8 +2515,8 @@ { "id": "RD-005", "action": { - "id": "0c21eea9d35a", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "4fbbba7427dc", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Source", "activation": "click", "kind": "navigation", @@ -2588,8 +2588,8 @@ { "id": "RD-006", "action": { - "id": "138fd677a27c", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "fd4dd0395956", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "React", "activation": "click", "kind": "navigation", @@ -2661,8 +2661,8 @@ { "id": "RD-007", "action": { - "id": "2b3591622da9", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "439a07d4ec15", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Quick Start", "activation": "click", "kind": "navigation", @@ -2734,8 +2734,8 @@ { "id": "RD-008", "action": { - "id": "fb1a8a81551a", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "21fdaa901a31", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "API Reference", "activation": "click", "kind": "navigation", @@ -2807,8 +2807,8 @@ { "id": "RD-009", "action": { - "id": "537ea2ada93c", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "64865107a530", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "Philosophy", "activation": "click", "kind": "navigation", @@ -2880,8 +2880,8 @@ { "id": "RD-010", "action": { - "id": "195cf1362372", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "e4e33d4d519a", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "React Community", "activation": "click", "kind": "navigation", @@ -2953,8 +2953,8 @@ { "id": "RD-011", "action": { - "id": "e590eb6c9f2e", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "690e1d54dfe9", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "ReactJS on Stack Overflow", "activation": "click", "kind": "navigation", @@ -3026,8 +3026,8 @@ { "id": "RD-012", "action": { - "id": "9d8b9b6cd1ac", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "703fac4adf34", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "let us know", "activation": "click", "kind": "navigation", @@ -3099,8 +3099,8 @@ { "id": "RD-013", "action": { - "id": "15c861c63aff", - "pageUrl": "http://127.0.0.1:37281/examples/react/dist/", + "id": "8ee9f25813d5", + "pageUrl": "http://127.0.0.1:37282/examples/react/dist/", "label": "TodoMVC", "activation": "click", "kind": "navigation", @@ -3172,8 +3172,8 @@ { "id": "RD-014", "action": { - "id": "292678b6efda", - "pageUrl": "http://127.0.0.1:37281/examples/typescript-react/#/", + "id": "506abaa80116", + "pageUrl": "http://127.0.0.1:37282/examples/typescript-react/#/", "label": "Remo H. Jansen", "activation": "click", "kind": "navigation", @@ -3245,8 +3245,8 @@ { "id": "RD-015", "action": { - "id": "89af6cc813cd", - "pageUrl": "http://127.0.0.1:37281/examples/typescript-react/#/", + "id": "4d94cf5a1297", + "pageUrl": "http://127.0.0.1:37282/examples/typescript-react/#/", "label": "TodoMVC", "activation": "click", "kind": "navigation", @@ -3318,9 +3318,9 @@ ], "environment": { "status": "VALID", - "checkedAt": "2026-07-26T08:13:07.778Z", - "durationMs": 1826, - "targetUrl": "http://127.0.0.1:37281/examples/react/dist/", + "checkedAt": "2026-07-26T10:29:27.881Z", + "durationMs": 1720, + "targetUrl": "http://127.0.0.1:37282/examples/react/dist/", "mainDocument": { "status": 200, "contentType": "text/html" diff --git a/release/evidence/todomvc.json b/release/evidence/todomvc.json index cf7e7c4..78e309e 100644 --- a/release/evidence/todomvc.json +++ b/release/evidence/todomvc.json @@ -1,7 +1,7 @@ { "schemaVersion": "1.0", - "generatedAt": "2026-07-26T08:45:00.000Z", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "generatedAt": "2026-07-26T11:10:00.000Z", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "case": { "name": "TodoMVC React", "repository": "tastejs/todomvc", @@ -12,9 +12,9 @@ "capabilities": [] }, "scan": { - "scanId": "20260726T081307Z-637b", + "scanId": "20260726T102927Z-70c7", "sourceArtifact": "release/evidence/raw/todomvc.scan.json", - "sourceSha256": "4b8468bb5683560e77e50560a5d5740d413fb3aee01999ac869a462f0bc04d7c", + "sourceSha256": "1a97a641a581beb42ad08040bb430b1a1449c26b2221288f1796b38a06cfb06b", "environmentStatus": "VALID", "truncated": false, "pagesDiscovered": 2, diff --git a/release/external-cases.json b/release/external-cases.json index 67c5544..c8cb8a1 100644 --- a/release/external-cases.json +++ b/release/external-cases.json @@ -4,8 +4,8 @@ "repository": "tastejs/todomvc", "pinnedCommit": "ff43b02e59dfa604386bb382034b2cd07c2bcd8a", "evidenceFile": "release/evidence/todomvc.json", - "evidenceSha256": "ebdadb84473700f5247c082aca4a83305d48590dcb0b9220374b149918bc2099", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "evidenceSha256": "5ee386aa8c7f638d73b005d9c2098cfeaf2b07ebfd066bdc1fcb9479599fbb45", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "status": "passed", "environmentValid": true, "severeRegressions": 0, @@ -16,8 +16,8 @@ "repository": "actualbudget/actual", "pinnedCommit": "7325498af773d591a7bc70d5af16d3912f566654", "evidenceFile": "release/evidence/actual-budget.json", - "evidenceSha256": "5655faed4242af58c462cde095d4bd1cb69167a7630f9e4b91086b132e5c86af", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "evidenceSha256": "616e829e0fc0e8c71bb0f31f6a8560734824a457c522d67b8e6f75d63d84efe8", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "status": "passed", "environmentValid": true, "severeRegressions": 0, @@ -28,8 +28,8 @@ "repository": "TonyMckes/conduit-realworld-example-app", "pinnedCommit": "5e127d8569b300e0a21dc2c20ea680da4967b1aa", "evidenceFile": "release/evidence/conduit.json", - "evidenceSha256": "08c747a315a32e7352c135e535e6702141c844c0038e932ad0a260502798bf71", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "evidenceSha256": "a31d1f6c2aa845609593167a20463834676c0ad0a59bb94c3728d1f7722ea9d8", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "status": "passed", "environmentValid": true, "severeRegressions": 0, @@ -42,8 +42,8 @@ "repository": "TonyMckes/conduit-realworld-example-app", "pinnedCommit": "5e127d8569b300e0a21dc2c20ea680da4967b1aa", "evidenceFile": "release/evidence/conduit-sources.json", - "evidenceSha256": "d156cd87735e226fa65ee052c7be900ccb30e163cad46656a9bf25dfde48168e", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "evidenceSha256": "267e250e8d2bdceb2fb461d05ad524d3aeb7a483e6227eedb04e92274f9e3804", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "status": "passed", "environmentValid": true, "severeRegressions": 0, @@ -59,8 +59,8 @@ "repository": "local/Pocket-Ledger", "pinnedCommit": "fab4847595ec9edff4442fd93d622d5f8ca7d519", "evidenceFile": "release/evidence/ai-agent-cycle.json", - "evidenceSha256": "205881e58c7772a542b3ddf63f51da22a732338060e280451c76693f79041c16", - "engineFingerprint": "f3f65840e53777056fed4fc770853a522da85c46626f5bc910853515c266cc1a", + "evidenceSha256": "af5beb190c0fae982b72c3bc0a1bed81b5cb64b07177b017ff9419ed095ec2e8", + "engineFingerprint": "0b39d54299d3c50d0f002382e04d569591d56c10c1fca5623d331b374221d047", "status": "passed", "environmentValid": true, "severeRegressions": 0,