datanotes 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +1 -5
  2. package/dist/api/client.d.cts +37 -4
  3. package/dist/api/client.d.ts +37 -4
  4. package/dist/api/index.cjs +563 -60
  5. package/dist/api/index.d.cts +3 -2
  6. package/dist/api/index.d.ts +3 -2
  7. package/dist/api/index.js +563 -60
  8. package/dist/api/mcp.cjs +181 -11
  9. package/dist/api/mcp.js +181 -11
  10. package/dist/api/otlp.d.cts +63 -15
  11. package/dist/api/otlp.d.ts +63 -15
  12. package/dist/api/redact.d.cts +25 -0
  13. package/dist/api/redact.d.ts +25 -0
  14. package/dist/api/tokens.d.cts +5 -0
  15. package/dist/api/tokens.d.ts +5 -0
  16. package/dist/api/tracing.d.cts +107 -0
  17. package/dist/api/tracing.d.ts +107 -0
  18. package/dist/datanotes.cjs +9934 -2656
  19. package/dist/docs/administration/limits.md +96 -12
  20. package/dist/docs/administration/run-the-service.md +18 -0
  21. package/dist/docs/api/operations/add_column.md +1 -0
  22. package/dist/docs/api/operations/add_constraint.md +2 -0
  23. package/dist/docs/api/operations/alter_column.md +1 -1
  24. package/dist/docs/api/operations/alter_table.md +3 -2
  25. package/dist/docs/api/operations/check_table.md +1 -1
  26. package/dist/docs/api/operations/create_table.md +3 -1
  27. package/dist/docs/api/operations/describe_table.md +1 -1
  28. package/dist/docs/api/operations/graph_neighbors.md +4 -2
  29. package/dist/docs/api/operations/graph_path.md +3 -3
  30. package/dist/docs/api/operations/graph_traverse.md +2 -2
  31. package/dist/docs/api/operations/insert_row.md +2 -2
  32. package/dist/docs/api/operations/record_tool_call.md +1 -0
  33. package/dist/docs/api/operations/tags/queries.md +2 -2
  34. package/dist/docs/api/operations/tags/rows-dml.md +1 -1
  35. package/dist/docs/api.md +4 -4
  36. package/dist/docs/develop/concurrency.md +36 -1
  37. package/dist/docs/develop/http-api.md +11 -1
  38. package/dist/docs/develop/telemetry.md +224 -25
  39. package/dist/docs/guides/data-quality/check-constraints.md +14 -13
  40. package/dist/docs/guides/data-quality/hand-edits.md +10 -10
  41. package/dist/docs/guides/database-objects/bases.md +11 -11
  42. package/dist/docs/guides/database-objects/catalogs-and-schemas.md +16 -10
  43. package/dist/docs/guides/database-objects/columns.md +38 -38
  44. package/dist/docs/guides/database-objects/relations.md +173 -36
  45. package/dist/docs/guides/database-objects/tables.md +90 -109
  46. package/dist/docs/guides/database-objects/views.md +44 -44
  47. package/dist/docs/guides/history/back-up.md +12 -4
  48. package/dist/docs/guides/history/change-data-feed.md +34 -34
  49. package/dist/docs/guides/history/journal-and-undo.md +12 -12
  50. package/dist/docs/guides/history/restore.md +20 -20
  51. package/dist/docs/guides/history/table-history.md +31 -31
  52. package/dist/docs/guides/history/vacuum.md +1 -10
  53. package/dist/docs/guides/read-and-write/automatic-links.md +15 -15
  54. package/dist/docs/guides/read-and-write/import-notes.md +21 -21
  55. package/dist/docs/guides/read-and-write/joins-and-aggregates.md +7 -7
  56. package/dist/docs/guides/read-and-write/read-and-filter.md +10 -10
  57. package/dist/docs/guides/read-and-write/write-rows.md +10 -10
  58. package/dist/docs/guides/search/link-graph.md +95 -0
  59. package/dist/docs/guides/search/text.md +1 -1
  60. package/dist/docs/guides/security/who-did-what.md +2 -0
  61. package/dist/docs/reference/cli.md +10 -3
  62. package/dist/docs/reference/compatibility.md +33 -13
  63. package/dist/docs/reference/errors.md +1 -1
  64. package/dist/docs/reference/operations/auxiliary.md +2 -2
  65. package/dist/docs/reference/operations/queries.md +3 -3
  66. package/dist/docs/reference/operations/rows.md +1 -1
  67. package/dist/docs/reference/operations/schema.md +15 -11
  68. package/dist/docs/reference/operations.md +39 -39
  69. package/dist/docs/reference/settings.md +37 -25
  70. package/dist/docs/release-notes.md +145 -0
  71. package/dist/docs/start/how-it-works.md +35 -3
  72. package/dist/docs/start/quick-start.md +2 -0
  73. package/package.json +3 -2
