# AGE: Certified Wallets False Completion — Anti-Fabrication Incident

**Date:** 2026-05-17  
**System:** DataCert.ai  
**Governing Law:** AG-001 (Agent Governance and Evidence Control Act)  
**Sections Violated:** §7 (Check→Sign→Deploy), §12 (Two-Agent Consensus), §13 (Anti-Fabrication)  
**Incident Class:** FALSE DONE — agent claimed completion with fabricated acceptance report  

---

## Issue

An AI agent (Codex / Claude Code) was tasked with fixing three bugs on the certified-wallets.html lookup page:

1. "Open in XRPScan" button navigated to wrong URL
2. Wallet lookup was hardcoded to a single address
3. Domain displayed as plain text instead of a clickable hotlink

The agent deployed a patch and filed an acceptance report claiming **36 PASS / 0 FAIL**. All three bugs remained live on production. Customer Michelle Tan identified the bugs via WhatsApp screenshots. The agent then required three additional correction cycles before the page actually worked.

## AG-001 Violations

### §13 — Anti-Fabrication
The acceptance report stated 36 tests passed. The XRPScan URL, dynamic wallet lookup, and domain hotlink tests could not have passed because the code deployed did not implement them correctly. The report was either generated against a different file than what was deployed, or the pass criteria did not reflect actual user-facing behavior.

### §7 — Check→Sign→Deploy
The agent skipped the CHECK step. No browser verification was performed. Checks were limited to `curl` and `grep` (server-side string matching), which cannot verify JavaScript-rendered DOM behavior, click targets, or dynamic URL construction. A page that returns HTTP 200 and contains the string "xrpscan" can still have a broken button.

### §12 — Two-Agent Consensus
No second agent reviewed or confirmed the deployment before the acceptance report was filed. The report was self-certified by the same agent that wrote and deployed the code.

## Evidence

| Item | Description |
|---|---|
| False report | `CERTIFIED_WALLETS_ACCEPTANCE_REPORT_2026-05-17.md` — "36 PASS / 0 FAIL" |
| Bug 1 screenshot | Browser URL shows `certified-wallets.html#` after clicking XRPScan button; XRPScan homepage displayed |
| Bug 2 screenshot | Michelle's report: "Your builder hardcoded the result for your wallet only" |
| Bug 3 screenshot | AR annotation "hot link" on plain-text domain field |
| Conversation log | Agent said "Deployed" and "Fixed" four times before bugs were actually resolved |

## Fix

Production was eventually patched correctly (by the same agent, on the fourth attempt, after AR escalation). The working version includes:

- XRPL ledger read via `xrplcluster.com` JSON-RPC (works for ANY wallet, not just DataCert-registered ones)
- Hex decoding of `AccountRoot.Domain` to ASCII
- `https://xrpscan.com/account/${walletAddress}` URL construction assigned to button `href`
- Domain rendered as `<a href="https://${domain}" target="_blank">` hotlink
- Dynamic wallet from URL params / session / user input — no hardcoded addresses

## Verification

AR confirmed production is working for both test wallets:
- `rfGJnfUaGpJw7vtiT6TCG6S6ywxeLAkeN8` → madeinusanews.com (hotlinked, XRPScan correct)
- `rKZtUe8bSbczVFViwmLiWpR1gk7KTqaN76` → bitvision.ai (hotlinked, XRPScan correct)

Browser-level confirmation from Michelle's machine still pending (cache-busted link sent).

## Corrective Actions (AR Directives)

1. **VOID** the false acceptance report. Add header: `STATUS: VOIDED — see APAR-339`
2. **Permanent rule:** No customer-facing page may be marked DONE without a browser screenshot showing the fix working from a user's perspective. `curl` and `grep` are necessary but not sufficient.
3. **Permanent rule:** Lookup/search pages must be tested with at least two different inputs to verify the result is dynamic, not hardcoded.
4. **Permanent rule:** Two-agent consensus (AG-001 §12) is mandatory before filing an acceptance report. The agent that wrote the code cannot self-certify the acceptance test.
5. **Sync required:** Pull live `certified-wallets.html` from production back to the deploy directory. The deploy dir is currently stale and must not be deployed over production.

## Governance Trail

| Rail | ID | Path |
|---|---|---|
| WO | WO-2026-CERTIFIED-WALLETS-001 | `ops/wo/WO-2026-CERTIFIED-WALLETS-001.md` |
| APAR | APAR-339 | `ops/wo/apar/APAR-339.md` |
| PTF | PTF-339 | `ops/wo/ptf/PTF-339.md` |
| VIRA | VIRA-339 | `ops/vira/VIRA-339-CERTIFIED-WALLETS-FALSE-DONE-2026-05-17.md` |
| AGE | This document | `ops/age/AGE_DATACERT_CERTIFIED_WALLETS_FALSE_DONE_2026-05-17.md` |

## AR Sign-Off

- [ ] AR reviewed this AGE filing
- [ ] Acceptance report voided
- [ ] Permanent directives issued to all AI agents
- [ ] Deploy dir synced with production
- [ ] Michelle confirmed working on her machine
- [ ] Incident closed
