Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
189 commits
Select commit Hold shift + click to select a range
06d85ba
Create run_cutadapt.jl.
JoshuaJewell Jan 31, 2026
4691a26
Edit .gitignore
JoshuaJewell Jan 31, 2026
5ed7286
Remove ignored files.
JoshuaJewell Jan 31, 2026
c61e7a1
Create conversion and merge functions for vsearch and dada2 outputs.
JoshuaJewell Feb 1, 2026
64e7147
Edit .gitignore
JoshuaJewell Feb 1, 2026
252299e
Merge tables logic.
JoshuaJewell Feb 9, 2026
fed106b
Added dada2 R module.
JoshuaJewell Feb 18, 2026
377d95d
Reorganise directory structure.
JoshuaJewell Feb 18, 2026
8ad82eb
Update docstrings
JoshuaJewell Feb 18, 2026
5d6b2fa
Minor fixes.
JoshuaJewell Feb 18, 2026
b930778
Remove pipelinesteps.txt, update .gitignore.
JoshuaJewell Feb 18, 2026
a317df6
Added license.
JoshuaJewell Feb 18, 2026
0d2ae50
Added install scripts and README.md.
JoshuaJewell Feb 19, 2026
5913667
Convert dada2.r orchestrator to use a real language, making the world…
JoshuaJewell Feb 19, 2026
8f562e8
Update .gitignore
JoshuaJewell Feb 19, 2026
2c42493
Bugfixes and directory restructure.
JoshuaJewell Feb 19, 2026
ac930bd
Added VSEARCH local alignment taxonomic assignment. Pipeline tested a…
JoshuaJewell Feb 19, 2026
edb681a
Added databases.jl to handle databases due to different requirements …
JoshuaJewell Feb 20, 2026
ce7ce6f
Remove dead R modules. Good riddance.
JoshuaJewell Feb 20, 2026
1a8630a
Split massive dada2.jl, merged smaller run_*.jl, reorganised director…
JoshuaJewell Feb 20, 2026
fbba17e
Yep...I knew something had to go wrong...
JoshuaJewell Feb 20, 2026
bae0473
Added better logging, removed openxlsx R dependency.
JoshuaJewell Feb 20, 2026
41cfde0
Allow offload assignTaxonomy() to server.
JoshuaJewell Feb 20, 2026
883eb3d
I meant to stage all changes, oops.
JoshuaJewell Feb 20, 2026
5117477
Added MultiQC report from FastQC.
JoshuaJewell Feb 20, 2026
d8657cb
Overhauled execution pipeline with wiretypes and mtime based skipping…
JoshuaJewell Feb 21, 2026
2b283f6
Overhauled config setup.
JoshuaJewell Feb 21, 2026
1d7703d
Added ssh key option.
JoshuaJewell Feb 21, 2026
9edd3a1
Added SILVA database compatibility, filters, and analysis.
JoshuaJewell Feb 24, 2026
471c882
Added declarative graph introspection, removed SILVA and references..…
JoshuaJewell Feb 26, 2026
abc79ed
Much needed src/ restructure.
JoshuaJewell Feb 27, 2026
3a27318
Programmatic testing, yay! Brought back in SWARM pipeline.
JoshuaJewell Feb 27, 2026
9d5b5b5
Slowed the testing down. Updated README.md.
JoshuaJewell Feb 27, 2026
49e7fac
Made integration test part of CI workflow. Updated README.md.
JoshuaJewell Feb 27, 2026
a64a792
Update README.md
JoshuaJewell Feb 27, 2026
10ab030
Made integration test actually run. Hopefully.
JoshuaJewell Feb 27, 2026
682d8ae
Fixed integration test...hopefully...
JoshuaJewell Feb 27, 2026
2fda296
Actually fixed integration test...
JoshuaJewell Feb 27, 2026
d833a3c
This time.
JoshuaJewell Feb 27, 2026
205b4fd
How about..this time?
JoshuaJewell Feb 27, 2026
5b2f0f3
Please..just..
JoshuaJewell Feb 27, 2026
20242dc
Getting somewhere...
JoshuaJewell Feb 27, 2026
3dbfbae
13th time was the charm, naturally.
JoshuaJewell Feb 27, 2026
2f2c7f9
More integration test tweaking.
JoshuaJewell Feb 28, 2026
e019d4a
Unbreaking the file.
JoshuaJewell Feb 28, 2026
be425a4
Unbreaking other things...
JoshuaJewell Feb 28, 2026
5e6210d
Unbreaking more other things...
JoshuaJewell Feb 28, 2026
fadb145
Possibly last fix.
JoshuaJewell Feb 28, 2026
c695212
It wasn't. And this isn't either.
JoshuaJewell Feb 28, 2026
49033cf
But this one might be.
JoshuaJewell Feb 28, 2026
3cc536b
...
JoshuaJewell Feb 28, 2026
35efd24
...definitely working this time.
JoshuaJewell Feb 28, 2026
cd1f332
...definitely working this time this time.
JoshuaJewell Feb 28, 2026
3e9b1e7
Somehow this is all R's fault - who would've thought?
JoshuaJewell Feb 28, 2026
39e16ef
Somehow this is still all R's fault - who would've thought?
JoshuaJewell Feb 28, 2026
d585280
moRe fixes. Just kidding.
JoshuaJewell Feb 28, 2026
ae36c0e
Replaced tidyverse.
JoshuaJewell Feb 28, 2026
f0a499a
Skip assignTaxonomy for CI.
JoshuaJewell Feb 28, 2026
7fdd36e
We really are getting there...
JoshuaJewell Feb 28, 2026
6c7014d
Added backend WebUI components and tests.
JoshuaJewell Mar 1, 2026
2f742c3
Added sysimage for faster runtime, improved install script.
JoshuaJewell Mar 2, 2026
3d741ae
Fixed database resolution and removed CairoMakie.
JoshuaJewell Mar 2, 2026
9006b59
Added frontend
JoshuaJewell Mar 18, 2026
a4d155c
Updated CI tests and README.
JoshuaJewell Mar 28, 2026
e897bcc
Improved install logic and gitignored frontend packages.
JoshuaJewell Mar 28, 2026
341d9e4
Sped the testing up.
JoshuaJewell Mar 28, 2026
3194f9c
Added R dependencies to CI.
JoshuaJewell Mar 28, 2026
a925776
Improved install script and added precompile trace for sysimage build…
JoshuaJewell Mar 28, 2026
e274f1c
Package frontend and backend.
JoshuaJewell Mar 29, 2026
808ad0a
Hardening routes. Commit frontend assets properly.
JoshuaJewell Mar 29, 2026
ae215b6
Fix compatibility with old cutadapt versions.
JoshuaJewell Mar 29, 2026
b335424
Fix compatibility with old swarm versions. Update Codecov slug to new…
JoshuaJewell Mar 29, 2026
5a97655
Improved cross-run analysis config and functionality.
JoshuaJewell Mar 29, 2026
5a7c680
Added Annotation view.
JoshuaJewell Apr 2, 2026
ca546f3
CI debugging.
JoshuaJewell Apr 4, 2026
a4a41ab
Added Composition view.
JoshuaJewell Apr 6, 2026
fbb816f
Developed analyses and views.
JoshuaJewell May 15, 2026
c0a6d8c
Added R environment with renv-pinned deps. Added CITATION.cff
JoshuaJewell May 21, 2026
6b7a284
CI overhaul.
JoshuaJewell May 22, 2026
9617d52
Prepare v0.1.0 release notes and docs.
JoshuaJewell May 29, 2026
6225de2
Add sub-group scoping to composition tables. Fixed major double count…
JoshuaJewell Jun 2, 2026
214a9a8
Converge Taxa Bar and Composition filtering.
JoshuaJewell Jul 12, 2026
c74ad8e
Move category sets and filters into a single composition library.
JoshuaJewell Jul 14, 2026
5cf76d9
Add provenance capture.
JoshuaJewell Jul 14, 2026
32b8e30
CI fix.
JoshuaJewell Jul 14, 2026
0a2d6cf
Add primers/databases config editing, command provenance, and data-in…
JoshuaJewell Jul 20, 2026
e55af2f
CI fix.
JoshuaJewell Jul 20, 2026
fb0ee43
Real CI fix.
JoshuaJewell Jul 21, 2026
182c49f
Real real CI fix.
JoshuaJewell Jul 21, 2026
0e61f4f
Begin Stipple/Vue migration with isolated typed studies UI
hyperpolymath Sep 18, 2026
beeae5a
Document standalone Linux releases, secondary WSL2 support and remain…
hyperpolymath Sep 18, 2026
89ffe4b
build: migrate package management from mixed to bun
Sep 17, 2026
05c256c
refactor(types): adopt strict TypeScript foundation, 165 errors to 0
Sep 17, 2026
e08e1c9
docs: add type system reconnaissance audit
Sep 17, 2026
dd0d25b
build(types): enable strict TypeScript with tracked deferrals
Sep 17, 2026
edb1691
test: establish test and benchmark infrastructure from proven-tests-a…
Sep 17, 2026
ae5db83
types: define domain type system for MetaManifold-WebUI
Sep 17, 2026
f43c0ef
test: comprehensive type-boundary tests for MetaManifold-WebUI
Sep 17, 2026
2d9873e
chore: align with rsr-template-repo and standards repo
Sep 17, 2026
34c5871
test: extend coverage with taxonomy-derived suites and add versatile …
Sep 18, 2026
f154d2e
build: pin self-contained toolchain via mise.toml and guix.scm
Sep 18, 2026
b7cace1
build: complete standalone coverage — pipeline tools, pin codegen, dr…
Sep 18, 2026
e45f0d5
build: zero-touch machine config via tools.yml codegen
Sep 18, 2026
9721e33
build: one-recipe clone-to-launchable (setup-full)
Sep 18, 2026
8874e65
chore: add SPDX headers to post-rebase ui/migration files
Sep 18, 2026
b3b58c1
feat(analysis): safe, explicit, versioned AnalysisConfig layer v1
hyperpolymath Sep 18, 2026
cd76f75
chore(ci): remove Codecov residue — coverage now local artifact only
hyperpolymath Sep 18, 2026
fff0068
fix(docs): add SPDX headers to milestone docs to pass repo-hygiene gate
hyperpolymath Sep 18, 2026
9cb74ab
fix(docs): add SPDX headers to milestone docs (clade-cumulus) — force…
hyperpolymath Sep 18, 2026
25da228
feat(analysis): safe, explicit, versioned AnalysisConfig layer v1 (#11)
hyperpolymath Sep 18, 2026
0866308
Merge branch 'main' into feat/clade-cumulus
hyperpolymath Sep 18, 2026
af5fb50
feat(cladistics): CladeCumulus cumulative explorer with epistemic col…
hyperpolymath Sep 18, 2026
36a7a73
Merge branch 'main' into chore/remove-codecov
hyperpolymath Sep 18, 2026
c8c3af7
chore(ci): remove Codecov residue — coverage now local artifact (#13)
hyperpolymath Sep 18, 2026
5731a5b
feat(bench): comprehensive benchmarks for table_loading, epistemic_pa…
hyperpolymath Sep 18, 2026
da776aa
docs(milestone): add Milestone 2 baseline tests + benchmarks + CI/CD …
hyperpolymath Sep 18, 2026
786f70a
fix(frontend): resolve TS1382 and TS2322 in AnalysisConfig and CladeC…
hyperpolymath Sep 18, 2026
ea349db
feat(bench): baseline tests + benchmarks + CI/CD + project board — Mi…
hyperpolymath Sep 18, 2026
0db2d2a
fix(ci): benchmark regression gate only fails on slowdown, not speedup
hyperpolymath Sep 18, 2026
3950081
fix(ci): repair download_databases.jl module loading
hyperpolymath Sep 18, 2026
c0be951
fix(bench): set tolerant frontend baseline to max*1.1 of observed CI
hyperpolymath Sep 18, 2026
9a985df
docs(milestone): add Milestone 2 report BASELINE TESTS + BENCHMARKS +…
hyperpolymath Sep 18, 2026
9c9ac5f
docs(milestone): redact PAT from Milestone 2 report for push protection
hyperpolymath Sep 18, 2026
c9761d5
docs(milestone): Milestone 2a — baseline tests documented (fast path)
hyperpolymath Sep 18, 2026
19778e2
docs(milestone): Milestone 2b — comprehensive benchmarks documented (…
hyperpolymath Sep 18, 2026
fdc14c6
docs(milestone): Milestone 2c — CI/CD extended (fast doc)
hyperpolymath Sep 18, 2026
fa4ec2b
docs(milestone): Milestone 2d — project board created and linked (fas…
hyperpolymath Sep 18, 2026
f530a17
Add AnalysisConfig + validators + Nickel/DEED schemas + provenance + …
hyperpolymath Sep 18, 2026
2b0e0c2
docs(milestone): Milestone 3 — AnalysisConfig.jl immutable + validato…
hyperpolymath Sep 18, 2026
417f90c
chore(gitignore): allow docs/milestones and docs/issues for project b…
hyperpolymath Sep 18, 2026
ab69c5c
chore(project-board): add update script for Milestone 3 with PAT requ…
hyperpolymath Sep 18, 2026
5f32901
Update config/schemas/analysis_config.ncl
hyperpolymath Sep 18, 2026
262f246
Update src/analysis/AnalysisConfig.jl
hyperpolymath Sep 18, 2026
9225bb7
Update config/schemas/analysis_config.ncl
hyperpolymath Sep 18, 2026
73d89fa
Add AnalysisConfig + validators + Nickel/DEED schemas + provenance + …
hyperpolymath Sep 18, 2026
b1bed4f
docs: Document analysis configuration APIs
coderabbitai[bot] Sep 18, 2026
bcea28c
Merge branch 'main' into coderabbit/changes/a81cdab0
hyperpolymath Sep 18, 2026
09d82bd
Implement and document AnalysisConfig, add milestone tracking, remove…
hyperpolymath Sep 18, 2026
1b765f8
Add execution harness and adapters (stubs) - Milestone 4
hyperpolymath Sep 19, 2026
e95f240
Add execution harness and adapters (stubs) - Milestone 4 (#24)
hyperpolymath Sep 19, 2026
e97ce08
fix(ci): make check and codegen scripts executable in git index
hyperpolymath Sep 19, 2026
a881dd7
style: strip trailing whitespace flagged by format gate
hyperpolymath Sep 19, 2026
074425e
perf(bench): calibrate micro-workload sample sizes and recut baseline
hyperpolymath Sep 19, 2026
03d6d63
fix(julia): repair corrupted file endings breaking precompile of Meta…
hyperpolymath Sep 19, 2026
e3a4023
ci(bench): replace unsound >10% ns gates with informational reporting
hyperpolymath Sep 19, 2026
9332666
fix(ci): pin third-party actions to full commit SHAs
hyperpolymath Sep 19, 2026
b59e1f9
fix(ci): pin third-party actions to full commit SHAs (#25)
hyperpolymath Sep 20, 2026
5981436
CI and PR fixes.
JoshuaJewell Sep 20, 2026
f443d63
ci: make repo hygiene gate advisory for upstream contribution
hyperpolymath Sep 20, 2026
bf2d083
fix(julia): stop module docstring colliding with struct AnalysisConfig
Sep 20, 2026
7b4b8e4
fix(julia): declare Statistics as a direct dependency
Sep 20, 2026
c11214c
fix(julia): repair three escaping bugs and the AnalysisConfig name sh…
Sep 20, 2026
1fd24f3
fix(julia): use the `:` import form for AnalysisConfig in server rout…
Sep 20, 2026
537b978
fix(analysis): clear 13 CI failures; add source lint and gate triage
arena-agent Sep 21, 2026
cc1ccc6
ci(bench): run the analysis_config benchmark; correct three doc drifts
arena-agent Sep 21, 2026
bcf732c
test(server): make the readiness probe report why it failed
hyperpolymath Sep 21, 2026
207395e
ci: give the three vacuous checks teeth without blocking upstream
hyperpolymath Sep 21, 2026
17b9cf3
chore: correct README drift, add the missing AGPL text, drop dead rules
hyperpolymath Sep 21, 2026
fcaf62d
chore: add a prepared, never-run history-rewrite script
hyperpolymath Sep 21, 2026
d2220be
fix(ci): add the missing SPDX header to config/ci/lint_source.jl
hyperpolymath Sep 21, 2026
3d53a43
test(server): size the readiness wait by deadline, not iteration count
hyperpolymath Sep 21, 2026
846adf8
chore(strip-history): make the post-rewrite tree check an actual check
hyperpolymath Sep 21, 2026
f0fa68b
fix(ci): make the server test diagnose itself and re-arm the vacuous …
hyperpolymath Sep 21, 2026
ae70787
fix(strip-history): strip inputs/ too, and print what actually remains
hyperpolymath Sep 21, 2026
f4b8d82
fix(strip-history): strip inputs/ too, and print what actually remain…
hyperpolymath Sep 21, 2026
e2df407
fix(bench): repair seven API-drift calls that made the Julia gate unp…
hyperpolymath Sep 21, 2026
26a3fff
fix(ci): queue `main` pushes instead of cancelling them
hyperpolymath Sep 21, 2026
781810f
fix(bench): repair eight latent defects that made the Julia gate unpa…
hyperpolymath Sep 21, 2026
ab2a4ad
fix(security): pin install and download paths flagged by SonarCloud
hyperpolymath Sep 21, 2026
77d7e72
perf(ci): make the R package restore resumable instead of restarting …
hyperpolymath Sep 21, 2026
659f0af
ci(renv): print progress linearly instead of repainting a non-TTY log
hyperpolymath Sep 21, 2026
148daff
fix(a11y): make click-handling containers real buttons
hyperpolymath Sep 21, 2026
047f6d4
fix(a11y): finish the button conversions and correct how the reset is…
hyperpolymath Sep 21, 2026
569c543
fix(test): import the submodules the analysis-config category step needs
hyperpolymath Sep 21, 2026
c0b1bc5
fix(security): cleanse the runtime apiBase before it prefixes every r…
hyperpolymath Sep 21, 2026
eb37549
fix(security): read HEAD from git's own files instead of resolving gi…
hyperpolymath Sep 21, 2026
729ce00
fix(lint): state the renv dependencies without a constant-condition b…
hyperpolymath Sep 21, 2026
6ae73b5
test(api): drive the apiBase cases from a table instead of five copies
hyperpolymath Sep 21, 2026
4bfed7a
fix(security): strip trailing slashes without a backtracking regex
hyperpolymath Sep 21, 2026
1e1b357
refactor(bench): split headCommit into the four shapes it documents
hyperpolymath Sep 21, 2026
b1be8fb
fix(a11y): prefer native elements over the ARIA roles that stood in f…
hyperpolymath Sep 21, 2026
8dbd361
fix(a11y): make the Pipeline Stats spacing explicit
hyperpolymath Sep 21, 2026
34672e0
fix(style): use codePointAt for the trailing-slash scan
hyperpolymath Sep 21, 2026
e2147d5
fix(server): log an unreadable config at warn, not error
hyperpolymath Sep 21, 2026
cb12b03
chore(hygiene): give the commit gate teeth and guard against the blob…
hyperpolymath Sep 21, 2026
9738651
fix(hygiene): close the rename blind spot in the blob guard's staged …
hyperpolymath Sep 21, 2026
f2fd83a
fix(hygiene): make the blob guard fail when it examines nothing
hyperpolymath Sep 21, 2026
20d59cf
ci(triage): handle squabble's no-gate exit code instead of failing on it
hyperpolymath Sep 21, 2026
420da85
ci(triage): re-pin squabble to the revision that emits exit 3
hyperpolymath Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .Rprofile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
source("renv/activate.R")
1 change: 1 addition & 0 deletions .bun-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.3.10
145 changes: 145 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# SPDX-License-Identifier: MPL-2.0
# Hyperpolymath estate canonical .editorconfig (standards#343 phase 1)
# Canon lives in rsr-template-repo; do not add a per-repo name to this header.
# https://editorconfig.org

root = true

# --- Estate baseline -------------------------------------------------------
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

# --- Prose: trailing whitespace is significant -----------------------------
[*.md]
trim_trailing_whitespace = false

[*.adoc]
trim_trailing_whitespace = false

# --- 4-space languages -----------------------------------------------------
[*.rs]
indent_size = 4

[*.zig]
indent_size = 4

[*.jl]
indent_size = 4

[*.py]
indent_size = 4

[*.c]
indent_size = 4

[*.h]
indent_size = 4

[*.php]
indent_size = 4

# --- 3-space languages (Ada / GNAT house style) ----------------------------
[*.ada]
indent_size = 3

[*.adb]
indent_size = 3

[*.ads]
indent_size = 3

[*.gpr]
indent_size = 3

# --- 2-space languages (explicit; matches the [*] default) -----------------
[*.hs]
indent_size = 2

[*.ex]
indent_size = 2

[*.exs]
indent_size = 2

[*.ncl]
indent_size = 2

[*.rkt]
indent_size = 2

[*.scm]
indent_size = 2

[*.idr]
indent_size = 2

[*.ipkg]
indent_size = 2

[*.k9]
indent_size = 2

[*.a2ml]
indent_size = 2

[*.agda]
indent_size = 2

[*.lean]
indent_size = 2

[*.ebnf]
indent_size = 2

# --- Tab-mandatory formats -------------------------------------------------
[Makefile]
indent_style = tab

[*.go]
indent_style = tab

# --- Task runners ----------------------------------------------------------
[Justfile]
indent_style = space
indent_size = 4

[justfile]
indent_style = space
indent_size = 4

[*.just]
indent_style = space
indent_size = 4

[Mustfile]
indent_style = space
indent_size = 4

# --- Platform-mandated line endings ----------------------------------------
# Windows batch/PowerShell hosts require CRLF; keep in step with .gitattributes.
[*.bat]
end_of_line = crlf

[*.cmd]
end_of_line = crlf

[*.ps1]
end_of_line = crlf

# --- Legacy / retired toolchains (retained for byte hygiene only) ----------
# ReScript (LANGUAGE-POLICY 1.2) and Nix (retired 2026-06-01) are no longer
# adopted for new work. These sections are inert where the files are absent and
# keep surviving files from drifting. Removal is a per-repo judgement.
[*.res]
indent_size = 2

[*.resi]
indent_size = 2

[*.nix]
indent_size = 2
17 changes: 17 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# SPDX-License-Identifier: MPL-2.0
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
# Activate the MetaManifold-WebUI dev environment on `cd` (direnv).
# Install direnv: https://direnv.net/

# Precedence: mise (exact CI-pinned binaries) first, Guix shell otherwise.
if has mise; then
use mise
elif has guix && [ -f guix.scm ]; then
use guix
fi

# Estate launcher discovery.
export METAMANIFOLD_REPO_DIR="$PWD"

# Real secrets belong in .env (gitignored) — never commit them here.
dotenv_if_exists
135 changes: 135 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# SPDX-License-Identifier: MPL-2.0
# Hyperpolymath estate canonical .gitattributes (standards#343 phase 1)
# Canon lives in rsr-template-repo; do not add a per-repo name to this header.
#
# Only diff drivers that git actually ships are used here. MEASURED on git
# 2.47.3: diff=go and diff=zig are NOT drivers (git silently falls back to the
# default heuristic); the Go driver is named `golang`.

* text=auto eol=lf

# --- Source ----------------------------------------------------------------
*.rs text eol=lf diff=rust
*.ex text eol=lf diff=elixir
*.exs text eol=lf diff=elixir
*.ada text eol=lf diff=ada
*.adb text eol=lf diff=ada
*.ads text eol=lf diff=ada
*.gpr text eol=lf diff=ada
*.go text eol=lf diff=golang
*.py text eol=lf diff=python
*.scm text eol=lf diff=scheme linguist-language=Scheme
*.rkt text eol=lf
*.jl text eol=lf
*.hs text eol=lf
*.zig text eol=lf
*.chpl text eol=lf
*.idr text eol=lf linguist-language=Idris
*.ipkg text eol=lf linguist-language=Idris
*.agda text eol=lf linguist-language=Agda
*.lagda text eol=lf linguist-language=Agda
*.lean text eol=lf
# `.v` is ambiguous (Coq / Verilog / V). This estate's `.v` files are Coq
# proofs; 49 repos currently mislabel them `linguist-language=V`.
*.v text eol=lf linguist-language=Coq
*.ncl text eol=lf
*.k9 text eol=lf linguist-language=Nickel
*.a2ml text eol=lf linguist-language=TOML
*.ebnf text eol=lf
*.ts text eol=lf
*.js text eol=lf
*.sh text eol=lf diff=bash
*.bash text eol=lf diff=bash

# --- Windows hosts require CRLF --------------------------------------------
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf

# --- Docs ------------------------------------------------------------------
*.md text eol=lf diff=markdown
*.adoc text eol=lf
*.txt text eol=lf
*.tex text eol=lf diff=tex
*.bib text eol=lf diff=bibtex

# --- Data / config ---------------------------------------------------------
*.json text eol=lf
*.jsonl text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.toml text eol=lf
*.svg text eol=lf
*.csv text eol=lf
*.html text eol=lf diff=html
*.css text eol=lf diff=css

# --- Repo control files ----------------------------------------------------
.gitignore text eol=lf
.gitattributes text eol=lf
.editorconfig text eol=lf
.tool-versions text eol=lf
Justfile text eol=lf
justfile text eol=lf
*.just text eol=lf
Mustfile text eol=lf
Makefile text eol=lf
Containerfile text eol=lf

# --- Binary ----------------------------------------------------------------
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.webp binary
*.ico binary
*.pdf binary
*.woff binary
*.woff2 binary
*.ttf binary
*.otf binary
*.eot binary
*.zip binary
*.tar binary
*.gz binary
*.xz binary
*.bz2 binary
*.so binary
*.dylib binary
*.dll binary
*.exe binary
*.wasm binary
*.rlib binary
*.beam binary

# --- Sequencing data -------------------------------------------------------
# History carried 269 MiB of these. They are binary, they must never be
# line-ending-normalised (a CRLF rewrite corrupts a gzip member), and they are
# not source. The recurrence guard with teeth is scripts/check-blob-hygiene.sh,
# run by .githooks/pre-commit and by CI; these lines are hygiene, not the gate.
*.fastq binary -diff linguist-generated=true
*.fastq.gz binary -diff linguist-generated=true
*.fq binary -diff linguist-generated=true
*.fq.gz binary -diff linguist-generated=true
*.fasta binary -diff linguist-generated=true
*.fa binary -diff linguist-generated=true
*.sam binary -diff linguist-generated=true
*.bam binary -diff linguist-generated=true

# --- Generated lockfiles: no diff noise, not counted as source -------------
Cargo.lock text eol=lf -diff linguist-generated=true
mix.lock text eol=lf -diff linguist-generated=true
bun.lock text eol=lf -diff linguist-generated=true
bun.lockb binary -diff linguist-generated=true
pnpm-lock.yaml text eol=lf -diff linguist-generated=true
package-lock.json text eol=lf -diff linguist-generated=true

# --- Legacy / retired toolchains (byte hygiene only) -----------------------
# ReScript is retired (LANGUAGE-POLICY 1.2); Nix was retired 2026-06-01. These
# lines keep surviving files normalised and keep retired tech out of the
# GitHub primary-language badge. Removal is a per-repo judgement, never a sweep.
*.res text eol=lf
*.resi text eol=lf
**/*.res linguist-detectable=false
*.nix text eol=lf
flake.lock text eol=lf -diff linguist-generated=true
22 changes: 22 additions & 0 deletions .githooks/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: MPL-2.0
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
#
# commit-msg hook — enforces the estate conventional-commit subject.
# Enable once per clone: git config core.hooksPath .githooks
# (The corresponding template is .gitmessage; CI re-checks on push.)
msg_file=$1
subject=$(head -1 "$msg_file")

# Types per .gitmessage "Allowed Types" list.
if ! printf '%s' "$subject" | grep -qE '^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\([a-zA-Z0-9_/-]+\))?!?: .{1,72}$'; then
cat >&2 <<EOF
commit-msg: REJECTED subject:
$subject
Required form:
<type>(<optional scope>): <subject> (type in: feat fix docs style
refactor perf test build ci chore revert; subject 1..72 chars)
EOF
exit 1
fi
exit 0
12 changes: 12 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: MPL-2.0
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
#
# pre-commit hook -- refuses a commit that would reintroduce the sequencing
# blobs stripped from history. Enable once per clone with `just hooks`
# (or `git config core.hooksPath .githooks`).
#
# The rule itself lives in scripts/check-blob-hygiene.sh and is shared verbatim
# with the CI blob-hygiene step, so the local gate and the remote gate cannot
# disagree about what is allowed.
exec "$(git rev-parse --show-toplevel)/scripts/check-blob-hygiene.sh" --staged
12 changes: 12 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# SPDX-License-Identifier: MPL-2.0
# Ownership for the hyperpolymath fork. Application/domain questions are
# routed to upstream (JoshuaJewell/MetaManifold-WebUI).

* @hyperpolymath

# Engineering estate (types, tests, CI, tooling) — fork owner
frontend/src/types/ @hyperpolymath
frontend/tests/ @hyperpolymath
frontend/bench/ @hyperpolymath
.github/ @hyperpolymath
scripts/ @hyperpolymath
Loading