Skills DirectorySearch all skills ↗

AI agent skill · by @Innei

Mx Space Remote Translation Audit

Audit remote mx-space translation data through ssh to the swarm host, then docker exec into the Postgres container and run psql inside the container. Use for checking translation_entries coverage, ai_translations gaps, strict computeContentHash mismatches, and runtime freshness semantics in deployments where direct Postgres access is unreliable.

Archived 2026-10-23 · Source updated 2026-09-13. Check the original repository for the latest version.

SKILL.md instructions

# mx-space Remote Translation Audit

Use this skill when validating remote `mx-space` translation state in `translation_entries` or `ai_translations` — coverage, freshness, hash drift, or route-level behavior.

> This deployment **migrated MongoDB → PostgreSQL**. Older notes referencing `mongosh`, `refType`/`sourceModified`, or other camelCase fields are stale.

For connection mechanics see the sibling skill **`mx-space-remote-db-access`**: `mx_core` database, `mx` role, `mx-space-pg-*` container, container env auto-sets credentials.

## Critical semantics (must not collapse)

```
strict hash mismatch  !=  runtime stale
```

| Status | Meaning |
|---|---|
| `missing` | no translation row exists for the requested language |
| `strict hash mismatch` | `translation.hash !== computeContentHash(current source)` |
| `runtime valid` | `source_modified_at >= article.modified_at`, or `created_at >= article.modified_at` when `source_modified_at` is absent, or hash matches |
| `runtime stale` | runtime freshness check explicitly concludes the translation is stale |
| `unknown` | snapshot lacks enough source fields to compute a hash |

Always state which conclusion the result represents — strict-hash or runtime — they can disagree, and a runtime-valid translation may legitimately ship with a drifted hash.

## Table of Contents

| Topic | Reference |
|---|---|
| `ai_translations` and `translation_entries` column reference (post-migration field names) | [`references/schema.md`](references/schema.md) |
| Audit workflow: scope → coverage → semantics → user-visible verification | [`references/audit-workflow.md`](references/audit-workflow.md) |
| Reproducing `computeContentHash` and the list-translation bug pattern | [`references/hash-semantics.md`](references/hash-semantics.md) |

## Preferred audit script

When the local `mx-core` repo is available, prefer the built-in script:

```bash
cd /Users/innei/git/innei-repo/mx-core
pnpm check:ai-translation-hash --help
```

The flag set may have changed post-migration (Postgres URI rather than Mongo URI). Read `--help` first; fall back to manual SQL if the script is absent or pre-migration.

Output sections: `missing`, `runtimeStale`, `strictHashMismatch`, `taskPayloads` (the regenerate set = `missing + runtimeStale`).

## API verification

When the user reports a page still shows untranslated content, hit the route inside the core container instead of inferring from DB state:

```bash
ssh -p "$SSH_PORT" "$SSH_USER@$SSH_HOST" \
  "docker exec '$CORE_CONTAINER' curl -sS 'http://127.0.0.1:2333/api/v2/posts/<category>/<slug>?lang=en'"
```

If the database has the row but the route still returns source language, the bug is on the read path — see [`references/hash-semantics.md`](references/hash-semantics.md) for the known list-route failure pattern.

Related skills