Skip to content

chore(release): v0.8.0 - #104

Open
liblaf-release-please[bot] wants to merge 1 commit into
mainfrom
release-please/main
Open

liblaf-release-please[bot] wants to merge 1 commit into
mainfrom
release-please/main

Conversation

@liblaf-release-please

@liblaf-release-please liblaf-release-please Bot commented May 18, 2026 •

Copy link
Copy Markdown

v0.8.0 - 2026-10-02

💥 BREAKING CHANGES

  • Refactored warp elastic energy module structure - e2fffdc by @liblaf
  • remove the previous model, inverse, optim, scene, utils, consts, jax.model, and warp.energies APIs; use the new forward, collision, common, and warp.fem modules instead - e52b195 by @liblaf
  • remove the liblaf.apple.jax package and JAX-based forward/collision APIs in favor of Torch tensors and Warp material adapters. - 67dbecb by @liblaf

✨ Features

  • (apple) improve inverse simulation with coarse-to-fine transfer and enhanced solvers - 61d530e by @liblaf
  • (apple) implement hybrid JAX/Warp model framework and WarpPhaceV2 - 6d1ae34 by @liblaf
  • (apple) add SMAS support and volume fraction for elastic energies - 79a6c2d by @liblaf
  • (exp) update inverse-toy simulation and add Newton solver - cee4852 by @liblaf
  • (exp) add SMAS forward simulation experiments - 90f086c by @liblaf
  • (exp) add inverse activation experiments for face and toy cases - abaf2e3 by @liblaf
  • (exp) compare belly losses on unreachable targets - a538dd3 by @liblaf
  • (exp) diagnose unreachable-target inverse bumpiness - 93b0953 by @liblaf
  • (exp) add saved-state material visualizations and reports - d56fa1b by @liblaf
  • (exp) publish reviewed September research sources - 86118a7 by @liblaf
  • (exp) preserve historical sources and public result records - e156589 by @liblaf
  • (experiment) validate fat attenuation of bumpy activation - 77721e8 by @liblaf
  • (inverse) enhance inverse solver with constraint support and improved adjoint solver - 892dbfd by @liblaf
  • (smas) add stable neo-hookean simulation experiments - 5d1ae88 by @liblaf
  • (warp) add Koiter shell potential - ae2f318 by @liblaf
  • add inverse toy experiments for forward simulation and muscle activation - 00ba035 by @liblaf
  • [breaking] refactor elastic energies and add inverse physics module - e2fffdc by @liblaf
  • add Neo-Hookean Warp energies and line-search PNCG - 88a29ef by @liblaf
  • add staged PNCG continuation for forward solves - c5f5267 by @liblaf
  • [breaking] add Torch differentiable inverse simulations - 67dbecb by @liblaf
  • expand simulation solvers and CUDA support - 443b2b6 by @liblaf

🐛 Bug Fixes

  • (inverse-face) split muscle and SMAS material fractions - 51e6274 by @liblaf
  • (warp) correct ARAP muscle energy implementation and kernel function names - d734e9b by @liblaf
  • align activation shear component ordering - a353c93 by @liblaf

📝 Documentation

🎨 Styles

  • collapse multi-line return expressions to single line - acf52bc by @liblaf

♻️ Code Refactoring

  • [breaking] replace model stack with forward simulation API - e52b195 by @liblaf

❤️ Contributors

@liblaf-release-please liblaf-release-please Bot added automerge Merge the pull request once unit tests and other checks pass. release-please labels May 18, 2026
@liblaf-mega-linter

liblaf-mega-linter Bot commented May 18, 2026 •

Copy link
Copy Markdown

✅⚠️MegaLinter analysis: Success with warnings

Descriptor Linter Files Fixed Errors Max errors Warnings Elapsed time
✅ BASH shellcheck 2 0 0 0.06s
✅ BASH shfmt 2 0 0 0 0.65s
⚠️ COPYPASTE jscpd yes 4047 no 22.29s
✅ JSON jsonlint 57 0 0 0.43s
✅ JSON prettier 57 19 0 0 3.55s
✅ JSON v8r 57 0 0 12.29s
⚠️ MARKDOWN rumdl 477 9 1 0 1.8s
⚠️ PYTHON ruff yes yes 1324 no 7.88s
✅ PYTHON ruff-format yes yes no no 1.13s
✅ REPOSITORY git_diff yes no no 1.92s
⚠️ SPELL cspell 1867 6594 0 140.76s

Detailed Issues

