modified: .gitlab-ci.yml modified: bench/qa_questions.txt modified: bench/qa_sweep.py modified: bench/run.sh modified: docs/TICKETS.md modified: docs/_source/README.md modified: docs/_source/_ext/makefile_targets.py modified: docs/_source/api/cli.rst modified: docs/_source/api/distill.rst modified: docs/_source/api/mesh.rst modified: docs/_source/api/qa.rst modified: docs/_source/api/retrieval.rst modified: docs/_source/api/storage.rst modified: docs/_source/api/substrate.rst modified: docs/_source/concepts.rst modified: docs/_source/conf.py modified: docs/_source/cookbook.rst modified: docs/_source/index.rst modified: docs/_source/license.rst modified: docs/_source/quickstart.rst modified: docs/bench-maxing.md modified: docs/benchmarks.md modified: docs/cti-architecture.md modified: docs/diagrams/aborist-modules.dot modified: docs/diagrams/aborist-modules.svg modified: docs/diagrams/mesh-data-flow.dot modified: docs/diagrams/mesh-epoch-lifecycle.dot modified: docs/diagrams/mesh-epoch-lifecycle.svg modified: docs/diagrams/mesh-group-decisions.dot modified: docs/diagrams/mesh-group-decisions.svg modified: docs/diagrams/mesh-identity-stack.dot modified: docs/diagrams/mesh-secret-envelope.dot modified: docs/mesh.md modified: docs/qa-modes-bench.md modified: docs/seven-point-program.md modified: docs/tickets/ticket-000001-retrieval-keywords-audit-gap.md modified: docs/tickets/ticket-000002-reference-frame-polarity-contract.md modified: docs/tickets/ticket-000003-anchor-class-warrant.md modified: docs/tickets/ticket-000005-label-ladder-migration.md modified: docs/tickets/ticket-000006-bench-emergent-findings.md modified: docs/tickets/ticket-000007-query-layer-hyphen-fold.md modified: docs/tickets/ticket-000008-broad-quantifier-preflight-guard.md modified: docs/tickets/ticket-000009-quantifier-preflight-dag-binding.md modified: docs/tickets/ticket-000010-metacognition-preflight-guard.md modified: docs/tickets/ticket-000011-soft-preflight-hint-sidecar.md modified: scripts/backfill_concepts.py modified: scripts/bench_emergent.py modified: tests/crawler/test_async_web_fetcher.py modified: tests/crawler/test_bridge.py modified: tests/crawler/test_web_fetch.py modified: tests/test_bench_qa_sweep.py modified: tests/test_burn.py modified: tests/test_burn_doc.py modified: tests/test_claim_lattice.py modified: tests/test_cli_render.py modified: tests/test_compress.py modified: tests/test_concepts.py modified: tests/test_dag.py modified: tests/test_directives.py modified: tests/test_distill.py modified: tests/test_distill_recursive.py modified: tests/test_evict.py modified: tests/test_frame.py modified: tests/test_grok_source.py modified: tests/test_html_source.py modified: tests/test_ingest.py modified: tests/test_inspect.py modified: tests/test_journal.py modified: tests/test_keys.py modified: tests/test_llm_context_base.py modified: tests/test_merkle.py modified: tests/test_mesh.py modified: tests/test_mesh_aead.py modified: tests/test_mesh_chain.py modified: tests/test_mesh_cli.py modified: tests/test_mesh_cli_pull.py modified: tests/test_mesh_wire.py modified: tests/test_mesh_wire_e2e.py modified: tests/test_metacognition.py modified: tests/test_migration_audit_mode.py modified: tests/test_providence_source.py modified: tests/test_qa.py modified: tests/test_qa_quality_live.py modified: tests/test_quantifier_caps.py modified: tests/test_quantifier_classifier.py modified: tests/test_quantifier_phase4.py modified: tests/test_quantifier_reminder.py modified: tests/test_query.py modified: tests/test_reclassify.py modified: tests/test_repair.py modified: tests/test_resume.py modified: tests/test_snapshot.py modified: tests/test_soft_preflight.py modified: tests/test_tfidf.py modified: tests/test_vcs_source.py modified: tests/test_verify.py modified: tests/test_verify_json.py modified: tests/test_versioned_ingest.py modified: tests/test_warrant.py modified: tests/test_wikipedia_old.py modified: tests/test_wikipedia_xml.py modified: tests/test_wikitext.py
106 lines
3.6 KiB
YAML
106 lines
3.6 KiB
YAML
# GitLab CI for arborist.
|
||
#
|
||
# Runs the unit test suite on every push. Lives at the same shape as
|
||
# the sibling repos (`unsandbox.com`, `unfirehose-nextjs-logger`):
|
||
# `tags: build` selects the in-house runner; `before_script` warms up
|
||
# the venv; `script` runs the actual gate.
|
||
#
|
||
# What's NOT in CI:
|
||
# - `make test-live` — needs the live Hermes endpoint + populated
|
||
# shards under ~/.arborist/shards. Run by hand via `make test-live`
|
||
# when iterating on QA quality.
|
||
# - `make test-crawler` — needs `[crawler]` extras + network access
|
||
# to real HTML sites. Opt-in via `make test-crawler` locally.
|
||
# - `make bench-qa` — runs the live LLM bench, ~30-70 min wall-clock.
|
||
# Run on demand via `make bench-qa-{quick,smoke}` (10s / 30s) or
|
||
# full `make bench-qa` (full sweep).
|
||
|
||
# Pipeline DISABLED 2026-05-02. CI runners overlap with the bench
|
||
# infrastructure fox is using for QA-quality measurements; auto-
|
||
# triggered pipelines on every push contend for the same runner pool
|
||
# & risk skewing bench latencies. Re-enable by deleting this
|
||
# workflow.rules block (everything below stays valid).
|
||
workflow:
|
||
rules:
|
||
- when: never
|
||
|
||
stages:
|
||
- test
|
||
|
||
variables:
|
||
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.pip-cache"
|
||
# Pin the parallelism factor so we don't oversubscribe on shared
|
||
# runners. pytest-xdist's `-n auto` reads `os.cpu_count()` which on
|
||
# cgroup-limited containers can over-report the host's cores. Setting
|
||
# this var caps the worker count regardless. Local `make test` keeps
|
||
# using -n auto (untouched by this var).
|
||
PYTEST_XDIST_AUTO_NUM_WORKERS: "4"
|
||
|
||
# ----------------------------------------------------------------------
|
||
# Default test job — runs the full unit suite via `make test`, which
|
||
# already passes `-n auto` to pytest-xdist for parallelism. On the
|
||
# in-house runner this finishes in ~11s wall-clock (3.4× the serial
|
||
# cost) for the 641-test suite.
|
||
# ----------------------------------------------------------------------
|
||
test:
|
||
stage: test
|
||
tags:
|
||
- build
|
||
cache:
|
||
# Key on pyproject.toml so dependency churn invalidates the cache;
|
||
# otherwise reuse the venv across CI runs to avoid re-installing
|
||
# editable + dev extras on every push.
|
||
key:
|
||
files:
|
||
- pyproject.toml
|
||
paths:
|
||
- .venv/
|
||
- .pip-cache/
|
||
before_script:
|
||
- python3 --version
|
||
- test -d .venv || python3 -m venv .venv
|
||
- .venv/bin/pip install --upgrade pip wheel
|
||
- .venv/bin/pip install -e '.[dev]'
|
||
script:
|
||
# `make test` invokes `pytest -q --ignore=tests/crawler -n auto`.
|
||
# PYTEST_XDIST_AUTO_NUM_WORKERS env var caps the worker count on
|
||
# the runner; locally `-n auto` uses the full machine.
|
||
- make test
|
||
artifacts:
|
||
when: on_failure
|
||
paths:
|
||
- .pytest_cache/
|
||
expire_in: 1 week
|
||
|
||
# ----------------------------------------------------------------------
|
||
# Optional: crawler extras + crawler-tagged tests. Opt-in via the
|
||
# `crawler` keyword so it doesn't gate every push (network access +
|
||
# heavier deps).
|
||
# ----------------------------------------------------------------------
|
||
test-crawler:
|
||
stage: test
|
||
tags:
|
||
- build
|
||
rules:
|
||
# Only run when explicitly invoked or commit message asks for it.
|
||
- if: '$CI_COMMIT_MESSAGE =~ /\[ci-crawler\]/'
|
||
- when: manual
|
||
allow_failure: true
|
||
cache:
|
||
key:
|
||
files:
|
||
- pyproject.toml
|
||
paths:
|
||
- .venv/
|
||
- .pip-cache/
|
||
before_script:
|
||
- test -d .venv || python3 -m venv .venv
|
||
- .venv/bin/pip install --upgrade pip wheel
|
||
- .venv/bin/pip install -e '.[dev,crawler]'
|
||
script:
|
||
- make test-crawler
|
||
artifacts:
|
||
when: on_failure
|
||
paths:
|
||
- .pytest_cache/
|
||
expire_in: 1 week
|