|
| 1 | +name: Brain Board |
| 2 | + |
| 3 | +# Publishes the Brain's operational board — the organism's morning door — to |
| 4 | +# this repo's GitHub Pages URL: the page (index.html), its badge.json (the |
| 5 | +# cross-board headline contract the umbrella router consumes), the raw |
| 6 | +# board.json, and the markdown twin board.md. |
| 7 | +# |
| 8 | +# The board replaces the interactive /wake_up skill: everything that skill |
| 9 | +# assembled by driving doors in sequence (overnight scheduled-run sweep, the |
| 10 | +# Heart's readiness headline, version-stamp consistency, the community scan, |
| 11 | +# resume context from the Mind, the upkeep doors) is collected here on a |
| 12 | +# schedule and rendered with one-tap copy-for-Claude payloads. The renderer is |
| 13 | +# board/_board.py; its vocabulary is config/policy.yaml `board:`. |
| 14 | +# |
| 15 | +# Unlike the Mind dashboard (self-healed into the repo, because its state IS |
| 16 | +# the repo), nothing here is committed: the board's data is time-varying, so |
| 17 | +# it is served from the Pages artifact only — a daily refresh makes no commit |
| 18 | +# noise and can never drift against a repo copy. |
| 19 | +# |
| 20 | +# Cadence: 05:30 UTC daily — after the 02:00 nightly release driver and the |
| 21 | +# Heart's 05:00 heart-health refresh (which rewrites the badge this board |
| 22 | +# reads), before the human's morning. GitHub cron jitters 0–3 h under load, |
| 23 | +# so the page stamps its own generation time and every consumer should trust |
| 24 | +# that stamp over the schedule. workflow_dispatch is the manual refresh |
| 25 | +# (also what a human taps when the board says it is stale). |
| 26 | + |
| 27 | +on: |
| 28 | + schedule: |
| 29 | + - cron: "30 5 * * *" |
| 30 | + workflow_dispatch: |
| 31 | + |
| 32 | +permissions: |
| 33 | + contents: read |
| 34 | + pages: write |
| 35 | + id-token: write |
| 36 | + |
| 37 | +concurrency: |
| 38 | + group: pages |
| 39 | + cancel-in-progress: true |
| 40 | + |
| 41 | +jobs: |
| 42 | + publish: |
| 43 | + runs-on: ubuntu-latest |
| 44 | + environment: |
| 45 | + name: github-pages |
| 46 | + url: ${{ steps.deployment.outputs.page_url }} |
| 47 | + env: |
| 48 | + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 49 | + steps: |
| 50 | + - uses: actions/checkout@v4 |
| 51 | + with: |
| 52 | + path: PyAutoBrain |
| 53 | + # The board composes, it does not recompute: the community scan reads |
| 54 | + # the body map (repos.yaml) and the resume section reads the registry + |
| 55 | + # the Mind's own generated dashboard counts, so the Mind is checked out |
| 56 | + # as a sibling — the same two-repo layout tests.yml uses. |
| 57 | + - uses: actions/checkout@v4 |
| 58 | + with: |
| 59 | + repository: ${{ github.repository_owner }}/PyAutoMind |
| 60 | + path: PyAutoMind |
| 61 | + - name: render the board |
| 62 | + env: |
| 63 | + PYAUTO_ROOT: ${{ github.workspace }} |
| 64 | + run: | |
| 65 | + python3 -m pip install --quiet pyyaml |
| 66 | + python3 PyAutoBrain/board/_board.py --apply --out _site |
| 67 | + # enablement: true creates the Pages site on first run where the token |
| 68 | + # may (Mind/Heart precedent); where it may not (the Hands hit "Resource |
| 69 | + # not accessible by integration"), the site must be created once |
| 70 | + # out-of-band: gh api -X POST repos/<owner>/PyAutoBrain/pages -f build_type=workflow |
| 71 | + - uses: actions/configure-pages@v5 |
| 72 | + with: |
| 73 | + enablement: true |
| 74 | + - uses: actions/upload-pages-artifact@v3 |
| 75 | + with: |
| 76 | + path: _site |
| 77 | + - id: deployment |
| 78 | + uses: actions/deploy-pages@v4 |
0 commit comments