# aptu readiness-fix artifacts

The public artifact contract for `POST /v1/readiness-fix` ($0.05 USDC, Base + Solana). This page is the single published source for what the paid endpoint generates and how each artifact is templated; the artifact table below is drift-guarded against the exported `READINESS_FIX_ARTIFACTS` constant in `workers/x402/src/readiness-fix-templates.ts` by `src/lib/readiness-fix-drift.test.ts` (no codegen pipeline: CI fails if the doc and the implementation diverge).

## Scope

Given one domain, the endpoint re-probes it with the shared agent-readiness probe module (facts sink enabled, identical caps and hardening) and returns nine ready-to-host machine-surface artifacts templated deterministically from the probe facts. No LLM anywhere. Every artifact is fresh template output: origin content is never echoed, including for passing checks -- the buyer diffs the template against what they already host. This completes the scan -> fix -> verify loop: `POST /v1/agent-readiness` $0.05 -> this endpoint $0.05 -> `POST /v1/x402-preflight` $0.05.

## Response shape

```json
{
  "domain": "example.com",
  "rubricVersion": "aptu-readiness-1",
  "summary": { "passes": 7, "fails": 3, "warns": 1, "indeterminate": 1 },
  "artifacts": {
    "llms.txt": {
      "check": "llms_txt",
      "pass": false,
      "hint": "Publish an llms.txt index at https://<domain>/llms.txt.",
      "content": "# example.com\n\n..."
    }
  }
}
```

`rubricVersion` matches the agent-readiness rubric version. `summary` is the probe run's rubric summary. `artifacts` is keyed by target path; each entry carries the generated `content` plus its motivating finding (`check`, `pass`, `hint`). Artifacts with no corresponding `READINESS_CHECKS` entry carry `"check": null, "pass": null, "hint": null`. Non-generatable checks (`origin_headers`, `json_ld`) are excluded from artifacts but still reported in the rubric `summary` with their existing hints.

## Artifact table

| Artifact | Check | Description |
| --- | --- | --- |
| `llms.txt` | `llms_txt` | llmstxt.org index: homepage title plus observed https URLs. |
| `llms-full.txt` | null | Full-content companion to llms.txt (no READINESS_CHECKS entry). |
| `robots.txt` | `robots_txt` | RFC 9309 baseline with AI-crawler allow rules and a Sitemap line. |
| `sitemap.xml` | `sitemap_xml` | sitemaps.org 0.9 urlset from observed URLs only; empty (with a comment) when nothing was fetched. |
| `agents.txt` | `agents_txt` | Agent notes skeleton with `<DOMAIN>`-style placeholders. |
| `skill.md` | `skill_md` | Agent skill description with frontmatter. |
| `.well-known/mcp.json` | `mcp_json` | MCP server card skeleton. |
| `.well-known/agent-card.json` | `a2a_agent_card` | A2A agent card skeleton. |
| `.well-known/x402` | `x402_manifest` | x402 discovery manifest skeleton (x402Version, kind, resources). |

Placeholders follow the repo's doc convention: angle-bracket uppercase tokens (`<DOMAIN>`, `<HOMEPAGE_TITLE>`) mark facts a probe could not derive. All served artifact content is ASCII-only.

## Determinism

Output is deterministic given identical probe results (which depend on the origin's state at fetch time). The endpoint never re-fetches beyond what `runProbes` already fetches: one shared homepage read plus the standard well-known surface set.