2a8618c783
Settles the design we discussed across this session's
follow-up to the engine-vocabulary audit:
- A central `friendly` module owns translation; the existing
ad-hoc helpers (`friendly_change_column_engine_error`,
`enrich_fk_message`) absorb into it.
- Initial catalog covers UNIQUE / FK / NOT NULL / CHECK /
type-mismatch errors with operation-tailored,
pedagogically-voiced wording in verbose and short variants.
- New `messages (short|verbose)` app-level command lets
advanced learners shrink the output. In-session state for
now; persisted later when settings persistence lands.
- Row pinpointing via post-failure re-query, rendered through
ADR-0017 §7's bordered diagnostic-table renderer.
`FriendlyError` is a structured payload (headline + hint +
optional table); `output_render` composes it.
- i18n foundation: hierarchical YAML catalog, embedded via
`include_str!`, fixed locale (en-US) for now, no external
files. `{name}` plain substitution; format specifiers
explicitly rejected so a translator cannot reformat values.
Value formats stay invariant across all locales (ISO 8601
dates, `.` decimals, `true`/`false`, `NULL`) — explicitly
not a translatable concern.
- Migration sweep is required follow-on but separable: a
`t!()` macro marks call sites and lets per-category PRs
land incrementally. Anchor-phrase list (§10) limits test
churn for the most common substring assertions.
Out of scope and explicitly deferred: advanced-mode SQL
error sanitisation (waits on Q1), settings persistence for
the messages command, plural-form rules per locale, runtime
locale selection, locale-aware value formatting (rejected,
not deferred), constraint-management surface (C3 territory).
README index updated.
28 lines
1.9 KiB
Markdown
28 lines
1.9 KiB
Markdown
# Architecture Decision Records
|
|
|
|
This directory contains the project's ADRs, recorded per
|
|
[ADR-0000](0000-record-architecture-decisions.md).
|
|
|
|
## Index
|
|
|
|
- [ADR-0000 — Record architecture decisions](0000-record-architecture-decisions.md)
|
|
- [ADR-0001 — Language and TUI framework](0001-language-and-tui-framework.md)
|
|
- [ADR-0002 — Database engine](0002-database-engine.md)
|
|
- [ADR-0003 — Input modes and command dispatch](0003-input-modes-and-command-dispatch.md)
|
|
- [ADR-0004 — Project file format](0004-project-file-format.md)
|
|
- [ADR-0005 — Column type vocabulary](0005-column-type-vocabulary.md)
|
|
- [ADR-0006 — Undo snapshots and replay log](0006-undo-snapshots-and-replay-log.md)
|
|
- [ADR-0007 — Sharing and export](0007-sharing-and-export.md)
|
|
- [ADR-0008 — Testing approach](0008-testing-approach.md)
|
|
- [ADR-0009 — DSL command syntax conventions](0009-dsl-command-syntax-conventions.md)
|
|
- [ADR-0010 — Database access via a dedicated worker thread](0010-database-access-via-worker-thread.md)
|
|
- [ADR-0011 — Foreign-key column type compatibility](0011-fk-column-type-compatibility.md)
|
|
- [ADR-0012 — Internal metadata for user-facing column types](0012-internal-metadata-for-user-facing-types.md)
|
|
- [ADR-0013 — Relationships, naming, and the rebuild-table strategy](0013-relationships-and-rebuild-table.md)
|
|
- [ADR-0014 — Data operations, value literals, and the auto-show pattern](0014-data-operations-and-value-model.md)
|
|
- [ADR-0015 — Project storage runtime](0015-project-storage-runtime.md)
|
|
- [ADR-0016 — Pretty table rendering for data and structure views](0016-pretty-table-rendering.md)
|
|
- [ADR-0017 — Column type-change compatibility](0017-column-type-change-compatibility.md)
|
|
- [ADR-0018 — Auto-fill contracts for `serial` and `shortid` columns](0018-auto-fill-contracts-for-serial-and-shortid.md)
|
|
- [ADR-0019 — Friendly error layer (H1) and i18n message catalog](0019-friendly-error-layer-and-i18n.md)
|