{ "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" } ] }