logaritmisk
6e27288f43
fix(domain): make FieldType::from_parts a strict inverse; reject stray bindings
2026-06-02 10:15:07 +02:00
logaritmisk
2242ff5ef1
feat(domain): add field definition types (FieldType, FieldDefinition)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 10:11:28 +02:00
logaritmisk
da2db11a30
docs: add Plan 4 (Field-definition registry) implementation plan
...
Type-driven FieldType enum carrying binding; field_definition + labels tables with
a CHECK enforcing term<->vocabulary; create/read/list repository.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 10:09:46 +02:00
logaritmisk
2938649d62
fix(db): skip UPDATE and audit on no-op object update (keep updated_at consistent)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:40:27 +02:00
logaritmisk
a690c60ec6
refactor(db): delete_object via rows_affected; test update/delete-missing and field clearing
2026-06-02 09:36:44 +02:00
logaritmisk
9e1c88b294
feat(db): add catalogue object update/delete with audited field diffs
...
update_object records only changed fields as audit diffs and skips the
audit entry for no-op updates; delete_object records a Deleted entry.
Both operations are atomic on the caller's connection.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:32:16 +02:00
logaritmisk
616a6f05c6
refactor(db): DRY object SELECT columns, consistent date json; test date + all-none round-trip
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:29:40 +02:00
logaritmisk
e0c0187f29
feat(db): add catalogue object create/read/list with audit on create
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:24:03 +02:00
logaritmisk
95357f01dd
feat(db): non-empty CHECK constraints on object text columns
2026-06-02 09:21:08 +02:00
logaritmisk
c1dda280e2
feat(db): add object table
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 09:18:03 +02:00
logaritmisk
bf332ac0ae
test(domain): pin Visibility serde output to as_str
2026-06-02 09:16:53 +02:00
logaritmisk
266f914b88
feat(domain): add catalogue object types (Visibility, ObjectInput, CatalogueObject)
2026-06-02 09:13:54 +02:00
logaritmisk
ed608c6e37
docs: add Plan 3 (Catalogue core) implementation plan
...
Typed inventory-minimum object record + CRUD; first consumer of the audit spine
(create/update/delete record audit entries with field-level diffs in the write tx).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 09:12:41 +02:00
logaritmisk
7782bd764a
test(db): zero-label authority round-trip; doc the labels-json constant
...
Also fix pre-existing clippy::explicit_auto_deref in all db test files
(&mut *tx → &mut tx across authority.rs and vocab.rs).
2026-06-02 09:01:06 +02:00
logaritmisk
6e45baa8d4
feat(db): add authority repository with multilingual labels
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 08:55:50 +02:00
logaritmisk
345073b130
test(db): cover zero-label term and duplicate vocabulary key; use try_get in vocabulary_by_key
2026-06-02 08:52:58 +02:00
logaritmisk
5dc07ddf4c
feat(db): add vocabulary/term repository with multilingual labels
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 08:48:51 +02:00
logaritmisk
cc1fbf5b7d
feat(db): RESTRICT vocabulary deletes; non-empty label/lang constraints
2026-06-02 08:46:34 +02:00
logaritmisk
93d54d7783
feat(db): add vocabulary, term, and authority tables
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 08:43:23 +02:00
logaritmisk
d5ed2a261f
feat(domain): restore must_use message; test TermRef accessors
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 08:42:14 +02:00
logaritmisk
8cf737d8a9
feat(domain): id macro + vocabulary/authority/label value types
2026-06-02 08:38:39 +02:00
logaritmisk
42e0a5f5f1
docs: add Plan 2 (Vocabularies & authorities) implementation plan
...
Unified authority table + normalized multilingual label tables; vocab/authority
repositories; TermRef/AuthorityRef validated refs; id_newtype! macro.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 08:36:03 +02:00
logaritmisk
cc26c96a82
chore: update Cargo.lock for audit-spine dependencies
2026-06-02 08:02:09 +02:00
logaritmisk
86a3a8a47c
test(db): assert audit_log mutations fail via the immutability trigger
2026-06-02 08:01:28 +02:00
logaritmisk
45aea6b702
test(db): enforce audit_log immutability and transactional atomicity
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:58:10 +02:00
logaritmisk
c67b588188
test(db): cover delete/empty-changes/empty-history; clarify map_row naming
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:56:05 +02:00
logaritmisk
87b016a56c
feat(db): add append-only audit repository (record, history_for)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:52:16 +02:00
logaritmisk
01c42837d1
feat(db): also reject TRUNCATE on audit_log (statement-level trigger)
2026-06-02 07:49:47 +02:00
logaritmisk
152fc30116
feat(db): schema bootstrap with append-only audit_log table
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:46:39 +02:00
logaritmisk
4c6f77b999
test(domain): pin audit serde contracts; loosen time version; note null caveat
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:44:21 +02:00
logaritmisk
0447284d43
feat(domain): add audit value types
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 07:40:02 +02:00
logaritmisk
d3f5e73dad
docs: add Plan 1 (Audit spine) implementation plan
...
Append-only immutable audit log: domain value types, schema-bootstrap migration
+ immutability trigger, transaction-capable record/history_for repository.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 07:38:08 +02:00
logaritmisk
19c7bdc3ae
feat(server): wire config, database, and HTTP serving
2026-06-02 01:04:04 +02:00
logaritmisk
b8cea49427
test(api): assert readiness status field on happy path
2026-06-02 01:02:22 +02:00
logaritmisk
b9acc03761
feat(api): add health probes, OpenAPI doc, and router
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 00:58:29 +02:00
logaritmisk
8da3eefdce
feat(db): add Db handle with pool connect and readiness ping
2026-06-02 00:54:17 +02:00
logaritmisk
db6183405e
chore: add local Postgres, justfile, and env example
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 00:51:26 +02:00
logaritmisk
67057e2ee3
test(server): isolate config tests from ambient env via temp-env
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 00:50:12 +02:00
logaritmisk
08e5f797f8
feat(server): add clap-derive Config (args + env)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 00:46:31 +02:00
logaritmisk
b9b99c0332
refactor(domain): delegate OrgId Display, rename to_uuid, mark new must_use
2026-06-02 00:44:49 +02:00
logaritmisk
8ae9de12c0
feat(domain): add OrgId newtype
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 00:41:32 +02:00
logaritmisk
b97c950f77
chore: replace placeholder package with role-named workspace
2026-06-02 00:38:53 +02:00
logaritmisk
87f06d1f2d
docs: add placeholder README
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 00:35:01 +02:00
logaritmisk
caa12f5366
docs: add Plan 0 (Foundation) implementation plan
...
Bite-sized TDD plan: role-named workspace, clap-derive config, sqlx Db handle,
axum health probes + config-driven OpenAPI, server wiring, local dev tooling.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 00:29:25 +02:00
logaritmisk
8f67503f45
docs: add project vision, MVP architecture spec, and reference material
...
- docs/VISION.md: product vision + feature catalogue (MVP / post-MVP / later)
- docs/specs/2026-06-02-mvp-architecture.md: MVP architecture + 16-entry decision log
- reference/: Spectrum 5.0 cataloguing + Riksantikvarieämbetet source material (build-time reference)
- CLAUDE.md: project guidance for Claude Code
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-02 00:24:53 +02:00
logaritmisk
283e27fa06
initial commit
2026-06-01 21:37:20 +02:00