eidosmd 0.1.0 → 0.3.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 (107) hide show
  1. package/README.md +50 -29
  2. package/browser/dist/assets/index-Cc3cNWHY.css +1 -0
  3. package/browser/dist/assets/index-DQgCQRa5.js +46 -0
  4. package/browser/dist/favicon.svg +5 -0
  5. package/browser/dist/index.html +15 -0
  6. package/browser/dist/mark.svg +4 -0
  7. package/dist/src/cli.js +7 -0
  8. package/dist/src/commands/agents.js +1 -1
  9. package/dist/src/commands/canvas.js +77 -0
  10. package/dist/src/commands/check.js +10 -4
  11. package/dist/src/commands/configure.js +201 -0
  12. package/dist/src/commands/framework.js +37 -7
  13. package/dist/src/commands/index.js +4 -4
  14. package/dist/src/commands/init.js +5 -0
  15. package/dist/src/commands/instructions.js +1 -1
  16. package/dist/src/commands/list.js +8 -8
  17. package/dist/src/commands/migrate.js +32 -0
  18. package/dist/src/commands/new.js +3 -3
  19. package/dist/src/commands/property.js +125 -0
  20. package/dist/src/commands/seeds.js +5 -5
  21. package/dist/src/commands/setup.js +131 -0
  22. package/dist/src/commands/version.js +44 -0
  23. package/dist/src/commands/whoami.js +4 -4
  24. package/dist/src/context.js +5 -5
  25. package/dist/src/core/blueprint.js +16 -11
  26. package/dist/src/core/canvas-schema.js +148 -0
  27. package/dist/src/core/canvas.js +732 -0
  28. package/dist/src/core/check.js +221 -70
  29. package/dist/src/core/convert.js +7 -6
  30. package/dist/src/core/edits.js +1381 -0
  31. package/dist/src/core/framework-markdown.js +119 -34
  32. package/dist/src/core/framework-model.js +62 -10
  33. package/dist/src/core/framework-structured.js +222 -47
  34. package/dist/src/core/framework.js +13 -13
  35. package/dist/src/core/frontmatter.js +61 -1
  36. package/dist/src/core/git.js +84 -0
  37. package/dist/src/core/index-leaf.js +2 -2
  38. package/dist/src/core/links.js +87 -0
  39. package/dist/src/core/markdown.js +16 -9
  40. package/dist/src/core/me.js +16 -8
  41. package/dist/src/core/migrate.js +319 -0
  42. package/dist/src/core/naming.js +1 -1
  43. package/dist/src/core/regions.js +117 -0
  44. package/dist/src/core/root.js +2 -2
  45. package/dist/src/core/scaffold.js +33 -27
  46. package/dist/src/core/seed.js +187 -71
  47. package/dist/src/core/server.js +1410 -53
  48. package/dist/src/core/settings.js +232 -0
  49. package/dist/src/core/store.js +315 -0
  50. package/dist/src/core/template.js +32 -0
  51. package/dist/src/core/versions.js +84 -0
  52. package/dist/src/output.js +4 -1
  53. package/dist/src/program.js +421 -41
  54. package/instructions/authoring.md +15 -12
  55. package/instructions/configuring.md +81 -34
  56. package/instructions/init-required.md +4 -4
  57. package/instructions/overview.md +21 -9
  58. package/instructions/validating.md +9 -6
  59. package/package.json +21 -12
  60. package/standard/EIDOS.md +142 -259
  61. package/standard/seeds/README.md +12 -16
  62. package/standard/seeds/book/Framework.yaml +61 -0
  63. package/standard/seeds/book/README.md +10 -5
  64. package/standard/seeds/book/_gitignore +9 -3
  65. package/standard/seeds/book/me.md +1 -1
  66. package/standard/seeds/book/roles/README.md +3 -3
  67. package/standard/seeds/book/roles/framework-owner.md +2 -2
  68. package/standard/seeds/book/{shapes → templates}/chapter.full.md +0 -8
  69. package/standard/seeds/book/{shapes → templates}/chapter.sketch.md +0 -7
  70. package/standard/seeds/book/{shapes → templates}/frame.market.md +0 -6
  71. package/standard/seeds/book/templates/frame.premise.md +17 -0
  72. package/standard/seeds/book/{shapes → templates}/frame.reader.md +0 -6
  73. package/standard/seeds/book/{shapes → templates}/frame.voice.md +0 -7
  74. package/standard/seeds/research/Framework.yaml +61 -0
  75. package/standard/seeds/research/README.md +10 -5
  76. package/standard/seeds/research/_gitignore +9 -3
  77. package/standard/seeds/research/me.md +1 -1
  78. package/standard/seeds/research/roles/README.md +3 -3
  79. package/standard/seeds/research/roles/framework-owner.md +2 -2
  80. package/standard/seeds/research/{shapes → templates}/frame.ethics.md +0 -6
  81. package/standard/seeds/research/{shapes → templates}/frame.method.md +0 -7
  82. package/standard/seeds/research/{shapes → templates}/frame.prior-work.md +0 -6
  83. package/standard/seeds/research/{shapes → templates}/frame.question.md +0 -7
  84. package/standard/seeds/research/{shapes → templates}/investigation.full.md +0 -8
  85. package/standard/seeds/research/{shapes → templates}/investigation.note.md +0 -7
  86. package/standard/seeds/software/Framework.yaml +62 -0
  87. package/standard/seeds/software/README.md +7 -6
  88. package/standard/seeds/software/_gitignore +9 -3
  89. package/standard/seeds/software/me.md +1 -1
  90. package/standard/seeds/software/roles/README.md +3 -3
  91. package/standard/seeds/software/roles/framework-owner.md +2 -2
  92. package/standard/seeds/software/roles/project-manager.md +2 -2
  93. package/standard/seeds/software/roles/stakeholder.md +1 -1
  94. package/standard/seeds/software/{shapes → templates}/frame.architecture.md +0 -7
  95. package/standard/seeds/software/{shapes → templates}/frame.audience.md +1 -8
  96. package/standard/seeds/software/{shapes → templates}/frame.criteria.md +0 -8
  97. package/standard/seeds/software/{shapes → templates}/frame.market.md +0 -8
  98. package/standard/seeds/software/{shapes → templates}/spec.full.md +0 -8
  99. package/standard/seeds/software/{shapes → templates}/spec.micro.md +0 -9
  100. package/browser/index.html +0 -268
  101. package/dist/src/commands/convert.js +0 -30
  102. package/dist/src/core/shape.js +0 -26
  103. package/standard/seeds/book/Framework.md +0 -87
  104. package/standard/seeds/book/shapes/frame.premise.md +0 -24
  105. package/standard/seeds/research/Framework.md +0 -88
  106. package/standard/seeds/software/Framework.md +0 -88
  107. /package/standard/seeds/software/{shapes → templates}/.gitkeep +0 -0
