From a3f9ae8d658238d13cd6de633b998e38ddb8dfb9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 19 Aug 2026 01:50:47 +0000 Subject: [PATCH] mind: serve the dashboard's one-tap-copy HTML twin via GitHub Pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Companion to the PyAutoBrain renderer change (same-named branch): - dashboard.html — generated one-tap-copy twin of dashboard.md; a real clipboard button per task, since the GitHub mobile app renders no copy affordance on markdown code fences. - pages_dashboard.yml — publishes it as the Pages site index on every push that changes it (self-enabling via configure-pages). - dashboard_refresh.yml — the drift check and self-heal now cover both generated pages. - README + dashboard.md link the Pages URL for phone use. Merge the PyAutoBrain side first: the drift check regenerates against PyAutoBrain main. --- .github/workflows/dashboard_refresh.yml | 6 +- .github/workflows/pages_dashboard.yml | 55 ++++++ README.md | 5 +- dashboard.html | 245 ++++++++++++++++++++++++ dashboard.md | 2 + 5 files changed, 310 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/pages_dashboard.yml create mode 100644 dashboard.html diff --git a/.github/workflows/dashboard_refresh.yml b/.github/workflows/dashboard_refresh.yml index 6469ef60..dd7badfc 100644 --- a/.github/workflows/dashboard_refresh.yml +++ b/.github/workflows/dashboard_refresh.yml @@ -28,6 +28,7 @@ on: - "parked.md" - "planned.md" - "dashboard.md" + - "dashboard.html" pull_request: paths: - "draft/**" @@ -36,6 +37,7 @@ on: - "parked.md" - "planned.md" - "dashboard.md" + - "dashboard.html" workflow_dispatch: # contents: write is needed by the self-heal push on main; PR runs never push. @@ -100,8 +102,8 @@ jobs: echo "::error::'--apply dashboard' did not converge — renderer bug, repair by hand" exit 1 fi - git add dashboard.md - git commit -m "mind: self-heal stale dashboard.md" + git add dashboard.md dashboard.html + git commit -m "mind: self-heal stale dashboard pages" if git push origin HEAD:main; then echo "healed on attempt ${attempt}" exit 0 diff --git a/.github/workflows/pages_dashboard.yml b/.github/workflows/pages_dashboard.yml new file mode 100644 index 00000000..49efd5ed --- /dev/null +++ b/.github/workflows/pages_dashboard.yml @@ -0,0 +1,55 @@ +name: Pages Dashboard + +# Serves the generated `dashboard.html` — the task dashboard's one-tap-copy +# twin — at this repo's GitHub Pages URL (as the site's index page). +# +# Why a twin exists at all: GitHub's markdown rendering strips JavaScript, so +# `dashboard.md` can never write to the clipboard — on the GitHub mobile app +# its fenced blocks have no copy affordance at all, leaving long-press text +# selection as the only way to grab a task's `/start_dev` command. The HTML +# page carries a real copy button per task instead: one tap and the command +# is on the clipboard, ready to paste into a Claude Code chat. +# +# The file itself is rendered by PyAutoBrain's intake conductor alongside +# `dashboard.md` (one census, two pages) and kept fresh by the same +# self-heal in `dashboard_refresh.yml`; this workflow only publishes it. +# Only the uploaded file is served — nothing else in the repo reaches Pages. + +on: + push: + branches: [main] + paths: + - "dashboard.html" + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@v4 + # enablement: true creates the Pages site on first run, so no manual + # Settings → Pages step is needed. + - uses: actions/configure-pages@v5 + with: + enablement: true + - name: stage the dashboard as the site index + run: | + mkdir -p _site + cp dashboard.html _site/index.html + - uses: actions/upload-pages-artifact@v3 + with: + path: _site + - id: deployment + uses: actions/deploy-pages@v4 diff --git a/README.md b/README.md index 44dba77a..05b94c92 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,10 @@ 📋 **[Task dashboard → `dashboard.md`](dashboard.md)** — every task the Mind is holding, on one page: what to pick up now, what is in flight, and the whole backlog. Reads on a phone; regenerated from this repo, so it is never a -second copy of the truth. +second copy of the truth. On a phone, prefer the +**[one-tap copy version](https://pyautolabs.github.io/PyAutoMind/)** — tap a +task's 📋 and its `/start_dev` command is on your clipboard, ready to paste +into a Claude Code chat. The Mind of the PyAuto organism: every piece of work in the ecosystem starts here, as a markdown file describing what you want in plain English. An AI diff --git a/dashboard.html b/dashboard.html new file mode 100644 index 00000000..00f1a83c --- /dev/null +++ b/dashboard.html @@ -0,0 +1,245 @@ + + + + + +PyAutoMind task dashboard + + + + +

📋 PyAutoMind task dashboard

