Skip to content

Commit 13ee738

Browse files
authored
Filesystem-coupled artifact IDs; worlds removing (#72)
1 parent e90c8b3 commit 13ee738

85 files changed

Lines changed: 1773 additions & 1646 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ We may need coding agents on the each step of the process, but there no reason f
2121

2222
## Artifact Tags
2323

24-
To simplify searching for artifacts by their semantics, Donna allows tagging artifacts with semantically valuable keywords. Artifacts in `donna:*` world use the next set of tags.
24+
To simplify searching for artifacts by their semantics, Donna allows tagging artifacts with semantically valuable keywords. The synced Donna artifacts addressed under `**` use the next set of tags.
2525

2626
Artifact type tags:
2727

@@ -30,7 +30,7 @@ Artifact type tags:
3030

3131
## Instructions
3232

33-
1. On start of the YOUR session you **MUST** read and understand instruction on using the Donna tool `{{ donna.lib.view("donna:usage:cli") }}`. It **MUST** be a one time operation. Do not repeat it unless you forget how to use the tool.
33+
1. On start of the YOUR session you **MUST** read and understand instruction on using the Donna tool `{{ donna.lib.view("./usage/cli.donna.md") }}`. It **MUST** be a one time operation. Do not repeat it unless you forget how to use the tool.
3434
2. If you need to perform a work with Donna, you **MUST** select an appropriate Donna workflow to perform the work and run it.
3535
3. If there is no appropriate workflow, ask the developer for a precise instructions on what to do.
3636
4. If you are executing a workflow operation and need to perform a complex action or changes, you SHOULD search for an appropriate workflow and run it as a child workflow — it is the intended way to use Donna.
@@ -39,7 +39,7 @@ Artifact type tags:
3939

4040
## Journaling
4141

42-
You MUST use `donna journal write` to track your actions and thoughts, according the description in `{{ donna.lib.view("donna:usage:cli") }}`.
42+
You MUST use `donna journal write` to track your actions and thoughts, according the description in `{{ donna.lib.view("./usage/cli.donna.md") }}`.
4343

4444
Journaling is a required part of workflow execution. An action request MUST be considered incomplete until required journal records are written.
4545

.agents/donna/research/specs/report.md renamed to .agents/donna/research/specs/report.donna.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44
kind = "donna.lib.specification"
55
```
66

7-
This document describes the format and structure of a Research Report document used by Donna workflows from `donna:research:*` namespace.
7+
This document describes the format and structure of a Research Report document used by Donna workflows from `../**` namespace.
88

99
## Overview
1010

11-
Donna introduces a group of workflows located in `donna:research:*` namespace that organize the process of researching a problem, collecting information, analyzing it, synthesizing options, and producing a final solution.
11+
Donna introduces a group of workflows located in `../**` namespace that organize the process of researching a problem, collecting information, analyzing it, synthesizing options, and producing a final solution.
1212

13-
Session-related research artifacts MUST be stored as `session:research:<short-problem-related-identifier>`, unless the developer or parent workflow specifies a different location. The `<short-problem-related-identifier>` MUST be unique within the session.
13+
Session-related research artifacts MUST be stored as `@/.donna/session/research/<short-problem-related-identifier>.donna.md`, unless the developer or parent workflow specifies a different location. The `<short-problem-related-identifier>` MUST be unique within the session.
1414

1515
The agent (via workflows) creates the artifact and updates it iteratively as the research process progresses.
1616

1717
## Research report structure
1818

19-
The research report is a Donna artifact (check `{{ donna.lib.view("donna:usage:artifacts") }}`) with the next structure:
19+
The research report is a Donna artifact (check `{{ donna.lib.view("../../usage/artifacts.donna.md") }}`) with the next structure:
2020

2121
- **Primary section** -- title and short description of the research problem.
2222
- **Original problem description** -- original problem statement from the developer or parent workflow.
@@ -35,7 +35,7 @@ The research report is a Donna artifact (check `{{ donna.lib.view("donna:usage:a
3535
## General language and format
3636

3737
- You MUST follow [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119.txt) for keywords like MUST, SHOULD, MAY, etc.
38-
- You MUST follow `{{ donna.lib.view("donna:usage:artifacts") }}`.
38+
- You MUST follow `{{ donna.lib.view("../../usage/artifacts.donna.md") }}`.
3939
- You MUST follow the structure specified in this document.
4040

4141
### List format

donna/fixtures/specs/research/work/research.md renamed to .agents/donna/research/work/research.donna.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ kind = "donna.lib.request_action"
2020
fsm_mode = "start"
2121
```
2222

23-
1. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
24-
2. Read the specification `{{ donna.lib.view("donna:research:specs:report") }}` if you haven't done it yet.
23+
1. Read the specification `{{ donna.lib.view("../../usage/artifacts.donna.md") }}` if you haven't done it yet.
24+
2. Read the specification `{{ donna.lib.view("../specs/report.donna.md") }}` if you haven't done it yet.
2525
3. `{{ donna.lib.goto("ensure_problem_description_exists") }}`
2626

2727
## Ensure problem description exists
@@ -34,7 +34,7 @@ kind = "donna.lib.request_action"
3434
At this point, you SHOULD have a clear description of the problem in your context. I.e., you know what you need to do in this workflow.
3535

3636
1. If you have a problem description in your context, `{{ donna.lib.goto("prepare_artifact") }}`.
37-
2. If you have no problem description in your context, but you know it is in one of `session:*` artifacts, find and view it. Then `{{ donna.lib.goto("prepare_artifact") }}`.
37+
2. If you have no problem description in your context, but you know it is in one of `@/.donna/session/**` artifacts, find and view it. Then `{{ donna.lib.goto("prepare_artifact") }}`.
3838
3. If you have no problem description in your context, and you don't know where it is, ask the developer to provide it. After you get the problem description, `{{ donna.lib.goto("prepare_artifact") }}`.
3939

4040
## Prepare research artifact
@@ -44,8 +44,8 @@ id = "prepare_artifact"
4444
kind = "donna.lib.request_action"
4545
```
4646

47-
1. Based on the problem description you have, suggest an artifact name in the format `session:research:<short-problem-related-identifier>`. `<short-problem-related-identifier>` MUST be unique within the session.
48-
{# TODO: we can add donna.lib.list('session:*') here as the command to list all artifacts in session #}
47+
1. Based on the problem description you have, suggest an artifact name in the format `@/.donna/session/research/<short-problem-related-identifier>.donna.md`. `<short-problem-related-identifier>` MUST be unique within the session.
48+
{# TODO: we can add donna.lib.list('@/.donna/session/**') here as the command to list all session artifacts #}
4949
2. Create the artifact and specify an original problem description in it.
5050
3. `{{ donna.lib.goto("formalize_research") }}`
5151

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ This document describes the format and structure of a Design document used to de
88

99
## Overview
1010

11-
Donna introduces a group of workflows located in `donna:rfc:*` namespace that organize the process of proposing, reviewing, and implementing changes to a project via RFC and Design documents.
11+
Donna introduces a group of workflows located in `../**` namespace that organize the process of proposing, reviewing, and implementing changes to a project via RFC and Design documents.
1212

1313
You create a Design document to explicitly describe the exact changes you want to make to the project in order to implement the RFC.
1414

15-
If not otherwise specified, Design documents for the session MUST be stored as `session:design:<short-problem-related-identifier>` artifacts in the session world.
15+
If not otherwise specified, Design documents for the session MUST be stored as `@/.donna/session/design/<short-problem-related-identifier>.donna.md` artifacts under `<project-root>/.donna/session`.
1616

1717
**The Design document MUST list exact changes to the project that will be implemented.** E.g. concrete function names and signatures, file paths, data structures, etc.
1818

@@ -24,7 +24,7 @@ The Design document MUST NOT be a high-level description of the problem and solu
2424

2525
## Design document structure
2626

27-
The RFC document is Donna artifact (check `{{ donna.lib.view("donna:usage:artifacts") }}`) with the next structure:
27+
The RFC document is Donna artifact (check `{{ donna.lib.view("../../usage/artifacts.donna.md") }}`) with the next structure:
2828

2929
- **Primary section** — title and short description of the proposed change.
3030
- **Inputs** — list of input documents that are relevant for the proposed change, starting from the RFC document.
@@ -40,7 +40,7 @@ The RFC document is Donna artifact (check `{{ donna.lib.view("donna:usage:artifa
4040
## General language and format
4141

4242
- You MUST follow [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119.txt) for keywords like MUST, SHOULD, MAY, etc.
43-
- You MUST follow `{{ donna.lib.view("donna:usage:artifacts") }}`.
43+
- You MUST follow `{{ donna.lib.view("../../usage/artifacts.donna.md") }}`.
4444
- You MUST follow the structure specified in this document.
4545

4646
### List format

.agents/donna/rfc/specs/request_for_change.md renamed to .agents/donna/rfc/specs/request_for_change.donna.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44
kind = "donna.lib.specification"
55
```
66

7-
This document describes the format and structure of a Request for Change (RFC) document used to propose changes to a project by Donna workflows from `donna:rfc:*` namespace. This document is an input for a Design document creation.
7+
This document describes the format and structure of a Request for Change (RFC) document used to propose changes to a project by Donna workflows from `../**` namespace. This document is an input for a Design document creation.
88

99
## Overview
1010

11-
Donna introduces a group of workflows located in `donna:rfc:*` namespace that organize the process of proposing, reviewing, and implementing changes to a project via RFC and Design documents.
11+
Donna introduces a group of workflows located in `../**` namespace that organize the process of proposing, reviewing, and implementing changes to a project via RFC and Design documents.
1212

1313
You create RFC documents to propose changes to the project.
1414

15-
If not otherwise specified, RFC documents for the session MUST be stored as `session:rfc:<short-problem-related-identifier>` artifacts in the session world.
15+
If not otherwise specified, RFC documents for the session MUST be stored as `@/.donna/session/rfc/<short-problem-related-identifier>.donna.md` artifacts under `<project-root>/.donna/session`.
1616

1717
## RFC structure
1818

19-
The RFC document is Donna artifact (check `{{ donna.lib.view("donna:usage:artifacts") }}`) with the next structure:
19+
The RFC document is Donna artifact (check `{{ donna.lib.view("../../usage/artifacts.donna.md") }}`) with the next structure:
2020

2121
- **Primary section** — title and short description of the proposed change.
2222
- **Original description** — original description of the requested changes from the developer or parent workflow.
@@ -34,7 +34,7 @@ The RFC document is Donna artifact (check `{{ donna.lib.view("donna:usage:artifa
3434
## General language and format
3535

3636
- You MUST follow [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119.txt) for keywords like MUST, SHOULD, MAY, etc.
37-
- You MUST follow `{{ donna.lib.view("donna:usage:artifacts") }}`.
37+
- You MUST follow `{{ donna.lib.view("../../usage/artifacts.donna.md") }}`.
3838
- You MUST follow the structure specified in this document.
3939

4040
### List format
@@ -136,7 +136,7 @@ Examples:
136136
- Bad: `- Use clean architecture.`
137137
- Good: `- The solution MUST be compatible with Python 3.12.`
138138
- Good: `- The solution MUST NOT introduce new runtime dependencies.`
139-
- Good: `- The solution MUST follow the specification project:specs:abc`
139+
- Good: `- The solution MUST follow the specification ../../../../specs/abc.donna.md`
140140
- Good: `MUST not change public CLI flags`
141141

142142
## `Requirements` section
@@ -216,7 +216,7 @@ Examples:
216216
- Bad: `- Verify that authentication works correctly.`
217217
- Bad: `- Review the implementation manually.`
218218
- Good: `- Run test suite `tests/auth/test_login.py`; all tests MUST pass.`
219-
- Good: `- Inspect artifact `project:specs:authenticationd`; it MUST exist and contain section "Login flow".`
219+
- Good: `- Inspect artifact `../../../../specs/authentication.donna.md`; it MUST exist and contain section "Login flow".`
220220
- Good: `- Execute CLI command `tool login` with invalid credentials; command MUST exit with non-zero code.`
221221

222222
## `Deliverables` section
@@ -238,7 +238,7 @@ Examples:
238238
- Bad: `- Implement authentication code`
239239
- Bad: `- Refactor auth module.`
240240
- Good: `- Module app/auth/authentication.py exists.`
241-
- Good: `- Donna artifact project:specs:authentication exists.`
241+
- Good: `- Donna artifact ../../../../specs/authentication.donna.md exists.`
242242
- Good: `- Test suite tests/auth/ exists.`
243243

244244
## `Action items` section
@@ -259,7 +259,7 @@ Examples:
259259
- Bad: `- Work on authentication.`
260260
- Bad: `- Improve security everywhere.`
261261
- Bad: `- Fix the bugs A`
262-
- Good: `- Create an artifact project:specs:authentication with sections "Login flow" and "Token lifecycle".`
262+
- Good: `- Create an artifact ../../../../specs/authentication.donna.md with sections "Login flow" and "Token lifecycle".`
263263
- Good: `- Add test file tests/auth/test_login.py covering invalid credential cases.`
264264
- Good: `- Implement test tests/auth/test_login.py:TestLogin:test_invalid_credentials.`
265265
- Good: `- Update CLI help text to include login command description.`
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ kind = "donna.lib.workflow"
55
start_operation_id = "start"
66
```
77

8-
This workflow creates a Design document artifact based on an RFC and aligned with `donna:rfc:specs:design`.
8+
This workflow creates a Design document artifact based on an RFC and aligned with `../specs/design.donna.md`.
99

1010
## Start Work
1111

@@ -15,8 +15,8 @@ kind = "donna.lib.request_action"
1515
fsm_mode = "start"
1616
```
1717

18-
1. Read the specification `{{ donna.lib.view("donna:rfc:specs:design") }}` if you haven't done it yet.
19-
2. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
18+
1. Read the specification `{{ donna.lib.view("../specs/design.donna.md") }}` if you haven't done it yet.
19+
2. Read the specification `{{ donna.lib.view("../../usage/artifacts.donna.md") }}` if you haven't done it yet.
2020
3. `{{ donna.lib.goto("ensure_rfc_artifact_exists") }}`
2121

2222
## Ensure RFC artifact exists
@@ -29,7 +29,7 @@ kind = "donna.lib.request_action"
2929
At this point, you SHOULD have a clear RFC to design.
3030

3131
1. If you have an RFC artifact id in your context, view it and `{{ donna.lib.goto("prepare_design_artifact") }}`.
32-
2. If you have no RFC artifact id in your context, but you know it is in one of `{{ donna.lib.list("session:**") }}` artifacts, find and view it. Then `{{ donna.lib.goto("prepare_design_artifact") }}`.
32+
2. If you have no RFC artifact id in your context, but you know it is in one of `{{ donna.lib.list("@/.donna/session/**") }}` artifacts, find and view it. Then `{{ donna.lib.goto("prepare_design_artifact") }}`.
3333
3. If you have no RFC artifact id in your context, and you don't know where it is, ask the developer to provide the RFC artifact id or to create a new RFC. After you get it and view the artifact, `{{ donna.lib.goto("prepare_design_artifact") }}`.
3434

3535
## Prepare Design artifact
@@ -39,7 +39,7 @@ id = "prepare_design_artifact"
3939
kind = "donna.lib.request_action"
4040
```
4141

42-
1. If the name of the artifact is not specified explicitly, assume it to be `session:design:<short-problem-related-identifier>`, where `<short-problem-related-identifier>` SHOULD correspond to the RFC slug.
42+
1. If the name of the artifact is not specified explicitly, assume it to be `@/.donna/session/design/<short-problem-related-identifier>.donna.md`, where `<short-problem-related-identifier>` SHOULD correspond to the RFC slug.
4343
2. Save the next template into the artifact, replace `<variables>` with appropriate values.
4444

4545
~~~
@@ -81,7 +81,7 @@ id = "initial_fill"
8181
kind = "donna.lib.request_action"
8282
```
8383

84-
1. Read the specification `{{ donna.lib.view("donna:rfc:specs:design") }}` if you haven't done it yet.
84+
1. Read the specification `{{ donna.lib.view("../specs/design.donna.md") }}` if you haven't done it yet.
8585
2. Read the RFC artifact selected in the previous step if you haven't done it yet.
8686
3. Analyze the project if needed to understand the requested change context.
8787
4. Fill in all sections of the Design draft artifact.
@@ -95,7 +95,7 @@ id = "review_design_format"
9595
kind = "donna.lib.request_action"
9696
```
9797

98-
1. List mismatches between the Design artifact and the Design specification `{{ donna.lib.view("donna:rfc:specs:design") }}`.
98+
1. List mismatches between the Design artifact and the Design specification `{{ donna.lib.view("../specs/design.donna.md") }}`.
9999
2. For each mismatch, make necessary edits to the Design draft artifact to ensure compliance.
100100
3. `{{ donna.lib.goto("review_design_content") }}`
101101

@@ -106,7 +106,7 @@ id = "review_design_content"
106106
kind = "donna.lib.request_action"
107107
```
108108

109-
1. Read the Design document and identify gaps, inconsistencies, or areas for improvement in accordance with the RFC and current project context. Use `{{ donna.lib.view("donna:research:work:research") }}` workflow if you need to make a complex decision.
109+
1. Read the Design document and identify gaps, inconsistencies, or areas for improvement in accordance with the RFC and current project context. Use `{{ donna.lib.view("../../research/work/research.donna.md") }}` workflow if you need to make a complex decision.
110110
2. Make necessary edits to the Design draft artifact to address identified issues.
111111
3. If there were changes made on this step or the previous `review_design_format` step `{{ donna.lib.goto("review_design_format") }}`.
112112
4. If no changes were made, `{{ donna.lib.goto("finish") }}`.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ kind = "donna.lib.request_action"
7676

7777
1. Choose the workflow to plan the work. If you created a Design document in the previous step, use it as a basis.
7878
2. Run the chosen workflow.
79-
3. Ensure you know the workflow id created in the previous step (default is `session:execute_rfc` if not specified).
79+
3. Ensure you know the workflow id created in the previous step (default is `@/.donna/session/execute_rfc.donna.md` if not specified).
8080
4. After completing the workflow `{{ donna.lib.goto("execute_rfc_work") }}`.
8181

8282
## Execute RFC work
@@ -86,7 +86,7 @@ id = "execute_rfc_work"
8686
kind = "donna.lib.request_action"
8787
```
8888

89-
1. Run the workflow created by the plan step (default: `session:execute_rfc`) and complete it.
89+
1. Run the workflow created by the plan step (default: `@/.donna/session/execute_rfc.donna.md`) and complete it.
9090
2. After completing the workflow `{{ donna.lib.goto("polish_changes") }}`.
9191

9292
## Polish changes
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ kind = "donna.lib.workflow"
66
start_operation_id = "start"
77
```
88

9-
This workflow plans the work required to implement a specified Design document. The RFC document SHOULD be used as a helper context. The result of this workflow is a new workflow in the `session:*` world with detailed steps to implement the designed changes.
9+
This workflow plans the work required to implement a specified Design document. The RFC document SHOULD be used as a helper context. The result of this workflow is a new workflow stored as a `@/.donna/session/**` artifact under `<project-root>/.donna/session` with detailed steps to implement the designed changes.
1010

1111
## Start Work
1212

@@ -18,7 +18,7 @@ fsm_mode = "start"
1818

1919
1. Read the Design document that the developer or parent workflow wants you to implement.
2020
2. Read the RFC document that the developer or parent workflow wants you to implement, if it exists.
21-
3. Read the specification `{{ donna.lib.view("donna:usage:artifacts") }}` if you haven't done it yet.
21+
3. Read the specification `{{ donna.lib.view("../../usage/artifacts.donna.md") }}` if you haven't done it yet.
2222
4. `{{ donna.lib.goto("prepare_workflow_artifact") }}`
2323

2424
## Prepare workflow artifact
@@ -28,7 +28,7 @@ id = "prepare_workflow_artifact"
2828
kind = "donna.lib.request_action"
2929
```
3030

31-
1. If the name of the artifact is not specified explicitly, assume it to `session:plans:<short-id-equal-to-design-slug>`.
31+
1. If the name of the artifact is not specified explicitly, assume it to `@/.donna/session/plans/<short-id-equal-to-design-slug>.donna.md`.
3232
2. Create a workflow with the next operations:
3333
- Start
3434
- A step for each action point in the RFC document and each item in the `Order of implementation` in Design document with the goal to minimize dependencies between steps and introduce changes incrementally.

0 commit comments

Comments
 (0)