@@ -0,0 +1,61 @@
1
+ # The framework document: the structure this root is written in. See EIDOS.md for what each key means;
2
+ # the `eidos` CLI edits this file. Every path is relative to this folder.
3
+
4
+ eidos_version: 5.3.0
5
+
6
+ # kebab-case | TitleCase | Title Case. Settled at install; changing it later means renaming files.
7
+ naming: kebab-case
8
+
9
+ # Every file at the root, one entry each.
10
+ top_level:
11
+ - title: README
12
+ path: ../README.md
13
+ description: "the root's front door: what this book is, and pointers in."
14
+
15
+ # Every folder at the root, one entry each, with its type: collection | assets | other.
16
+ folders:
17
+ # The framing docs: what every other blueprint is judged against. One left unwritten is a gap to surface,
18
+ # not a failure.
19
+ - name: Frames
20
+ type: collection
21
+ description: "What every chapter is judged against: what the book argues, who it is for, how it sounds, and where it sits."
22
+ variants:
23
+ - { name: premise, template: templates/frame.premise.md, description: "what the book says, and why it has to exist", default: true }
24
+ - { name: reader, template: templates/frame.reader.md, description: "who it is for, and what changes for them" }
25
+ - { name: voice, template: templates/frame.voice.md, description: "person, tense, register, and the rules the prose keeps" }
26
+ - { name: market, template: templates/frame.market.md, description: "shelf, comparables, and how it reaches readers" }
27
+ - name: Chapters
28
+ type: collection
29
+ description: "The book's units, one per chapter, grouped by part."
30
+ variants:
31
+ - { name: full, template: templates/chapter.full.md, description: "the complete chapter template", default: true }
32
+ - { name: sketch, template: templates/chapter.sketch.md, description: "Intent, Open Questions, What Happens, Out of Scope; grow into full" }
33
+ grouping:
34
+ label: Parts
35
+ property: part
36
+ groups: [] # one entry per part, a name and a description, as they accrue
37
+ - name: assets
38
+ type: assets
39
+ description: "Images, diagrams, and documents the blueprints link to."
40
+
41
+ # The property contract, one block per owner. A property applies to `all` collections or a list; a required
42
+ # one is generated into every new blueprint and surfaced when missing; `options` closes the value to a set.
43
+ properties:
44
+ # The standard's. migrate rewrites this block; don't hand-edit it.
45
+ core:
46
+ - { name: id, type: Text, required: true, meaning: "Stable, unique identity, in any form. Assigned once, never changed." }
47
+ - { name: title, type: Text, required: true, meaning: "Human-readable name." }
48
+ - { name: summary, type: Text, meaning: "One line: what this blueprint is. Feeds the index; absent, the index flags it." }
49
+ - { name: variant, type: Text, meaning: "Which variant this blueprint follows. Absent = the collection's default." }
50
+ # Yours. The seed ships defaults; keep, scope, or drop any of them. Only the grouping is required.
51
+ custom:
52
+ - { name: status, type: Text, applies_to: all, options: [Draft, Outlined, Drafted, Revised, Final, Cut], meaning: "Lifecycle stage." }
53
+ - { name: date_created, type: Date, applies_to: all, meaning: "YYYY-MM-DD. Set once." }
54
+ - { name: date_modified, type: Date, applies_to: all, meaning: "YYYY-MM-DD. The last change." }
55
+ - { name: tags, type: List, applies_to: all, meaning: "Free tags." }
56
+ - { name: part, type: Text, required: true, applies_to: [Chapters], meaning: "The group: matches the blueprint's sub-folder. An unknown value warns." }
57
+ - { name: depends_on, type: List, applies_to: [Chapters], meaning: "Chapters a reader must have read first, each a markdown link." }
58
+
59
+ # The root's own terms: term, means, not (the near-misses and why), and see (the blueprint that defines it).
60
+ # Starts empty; Eidos declares none.
61
+ vocabulary: []
@@ -7,11 +7,16 @@
7
7
 
8
8
  ## Where things are
9
9
 
10
- - **[Frames](Frames/index.md)** — what the book argues, who reads it, how it sounds, where it sits.
11
- - **[Chapters](Chapters/index.md)** — one file per chapter, grouped by part.
10
+ - **[Frames](Frames/)** — what the book argues, who reads it, how it sounds, where it sits.
11
+ - **[Chapters](Chapters/)** — one file per chapter, grouped by part.
12
+ - **[assets](assets/)** — images, diagrams, and documents the blueprints link to.
12
13
 
13
- The full index — every collection, its flavors, and the property Schema — is in
14
- [`_eidos/Framework.md`](_eidos/Framework.md).
14
+ ## Top-level documents
15
+
16
+ _Your own one-of-a-kind docs: an Outline of the whole book, a Style Sheet (spellings, names, hyphenation), a Bibliography. Add them here as you write them._
17
+
18
+ The full index — every folder, its variants, and the Properties table — is in
19
+ [`.eidos/Framework.yaml`](.eidos/Framework.yaml).
15
20
 
