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
29 changes: 23 additions & 6 deletions dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -219,15 +219,15 @@
a.go:hover{opacity:.9;text-decoration:none}
.mdsrc{font-size:.85em}
.boards a[data-organ="brain"]{color:#2159c9}@media(prefers-color-scheme:dark){.boards a[data-organ="brain"]{color:#6f9dff}}.boards a[data-organ="mind"]{color:#0a7d72}@media(prefers-color-scheme:dark){.boards a[data-organ="mind"]{color:#2ee6cf}}.boards a[data-organ="cortex"]{color:#a5177d}@media(prefers-color-scheme:dark){.boards a[data-organ="cortex"]{color:#ff7ad9}}.boards a[data-organ="memory"]{color:#6b34d6}@media(prefers-color-scheme:dark){.boards a[data-organ="memory"]{color:#b37eff}}.boards a[data-organ="heart"]{color:#b50f1a}@media(prefers-color-scheme:dark){.boards a[data-organ="heart"]{color:#ff6b73}}.boards a[data-organ="hands"]{color:#9a5400}@media(prefers-color-scheme:dark){.boards a[data-organ="hands"]{color:#ffa733}}.boards a[data-organ="organism"]{color:#0b6fa4}@media(prefers-color-scheme:dark){.boards a[data-organ="organism"]{color:#5ec7f5}}
.fresh{border-left:3px solid var(--edge);padding:.1rem .9rem;margin:1.2rem 0;background:var(--tint)}.fresh p{margin:.5rem 0}table.map{width:100%;border-collapse:collapse;font-size:.95em}table.map th{text-align:left;color:var(--muted);font-weight:600}table.map td,table.map th{border-bottom:1px solid var(--line);padding:.4rem .5rem .4rem 0;vertical-align:top}.checkin{margin:.2rem 0 1.4rem}.paths{margin:.2rem 0}.paths b{display:inline-block;min-width:3.6rem}.stale{color:var(--bad);font-weight:600}</style>
.fresh{padding:.1rem .9rem;margin:1.2rem 0;background:var(--tint)}.fresh p{margin:.5rem 0}table.map{width:100%;border-collapse:collapse;font-size:.95em}table.map th{text-align:left;color:var(--muted);font-weight:600}table.map td,table.map th{border-bottom:1px solid var(--line);padding:.4rem .5rem .4rem 0;vertical-align:top}.checkin{display:flex;gap:.9rem;align-items:center;padding:.9rem 1.2rem;border:2px solid var(--line);border-radius:.6rem;margin:.2rem 0 1.4rem}.checkin .mark{font-size:2rem;line-height:1}.checkin .label{display:block;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.checkin time{font-size:1.6rem;font-weight:700;font-variant-numeric:tabular-nums;display:block}.checkin .note{font-size:.85rem;color:var(--muted)}.checkin.fresh-ok{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}.checkin.fresh-ok .mark{color:var(--ok)}.checkin.fresh-bad{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,transparent)}.checkin.fresh-bad .mark{color:var(--bad)}.project h3{font-size:1.35rem;font-weight:700;padding-bottom:.2rem;border-bottom:2px solid var(--accent);letter-spacing:.01em;margin-top:1.6rem}.paths{margin:.2rem 0}.paths b{display:inline-block;min-width:3.6rem}.stale{color:var(--bad);font-weight:600}</style>
</head>
<body>
<header class="hero"><span class="orb"><svg class="mark" viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="24" cy="24" r="20.4"/><path d="M11.8,18.6 C14.4,14.8 17.8,14.4 20.1,17.1 C22.4,19.8 25.8,20.2 28.5,17.9 C31.2,15.6 34.4,16.2 36.1,19.1"/><path d="M11.6,24.6 C14.2,20.8 17.6,20.4 19.9,23.1 C22.2,25.8 25.6,26.2 28.3,23.9 C31.0,21.6 34.2,22.2 35.9,25.1"/><path d="M12.8,30.6 C15.3,27.2 18.4,26.8 20.5,29.4 C22.6,32.0 25.7,32.4 28.2,30.2"/><circle cx="32.6" cy="33.0" r="3.8"/><g fill="currentColor" stroke="none"><circle cx="32.6" cy="33.0" r="1.5"/><circle cx="11.7" cy="18.6" r="1.2"/><circle cx="11.5" cy="24.6" r="1.2"/></g></svg></span><h1>PyAuto<b>Cortex</b><span class="kind">Dashboard</span></h1><div class="rule"></div><p class="tag">Question. Run. Rule.</p></header><p class="lede">Every science phase the Cortex is holding. Tap a phase's 📋 and its next command is on your clipboard. The verdict is always yours — this page hands you the command, never the ruling.</p>
<ul class="stats"><li><b>0</b><span>Awaiting ruling</span></li><li><b>2</b><span>Running / submitted</span></li><li><b>5</b><span>Ready</span></li><li><b>1</b><span>Gated</span></li><li><b>27</b><span>Recent rulings</span></li></ul>
<div class="fresh"><p><b>Last updated 2026-09-04.</b> This page is generated from <code>phases/</code>, <code>rulings/</code> and <code>projects.yaml</code>, so it is only as current as they are. <code>dashboard_refresh.yml</code> re-renders it on every push to <code>main</code>.</p></div>
<div class="fresh"><p class="muted">Last updated 2026-09-04.</p></div>
<p class="muted mdsrc"><a href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/dashboard.md">markdown version</a> · <a href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/README.md">GitHub Page</a></p>
<div class="task"><button class="copy" data-cmd="/cortex — check in on every active science project since the last check-in (2026-09-04T17:18Z): pull each project through its sync CLI, score every live run against its pre-registered witness, move what came back, re-render and push the board, then read me the by-project summary with the prompt each phase needs next." aria-label="Copy the Claude command">📋</button><p>check in since last time</p></div>
<p class="checkin"><b>Last check-in:</b> <time id="checkin" datetime="2026-09-04T17:18Z">2026-09-04T17:18Z</time></p>
<div class="checkin" id="checkin-box"><span class="mark" id="checkin-mark"></span><div><span class="label">Last check-in</span><time id="checkin" datetime="2026-09-04T17:18Z">2026-09-04T17:18Z</time><span class="note" id="checkin-note"></span></div></div>
<a id="summary"></a><h2>Summary</h2>
<p class="muted">One row per active project — the next thing, what it is holding, and when it last ruled.</p>
<table class="map">
Expand All @@ -236,7 +236,20 @@
<tr><td><b>inference_programme</b></td><td>21 gated</td><td>0</td><td>0</td><td>0</td><td>2026-09-04</td></tr>
<tr><td><b>subhalo_validation</b></td><td>5 running</td><td>0</td><td>2</td><td>4</td><td>2026-09-02</td></tr>
</table>
<a id="projects"></a><h2>Projects <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/projects.yaml">markdown version</a></h2><p class="muted">The science body map, active first: where each project lives, what it is holding, and the one phase of it to act on next. The plans and the issues are one click away — this page routes to them rather than reprinting them; <code>census --by-project</code> and the check-in printout keep the full per-phase tree.</p>
<h3>Nothing open</h3>
<table class="map">
<tr><th>Project</th><th>Status</th><th>Phases</th></tr>
<tr><td>euclid_dr1_prelim</td><td>planned</td><td>none</td></tr>
<tr><td>concr</td><td>dormant</td><td>none</td></tr>
<tr><td>cowls_diana</td><td>dormant</td><td>none</td></tr>
<tr><td>ic50_workspace</td><td>dormant</td><td>planned 1</td></tr>
<tr><td>pj011646</td><td>dormant</td><td>none</td></tr>
<tr><td>profiling</td><td>dormant</td><td>none</td></tr>
<tr><td>slope_hierarchy</td><td>dormant</td><td>planned 2</td></tr>
<tr><td>subhalo_simulations</td><td>dormant</td><td>none</td></tr>
</table>
<a id="projects"></a><h2>Projects <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/projects.yaml">markdown version</a></h2>
<section class="project">
<h3>euclid</h3>
<p class="paths"><b>Local</b> <code>/mnt/c/Users/Jammy/Science/euclid</code></p>
<p class="paths"><b>RAL</b> <code>/mnt/ral/jnightin/euclid_strong_lens_modeling_pipeline</code></p>
Expand All @@ -249,6 +262,8 @@ <h3>euclid</h3>
<li><a href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/phases/euclid/sersic_index_recovery.md">Euclid — phase 6: do we recover Sersic indices? 10 simulated Euclid lenses vs the real prior-edge pile-up</a> <span class="facets">— planned</span></li>
<li><a href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/phases/euclid/magnification_robustness.md">Euclid — phase 7: how robust are magnification estimates? model-match vs mismatch across the 10 Euclid lenses</a> <span class="facets">— planned</span></li>
</ul><p><a href="https://github.com/PyAutoLabs/PyAutoCortex/tree/main/phases/euclid/">phases/euclid/</a></p></details>
</section>
<section class="project">
<h3>inference_programme</h3>
<p class="paths"><b>Local</b> <code>/home/jammy/Code/PyAutoLabs/autolens_profiling</code></p>
<p class="paths"><b>Mirror</b> <code>/mnt/c/Users/Jammy/Science/inference_programme</code></p>
Expand All @@ -262,6 +277,8 @@ <h3>inference_programme</h3>
<li><a href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/phases/inference_programme/prodigy_mass_pix.md">Inference_programme — phase 22: MultiStartProdigy on mass_pix — does a gradient search beat Nautilus in a SLaM mass[1] shape?</a> <span class="facets">— planned</span></li>
<li><a href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/phases/inference_programme/likelihood_term_levers.md">Inference_programme — phase 23: likelihood-term levers on mass_pix — slogdet vs cholesky, relative jitter on reg.Adapt</a> <span class="facets">— planned</span></li>
</ul><p><a href="https://github.com/PyAutoLabs/PyAutoCortex/tree/main/phases/inference_programme/">phases/inference_programme/</a> · <a href="https://github.com/PyAutoLabs/autolens_profiling/issues">issues</a></p></details>
</section>
<section class="project">
<h3>subhalo_validation</h3>
<p class="paths"><b>Local</b> <code>/mnt/c/Users/Jammy/Science/subhalo_validation</code></p>
<p class="paths"><b>RAL</b> <code>/mnt/ral/jnightin/subhalo_validation</code></p>
Expand All @@ -274,7 +291,7 @@ <h3>subhalo_validation</h3>
<li><a href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/phases/subhalo_validation/delaunay_adapt_split_pl_eff_1_outer.md">Subhalo_validation — phase 3: delaunay_adapt_split on pl_eff_1_outer — the outer-component lens, plus the AdaptSplit fix rerun</a> <span class="facets">— ready</span></li>
<li><a href="https://github.com/PyAutoLabs/PyAutoCortex/blob/main/phases/subhalo_validation/rectangular_adapt_pl_sersic_0.md">Subhalo_validation — phase 4: rectangular_adapt on pl_sersic_0 — the RectangularBilinear comparison</a> <span class="facets">— ready</span></li>
</ul><p><a href="https://github.com/PyAutoLabs/PyAutoCortex/tree/main/phases/subhalo_validation/">phases/subhalo_validation/</a> · <a href="https://github.com/PyAutoLabs/subhalo_validation/issues">issues</a></p></details>
<p class="muted">8 project(s) with nothing open: <code>euclid_dr1_prelim</code> (planned · none) · <code>concr</code> (dormant · none) · <code>cowls_diana</code> (dormant · none) · <code>ic50_workspace</code> (dormant · planned 1) · <code>pj011646</code> (dormant · none) · <code>profiling</code> (dormant · none) · <code>slope_hierarchy</code> (dormant · planned 2) · <code>subhalo_simulations</code> (dormant · none)</p>
</section>
<a id="awaiting-ruling"></a><h2>Awaiting ruling <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoCortex/tree/main/phases/">markdown version</a></h2><p class="muted">Results are in and nothing is running — the human's verdict is the only thing outstanding. Ordered failures first, then the phases a ruling is required for, then the clean ones.</p>
<p class="muted">(nothing awaiting a ruling)</p>
<a id="running--submitted"></a><h2>Running / submitted <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoCortex/tree/main/phases/">markdown version</a></h2><p class="muted">On the queue or on the machine. Wall is what the run lines record at the last refresh, against the phase's own budget.</p>
Expand Down Expand Up @@ -330,6 +347,6 @@ <h3>subhalo_validation</h3>
document.addEventListener("click",e=>{
const b=e.target.closest("button.copy");if(b)copyCmd(b);});
</script>
<script>(function(){var e=document.getElementById('checkin');if(!e)return;var t=e.getAttribute('datetime'),d=t?new Date(t):null;if(!d||isNaN(d.getTime())||(Date.now()-d.getTime())/60000>60){e.classList.add('stale');e.textContent+=' \u00b7 stale, paste the check-in';}})();</script>
<script>(function(){var e=document.getElementById('checkin'),b=document.getElementById('checkin-box'),m=document.getElementById('checkin-mark'),n=document.getElementById('checkin-note');if(!e||!b)return;var t=e.getAttribute('datetime'),d=t?new Date(t):null;if(!d||isNaN(d.getTime())||(Date.now()-d.getTime())/60000>180){b.classList.add('fresh-bad');e.classList.add('stale');if(m)m.textContent='✗';if(n)n.textContent=t?'stale, paste the check-in':'never checked in';}else{b.classList.add('fresh-ok');if(m)m.textContent='✓';var a=Math.round((Date.now()-d.getTime())/60000);if(n)n.textContent='fresh · '+(a<60?a+' min':Math.round(a/60)+' h')+' ago';}})();</script>
</body>
</html>
25 changes: 16 additions & 9 deletions dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This is the markdown version of the [PyAutoCortex Dashboard](https://pyautolabs.

Every science phase the Cortex is holding, on one page: what is waiting on your verdict, what is running, what could be launched next and what is still gated on development work. The verdict is always yours — this page hands you the command, never the ruling.

> **Last updated 2026-09-04.** This page is generated from `phases/`, `rulings/` and `projects.yaml`, so it is only as current as they are. `dashboard_refresh.yml` re-renders it on every push to `main`.
> **Last updated 2026-09-04.**

| Where | Count |
|-------|------:|
Expand All @@ -24,7 +24,7 @@ Every science phase the Cortex is holding, on one page: what is waiting on your

</details>

**Last check-in:** 2026-09-04T17:18Z
### Last check-in: 2026-09-04T17:18Z

## Summary

Expand All @@ -36,9 +36,22 @@ One row per active project — the next thing, what it is holding, and when it l
| inference_programme | 21 gated | 0 | 0 | 0 | 2026-09-04 |
| subhalo_validation | 5 running | 0 | 2 | 4 | 2026-09-02 |

#### Nothing open

| Project | Status | Phases |
|---|---|---|
| euclid_dr1_prelim | planned | none |
| concr | dormant | none |
| cowls_diana | dormant | none |
| ic50_workspace | dormant | planned 1 |
| pj011646 | dormant | none |
| profiling | dormant | none |
| slope_hierarchy | dormant | planned 2 |
| subhalo_simulations | dormant | none |

## Projects

[markdown version](https://github.com/PyAutoLabs/PyAutoCortex/blob/main/projects.yaml) — The science body map, active first: where each project lives, what it is holding, and the one phase of it to act on next. The plans and the issues are one click away — this page routes to them rather than reprinting them; `census --by-project` and the check-in printout keep the full per-phase tree.
[markdown version](https://github.com/PyAutoLabs/PyAutoCortex/blob/main/projects.yaml)

### euclid

Expand Down Expand Up @@ -126,12 +139,6 @@ cd /mnt/c/Users/Jammy/Science/subhalo_validation && hpc/sync jobs

</details>

<details><summary>8 project(s) with nothing open</summary>

`euclid_dr1_prelim` (planned · none) · `concr` (dormant · none) · `cowls_diana` (dormant · none) · `ic50_workspace` (dormant · planned 1) · `pj011646` (dormant · none) · `profiling` (dormant · none) · `slope_hierarchy` (dormant · planned 2) · `subhalo_simulations` (dormant · none)

</details>

## Awaiting ruling

[markdown version](https://github.com/PyAutoLabs/PyAutoCortex/tree/main/phases/) — Results are in and nothing is running — the human's verdict is the only thing outstanding. Ordered failures first, then the phases a ruling is required for, then the clean ones.
Expand Down
Loading