diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock index b781786..90b50a1 100644 --- a/.github/workflows/actions.lock +++ b/.github/workflows/actions.lock @@ -6,12 +6,10 @@ workflows: '.github/workflows/boj-build.yml': - 'actions/checkout@v4.1.7' '.github/workflows/casket-pages.yml': - - 'actions/cache@v4.3.0' - 'actions/checkout@v4.1.1' - 'actions/configure-pages@v5.0.0' - 'actions/deploy-pages@v4.0.5' - 'actions/upload-pages-artifact@v3.0.1' - - 'haskell-actions/setup@v2.7.5' '.github/workflows/codeql.yml': - 'actions/checkout@v4.1.1' - 'github/codeql-action@v3.37.3' @@ -33,11 +31,6 @@ workflows: '.github/workflows/workflow-linter.yml': - 'actions/checkout@v4.1.1' dependencies: - 'actions/cache@v4.3.0': - ref: 'v4.3.0' - commit: 'sha1-0057852bfaa89a56745cba8c7296529d2fc39830' - owner_id: 44036562 - repo_id: 215566462 'actions/checkout@v4.1.1': ref: 'v4.1.1' commit: 'sha1-b4ffde65f46336ab88eb53be808477a3936bae11' @@ -95,11 +88,6 @@ dependencies: commit: 'sha1-4187e74d05793876e9989daffde9c3e66b4acd07' owner_id: 9919 repo_id: 259445878 - 'haskell-actions/setup@v2.7.5': - ref: 'v2.7.5' - commit: 'sha1-ec49483bfc012387b227434aba94f59a6ecd0900' - owner_id: 75048950 - repo_id: 623796603 'peter-evans/repository-dispatch@v4.0.1': ref: 'v4.0.1' commit: 'sha1-28959ce8df70de7be546dd1250a005dd32156697' diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml index b7a5e27..ed16f3b 100644 --- a/.github/workflows/casket-pages.yml +++ b/.github/workflows/casket-pages.yml @@ -1,4 +1,11 @@ # SPDX-License-Identifier: MPL-2.0 +# +# Deploys the prebuilt static site committed under site/ — CI deliberately +# performs NO build step. The previous casket-ssg (Haskell) build never +# completed inside its timeout in ~93 runs (issue #74), so the site artifact +# is committed and this workflow only deploys it. See site/README.adoc for +# the regeneration contract. (Filename kept as casket-pages.yml to avoid +# lockfile/context churn; casket-ssg is no longer involved.) name: GitHub Pages on: push: @@ -13,94 +20,21 @@ concurrency: group: "pages" cancel-in-progress: false jobs: - build: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest - timeout-minutes: 15 + timeout-minutes: 5 steps: - name: Checkout uses: actions/checkout@v4.1.1 - - name: Checkout casket-ssg - uses: actions/checkout@v4.1.1 - with: - repository: hyperpolymath/casket-ssg - path: .casket-ssg - - name: Setup GHCup - uses: haskell-actions/setup@v2.7.5 - with: - ghc-version: '9.8.2' - cabal-version: '3.10' - - name: Cache Cabal - uses: actions/cache@v4.3.0 - with: - path: | - ~/.cabal/packages - ~/.cabal/store - .casket-ssg/dist-newstyle - key: ${{ runner.os }}-casket-${{ hashFiles('.casket-ssg/casket-ssg.cabal') }} - - name: Build casket-ssg - working-directory: .casket-ssg - run: cabal build - - name: Prepare site source - shell: bash - run: | - set -euo pipefail - rm -rf .site-src _site - - if [ -d site ]; then - cp -R site .site-src - else - mkdir -p .site-src - TODAY="$(date +%Y-%m-%d)" - REPO_NAME="${{ github.event.repository.name }}" - REPO_URL="https://github.com/${{ github.repository }}" - README_URL="" - - if [ -f README.md ]; then - README_URL="${REPO_URL}/blob/${{ github.ref_name }}/README.md" - elif [ -f README.adoc ]; then - README_URL="${REPO_URL}/blob/${{ github.ref_name }}/README.adoc" - fi - - { - echo "---" - echo "title: ${REPO_NAME}" - echo "date: ${TODAY}" - echo "---" - echo - echo "# ${REPO_NAME}" - echo - echo "Static documentation site for ${REPO_NAME}." - echo - echo "- Source repository: [${{ github.repository }}](${REPO_URL})" - if [ -n "${README_URL}" ]; then - echo "- README: [project README](${README_URL})" - fi - if [ -d docs ]; then - echo "- Docs directory: [docs/](${REPO_URL}/tree/${{ github.ref_name }}/docs)" - fi - echo - echo "Project-specific site content can be added later under site/." - } > .site-src/index.md - fi - - name: Build site - run: | - mkdir -p _site - cd .casket-ssg && cabal run casket-ssg -- build ../.site-src ../_site - touch ../_site/.nojekyll - name: Setup Pages uses: actions/configure-pages@v5.0.0 - name: Upload artifact uses: actions/upload-pages-artifact@v3.0.1 with: - path: '_site' - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - timeout-minutes: 15 - needs: build - steps: + path: 'site' - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4.0.5 diff --git a/site/.nojekyll b/site/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/site/README.adoc b/site/README.adoc new file mode 100644 index 0000000..27db3ed --- /dev/null +++ b/site/README.adoc @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: CC-BY-SA-4.0 += site/ — prebuilt GitHub Pages artifact + +Everything in this directory is deployed *verbatim* to +https://hyperpolymath.github.io/vexometer/ by +`.github/workflows/casket-pages.yml` on every push to `main`. +CI performs no build step. + +== Why prebuilt + +The previous workflow built https://github.com/hyperpolymath/casket-ssg[casket-ssg] +(Haskell) in CI to render the site. Its dependency closure (pandoc >= 3.0, +pandoc-types, text-icu, plus a custom `lol` C library) never completed a cold +build inside the 15-minute job timeout: the workflow failed or was cancelled in +all ~93 runs (issue +https://github.com/hyperpolymath/vexometer/issues/74[#74]). Per owner ruling, +the site artifact is now committed here and CI only deploys it. + +== Contract + +* `index.html` is *hand-authored* — it is not casket-ssg output and does not + claim to be. Edit it directly and commit. +* `.nojekyll` must remain: it stops GitHub Pages from running Jekyll over the + artifact. +* If a viable casket-ssg toolchain becomes available later, render the site + locally and replace the contents of this directory with the rendered output + in a normal PR. The workflow needs no change for that. +* Keep the SPDX header comment on line 1 of every non-empty file here. diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..6b5fb8e --- /dev/null +++ b/site/index.html @@ -0,0 +1,88 @@ + + + + + + + + The Vexometer — Irritation Surface Analyser (ISA) + + + +
+

