create-evda 0.1.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.
- package/LICENSE +21 -0
- package/README.md +207 -0
- package/bin/evda.mjs +382 -0
- package/create-evda.mjs +184 -0
- package/lib/agents.mjs +90 -0
- package/lib/circles.mjs +317 -0
- package/lib/doctor.mjs +419 -0
- package/lib/errors.mjs +26 -0
- package/lib/folders.mjs +160 -0
- package/lib/grants.mjs +188 -0
- package/lib/index.mjs +67 -0
- package/lib/ledger.mjs +168 -0
- package/lib/locate.mjs +76 -0
- package/lib/manifest.mjs +181 -0
- package/lib/migrate.mjs +66 -0
- package/lib/record.mjs +80 -0
- package/lib/references.mjs +283 -0
- package/lib/resolvers.mjs +123 -0
- package/lib/roles.mjs +89 -0
- package/lib/validate.mjs +84 -0
- package/lib/vectorcli.mjs +49 -0
- package/lib/vectors.mjs +53 -0
- package/lib/yaml.mjs +352 -0
- package/migrations/README.md +20 -0
- package/package.json +31 -0
- package/templates/AGENTS.md +170 -0
- package/templates/CLAUDE.md +3 -0
- package/templates/circles-README.md +27 -0
- package/templates/evda-digest.md +35 -0
- package/templates/hypotheses.md +70 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: ledger
|
|
3
|
+
evda: 1
|
|
4
|
+
created: {{date}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Hypothesis Ledger
|
|
8
|
+
|
|
9
|
+
Claims about the owner of this record, each with where it came from, what would kill it, and what happened when the owner pushed back. Append-only. Falsified entries are kept: the chain is the product.
|
|
10
|
+
|
|
11
|
+
## The entry
|
|
12
|
+
|
|
13
|
+
Every entry has exactly this shape. Copy it, fill it, and append it at the end of this file. IDs are sequential and zero-padded to four digits; the next ID is one more than the last entry in the file, and the first is H-0001. Separate entries with a line holding only `---`.
|
|
14
|
+
|
|
15
|
+
### H-0042: <the hypothesis in one line>
|
|
16
|
+
|
|
17
|
+
**Status:** open | standing | refined | falsified | retired
|
|
18
|
+
**Domain:** <a word for the area of life this is about>
|
|
19
|
+
**Raised:** YYYY-MM-DD, by <the agent | the owner>, in <where>
|
|
20
|
+
**Supersedes:** H-0041 (omit if none)
|
|
21
|
+
**Superseded by:** H-0043 (written when it happens, never in advance)
|
|
22
|
+
|
|
23
|
+
**Hypothesis:** the claim, stated so that it could be wrong.
|
|
24
|
+
|
|
25
|
+
**Origin:** quote. "<the owner's exact words>" (`path/to/where/they said it.md`)
|
|
26
|
+
or **Origin:** path. `path/to/the/file.md`
|
|
27
|
+
or **Origin:** reasoning: <what it was derived from> (agent-raised only)
|
|
28
|
+
|
|
29
|
+
**Falsifier:** what observation would kill it. If this cannot be written so it could come
|
|
30
|
+
back false, the hypothesis is not yet a hypothesis and says so.
|
|
31
|
+
|
|
32
|
+
**Test:** how it gets checked.
|
|
33
|
+
|
|
34
|
+
**Due:** YYYY-MM-DD (optional, only when a real date exists;
|
|
35
|
+
omit it and the claim is parked, which is normal)
|
|
36
|
+
|
|
37
|
+
**Pushback:**
|
|
38
|
+
- YYYY-MM-DD, the owner: "verbatim" -> what it changed
|
|
39
|
+
|
|
40
|
+
**Evidence:** (when a finding arrived without the owner)
|
|
41
|
+
- YYYY-MM-DD: what was found (source)
|
|
42
|
+
|
|
43
|
+
**Outcome:** written only when the test resolves. Empty until then, and an empty
|
|
44
|
+
outcome is a fact about the ledger, not a gap to fill.
|
|
45
|
+
|
|
46
|
+
One more line, directly after `**Test:**`, and every open entry with a Test has it: `**Due:** YYYY-MM-DD` when the test has a date, or `**Due:** none, because <why no date can exist>` when it genuinely cannot be dated. An open entry with a Test and no Due line is a claim nothing will ever surface, and it is a failure. The file `.evda/due.jsonl` is derived from the Due line and from nothing else; a date that appears only in the prose of a test is invisible to it, and a bare `none` with no reason is a refusal to think.
|
|
47
|
+
|
|
48
|
+
## Rules, each with the failure it prevents
|
|
49
|
+
|
|
50
|
+
1. **Never edit a hypothesis in place.** A refinement is a new entry that supersedes. This is the ruling on spec decision #11 (history), made 2026-09-15: append-only, because overwriting destroys the evidence the audit runs on, and he still has to be able to change his mind.
|
|
51
|
+
2. **Origin is one of three kinds, and it says which.** A paraphrased origin cannot settle a later disagreement about what was actually claimed, which is the only thing an origin is for.
|
|
52
|
+
- `Origin: quote` followed by the owner's verbatim words.
|
|
53
|
+
- `Origin: path` followed by a file path that must exist.
|
|
54
|
+
- `Origin: reasoning` followed by what it was derived from. **For a hypothesis the agent raised, and only then.** There is no quote because the owner did not say it, and the hypothesis field is itself the claim being recorded. The grounds must still be named and checkable.
|
|
55
|
+
2b. **Refutation has more than one source, and the entry says which.** The owner pushing back is the common case and the highest-value one, but a hypothesis can also be killed by evidence that arrived on its own.
|
|
56
|
+
- `Pushback:` the owner's verbatim words.
|
|
57
|
+
- `Evidence:` a finding from outside the conversation, with its source. H-0028 ("Write with Siri is Apple's dictation product") was refuted by web research on the day it was raised, not by the owner, and the ledger had nowhere to put that.
|
|
58
|
+
An entry with `Evidence:` and no `Pushback:` is fine and is worth noticing: it is the loop working without the owner having to be present, which is what an always-on record is for.
|
|
59
|
+
3. **A falsifier that cannot come back false is not one.** Same contract as `verify.mjs --expect`. Where one cannot be written, say so on the entry rather than inventing one.
|
|
60
|
+
4. **Pushback is quoted, not summarised.** The correction is the highest-value thing in the ledger and it is the thing most often lost.
|
|
61
|
+
5. **Status `standing` means it was tested and survived. It never means true.** A hypothesis that has not been tested is `open`, not `standing`, and the difference is the whole value of the word.
|
|
62
|
+
What the first version was protecting is still right and is kept: **nothing in here graduates to a fact.** A standing hypothesis survived one test. It remains falsifiable forever, and a later refutation is a normal outcome rather than a reversal.
|
|
63
|
+
So: `open` is proposed and untested. `standing` is tested and survived, and therefore carries an Outcome saying what the test found. `falsified` is tested and failed. `refined` is superseded by a sharper version. `retired` is no longer worth testing.
|
|
64
|
+
6. **A falsified hypothesis is kept, never deleted.** The chain is the product; a ledger holding only surviving claims is a ledger that has learned nothing.
|
|
65
|
+
|
|
66
|
+
The only lines of an existing entry that ever change: `Status`, `Superseded by`, a new bullet under `Pushback` or `Evidence`, and `Outcome` when the test resolves. Everything else is a new entry.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
<!-- Entries begin below this line. Append at the end; never insert above an existing entry. -->
|