16
21
  ## How to use it
17
22
 
@@ -19,4 +24,4 @@ A chapter here describes what the chapter **is**: why it exists, what happens in
19
24
  reader leaves with. It is not a draft and not a task. Write the chapter's blueprint before the prose,
20
25
  and keep it true after — a chapter you cut stays here, marked `Cut`, so the reasoning survives.
21
26
 
22
- _A root. Its framework lives in [`_eidos/`](_eidos/); see [`_eidos/Framework.md`](_eidos/Framework.md) for the full index._
27
+ _A root. Its framework lives in [`.eidos/`](.eidos/); see [`.eidos/Framework.yaml`](.eidos/Framework.yaml) for the full index._
@@ -1,4 +1,10 @@
1
- # Eidos: the per-actor file is personal and never shared.
2
- # Each person who works on this definition keeps their own me.md (here in _eidos/); the agent reads
3
- # it to know who they are. It is the one _eidos/ file that is not checked in.
1
+ # Eidos: me.md is personal and never shared.
2
+ # Each person who works on this definition keeps their own me.md (here in .eidos/); the agent reads
3
+ # it to know who they are. It is the one file of the standard's own that is not checked in.
4
4
  me.md
5
+
6
+ # Eidos: a tool's local.yaml is personal and never shared.
7
+ # A tool that keeps a folder under plugins/ may keep its personal settings there, one machine's (a
8
+ # viewer command, an editor, a key path); everything else in its folder is the root's. This one
9
+ # line covers every tool, so no tool writes a .gitignore of its own.
10
+ plugins/*/local.yaml
@@ -4,7 +4,7 @@ Who is in the seat. This file is **personal and per-actor** — it is gitignored
4
4
  each person who works on this folder keeps their own. The agent reads it before acting, to know who
5
5
  you are and how to help.
6
6
 
7
- Set who you are below — `install` asks, or just edit this file. Leaving it blank is fine: the agent
7
+ Set who you are below — `eidos whoami` asks, or just edit this file. Leaving it blank is fine: the agent
8
8
  defaults to full, framework-owner-style facilitation and offers to record who you are.
9
9
 
10
10
  ## You are:
@@ -1,12 +1,12 @@
1
1
  # Roles
2
2
 
3
- Default **roles** for this framework — who is in the seat, and how the agent should respond to them. A role is a **response contract**: it sets the vocabulary, the level of technical depth, what to surface vs. fold away, and who holds which decisions. The agent reads it **before acting** (see the Eidos standard's `EIDOS.md`, "The actor").
3
+ Default **roles** for this framework — who is in the seat, and how the agent should respond to them. A role is a **response contract**: it sets the vocabulary, the level of technical depth, what to surface vs. fold away, and who holds which decisions. The agent reads it **before acting** (see the Eidos standard's `EIDOS.md`, "Roles").
4
4
 
5
- These are the book seed's baseline, browsable here and installed into a root's `_eidos/roles/` by `install` (committed, so a team can tune how a role is treated for their book). Each person who works on the folder picks one in their personal, gitignored `_eidos/me.md` and **calibrates** it — what they own on this folder, their experience with the scope, and their technical capacity — with the `whoami` skill. Role sets the baseline; calibration tunes it per person.
5
+ These are the book seed's baseline, browsable here and installed into a root's `.eidos/roles/` by `eidos init` (committed, so a team can tune how a role is treated for their book). Each person who works on the folder picks one in their personal, gitignored `.eidos/me.md` and **calibrates** it — what they own on this folder, their experience with the scope, and their technical capacity — with `eidos whoami`. Role sets the baseline; calibration tunes it per person.
6
6
 
7
7
  - [Framework Owner](framework-owner.md) — holds intent, scope, and decisions.
8
8
  - [Editor](editor.md) — reads for structure and what the book promises.
9
9
  - [Collaborator](collaborator.md) — drafts alongside the owner.
10
10
  - [Reader](reader.md) — reacts to the book, doesn't build it.
11
11
 
12
- A role is a baseline, not a cage: an actor can write a custom role in their `me.md`, and a framework can add or reshape role files here. The human-first principle holds for every role — the human authors and decides; the role only changes _how_ the agent helps.
12
+ A role is a baseline, not a cage: anyone can write a custom role in their `me.md`, and a framework can add or reshape role files here. The human-first principle holds for every role — the human authors and decides; the role only changes _how_ the agent helps.
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## Who they are
4
4
 
5
- Holds the **intent, scope, and decisions** — true ownership of whatever it defines, be it a product, a body of research, a methodology, or any other form of thought or effort. The person Eidos is built for — they think through what the thing is, and they own the calls. Everything else serves their clarity.
5
+ Holds the **intent, scope, and decisions** — true ownership of the product, whatever kind it is: an app, a body of research, a methodology, any other form of thought or effort. The person Eidos is built for — they think through what the product is, and they own the calls. Everything else serves their clarity.
6
6
 
7
7
  ## How to respond
8
8
 
9
- - **Vocabulary & depth:** lead with the terms of the thing itself and the decision at hand. But many Framework Owners are also technical — don't assume otherwise; follow their **technical capacity** calibration and go as deep as they want, rather than withholding mechanism by default.
9
+ - **Vocabulary & depth:** lead with the product's own terms and the decision at hand. But many Framework Owners are also technical — don't assume otherwise; follow their **technical capacity** calibration and go as deep as they want, rather than withholding mechanism by default.
10
10
  - **Decisions:** theirs. Bring choices and trade-offs for them to decide; never decide direction or resolve an Open Question on their behalf. Press hardest on **Out of Scope**.
11
11
  - **Surface / hide:** surface intent, scope, audience, criteria, and the consequences of a choice; fold mechanism into a link they can follow.
12
12
  - **Focus:** Intent, Out of Scope, the Premise and Reader frames, and whether each chapter still says what they mean.
@@ -1,11 +1,3 @@
1
- <!--
2
- The Chapter shape — the body of a chapter, and the documentation of each section. A chapter's
3
- frontmatter is generated from the framework's Schema (in Framework.md), so it is not written here.
4
- Keep the sections that apply and delete the rest, but leave the order and headings as they are — a
5
- reader should know what to expect from any chapter in this folder. The italic prompts are
6
- guidance; delete them as you fill each section in.
7
- -->
8
-
9
1
  # {{title}}
10
2
 
11
3
  ## Intent
@@ -1,10 +1,3 @@
1
- <!--
2
- The Chapter shape, sketch flavor — the smallest useful chapter blueprint, meant to grow into
3
- `chapter.full` once it earns it. A chapter's frontmatter is generated from the framework's Schema (in
4
- Framework.md), so it is not written here. Keep the order and headings as they are; delete the italic
5
- prompts as you fill each section in.
6
- -->
7
-
8
1
  # {{title}}
9
2
 
10
3
  ## Intent
@@ -1,9 +1,3 @@
1
- <!--
2
- The Market frame — where this book sits and how it reaches readers. Loose, point-in-time prose.
3
- Suggestive, not prescriptive. A Frame's frontmatter is generated from the framework's Schema (in
4
- Framework.md), so it is not written here. Delete the italic prompts as you fill in.
5
- -->
6
-
7
1
  # Market
8
2
 
9
3
  ## The Shelf
@@ -0,0 +1,17 @@
1
+ # Premise
2
+
3
+ ## The Argument
4
+
5
+ _In a few sentences: what this book claims, or what story it tells. If you can't say it without a list, it isn't a premise yet._
6
+
7
+ ## Why It Has To Exist
8
+
9
+ _What is wrong, missing, or misunderstood in the world without this book. The problem the reader has._
10
+
11
+ ## The Shape of It
12
+
13
+ _How the whole book is built — parts, arc, the movement from the first page to the last. Not a table of contents; the logic behind one._
14
+
15
+ ## What It Is Not
16
+
17
+ _The adjacent book you are deliberately not writing. This is where a book's scope is held._
@@ -1,9 +1,3 @@
1
- <!--
2
- The Reader frame — who this book is for, and what changes for them. Loose, point-in-time prose.
3
- Suggestive, not prescriptive. A Frame's frontmatter is generated from the framework's Schema (in
4
- Framework.md), so it is not written here. Delete the italic prompts as you fill in.
5
- -->
6
-
7
1
  # Reader
8
2
 
9
3
  ## Who They Are
@@ -1,10 +1,3 @@
1
- <!--
2
- The Voice frame — the rules the prose keeps, so any chapter sounds like the same book. Loose,
3
- point-in-time prose. Suggestive, not prescriptive. A Frame's frontmatter is generated from the
4
- framework's Schema (in Framework.md), so it is not written here. Delete the italic prompts as you
5
- fill in.
6
- -->
7
-
8
1
  # Voice
9
2
 
10
3
  ## Person & Tense
@@ -0,0 +1,61 @@
1
+ # The framework document: the structure this root is written in. See EIDOS.md for what each key means;
2
+ # the `eidos` CLI edits this file. Every path is relative to this folder.
3
+
4
+ eidos_version: 5.3.0
5
+
6
+ # kebab-case | TitleCase | Title Case. Settled at install; changing it later means renaming files.
7
+ naming: kebab-case
8
+
9
+ # Every file at the root, one entry each.
10
+ top_level:
11
+ - title: README
12
+ path: ../README.md
13
+ description: "the root's front door: what this programme asks, and pointers in."
14
+
15
+ # Every folder at the root, one entry each, with its type: collection | assets | other.
16
+ folders:
17
+ # The framing docs: what every other blueprint is judged against. One left unwritten is a gap to surface,
18
+ # not a failure.
19
+ - name: Frames
20
+ type: collection
21
+ description: "What every investigation is judged against: what is asked, what is known, what would count as knowing, and who is affected."
22
+ variants:
23
+ - { name: question, template: templates/frame.question.md, description: "what the programme asks, and why it matters", default: true }
24
+ - { name: "prior work", template: templates/frame.prior-work.md, description: "what is already known, and where this sits" }
25
+ - { name: method, template: templates/frame.method.md, description: "how anyone would know, and the standard of evidence" }
26
+ - { name: ethics, template: templates/frame.ethics.md, description: "who is affected, what they consented to, what could go wrong" }
27
+ - name: Investigations
28
+ type: collection
29
+ description: "The programme's units, one per line of inquiry, grouped by strand."
30
+ variants:
31
+ - { name: full, template: templates/investigation.full.md, description: "the complete investigation template", default: true }
32
+ - { name: note, template: templates/investigation.note.md, description: "Intent, Open Questions, Claims, Out of Scope; grow into full" }
33
+ grouping:
34
+ label: Strands
35
+ property: strand
36
+ groups: [] # one entry per strand, a name and a description, as they accrue
37
+ - name: assets
38
+ type: assets
39
+ description: "Images, diagrams, and documents the blueprints link to."
40
+
41
+ # The property contract, one block per owner. A property applies to `all` collections or a list; a required
42
+ # one is generated into every new blueprint and surfaced when missing; `options` closes the value to a set.
43
+ properties:
44
+ # The standard's. migrate rewrites this block; don't hand-edit it.
45
+ core:
46
+ - { name: id, type: Text, required: true, meaning: "Stable, unique identity, in any form. Assigned once, never changed." }
47
+ - { name: title, type: Text, required: true, meaning: "Human-readable name." }
48
+ - { name: summary, type: Text, meaning: "One line: what this blueprint is. Feeds the index; absent, the index flags it." }
49
+ - { name: variant, type: Text, meaning: "Which variant this blueprint follows. Absent = the collection's default." }
50
+ # Yours. The seed ships defaults; keep, scope, or drop any of them. Only the grouping is required.
51
+ custom:
52
+ - { name: status, type: Text, applies_to: all, options: [Draft, Open, Running, Answered, Inconclusive, Abandoned], meaning: "Lifecycle stage." }
53
+ - { name: date_created, type: Date, applies_to: all, meaning: "YYYY-MM-DD. Set once." }
54
+ - { name: date_modified, type: Date, applies_to: all, meaning: "YYYY-MM-DD. The last change." }
55
+ - { name: tags, type: List, applies_to: all, meaning: "Free tags." }
56
+ - { name: strand, type: Text, required: true, applies_to: [Investigations], meaning: "The group: matches the blueprint's sub-folder. An unknown value warns." }
57
+ - { name: depends_on, type: List, applies_to: [Investigations], meaning: "Investigations, data, or approvals this one needs first, each a markdown link." }
58
+
59
+ # The root's own terms: term, means, not (the near-misses and why), and see (the blueprint that defines it).
60
+ # Starts empty; Eidos declares none.
61
+ vocabulary: []
@@ -7,11 +7,16 @@
7
7
 
8
8
  ## Where things are
9
9
 
10
- - **[Frames](Frames/index.md)** — the question, the prior work, the method, the ethics.
11
- - **[Investigations](Investigations/index.md)** — one file per line of inquiry, grouped by strand.
10
+ - **[Frames](Frames/)** — the question, the prior work, the method, the ethics.
11
+ - **[Investigations](Investigations/)** — one file per line of inquiry, grouped by strand.
12
+ - **[assets](assets/)** — images, diagrams, and documents the blueprints link to.
12
13
 
13
- The full index — every collection, its flavors, and the property Schema — is in
14
- [`_eidos/Framework.md`](_eidos/Framework.md).
14
+ ## Top-level documents
15
+
16
+ _Your own one-of-a-kind docs: a Pre-registration, a Data Management Plan, a Bibliography. Add them here as you write them._
17
+
18
+ The full index — every folder, its variants, and the Properties table — is in
19
+ [`.eidos/Framework.yaml`](.eidos/Framework.yaml).
15
20
 
16
21
  ## How to use it
17
22
 
@@ -20,4 +25,4 @@ notebook, a protocol, or a task list. Write the question and the falsifier befor
20
25
  them true after — an investigation that comes back `Inconclusive` or `Abandoned` stays here, because
21
26
  the question and the attempt are both part of what the programme knows.
22
27
 
23
- _A root. Its framework lives in [`_eidos/`](_eidos/); see [`_eidos/Framework.md`](_eidos/Framework.md) for the full index._
28
+ _A root. Its framework lives in [`.eidos/`](.eidos/); see [`.eidos/Framework.yaml`](.eidos/Framework.yaml) for the full index._
@@ -1,4 +1,10 @@
1
- # Eidos: the per-actor file is personal and never shared.
2
- # Each person who works on this definition keeps their own me.md (here in _eidos/); the agent reads
3
- # it to know who they are. It is the one _eidos/ file that is not checked in.
1
+ # Eidos: me.md is personal and never shared.
2
+ # Each person who works on this definition keeps their own me.md (here in .eidos/); the agent reads
3
+ # it to know who they are. It is the one file of the standard's own that is not checked in.
4
4
  me.md
5
+
6
+ # Eidos: a tool's local.yaml is personal and never shared.
7
+ # A tool that keeps a folder under plugins/ may keep its personal settings there, one machine's (a
8
+ # viewer command, an editor, a key path); everything else in its folder is the root's. This one
9
+ # line covers every tool, so no tool writes a .gitignore of its own.
10
+ plugins/*/local.yaml
@@ -4,7 +4,7 @@ Who is in the seat. This file is **personal and per-actor** — it is gitignored
4
4
  each person who works on this folder keeps their own. The agent reads it before acting, to know who