⚠️ SPELL / cspell - 6594 errors
wing .cspell.json file at the root of your repository
Of course, please correct real typos before :)

{
    "version": "0.2",
    "language": "en",
    "ignorePaths": [
        "**/node_modules/**",
        "**/vscode-extension/**",
        "**/.git/**",
        "**/.pnpm-lock.json",
        ".vscode",
        "package-lock.json",
        "megalinter-reports"
    ],
    "words": [
        "ACTIV",
        "AREF",
        "ATOLS",
        "Ainv",
        "Ajou",
        "Ambrosi",
        "Angrigiani",
        "Annaidh",
        "Aplus",
        "Aref",
        "Armijo",
        "Armijo's",
        "Arti",
        "Atrue",
        "BIII",
        "BLAS",
        "Badin",
        "Barbarino",
        "Behav",
        "Bettega",
        "Bhat",
        "Bhojanapalli",
        "Blemker",
        "Bodner",
        "Bruyere",
        "Bucinator",
        "CMAP",
        "CUDSS",
        "Choi",
        "Cudss",
        "Cupy",
        "DGXS",
        "DMCFC",
        "Dongguk",
        "Dphi",
        "D\u2098\u1d40F\u1d40",
        "ECDF",
        "Efat",
        "Eigenpair",
        "Eigenproblems",
        "Eigensolvers",
        "Emin",
        "Epicranial",
        "Eskes",
        "Esmas",
        "Exponentiating",
        "FROBENIUS",
        "FXAA",
        "Fedkiw",
        "Fels",
        "Freudenthal",
        "Frobenius",
        "Frontalis",
        "GIPC",
        "Giantesio",
        "Gosain",
        "Gouraud",
        "Groleau",
        "Hdiag",
        "Higham",
        "IHDR",
        "IOXML",
        "ISFIXED",
        "Jabareen",
        "Jmin",
        "Jold",
        "KOITER",
        "Koiter",
        "Krylov",
        "Kyrillidis",
        "LANCZOS",
        "LAPACK",
        "LDLT",
        "LIBGL",
        "LNCS",
        "Lam\u00e9",
        "Lanczos",
        "Lartizien",
        "Lgrad",
        "Linf",
        "Loewner",
        "Lpos",
        "Lres",
        "MTYPE",
        "MVIEW",
        "Mapelli",
        "Marquardt",
        "Mazza",
        "Musesti",
        "NPIVOTS",
        "NUMEXPR",
        "NVML",
        "Nasolabial",
        "Nazari",
        "Nelder",
        "Neverov",
        "Nyquist",
        "OFAT",
        "OPENBLAS",
        "ORCID",
        "Optimisation",
        "Ottenio",
        "O\u00f1ate",
        "PGTOL",
        "PMID",
        "PSNR",
        "PVBATCH",
        "PYTHONDONTWRITEBYTECODE",
        "PYTHONUNBUFFERED",
        "Paluch",
        "Parameterizations",
        "Paratera",
        "Payan",
        "Pessa",
        "Pezzuto",
        "Popen",
        "QREF",
        "Qhat",
        "Qmax",
        "Qref",
        "REFACTORIZATION",
        "RGBA",
        "Rei\u00df",
        "Reorthogonalize",
        "Retarget",
        "Riccobelli",
        "Riesz",
        "Rochette",
        "Rodrigues",
        "SLSQP",
        "Segoe",
        "Sifakis",
        "Stavness",
        "Taberner",
        "Temporoparietalis",
        "Teran",
        "Tereshenko",
        "Ternifi",
        "Tikhonov",
        "Trzewik",
        "UNCONVERGED",
        "UNORIENTED",
        "Uncheckpointed",
        "Unconverged",
        "Undeformed",
        "Unreachability",
        "Unregularized",
        "Unshifted",
        "VTKHDF",
        "Viridis",
        "Vmuscle",
        "Weickenmeier",
        "Yeoh",
        "ZYGO",
        "Zenodo",
        "advected",
        "aguli",
        "ainv",
        "amax",
        "amsgrad",
        "arities",
        "armijo",
        "artisynth",
        "asarray",
        "asfortranarray",
        "asnumpy",
        "atol",
        "atols",
        "axhline",
        "axisymmetric",
        "axvline",
        "axvspan",
        "azero",
        "azim",
        "badinjaw",
        "bary",
        "barycentrics",
        "bijective",
        "bmat",
        "bmatrix",
        "brentq",
        "capturable",
        "cellid",
        "cividis",
        "ckij",
        "clim",
        "cmap",
        "cmass",
        "cmdline",
        "cofactors",
        "corrcoef",
        "counterfactuals",
        "covector",
        "covectors",
        "cran",
        "csgraph",
        "cudss",
        "cupy",
        "cupyx",
        "darea",
        "dcof",
        "ddda",
        "dejavu",
        "deta",
        "detf",
        "detg",
        "deviatoric",
        "dhdx",
        "differenced",
        "dpsi",
        "dtheta",
        "dtype",
        "dtypes",
        "edof",
        "efat",
        "eigen",
        "eigenaxis",
        "eigendata",
        "eigendecomposition",
        "eigendecompositions",
        "eigenmode",
        "eigenmodes",
        "eigenpair",
        "eigenpairs",
        "eigensolver",
        "eigenspace",
        "eigenstrain",
        "eigensystem",
        "eigensystems",
        "eigenvisualization",
        "eigmin",
        "eigval",
        "eigvec",
        "elastography",
        "eminus",
        "epicranial",
        "eplus",
        "evals",
        "exponentials",
        "fatol",
        "fdeg",
        "feab",
        "feia",
        "femtometre",
        "ffprobe",
        "fftfreq",
        "finalizer",
        "frameon",
        "frobenius",
        "frontalis",
        "ftol",
        "f\u1d62f\u1d62\u1d40",
        "genfromtxt",
        "gfit",
        "gltf",
        "gminus",
        "gname",
        "gouraud",
        "gplus",
        "gsmooth",
        "gtheta",
        "gtol",
        "halvings",
        "hanning",
        "hhat",
        "hlines",
        "hnorm",
        "homotopy",
        "hpfd",
        "hreceipt",
        "hspace",
        "iinfo",
        "imread",
        "imshow",
        "indptr",
        "ineq",
        "ineqlin",
        "infty",
        "injective",
        "interp",
        "intp",
        "intraop",
        "invariances",
        "invertibility",
        "isface",
        "isfinite",
        "isfixed",
        "issubdtype",
        "jbiomech",
        "jmbbm",
        "journalctl",
        "jsonable",
        "jvalue",
        "koiter",
        "kron",
        "lanczos",
        "ldlt",
        "lede",
        "lerp",
        "libc",
        "libcudss",
        "libx",
        "linearization",
        "linf",
        "linkify",
        "lipschitz",
        "lstsq",
        "mand",
        "mathbb",
        "mathbf",
        "mathrm",
        "mathsf",
        "matvecs",
        "maxe",
        "maxls",
        "maxrss",
        "max\u2096",
        "mechanobiology",
        "mhat",
        "millimetre",
        "movflags",
        "mplot",
        "nanometres",
        "nasolabial",
        "nasolabialis",
        "nbins",
        "ncol",
        "ndimage",
        "neighbour",
        "neighbouring",
        "newq",
        "nfev",
        "nfree",
        "nmant",
        "nminus",
        "nnls",
        "noheader",
        "nolegend",
        "nonmand",
        "noopener",
        "nosmooth",
        "nplus",
        "npoints",
        "npyio",
        "nskin",
        "nvml",
        "onchange",
        "orcid",
        "parameterizations",
        "paratera",
        "parotideomasseteric",
        "pdist",
        "pfull",
        "philtrum",
        "pidfd",
        "pids",
        "pmatrix",
        "pngs",
        "pointid",
        "poroelastic",
        "ppid",
        "pstep",
        "pvbatch",
        "pvpython",
        "pyipctk",
        "pyproject",
        "qhat",
        "qreceipt",
        "qref",
        "qstep",
        "qvalue",
        "qzero",
        "randn",
        "rcond",
        "recoloured",
        "recomputations",
        "reequilibrated",
        "reequilibration",
        "reequilibrium",
        "refactorization",
        "refactorize",
        "regularised",
        "regularizers",
        "remesh",
        "remeshed",
        "remeshing",
        "reorthogonalization",
        "rerasterized",
        "retinacula",
        "rfft",
        "rfftfreq",
        "riesz",
        "rois",
        "rotvec",
        "rprecondition",
        "scalings",
        "sharey",
        "signum",
        "slugification",
        "splu",
        "spmv",
        "spsolve",
        "ssaa",
        "stationarity",
        "supxlabel",
        "tcij",
        "tetrahedralization",
        "tetrahedralize",
        "toarray",
        "tobytes",
        "tocoo",
        "tocsc",
        "tocsr",
        "tofile",
        "tolist",
        "tridiagonal",
        "tril",
        "tris",
        "twinx",
        "unactivated",
        "unadmitted",
        "uncheckpointed",
        "unclipped",
        "uncomposited",
        "uncontended",
        "unconverged",
        "undeformed",
        "unfloored",
        "uninverted",
        "unlaunched",
        "unoriented",
        "unphysical",
        "unprojected",
        "unreachability",
        "unreaped",
        "unregularized",
        "unrelaxed",
        "unreproduced",
        "unrun",
        "unshifted",
        "unsmoothed",
        "unstarred",
        "untimed",
        "unvalidated",
        "vecs",
        "vermillion",
        "vhat",
        "viridis",
        "viscoelastic",
        "viscoelasticity",
        "viscoplastic",
        "vlines",
        "vmax",
        "vmin",
        "vtkhdf",
        "vtkmodules",
        "vtus",
        "v\u1d40Hv",
        "wspace",
        "xatol",
        "xhat",
        "xlim",
        "xscale",
        "xtick",
        "xticklabels",
        "xticks",
        "xtol",
        "xytext",
        "xyxy",
        "ydata",
        "yerr",
        "ylim",
        "yscale",
        "ytick",
        "yticklabels",
        "yticks",
        "zanatomy",
        "zaxis",
        "zenodo",
        "zlabel",
        "zlim",
        "zorder",
        "zticks",
        "z\u2096n\u2096n\u2096\u1d40",
        "\u0394fit",
        "\u0394motion",
        "\u03a3cells",
        "\u03a3edges",
        "\u03bb\u2098\u2090\u2093",
        "\u03c3max"
    ]
}


