Skip to content
Open
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
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ For the full workflow narrative, conventions, and registry schemas, read
input for `register_and_iterate --queue`), `ideas.md` (raw inbox swept by
`$intake`, `/intake` in Claude). Mutate these only via the skills in `skills/` so commit
messages stay consistent.
`dashboard.md` is the **generated** read-only view over all of it (the page
the README links): regenerate with `pyauto-brain intake --apply dashboard`
after any registry or `draft/` change you want reflected immediately — never
hand-edit it. `dashboard_refresh.yml` self-heals it on pushes to `main`, so a
missed regeneration is drift that fixes itself, not a broken page.
`parked.md` holds tasks that were started or scoped but are not currently
in flight (e.g. work parked in a stash, orphan worktrees); move back to
`active.md` (or `planned.md` if re-scoping) when resuming.
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@

📖 **Full documentation → <https://pyautoscientist.readthedocs.io>** — the whole PyAutoScientist organism, including how to fork and run your own.

📋 **[Task dashboard → `dashboard.md`](dashboard.md)** — every task the Mind is
holding, on one page: what to pick up now, what is in flight, and the whole
backlog. Reads on a phone; regenerated from this repo, so it is never a
second copy of the truth.

The Mind of the PyAuto organism: every piece of work in the ecosystem starts
here, as a markdown file describing what you want in plain English. An AI
agent (or a human) picks the file up and turns it into a tracked GitHub
Expand All @@ -23,6 +28,7 @@ What lives here:

| File / folder | What it is |
|---------------|------------|
| [`dashboard.md`](dashboard.md) | **generated** — every task on one page, to pick from |
| `ideas.md` | raw incubating ideas, no structure required |
| `draft/<work-type>/<target>/*.md` | scoped prompts, **not started** (`feature/`, `bug/`, `docs/`, …) |
| `active/<name>.md` | **issued** prompts — an open issue, in flight |
Expand Down
33 changes: 33 additions & 0 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@ over the registry without starting work:
```
PyAutoMind/
├── README.md ← short front page
├── dashboard.md ← GENERATED task page (picks / in flight / parked / planned / backlog)
│ `pyauto-brain intake --apply dashboard`; CI self-heals it on main
├── REFERENCE.md ← this file (schemas + conventions)
├── .gitignore
Expand Down Expand Up @@ -298,11 +300,42 @@ Free-form markdown. Strong conventions:
Autonomy: supervised # safe | supervised | human-required
Priority: normal # low | normal | high
Status: draft
Blocked-by: PyAutoFit#1436 # optional; see "Declaring a gate" below
```

When present, `Type:` should match the work-type folder. The goal is light
structure, not bureaucracy — prompts stay free-form prose.

**Declaring a gate — `Closes-when:` / `Blocked-by:`.** Both optional. A prompt
that waits on something external can say so in a form `lifecycle.py issues
--drafts` can grade:

```markdown
Closes-when: autolens_profiling#70 # this prompt is DONE when that closes
Blocked-by: PyAutoArray#431, PyAutoGalaxy#486 # READY TO START when all close
```

The two readings are **opposite**, which is the whole point. Prose cannot be
graded, so a cited issue could mean either and `--drafts` had to report every
one as the same ambiguous question. With a declared key the tool reports the
action instead: a closed `Closes-when:` says *likely shipped, verify and
retire*; a closed `Blocked-by:` says *ready to start*. Prompts declaring a gate
drop out of the ambiguous advisory list.

Notes:
- Accepts `Repo#123` shorthand (assumed `PyAutoLabs/`) or a full URL, and PRs
as well as issues. Several refs may be comma-separated.
- `Blocked-by:` clears only when **every** ref closes; a partly-satisfied gate
is reported in its own weaker band rather than as ready.
- Keys inside fenced code blocks are documentation and are ignored, so a prompt
may show the syntax without declaring a gate.
- Advisory, never a gate on the exit code: retiring a prompt writes to
`complete/` and stays a human act.

Motivated by the 2026-08-09 `draft/` sweep, where five prompts' stated gates
had closed without anyone noticing — including one whose exit condition was met
the same day it was written.

The optional `Difficulty:` / `Autonomy:` / `Priority:` keys let both people and
PyAutoBrain see, at a glance, how hard a task is, whether an agent can safely
take it on, and how urgent it is. What each `Autonomy:` level *does* at every
Expand Down
2 changes: 1 addition & 1 deletion SPAWNED_FROM
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
PyAutoMind @ 0a2085dbaaa09b4d90f9d27d69dc62dd5955a1f0
PyAutoMind @ aa10cf8731d90657b55a2065bf26bb4819da62f4
generated by scripts/spawn.py
3 changes: 3 additions & 0 deletions dashboard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# PyAutoMind task dashboard

<!-- emptied by spawn; schema: REFERENCE.md -->
Loading
Loading