- lock — same lockfile, same result (Pixi + Conda lockfiles, SHA-pinned actions)
- test — test behaviour, not lines (Gherkin specs, property tests, a 90% floor)
- document — docs ship with the code (llms.txt and .md routes for agents)
- ship — small commits, green gate first (conventional commits, no force-push)
- enforce — if a machine can check it, it does (ast-grep, Alint, Vale, commitlint)
I build open-source tools that make geospatial and scientific software reproducible, and I care most about the unglamorous part: the lockfile, the test harness, the CI gate, the review comment. Everything here is a public fact about the code — this profile publishes no name, location, employer, availability, or proficiency score.
# pixi.toml — reproducible environment definition
[workspace]
name = "archont561"
channels = ["conda-forge", "archont561"]
[package]
role = "Student · open-source contributor"
focus = ["Geospatial systems", "Reproducible environments", "Testing infrastructure", "Repo management"]
principle = "Lock it, test it, document it, then ship it."
review-style = "Reproducible or it did not happen."Each card links to its repository on GitHub; the last one lists every repository. Stack and registry chips come from the captured snapshot.
+ [ACTIVE] 🗺️ Packaging: cross-platform Conda recipes for geospatial pipelines.
+ [ACTIVE] 🧪 Testing: typed fixtures and BDD harnesses for Bun and pytest.
+ [ACTIVE] 📚 Docs: agent-readable exports (llms.txt and `.md` routes) on the portfolio.
+ [OPEN] 📦 Upstreaming: geospatial recipes toward conda-forge, one PR at a time.
+ [OPEN] 🧹 Hygiene: keep every repository titled, licensed, and CI-gated.
- [DONE] 📐 Split repository-scoped detail out of this profile README.
[WONT] Résumé claims, availability statements, or animated stat widgets.| Ecosystem | Namespace | Released |
|---|---|---|
| npm | @archont561 |
4 |
| PyPI | Archont561 |
5 |
| crates.io | Archont561 |
2 |
| Conda | archont561/archont561 |
13 |
📚 Which other projects are there?
Every project, with its source repository; each name opens its page in the portfolio.
| Project | Kind | What it is | Source |
|---|---|---|---|
| qgis-sdk | geospatial |
Python-first SDK and TypeScript bridge for typed, testable QGIS 4 plugins. | GitHub |
| qgis-agent-harness | geospatial |
Harness for evaluating GIS-agent artefacts with a shared QGIS runtime and oracle. | GitHub |
| pixi-sandbox | environments |
Cloneable, verifiable environment packs for Pixi projects. | GitHub |
| bun-test-utils | testing |
Typed fixtures and test extensions for the Bun test runner. | GitHub |
| playtest | testing |
Playwright-style testing for Rust. | GitHub |
| universe | environments |
Rust toolkit for self-hosted universes of software, data, models, and skills. | GitHub |
| PyShellForge | compilers |
Python DSL and AST-based compiler that emits clean, readable shell scripts. | GitHub |
| ODM-conda | packaging |
Modular, Pixi-managed conda packaging for OpenDroneMap components. | GitHub |
| CloudCompare-conda | packaging |
Cross-platform Conda packaging for point-cloud and mesh processing. | GitHub |
📦 Where are the packages published?
Packages are discovered from each account rather than listed by hand: the npm org, the
PyPI and crates.io users, the NuGet owner, the Maven Central namespace, the R-universe
registry, and the prefix.dev channels. Reserved names are counted apart from releases, and
a 0.0.0 stub or a registered but unbuilt package is never presented as a published package.
npm @archont561 published 4 (reserved names: 5)
PyPI Archont561 published 5 (reserved names: 5)
crates.io Archont561 published 2 (reserved names: 10)
NuGet Archont561 published 0 (reserved names: 1)
Maven Central io.github.archont561 published 0 (reserved names: 1)
R-universe archont561 published 0 (reserved names: 1)
Conda archont561/archont561 packages 13
Conda archont561/geospatial packages 0
latest universe 0.1.1 · Conda · 2026-11-14
source npm, PyPI, crates.io, NuGet, Maven Central, R-universe, and prefix.dev APIs, captured 2026-11-15
Conda channels install from https://prefix.dev/archont561/archont561 and https://prefix.dev/archont561/geospatial.
The packages page of the portfolio goes deeper: versions, licences, platforms, and install commands.
🧭 What does “maintained” mean here?
Counts are captured from the GitHub REST API by bun run tools capture, so they are refreshed
rather than hand-tuned. No badge service is involved.
public repositories 26 (authored: 26, forks: 0, archived: 2)
topic metadata 22/26 repositories
primary languages Python 15 · Rust 3 · TypeScript 3 · Astro 1
source GitHub REST, captured 2026-11-15
Archived repositories stay visible on purpose: retiring work cleanly is part of maintaining it.
🧰 Which toolchain is behind all this?
- 🔒 Reproducibility — Pixi and Conda lockfiles · conda-forge style recipes · SHA-pinned GitHub Actions
- 🧪 Testing — pytest-bdd and Gherkin specs in every repository · typed Bun test extensions
- 🗺️ Geospatial — QGIS runtime and SDK tooling · point-cloud and ODM packaging
- 🧭 Repo management — dependency automation, link and structure gates, deliberate archives
- 📝 Docs as code — Fumadocs with
llms.txtand parallel.mdroutes for agents - 🤝 Contribution — issue-first, changelog-per-release, no push without a green gate
🩺 How healthy is this profile repo?
Every check runs through bun run tools <cmd> (citty commands discovered from tools/commands/), so
lefthook, CI, and a local shell run the same code:
lint Biome · tsc · ast-grep · Alint · Vale polyglot-clean-code v0.1.0 pedantic presets
knip · dependency-cruiser · secretlint unused code, import layering, leaked secrets
actionlint · zizmor valid, injection-free workflows
links lychee repo links and anchors on every push; every link daily
test bun-test-utils scenarios fails under 90% lines or functions; Codecov gates PRs
readme --check README.md and assets/ must match their sources
commitlint Conventional Commits commit-msg hook, every pull request and its title
refresh daily at 04:17 UTC captures registries and commits only on drift
Bun, actionlint, zizmor and lychee come from pixi.lock; everything else from bun.lock.
🛠️ How is this README made?
The terminal framing borrows from a free GitSkins community template by
@Avijit010325
(community templates); all text, links,
and claims were rewritten to public repository facts. The portal, project and principles cards are hand-drawn
animated SVGs, the footer banner is figlet art, and
the badges are rendered offline by badge-maker;
all of them are committed under assets/, so only the three live status badges call a service.
GitHub serves them as images, which cannot react to hover or know they scrolled into view,
so the spotlight tours the project cards on its own and the terminal replays its command.
bun run tools capture records live GitHub and registry facts plus portfolio tokens.css
in data/snapshot.json through clients generated from each registry's OpenAPI or GraphQL
schema, and bun run tools readme renders templates/profile.ejs, cards, and badges with them
and data/profile.json. Scheduled daily runs (refresh.yml) regenerate badges and cards whenever
facts or portfolio design tokens drift. Edit those, never this file. The portfolio itself lives in
Archont561/archont561.github.io.
📮 How do I get in touch?
No contact channel is published here. The entry point for every project is an issue in its repository, and contributions that arrive with a failing test and a lockfile update are the kind most likely to be merged quickly.



