Repository navigation
Description
Overview
The PyAutoCortex board still speaks in numbered "phases", which implies a sequence science does not have. A project holds unordered tasks — ideas the human runs in whatever order results dictate. This task renames phase → task throughout the Cortex and the Brain's Cortex conductor, drops the number (the slug is the identity), gives every task a required ten-word Summary:, lists every open task per project on one coloured line, and removes the Ready / Gated / Running sections that duplicated the Projects block.
Plan
- Rename phases to tasks throughout PyAutoCortex and the Brain's Cortex conductor: directory, headers, CLI flags, ruling fields, docs, tests.
- Delete the task number; the slug is the identity.
- Add a required ten-word
Summary:header, enforced bycortex.py check, and write one for every existing task. - Projects block lists every open task, one tap-to-copy line each, with coloured state pills (planned/ready/accepted green, live yellow, gated grey, failed run red).
- Remove the Ready, Gated and Running / submitted sections and tiles; keep Awaiting ruling and Recent rulings.
- Render the Local / Mirror / RAL paths as accent chips with white text.
- Fold in the wording of the open docs PRs PyAutoCortex#17 and PyAutoBrain#360 ("a run is the human's call"), which are then closed unmerged.
Detailed implementation plan
Affected Repositories
- PyAutoCortex (primary)
- PyAutoBrain
Work Classification: Library
Worktree root: ~/Code/PyAutoLabs-wt/cortex-tasks-not-phases/
Branch Survey
| Repository | Current Branch | Dirty? |
|---|---|---|
| ./PyAutoCortex | main | clean |
| ./PyAutoBrain | main | clean |
Unregistered overlap: worktree cortex-may-submit holds open PRs PyAutoCortex#17 and PyAutoBrain#360 (docs-only, same files). Decision 2026-09-07: fold their wording into this branch; close both unmerged.
Suggested branch: feature/cortex-tasks-not-phases
Implementation Steps
- PyAutoCortex script + tree.
git mv phases/ tasks/; inscripts/cortex.pyrenamePHASE_FILE_RE,load_phases,phase_problems,Phaseclass and every user-facing message; delete thePhase:header and the--phaseflag onnew; add requiredSummary:(≤10 words) to the template and tocheck; ruling head fieldPhase:→Task:; ruling title# R-… — <verb> <project> <slug>; "revival is a new slug". Update every task file header (dropPhase:, addSummary:, title# <Project> — <title>) and all 29 rulings'Task:paths. Docs:AGENTS.md(fold in docs: a submission is made on the human's ask, by human or agent #17),REFERENCE.md,README.md,docs/schema_decisions.md,tests/. - PyAutoBrain conductor.
agents/conductors/cortex/_cortex.py: census keysphases→tasks;SECTIONSloseslive,ready,gated; stats tiles and Summary table lose Ready (and the "Next phase" column becomes "Next task"); by-project block renders every open task as its own_html_taskrow headed bySummary:with a state pill (tone map planned/ready/acceptedg, gatedn, submitted/running/pulled/awaiting-rulingy, any failed/timeout/void runr) and only that state's facets; delete_fold_label; paths as<span class="pathchip">with solidvar(--accent)background andvar(--accent-ink)text in_FRESH_CSS. Fold in #360's wording acrossAGENTS.md,AUTONOMY.md,agents/conductors/cortex/{AGENTS.md,cortex.sh},skills/COMMANDS.md,skills/cortex/{SKILL.md,cortex.md}. Intake pill "gates a Cortex phase" → "gates a Cortex task".tests/test_cortex_conductor.pyfollows. - Summaries (prose). One
Summary:per task file (~40): the question the task answers, ≤10 words, no project name, no number. - Acceptance.
python3 scripts/cortex.py checkclean;pytestgreen in both repos;pyauto-brain cortex dashboard --applytwice,--checkstable;grep -ri phasein PyAutoCortex returns only Mind-epic references and historical ruling prose.
Key Files
PyAutoCortex/scripts/cortex.py— registry parser, check, move/rule/new/gates/retirePyAutoCortex/tasks/<project>/<slug>.md(wasphases/) — task filesPyAutoCortex/rulings/**/*.md—Task:head fieldPyAutoCortex/{AGENTS,REFERENCE,README}.md,docs/schema_decisions.mdPyAutoBrain/agents/conductors/cortex/_cortex.py— census + both renderersPyAutoBrain/board/_theme.py— pill tones and--accent-ink(read only)PyAutoBrain/tests/test_cortex_conductor.pyPyAutoBrain/skills/cortex/,agents/conductors/intake/_intake.py(gate pill wording)
Original Prompt
Click to expand starting prompt
Cortex: tasks not phases — one-line summaries, state colours, fewer sections
Type: feature
Target: pyautocortex
Repos:
- PyAutoCortex
- PyAutoBrain
Themes: - dashboard
- science-workflow
Difficulty: medium
Autonomy: supervised
Priority: high
Status: formalised
Consequence: judge
Review-minutes: 30
Unattended: no
Filed: 2026-09-07
Make the PyAutoCortex board read like a science project: a project holds
unordered tasks (ideas the human runs in whatever order results dictate),
each with a ten-word summary and a coloured state, all visible at once.
Original request (verbatim)
More feedback on PyAutoCortex making it suited to doing science. Firstly, I
think we should do away with the term "phases", which implies that tasks are
sequential, noting that phaes have numerical numbers. I don't think most
science analysis goes like that. Rather, it is generally the case that there
are tasks, representing ideas I have for the project, and I run them, but the
order may change and adapt based on how results come in or other priorities.
Secondly, Rathert hen "4 more open phase(s) · plans and issues" being a drop
down menu, I think that all active tasks for each project should be listed
and shown on the dashboard by default, however I think it is important that
the task takes up one line each and is more readable. Thus, for each task, I
think rather than it being listed like "Inference_programme — phase 11:
cluster extended-source inference — gradient-based fitting building on JAX
knowledge — planned" it should have a summary that is up to 10 words so I can
read is quickly. For conciseness, we dont need the "Inference_programme -
phase 11:" bit -- its under the inference_programme heasder. So for this one
I would do somehtig like "Cluster extended source inference testing gradient
based fitting". So, every task has a summary of up to 10 words, which makes
the dasboard a lot more readable. Thirdly, more color to indicate state is
good, for example "planned" could be in green if irts planned and ungdated.
"active" could be yellow if its going on, green when complete. Use red when a
run is broken and needs attention. For these, can we make the path font in
white, so it stands out against pink: Local
/home/jammy/Code/PyAutoLabs/autolens_profiling Mirror
/mnt/c/Users/Jammy/Science/inference_programme RAL
/mnt/ral/jnightin/autolens_profiling . Fourthly, think about this and tell me
if you think I'm wrong, but I think we can remove the "Ready" and "Gated"
sections, this imformation should come from the projects bit above which we
are now seeking to improve and make more visible. These sections just mean
project updates are spread over more places.
Decisions taken with the human on 2026-09-07 (all four points agreed; "yes
full rename lets do it properly", "yes remove as recommended"):
1. Full rename: phase → task, and the number goes
In @PyAutoCortex the identity of a task is its slug (the file name), which is
already unique per project — the number carries nothing.
phases/<project>/<slug>.md→tasks/<project>/<slug>.md(git mv, every
file).scripts/cortex.pyPHASE_FILE_RE,load_phases,phase_problems,
new,move,rule,gates,retireand their messages follow.- Delete the
Phase: Nheader outright (no deprecated shadow field). Title
line becomes# <Project> — <title>; ruling titles# R-… — <verb> <project> <slug>; "revival is a new phase number" becomes "revival is a new slug". - Rulings:
Phase:head field →Task:pointing at thetasks/…path, in all
29 rulings and inruling_problems.Supersedes:logic unchanged. cortex.py new <project> <slug>loses--phase; the template writes
Summary:(see 2) instead.- Docs follow:
AGENTS.md,REFERENCE.md,README.md,
docs/schema_decisions.md,checkin.yamlif it names phases;tests/. - Mind side stays: Mind epics really are sequential;
Epic:on a task file is
unchanged. Mind intake's "gates a Cortex phase" pill wording → "gates a Cortex
task". - In @PyAutoBrain:
agents/conductors/cortex/_cortex.py(218 mentions), its
AGENTS.md,skills/cortex/,tests/test_cortex_conductor.py, and the
intake conductor's Cortex-gate pill. Census keys (c["phases"]) rename to
tasks.
2. Summary: header, one line per task, no fold
- New required header
Summary:— at most ten words, the question the task
answers, not its method.cortex.py checkenforces presence and the word
cap. Write one for every existing task file (~40); this is prose, Opus tier. - Under
## Projectsevery open task of a project is its own tap-to-copy row:
Summaryas the link, a state pill, then only the state's facts (run ids,
wall vs budget, gate refs,⚠️ failed runs). No project name, no number, no
"N more open phase(s)" fold. Chips per state as today.
3. State colours and the path block
Pill tone map (shared board/_theme.py tones, no new CSS):
| state | tone |
|---|---|
| planned, ready | green g |
| gated | neutral grey n |
| submitted, running, pulled, awaiting-ruling | yellow y |
| accepted | green g |
| any failed / timeout / void run | red r, overrides the state |
Paths (Local / Mirror / RAL): render as a solid accent chip with
--accent-ink (white) text instead of the pink-on-tint inline code, so they
read on both themes. Markdown twin unchanged.
4. Sections removed
Drop Ready, Gated and Running / submitted sections, their stats
tiles and the Summary table's Ready column; the Projects block now carries
that information per task with colour. Awaiting ruling stays as the one
cross-project list (a ruling is the human's act). Recent rulings stays.
Acceptance
python3 scripts/cortex.py checkclean; PyAutoCortex + PyAutoBrain tests
green;pyauto-brain cortex dashboard --checkstable across two renders.grep -ri phasein PyAutoCortex returns only Mind-epic references and
history (ruling bodies may keep prose written at the time).- The rendered board shows every open task per project, one line, coloured.
🤖 Generated with Claude Code
Activity
Jammy2211 commentedon Sep 7, 2026
Library PRs created: #21, PyAutoLabs/PyAutoBrain#361 — pushed under the human's explicit authorization while Heart is RED for unrelated autolens workspace reasons; merge via /prm once CI is green. Their wording supersedes #17 and PyAutoBrain#360.
Jammy2211 commentedon Sep 7, 2026
Shipped
phases/→tasks/, no task number, required ten-wordSummary:enforced bycheck, rulings onTask:,new --summary; board re-rendered.Merge note: the two PRs are lockstep — each repo's CI pins the other's
main, so #21 merged with its own check green and the Brain-dependent Dashboard Refresh leg red; #361's tests were re-run against the new Cortex main and merged green;dashboard_refresh.ymlwas dispatched on main to self-heal the published board. Superseded #17 and PyAutoBrain#360 (closed unmerged).Follow-ups noted, not filed:
ensure_workspace_labels.shlists no organ repos; both cross-repo CI checkouts could fall back to a same-named branch so lockstep changes go green before merge.