Skip to content

feat(board): the Nerves board — read-only browser of every config file (#172) - #173

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/nerves-board
Sep 26, 2026
Merged

Jammy2211 merged 1 commit into
mainfrom
feature/nerves-board

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Summary

Nerves board, PR 2 of 3 (PyAutoNerves#172 — after the Brain theme PR): a read-only browser of every config file and option across the repos. The human's request, verbatim: "a simply way for me to view all config file source code entries and options acrosss the repos (e.g their config folders)". Supersedes the "Nerves gets no board" note recorded earlier today.

scripts/board.py collects the config folders of the 5 libraries (PyAutoFit, PyAutoArray, PyAutoGalaxy, PyAutoLens, PyAutoCTI) and 4 workspaces (a SOURCES table; PyAutoNerves ships no YAML of its own) — locally from the workspace layout via repos.yaml, in CI from sparse clones of just the config dirs — and renders an index (counts per source, override map, PYAUTO_* env-var panel, a search box over an embedded key index of 4558 entries) plus one page per repo (per file: key chips, then the line-numbered source with its # comments and a GitHub link; prior files as Class · param · type · mean/σ or bounds tables). Overrides are resolved the way autonerves resolves them — against the whole library stack in import order — so general.yaml keys that live in PyAutoFit are not flagged when a lens workspace sets them.

The board's first render already found real drift: 79 orphan keys in 14 workspace files (keys no library in the stack defines — hpc.live_visual_update, test.check_preloads, version.*, removed subplot_shape.*, delaunay.areas_factor, a large autocti visualize/plots.yaml block) and a typo in autogalaxy_workspace/config/visualize/plots.yaml line 30 (fit_imaging {}:). Those keep the feed yellow until fixed (follow-ups, not this PR).

API Changes

  • New scripts/board.py (1137 lines): SOURCES, collect(root, brain, mind, sources_dir), pure renders --md --md-brief --json --badge --state --html-index --html-repo NAME --site DIR; inputs --brain --mind --root --sources --collect OUT | --snapshot F. Not packaged (pyproject excludes scripts*, MANIFEST.in prunes it; wheel checked).
  • New .github/workflows/nerves_board.yml: cron + dispatch; checks out Brain + Mind; sparse-clones the sources listed by the script itself; collect → --site _site; "Validate the cockpit feed against the Brain contract"; Pages deploy (site pre-created by the human token).
  • README "Nerves board" section; AGENTS board section + the stale test-path fix (test_autonerves/test_decorator.py).
    See full details below.

Test Plan

  • pytest test_autonerves -q — 201 passed (16 new in test_board.py, hermetic: two fake libraries + a workspace, prior file, broken YAML, build/ file; SomeOrg only). CI's bare pytest picks it up via testpaths.
  • Real collect (--root /home/jammy/Code/PyAutoLabs): 332 files / 9 sources (Fit 17, Array 4, Galaxy 99, Lens 5, CTI 6; workspaces 19/86/84/12), 258 prior files, 0 parse errors, 173 overrides (33 differ, 79 orphan keys in 14 files), 10 env vars
  • --site: index.html 323 KB, largest repo page 333 KB, state.json 9.5 KB; python ../PyAutoBrain/board/_state.py state.json → state: ok; the key index contains positions (11 hits)
  • Sparse-clone recipe run locally on 2 real repos; workflow YAML parses; tenant firewall OK
  • After merge: nerves_board.yml green with state: ok; https://pyautolabs.github.io/PyAutoNerves/ lists 9 sources; search "positions"; cockpit Nerves card populates. No browser here — layout unchecked by eye.
Full API Changes (for automation & release notes)

Added

  • scripts/board.py, .github/workflows/nerves_board.yml, test_autonerves/test_board.py

Changed

  • README.md, AGENTS.md (board sections; AGENTS test command fixed)

Removed

  • none

Heart YELLOW acknowledgement

Heart readiness is YELLOW (score 85, snapshot 2026-09-26T16:19:27+00:00). Verbatim reasons:

  • manifest drift: hub organism blurb (organs present) — 7 mismatch(es) vs PyAutoMind/repos.yaml
  • manifest drift: organism-map blocks (generated) — 1 mismatch(es) vs PyAutoMind/repos.yaml
  • manifest drift: workspace checkouts (manifest ↔ disk) — 1 mismatch(es) vs PyAutoMind/repos.yaml

All pre-existing organism-map drift, unrelated to this diff. Human acknowledgement (live, this session, 2026-09-26, for PyAutoNerves#172): "ack and merge" — development shipping + merge on green checks; no release

Generated by the PyAutoLabs agent workflow.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SbKQQHRRgm2b69aT9t7771

…e (PyAutoNerves#172)

scripts/board.py collects every YAML file under each library's
<package>/config/ and each workspace's config/ (SOURCES table), with keys,
comments, source, prior tables, a workspace -> library-stack override map
(autonerves lookup order, diffed against the merged stack), the PYAUTO_*
env vars, and renders a Pages site (index + one page per repo with search),
badge/board/state.json and dashboard.md. state.json follows the Brain's
cockpit contract: green / yellow (unparseable file, orphan workspace keys)
/ grey, never red.

nerves_board.yml publishes it daily from sparse clones of the config
folders and validates the feed. scripts/ is excluded from the package.
Tests: test_autonerves/test_board.py (hermetic). AGENTS.md: board section
and the stale focused-test path fixed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SbKQQHRRgm2b69aT9t7771
@Jammy2211
Jammy2211 merged commit 2b3bc53 into main Sep 26, 2026
3 checks passed
@Jammy2211
Jammy2211 deleted the feature/nerves-board branch September 26, 2026 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant