Skip to content

feat: Cortex tasks not phases — summaries, colours, fewer sections #20

Closed

Description

@Jammy2211

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 by cortex.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

  1. PyAutoCortex script + tree. git mv phases/ tasks/; in scripts/cortex.py rename PHASE_FILE_RE, load_phases, phase_problems, Phase class and every user-facing message; delete the Phase: header and the --phase flag on new; add required Summary: (≤10 words) to the template and to check; ruling head field Phase: → Task:; ruling title # R-… — <verb> <project> <slug>; "revival is a new slug". Update every task file header (drop Phase:, add Summary:, 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/.
  2. PyAutoBrain conductor. agents/conductors/cortex/_cortex.py: census keys phases → tasks; SECTIONS loses live, 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_task row headed by Summary: with a state pill (tone map planned/ready/accepted g, gated n, submitted/running/pulled/awaiting-ruling y, any failed/timeout/void run r) and only that state's facets; delete _fold_label; paths as <span class="pathchip"> with solid var(--accent) background and var(--accent-ink) text in _FRESH_CSS. Fold in #360's wording across AGENTS.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.py follows.
  3. Summaries (prose). One Summary: per task file (~40): the question the task answers, ≤10 words, no project name, no number.
  4. Acceptance. python3 scripts/cortex.py check clean; pytest green in both repos; pyauto-brain cortex dashboard --apply twice, --check stable; grep -ri phase in PyAutoCortex returns only Mind-epic references and historical ruling prose.

Key Files

  • PyAutoCortex/scripts/cortex.py — registry parser, check, move/rule/new/gates/retire
  • PyAutoCortex/tasks/<project>/<slug>.md (was phases/) — task files
  • PyAutoCortex/rulings/**/*.md — Task: head field
  • PyAutoCortex/{AGENTS,REFERENCE,README}.md, docs/schema_decisions.md
  • PyAutoBrain/agents/conductors/cortex/_cortex.py — census + both renderers
  • PyAutoBrain/board/_theme.py — pill tones and --accent-ink (read only)
  • PyAutoBrain/tests/test_cortex_conductor.py
  • PyAutoBrain/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.py PHASE_FILE_RE, load_phases, phase_problems,
    new, move, rule, gates, retire and their messages follow.
  • Delete the Phase: N header 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 the tasks/… path, in all
    29 rulings and in ruling_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.yaml if 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 check enforces presence and the word
    cap. Write one for every existing task file (~40); this is prose, Opus tier.
  • Under ## Projects every open task of a project is its own tap-to-copy row:
    Summary as 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 check clean; PyAutoCortex + PyAutoBrain tests
    green; pyauto-brain cortex dashboard --check stable across two renders.
  • grep -ri phase in 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

https://claude.ai/code/session_01EpM4gQikgEtCqpBJ3hzgct

Activity

  1. Jammy2211 commented on Sep 7, 2026

    @Jammy2211
    ContributorAuthor

    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.

  2. Jammy2211 commented on Sep 7, 2026

    @Jammy2211
    ContributorAuthor

    Shipped

    • PyAutoCortex#21 (merged 6d4c3c7): phases/ → tasks/, no task number, required ten-word Summary: enforced by check, rulings on Task:, new --summary; board re-rendered.
    • PyAutoBrain#361 (merged 65d2006): the board lists every open task under its project one tap-to-copy line each with coloured state pills; Running / Ready / Gated sections gone; paths as white-on-accent chips.

    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.yml was dispatched on main to self-heal the published board. Superseded #17 and PyAutoBrain#360 (closed unmerged).

    Follow-ups noted, not filed: ensure_workspace_labels.sh lists no organ repos; both cross-repo CI checkouts could fall back to a same-named branch so lockstep changes go green before merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions