ML artifact integrity verification and fenliu docs publish via Forgejo Actions #68

Merged
coding-agent-marvin8 merged 0 commits from refs/pull/68/head into main 2026-07-04 05:33:44 +00:00
coding-agent-marvin8 commented 2026-07-04 04:49:56 +00:00 (Migrated from codeberg.org)

Summary

  • Adds SHA-256 integrity manifest to ML artifact save/load (issue #66)
  • Documents ML model volume security hardening in container deployment docs
  • Adds Forgejo Actions workflow to publish fenliu docs to grebedoc.dev
  • Updates mkdocs site_url to https://fenliu.marvin.zone/

Issue #66 — ML artifact integrity

save_artifacts now writes manifest.sha256 (SHA-256 digest of each .pkl file) after serialising the model and pipeline. load_artifacts verifies the manifest before calling joblib.load — raises FileNotFoundError if the manifest is absent, ValueError if any digest mismatches.

Three new tests cover the invariants: manifest created, raises on missing manifest, raises on tampered artifact.

Issue #67 — Forgejo Actions docs publish

.forgejo/workflows/fenliu-docs.yml triggers on fenliu-* tags and:

  1. Verifies the tag is on main
  2. Builds versioned docs with mike deploy and pushes to the pages branch
  3. Uploads pages/fenliu/ to https://fenliu.marvin.zone via codeberg.org/git-pages/action@v2

Uses forge.token — no extra secret required. The existing Woodpecker pipeline is left in place as a secondary deployment.

DNS setup required (Marvin8 action)

Before the first tag triggers the workflow, set up the grebedoc DNS records for fenliu.marvin.zone following the Method B challenge instructions at https://grebedoc.dev.

Closes #66
Closes #67

## Summary - Adds SHA-256 integrity manifest to ML artifact save/load (issue #66) - Documents ML model volume security hardening in container deployment docs - Adds Forgejo Actions workflow to publish fenliu docs to grebedoc.dev - Updates mkdocs site_url to https://fenliu.marvin.zone/ ## Issue #66 — ML artifact integrity `save_artifacts` now writes `manifest.sha256` (SHA-256 digest of each `.pkl` file) after serialising the model and pipeline. `load_artifacts` verifies the manifest before calling `joblib.load` — raises `FileNotFoundError` if the manifest is absent, `ValueError` if any digest mismatches. Three new tests cover the invariants: manifest created, raises on missing manifest, raises on tampered artifact. ## Issue #67 — Forgejo Actions docs publish `.forgejo/workflows/fenliu-docs.yml` triggers on `fenliu-*` tags and: 1. Verifies the tag is on `main` 2. Builds versioned docs with `mike deploy` and pushes to the `pages` branch 3. Uploads `pages/fenliu/` to https://fenliu.marvin.zone via `codeberg.org/git-pages/action@v2` Uses `forge.token` — no extra secret required. The existing Woodpecker pipeline is left in place as a secondary deployment. ## DNS setup required (Marvin8 action) Before the first tag triggers the workflow, set up the grebedoc DNS records for `fenliu.marvin.zone` following the Method B challenge instructions at https://grebedoc.dev. Closes #66 Closes #67
coding-agent-marvin8 commented 2026-07-04 05:26:14 +00:00 (Migrated from codeberg.org)

packages/fenliu/docs/getting-started/container-deployment.md

The trailing ellipsis '...' is ambiguous and may confuse readers.

Already resolved — the ... placeholder was part of the read-only volume mount example, which was removed entirely in commit e97a04f when that section was rewritten to drop the incorrect volume advice.

[`packages/fenliu/docs/getting-started/container-deployment.md`](https://codeberg.org/marvinsmastodontools/dujiangyan/pulls/68#issuecomment-18531794) > The trailing ellipsis '...' is ambiguous and may confuse readers. ✅ Already resolved — the `...` placeholder was part of the read-only volume mount example, which was removed entirely in commit `e97a04f` when that section was rewritten to drop the incorrect volume advice.
coding-agent-marvin8 commented 2026-07-04 05:26:21 +00:00 (Migrated from codeberg.org)

packages/fenliu/docs/getting-started/container-deployment.md

The phrasing 'restricts /app/data to chmod 750' is slightly awkward.

Fixed in commit 54c3424 — now reads "applies chmod 750 to /app/data".

[`packages/fenliu/docs/getting-started/container-deployment.md`](https://codeberg.org/marvinsmastodontools/dujiangyan/pulls/68#issuecomment-18531995) > The phrasing 'restricts `/app/data` to `chmod 750`' is slightly awkward. ✅ Fixed in commit `54c3424` — now reads "applies `chmod 750` to `/app/data`".
coding-agent-marvin8 commented 2026-07-04 05:26:28 +00:00 (Migrated from codeberg.org)

packages/fenliu/docs/getting-started/container-deployment.md

The code block is missing a language specifier.

Already resolved — the section was rewritten in commit e97a04f and the replacement code block uses ```bash throughout.

[`packages/fenliu/docs/getting-started/container-deployment.md`](https://codeberg.org/marvinsmastodontools/dujiangyan/pulls/68#issuecomment-18531998) > The code block is missing a language specifier. ✅ Already resolved — the section was rewritten in commit `e97a04f` and the replacement code block uses ` ```bash ` throughout.
coding-agent-marvin8 commented 2026-07-04 05:26:34 +00:00 (Migrated from codeberg.org)

packages/fenliu/mkdocs.yml line 4

The repo url doesn't seem right. I would have expected: https://codeberg.org/marvinsmastodontools/dujiangyan

Fixed in commit 54c3424repo_url updated to https://codeberg.org/marvinsmastodontools/dujiangyan.

[`packages/fenliu/mkdocs.yml` line 4](https://codeberg.org/marvinsmastodontools/dujiangyan/pulls/68#issuecomment-18532229) > The repo url doesn't seem right. I would have expected: https://codeberg.org/marvinsmastodontools/dujiangyan ✅ Fixed in commit `54c3424` — `repo_url` updated to `https://codeberg.org/marvinsmastodontools/dujiangyan`.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marvin8/dujiangyan!68
No description provided.