Repository navigation
Cortex phase 2: the Brain conductor, the dashboard, gate grading and the Mind badge #380
Description
Overview
Phase 2 of the cortex-birth epic (ledger draft/feature/pyautocortex/cortex_birth_epic.md; phases 0–1 shipped in #377/#379). The Cortex has its schema and script; this phase gives it a view and a driver: a Brain conductor agents/conductors/cortex/ (census, dashboard --check|--apply, gates --grade [--apply], plan, collect) rendering the Cortex dashboard to Pages, a daily gate-grading workflow, a laptop-slot admission rule, collect scoring of pulled runs into packet members, and the Mind's render-only badge "gates a Cortex phase". Two phase-1 follow-ups are ruled into this phase: the ledger carve-out for doctrine files under ledger dirs, and the repo-settings sweep for the new repo.
Exploration corrected three premises in the prompt, all folded into the plan: nothing in _pyauto_root.py forbids outside-workspace paths (the tenant firewall does, and PyAutoCortex is a free identifier while /home/jammy is a token, so Science paths come from projects.yaml at runtime); import _sizing hard-fails without a Mind checkout, so the conductor is Mind-free; and the Mind's dashboard --check drifts daily because its normaliser keeps the date banner — the Cortex normaliser strips it. Two of the four "delivered" legs are unobservable on the laptop (checkpoint is excluded from both pulls; subhalo has no structured version stamp), so collect scores legs PASS / FAIL / UNOBSERVABLE and phase 3's sync work adds a pull manifest.
Plan
- Brain PR (merges first): the conductor + stdlib renderer + admission + collect + gates wrapper; theme/board family row; Mind badge in
_intake.py; skills + command surface; resolvers;tests.ymlthird checkout; tests against the real Cortex fixture. - Cortex PR:
dashboard_refresh.yml,pages_dashboard.yml,gates_grade.yml;cortex_check.ymlpaths; ledger carve-out (AGENTS.md/TEMPLATE.mdunder ledger dirs are code; dashboards are ledger) + tests; first dashboard render; docs + schema decisions 38+. - Mind PR:
dashboard_refresh.ymlchecks out PyAutoCortex so the badge renders on Pages. - At ship: dispatch
repo_settings.ymlfor the new repo; enable Pages by hand if the first deploy fails on enablement.
Detailed implementation plan
Design decisions (recorded in PyAutoCortex/docs/schema_decisions.md 38+)
_cortex.pyis stdlib-only and Mind-free. Importsboard/_theme(css, hero,
pills with(value, tone)tuples, stats, boards_footer, JS) and, at runtime,
<cortex_root>/scripts/cortex.pyviasys.path.insert(pure functions:
load_projects,load_phases,load_rulings,batch_records,batch_reviews,
parse_header,gate_refs,gate_url,fetch_gate_states,grade_gate,
gates_report,move_phase, constants). Catchescortex.CortexError. Never
imports_sizing/_intake.- Root resolution:
--cortex <dir>→$PYAUTO_CORTEX→<brain_parent>/PyAutoCortex
→$PYAUTO_ROOT/PyAutoCortex; shellresolve_cortex()inagents/_common.sh(one
line, mirrorsresolve_mind);bin/_pyauto_root.sh_pyauto_is_rootgains
PyAutoCortex(drift fix vs the Python resolver). Project paths only from
projects.yamllocal_path/mirror(the documented exception; no literal in code). - Gate grading is the Cortex script's: the daily job runs
python3 scripts/cortex.py gates --grade --writewith no Brain checkout; the Brain verbcortex gates --grade [--apply]is a thin wrapper translating--apply→write=True(prompt spelling
kept; Cortex spelling unchanged). - Dashboard normaliser strips the generated-comment line AND the
Last updated
banner line (md and html) so a no-op night commits nothing. Exit codes:--check
1 = drift, 2 = bad args, other = renderer failure (thedashboard_refresh.yml
contract). Onlydashboard.html+batches/packets/*.htmlpublish to Pages; the
"markdown version" links point at the GitHub blob URL (as the Mind does). - Board family:
policy.yaml boards:gainscortex: PyAutoCortex(own line);
_theme.ORGANS["cortex"](tagline "Question. Run. Rule.";ink_light/ink_dark
must pass WCAG 4.5:1 vs#ffffff/#0d1117; uniqueglow) +MARKS["cortex"]
(line art on the 48×48 grid: ring, a folded-cortex wave path, a witness node;
currentColor, no emoji);_board.pycollect_cortex()sibling of
collect_resumereads the Cortexdashboard.mdcounts table| [Label](#a) | N |
(degrades silently when absent). - Collect scoring (laptop tree only; never RAL; opt-in
--pullruns the project's
own<sync_cli> pulland stampsrefreshed:): legserr(benign = every non-blank
line is a*Warning*line or its indented continuation;Traceback/Error/
Killed/OOM⇒ FAIL; missing file ⇒ UNOBSERVABLE),wall(.outstart/end stamps
when it endsFinished.; elsesearch.summaryTime To Runread from the run dir
or its.zip— the zip is authoritative, seven subhalo dirs are stale partial
extractions; else UNOBSERVABLE) vsBudget:,version(result JSON top-level
versionunderwitness_file; else UNOBSERVABLE),checkpoint(only from a pull
manifest<mirror>/.cortex/pull.jsonif present — phase 3 defines it; else
UNOBSERVABLE, taggedRAL only),resume(Fit Already Completed/
Resuming .* previous samples foundin.out⇒ FAIL),witness(a file matching
witness_filenewer than the run's submitted date ⇒ PASS). Logs found by
**/output.<jobid>*.out/**/error.<jobid>*.errundermirrorthenlocal_path
(depth ≤ 4). HEALTH = FAILED if any FAIL, SUSPECT if any UNOBSERVABLE, HEALTHY
otherwise;delivered:counts HEALTHY. Emits the packet member block (TEMPLATE.md
order) as markdown to stdout or--out; with--apply:move_phase(pulled)→
awaiting-ruling, append- refreshed:(only when--pullran or--refreshed
given), update the record's member<state>. - Admission (
cortex plan): members = phases withState: ready,Witness:,
Budget:,Lane: local-dev; session lane byshutil.which("gh")as_batch.py:57
(cloud ⇒ report the ready count, plan nothing); greedy byReview-minutesagainst
--budget(default 45), cheapest first; output== CortexPlan ==in_batch.emit's
shape; the launch payload carries no decision: the phase path, the project's
sync_cli+submitverb, and the follow-upcortex.py move <phase> submitted --run <jobid>line. No autonomy cap consulted. - Mind badge:
_intake.pyprobesPYAUTO_CORTEXthenPath(mind).parent / "PyAutoCortex"(no new imports); readsphases/**/*.mdGates:with a local
30-line-header regex + a copy ofGATE_REF_RE; maps canonical issue URL → phase rel;
badges in-flight rows whoseissuematches (head += " — ⚠️ gates a Cortex phase → <rel>"; HTMLpills((…, "y"))). Draft prompts have no issue, so no badge there.
Absent Cortex → nothing. Render-only. - Tests depend on the real Cortex checkout (prompt task 7):
tests.ymladds a third
checkout (public repo, default token) and updates its "TWO repos" header prose;
tests/test_cortex_conductor.pyusesPyAutoCortex/tests/fixtures/skeletonand
pytest.skips when the checkout is absent.
Files
PyAutoBrain (one PR, branch feature/cortex-conductor)
bin/pyauto-brain:AGENT_SCRIPT[cortex],AGENT_DESC[cortex],CONDUCTOR_ORDER,
header comment. Thenbash bin/install.sh --write-agents-surface(regenerates the
AGENTS.md commands block;test_skill_install.pychecks it).agents/conductors/cortex/{AGENTS.md,cortex.sh,_cortex.py}— AGENTS.md opens with the
Tier: conductorblockquote (Cortex = "the organism learns what is true"); the
wrapper isprofiling.sh's three lines;_cortex.pyverbscensus [--json],
dashboard --check|--apply,gates [--grade] [--apply],plan [--budget N] [--lane ..],collect [--slot S] [--pull] [--refreshed ISO] [--apply] [--out F].agents/_common.shresolve_cortex();bin/_pyauto_root.sh_pyauto_is_root+
PyAutoCortex.skills/cortex/SKILL.md+skills/cortex/cortex.md(≤200 lines each; links must
resolve);skills/COMMANDS.mdintro list + tier-1 table row.board/_theme.pyORGANS + MARKScortex;config/policy.yamlboards row;
board/_board.pycollect_cortex()+ the resume/board panels that readboards.agents/conductors/intake/_intake.pybadge (census:c["cortex_gates"]; render md +
html in In flight).docs/organs/cortex.mdgains a "Driving it" section (verbs, the dashboard, the daily
grade);docs/organs/cortex/workflows/is NOT used — the workflow text lives in the
Cortex PR (Brain merges first, so the Cortex workflows can reference Brain main)..github/workflows/tests.ymlthird checkout + prose.tests/test_cortex_conductor.py(renderer: every state renders, section order,
counts table, normaliser ignores the date;plan: lane gating + budget;gates:
injectedfetchflips exactly one phase;collect: tmp mirror with one healthy and
one resumed-run member, zip-authoritative wall, UNOBSERVABLE legs; badge: tmp Mind +
tmp Cortex, in-flight row badged, absent Cortex silent);test_board_theme.py
passes with the new entry;test_skill_install.pypasses.
PyAutoCortex (one PR after Brain merges, branch feature/cortex-conductor)
.github/workflows/dashboard_refresh.yml(mirror of the Mind's: two checkouts
incl.PyAutoLabs/PyAutoBrain,check()with the exit-code contract, PR errors /
push+cron+dispatch self-heal loop, both redispatch sites for
pages_dashboard.yml; pathsphases/** rulings/** batches/** projects.yaml epics.md dashboard.md dashboard.html; concurrency groupcortex-main-writersshared with
ledger_merge.yml),pages_dashboard.yml(mirror;enablement: true; index =
dashboard.html,batches/packets/*.html→/packets/),gates_grade.yml(daily
06:47 UTC + dispatch;contents: write, actions: write; runspython3 scripts/cortex.py gates --grade --write; 3-attempt fetch/reset/re-run/commit/push
loop; commitcortex: gates graded — <n> flipped; redispatchcortex_check.yml+
dashboard_refresh.yml; rc 1 from the script (unreadable ref) fails the job after
committing whatever flipped).cortex_check.ymlpaths gaindashboard.md/.htmland
the "no self-heal" header sentence is updated.scripts/ledger_merge.py:EXCLUDED_NAMES += ("AGENTS.md", "TEMPLATE.md")with the
comment reworded (instructional, not executable);LEDGER_FILES += ("dashboard.md", "dashboard.html")(generated; the self-heal commit must auto-merge). Tests extended
(test_ledger_merge.py: the five doctrine paths are code; dashboards are ledger;
workflow-enumeration tests updated for the three new workflow files).dashboard.md+dashboard.html— first render from the (empty) live tree, committed.AGENTS.md/REFERENCE.md: "Driving the Cortex" pointer to the Brain conductor and
the four workflows;docs/schema_decisions.md38+: every decision above (normaliser,
observable legs,--pulldoctrine, gates spelling, board row, carve-out, dashboards
as ledger, tests depend on checkout).
PyAutoMind (one PR after Cortex merges, branch feature/cortex-conductor)
.github/workflows/dashboard_refresh.yml: third checkoutPyAutoLabs/PyAutoCortex
atpath: PyAutoCortexso the badge renders on Pages; comment why.
Repo settings (at ship, in-session)
gh workflow run repo_settings.yml --repo PyAutoLabs/PyAutoBrain -f mode=apply; confirm
delete_branch_on_merge=true on PyAutoCortex; delete the stale remote
feature/cortex-schema-skeleton by hand if the sweep did not. Pages: if the first
pages_dashboard.yml run fails on enablement, gh api -X POST repos/PyAutoLabs/PyAutoCortex/pages -f build_type=workflow once, then redispatch.
Execution (Opus subagents, sequential, one worktree cortex-conductor with
PyAutoBrain + PyAutoCortex + PyAutoMind)
- Issue via
/create_issue; prompt →active/;active.mdstatus: library-dev. - Slice A (Brain core): registry + wrapper +
_cortex.pycensus/dashboard/plan/gates- theme/policy/board + skills + COMMANDS + install surface + resolvers + tests.yml +
renderer/plan/gates tests. Local commit.
- theme/policy/board + skills + COMMANDS + install surface + resolvers + tests.yml +
- Slice B (Brain collect + badge):
collect+_intake.pybadge + their tests.
Local commit. Full Brain suite green. - Slice C (Cortex PR content): four workflows, ledger carve-out + tests, first
dashboard render, docs + decisions. Local commit (rendered with the worktree Brain). - Slice D (Mind PR): the checkout line. Local commit.
- Ship (Heart YELLOW ack as before): push Brain, PR, CI, merge; then Cortex PR (its
dashboard_refresh.ymlPR check renders against Brain main = merged); then Mind PR.
Pages enable if needed; repo_settings dispatch;/prmclose-out on the human's word.
Verification
- Witness:
pyauto-brain cortex dashboard --checkclean on the phase-1 skeleton
fixture (--cortex PyAutoCortex/tests/fixtures/skeletonafter--apply); the Pages
site renders every state and the rulings (first deploy inspected by URL); the daily
workflow flips agatedphase with closed refs toready(dispatch it once against a
fixture-like phase? — no live phases exist; verified by the unit test with injected
fetchplus a drygates --graderun on the empty tree); the Mind dashboard shows
the badge (unit test with tmp trees; live Mind has no Cortex phases yet so no live
badge — say so in the record). - Brain:
pytest tests -qgreen (both 3.12/3.13 legs in CI with the Cortex checkout);
bash bin/install.sh --check-agents-surfaceclean;pyauto-brain boardrenders the
Cortex family row; tenant firewall leg green. - Cortex:
cortex.py checkOK;pytest tests -qgreen;ledger_merge.py classifyof
batches/AGENTS.md→ code;dashboard --checkclean on main after merge; Pages URL
live. - Mind:
dashboard --checkclean;lifecycle.py checkOK.
Branch Survey
| Repository | Current Branch | Dirty? |
|---|---|---|
| ./PyAutoBrain | main | clean |
| ./PyAutoCortex | main | clean |
| ./PyAutoMind | main | clean |
Suggested branch: feature/cortex-conductor (worktree root ~/Code/PyAutoLabs-wt/cortex-conductor/)
Original Prompt
Click to expand starting prompt
Cortex phase 2 — the Brain conductor, the dashboard, gate grading and the Mind badge
Type: feature
Target: pyautobrain
Repos:
- PyAutoBrain
- PyAutoCortex
- PyAutoMind
Themes: - dashboard
- mind-workflow
- hpc-gpu
Difficulty: large
Autonomy: supervised
Priority: high
Status: draft
Consequence: judge
Witness:pyauto-brain cortex dashboard --checkis clean on the phase-1 skeleton; the Cortex Pages site renders every state and the rulings; the gate workflow flips agatedphase whose refs are closed toreadyin one scheduled run; the Mind dashboard shows a "gates a Cortex phase" badge on a dev prompt named in a CortexGates:
Review-minutes: 25
Unattended: needs-slicing
Epic: cortex-birth
Phase: 2
Parent: draft/feature/pyautocortex/cortex_birth_epic.md
Filed: 2026-09-01
Phase 2 of 7 in the PyAutoCortex birth epic. Gate: phase 1. Gates phases 4
and 5. Renderer contract: the Brain PR merges BEFORE the Cortex and Mind PRs
— both dashboard workflows check out Brain main.
Natural slices if plan time says so: (a) conductor + render + workflows,
(b) gate grading, (c) admission + collect scoring, (d) the Mind badge.
Context
The Brain renders the Mind through the intake conductor
(agents/conductors/intake/_intake.py, census → dashboard --check/--apply),
regenerated by PyAutoMind/.github/workflows/dashboard_refresh.yml (checks out
PyAutoLabs/PyAutoBrain, self-heals main, then explicitly redispatches
pages_dashboard.yml because token pushes fire no events). The Cortex gets the
same shape with its own conductor. The nearest existing science-shaped code is
agents/conductors/profiling/_profiling.py: Mind-free, read-only, emits
decisions, never submits — the Cortex conductor is that, plus a renderer.
Known traps from the 2026-09-01 audit, all to be handled here rather than
worked around:
agents/faculties/sizing/_sizing.py:92hardcodes the Mind body map at
import;agents/_pyauto_root.py:2-26forbids absolute paths outside the
workspace, and every science project lives at/mnt/c/Users/Jammy/Science/._sizing.py:934-937capsresearch/experimentatsupervised, so
batch planrejects every science run — Cortex members need their own
admission rule, not that one.registry_reconcile.yml:34runslifecycle.py issueswithout--drafts, so
Mind gates are never auto-graded. The Cortex's grading must be the scheduled
default, not opt-in._intake.py:918-945:Blocked-by:never gates the Mind dashboard; the Mind
badge here is render-only and must stay that way.
Task
-
agents/conductors/cortex/registered inbin/pyauto-brain, with an
AGENTS.mdin the conductor register. Verbs:census,dashboard --check | --apply,gates --grade,plan,collect. Root resolution:
PYAUTO_CORTEX→<brain_parent>/PyAutoCortex→$PYAUTO_ROOT/PyAutoCortex;
do not extendresolve_mind. Project paths come fromprojects.yaml
local_path, resolved through a Cortex-scoped helper that is the one
documented exception to the outside-workspace rule (the exception is scoped
to rows ofprojects.yaml, nothing else). -
Dashboard renderer (stdlib, like
_intake.py:1657-1659requires):
sections Awaiting ruling (pulled, ordered failures → rulings-required →
clean) → Running / submitted (live progress: job ids, budget vs elapsed
from the batch record'srefreshed:lines) → Ready → Gated (with the
open refs and a 📋 chip) → Recent rulings → Epics (each card links its
Mind half) → Projects (the where-to-look table straight from
projects.yaml). Titles/keys parametrised — no Mind literals (_intake.py's
:58, :744-746, :1631, :1988, :1997, :2294are the pattern to avoid).
Markdown + HTML, both with a "markdown version" link per section. -
Cortex workflows (Cortex repo, Brain PR ships their text under
docs/organs/cortex/workflows/for the Cortex PR to copy):dashboard_refresh.yml
mirroring the Mind's including the self-heal and the explicit
pages_dashboard.ymlredispatch;pages_dashboard.ymlpublishing
dashboard.htmlas index andbatches/packets/*.html;ledger_merge.yml;
gates_grade.ymldaily runningcortex gates --grade --apply(flips
gated → readyand commits) — this is the one scheduled job that mutates
state, and it may only ever movegated → ready. -
Admission rule (
cortex plan): a phase is plannable whenState: ready,
witness present, budget present, and lane is the session's (always
local-dev— a cloud session reports the ready count and plans nothing,
per the laptop-lane ruling). No autonomy cap is consulted; science members
aresupervisedby definition and the ruling is the human's. Output: the
proposed members with review-minutes against the slot budget, same shape as
batch plan. -
Collect scoring (
cortex collect): for eachsubmitted/running
member, read the batch record'srefreshed:lines and the pulled tree
undermirror/local_path:.errsize against the benign baseline, wall
vsBudget:, version stamp in the result JSON,checkpoint.hdf5present
and non-empty, no resume marker in.out(Fit Already Completed/
Resuming .* previous samples found), the witness file present and scored
againstWitness:. Emits the packet member block
(PyAutoMind/batches/packets/TEMPLATE.mdmember shape) and moves the phase
pulled → awaiting-ruling. It never readssacctstate as health and
never touches RAL — the pull is the human'shpc/sync pull, recorded as a
refreshed:line. -
Mind badge (
_intake.py): when a Cortex checkout is beside the Mind (or
PYAUTO_CORTEXresolves), read every Cortex phase'sGates:; any Mind
prompt whose issue/PR matches gets a render-only "gates a Cortex phase →
" badge. Absent Cortex → no badge, no error. Add the Cortex checkout
toPyAutoMind/.github/workflows/dashboard_refresh.yml(Mind PR). -
Tests:
tests/test_cortex_conductor.pyagainst the phase-1 skeleton
fixture (every state renders; grading flips exactly one phase on a mocked
closed ref; collect scores a fixture tree with one healthy and one
resumed-run member; a cloud-lane session plans nothing and reports the
count).tests.ymlchecks out PyAutoCortex beside PyAutoMind. -
Ledger carve-out (phase-1 follow-up, ruled in 2026-09-01). In the
Cortex'sscripts/ledger_merge.py, prose that merely lives under a ledger
dir is code:rulings/AGENTS.md,batches/AGENTS.md,
batches/packets/AGENTS.md,batches/packets/TEMPLATE.md,
batches/reviews/AGENTS.md(pattern: anyAGENTS.mdorTEMPLATE.md
underLEDGER_DIRS) must classify ascodeso aclaude/**branch cannot
auto-merge doctrine edits. Test it; record it indocs/schema_decisions.md.
The Mind has the same trait and keeps it — its call, not this phase's. -
Repo settings (phase-1 follow-up, ruled in 2026-09-01). PyAutoCortex was
born after the lastPyAutoBrain/.github/workflows/repo_settings.ymlsweep
(org enumeration covers it;delete_branch_on_merge=falsetoday, and the
mergedfeature/cortex-schema-skeletonsurvived on the remote). Dispatch
the sweep once (gh workflow run repo_settings.yml), confirm the setting
flips and the stale remote branch is collected (or delete it by hand and
say so), and add PyAutoCortex to whatever per-repo config the sweep reads
if it is not purely org-enumerated.
Acceptance
- The witness above; Brain tests green;
pyauto-brain boardshows the Cortex
board family row from phase 0 populated (counts only — the strip is phase 6). - PR order: PyAutoBrain → PyAutoCortex (workflows) → PyAutoMind (badge
workflow checkout).
Out of scope
- The batch conductor's second member kind and separate
review-at:(phase 5)
—cortex plan/collecthere are standalone verbs the human runs in a
laptop slot; phase 5 folds them intobatch. - Migrating any real phase or ruling (phase 4).
- Any dispatch. The conductor never submits.
Activity
prompt: file issue + route cortex-conductor (#380) → start_library
prompt: heart-ack for cortex-conductor (#380)
Jammy2211 commentedon Sep 2, 2026
Shipped
Cortex phase 2 of 7 is merged, in the renderer-contract order (Brain first — both dashboard workflows render against Brain
main):e8f29af+4f3e498, mergefcfb918—agents/conductors/cortex/(census,dashboard --check|--apply,plan,gates --grade,collect, ~1930 lines, stdlib-only and Mind-free with an AST test pinning the import set), the Mind "gates a Cortex phase" badge in_intake.py, the board family (policy.yamlrow, theme palette + mark,collect_cortex()Resume strip),skills/cortex/,docs/organs/cortex.md, and a third checkout (PyAutoCortex) intests.yml.ba582db, merge7bb1703—dashboard_refresh.yml,pages_dashboard.ymlandgates_grade.yml(the one scheduled job that mutates state,gated → readyonly), all main-writers on thecortex-main-writersconcurrency group; the ledger carve-out inledger_merge.py; the first rendereddashboard.md+dashboard.html; schema decisions 38–49.df2b570, merge3272fde—dashboard_refresh.ymlchecks out PyAutoCortex so the badge renders on Pages.CI
Brain Testspytest 3.12 + 3.13 green (with the new PyAutoCortex checkout) — 741 passed;Docsdocs-buildgreen.Cortex Checkgreen — 127 passed,cortex.py checkOK;Dashboard Refresh(PR mode,--checkagainst Brainmain) green with no drift — the render committed on the branch is byte-identical to what the merged conductor produces.Spawn Driftprivacygreen (driftskipped on PRs by design).Dashboard RefreshandLifecycle Driftare path-filtered and correctly did not fire — the PR touches only.github/workflows/dashboard_refresh.yml.The witness
All four legs of the prompt's
Witness:hold, re-run from the canonical checkouts after merge:python3 PyAutoBrain/agents/conductors/cortex/_cortex.py dashboard --cortex PyAutoCortex --check→dashboard.md + dashboard.html are currentpython3 PyAutoCortex/scripts/cortex.py check→cortex check: OKpyauto-brain boardshows the phase-0 Cortex family row populated:Cortex: awaiting ruling 0 · running / submitted 0 · ready 0 · gated 0 · recent rulings 0 — [Cortex board](https://pyautolabs.github.io/PyAutoCortex/)python3 PyAutoMind/scripts/repos_sync.py --check→ 15 legs OKThe gate-grading leg is witnessed by
test_cortex_conductor.py(one phase flips on a mocked closed ref); the live dailygates_grade.ymlhas an empty registry to grade until phase 3 registers projects.The Mind badge has no live instance yet — it is render-only and fires on a Mind prompt whose issue a Cortex
Gates:names, and the live Cortex registry is still empty (projects.yamlrows are phase 3, real phases are phase 4). It is covered by tests and by the workflow checkout; the first live badge appears with the first migrated phase.Pages
pages_dashboard.yml's first run onmainfailed exactly as anticipated, on enablement:Pages was enabled once by hand (
gh api -X POST repos/PyAutoLabs/PyAutoCortex/pages -f build_type=workflow) and the workflow re-dispatched → success. The site is live at https://pyautolabs.github.io/PyAutoCortex/ and needs no further hand-holding.The two phase-1 follow-ups — both closed
AGENTS.md/TEMPLATE.mdanywhere under aLEDGER_DIRSpath now classify as code, so aclaude/**branch can no longer auto-merge a doctrine edit;dashboard.md/dashboard.htmlstay ledger so the self-heal commit auto-merges. Tested (+8 intest_ledger_merge.py) and recorded indocs/schema_decisions.md.repo_settings.yml -f mode=applywas dispatched and failed on PyAutoCortex:##[warning]PyAutoLabs/PyAutoCortex — PATCH refused; the PAT needs admin on this repo. The sweep's org enumeration does see the new repo; what it lacks is admin.delete_branch_on_mergewas therefore set by hand (nowtrue), and the stale mergedfeature/cortex-schema-skeletonfrom Cortex phase 1: the schema and the repo skeleton #379 was deleted by hand.feature/cortex-conductorsurvived this merge (the setting flipped after it) and is left tobranch_sweep*.yml.Follow-up for the human:
PAT_PYAUTOLABSneeds admin on PyAutoCortex, or the nextrepo_settings.ymlsweep will keep reddening on it. (The same run also warns onJammy2211/euclid_assistantandJammy2211/admin_jammy— pre-existing, unrelated.)Heart
Readiness YELLOW score 80, acknowledged by the human's
/prm, reasons verbatim:! PyAutoArray: open PR 9d oldand? release validation incomplete: no rehearsal for current source. Neither touches PyAutoBrain, PyAutoCortex or PyAutoMind, and no library release is involved.Epic
cortex-birth: phases 0–2 SHIPPED; next is phase 3,draft/feature/pyautocortex/cortex_project_remotes_and_registration.md.complete: cortex-conductor — Cortex phase 2 (#380)
prompt: register profiling-model-layout (#380)