-
-
Notifications
You must be signed in to change notification settings - Fork 0
fix(automaton): restore corrupt fixer.rs and clear repo-path scars #507
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
05b4757
c12d72c
6b9c9b1
2b9be5f
6fe75a1
1be2ded
4f5a3bf
d6ee033
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,42 +1,40 @@ | ||||||||||
| # SPDX-License-Identifier: MPL-2.0 | ||||||||||
| # This workflow is managed by gh actions-lock. | ||||||||||
| # This workflow is managed by gh actions-lock. | ||||||||||
| name: GitHub Pages | ||||||||||
|
|
||||||||||
| on: | ||||||||||
| push: | ||||||||||
| branches: [main, master] | ||||||||||
| pull_request: | ||||||||||
| workflow_dispatch: | ||||||||||
|
|
||||||||||
| permissions: | ||||||||||
| actions: read | ||||||||||
| contents: read | ||||||||||
| pages: write | ||||||||||
| id-token: write | ||||||||||
|
|
||||||||||
| concurrency: | ||||||||||
| group: "pages" | ||||||||||
| cancel-in-progress: false | ||||||||||
| group: "pages-${{ github.event_name }}-${{ github.ref }}" | ||||||||||
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | ||||||||||
|
|
||||||||||
| jobs: | ||||||||||
| build: | ||||||||||
| runs-on: ubuntu-latest | ||||||||||
| name: Build Pages artifact | ||||||||||
| runs-on: ubuntu-24.04 | ||||||||||
| timeout-minutes: 30 | ||||||||||
| permissions: | ||||||||||
| contents: read | ||||||||||
| steps: | ||||||||||
| - name: Checkout | ||||||||||
| uses: actions/checkout@v7.0.1 | ||||||||||
| with: | ||||||||||
| persist-credentials: false | ||||||||||
|
|
||||||||||
| - name: Checkout casket-ssg | ||||||||||
| uses: actions/checkout@v7.0.1 | ||||||||||
| with: | ||||||||||
| repository: hyperpolymath/casket-ssg | ||||||||||
| ref: 4abfd39c78c2eee9de62d658646607877b3ee157 # main 2026-09-03 | ||||||||||
| path: .casket-ssg | ||||||||||
|
|
||||||||||
| - name: Setup GHCup | ||||||||||
| uses: haskell-actions/setup@v2.12.0 | ||||||||||
| with: | ||||||||||
| ghc-version: '9.8.2' | ||||||||||
| cabal-version: '3.10' | ||||||||||
| persist-credentials: false | ||||||||||
|
|
||||||||||
| - name: Cache Cabal | ||||||||||
| uses: actions/cache@v6.1.0 | ||||||||||
|
|
@@ -47,6 +45,13 @@ jobs: | |||||||||
| .casket-ssg/dist-newstyle | ||||||||||
| key: ${{ runner.os }}-casket-${{ hashFiles('.casket-ssg/casket-ssg.cabal') }} | ||||||||||
|
|
||||||||||
| - name: Prepare runner Haskell toolchain | ||||||||||
| run: | | ||||||||||
| set -euo pipefail | ||||||||||
| ghc --version | ||||||||||
| cabal --version | ||||||||||
| cabal update | ||||||||||
|
|
||||||||||
| - name: Build casket-ssg | ||||||||||
| working-directory: .casket-ssg | ||||||||||
| run: cabal build | ||||||||||
|
|
@@ -108,13 +113,85 @@ jobs: | |||||||||
| with: | ||||||||||
| path: '_site' | ||||||||||
|
|
||||||||||
| preview: | ||||||||||
| name: Validate deployable Pages preview | ||||||||||
| if: github.event_name == 'pull_request' | ||||||||||
| environment: | ||||||||||
| name: pages-preview | ||||||||||
| runs-on: ubuntu-24.04 | ||||||||||
| needs: build | ||||||||||
| timeout-minutes: 10 | ||||||||||
| permissions: | ||||||||||
| actions: read | ||||||||||
| contents: read | ||||||||||
| steps: | ||||||||||
| - name: Download Pages artifact | ||||||||||
| uses: actions/download-artifact@v8.0.1 | ||||||||||
| with: | ||||||||||
| name: github-pages | ||||||||||
| path: .pages-preview | ||||||||||
|
|
||||||||||
| - name: Validate deployable artifact | ||||||||||
| shell: bash | ||||||||||
| run: | | ||||||||||
| set -euo pipefail | ||||||||||
|
|
||||||||||
| artifact=".pages-preview/artifact.tar" | ||||||||||
| entries_file="${RUNNER_TEMP}/pages-preview-entries.txt" | ||||||||||
|
|
||||||||||
| if [ ! -s "${artifact}" ]; then | ||||||||||
| echo "::error::Pages artifact is absent or empty" | ||||||||||
| exit 1 | ||||||||||
| fi | ||||||||||
|
|
||||||||||
| tar -tf "${artifact}" > "${entries_file}" | ||||||||||
|
|
||||||||||
| entry_count=0 | ||||||||||
| has_index=0 | ||||||||||
| while IFS= read -r entry; do | ||||||||||
| entry_count=$((entry_count + 1)) | ||||||||||
| case "${entry}" in | ||||||||||
| /*|../*|*/../*|*/..) | ||||||||||
| echo "::error::Pages artifact contains an unsafe path: ${entry}" | ||||||||||
| exit 1 | ||||||||||
| ;; | ||||||||||
| index.html|*/index.html) | ||||||||||
| has_index=1 | ||||||||||
|
Comment on lines
+158
to
+159
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win Require
Proposed fix- index.html|*/index.html)
+ index.html|./index.html)
has_index=1📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||
| ;; | ||||||||||
| esac | ||||||||||
| done < "${entries_file}" | ||||||||||
|
|
||||||||||
| if [ "${entry_count}" -eq 0 ]; then | ||||||||||
| echo "::error::Pages artifact contains no files" | ||||||||||
| exit 1 | ||||||||||
| fi | ||||||||||
|
|
||||||||||
| if [ "${has_index}" -ne 1 ]; then | ||||||||||
| echo "::error::Pages artifact contains no index.html" | ||||||||||
| exit 1 | ||||||||||
| fi | ||||||||||
|
|
||||||||||
| { | ||||||||||
| echo "### Pages preview artifact" | ||||||||||
| echo | ||||||||||
| echo "- Files: ${entry_count}" | ||||||||||
| echo "- SHA-256: \`$(sha256sum "${artifact}" | awk '{print $1}')\`" | ||||||||||
| echo "- Production deployment: intentionally deferred until merge" | ||||||||||
| } >> "${GITHUB_STEP_SUMMARY}" | ||||||||||
|
|
||||||||||
| deploy: | ||||||||||
| name: Deploy production Pages site | ||||||||||
| if: github.event_name != 'pull_request' | ||||||||||
| environment: | ||||||||||
| name: github-pages | ||||||||||
| url: ${{ steps.deployment.outputs.page_url }} | ||||||||||
| runs-on: ubuntu-latest | ||||||||||
| runs-on: ubuntu-24.04 | ||||||||||
| needs: build | ||||||||||
| timeout-minutes: 10 | ||||||||||
| permissions: | ||||||||||
| contents: read | ||||||||||
| pages: write | ||||||||||
| id-token: write | ||||||||||
| steps: | ||||||||||
| - name: Deploy to GitHub Pages | ||||||||||
| id: deployment | ||||||||||
|
|
||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -11,15 +11,15 @@ This is the AI manifest for **gitbot-fleet**. It declares: | |
|
|
||
| ## CANONICAL LOCATIONS (UNIVERSAL RULE) | ||
|
|
||
| ### Machine-Readable Metadata: `.machine_readable/` ONLY | ||
| ### Machine-Readable Metadata: `.machine_readable/descriptiles/` ONLY | ||
|
|
||
| These 6 SCM files MUST exist in `.machine_readable/` directory ONLY: | ||
| 1. **.machine_readable/6a2/STATE.a2ml** - Project state, progress, blockers | ||
| 2. **.machine_readable/6a2/META.a2ml** - Architecture decisions, governance | ||
| 3. **.machine_readable/6a2/ECOSYSTEM.a2ml** - Position in ecosystem, relationships | ||
| 4. **.machine_readable/6a2/AGENTIC.a2ml** - AI agent interaction patterns | ||
| 5. **.machine_readable/6a2/NEUROSYM.a2ml** - Neurosymbolic integration config | ||
| 6. **.machine_readable/6a2/PLAYBOOK.a2ml** - Operational runbook | ||
| These 6 SCM files MUST exist in `.machine_readable/descriptiles/` only: | ||
| 1. **.machine_readable/descriptiles/STATE.a2ml** - Project state, progress, blockers | ||
| 2. **.machine_readable/descriptiles/META.a2ml** - Architecture decisions, governance | ||
| 3. **.machine_readable/descriptiles/ECOSYSTEM.a2ml** - Position in ecosystem, relationships | ||
| 4. **.machine_readable/descriptiles/AGENTIC.a2ml** - AI agent interaction patterns | ||
| 5. **.machine_readable/descriptiles/NEUROSYM.a2ml** - Neurosymbolic integration config | ||
| 6. **.machine_readable/descriptiles/PLAYBOOK.a2ml** - Operational runbook | ||
|
Comment on lines
+14
to
+22
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win Update The generated 🤖 Prompt for AI Agents |
||
|
|
||
| **CRITICAL:** If ANY of these files exist in the root directory, this is an ERROR. | ||
|
|
||
|
|
@@ -40,8 +40,8 @@ Bot-specific instructions for: | |
|
|
||
| ## CORE INVARIANTS | ||
|
|
||
| 1. **No SCM duplication** - Root must NOT contain .machine_readable/6a2/STATE.a2ml, .machine_readable/6a2/META.a2ml, etc. | ||
| 2. **Single source of truth** - `.machine_readable/` is authoritative | ||
| 1. **No SCM duplication** - Descriptiles must not exist outside `.machine_readable/descriptiles/`. | ||
| 2. **Single source of truth** - `.machine_readable/descriptiles/` is authoritative | ||
| 3. **No stale metadata** - If root SCMs exist, they are OUT OF DATE | ||
| 4. **License consistency** - All code PMPL-1.0-or-later unless platform requires MPL-2.0 | ||
| 5. **Author attribution** - Always "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>" | ||
|
|
@@ -57,24 +57,26 @@ gitbot-fleet/ | |
| ├── 0-AI-MANIFEST.a2ml # THIS FILE (start here) | ||
| ├── README.md # Project overview | ||
| ├── [your source files] # Main code | ||
| ├── .machine_readable/ # SCM files (6 files) | ||
| │ ├── .machine_readable/6a2/STATE.a2ml | ||
| │ ├── .machine_readable/6a2/META.a2ml | ||
| │ ├── .machine_readable/6a2/ECOSYSTEM.a2ml | ||
| │ ├── .machine_readable/6a2/AGENTIC.a2ml | ||
| │ ├── .machine_readable/6a2/NEUROSYM.a2ml | ||
| │ └── .machine_readable/6a2/PLAYBOOK.a2ml | ||
| ├── .machine_readable/ | ||
| │ ├── descriptiles/ # Canonical descriptive anchors | ||
| │ │ ├── STATE.a2ml | ||
| │ │ ├── META.a2ml | ||
| │ │ ├── ECOSYSTEM.a2ml | ||
| │ │ ├── AGENTIC.a2ml | ||
| │ │ ├── NEUROSYM.a2ml | ||
| │ │ ├── PLAYBOOK.a2ml | ||
| │ │ └── ANCHOR.a2ml | ||
| │ └── bot_directives/ # Bot instructions | ||
| ``` | ||
|
|
||
| ## SESSION STARTUP CHECKLIST | ||
|
|
||
| ✅ Read THIS file (0-AI-MANIFEST.a2ml) first | ||
| ✅ Understand canonical locations (.machine_readable/, .machine_readable/bot_directives/) | ||
| ✅ Understand canonical locations (.machine_readable/descriptiles/, .machine_readable/bot_directives/) | ||
| ✅ Know the invariants (no SCM duplication, etc.) | ||
| ✅ Check for MCP enforcement (if applicable) | ||
| ✅ Read `.machine_readable/6a2/STATE.a2ml` for current status | ||
| ✅ Read `.machine_readable/6a2/AGENTIC.a2ml` for interaction patterns | ||
| ✅ Read `.machine_readable/descriptiles/STATE.a2ml` for current status | ||
| ✅ Read `.machine_readable/descriptiles/AGENTIC.a2ml` for interaction patterns | ||
|
|
||
| ## LIFECYCLE HOOKS | ||
|
|
||
|
|
@@ -86,15 +88,15 @@ When starting a new session: | |
| 2. Log session start (optional but recommended) | ||
| - Format: `[YYYY-MM-DD HH:MM:SS] Session started: [agent-name]` | ||
| - Location: `.machine_readable/session-log.txt` | ||
| 3. Read `.machine_readable/6a2/STATE.a2ml` | ||
| 3. Read `.machine_readable/descriptiles/STATE.a2ml` | ||
| 4. Check for blockers | ||
| 5. State understanding of canonical locations | ||
|
|
||
| ### on-exit (Session End) | ||
|
|
||
| When ending a session: | ||
|
|
||
| 1. Update `.machine_readable/6a2/STATE.a2ml` if changes made | ||
| 1. Update `.machine_readable/descriptiles/STATE.a2ml` if changes made | ||
| 2. Log session end (optional but recommended) | ||
| - Format: `[YYYY-MM-DD HH:MM:SS] Session ended: [summary]` | ||
| - Location: `.machine_readable/session-log.txt` | ||
|
|
@@ -105,7 +107,7 @@ When ending a session: | |
|
|
||
| After reading this file, demonstrate understanding by stating: | ||
|
|
||
| **"I have read the AI manifest. SCM files are located in `.machine_readable/` ONLY, bot directives in `.machine_readable/bot_directives/`, and I will not create duplicate files in the root directory."** | ||
| **"I have read the AI manifest. Descriptiles are located in `.machine_readable/descriptiles/` ONLY, bot directives in `.machine_readable/bot_directives/`, and I will not create duplicate descriptiles elsewhere."** | ||
|
|
||
| ## META | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
🔎 Supported by static analysis
🌐 Web query:
For actions/deploy-pages@v5.0.0, what workflow configuration deploys a pull-request preview without deploying the production GitHub Pages site?💡 Result:
The official GitHub Action actions/deploy-pages (including version v5.0.0) does not provide a native, supported mechanism for deploying pull-request previews to GitHub Pages [1][2]. While the action includes a preview input parameter, official documentation notes this feature is in alpha and not available to the public [1][2][3]. Because the official action cannot be used to deploy previews, developers commonly use third-party community actions or custom workflows to achieve this functionality [4][5][6][7]. Alternative approaches include: 1. Community Actions: You can use third-party actions such as rossjrw/pr-preview-action [8] or others available in the GitHub Marketplace, which are designed to create and manage preview deployments for pull requests [5][6][7]. These typically involve building your site and then using the third-party action to handle the deployment to a separate branch or storage location [4][8][6]. 2. Custom Workflows: Many teams implement custom workflows that build the site and then either deploy it to a specific sub-directory on their production Pages site or to an entirely different repository to serve as a preview site [4][6]. If you intend to use GitHub Actions to automate your site deployment, ensure your main production workflow is configured to only deploy on pushes to your primary branch (e.g., main or master) to avoid overwriting your production site with pull-request artifacts [9]. Top results: [1] https://github.com/actions/deploy-pages [8] https://github.com/rossjrw/pr-preview-action [2] https://github.com/actions/deploy-pages/blob/main/README.md [5] https://github.com/marketplace/actions/deploy-pr-preview [9] https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site
Citations:
🤖 get_repo_knowledge executed:
get_repo_knowledge hyperpolymath/gitbot-fleet /tmp/coderabbit-repo-knowledge/hyperpolymath-gitbot-fleet-a78cd8e9/architectureLength of output: 5337
🏁 Script executed:
Repository: hyperpolymath/gitbot-fleet
Length of output: 12915
🏁 Script executed:
Repository: hyperpolymath/gitbot-fleet
Length of output: 6942
🏁 Script executed:
Repository: hyperpolymath/gitbot-fleet
Length of output: 791
Deploy a pull-request preview or remove the preview requirement.
The
previewjob only validates thegithub-pagesartifact. Thedeployjob excludes pull requests, so pull requests receive no accessible Pages preview. Use a third-party or custom preview deployment, or rename this job to reflect validation only.🤖 Prompt for AI Agents