@@ -58,7 +58,7 @@ Answer:
58
58
  ```json
59
59
  {
60
60
  "ok": true,
61
- "migration_id": "20261012T071946-create_table-create-table-main-public-film",
61
+ "migration_id": "20261019T040638-create_table-create-table-main-public-film",
62
62
  "summary": null
63
63
  }
64
64
  ```
@@ -67,7 +67,7 @@ Answer:
67
67
 
68
68
  ```yaml
69
69
  # Metastore (Datanotes): catalogs, schemas, tables, columns, views.
70
- id: 01a12efb-589d-722c-bc9b-81ec34e480a4
70
+ id: 01a15257-09b6-7466-9ee6-59ac45171fa4
71
71
  config:
72
72
  history: true
73
73
 
@@ -305,10 +305,11 @@ Answer (83 lines)
305
305
 
306
306
  ## Add fixed front matter keys, a note template and tags
307
307
 
308
- `create_table` takes three more arguments:
308
+ `create_table` takes four more arguments:
309
309
 
310
310
  * **`fields`**: front matter keys every new row gets with a fixed value and no checks, such as `cssclasses`, which styles the notes in Obsidian
311
311
  * **`row_template`**: the text of every new row’s note, with `{column}` placeholders
312
+ * **`instructions`**: how an agent fills a row, such as which columns come first and what to ask you
312
313
  * **`tags`**: key/value labels for the table, which `list_tables` and `describe_table` return
313
314
 
314
315
  **`create_table`**
@@ -353,6 +354,7 @@ Answer (83 lines)
353
354
  "filename": "{occurred_at:YYYY-MM-DD} {film}",
354
355
  "fields": { "cssclasses": ["watch"] },
355
356
  "row_template": "Watched {film} ({where}).\n\n## Thoughts\n",
357
+ "instructions": "1. Ask me which film I watched and where.\n2. Fill `occurred_at` only when I give a time: it defaults to now.\n",
356
358
  "tags": { "area": "films" }
357
359
  }
358
360
  ```
@@ -377,24 +379,24 @@ Answer:
377
379
  "ok": true,
378
380
  "op": "insert_row",
379
381
  "files_created": 1,
380
- "planned_creates": ["datanotes/main/public/watch/2026-10-12 Nosferatu.md"],
382
+ "planned_creates": ["datanotes/main/public/watch/2026-10-19 Nosferatu.md"],
381
383
  "commits": [{ "table": "main.public.watch", "version": 1, "operation": "WRITE" }],
382
- "migration_id": "20261012T071946-insert_row-insert-into-watch"
384
+ "migration_id": "20261019T040638-insert_row-insert-into-watch"
383
385
  }
384
386
  ```
385
387
 
386
- `datanotes/main/public/watch/2026-10-12 Nosferatu.md` now reads:
388
+ `datanotes/main/public/watch/2026-10-19 Nosferatu.md` now reads:
387
389
 
388
390
  ```markdown
389
391
  ---
390
392
  table: main.public.watch
391
393
  cssclasses:
392
394
  - watch
393
- id: 01a12efb-596f-7f8d-a613-98700dbd6bde
395
+ id: 01a15257-0aa0-7f95-8445-28bb94536020
394
396
  film: Nosferatu
395
397
  where: outdoor screening
396
398
  place: the park by the river
397
- occurred_at: 2026-10-12T07:19:46Z
399
+ occurred_at: 2026-10-19T04:06:38Z
398
400
  ---
399
401
  Watched Nosferatu (outdoor screening).
400
402
 
@@ -402,6 +404,46 @@ Watched Nosferatu (outdoor screening).
402
404
  ## Thoughts
