{
  "version": "v1.1.0-semantic",
  "updatedAt": "2026-06-05T19:40:00+08:00",
  "totalFailures": 5,
  "allResolved": true,

  "failures": [
    {
      "id": "F-001",
      "name": "Chinese Routes",
      "severity": "P0",
      "description": "API paths contained Chinese characters (e.g. /api/书籍库)",
      "rootCause": "project-intake-agent used Chinese feature names directly as API path segments",
      "fix": "Added _toSlug() function with ZH_SLUG mapping in project-intake-agent.mjs",
      "fixCommit": "bd509bb",
      "resolvedAt": "2026-06-05",
      "regressionTest": "Semantic spot-check: no Chinese in routes/tables"
    },
    {
      "id": "F-002",
      "name": "Domain Template Pollution",
      "severity": "P0",
      "description": "Backend tables were generated from domain templates instead of PRD features (e.g. BookShelf → notes/tags/note_tags)",
      "rootCause": "architecture-agent generateDatabaseSchema() used domainSchemas[domain] as primary source",
      "fix": "Deleted entire domainSchemas system; tables 100% derived from features + API paths",
      "fixCommit": "0d50696",
      "resolvedAt": "2026-06-05",
      "regressionTest": "Semantic spot-check: no tags/note_tags in non-note domains"
    },
    {
      "id": "F-003",
      "name": "reading_statu singularize",
      "severity": "P1",
      "description": "singularize('reading_status') returned 'reading_statu' (removed trailing s)",
      "rootCause": "singularize() did not account for words where 's' is part of the root (status, bus, campus)",
      "fix": "Added SINGULAR_EXCEPTIONS set in backend-builder-agent.mjs and fullstack-composer-agent.mjs",
      "fixCommit": "0d50696",
      "resolvedAt": "2026-06-05",
      "regressionTest": "reading_status preserved in BookShelf domain"
    },
    {
      "id": "F-004",
      "name": "Duplicate user_id in members",
      "severity": "P1",
      "description": "members table had duplicate user_id field (one from base, one from FIELD_TEMPLATES)",
      "rootCause": "deriveTableFromFeature() did not deduplicate base fields vs domain template fields",
      "fix": "Added field name deduplication: base fields filtered against domain template fields",
      "fixCommit": "0d50696",
      "resolvedAt": "2026-06-05",
      "regressionTest": "TeamFlow members table has exactly one user_id"
    },
    {
      "id": "F-005",
      "name": "Items Fallback",
      "severity": "P1",
      "description": "Compound Chinese names like '合同创建' fell back to 'items' table",
      "rootCause": "_toSlug() used first-match instead of longest-match for ZH_SLUG lookup",
      "fix": "Changed to longest-match-first sorting in both project-intake-agent.mjs and architecture-agent.mjs",
      "fixCommit": "87e4d03",
      "resolvedAt": "2026-06-05",
      "regressionTest": "Contract domain produces contracts table, not items"
    }
  ]
}
