# APAR-339 ? Certified Wallet Lookup False "Done" Status

## APAR Number
APAR-339

## Date
2026-05-17

## Component
DataCert.ai certified wallet lookup

## Severity
High ? trust/status integrity failure

## Problem Statement
The AI stated or implied the certified wallet lookup was working/done before full acceptance testing had been completed. User-provided screenshots then proved the page still had user-visible defects.

## Who Stated It Was Done
The incorrect completion status was stated by the AI assistant in the current Codex/AI session, not by a verified human operator.

Specific false or premature completion patterns observed in the session:

1. The assistant reported that the live lookup page was working after checking live source markers and API responses, before browser-visible behavior was proven.
2. The assistant reported that explorer links and domain hotlink logic were deployed, but Michelle still saw stale/old behavior in the browser.
3. Prior assistant transcript text also recommended running an older `deploy-certified-wallets-v2.sh` and claimed it fixed the bugs; that script was later found to be superseded and unsafe because it did not preserve the live corrected DataCert API shape and newer requirements.

This APAR attributes the false "done" condition to AI process failure: marker-level checks were treated as acceptance proof.

## Defects Found

### Defect 1 ? XRPScan link correctness not proven by click/browser behavior
Initial checks verified that source contained an XRPScan pattern, but did not prove the actual rendered button href was assigned from the searched wallet. The correction required the explicit assignment:

```js
const xrpscanUrl = `https://xrpscan.com/account/${walletAddress}`;
document.getElementById('btn-xrpscan').href = xrpscanUrl;
```

### Defect 2 ? Domain hotlink not guaranteed globally
The domain link was initially corrected in the renderer but browser cache and old page variants caused Michelle to still see plain text. Correction required no-cache metadata, cache-busted nav link, and inline domain anchor styling.

### Defect 3 ? XRPL ledger source was not the first source of truth
The lookup needed to read `AccountRoot.Domain` directly from XRPL JSON-RPC, decode the hex, and then merge DataCert status. Relying only on DataCert API field placement was insufficient.

### Defect 4 ? Hardcoded wallet concern was not fully investigated before status claim
Search later showed `certified-wallets.html` did not contain the hardcoded wallet, but pricing pages did contain that wallet as a live example. The lookup page also needed a logged-in session-wallet fallback so no-URL lookups are user-specific.

### Defect 5 ? Stale deploy scripts created rollback risk
Older certified-wallet deploy scripts could overwrite the live corrected page. These had to be superseded and the production file synced into the deploy directory.

## Root Cause
The immediate technical root cause was incomplete lookup rendering logic and stale cache/deploy artifacts.

The governance/process root cause was that AI validation was too shallow:

- Source marker checks were treated as equivalent to browser acceptance.
- API response checks were treated as equivalent to DOM/link behavior.
- No written pass/fail matrix existed before saying the issue was done.
- Superseded scripts were not quarantined early enough.

## Corrective Action
PTF-321 deployed a corrected XRPL-first and dynamic wallet lookup implementation, then acceptance tested it.

## Preventive Action
For DataCert trust surfaces, "done" requires a VIRA or acceptance report with:

- tested URLs,
- exact wallets/domains,
- live ledger evidence,
- rendered DOM/link evidence where applicable,
- explicit remaining caveats.

No DataCert verification UI may be called complete based only on greps, markers, or API-only checks.

## Status
Closed by PTF-321 and VIRA-PTF-321-2026-05-17, with remaining caveat that Michelle's own browser cache must be bypassed/hard-refreshed for visual confirmation.

## AGE Link
- `/opt/veritize-docker/ops/wo/open/AGE-DATACERT-CERTIFIED-WALLET-FALSE-DONE-2026-05-17.md`
