# Contributor handoff — krahets/hello-algo

> Canonical page: https://codevetter.com/unpack/hello-algo/agent-handoff

# Contributor handoff — krahets/hello-algo

Scanned commit 28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9 (2026-08-18). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

This is a content monorepo, not an app — treat it as five parallel trees (root zh + en, zh-hant, ja, ru) over two artifact types (docs markdown, runnable code). Read mkdocs.yml, Dockerfile, and the contribution docs first. The prime directive is consistency: any code change belongs in codes/ AND all locale codes/ copies AND the inline tabs in the docs pages; any structural change (new chapter/language) touches nav, manifests, workflows, and Docker stages together. Validate with the language's own harness before submitting; correctness means 'runs and prints the same results as the Python/Java reference' per the PR template.
- Read these first: mkdocs.yml (nav + build layout), Dockerfile (how all five sites build), docs/chapter_appendix/contribution.md (contribution flow), en/CONTRIBUTING.md (translation standards), .github/pull_request_template.md (required checklists), and the workflow file for whichever language you touch. — [mkdocs.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/mkdocs.yml) [Dockerfile](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/Dockerfile) [docs/chapter_appendix/contribution.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docs/chapter_appendix/contribution.md) [en/CONTRIBUTING.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/en/CONTRIBUTING.md) [.github/pull_request_template.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/pull_request_template.md)
- Code file conventions: every sample has a header comment ('File: <name> / Created Time: <date> / Author: <name> (<email>)') and ends with a driver section — '"""Driver Code""" + if __name__ == "__main__":' in Python, '/* Driver Code */ func TestXxx(t *testing.T)' in Go, fn main() in Rust. — [codes/python/chapter_array_and_linkedlist/array.py#L1-5](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/chapter_array_and_linkedlist/array.py#L1-L5) [codes/python/chapter_array_and_linkedlist/array.py#L71-72](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/chapter_array_and_linkedlist/array.py#L71-L72) [codes/go/chapter_array_and_linkedlist/array_test.go#L16-18](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/go/chapter_array_and_linkedlist/array_test.go#L16-L18)
- Language of comments matters: codes/ and zh-hant/codes/ use Chinese comments; en/codes/ uses English translations of the same comments — match the locale's language when editing, don't mix. — [codes/python/chapter_array_and_linkedlist/array.py#L11-15](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/chapter_array_and_linkedlist/array.py#L11-L15) [en/codes/python/chapter_array_and_linkedlist/array.py](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/en/codes/python/chapter_array_and_linkedlist/array.py)
- When editing a sample, update in lockstep: the codes/<lang>/ file, the matching en/zh-hant/ja/ru copies, the === 'Lang' tab block in the corresponding docs/<chapter>/<page>.md, and any codes/pythontutor/ URL that embeds that function's source. — [codes/python/chapter_array_and_linkedlist/array.py](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/chapter_array_and_linkedlist/array.py) [en/codes/python/chapter_array_and_linkedlist/array.py](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/en/codes/python/chapter_array_and_linkedlist/array.py) [docs/chapter_array_and_linkedlist/array.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docs/chapter_array_and_linkedlist/array.md) [codes/pythontutor/chapter_array_and_linkedlist/array.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/pythontutor/chapter_array_and_linkedlist/array.md)
- Local validation per language: python → 'black codes/python && cd codes/python && python test_all.py'; go → 'go build ./... && go test ./...'; rust → add [[bin]] then 'cargo build'; typescript → 'npm run check'; javascript → 'deno run -A test_all.js'; c/cpp → cmake -B build && cmake --build && ctest. — [.github/workflows/python.yml#L41-46](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/python.yml#L41-L46) [.github/workflows/go.yml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/go.yml) [codes/typescript/package.json#L4-6](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/typescript/package.json#L4-L6) [.github/workflows/javascript.yml#L32](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/javascript.yml#L32) [.github/workflows/c.yml#L70-85](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/c.yml#L70-L85)
- Local site builds need the staged layout: mkdocs.yml points docs_dir at build/docs and custom_dir at build/overrides, so 'mkdocs serve' alone fails — replicate the Dockerfile's COPY steps (mkdir -p build && cp -r docs build/docs && cp -r overrides build/overrides) or just 'docker-compose up -d'. — [mkdocs.yml#L5-6](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/mkdocs.yml#L5-L6) [mkdocs.yml#L16-18](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/mkdocs.yml#L16-L18) [Dockerfile#L14-18](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/Dockerfile#L14-L18)
- Trap — registries must stay in sync when adding/removing files: Cargo.toml [[bin]] entries, chapter CMakeLists add_executable lines, and the mkdocs.yml nav tree all reference files by name; a renamed or deleted sample breaks builds three ways. — [codes/rust/Cargo.toml](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/rust/Cargo.toml) [codes/c/chapter_array_and_linkedlist/CMakeLists.txt](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/c/chapter_array_and_linkedlist/CMakeLists.txt) [mkdocs.yml#L161-315](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/mkdocs.yml#L161-L315)
- Trap — docs/index.html and docs/index.md coexist at docs root: the .html is the real hand-crafted landing page (hero + starfield + reviewer grid) while index.md is a 3-line stub; edit the HTML file for homepage changes. — [docs/index.html](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docs/index.html) [docs/index.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docs/index.md)
- Safe-edit boundary: single-page markdown text fixes are low-risk (path filters skip CI anyway); code edits are medium-risk (5-tree sync); structural changes (new chapter/language/locale) are high-touch — nav, manifests, workflows, Dockerfile stages, and all locale trees change together. (inferred) — [.github/workflows/python.yml#L9-16](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/workflows/python.yml#L9-L16) [Dockerfile#L20-34](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/Dockerfile#L20-L34) [mkdocs.yml#L161-315](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/mkdocs.yml#L161-L315)
- Samples must stay self-contained and side-effect-free: files import only stdlib plus the language's own modules/pkg/include utils, print their results to stdout, and must exit 0 — the harnesses treat any crash as failure and there is no mocking/stubbing infrastructure. — [codes/python/chapter_array_and_linkedlist/array.py](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/chapter_array_and_linkedlist/array.py) [codes/python/test_all.py](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/python/test_all.py) [codes/go/chapter_array_and_linkedlist/array_test.go](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/codes/go/chapter_array_and_linkedlist/array_test.go)
- Output parity is the review standard: the PR template requires code transpilation PRs to attach console output proving it matches the Python or Java reference implementation — reproduce that locally before proposing changes. — [.github/pull_request_template.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/.github/pull_request_template.md) [docs/chapter_appendix/contribution.md](https://github.com/krahets/hello-algo/blob/28c1e74c1d3594fca7cc41b78a6bd18b700c5ce9/docs/chapter_appendix/contribution.md)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