403
405
  ```
404
406
 
407
+ ## Tell agents how to fill a row with `instructions`
408
+
409
+ `describe_table` returns a table’s `instructions`, so an agent reads them before it writes a row. `alter_table` changes them, and `instructions: ""` removes them.
410
+
411
+ **`describe_table`**
412
+
413
+ ```json
414
+ { "table": "watch" }
415
+ ```
416
+
417
+ Answer:
418
+
419
+ ```json
420
+ {
421
+ "qualified": "main.public.watch",
422
+ "instructions": "1. Ask me which film I watched and where.\n2. Fill `occurred_at` only when I give a time: it defaults to now.\n"
423
+ }
424
+ ```
425
+
426
+ **`alter_table`**
427
+
428
+ ```json
429
+ {
430
+ "table": "watch",
431
+ "instructions": "1. Ask me which film I watched, where and with whom.\n2. Fill `occurred_at` only when I give a time: it defaults to now.\n"
432
+ }
433
+ ```
434
+
435
+ Answer:
436
+
437
+ ```json
438
+ {
439
+ "ok": true,
440
+ "op": "alter_table",
441
+ "planned_texts": ["datanotes/metastore.yaml"],
442
+ "commits": [{ "table": "main.public.watch", "version": 2, "operation": "ALTER TABLE" }],
443
+ "migration_id": "20261019T040638-alter_table-alter-table-main-public-watch"
444
+ }
445
+ ```
446
+
405
447
  ## Set a table’s options when you create it
406
448
 
407
449
  `create_table` also takes the options that `alter_table` changes later. Two of them:
@@ -465,28 +507,8 @@ Answer:
465
507
  ],
466
508
  "planned_moves": [
467
509
  {
468
- "from": "store:transaction_log/diary.classics.actors/00000000000000000000.json",
469
- "to": "store:transaction_log/diary.classics.actor/00000000000000000000.json"
470
- },
471
- {
472
- "from": "store:transaction_log/diary.classics.actors/00000000000000000001.json",
473
- "to": "store:transaction_log/diary.classics.actor/00000000000000000001.json"
474
- },
475
- {
476
- "from": "store:transaction_log/diary.classics.actors/00000000000000000002.json",
477
- "to": "store:transaction_log/diary.classics.actor/00000000000000000002.json"
478
- },
479
- {
480
- "from": "store:transaction_log/diary.classics.actors/00000000000000000003.json",
481
- "to": "store:transaction_log/diary.classics.actor/00000000000000000003.json"
482
- },
483
- {
484
- "from": "store:transaction_log/diary.classics.actors/00000000000000000004.json",
485
- "to": "store:transaction_log/diary.classics.actor/00000000000000000004.json"
486
- },
487
- {
488
- "from": "store:transaction_log/diary.classics.actors/00000000000000000005.json",
489
- "to": "store:transaction_log/diary.classics.actor/00000000000000000005.json"
510
+ "from": "store:transaction_log/diary.classics.actors/00000000000000000000.segment.jsonl",
511
+ "to": "store:transaction_log/diary.classics.actor/00000000000000000000.segment.jsonl"
490
512
  },
491
513
  {
492
514
  "from": "datanotes/diary/classics/actors/Max Schreck.md",
@@ -503,14 +525,14 @@ Answer:
503
525
  { "table": "classics.actors", "name": "actor" }
504
526
  ```
505
527
 
506
- Answer (48 lines)
528
+ Answer:
507
529
 
508
530
  ```json
509
531
  {
510
532
  "ok": true,
511
533
  "op": "alter_table",
512
534
  "notes_changed": 1,
513
- "files_moved": 7,
535
+ "files_moved": 2,
514
536
  "planned_edits": [
515
537
  {
516
538
  "path": "datanotes/diary/classics/actors/Max Schreck.md",
@@ -520,28 +542,8 @@ Answer (48 lines)
520
542
  ],
521
543
  "planned_moves": [
522
544
  {
523
- "from": "store:transaction_log/diary.classics.actors/00000000000000000000.json",
524
- "to": "store:transaction_log/diary.classics.actor/00000000000000000000.json"
525
- },
526
- {
527
- "from": "store:transaction_log/diary.classics.actors/00000000000000000001.json",
528
- "to": "store:transaction_log/diary.classics.actor/00000000000000000001.json"
529
- },
530
- {
531
- "from": "store:transaction_log/diary.classics.actors/00000000000000000002.json",
532
- "to": "store:transaction_log/diary.classics.actor/00000000000000000002.json"
533
- },
534
- {
535
- "from": "store:transaction_log/diary.classics.actors/00000000000000000003.json",
536
- "to": "store:transaction_log/diary.classics.actor/00000000000000000003.json"
537
- },
538
- {
539
- "from": "store:transaction_log/diary.classics.actors/00000000000000000004.json",
540
- "to": "store:transaction_log/diary.classics.actor/00000000000000000004.json"
541
- },
542
- {
543
- "from": "store:transaction_log/diary.classics.actors/00000000000000000005.json",
544
- "to": "store:transaction_log/diary.classics.actor/00000000000000000005.json"
545
+ "from": "store:transaction_log/diary.classics.actors/00000000000000000000.segment.jsonl",
546
+ "to": "store:transaction_log/diary.classics.actor/00000000000000000000.segment.jsonl"
545
547
  },
546
548
  {
547
549
  "from": "datanotes/diary/classics/actors/Max Schreck.md",
@@ -552,7 +554,7 @@ Answer (48 lines)
552
554
  "commits": [
553
555
  { "table": "diary.classics.actor", "version": 6, "operation": "ALTER TABLE" }
554
556
  ],
555
- "migration_id": "20261012T072004-alter_table-move-table-diary-classics-acto"
557
+ "migration_id": "20261019T040655-alter_table-move-table-diary-classics-acto"
556
558
  }
557
559
  ```