You can also copy-paste megalinter-reports/LINTER_DEFAULT at the root of your repository

(Truncated to last 10000 characters out of 1331993)
⚠️ COPYPASTE / jscpd - 4047 errors
09/30/stage3-mouthopen-smile-contact-comparison/src/20-run-stage3-transition.py [623:48 - 637:14] (15 lines, 75 tokens)
   exp/2026/09/30/stage3-mouthopen-smile-contact-comparison/src/20-run-stage3-transition.py [667:53 - 681:14]
Clone found (python)
 - exp/2026/09/30/stage3-mouthopen-smile-contact-comparison/src/20-run-stage3-transition.py [639:57 - 664:25] (26 lines, 144 tokens)
   exp/2026/09/30/stage3-mouthopen-smile-contact-comparison/src/21-resume-stage3-transition.py [661:57 - 686:25]
Clone found (python)
 - src/liblaf/apple/solvers/linalg/cupy/_base.py [88:42 - 96:60] (9 lines, 55 tokens)
   src/liblaf/apple/solvers/linalg/cupy/_base.py [112:48 - 120:60]
Clone found (python)
 - src/liblaf/apple/solvers/linalg/cupy/_cg.py [1:1 - 16:6] (16 lines, 62 tokens)
   src/liblaf/apple/solvers/linalg/cupy/_minres.py [1:1 - 16:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_arap.py [7:33 - 21:74] (15 lines, 63 tokens)
   src/liblaf/apple/warp/fem/_neo_hookean.py [7:41 - 21:74]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [166:40 - 172:70] (7 lines, 56 tokens)
   src/liblaf/apple/warp/fem/_base.py [189:37 - 195:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [166:31 - 172:70] (7 lines, 58 tokens)
   src/liblaf/apple/warp/fem/_base.py [211:31 - 217:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [166:40 - 173:54] (8 lines, 67 tokens)
   src/liblaf/apple/warp/fem/_base.py [235:36 - 242:71]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [167:9 - 172:70] (6 lines, 54 tokens)
   src/liblaf/apple/warp/fem/_base.py [266:9 - 271:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [191:13 - 197:19] (7 lines, 60 tokens)
   src/liblaf/apple/warp/fem/_base.py [237:13 - 243:22]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [262:14 - 269:67] (8 lines, 67 tokens)
   src/liblaf/apple/warp/fem/_base.py [292:14 - 299:67]
Clone found (python)
 - src/liblaf/apple/warp/fem/_base.py [296:9 - 302:70] (7 lines, 65 tokens)
   src/liblaf/apple/warp/fem/_base.py [327:9 - 333:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_koiter.py [154:21 - 159:6] (6 lines, 65 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [202:21 - 207:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_koiter.py [204:53 - 209:11] (6 lines, 64 tokens)
   src/liblaf/apple/warp/fem/_koiter.py [248:25 - 253:7]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [1:1 - 28:15] (28 lines, 152 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [1:1 - 28:15]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [29:51 - 39:15] (11 lines, 66 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [29:58 - 39:15]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [39:44 - 60:15] (22 lines, 114 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [39:47 - 60:15]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [53:1 - 62:70] (10 lines, 96 tokens)
   src/liblaf/apple/warp/fem/_neo_hookean.py [74:78 - 83:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [53:11 - 62:70] (10 lines, 92 tokens)
   src/liblaf/apple/warp/fem/_neo_hookean.py [93:14 - 102:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [62:63 - 83:21] (22 lines, 150 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [62:22 - 83:29]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [65:32 - 74:89] (10 lines, 59 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [73:34 - 82:89]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [83:63 - 102:21] (20 lines, 152 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [83:22 - 102:29]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [85:35 - 93:15] (9 lines, 58 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [94:37 - 102:15]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [102:63 - 110:6] (9 lines, 55 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [102:22 - 110:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_neo_hookean.py [110:17 - 150:6] (41 lines, 256 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean.py [110:23 - 150:6]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean.py [24:19 - 36:20] (13 lines, 105 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [29:19 - 40:70]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [60:1 - 69:29] (10 lines, 89 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [82:78 - 91:29]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [60:11 - 71:26] (12 lines, 91 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [102:14 - 112:35]
Clone found (python)
 - src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [86:13 - 93:12] (8 lines, 55 tokens)
   src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [106:13 - 113:12]
Clone found (python)
 - src/liblaf/apple/warp/potential/_fiber_spring.py [110:17 - 123:15] (14 lines, 93 tokens)
   src/liblaf/apple/warp/potential/_fiber_spring.py [136:22 - 149:15]
Clone found (python)
 - src/liblaf/apple/warp/potential/_fiber_spring.py [111:6 - 123:15] (13 lines, 91 tokens)
   src/liblaf/apple/warp/potential/_fiber_spring.py [164:6 - 176:15]
Clone found (python)
 - src/liblaf/apple/warp/potential/_fiber_spring.py [115:28 - 131:36] (17 lines, 107 tokens)
   src/liblaf/apple/warp/potential/_fiber_spring.py [197:32 - 214:26]
Clone found (python)
 - tests/experiments/test_fit_l2_unrestricted.py [6:1 - 19:5] (14 lines, 61 tokens)
   tests/experiments/test_stress_acceptance.py [7:1 - 20:5]
Clone found (python)
 - tests/experiments/test_stress_runtime.py [313:54 - 348:6] (36 lines, 113 tokens)
   tests/forward/test_static_simulation.py [13:67 - 48:6]
Clone found (python)
 - tests/solvers/test_cupy.py [45:5 - 51:4] (7 lines, 63 tokens)
   tests/solvers/test_cupy.py [62:5 - 66:10]
Clone found (python)
 - tests/warp/test_fiber_spring.py [9:1 - 40:37] (32 lines, 253 tokens)
   tests/warp/test_koiter.py [88:1 - 118:48]
Clone found (python)
 - tests/warp/test_fiber_spring.py [11:62 - 19:26] (9 lines, 60 tokens)
   tests/warp/test_stable_neo_hookean_active.py [54:82 - 62:26]
Clone found (python)
 - tests/warp/test_fiber_spring.py [19:30 - 55:25] (37 lines, 223 tokens)
   tests/warp/test_stable_neo_hookean_active.py [62:27 - 92:26]
Clone found (python)
 - tests/warp/test_fiber_spring.py [247:21 - 252:32] (6 lines, 63 tokens)
   tests/warp/test_stable_neo_hookean_active.py [356:20 - 361:32]
Clone found (python)
 - tests/warp/test_fiber_spring.py [279:5 - 286:6] (8 lines, 74 tokens)
   tests/warp/test_fiber_spring.py [308:5 - 315:6]
Clone found (python)
 - tests/warp/test_koiter.py [325:56 - 333:52] (9 lines, 58 tokens)
   tests/warp/test_koiter.py [397:57 - 405:52]
Clone found (python)
 - tests/warp/test_koiter.py [333:74 - 342:6] (10 lines, 54 tokens)
   tests/warp/test_koiter.py [378:71 - 387:10]
Clone found (python)
 - tests/warp/test_koiter.py [333:74 - 342:6] (10 lines, 54 tokens)
   tests/warp/test_koiter.py [405:86 - 414:6]
Clone found (python)
 - tests/warp/test_koiter.py [333:74 - 342:6] (10 lines, 54 tokens)
   tests/warp/test_koiter.py [439:63 - 449:6]
Clone found (python)
 - tests/warp/test_koiter.py [343:7 - 351:6] (9 lines, 51 tokens)
   tests/warp/test_koiter.py [470:15 - 478:6]
Clone found (python)
 - tests/warp/test_koiter.py [350:28 - 355:76] (6 lines, 62 tokens)
   tests/warp/test_koiter.py [422:41 - 426:76]
Clone found (python)
 - tests/warp/test_koiter.py [405:11 - 421:11] (17 lines, 130 tokens)
   tests/warp/test_koiter.py [508:15 - 528:6]
Clone found (python)
 - tests/warp/test_stable_neo_hookean_active.py [167:26 - 176:6] (10 lines, 52 tokens)
   tests/warp/test_stable_neo_hookean_active.py [296:49 - 305:6]
Clone found (python)
 - tests/warp/test_stable_neo_hookean_active.py [167:26 - 176:6] (10 lines, 52 tokens)
   tests/warp/test_stable_neo_hookean_active.py [322:5 - 331:6]
┌────────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format     │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash       │ 1              │ 38          │ 74           │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ css        │ 2              │ 186         │ 2316         │ 2            │ 104 (55.91%)     │ 1242 (53.63%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 4              │ 558         │ 4358         │ 2            │ 277 (49.64%)     │ 2179 (50.00%)     │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ python     │ 1256           │ 475001      │ 3188532      │ 4043         │ 115215 (24.26%)  │ 811061 (25.44%)   │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ toml       │ 5              │ 619         │ 2473         │ 0            │ 0 (0.00%)        │ 0 (0.00%)         │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total:     │ 1268           │ 476402      │ 3197753      │ 4047         │ 115596 (24.26%)  │ 814482 (25.47%)   │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 4047 clones.
HTML report saved to megalinter-reports/copy-paste/jscpd-report.html
ERROR: jscpd found too many duplicates (24.3%) over threshold (0.0%)
time: 12.03s

(Truncated to last 10000 characters out of 915099)
⚠️ PYTHON / ruff - 1324 errors
otice at top of file
--> src/liblaf/apple/solvers/optim/base/_optimizer.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/base/_protocols.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/base/_types.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/pncg/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/pncg/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/pncg/_direction.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/pncg/_hess_damping.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/pncg/_line_search.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/pncg/_pncg.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/pncg/_terminate.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/optim/pncg/_types.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/utils/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/utils/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/solvers/utils/_implemented.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/element/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/element/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/element/_element.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/element/_tetra.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/geometry/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/geometry/_geometry.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/geometry/_tetra.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/geometry/_triangle.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/quadrature/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/quadrature/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/quadrature/_scheme.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/quadrature/_tetra.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/region/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/region/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/fem/region/_region.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/utils/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/utils/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/torch/utils/_decorator.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_arap.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_base.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_koiter.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_neo_hookean.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_stable_neo_hookean.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_deformation.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_gradient.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_hess_diag.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_hess_prod.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_hess_quad.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_identity.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/func/_misc.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/utils/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/utils/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/fem/utils/_material.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/math/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/math/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/math/_misc.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/math/_rotation.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/_adapter.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/_material.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/_model.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/model/_potential.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/potential/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/potential/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/potential/_ext_force.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/potential/_fiber_spring.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/utils/__init__.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/utils/__init__.pyi:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/utils/_dtype.py:1:1

CPY001 Missing copyright notice at top of file
--> src/liblaf/apple/warp/utils/_struct.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/common/test_moduli.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_activation_scene.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_fit_l2_unrestricted.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_joint_isfixed_boundary.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_mouthopen_block_optimizer.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_mouthopen_convergence.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_mouthopen_optimizer_continuation.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_mouthopen_pose_projection.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_mouthopen_tet_policy.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_strain_physics.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_stress_acceptance.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_stress_activation.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_stress_chains.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/experiments/test_stress_regularization.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/forward/test_collision_hess_quad.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/forward/test_fiber_spring.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/forward/test_gpu_contact_hessian.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/forward/test_gpu_sparse_hessian.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/forward/test_static_simulation.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/inverse/test_diff_forward.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/solvers/test_cupy.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/solvers/test_pncg.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/warp/test_fiber_spring.py:1:1

CPY001 Missing copyright notice at top of file
--> tests/warp/test_koiter.py:1:1

Found 1324 errors.
No fixes available (61 hidden fixes can be enabled with the `--unsafe-fixes` option).

(Truncated to last 10000 characters out of 210335)
⚠️ MARKDOWN / rumdl - 1 error
cs/203-collision-on-expression-pair-final.md:52:19: [MD057] Relative link '../data/remote-smile-recovery-006/inverse-smile-coupled-006/summary.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:52:105: [MD057] Relative link '../data/remote-smile-recovery-006/inverse-smile-coupled-006/protocol.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:52:196: [MD057] Relative link '../data/remote-smile-recovery-006/inverse-smile-coupled-006/endpoint.npz' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:53:32: [MD057] Relative link '../data/remote-smile-recovery-006/inverse-smile-coupled-006/independent-audit.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:53:150: [MD057] Relative link '../data/remote-smile-recovery-006/remote-smile-control-006/job.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:54:24: [MD057] Relative link '../data/remote-smile-recovery-006/sync-manifest.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:54:117: [MD057] Relative link '../data/recovery006-lineage-final.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:55:51: [MD057] Relative link '../data/review-smile-coupled-006-final/' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:55:129: [MD057] Relative link '../data/review-smile-coupled-006-final/target-vs-fit-front.png' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:55:217: [MD057] Relative link '../data/review-smile-coupled-006-final/fit-error-force-curves.png' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:55:312: [MD057] Relative link '../data/review-smile-coupled-006-final/objective-components-curves.png' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:83:19: [MD057] Relative link '../data/inverse-mouthopen-coupled-018/summary.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:83:83: [MD057] Relative link '../data/inverse-mouthopen-coupled-018/protocol.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:83:148: [MD057] Relative link '../data/inverse-mouthopen-coupled-018/endpoint.npz' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:83:225: [MD057] Relative link '../data/inverse-mouthopen-coupled-018/independent-audit.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:84:29: [MD057] Relative link '../data/inverse-mouthopen-coupled-018/completion-verification.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:84:138: [MD057] Relative link '../data/inverse-mouthopen-coupled-018/independent-final-cpu-verification.json' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:85:55: [MD057] Relative link '../data/review-mouthopen-coupled-018-published/' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:85:141: [MD057] Relative link '../data/review-mouthopen-coupled-018-published/target-vs-fit-front.png' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:85:237: [MD057] Relative link '../data/review-mouthopen-coupled-018-published/fit-error-force-curves.png' does not exist
exp/2026/09/23/new-neutral/docs/203-collision-on-expression-pair-final.md:85:340: [MD057] Relative link '../data/review-mouthopen-coupled-018-published/objective-components-curves.png' does not exist
exp/2026/09/23/new-neutral/docs/71-force-curve.md:23:47: [MD057] Relative link '../data/review-repaired-reference-005/force/' does not exist
exp/2026/09/23/new-neutral/docs/71-force-curve.md:47:21: [MD057] Relative link '../data/http-verification-force-005.json' does not exist
exp/2026/09/23/new-neutral/docs/45-initial-force-audit.md:56:21: [MD057] Relative link '../data/initial-force-audit-001/force-components.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:28:26: [MD057] Relative link '../data/forward-active-strain-001/active-strain-fields.npz' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:44:19: [MD057] Relative link '../data/forward-active-strain-001/active-strain-mapping.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:81:48: [MD057] Relative link '../data/forward-active-strain-001/active-strain-check.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:85:38: [MD057] Relative link '../data/forward-active-strain-001/independent-audit.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:87:44: [MD057] Relative link '../data/review-active-strain-001/index.html' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:109:13: [MD057] Relative link '../data/forward-active-strain-001/summary.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:110:14: [MD057] Relative link '../data/forward-active-strain-001/protocol.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:111:11: [MD057] Relative link '../data/forward-active-strain-001/trace.jsonl' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:112:12: [MD057] Relative link '../data/forward-active-strain-001/timing.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:113:14: [MD057] Relative link '../data/forward-active-strain-001/endpoint.npz' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:114:32: [MD057] Relative link '../data/forward-active-strain-001/active-strain-source-provenance.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:115:28: [MD057] Relative link '../data/forward-active-strain-001/provenance.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:116:19: [MD057] Relative link '../data/forward-active-strain-001/forward-only-guard.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:117:19: [MD057] Relative link '../data/forward-active-strain-001/forward.log' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:144:21: [MD057] Relative link '../data/http-verification-active-strain.json' does not exist
exp/2026/09/23/new-neutral/docs/30-active-strain-result.md:145:19: [MD057] Relative link '../data/serve-active-strain.json' does not exist
exp/2026/09/28/activation-smoothness-continuation/docs/20-results.md:9:1: [MD057] Relative link '../data/30-comparison/smoothness-comparison-preview.png' does not exist
exp/2026/09/28/activation-smoothness-continuation/docs/20-results.md:11:45: [MD057] Relative link '../data/30-comparison/smoothness-comparison-16x9.png' does not exist
exp/2026/09/28/activation-smoothness-continuation/docs/20-results.md:61:1: [MD057] Relative link '../data/20-analysis/relative-trajectories.png' does not exist
exp/2026/09/23/new-neutral/docs/62-forward-continuation-result.md:82:21: [MD057] Relative link '../data/forward-repaired-reference-005/summary.json' does not exist
exp/2026/09/23/new-neutral/docs/62-forward-continuation-result.md:83:23: [MD057] Relative link '../data/forward-repaired-reference-005/independent-audit.json' does not exist
exp/2026/09/23/new-neutral/docs/62-forward-continuation-result.md:84:14: [MD057] Relative link '../data/forward-repaired-reference-005/endpoint.npz' does not exist
exp/2026/09/23/new-neutral/docs/62-forward-continuation-result.md:85:13: [MD057] Relative link '../data/forward-repaired-reference-005/forward.log' does not exist
exp/2026/09/23/new-neutral/docs/62-forward-continuation-result.md:88:18: [MD057] Relative link '../data/review-repaired-reference-005/index.html' does not exist
exp/2026/09/23/new-neutral/docs/62-forward-continuation-result.md:95:19: [MD057] Relative link '../data/serve-continuation-005.json' does not exist
exp/2026/09/23/new-neutral/docs/62-forward-continuation-result.md:96:21: [MD057] Relative link '../data/http-verification-continuation-005.json' does not exist
exp/2026/09/23/new-neutral/docs/90-blendshape-transfer.md:20:40: [MD057] Relative link '../data/blendshapes-005/' does not exist
exp/2026/09/23/new-neutral/docs/90-blendshape-transfer.md:99:21: [MD057] Relative link '../data/http-verification-blendshapes-005.json' does not exist
exp/2026/09/23/new-neutral/docs/90-blendshape-transfer.md:100:19: [MD057] Relative link '../data/serve-blendshapes-005.json' does not exist
exp/2026/09/23/new-neutral/docs/60-repaired-reference-result.md:82:33: [MD057] Relative link '../data/reference-clearance-002/independent-audit.json' does not exist
exp/2026/09/23/new-neutral/docs/60-repaired-reference-result.md:83:31: [MD057] Relative link '../data/forward-repaired-reference-001/reference-rebase.json' does not exist
exp/2026/09/23/new-neutral/docs/60-repaired-reference-result.md:84:21: [MD057] Relative link '../data/forward-repaired-reference-001/summary.json' does not exist
exp/2026/09/23/new-neutral/docs/60-repaired-reference-result.md:85:31: [MD057] Relative link '../data/forward-repaired-reference-001/independent-audit.json' does not exist
exp/2026/09/23/new-neutral/docs/60-repaired-reference-result.md:86:18: [MD057] Relative link '../data/review-repaired-reference-001/index.html' does not exist
exp/2026/09/23/new-neutral/docs/60-repaired-reference-result.md:137:46: [MD057] Relative link '../data/serve-repaired.json' does not exist
exp/2026/09/23/new-neutral/docs/60-repaired-reference-result.md:138:21: [MD057] Relative link '../data/http-verification-repaired.json' does not exist

Fixed: Fixed 78/1765 issues in 9 files (901ms)

(Truncated to last 10000 characters out of 296670)

Notices

⚠️ Your configuration references items that have been removed from MegaLinter and are ignored: GIT. See Removed linters to find their replacements.

See detailed reports in MegaLinter artifacts

MegaLinter is provided by OX Security
Show us your support by starring ⭐ the repository

liblaf-approve[bot]
liblaf-approve Bot previously approved these changes Aug 9, 2026
liblaf-approve[bot]
liblaf-approve Bot previously approved these changes Aug 23, 2026
liblaf-approve[bot]
liblaf-approve Bot previously approved these changes Aug 30, 2026
liblaf-approve[bot]
liblaf-approve Bot previously approved these changes Sep 6, 2026
liblaf-approve[bot]
liblaf-approve Bot previously approved these changes Sep 13, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automerge Merge the pull request once unit tests and other checks pass. release-please

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant