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
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ The only bytes it writes of its own are the two generated pages and
| `pull [--project KEY] [--dry-run]` | **the laptop leg** — pull every active project through its own `sync_cli`, then run its `jobs` verb where it has one and show the output verbatim. It writes nothing. It runs on the laptop only: a project's `local_path` exists on one machine, so where none is present it exits **2**, names each missing root and says "this is not the laptop — run `checkin` here and `pull` on the laptop"; where some are present it pulls those and lists the rest as skipped. `--dry-run` reaches nothing |
| `checkin [--dry-run \| --apply] [--push \| --no-push] [--project KEY]` | **the check-in** — the one door, on any surface: stamp `checkin.yaml`, re-render the board, push the ledger where the rule allows, and summarise **by project** (Now, the runs as the ledger holds them, the last five entries, the commands you are likely to type next). It shells out to no sync CLI. `--dry-run` is the default and writes nothing; `--skip-pull` is accepted and ignored with a notice |
| `census [--json]` | what the Cortex is holding, by project — the one-screen answer |
| `drift [--science-root PATH] [--json]` | **the laptop leg** — where `projects.yaml` and the Science tree disagree: unregistered project folders, rows whose folder is gone, category vs status, `ral_root` category. Reads, never writes; exit **1** on an error-severity finding; a one-line skip off the laptop. `census` and `checkin` print its summary line |
| `dashboard --check` \| `--apply` | render `dashboard.md` + `dashboard.html`; `--check` exits **1 on drift**, **2 on bad args**, anything else = the renderer could not run |
| `issue [--project KEY] [--apply]` | the concise ledger block for each project's GitHub issue; `--apply` writes it into the issue body between the markers (needs `gh`) |

Expand Down
16 changes: 16 additions & 0 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,22 @@ five entries, and the `cortex.py` lines the human is likely to type next. It
flips no state and writes no entry of its own — the jobs output is read by
the human or the agent in the session and recorded with `running` / `done`.

### Drift

`pyauto-brain cortex drift` checks the body map against the laptop Science
tree, `<root>/<category>/<project>` with categories `active`, `development`,
`complete`, `archive` (the root is derived from the rows' `local_path`s;
`--science-root` overrides). Errors: a folder in `active/` or `development/`
with no row; a non-retired row whose `local_path` is gone; a folder whose
category disagrees with its status (`active`/`development` hold
`active|dormant|planned`, `complete`/`archive` hold `retired|dormant`); a
derived root that does not exist while other rows' folders do. Warnings: an
unregistered folder in `complete/` or `archive/` (storage), a non-retired
row whose `ral_root` category differs from its `local_path` category. Rows
outside the Science tree (repo-backed roots under the workspace) are exempt
from the category rules. It writes nothing; `census` and `checkin` print one
summary line, off the laptop a skip.

### `checkin.yaml`

```yaml
Expand Down
15 changes: 15 additions & 0 deletions docs/schema_decisions.md
Original file line number Diff line number Diff line change
Expand Up @@ -475,3 +475,18 @@ Choices made in phase 2 — the conductor, the board and the workflows
is registered `active` by human decision, the one exception to 52(a): an
active project needs a ledger, and git is not what makes it science.
Why: one layout on both machines means a path is derived, never looked up.

62. **`development/` is a Science category, and drift is checked, not
hoped for** (2026-10-29, PyAutoBrain#543). The laptop Science tree gained
`development/` beside `active/` for projects that develop or validate the
software (`analytic_gaussian`, `ep_toy_gaussian`, `ic50_workspace`,
`slope_hierarchy_scale`); like `active/` it holds `active`, `dormant` or
`planned` rows. The conductor's `drift` verb compares `projects.yaml`
with the tree — unregistered folders, vanished `local_path`s, category
against status, `ral_root` category — and `census`/`checkin` print its
summary line on the laptop. It writes nothing and stays out of
`census()`, so the board rendered in CI does not depend on the machine.
Why: when Science moved from `C:\Users\Jammy\Science` to
`Workspace\Science`, every `local_path` went stale and `pull` quietly
reached 3 of 12 active projects for weeks; nothing in the organism
compared the map with the territory.