项目文件夹

文件
wehub-resource-sync 9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:31:33 +08:00

132 行
4.9 KiB
Markdown

# Maintainer Runbook
This runbook is for maintainers and downstream fork operators who need to ship,
triage, roll back, or safely review operational changes.
It is intentionally practical. The goal is to make ODS operable by
people who did not write the original installer.
## Maintainer Responsibilities
Maintainers are expected to protect:
- install reliability across supported platforms;
- localhost-first security defaults;
- generated secret handling;
- service manifest and compose consistency;
- dashboard-api auth and host-agent boundaries;
- release validation receipts;
- rebase-friendly extension and fork paths.
When in doubt, prefer a smaller change with stronger validation over a clever
change with broad invisible effects.
## Release Checklist
Before publishing or recommending a release candidate:
1. Confirm the commit under test.
2. Confirm no unrelated local changes are included.
3. Run required CI and focused checks for changed areas.
4. For operational changes, run the release-grade fleet or an explicitly scoped
release substitute.
5. Confirm capability deferrals are resolved by the capabilities watcher or
called out as deferred.
6. Confirm lifecycle checks pass: idempotent reinstall, `ods restart`, and
`ods doctor`.
7. Record skipped optional surfaces, such as owner-card Talk, vision probes, AP
mode, or disabled hardware lanes.
8. Update release notes with the commit, date, validation layer, and known
limitations.
## When Release-Grade Fleet Is Required
Use the release-grade gate after changes to:
- installer phases or installer libraries;
- public bootstrap or prerequisite installation;
- Docker Compose stack selection or resolver behavior;
- core service manifests or ports;
- dashboard-api behavior used by install, setup, model, extension, or service
management flows;
- Hermes, model routing, LiteLLM, Lemonade, or llama-server lifecycle;
- GPU/runtime detection;
- `ods-cli` lifecycle commands;
- dependency/runtime wiring for installed services.
Docs-only and narrow test-only changes normally use focused validation.
## Reading Fleet Results
Use [RELEASE_VALIDATION.md](RELEASE_VALIDATION.md) for the public gate
definition. Operationally:
- `PASS` means the lane completed and validated the expected surface.
- `DEFERRED` means the lane has not failed, but is waiting on a known condition
such as a full model download.
- `SKIPPED` means the surface is not enabled for that install mode, such as
owner-card Talk on a non-LAN install.
- `FAIL` means the release gate should stop until the failure is classified.
Classify failures before fixing:
| Failure shape | First question |
|---|---|
| Install exits non-zero | Did the product fail, or did a health wait/time budget expire while services recovered? |
| Compose error | Is the selected file set valid for the mode, hardware, and enabled extensions? |
| Capability failure | Is the full model loaded, or is the host still on the bootstrap model? |
| Talk failure | Is `ods-proxy` enabled and healthy, or is the owner-card surface not part of this install? |
| Dashboard API failure | Is auth configured, service state healthy, and the expected route protected? |
| Lifecycle failure | Did reinstall, restart, or doctor fail independently, or did one transient poison the next probe? |
## Rollback Procedure
If a release or merge breaks operational behavior:
1. Stop new merges into the affected area.
2. Identify the last known-good commit and validation receipt.
3. Reproduce the failure on the smallest matching surface.
4. Decide whether to revert or forward-fix.
5. If reverting, revert only the offending commit or PR.
6. Rerun the focused failing lane.
7. Rerun release-grade validation if installer, compose, lifecycle, or runtime
behavior was affected.
8. Document the incident in the PR or release notes.
Avoid broad repository resets or unrelated cleanup while handling a release
rollback.
## High-Risk Areas
Treat these areas as high-risk:
- `ods-cli`;
- `install-core.sh`;
- `installers/phases/*`;
- `installers/lib/compose-select.sh`;
- `scripts/resolve-compose-stack.sh`;
- `docker-compose.*.yml`;
- `extensions/services/*/manifest.yaml`;
- dashboard-api auth, host-agent, setup, extension, and model routes;
- generated config writers;
- model download, verification, swap, and bootstrap logic.
Use [HIGH_RISK_CHANGE_MAP.md](HIGH_RISK_CHANGE_MAP.md) to choose validation
before merging.
## Operator Handoff Checklist
When adding, rotating, or handing off maintenance for an upstream area or fork:
- point the operator at this runbook;
- identify the current known-good commit;
- share the latest sanitized validation result;
- list disabled or lab-only fleet lanes;
- list outstanding release-blocking issues;
- list active private patches if this is a fork;
- explain where secrets and runtime data live;
- explain how to restore from backup or reinstall cleanly.
The handoff is not complete until the receiving operator can run validation and
interpret the result without private context.