genesis-compiler 1.10.17 → 1.10.19

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genesis-compiler",
3
- "version": "1.10.17",
3
+ "version": "1.10.19",
4
4
  "type": "module",
5
5
  "description": "An agent-independent prompt, multi-language code-index, cleanup, and verification companion with project agent guidance.",
6
6
  "repository": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genesis",
3
- "version": "1.10.17",
3
+ "version": "1.10.19",
4
4
  "description": "Makes Codex aware of optional Genesis adoption for existing projects.",
5
5
  "author": {
6
6
  "name": "Mobily Enterprises"
@@ -31,6 +31,9 @@ Each one silently loses data, protection or a whole run.
31
31
  - Edit a migration that has run anywhere: databases diverge.
32
32
  - Let the first visitor to a new deployment own it.
33
33
  - Run production with development settings, fallbacks, hosts or secrets.
34
+ - Send real email, messages or payments from a copy the platform's side-effects
35
+ setting has not made live: honour that setting, and simulate them where it is
36
+ unset or the platform has none.
34
37
  - Release a test's servers, processes or timers only where a timeout skips it.
35
38
  - Stop a process by name or pattern (`pkill`, `killall`, `kill $(pgrep ...)`)
36
39
  instead of the pid you started or the project's stop command: the match also
@@ -63,6 +66,58 @@ its rows stay unseen and unchanged, write hooks and side effects included.
63
66
  **Outer limit:** an application with no owner layer, a table written from
64
67
  several places, or a request whose work grows with the whole population.
65
68
 
69
+ ## Data: one source for each fact
70
+
71
+ **Good:** each fact (an item's name, a rule, a template's structure) lives in
72
+ one known place, and everything else refers to it. Copies are made on purpose:
73
+ you know why each exists and what keeps it in step with its source, or why it
74
+ may drift. Accidental copies drift: a fix to the source never reaches them, and
75
+ nobody can tell which is right. Where it fits, prefer:
76
+ - shared content (a catalogue, a library of templates, presets) kept once and
77
+ referenced by a stable id; a person's own version keeps what they changed and
78
+ the id it came from;
79
+ - a variant as a reference plus what differs, not a copy of the whole;
80
+ - one current format for each kind of data: convert the old data and remove
81
+ the old format and its converters, keeping only an upgrade path for old data
82
+ out of reach (files people saved);
83
+ - where the software is translated, its own texts kept as keys and looked up
84
+ when shown: stored text cannot follow the language, and matching it back to
85
+ a key breaks once someone edits it. Text a person wrote is kept as written;
86
+ - a change sent to a tool, an API or an AI model rather than the whole
87
+ document: each has size limits, the model's output length included, and a
88
+ whole document stops fitting as it grows while a change stays small.
89
+
90
+ Deliberate copies are often right: a cache, a baked asset, a read model, a
91
+ snapshot that must not change (an issued invoice, a saved game). In a
92
+ database, a JSON column suits data read and written as one unit, while data
93
+ queried, shared or referenced elsewhere usually does better in its own rows.
94
+ When breaking one of these is clearly better, say why in the code or the
95
+ Program.
96
+
97
+ **Check:** before reporting a data feature done, list what it stores, where
98
+ each fact lives, what refers to what, each copy with what keeps it in step,
99
+ and the largest real size of each document. Look for one value or structure
100
+ stored twice. Send the largest real document, library and generated items
101
+ included, through the real path (the tool, the API, the loader).
102
+
103
+ **Examples:**
104
+ - Choosing a template from a library copied the whole template into the
105
+ person's data, and a lighter variant copied every part to change one value:
106
+ one template held 28 parts, 16 of them distinct. Its items, referenced by
107
+ id, took names and translations live from their own library and needed no
108
+ copy.
109
+ - The same library was kept in two formats, with converters for the old one
110
+ beside them.
111
+ - The software's own names were stored as English and translated by matching
112
+ that text against keys, which broke when a name was edited.
113
+ - An AI tool took a whole document as its arguments and refused the larger
114
+ library documents. Every test passed: the library was generated by code and
115
+ never went through the tool.
116
+
117
+ **Outer limit:** copies of one fact that disagree with nothing to say which is
118
+ right, two formats of one kind of data both still written, or a real document
119
+ the software's own path refuses.
120
+
66
121
  ## Data: loading a dataset
67
122
 
68
123
  **Good:** a list, page or report takes about as many queries for 10 rows as