+

Every task the Mind is holding. Tap a task's 📋 and its /start_dev command is on your clipboard — paste it into a Claude Code chat to route Claude straight to that task.

+

In flight 1 · Parked 3 · Planned 6 · Backlog 122 · markdown version

+

Start here

+

Highest priority (filed as high) — showing 12 of 23

+

TRIAGE: needs manual review before routingmedium · safe · high

+

Decide whether the clipper belongs in the search identifierautofit · medium · human-required · high

+

The ell_comps trapping was masked, not cleared — characterise itautolens_profiling · medium · supervised · high

+

Cluster package: point-source-default narrative + extended-source follow-up featureworkspaces · medium · supervised · high

+

multi_galaxy package: new regime package in autolens_workspaceautolens · large · supervised · high

+

Profile and speed up JAX likelihood-function compile times (all useautolens_profiling · large · supervised · high

+

Give the Profiling Agent a compile-time axis — the arcprofiling · large · supervised · high

+

Deep research: Can we speed up Delaunay in PyAutoArray?autoarray · too-large · supervised · high

+

EP hierarchical parent-scale collapse: cure the basin, or document theautofit · too-large · human-required · high

+

Census of priors and messages — confirmed bugs + redesignautofit · too-large · supervised · high

+

einstein_radius_jit_from: replace static init_guess with a JAX-native seed finderautogalaxy · too-large · supervised · high

+

Investigate eager FitImaging.figure_of_merit vs JIT/step-by-step divergence in rectangular pixelizationautolens · too-large · supervised · high

+

Quick wins (small enough, and safe enough to run unattended)

+

Tenant firewall: release_run.py carries an unlisted 'PyAutoLabs' instance factpyautoheart · small · safe · normal

+

add-vincken-2026-wiki-and-cite-in-euclidworkspaces · small · safe · normal

+

add_notebook_quotes mistakes a code string literal's closing delimiter for ahands · small · safe · low

+

Markdown renderings batch 2a — leftovers (ellipse/modeling + PNG size)pyautobuild · small · safe · low

+

Raw-string the LaTeX docstrings emitting SyntaxWarnings (HowToFit + HowToLens)workspaces · small · safe · low

+

Refresh the stale .script_sizes.json snapshot in @autolens_workspaceworkspaces · small · safe · low

+

In flight

+

Issued — each has an open GitHub issue and usually a branch.

+

Reconstructing a stored sample raises through ignore_assertions=Trueissue #1486library-dev — WORKSPACE HALF SHIPPED; the PyAutoFit hardening (#1486) is what remains

+

Parked

+
+3 task(s) +

single-source-density-designissue #1500

+

prior-message-collapse-designissue #1500

+

pyautoreduce-slacs1430-acs-comparison

+
+

Planned

+
+6 task(s) +

isothermal-ell-sph-oversampling-at-the-cuspplanned — NOT yet a prompt file; file one via /intake before starting

+

remote-mcp-deployment-tiersissue #20DESIGN-COMPLETE, build BLOCKED-ON-DEMAND — issue #20 holds the full auth/transport/hosting design + Richard/PyAutoMCP…

+

samples-parameter-pathsissue #1327parked

+

jax-point-source-point-smoke-sentinelplanned

+

piemass-potentialplanned

+

latent-nan-guard-honest-run

+
+

Backlog

+

122 filed prompts, not started — sorted most-pickable first (priority, then size).

+
+bug — 31 +

EP hierarchical parent-scale collapse: cure the basin, or document theautofit · too-large · human-required · high

+ +

Fix Autofit release sampler and database regressionshealth_fixes · too-large · supervised · high

+

Fix release JAX runtime compatibility and likelihood parityhealth_fixes · too-large · supervised · high

+

Fix JIT quick-update visualization output regressionshealth_fixes · too-large · supervised · high

+

Fix release-profile numerical inversion failureshealth_fixes · too-large · supervised · high

+

Fix release result/sample parameter-path regressionshealth_fixes · too-large · supervised · high

+

pixel_scales given as an int (or np.float64) is never widenedautoarray · small · supervised · medium

+

Heart script_timing baselines are orphaned by path moves and filledpyautoheart · small · supervised · medium

+

jax_grad scripts fail assertions locally that PASS in CIautolens_workspace_test · medium · supervised · medium

+

PyNUFFT dev extra is incompatible with current SciPy on Pythonautoarray · small · supervised · normal

+

LogGaussianPrior misreports its own support as (-inf, inf)autofit · small · supervised · normal

+

autofit.plot functions accept **kwargs and silently discard themautofit · small · supervised · normal

+

TEST_MODE bypass crashes on ordered-parameter assertion tiesautofit · small · supervised · normal

+

point.py JAX-vmap parity assert is non-deterministic under the smoke envautolens · small · supervised · normal

+

Scripts derive geometry from a hardcoded pixel_scale while the datasetautolens_workspace · small · supervised · normal

+ +

generate.py deletes notebooks/ before rejecting an unknown projectpyautohands · small · supervised · normal

+ +

aplt.Output stale-API drift in the remaining workspace reposworkspaces · small · supervised · normal

+

Three jax_likelihood pins are stale by ~1.24e-4 and fail theworkspaces · small · supervised · normal

+ + +

JAX point-source smoke sentinel: point.py returns -1e99 instead of -83.38autolens · medium · supervised · normal

+

JIT cache not hit in modeling_visualization delaunay/rectangular scriptsautolens · medium · supervised · normal

+

@PyAutoFit TransformedMessage.logpdf/pdf omit the transform Jacobianpriors · medium · supervised · normal

+

Resolve release-profile timeout scripts deliberatelyhealth_fixes · too-large · supervised · normal

+ +

Priors & Messages cleanup — trackerpriors · too-large · supervised · normal

+ + +
+
+feature — 26 +

Decide whether the clipper belongs in the search identifierautofit · medium · human-required · high

+

Profile and speed up JAX likelihood-function compile times (all useautolens_profiling · large · supervised · high

+

Give the Profiling Agent a compile-time axis — the arcprofiling · large · supervised · high

+

Which other searches need prior-support handling — coverage audit afterautofit · medium · supervised · medium

+

Give PyAutoFit searches a seed — today no search canautofit · medium · supervised · medium

+

Can create a list of InversionMatrix objects for each datasetautoarray · medium · supervised · normal

+ +

Tune cluster-scale JOSS benchmarks toward their 5-minute targetsautolens_workspace · medium · supervised · normal

+

Token-light wiki index over the complete/ archivepyautomind · medium · supervised · normal

+ + +

Claude Development Prompt: Arcsecond Tick Label Decimal Placementautoarray · large · supervised · normal

+

EP analytic updates — implement the four planned work packagesautofit · large · supervised · normal

+

Remote-MCP deployment tiers (2 + 3) for the results-inspector serverautofit_assistant · large · human-required · normal

+

Search settings-estimation + profiling infrastructure (n_starts / batch_size / n_batch)autolens_profiling · large · supervised · normal

+

Adopt oversampled PSFs in the start-here dataset chain (option a)autolens_workspace · large · supervised · normal

+

Follow-up to rectangular_adapt_cdf.md (issue #322) and Path Aautoarray · too-large · supervised · normal

+

PIEMass.potential_2d_from: implement the missing lensing potentialautogalaxy · too-large · supervised · normal

+

autolens_jax_joss benchmark repo + real-data start_here pairingautolens_jax_joss · too-large · supervised · normal

+

Context: PyAutoLens issue #542 follow-up (Gap 1, deferred during thejax_substructure · too-large · supervised · normal

+

Context: PyAutoLens issue #542 follow-up (Gap 2, deferred during thejax_substructure · too-large · supervised · normal

+

Once https://github.com/PyAutoLabs/PyAutoLens/issues/480 is fixed (PointSolverworkspaces · too-large · supervised · normal

+

dPIE: optional central-dispersion (sigma_0) parameterizationautogalaxy · small · supervised · low

+ +

Scheduled runs — overnight queue passes with a morning reportautonomy · medium · supervised · low

+

Teach repos_sync --write to stamp organ config surfacespyautomind · hard · supervised · low

+
+
+research — 19 +

The ell_comps trapping was masked, not cleared — characterise itautolens_profiling · medium · supervised · high

+

Deep research: Can we speed up Delaunay in PyAutoArray?autoarray · too-large · supervised · high

+

Census of priors and messages — confirmed bugs + redesignautofit · too-large · supervised · high

+

Expectation Propagation Scale-Up — Scopinggraphical_ep · too-large · supervised · high

+

Graphical Model Scale-Up — Scopinggraphical_ep · too-large · supervised · high

+

Delaunay-family JAX modules never hit the persistent compilation cacheautoarray · medium · supervised · medium

+

Quick-update plotting cost — minutes per update, and it isautolens · medium · supervised · medium

+

Use readthedocs or migrate to GitHub docsautobuild · small · supervised · normal

+

Re-baseline the slacs0008 acceptance parity after the HAP-dedupe fixpyautoreduce · small · supervised · normal

+ +

We have lots of examples which profile how long JAXautolens_workspace_developer · medium · supervised · normal

+

slope_hierarchy: methods write-up (NUTS headline, EP cautionary)graphical_ep · medium · supervised · normal

+

slope_hierarchy: scale the hierarchical slope recovery to N=25–50graphical_ep · medium · supervised · normal

+

Checkerboard PSF-mismatch residual diagnostic — research + document + ingestpyautomemory · medium · supervised · normal

+

Multi-band compile census completion — A100/multi-core + hetero GPU rowsautolens_profiling · small · supervised · low

+

Chase the ~6% flux scale between PyAutoReduce and legacy SLACSpyautoreduce · medium · supervised · low

+ + + +
+
+maintenance — 18 +

autolens_workspace_developer rectangular experiments — Gut stash + renameautolens_workspace_developer · small · supervised · normal

+

Mirror drifted library config keys into the workspace configsworkspaces · small · supervised · normal

+

Un-park imaging/features/scaling_relation/slam once PyAutoArray#431 mergesworkspaces · small · supervised · normal

+

autolens_workspace_developer: broad stale-API rot (56 symbols, no CI)autolens_workspace_developer · medium · supervised · normal

+ +

Dependency-cap refresh 2026-08: safe bumps, astropy 8 decision, two deadlibraries · medium · supervised · normal

+

PyAutoMemory canonical-key TODO sweeppyautomemory · medium · supervised · normal

+

Single-source the "Never rewrite history" policy as a generated AGENTS.mdpyautomind · medium · supervised · normal

+

Capped smoke datasets were committed as if they were realworkspaces · medium · supervised · normal

+

autolens_profiling is now a mature project, with a good separationautolens_profiling · large · supervised · normal

+

Auto-request GitHub Copilot code review on every PR, org-wideci · large · supervised · normal

+

autolens_workspaceworkspaces · too-large · supervised · normal

+

dataset/imaging/jwst_lw is untracked because the gitignore was never extended forautolens_profiling · small · supervised · low

+

cosmos_web_ring stores boolean masks as float64, wasting ~3.4 MB ofautolens_workspace · small · supervised · low

+

LaTeX in non-raw docstrings emits SyntaxWarning: invalid escape sequenceautolens_workspace · small · supervised · low

+ + + +
+
+docs — 16 + +

multi_galaxy package: new regime package in autolens_workspaceautolens · large · supervised · high

+

Split lensing regimes: multi_galaxy / group / cluster (epic plan)autolens · too-large · supervised · high

+

Advanced workspace guide: Preloads (PyAutoArray)workspaces · too-large · supervised · high

+

Regenerate autolens_workspace markdown/ so the MGE pages show sigma_minautolens_workspace · small · supervised · normal

+

add-vincken-2026-wiki-and-cite-in-euclidworkspaces · small · safe · normal

+

Propagate the shear_galaxy-at-(0,0) idiom to group/ and cluster/workspaces · small · supervised · normal

+

Rectangular mesh Enzi citation — user-workspace pixelization examplesworkspaces · small · supervised · normal

+

Rewrite PyAutoCTI docs/api — 55 of 89 autosummary entries areautocti · medium · supervised · normal

+

extra_galaxies feature parity: point_source + multi_galaxy (both workspaces)workspaces · medium · supervised · normal

+

HowToLens ch4 tutorial 3: mask overlay is never actually drawnhowtolens · small · supervised · low

+ + + + + +
+
+refactor — 5 +

einstein_radius_jit_from: replace static init_guess with a JAX-native seed finderautogalaxy · too-large · supervised · high

+ +

Split Fitness.batch_size into lh_batch_size and latent_batch_sizeautofit · small · supervised · normal

+

Slow imports: autolens 4.3s, autogalaxy 3.4s (hygiene perf tier, >3slibraries · medium · supervised · normal

+

Remove the dead EDEN packaging tooling from PyAutoFitpyautofit · medium · supervised · normal

+
+
+test — 3 +

Re-baseline the MGE imaging JIT profiling regression valueautolens_workspace_developer · too-large · supervised · high

+

Restore absolute NumPy likelihood regression baselines in the _workspace_testworkspaces · too-large · supervised · high

+ +
+
+triage — 3 +

TRIAGE: needs manual review before routingmedium · safe · high

+ + +
+
+release — 1 +

CTI release-train wiring — first modern autocti releaseautocti · medium · human-required · normal

+
+ + + diff --git a/dashboard.md b/dashboard.md index 6ef936c8..b3bfd1bf 100644 --- a/dashboard.md +++ b/dashboard.md @@ -4,6 +4,8 @@ Every task the Mind is holding, on one page: what is in flight, what is parked, and the whole backlog to pick from. Pick a line, then run `/start_dev ` to start it. On a phone, tap a task's 📋 to reveal that command, copy it, and paste it into a Claude Code chat to route Claude straight to the task. +Reading on a phone? The [one-tap copy version](https://pyautolabs.github.io/PyAutoMind/) puts the command on your clipboard with a single tap of 📋. + Tasks only — the organism's health lives with the Heart (`/health`), not here. | Where | Count |