The Vexometer: Irritation Surface Analyser (ISA)

+

Quantifying irritation across 10 dimensions for LLMs and related + tools, with standardised, reproducible metrics.

+

+ MPL-2.0 + RSR-compliant +

+ +

This monorepo contains ISA core, its satellite intervention system, the Lazy + Eliminator completeness enforcer, and the Vext verifiable communications + protocol. ISA is irritation-surface instrumentation — measurement and + mitigation of annoying LLM output patterns — not safety-alignment work.

+ +

Components

+ + + + + + + + + + +
DirectoryWhat it is
vexometer/The Vexometer (ISA) — irritation surface analyser core (Ada). 10 dimensions, standardised metrics.
vexometer-efficacy/Efficacy evaluator (Rust) — scores satellite interventions against baseline measurements; monotone frontier records.
vexometer-satellites/ISA Satellites — umbrella documentation and coordination hub for the satellite intervention system.
satellite-template/Satellite Template — scaffolding template for new ISA satellite projects.
verbosity-compressor/Verbosity Compressor (Rust) — first satellite: information-density analysis of LLM output; filler, hedges, redundancy, padding.
lazy-eliminator/Lazy Eliminator — completeness enforcement for LLM-generated code; detects and eliminates lazy patterns.
vext/Vext — verifiable, extensible communications protocol with cryptographic proof of algorithmic neutrality.
vext-email-gateway/Vext Email Gateway — email bridge for Vext interoperability (prototype).
+ +

Start here

+

+ Source repository · + README · + Efficacy protocol · + docs/ +

+ + +
+ +