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
8 changes: 8 additions & 0 deletions .github/workflows/dashboard_refresh.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,20 @@ jobs:
repository: ${{ github.repository_owner }}/PyAutoMind
path: _mind

- name: PyAutoBrain (shared dashboard theme)
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/PyAutoBrain
path: _brain

- name: Dependencies
run: python3 -m pip install --quiet pyyaml

- name: Dry run (pull request)
if: github.event_name == 'pull_request'
env:
GH_TOKEN: ${{ github.token }}
PYAUTO_BRAIN: ${{ github.workspace }}/_brain
run: |
bin/pyauto-pulse board --mind _mind
git status --short
Expand All @@ -82,6 +89,7 @@ jobs:
if: github.event_name != 'pull_request'
env:
GH_TOKEN: ${{ github.token }}
PYAUTO_BRAIN: ${{ github.workspace }}/_brain
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
Expand Down
23 changes: 20 additions & 3 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# built from those receipts, and state.json meets the Brain contract.
# Offline on purpose: a project commit landing mid-PR must not redden an
# unrelated organ PR (dashboard_refresh.yml re-reads the network nightly).
# 4. lychee link-rot over the prose *.md. raw.githubusercontent.com,
# 4. lychee link-rot over repository-owned prose *.md (tracked files only). raw.githubusercontent.com,
# github.com blob pages (GitHub answers non-browser page views with 503;
# a token does not help — the links stay for humans, only the gate skips them),
# dashboard.md (hundreds of commit-pinned evidence links), the organ's own
Expand All @@ -31,7 +31,7 @@ permissions:
jobs:
lint:
runs-on: ubuntu-latest
timeout-minutes: 10
timeout-minutes: 15
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -69,6 +69,18 @@ jobs:
PYAUTO_BRAIN: ${{ github.workspace }}/_brain
run: python -m pytest tests -q

- uses: actions/setup-node@v4
with:
node-version: '22'

- name: Chromium interaction checks
env:
PYAUTO_BRAIN: ${{ github.workspace }}/_brain
run: |
npm install --no-save --no-package-lock playwright@1.63.0
npx playwright install --with-deps chromium
node tests/browser_setup.cjs

- name: pyauto-pulse check --offline
env:
PYAUTO_BRAIN: ${{ github.workspace }}/_brain
Expand All @@ -80,6 +92,11 @@ jobs:
# with a token lychee checks github.com links through the API instead.
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Dependency installs and sibling checkouts are outside this repo's prose.
# Keep filenames intact, including spaces, when passing tracked Markdown.
mapfile -d '' -t markdown_files < <(
git ls-files -z -- '*.md' ':!:dashboard.md' ':!:.claude/**' ':!:_mind/**' ':!:_brain/**'
)
lychee \
--github-token "${GITHUB_TOKEN}" \
--exclude '^https://raw\.githubusercontent\.com/' \
Expand All @@ -89,4 +106,4 @@ jobs:
--no-progress \
--accept '200..=299,429' \
--max-redirects 5 \
$(find . -name '*.md' -not -name 'dashboard.md' -not -path './.claude/*' -not -path './.git/*' -not -path './_mind/*' -not -path './_brain/*')
"${markdown_files[@]}"
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,7 @@ _mind/
# Half-written receipt/snapshot files (written then renamed into place)
receipts/*.tmp
snapshots/*.tmp

# Shared theme checkout and browser test dependencies
_brain/
node_modules/
6 changes: 2 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,8 @@ catalogue of repositories.

The reader accepts `profiling-summary` v1 and v2; registry rows still pin one
exact version. V2 adds setup identities, typed evidence and explicit reference
selections (`pulse/catalogue.py`, `REFERENCE.md`). Keep the live registry on v1
until the project exporter migration. Accepting a schema is not scientific
acceptance and does not launch a baseline campaign. The setup browser follows
in its own phase.
selections (`pulse/catalogue.py`, `REFERENCE.md`). The live lens registry now reads the project v2 catalogue. Accepting a schema is not scientific
acceptance and does not launch a baseline campaign. The setup browser reads the captured index and verifies same-commit detail shards.

## Boundary (what this organ never does)

Expand Down
32 changes: 30 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ It owns:
- the **instance registry** (`registry.yaml`) — which projects publish a
profiling summary, where, under which contract version; each project is named
by its PyAutoMind body-map identity, never a second repository catalogue;
- the versioned **`profiling-summary` read contract** — v1 is live at
`autolens_profiling/dashboard/summary.json`, documented in that repo's
- the versioned **`profiling-summary` read contract** — v2 is live at
`autolens_profiling/dashboard/catalogue.json`, documented in that repo's
[dashboard/README.md](https://github.com/PyAutoLabs/autolens_profiling/blob/main/dashboard/README.md);
- the **ingest receipts** (`receipts/`) — the one commit each project was read
at, per render — and the last-good **snapshots** (`snapshots/`), shown as
Expand Down Expand Up @@ -54,3 +54,31 @@ Boundaries: [AGENTS.md](AGENTS.md). Design:
## License

MIT — see [LICENSE](LICENSE).

## Setup browser

The front page uses the shared Heart-family theme from `PyAutoBrain/board/_theme.py`.
Set `PYAUTO_BRAIN` to that checkout (or place it beside this repo / in `_brain`).
The refresh workflow checks it out explicitly. Open AutoLens, choose a dataset and
model, then select the instrument and recorded configuration. Runtime is expanded;
breakdown, compilation, memory, settings, qualification and source evidence are
available underneath. Values use linear bars within matching measurement groups.
Campaign tasks live inside their campaign rows; each row has separate evidence
and task links. Both top actions copy the current editable prompt.

Pulse embeds the validated captured v2 index and loads a chosen evidence shard
from that **same captured commit**, verifying its SHA-256 and setup identity.
A failed or cached fetch remains visible; a missing deep link never substitutes a
different run. Local reads cannot load remote shards as if they were published.
Inline v2 records and v1 diagnostics remain supported. No rendering action accepts
a baseline, changes campaign state, runs profiling, or selects the fastest run.
Temporal diagnostics remain collapsed while the front page focuses on setup
choices. Existing archive evidence still requires scientific review.

Browser regression checks (synthetic evidence; no project network dependency):

```bash
npm install --no-save --no-package-lock playwright@1.63.0
npx playwright install chromium
node tests/browser_setup.cjs
```
2 changes: 1 addition & 1 deletion badge.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "pulse",
"message": "1 project \u00b7 159 records \u00b7 0 cached",
"message": "1 project \u00b7 98 records \u00b7 0 cached",
"color": "yellow"
}
1,258 changes: 1,201 additions & 57 deletions dashboard.html

Large diffs are not rendered by default.

Loading
Loading