Source repository for the public technical portfolio and documentation hub of Hubert Ronald.
Data & Cloud Architect · Data/ML Platform Engineer · AI-native Builder
I build evidence systems that turn complexity into clarity and action.
Live site:
- English and Spanish landing pages.
- Project Atlas, a curated map of projects, repositories and technical artifacts.
- Builder Journey, connecting creative software roots with data, cloud and AI-native engineering.
- Case studies and historical archive material.
- A canonical Technical Docs hub for selected projects and technical field guides.
- A standalone bridge to Liasoft, the creative archive at
liasoft.hubertronald.dev.
Current Technical Docs publications:
- VersoVector
- LuaSF
- GradientMesh
- RelationalStats
- RetainAI
- FDE Roadmap
https://hubertronald.dev/
Main landing page
https://hubertronald.dev/es/
Spanish landing page
https://hubertronald.dev/projects/
Project Atlas / Work
https://hubertronald.dev/journey/
Builder Journey
https://hubertronald.dev/case-studies/
Case-study index
https://hubertronald.dev/archive/
Historical archive
https://hubertronald.dev/technical-docs/
Canonical Technical Docs hub
https://hubertronald.dev/technical-docs/versovector/
VersoVector documentation
https://hubertronald.dev/technical-docs/luasf/
LuaSF documentation
https://hubertronald.dev/technical-docs/gradientmesh/
GradientMesh documentation
https://hubertronald.dev/technical-docs/relationalstats/
RelationalStats documentation
https://hubertronald.dev/technical-docs/retainai/
RetainAI documentation
https://hubertronald.dev/technical-docs/fde-roadmap/
Forward-deployed engineering field guide
https://liasoft.hubertronald.dev/
Standalone Liasoft creative archive
The following root-level project routes remain as compatibility surfaces and are not the canonical documentation roots:
/versovector/
/luasf/
/gradientmesh/
/relationalstats/
/retainai/
New documentation should use the canonical /technical-docs/... namespace.
.
├── docs/
│ ├── index.md
│ ├── es/
│ ├── projects/
│ ├── journey/
│ ├── case-studies/
│ ├── archive/
│ ├── technical-docs/
│ │ ├── index.md
│ │ ├── versovector/
│ │ ├── luasf/
│ │ ├── gradientmesh/
│ │ ├── relationalstats/
│ │ ├── retainai/
│ │ └── fde-roadmap/
│ ├── versovector/ # compatibility route
│ ├── luasf/ # compatibility route
│ ├── gradientmesh/ # compatibility route
│ ├── relationalstats/ # compatibility route
│ ├── retainai/ # compatibility route
│ ├── public/
│ │ ├── icons/
│ │ └── images/
│ │ └── profile/
│ └── .vitepress/
│ ├── config.mts
│ └── theme/
│
├── static-sites/
│ ├── liasoft/
│ └── root-under-construction/
│
├── legacy/
│ └── under-construction-template/
│
├── scripts/
│ ├── audit/
│ ├── technical-docs/
│ └── copy-static-sites.mjs
│
├── technical_docs_source_locks/
│ ├── README.md
│ └── fde-roadmap.json
├── technical_docs_source_lock.schema.json
├── technical_docs_source_registry.json
│
├── .github/
│ └── workflows/
│ └── deploy.yml
├── package.json
├── package-lock.json
├── .nvmrc
└── README.md
The main site is built with VitePress.
The public landing experience uses custom Vue components and a dedicated editorial visual system, while Technical Docs retain documentation-oriented navigation, sidebar and content behavior.
docs/index.md
-> /
docs/es/index.md
-> /es/
Both landing routes share the same component system with language-specific content.
Canonical documentation lives under:
docs/technical-docs/
-> /technical-docs/
The current publication set is:
/technical-docs/versovector/
/technical-docs/luasf/
/technical-docs/gradientmesh/
/technical-docs/relationalstats/
/technical-docs/retainai/
/technical-docs/fde-roadmap/
Technical Docs lifecycle and provenance are governed by:
technical_docs_source_registry.json
technical_docs_source_lock.schema.json
technical_docs_source_locks/
scripts/technical-docs/
The registry defines publication and source behavior. Provenance locks are materialized only where required by the registered source policy.
The older project roots remain only for compatibility:
/versovector/
/luasf/
/gradientmesh/
/relationalstats/
/retainai/
They must not become the canonical source of future documentation.
npm run docs:build builds VitePress and then runs the static-copy stage.
Current intentional static sources include:
static-sites/liasoft/
static-sites/root-under-construction/
Heavy local application exports under:
static-apps/liasoft/games/
are intentionally kept outside Git.
Liasoft is maintained as a standalone creative archive:
https://liasoft.hubertronald.dev/
The main portfolio links to it externally.
static-sites/liasoft/ provides only the lightweight bridge used by this repository and should not be treated as the canonical Liasoft application source.
The original under-construction material is intentionally separated from the active landing.
Current retained sources are:
static-sites/root-under-construction/
legacy/under-construction-template/
The root / must remain the active portfolio landing and must not be overwritten by the historical template.
Node.js is defined by the repository .nvmrc.
nvm use
npm ciRun the development server:
npm run docs:devBuild VitePress and copy intentional static sites into the generated output:
npm run docs:builddocs:build already includes the static-copy stage:
vitepress build docs
-> npm run static:copy
Generated output lives under:
docs/.vitepress/dist/
and must not be committed.
Run the landing quality gate:
python3 scripts/audit/landing-quality-check.pyRun the current Technical Docs integration gate after building:
npm run technical-docs:validate-rtd6 -- --require-buildCheck patch whitespace and malformed diff output:
git diff --checkA release candidate should pass all three checks after a clean build.
When changing assets, navigation, static bridges or generated documentation, rebuild from a clean output directory:
rm -rf docs/.vitepress/dist
rm -rf docs/.vitepress/cache
npm run docs:build
npm run docs:previewIf an updated asset still appears stale in the browser, perform a hard refresh:
macOS: Cmd + Shift + R
Windows/Linux: Ctrl + Shift + R
Deployment is handled by:
.github/workflows/deploy.yml
The workflow uses the Node.js version declared by .nvmrc.
For pull requests and pushes targeting master, relevant source changes trigger validation. The workflow:
checkout
↓
Node from .nvmrc
↓
npm ci
↓
npm run docs:build
↓
generated-output checks
↓
landing-quality-check.py
↓
technical-docs:validate-rtd6 -- --require-build
A normal push does not deploy the site automatically.
GitHub Pages deployment remains an explicit manual action through workflow_dispatch.
Validation-only run:
Actions
-> Validate and Deploy Site
-> Run workflow
-> deploy: false
Validated deployment:
Actions
-> Validate and Deploy Site
-> Run workflow
-> deploy: true
The deployment artifact is:
docs/.vitepress/dist/
Do not commit generated VitePress output:
docs/.vitepress/dist/
docs/.vitepress/cache/
Do not commit dependencies:
node_modules/
Do not reintroduce the historical under-construction page as /.
Do not move canonical Technical Docs back to root-level project routes.
Do not modify Technical Docs provenance declarations without validating the registry and applicable locks.
Do not create a local /kaggle/ route; Kaggle remains an external profile link.
Do not treat Liasoft as part of the RetainAI product identity.
Do not commit heavyweight local game exports under static-apps/liasoft/games/.
Do not use destructive deployment commands that overwrite the source branch with generated output.
This repository previously used direct ghp-import deployment:
ghp-import -n -p -f _build/html -b master
git config --global http.postBuffer 524288000That process is retained only as historical context.
The current model keeps source code in Git and publishes the generated docs/.vitepress/dist/ artifact through GitHub Actions and GitHub Pages.
Hubert Ronald
GitHub: HubertRonald
This repository uses the MIT License for the source code of the GitHub Pages site, unless otherwise noted.
Project names, personal branding, written content, logos, screenshots, third-party assets, datasets, external project documentation and generated artifacts may be subject to separate rights or licenses unless explicitly stated otherwise.
See LICENSE for details.