558
560
 
@@ -564,14 +566,14 @@ Then move it to a schema of its own:
564
566
  { "table": "classics.actor", "catalog": "diary", "schema": "credits" }
565
567
  ```
566
568
 
567
- Answer (52 lines)
569
+ Answer:
568
570
 
569
571
  ```json
570
572
  {
571
573
  "ok": true,
572
574
  "op": "alter_table",
573
575
  "notes_changed": 1,
574
- "files_moved": 8,
576
+ "files_moved": 2,
575
577
  "planned_edits": [
576
578
  {
577
579
  "path": "datanotes/diary/classics/actor/Max Schreck.md",
@@ -581,32 +583,8 @@ Answer (52 lines)
581
583
  ],
582
584
  "planned_moves": [
583
585
  {
584
- "from": "store:transaction_log/diary.classics.actor/00000000000000000000.json",
585
- "to": "store:transaction_log/diary.credits.actor/00000000000000000000.json"
586
- },
587
- {
588
- "from": "store:transaction_log/diary.classics.actor/00000000000000000001.json",
589
- "to": "store:transaction_log/diary.credits.actor/00000000000000000001.json"
590
- },
591
- {
592
- "from": "store:transaction_log/diary.classics.actor/00000000000000000002.json",
593
- "to": "store:transaction_log/diary.credits.actor/00000000000000000002.json"
594
- },
595
- {
596
- "from": "store:transaction_log/diary.classics.actor/00000000000000000003.json",
597
- "to": "store:transaction_log/diary.credits.actor/00000000000000000003.json"
598
- },
599
- {
600
- "from": "store:transaction_log/diary.classics.actor/00000000000000000004.json",
601
- "to": "store:transaction_log/diary.credits.actor/00000000000000000004.json"
602
- },
603
- {
604
- "from": "store:transaction_log/diary.classics.actor/00000000000000000005.json",
605
- "to": "store:transaction_log/diary.credits.actor/00000000000000000005.json"
606
- },
607
- {
608
- "from": "store:transaction_log/diary.classics.actor/00000000000000000006.json",
609
- "to": "store:transaction_log/diary.credits.actor/00000000000000000006.json"
586
+ "from": "store:transaction_log/diary.classics.actor/00000000000000000000.segment.jsonl",
587
+ "to": "store:transaction_log/diary.credits.actor/00000000000000000000.segment.jsonl"
610
588
  },
611
589
  {
612
590
  "from": "datanotes/diary/classics/actor/Max Schreck.md",
@@ -617,7 +595,7 @@ Answer (52 lines)
617
595
  "commits": [
618
596
  { "table": "diary.credits.actor", "version": 7, "operation": "ALTER TABLE" }
619
597
  ],
620
- "migration_id": "20261012T072004-alter_table-move-table-diary-classics-acto-2"
598
+ "migration_id": "20261019T040655-alter_table-move-table-diary-classics-acto-2"
621
599
  }
622
600
  ```
623
601
 
@@ -681,7 +659,7 @@ Answer:
681
659
  "commits": [
682
660
  { "table": "diary.classics.film", "version": 13, "operation": "ALTER TABLE" }
683
661
  ],
684
- "migration_id": "20261012T072004-alter_table-alter-table-diary-classics-fil"
662
+ "migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-5"
685
663
  }
686
664
  ```
687
665
 
@@ -733,7 +711,7 @@ Answer:
733
711
  "commits": [
734
712
  { "table": "diary.classics.film", "version": 14, "operation": "ALTER TABLE" }
735
713
  ],
736
- "migration_id": "20261012T072004-alter_table-alter-table-diary-classics-fil-2"
714
+ "migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-6"
737
715
  }
738
716
  ```
739
717
 
@@ -775,7 +753,7 @@ Answer:
775
753
  "commits": [
776
754
  { "table": "diary.classics.film", "version": 15, "operation": "ALTER TABLE" }
777
755
  ],
778
- "migration_id": "20261012T072004-alter_table-alter-table-diary-classics-fil-3"
756
+ "migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-7"
779
757
  }
780
758
  ```
781
759
 
@@ -795,7 +773,7 @@ Answer:
795
773
  "commits": [
796
774
  { "table": "diary.classics.film", "version": 16, "operation": "ALTER TABLE" }
797
775
  ],
798
- "migration_id": "20261012T072004-alter_table-alter-table-diary-classics-fil-4"
776
+ "migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-8"
799
777
  }
800
778
  ```
801
779
 
@@ -815,7 +793,7 @@ Answer:
815
793
  "commits": [
816
794
  { "table": "diary.classics.film", "version": 17, "operation": "ALTER TABLE" }
817
795
  ],
818
- "migration_id": "20261012T072004-alter_table-alter-table-diary-classics-fil-5"
796
+ "migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-9"
819
797
  }
820
798
  ```
821
799
 
@@ -842,7 +820,7 @@ Answer:
842
820
  "files_created": 1,
843
821
  "planned_creates": ["datanotes/diary/classics/film/1925/Battleship Potemkin (1925).md"],
844
822
  "commits": [{ "table": "diary.classics.film", "version": 18, "operation": "WRITE" }],
845
- "migration_id": "20261012T072004-insert_row-insert-into-film-3"
823
+ "migration_id": "20261019T040655-insert_row-insert-into-film-4"
846
824
  }