5
5
  you are and how to help.
6
6
 
7
- Set who you are below — `install` asks, or just edit this file. Leaving it blank is fine: the agent
7
+ Set who you are below — `eidos whoami` asks, or just edit this file. Leaving it blank is fine: the agent
8
8
  defaults to full, framework-owner-style facilitation and offers to record who you are.
9
9
 
10
10
  ## You are:
@@ -1,12 +1,12 @@
1
1
  # Roles
2
2
 
3
- Default **roles** for this framework — who is in the seat, and how the agent should respond to them. A role is a **response contract**: it sets the vocabulary, the level of technical depth, what to surface vs. fold away, and who holds which decisions. The agent reads it **before acting** (see the Eidos standard's `EIDOS.md`, "The actor").
3
+ Default **roles** for this framework — who is in the seat, and how the agent should respond to them. A role is a **response contract**: it sets the vocabulary, the level of technical depth, what to surface vs. fold away, and who holds which decisions. The agent reads it **before acting** (see the Eidos standard's `EIDOS.md`, "Roles").
4
4
 
5
- These are the research seed's baseline, browsable here and installed into a root's `_eidos/roles/` by `install` (committed, so a team can tune how a role is treated for their programme). Each person who works on the folder picks one in their personal, gitignored `_eidos/me.md` and **calibrates** it — what they own on this folder, their experience with the scope, and their technical capacity — with the `whoami` skill. Role sets the baseline; calibration tunes it per person.
5
+ These are the research seed's baseline, browsable here and installed into a root's `.eidos/roles/` by `eidos init` (committed, so a team can tune how a role is treated for their programme). Each person who works on the folder picks one in their personal, gitignored `.eidos/me.md` and **calibrates** it — what they own on this folder, their experience with the scope, and their technical capacity — with `eidos whoami`. Role sets the baseline; calibration tunes it per person.
6
6
 
7
7
  - [Framework Owner](framework-owner.md) — holds intent, scope, and decisions.
8
8
  - [Researcher](researcher.md) — does the work; needs the design in full.
9
9
  - [Reviewer](reviewer.md) — reads to find the hole; adversarial by design.
10
10
  - [Sponsor](sponsor.md) — funds or answers for it; needs what it can and cannot conclude.
11
11
 
12
- A role is a baseline, not a cage: an actor can write a custom role in their `me.md`, and a framework can add or reshape role files here. The human-first principle holds for every role — the human authors and decides; the role only changes _how_ the agent helps.
12
+ A role is a baseline, not a cage: anyone can write a custom role in their `me.md`, and a framework can add or reshape role files here. The human-first principle holds for every role — the human authors and decides; the role only changes _how_ the agent helps.
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## Who they are
4
4
 
5
- Holds the **intent, scope, and decisions** — true ownership of whatever it defines, be it a product, a body of research, a methodology, or any other form of thought or effort. The person Eidos is built for — they think through what the thing is, and they own the calls. Everything else serves their clarity.
5
+ Holds the **intent, scope, and decisions** — true ownership of the product, whatever kind it is: an app, a body of research, a methodology, any other form of thought or effort. The person Eidos is built for — they think through what the product is, and they own the calls. Everything else serves their clarity.
6
6
 
7
7
  ## How to respond
8
8
 
9
- - **Vocabulary & depth:** lead with the terms of the thing itself and the decision at hand. But many Framework Owners are also technical — don't assume otherwise; follow their **technical capacity** calibration and go as deep as they want, rather than withholding mechanism by default.
9
+ - **Vocabulary & depth:** lead with the product's own terms and the decision at hand. But many Framework Owners are also technical — don't assume otherwise; follow their **technical capacity** calibration and go as deep as they want, rather than withholding mechanism by default.
10
10
  - **Decisions:** theirs. Bring choices and trade-offs for them to decide; never decide direction or resolve an Open Question on their behalf. Press hardest on **Out of Scope**.
11
11
  - **Surface / hide:** surface intent, scope, audience, criteria, and the consequences of a choice; fold mechanism into a link they can follow.
12
12
  - **Focus:** Intent, Out of Scope, the Question and Method frames, and whether each investigation still says what they mean.
@@ -1,9 +1,3 @@
1
- <!--
2
- The Ethics frame — who is affected and what you owe them. Loose, point-in-time prose. Suggestive, not
3
- prescriptive. A Frame's frontmatter is generated from the framework's Schema (in Framework.md), so it
4
- is not written here. Delete the italic prompts as you fill in.
5
- -->
6
-
7
1
  # Ethics
8
2
 
9
3
  ## Who Is Affected
@@ -1,10 +1,3 @@
1
- <!--
2
- The Method frame — how anyone would know, and the standard of evidence this programme holds. Loose,
3
- point-in-time prose. Suggestive, not prescriptive. A Frame's frontmatter is generated from the
4
- framework's Schema (in Framework.md), so it is not written here. Delete the italic prompts as you
5
- fill in.
6
- -->
7
-
8
1
  # Method
9
2
 
10
3
  ## Approach
@@ -1,9 +1,3 @@
1
- <!--
2
- The Prior Work frame — what is already known, and where this sits against it. Loose, point-in-time
3
- prose. Suggestive, not prescriptive. A Frame's frontmatter is generated from the framework's Schema
4
- (in Framework.md), so it is not written here. Delete the italic prompts as you fill in.
5
- -->
6
-
7
1
  # Prior Work
8
2
 
9
3
  ## What Is Settled
@@ -1,10 +1,3 @@
1
- <!--
2
- The Question frame — what this programme asks and why it matters. Loose, point-in-time prose: record
3
- what is true now and revise when it changes. Suggestive, not prescriptive. A Frame's frontmatter is
4
- generated from the framework's Schema (in Framework.md), so it is not written here. Delete the italic
5
- prompts as you fill in.
6
- -->
7
-
8
1
  # Question
9
2
 
10
3
  ## The Question
@@ -1,11 +1,3 @@
1
- <!--
2
- The Investigation shape — the body of one line of inquiry, and the documentation of each section. An
3
- investigation's frontmatter is generated from the framework's Schema (in Framework.md), so it is not
4
- written here. Keep the sections that apply and delete the rest, but leave the order and headings as
5
- they are — a reader should know what to expect from any investigation in this folder. The italic
6
- prompts are guidance; delete them as you fill each section in.
7
- -->
8
-
9
1
  # {{title}}
10
2
 
11
3
  ## Intent
@@ -1,10 +1,3 @@
1
- <!--
2
- The Investigation shape, note flavor — the smallest useful record of a line of inquiry, meant to grow
3
- into `investigation.full` once it earns it. Frontmatter is generated from the framework's Schema (in
4
- Framework.md), so it is not written here. Keep the order and headings as they are; delete the italic
5
- prompts as you fill each section in.
6
- -->
7
-
8
1
  # {{title}}
9
2
 
10
3
  ## Intent
@@ -0,0 +1,62 @@
1
+ # The framework document: the structure this root is written in. See EIDOS.md for what each key means;
2
+ # the `eidos` CLI edits this file. Every path is relative to this folder.
3
+
4
+ eidos_version: 5.3.0
5
+
6
+ # kebab-case | TitleCase | Title Case. Settled at install; changing it later means renaming files.
7
+ naming: kebab-case
8
+
9
+ # Every file at the root, one entry each.
10
+ top_level:
11
+ - title: README
12
+ path: ../README.md
13
+ description: "the root's front door: what this is, and pointers in."
14
+
15
+ # Every folder at the root, one entry each, with its type: collection | assets | other.
16
+ folders:
17
+ # The framing docs: what every other blueprint is judged against. One left unwritten is a gap to surface,
18
+ # not a failure.
19
+ - name: Frames
20
+ type: collection
21
+ description: "What every other blueprint is judged against: the product's architecture, audience, criteria, and market."
22
+ variants:
23
+ - { name: architecture, template: templates/frame.architecture.md, description: "the product as a built system", default: true }
24
+ - { name: audience, template: templates/frame.audience.md, description: "who it serves, and how each kind differs" }
25
+ - { name: criteria, template: templates/frame.criteria.md, description: "budget, scope objectives, timeline" }
26
+ - { name: market, template: templates/frame.market.md, description: "landscape, positioning, and how it earns" }
27
+ - name: Specs
28
+ type: collection
29
+ description: "The product's units, one per blueprint, grouped by domain."
30
+ variants:
31
+ - { name: full, template: templates/spec.full.md, description: "the complete spec template", default: true }
32
+ - { name: micro, template: templates/spec.micro.md, description: "Intent, Open Questions, ACs, Out of Scope; grow into full" }
33
+ grouping:
34
+ label: Domains
35
+ property: domain
36
+ groups: [] # one entry per domain, a name and a description, as they accrue
37
+ - name: assets
38
+ type: assets
39
+ description: "Images, diagrams, and documents the blueprints link to."
40
+
41
+ # The property contract, one block per owner. A property applies to `all` collections or a list; a required
42
+ # one is generated into every new blueprint and surfaced when missing; `options` closes the value to a set.
43
+ properties:
44
+ # The standard's. migrate rewrites this block; don't hand-edit it.
45
+ core:
46
+ - { name: id, type: Text, required: true, meaning: "Stable, unique identity, in any form. Assigned once, never changed." }
47
+ - { name: title, type: Text, required: true, meaning: "Human-readable name." }
48
+ - { name: summary, type: Text, meaning: "One line: what this blueprint is. Feeds the index; absent, the index flags it." }
49
+ - { name: variant, type: Text, meaning: "Which variant this blueprint follows. Absent = the collection's default." }
50
+ # Yours. The seed ships defaults; keep, scope, or drop any of them. Only the grouping is required.
51
+ custom:
52
+ - { name: status, type: Text, applies_to: all, options: [Draft, Intake, In Progress, Done, Archived, Deprecated], meaning: "Lifecycle stage." }
53
+ - { name: date_created, type: Date, applies_to: all, meaning: "YYYY-MM-DD. Set once." }
54
+ - { name: date_modified, type: Date, applies_to: all, meaning: "YYYY-MM-DD. The last change." }
55
+ - { name: tags, type: List, applies_to: all, meaning: "Free tags." }
56
+ - { name: domain, type: Text, required: true, applies_to: [Specs], meaning: "The group: matches the blueprint's sub-folder. An unknown value warns." }
57
+ - { name: depends_on, type: List, applies_to: [Specs], meaning: "Blueprints this one needs, each a markdown link." }
58
+ - { name: type, type: Text, applies_to: [Specs], meaning: "Soft category label: drives views and filtering, never structure. e.g. feature, capability, integration." }
59
+
60
+ # The root's own terms: term, means, not (the near-misses and why), and see (the blueprint that defines it).
61
+ # Starts empty; Eidos declares none.
62
+ vocabulary: []
@@ -4,7 +4,7 @@
4
4
  > product is, true whether or not it's been built.
5
5
 
6
6
  This README is the front door. The full index and config live in
7
- [`_eidos/Framework.md`](_eidos/Framework.md); this file orients you and points the way.
7
+ [`.eidos/Framework.yaml`](.eidos/Framework.yaml); this file orients you and points the way.
8
8
 
9
9
  ## What this is
10
10
 
@@ -12,13 +12,14 @@ _One or two sentences: what {{Product}} is, and for whom._
12
12
 
13
13
  ## Top-level documents
14
14
 
15
- _Your own one-of-a-kind docs (a Roadmap, a Vision, the generated Blueprint Map). Add them here as you write them._
15
+ _Your own one-of-a-kind docs: a Vision, a set of Design Principles, the generated Blueprint Map. Add them here as you write them._
16
16
 
17
- ## Collections
17
+ ## Folders
18
18
 
19
- - **[Frames](Frames/index.md)** — the framing docs: Architecture, Audience, Criteria, Market.
20
- - **[Specs](Specs/index.md)** — the product's units, grouped by domain.
19
+ - **[Frames](Frames/)** — the framing docs: Architecture, Audience, Criteria, Market.
20
+ - **[Specs](Specs/)** — the product's units, grouped by domain.
21
+ - **[assets](assets/)** — images, diagrams, and documents the blueprints link to.
21
22
 
22
23
  ---
23
24
 
24
- _A root. Its framework lives in [`_eidos/`](_eidos/); see [`_eidos/Framework.md`](_eidos/Framework.md) for the full index. `configure` and `index` keep these current._
25
+ _A root. Its framework lives in [`.eidos/`](.eidos/); see [`.eidos/Framework.yaml`](.eidos/Framework.yaml) for the full index. `eidos index` keeps the index current._
@@ -1,4 +1,10 @@
1
- # Eidos: the per-actor file is personal and never shared.
2
- # Each person who works on this definition keeps their own me.md (here in _eidos/); the agent reads
3
- # it to know who they are. It is the one _eidos/ file that is not checked in.
1
+ # Eidos: me.md is personal and never shared.
2
+ # Each person who works on this definition keeps their own me.md (here in .eidos/); the agent reads
3
+ # it to know who they are. It is the one file of the standard's own that is not checked in.
4
4
  me.md
5
+
6
+ # Eidos: a tool's local.yaml is personal and never shared.
7
+ # A tool that keeps a folder under plugins/ may keep its personal settings there, one machine's (a
8
+ # viewer command, an editor, a key path); everything else in its folder is the root's. This one
9
+ # line covers every tool, so no tool writes a .gitignore of its own.
10
+ plugins/*/local.yaml
@@ -4,7 +4,7 @@ Who is in the seat. This file is **personal and per-actor** — it is gitignored
4
4
  each person who works on this folder keeps their own. The agent reads it before acting, to know who
5
5
  you are and how to help.
6
6
 
7
- Set who you are below — `install` asks, or just edit this file. Leaving it blank is fine: the agent
7
+ Set who you are below — `eidos whoami` asks, or just edit this file. Leaving it blank is fine: the agent
8
8
  defaults to full, framework-owner-style facilitation and offers to record who you are.
9
9
 
10
10
  ## You are:
@@ -1,8 +1,8 @@
1
1
  # Roles
2
2
 
3
- Default **roles** for this framework — who is in the seat, and how the agent should respond to them. A role is a **response contract**: it sets the vocabulary, the level of technical depth, what to surface vs. fold away, and who holds which decisions. The agent reads it **before acting** (see the Eidos standard's `EIDOS.md`, "The actor").
3
+ Default **roles** for this framework — who is in the seat, and how the agent should respond to them. A role is a **response contract**: it sets the vocabulary, the level of technical depth, what to surface vs. fold away, and who holds which decisions. The agent reads it **before acting** (see the Eidos standard's `EIDOS.md`, "Roles").
4
4
 
5
- These are the opinionated baseline, browsable here and installed into a root's `_eidos/roles/` by `install` (committed, so a team can tune how a role is treated for their product). Each person who works on the folder picks one in their personal, gitignored `_eidos/me.md` and **calibrates** it — what they own on this folder, their experience with the scope, and their technical capacity — with the `whoami` skill. Role sets the baseline; calibration tunes it per person.
5
+ These are the opinionated baseline, browsable here and installed into a root's `.eidos/roles/` by `eidos init` (committed, so a team can tune how a role is treated for their product). Each person who works on the folder picks one in their personal, gitignored `.eidos/me.md` and **calibrates** it — what they own on this folder, their experience with the scope, and their technical capacity — with `eidos whoami`. Role sets the baseline; calibration tunes it per person.
6
6
 
7
7
  - [Framework Owner](framework-owner.md) — holds intent, scope, and decisions.
8
8
  - [Developer](developer.md) — builds from the blueprints.
@@ -10,4 +10,4 @@ These are the opinionated baseline, browsable here and installed into a root's `
10
10
  - [Designer](designer.md) — shapes the experience.
11
11
  - [Project Manager](project-manager.md) — tracks scope and progress.
12
12
 
13
- A role is a baseline, not a cage: an actor can write a custom role in their `me.md`, and a framework can add or reshape role files here. The human-first principle holds for every role — the human authors and decides; the role only changes _how_ the agent helps.
13
+ A role is a baseline, not a cage: anyone can write a custom role in their `me.md`, and a framework can add or reshape role files here. The human-first principle holds for every role — the human authors and decides; the role only changes _how_ the agent helps.
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## Who they are
4
4
 
5
- Holds the **intent, scope, and decisions** — true ownership of whatever it defines, be it a product, a body of research, a methodology, or any other form of thought or effort. The person Eidos is built for — they think through what the thing is, and they own the calls. Everything else serves their clarity.
5
+ Holds the **intent, scope, and decisions** — true ownership of the product, whatever kind it is: an app, a body of research, a methodology, any other form of thought or effort. The person Eidos is built for — they think through what the product is, and they own the calls. Everything else serves their clarity.
6
6
 
7
7
  ## How to respond
8
8
 
9
- - **Vocabulary & depth:** lead with the terms of the thing itself and the decision at hand. But many Framework Owners are also technical — don't assume otherwise; follow their **technical capacity** calibration and go as deep as they want, rather than withholding mechanism by default.
9
+ - **Vocabulary & depth:** lead with the product's own terms and the decision at hand. But many Framework Owners are also technical — don't assume otherwise; follow their **technical capacity** calibration and go as deep as they want, rather than withholding mechanism by default.
10
10
  - **Decisions:** theirs. Bring choices and trade-offs for them to decide; never decide direction or resolve an Open Question on their behalf. Press hardest on **Out of Scope**.
11
11
  - **Surface / hide:** surface intent, scope, audience, criteria, and the consequences of a choice; fold mechanism into a link they can follow.
12
12
  - **Focus:** Intent, Out of Scope, Audience, Criteria, and whether each blueprint still says what they mean.
@@ -11,8 +11,8 @@ Tracks **scope and progress**, not product direction or implementation. Wants to
11
11
  - **Surface / hide:** surface **Out of Scope** (the in/out line), each unit's `status` (its lifecycle stage), `depends_on` and other dependencies, and the Decisions log with the `created`/`modified` dates that show movement. Fold away mechanism and prose rationale.
12
12
  - **Focus:** what's in vs. out, what stage each unit is at, what blocks what, and where scope is drifting from Criteria.
13
13
 
14
- Remember Eidos captures **state and intent, not work** — there are no sprint, estimate, or assignee fields, on purpose. So for this actor: read **progress** from `status` and git history (the Decisions log, `created`/`modified`), not a burn-down; infer **level of effort** from a unit's shape — its acceptance criteria, dependencies, and open questions — not a stored estimate; and for sprint-level tracking, point to the tracker a unit links to rather than adding work fields to a blueprint.
14
+ Remember Eidos captures **state and intent, not work** — there are no sprint, estimate, or assignee fields, on purpose. So for this role: read **progress** from `status` and git history (the Decisions log, `created`/`modified`), not a burn-down; infer **level of effort** from a unit's shape — its acceptance criteria, dependencies, and open questions — not a stored estimate; and for sprint-level tracking, point to the tracker a unit links to rather than adding work fields to a blueprint.
15
15
 
16
16
  ## Calibration
17
17
 
18
- Usually moderate **technical capacity**, and broad-but-shallow **experience with the scope** — they span the whole thing rather than living in one unit. Lean on `status`, dependencies, and the in/out line.
18
+ Usually moderate **technical capacity**, and broad-but-shallow **experience with the scope** — they span the whole product rather than living in one unit. Lean on `status`, dependencies, and the in/out line.