Skip to content

Support

Every combination this template keeps working, the tier that guarantees it, and the measured evidence behind that tier.

Supported

Executed end to end in CI by the witness full tier: uv sync, the generated project's own pytest, basedpyright and its docs build. Measured at ~3 minutes per leaf, so only these 8 run it.

combination tier why
project_type=library/gate=recommended full recommended library path, executed end to end (~3 min): uv sync + generated pytest + basedpyright + docs
project_type=cli/gate=recommended full recommended CLI path, executed end to end (~3 min): console-script entry point and its CLI tests in the generated pytest run
project_type=web_api/gate=recommended full recommended web-API path, executed end to end (~3 min): FastAPI + SQLAlchemy + Alembic stack, tests against SQLite
project_type=data_science/gate=recommended full recommended data-science path, executed end to end (~3 min): the torch dependency sync is the slowest leaf but still inside the sample
project_type=script/gate=recommended full recommended script path, executed end to end (~3 min): flat stdlib-style workspace, pytest + basedpyright + docs run
project_type=micropython/gate=recommended full recommended MicroPython path, executed end to end (~3 min): generated type checks pass against the micropython-*-stubs
project_type=online_judge/gate=recommended/oj=competitive_coding/atcoder full AtCoder workspace, executed end to end (~3 min): the one online-judge leaf in the sample; the other judges render only
project_type=cli/gate=off:use_recommended_agent full the only branch-only artifact set in the sample: the agent gate off renders prompts/, which no recommended leaf produces

Best effort

Declared so the questionnaire's existing answers keep rendering, but never executed by CI. The witness fast tier renders and ruff-checks these leaves (272 renders at ~1.3 s each, 10-20 s in parallel); a regression that only breaks install or run is not caught there.

combination tier why
task_runner = make \| poe \| invoke \| duty best_effort measured: only lint/test/check execute (test_task_runners.py::test_lint_task_executes for all four, ::test_test_task_executes_on_make, ::test_check_task_executes_on_poe); fix/type-check/audit/license-check/docs/docs-serve are render-only on these runners, and no witness leaf selects one
package_manager = poetry best_effort install/run zero: every witness leaf renders uv and tools/batch.py never sees a poetry.lock, so tests/test_example_toolchain.py::test_template_poetry asserts the rendered pyproject only
log_library = loguru \| picologging best_effort structlog is the default and the full sample exercises only it; loguru/picologging execute solely in the network-marked test_example_toolchain cases (::test_template_log_library_loguru / ::test_template_log_library_picologging)
type_checker = ty best_effort pyrefly is the checker with deps installed (test_generated_typecheck.py runs pyrefly check); ty is render-only (tests/test_example_docs_ci.py::test_template_ty asserts the rendered pyproject)
project_type=ros2 best_effort the full tier omits it: the generated test/build recipes need a ROS distribution (/opt/ros/$ROS_DISTRO), not a bare runner; the fast tier still renders all 8 ros2 leaves
project_type=online_judge/.../oj=* except atcoder best_effort the non-AtCoder judges (leetcode / yukicoder / aoj / codeforces / kattis / other / ctf / kaggle) render and ruff-check in the fast tier but never get a venv; only atcoder is in the full sample
any leaf under an opt-in layer (include_ctf \| include_data_science \| include_scraping \| include_web_api \| include_bot) best_effort the layer leaves render and ruff-check in the fast tier; only the eight sampled leaves get the execution tier
any detailed-question branch (gate=off:use_recommended_*) best_effort only cli/gate=off:use_recommended_agent is in the sample; the remaining gate-off branches are fast-tier renders, not executions
any domain-trait variant (domain_traits selects personal-data / face-recognition / medtech) best_effort the domain traits route ethics sections and one dependency; the derived variants render and ruff-check in the fast tier, and the sections' presence is asserted by the ethics-appendix predicate there rather than by executing a project
any distribution variant (distribution answers commercial and/or oss) best_effort the distribution answer routes the EU CRA section; the derived variants render and ruff-check in the fast tier, and the art. 24 exemption (oss alone ships nothing) is asserted by the additivity check rather than by executing a project

Tier policy

Which tier each class of witness leaf is declared for. none is reserved for a future W4 exclusion: it is declared as tier: none plus a reason in tests/matrix/witnesses.json, and no leaf uses it today because every declared leaf has a recorded fast-tier run.

leaf_class tier why
project_type=*/gate=recommended (library, web_api, cli, data_science, script, micropython, online_judge) full one leaf per project family is executed end to end; ros2 is deliberately not among them (see below)
project_type=cli/gate=off:use_recommended_agent full the branch-only prompts/ artifact set is only produced with the agent gate off, so its leaf is in the sample
project_type=ros2/gate=recommended fast render + ruff only: executing a ros2 leaf needs /opt/ros/$ROS_DISTRO on the runner
project_type=*/gate=off:use_recommended_* (detailed branches) fast rendered and ruff-checked; the 3 m/leaf execution cost limits the full tier to the sample above
project_type=*/.../include=include_* fast the opt-in layers (ctf / data_science / scraping / web_api / bot) are coverable by rendering: their artifacts are file-set invariants; the bot layer's real execution is tests/test_bot_layer.py's heavy case
project_type=online_judge/.../oj=* fast AtCoder carries the execution sample; leetcode / yukicoder / aoj / codeforces / kattis / other / ctf / kaggle are render-only
project_type=*/.../domain=* (domain_traits variants) fast a domain trait adds an ethics section (and for face-recognition a dependency) and no artifact: its presence is the ethics-appendix predicate's business, which render + ruff-check already exercises. The co-occurrence leaf is what the additivity check compares against the solo ones
project_type=*/.../distribution=* (distribution variants) fast the distribution answer adds one ethics section (the EU CRA duties on commercial) and no artifact; render + ruff-check exercises it, and the additivity check pins that oss alone ships nothing (art. 24's non-commercial exemption)
(reserved) no class today none every declared witness leaf has a recorded fast-tier run; tests/matrix/witnesses.json keeps the tier:none + reason hook as the future exclusion mechanism