847
825
  ```
848
826
 
@@ -852,7 +830,7 @@ Answer:
852
830
  ---
853
831
  table: diary.classics.film
854
832
  cut: restored
855
- id: 01a12efb-9da0-70b8-9f73-bb00b210e05f
833
+ id: 01a15257-4d4f-7108-9b86-834bf7261cc6
856
834
  title: Battleship Potemkin
857
835
  year: 1925
858
836
  minutes: 75
@@ -883,7 +861,7 @@ Answer:
883
861
  "commits": [
884
862
  { "table": "diary.classics.film", "version": 19, "operation": "ALTER TABLE" }
885
863
  ],
886
- "migration_id": "20261012T072004-alter_table-alter-table-diary-classics-fil-6"
864
+ "migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-10"
887
865
  }
888
866
  ```
889
867
 
@@ -905,7 +883,7 @@ Answer:
905
883
  "files_created": 1,
906
884
  "planned_creates": ["datanotes/diary/classics/film/1924/Sherlock Jr. (1924).md"],
907
885
  "commits": [{ "table": "diary.classics.film", "version": 20, "operation": "WRITE" }],
908
- "migration_id": "20261012T072004-insert_row-insert-into-film-4"
886
+ "migration_id": "20261019T040655-insert_row-insert-into-film-5"
909
887
  }
910
888
  ```
911
889
 
@@ -915,7 +893,7 @@ Answer:
915
893
  ---
916
894
  table: diary.classics.film
917
895
  cut: restored
918
- id: 01a12efb-9dba-741f-a279-de88358083ce
896
+ id: 01a15257-4d65-7ac8-9da9-cebd6bcb8f00
919
897
  title: Sherlock Jr.
920
898
  year: 1924
921
899
  minutes: 45
@@ -948,7 +926,7 @@ Answer:
948
926
  "commits": [
949
927
  { "table": "diary.classics.film", "version": 21, "operation": "ALTER TABLE" }
950
928
  ],
951
- "migration_id": "20261012T072004-alter_table-alter-table-diary-classics-fil-7"
929
+ "migration_id": "20261019T040655-alter_table-alter-table-diary-classics-fil-11"
952
930
  }
953
931
  ```
954
932
 
@@ -1030,7 +1008,7 @@ Answer:
1030
1008
  ```json
1031
1009
  {
1032
1010
  "ok": true,
1033
- "migration_id": "20261012T072004-create_table-create-table-diary-log-watch"
1011
+ "migration_id": "20261019T040655-create_table-create-table-diary-log-watch"
1034
1012
  }
1035
1013
  ```
1036
1014
 
@@ -1059,7 +1037,7 @@ Answer:
1059
1037
  "files_created": 1,
