diff --git a/.github/workflows/diag.yml b/.github/workflows/diag.yml deleted file mode 100644 index 4fe34ba..0000000 --- a/.github/workflows/diag.yml +++ /dev/null @@ -1,123 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# TEMPORARY diagnostic workflow. It exists so that the investigation of the -# three red Julia checks (hyperpolymath/InvestigativeJournalism.jl#73) can be -# read from outside the runner: GitHub job logs are served from -# objects.githubusercontent.com, which is not reachable from the environment -# coordinating this work, so the workflow records its own output in the branch -# instead. Removed again before the pull request is opened for review. -name: CI Diagnostic (temporary) - -on: - push: - branches: ['arena/**'] - workflow_dispatch: - -permissions: - contents: write - -concurrency: - group: diag-${{ github.ref }} - cancel-in-progress: true - -jobs: - diagnose: - runs-on: ubuntu-latest - timeout-minutes: 60 - - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - - uses: julia-actions/setup-julia@fa02766e078afaaf09b14210362cee14137e6a32 # v3.0.2 - with: - version: '1.11' - - - uses: julia-actions/cache@a45e8fa8be21c18a06b7177052533149e61e9b38 # v3.1.0 - - - name: Install hyperpolymath-internal Julia deps from git - run: | - julia --project=. -e ' - using Pkg - Pkg.add([ - Pkg.PackageSpec(url="https://github.com/hyperpolymath/Cliodynamics.jl"), - Pkg.PackageSpec(url="https://github.com/hyperpolymath/Causals.jl"), - Pkg.PackageSpec(url="https://github.com/hyperpolymath/ZeroProb.jl"), - Pkg.PackageSpec(url="https://github.com/hyperpolymath/AcceleratorGate.jl"), - ]) - ' - - - name: Reproduce the undeclared-dependency failure mode - continue-on-error: true - run: | - set -x - { - echo "### minimal reproduction: using Luxor inside a package that does not declare it" - echo '```' - REPRO=$(mktemp -d) - mkdir -p "$REPRO/src" - printf 'name = "MinRepro"\nuuid = "11111111-2222-3333-4444-555555555555"\nversion = "0.1.0"\n' > "$REPRO/Project.toml" - printf 'module MinRepro\nusing Luxor\nend\n' > "$REPRO/src/MinRepro.jl" - ENVDIR=$(mktemp -d) - REPRO="$REPRO" ENVDIR="$ENVDIR" julia -e ' - using Pkg - Pkg.activate(ENV["ENVDIR"]) - Pkg.add("Luxor") - Pkg.develop(path=ENV["REPRO"]) - try - using MinRepro - println("UNEXPECTED: MinRepro loaded") - catch err - println("REPRO FAILURE: ", sprint(showerror, err)) - end - ' 2>&1 | tail -n 30 - echo '```' - echo - echo "### the same using-Luxor line in this repository" - echo '```' - grep -rn "using Luxor" src/ || true - echo '```' - } > /tmp/repro.txt 2>&1 || true - cat /tmp/repro.txt - - - name: Run the CI test command and capture the output - continue-on-error: true - run: | - set -x - { - echo "### julia --version" - julia --version - echo - echo "### using InvestigativeJournalism" - julia --project=. -e 'using InvestigativeJournalism; println("LOAD OK")' 2>&1 | tail -n 60 - echo - echo "### Pkg.status()" - julia --project=. -e 'using Pkg; Pkg.status()' 2>&1 | tail -n 80 - echo - echo "### Pkg.test() — same command as .github/workflows/ci.yml" - julia --project=. -e 'using Pkg; Pkg.Registry.add("General"); Pkg.Registry.add(Pkg.RegistrySpec(url="https://github.com/hyperpolymath/julia-professional-registry.git")); Pkg.instantiate(); Pkg.build(); Pkg.test()' 2>&1 - echo - echo "TEST COMMAND EXIT CODE: $?" - } > /tmp/ci-run.txt 2>&1 || true - { - echo "## CI diagnostic for $GITHUB_SHA" - echo - cat /tmp/repro.txt 2>/dev/null || true - echo - echo "### tail of the test run (600 lines)" - echo '```' - tail -n 600 /tmp/ci-run.txt 2>/dev/null || true - echo '```' - } > CI-DIAG.txt || true - wc -l CI-DIAG.txt || true - - - name: Commit the diagnostic output back to the branch - if: always() - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add -f CI-DIAG.txt - if git diff --cached --quiet; then - echo "nothing to commit" - else - git commit -m "chore(diag): capture CI output for ${GITHUB_SHA} [skip ci]" - git push origin "HEAD:${GITHUB_REF_NAME}" - fi diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 6f77c0d..8662ff2 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -29,6 +29,14 @@ https://semver.org/spec/v2.0.0.html[Semantic Versioning]. `ArgumentError` instead of exercising the code. Tests now write a real embedded PNG fixture to a temp directory and, separately, pin the intended "missing file is rejected, not scored" behaviour. +* `src/storytelling/timelines.jl:43-44` used the invalid escape `\\_` in the + ASCII timeline banner, and `src/storage/verisim_bridge.jl:37` interpolated + `query` after closing the log string + (`println("Executing VQL: "$query" ⚡")`). Both are Julia parse errors, so + `using InvestigativeJournalism` raised `LoadError: ParseError` and no test + ran on any leg (`Julia 1.10 - ubuntu-latest`, `Julia 1.11 - ubuntu-latest`, + `Julia 1.11 - macos-latest`). The backslash is doubled, and the query is + interpolated inside the string. ==== Changed @@ -43,4 +51,8 @@ https://semver.org/spec/v2.0.0.html[Semantic Versioning]. No file under `src/`, `test/`, `benches/`, `examples/`, `ffi/` or `docs/` referenced any of them; they were declared packages that every CI job paid to download and precompile. Re-add each one with its feature. +* `.github/workflows/diag.yml`, a temporary diagnostic workflow whose only job + was to copy runner output back into the repository while these failures were + being investigated. It was carried into `main` by the squash commit of the + previous pull request and is not part of the project's CI. diff --git a/src/storage/verisim_bridge.jl b/src/storage/verisim_bridge.jl index ea557f7..292a2ed 100644 --- a/src/storage/verisim_bridge.jl +++ b/src/storage/verisim_bridge.jl @@ -34,7 +34,7 @@ Executes a Veridical Query Language (VQL) query against the investigative databa Example: "SELECT * FROM investigation WHERE DRIFT < 0.1 AND MODALITY = 'graph'" """ function vql_query(query::String) - println("Executing VQL: "$query" ⚡") + println("Executing VQL: $query ⚡") # Return mock results return [] end diff --git a/src/storytelling/timelines.jl b/src/storytelling/timelines.jl index 21735ff..a64f2ee 100644 --- a/src/storytelling/timelines.jl +++ b/src/storytelling/timelines.jl @@ -40,8 +40,8 @@ Prints an ASCII 'git-style' branching timeline to the console. function visualize_git_timeline() # In a real implementation, this would use a graph renderer println("MASTER: *---*---*---*") - println("LEAK_V1: \_*___*") - println("ALT_HIST: \_*") + println("LEAK_V1: \\_*___*") + println("ALT_HIST: \\_*") end end # module