Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/donna/intro.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Artifact type tags:

Donna creates internal journal records for important workflow events, according to the description in `{{ donna.lib.view("./usage/cli.donna.md") }}`.

Journal records can be forwarded to a third-party tool by configuring `[journal].cmd` in `<project-root>/.donna/config.toml`.
Journal records can be forwarded to a third-party tool by configuring `[journal].cmd` in `<project-root>/donna.toml`.

The configured command is a list of command arguments. Arguments whose first and last characters are `{` and `}` are replaced with attributes of `JournalRecord`.

Expand Down
2 changes: 1 addition & 1 deletion .agents/donna/research/specs/report.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ This document describes the format and structure of a Research Report document u

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.

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.
Session-related research artifacts MUST be stored as `@/.session/donna/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.

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

Expand Down
6 changes: 3 additions & 3 deletions .agents/donna/research/work/research.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ kind = "donna.lib.request_action"
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.

1. If you have a problem description in your context, `{{ donna.lib.goto("prepare_artifact") }}`.
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") }}`.
2. If you have no problem description in your context, but you know it is in one of `@/.session/donna/**` artifacts, find and view it. Then `{{ donna.lib.goto("prepare_artifact") }}`.
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") }}`.

## Prepare research artifact
Expand All @@ -44,8 +44,8 @@ id = "prepare_artifact"
kind = "donna.lib.request_action"
```

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

Expand Down
2 changes: 1 addition & 1 deletion .agents/donna/rfc/specs/design.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Donna introduces a group of workflows located in `../**` namespace that organize

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

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`.
If not otherwise specified, Design documents for the session MUST be stored as `@/.session/donna/design/<short-problem-related-identifier>.donna.md` artifacts under `<project-root>/.session/donna`.

**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.

Expand Down
2 changes: 1 addition & 1 deletion .agents/donna/rfc/specs/request_for_change.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Donna introduces a group of workflows located in `../**` namespace that organize

You create RFC documents to propose changes to the project.

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`.
If not otherwise specified, RFC documents for the session MUST be stored as `@/.session/donna/rfc/<short-problem-related-identifier>.donna.md` artifacts under `<project-root>/.session/donna`.

## RFC structure

Expand Down
4 changes: 2 additions & 2 deletions .agents/donna/rfc/work/design.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ kind = "donna.lib.request_action"
At this point, you SHOULD have a clear RFC to design.

1. If you have an RFC artifact id in your context, view it and `{{ donna.lib.goto("prepare_design_artifact") }}`.
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") }}`.
2. If you have no RFC artifact id in your context, but you know it is in one of `{{ donna.lib.list("@/.session/donna/**") }}` artifacts, find and view it. Then `{{ donna.lib.goto("prepare_design_artifact") }}`.
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") }}`.

## Prepare Design artifact
Expand All @@ -39,7 +39,7 @@ id = "prepare_design_artifact"
kind = "donna.lib.request_action"
```

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

~~~
Expand Down
4 changes: 2 additions & 2 deletions .agents/donna/rfc/work/do.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ kind = "donna.lib.request_action"

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

## Execute RFC work
Expand All @@ -86,7 +86,7 @@ id = "execute_rfc_work"
kind = "donna.lib.request_action"
```

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

## Polish changes
Expand Down
4 changes: 2 additions & 2 deletions .agents/donna/rfc/work/plan.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ kind = "donna.lib.workflow"
start_operation_id = "start"
```

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.
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 `@/.session/donna/**` artifact under `<project-root>/.session/donna` with detailed steps to implement the designed changes.

## Start Work

Expand All @@ -28,7 +28,7 @@ id = "prepare_workflow_artifact"
kind = "donna.lib.request_action"
```

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`.
1. If the name of the artifact is not specified explicitly, assume it to `@/.session/donna/plans/<short-id-equal-to-design-slug>.donna.md`.
2. Create a workflow with the next operations:
- Start
- 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.
Expand Down
4 changes: 2 additions & 2 deletions .agents/donna/rfc/work/request.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ kind = "donna.lib.request_action"
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.

1. If you have a problem description in your context, `{{ donna.lib.goto("prepare_rfc_artifact") }}`.
2. If you have no problem description 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_rfc_artifact") }}`.
2. If you have no problem description in your context, but you know it is in one of `{{ donna.lib.list("@/.session/donna/**") }}` artifacts, find and view it. Then `{{ donna.lib.goto("prepare_rfc_artifact") }}`.
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_rfc_artifact") }}`.

## Prepare RFC artifact
Expand All @@ -40,7 +40,7 @@ id = "prepare_rfc_artifact"
kind = "donna.lib.request_action"
```

1. If the name of the artifact is not specified explicitly, assume it to be `@/.donna/session/rfc/<short-problem-related-identifier>.donna.md`, where `<short-problem-related-identifier>` MUST be unique within the session.
1. If the name of the artifact is not specified explicitly, assume it to be `@/.session/donna/rfc/<short-problem-related-identifier>.donna.md`, where `<short-problem-related-identifier>` MUST be unique within the session.
2. Save the next template into the artifact, replace `<variables>` with appropriate values.

~~~
Expand Down
25 changes: 12 additions & 13 deletions .agents/donna/usage/cli.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ When an agent invokes Donna, it SHOULD use the `llm` protocol (pass an `-p llm`
### Project root

`-r <project-root>` sets the project root explicitly for any command (long form: `--root`).
If it is omitted, Donna discovers the project root by searching from the current working directory upwards for the `.donna` workspace directory.
If it is omitted, Donna discovers the project root by searching from the current working directory upwards for `donna.toml`.
Use this option when you run Donna from outside the project tree or when you want to target a specific project.

### Protocol cells
Expand Down Expand Up @@ -72,7 +72,7 @@ Donna renders cells differently, depending on the protocol used.

There are three sets of commands:

- `donna -p <protocol> workspaces …` — manages workspaces. Most-likely it will be used once per your project to initialize it.
- `donna -p <protocol> workspaces …` — initializes and refreshes Donna project files. Most likely it will be used once per project.
- `donna -p <protocol> sessions …` — manages sessions. You will use these commands to start, push forward, and manage your work.
- `donna -p <protocol> artifacts …` — manages artifact discovery, reading, and validation.

Expand All @@ -83,9 +83,9 @@ Use:

### Workspaces

Run `donna -p <protocol> workspaces init [<directory-path>]` to initialize Donna workspace in the given directory. If `<directory-path>` is omitted, Donna will initialize workspace in the current working directory.
Run `donna -p <protocol> workspaces init [<directory-path>]` to initialize Donna in the given directory. If `<directory-path>` is omitted, Donna will initialize the current working directory.

It is a one time operation you need to perform once per project to create a place where Donna will store all its data.
It is a one time operation you need to perform once per project to create `donna.toml`, the configured session directory, and synced Donna fixtures.

### Starting sessions

Expand All @@ -107,7 +107,7 @@ After the session starts you MUST follow the next workflow to perform your work:
3. Start chosen workflow by calling `donna -p <protocol> sessions run <workflow-id>`.
4. Donna will output descriptions of all operations it performs to complete the work.
5. Donna will output **action requests** that you MUST perform. You MUST follow these instructions precisely.
6. When you done processing an action request, call `donna -p <protocol> sessions action-request-completed <action-request-id> <next-full-operation-id>` to report request completion. `<next-full-operation-id>` MUST contain the full identifier of the next operation, for example `@/.donna/session/execute_rfc.donna.md:review_changes`.
6. When you done processing an action request, call `donna -p <protocol> sessions action-request-completed <action-request-id> <next-full-operation-id>` to report request completion. `<next-full-operation-id>` MUST contain the full identifier of the next operation, for example `@/.session/donna/execute_rfc.donna.md:review_changes`.
7. After you complete an action request, Donna will continue workflow execution and output what you need to do next.

You MUST continue following Donna's instructions until the workflow is completed.
Expand Down Expand Up @@ -136,15 +136,15 @@ If Donna tells you there is no work left, you MUST inform the developer that the

### Working with artifacts

An artifact is a markdown document with extra metadata stored in the project workspace.
An artifact is a markdown document with extra metadata stored in the Donna project.

Use the next commands to work with artifacts:

- `donna -p <protocol> artifacts list [<artifact-pattern>]` — list all artifacts corresponding to the given pattern. If `<artifact-pattern>` is omitted, list all artifacts in the project workspace. Use this command when you need to find an artifact or see what artifacts are available.
- `donna -p <protocol> artifacts list [<artifact-pattern>]` — list all artifacts corresponding to the given pattern. If `<artifact-pattern>` is omitted, list all artifacts in the Donna project. Use this command when you need to find an artifact or see what artifacts are available.
- `donna -p <protocol> artifacts view <artifact-pattern>` — get the meaningful (rendered) content of all matching artifacts. This command shows the rendered information about each artifact. Use this command when you need to read artifact content.
- `donna -p <protocol> artifacts validate [<artifact-pattern>]` — validate all artifacts corresponding to the given pattern. If `<artifact-pattern>` is omitted, validate all artifacts in the project workspace.
- `donna -p <protocol> artifacts validate [<artifact-pattern>]` — validate all artifacts corresponding to the given pattern. If `<artifact-pattern>` is omitted, validate all artifacts in the Donna project.

Donna does not mutate artifacts stored in the project workspace. Developers and external tools are responsible for creating, updating, moving, copying, or deleting artifacts before Donna reads or validates them.
Donna does not mutate artifacts stored in the project. Developers and external tools are responsible for creating, updating, moving, copying, or deleting artifacts before Donna reads or validates them.

Commands that accept an artifact pattern (`artifacts list`, `artifacts view`, `artifacts validate`) also accept `--predicate/-p <python-expression>` to filter by artifact primary section. The expression is evaluated as `bool` with `section` global available (for example: `--predicate '"workflow" in section.tags'`).

Expand All @@ -155,9 +155,9 @@ The format of `<artifact-pattern>` is as follows:
- `*/intro.donna.md` — matches all artifacts with filename `intro.donna.md` exactly one directory below the project root.
- `@/*/intro.donna.md` — equivalent full form.
- `**` — double wildcard matches multiple levels in the rooted artifact path. Examples:
- `**/name.donna.md` — matches all artifacts with filename `name.donna.md` anywhere in the project workspace.
- `**/name.donna.md` — matches all artifacts with filename `name.donna.md` anywhere in the Donna project.
- `@/**/intro.donna.md` — equivalent full form.
- `@/.donna/**` — matches all artifacts under `.donna`.
- `@/.session/donna/**` — matches all artifacts under the default configured session directory.

CLI arguments MUST NOT use relative artifact paths like `./...` or `../../...`; use absolute `@/...` paths or rooted wildcard forms.

Expand All @@ -166,8 +166,7 @@ CLI arguments MUST NOT use relative artifact paths like `./...` or `../../...`;
Donna creates internal `JournalRecord` values for important workflow events.
Donna does not expose a journal CLI command.

To forward journal records to a third-party tool, configure the workspace
`<project-root>/.donna/config.toml` file:
To forward journal records to a third-party tool, configure `<project-root>/donna.toml`:

```toml
[journal]
Expand Down
6 changes: 3 additions & 3 deletions .agents/donna/usage/worlds.donna.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ formats can be used as well, if explicitly requested by the developer or by the

Donna discovers these artifacts in a single built-in project world rooted at `<project-root>`.
The project world is a singleton object configured in code and backed by the project's filesystem.
Donna does not read world definitions from `<project-root>/.donna/config.toml`.
Donna does not read world definitions from `<project-root>/donna.toml`.

The project world and its primary artifact areas are:

- `../../../specs/**` — artifacts under `<project-root>/specs`, owned by the project itself.
- `../**` — synced Donna usage specs and workflows under `<project-root>/.agents/donna`.
- `@/.donna/session/**` — session artifacts under `<project-root>/.donna/session`.
- `@/.session/donna/**` — session artifacts under `<project-root>/.session/donna`.

The project world has a free layout, defined by the developers who own the project.

Expand All @@ -33,7 +33,7 @@ Donna has read access to artifacts stored in the project world. It discovers, fe

Developers and external tools are responsible for mutating project artifacts before Donna reads or validates them.

Donna still writes its own session state under `<project-root>/.donna/session`, but that internal state storage is separate from world-artifact mutation.
Donna still writes its own session state under `<project-root>/.session/donna`, but that internal state storage is separate from world-artifact mutation.

## Intro Artifacts

Expand Down
2 changes: 0 additions & 2 deletions .donna/config.toml

This file was deleted.

Loading
Loading