1060
1038
  "planned_creates": ["datanotes/diary/log/watch/2026/10/2026-10-06 2130.md"],
1061
1039
  "commits": [{ "table": "diary.log.watch", "version": 1, "operation": "WRITE" }],
1062
- "migration_id": "20261012T072004-insert_row-insert-into-watch"
1040
+ "migration_id": "20261019T040655-insert_row-insert-into-watch"
1063
1041
  }
1064
1042
  ```
1065
1043
 
@@ -1068,7 +1046,7 @@ Answer:
1068
1046
  ```markdown
1069
1047
  ---
1070
1048
  table: diary.log.watch
1071
- id: 01a12efb-9e05-7ed2-95c8-870d481fea29
1049
+ id: 01a15257-4da6-75c4-814b-80ede5508ccc
1072
1050
  film: "[[Nosferatu (1922)]]"
1073
1051
  occurred_at: 2026-10-06T21:30:00+02:00
1074
1052
  where: outdoor screening
@@ -1104,7 +1082,7 @@ Answer:
1104
1082
  "commits": [
1105
1083
  { "table": "sandbox.classics.film_copy", "version": 0, "operation": "CLONE" }
1106
1084
  ],
1107
- "migration_id": "20261012T072004-clone_table-clone-diary-classics-film-to-s"
1085
+ "migration_id": "20261019T040655-clone_table-clone-diary-classics-film-to-s"
1108
1086
  }
1109
1087
  ```
1110
1088
 
@@ -1170,7 +1148,7 @@ Answer:
1170
1148
  "commits": [
1171
1149
  { "table": "sandbox.classics.film_empty", "version": 0, "operation": "CLONE" }
1172
1150
  ],
1173
- "migration_id": "20261012T072004-clone_table-clone-diary-classics-film-to-s-2"
1151
+ "migration_id": "20261019T040655-clone_table-clone-diary-classics-film-to-s-2"
1174
1152
  }
1175
1153
  ```
1176
1154
 
@@ -1252,7 +1230,7 @@ Answer:
1252
1230
  ],
1253
1231
  "planned_texts": ["datanotes/metastore.yaml"],
1254
1232
  "commits": [{ "table": "main.public.scratch", "version": 2, "operation": "DROP TABLE" }],
1255
- "migration_id": "20261012T071946-drop_table-drop-table-scratch"
1233
+ "migration_id": "20261019T040638-drop_table-drop-table-scratch"
1256
1234
  }
1257
1235
  ```
1258
1236
 
@@ -1276,7 +1254,7 @@ The engine wrote this file in its own words. It holds `film`, `watch` and `revie
1276
1254
 
1277
1255
  ```yaml
1278
1256
  # Metastore (Datanotes): catalogs, schemas, tables, columns, views.
1279
- id: 01a12efb-589d-722c-bc9b-81ec34e480a4
1257
+ id: 01a15257-09b6-7466-9ee6-59ac45171fa4
1280
1258
  config:
1281
1259
  history: true
1282
1260
 
@@ -1335,6 +1313,14 @@ catalogs:
1335
1313
  description: Each time I watch a film
1336
1314
  tags:
1337
1315
  area: films
1316
+ row_template: |
1317
+ Watched {film} ({where}).
1318
+
1319
+
1320
+ ## Thoughts
1321
+ instructions: |
1322
+ 1. Ask me which film I watched, where and with whom.
1323
+ 2. Fill `occurred_at` only when I give a time: it defaults to now.
1338
1324
  options:
1339
1325
  filename: "{occurred_at:YYYY-MM-DD} {film}"
1340
1326
  archive: _archive
@@ -1344,11 +1330,11 @@ catalogs:
1344
1330
  columns:
1345
1331
  - name: id
1346
1332
  type: string
1347
- required: true
1348
- description: "Unique id of the row (UUIDv7): set when the row is created, never changes"
1349
1333
  unique: true
1350
1334
  identity: uuid
1335
+ required: true
1351
1336
  dense: true
1337
+ description: "Unique id of the row (UUIDv7): set when the row is created, never changes"
1352
1338
  - name: film
1353
1339
  type: string
1354
1340
  required: true
@@ -1373,11 +1359,6 @@ catalogs:
1373
1359
  min: 0
1374
1360
  step: 0.01
1375
1361
  description: What the ticket cost, if anything
1376
- row_template: |
1377
- Watched {film} ({where}).
1378
-
1379
-
1380
- ## Thoughts
1381
1362
  review:
1382
1363
  description: What I wrote about a film after watching it
1383
1364
  options: