From 1d36c6ee9495f7a52536a5d6e54d2eba6db1ee5d Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Tue, 1 Sep 2026 20:54:17 -0400 Subject: [PATCH] =?UTF-8?q?cortex:=20seed=20projects.yaml=20=E2=80=94=20th?= =?UTF-8?q?e=20science=20body=20map;=20planned=20status,=20note=20field;?= =?UTF-8?q?=20decisions=2050=E2=80=9352=20(PyAutoMind#382)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 3 of the Cortex birth epic seeds the empty map with eleven real rows — four active/planned science projects and seven dormant git repos — and extends the phase-1 grammar by exactly what those rows needed. - `scripts/cortex.py`: `PROJECT_STATUSES` gains `planned`; `note` becomes the one optional field (`PROJECT_OPTIONAL_FIELDS`), so the closed field set and the empty-value rule both still fire. - `projects.yaml`: rows for `inference_programme`, `subhalo_validation`, `euclid` (`remote: none` by ruling), `euclid_dr1_prelim` (`planned`), plus the seven dormant repos; header states the boundary — science repos are not added to PyAutoMind/repos.yaml. - `REFERENCE.md` subset and field table follow; `docs/schema_decisions.md` 50 (the schema extension), 51 (the pull manifest v1 schema, amending 40), 52 (the euclid ruling and the dormant-row rules). - `dashboard.md` / `dashboard.html` re-rendered; the Projects table lists every row. Verified: `cortex.py check` OK; `yaml.safe_load(projects.yaml) == parse` True; `pytest tests -q` 130 passed. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01SESCzU1FcwktEAdTZfmf3j --- REFERENCE.md | 17 ++-- dashboard.html | 15 +++- dashboard.md | 14 ++- docs/schema_decisions.md | 75 +++++++++++++++- projects.yaml | 183 ++++++++++++++++++++++++++++++++++----- scripts/cortex.py | 12 ++- tests/test_cortex.py | 43 ++++++++- 7 files changed, 324 insertions(+), 35 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index f3a4652..2e89b64 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -399,6 +399,7 @@ Real YAML, parsed with the stdlib by a ~40-line line loop. The subset: : # column 0, ^[a-z][a-z0-9_]*$ : # exactly two spaces; fixed field set, unknown field = error sync_verbs: [pull, push] # flow list of bare words — the only list + note: "free text" # the one optional field ``` - Scalars are bare unless they contain `#`, `:` or edge spaces, then @@ -406,11 +407,17 @@ Real YAML, parsed with the stdlib by a ~40-line line loop. The subset: - Comments on their own line or after ` #`. Blank lines anywhere. - No block lists, no nesting beyond the two levels, no anchors, no `---`, no quoted keys. -- Fields (all required): `remote` (`owner/repo` | `none`), `local_path` - (absolute laptop path — the Cortex-only exception to the workspace-paths - rule), `ral_root`, `mirror` (path | `none`), `sync_cli`, `sync_verbs`, - `ledger`, `witness_file` (glob), `partition` (`gpu | ral | both`), - `status` (`active | dormant`). +- Fields (required): `remote` (`owner/repo` | `none` — PyAutoLabs for active + projects; a personal remote is recorded as a fact with a `note:`), + `local_path` (absolute laptop path — the Cortex-only exception to the + workspace-paths rule), `ral_root`, `mirror` (path | `none`), `sync_cli`, + `sync_verbs`, `ledger`, `witness_file` (glob), `partition` + (`gpu | ral | both`), `status` (`active | dormant | planned`). +- `note` (free text) is the **one optional field**: a row may omit it, an + empty `note:` is drift, and any other field is still an unknown-field + error. A note holding `:` or `#` is quoted like any other scalar. +- Science repos are **not** added to `PyAutoMind/repos.yaml` — that map is the + workspace, this one is the science. - A file with no rows parses to an empty map (`{}`); PyYAML returns `None` for a comment-only document, so the `yaml.safe_load(text) == parse(text)` parity test runs on the fixture, which has a row. diff --git a/dashboard.html b/dashboard.html index 19b49be..7eef8f9 100644 --- a/dashboard.html +++ b/dashboard.html @@ -234,7 +234,20 @@

Epics markdown version

Long-running programmes whose science half lives here; each card links its development half in the Mind.

(no epics yet)

Projects markdown version

The science body map — where each project lives, what syncs it and where its witness lands.

-

(the science body map is empty)

+ + + + + + + + + + + + + +
ProjectStatusPartitionSyncWitness
concrdormantbothhpc/syncresults/**/*.json
cowls_dianadormantbothhpc/syncresults/**/*.json
euclidactivebothhpc/synccatalogue/**/*.csv
euclid_dr1_prelimplannedbothhpc/syncresults/**/*.json
ic50_workspacedormantbothhpc/syncresults/**/*.json
inference_programmeactivebothhpc/syncresults/searches/**/*.json
pj011646dormantbothhpc/syncresults/**/*.json
profilingdormantbothhpc/syncresults/**/*.json
slope_hierarchydormantbothhpc/syncresults/**/*.json
subhalo_simulationsdormantbothhpc/syncresults/**/*.json
subhalo_validationactiveralhpc/syncresults/**/*.json