aman/Makefile
Thales Maciel ed1b59240b
Harden runtime diagnostics for milestone 3
Make the milestone 3 runtime story predictable instead of treating doctor, self-check, and startup failures as loosely related surfaces.

Split doctor and self-check into distinct read-only flows, add tri-state diagnostic status with stable IDs and next steps, and reuse that wording in CLI output, service logs, and tray-triggered diagnostics. Add non-mutating config/model probes, a make runtime-check gate, and public recovery/validation docs for the X11 GA roadmap.

Validation: make runtime-check; PYTHONPATH=src python3 -m unittest discover -s tests -p 'test_*.py'; python3 -m py_compile src/*.py tests/*.py; PYTHONPATH=src python3 -m aman doctor --help; PYTHONPATH=src python3 -m aman self-check --help. Leave milestone 3 open in the roadmap until the manual X11 validation rows are filled.
2026-03-12 17:41:23 -03:00

97 lines
2.8 KiB
Makefile

PYTHON ?= python3
CONFIG := $(HOME)/.config/aman/config.json
DIST_DIR := $(CURDIR)/dist
BUILD_DIR := $(CURDIR)/build
RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
RUN_CONFIG := $(if $(RUN_ARGS),$(abspath $(firstword $(RUN_ARGS))),$(CONFIG))
.PHONY: run doctor self-check runtime-check eval-models build-heuristic-dataset sync-default-model check-default-model sync test check build package package-deb package-arch package-portable release-check install-local install-service install clean-dist clean-build clean
EVAL_DATASET ?= $(CURDIR)/benchmarks/cleanup_dataset.jsonl
EVAL_MATRIX ?= $(CURDIR)/benchmarks/model_matrix.small_first.json
EVAL_OUTPUT ?= $(CURDIR)/benchmarks/results/latest.json
EVAL_HEURISTIC_RAW ?= $(CURDIR)/benchmarks/heuristics_dataset.raw.jsonl
EVAL_HEURISTIC_DATASET ?= $(CURDIR)/benchmarks/heuristics_dataset.jsonl
EVAL_HEURISTIC_WEIGHT ?= 0.25
MODEL_ARTIFACTS ?= $(CURDIR)/benchmarks/model_artifacts.json
CONSTANTS_FILE ?= $(CURDIR)/src/constants.py
ifneq ($(filter run,$(firstword $(MAKECMDGOALS))),)
.PHONY: $(RUN_ARGS)
$(RUN_ARGS):
@:
endif
run:
uv run aman run --config $(RUN_CONFIG)
doctor:
uv run aman doctor --config $(CONFIG)
self-check:
uv run aman self-check --config $(CONFIG)
runtime-check:
$(PYTHON) -m unittest tests.test_diagnostics tests.test_aman_cli tests.test_aman tests.test_aiprocess
build-heuristic-dataset:
uv run aman build-heuristic-dataset --input $(EVAL_HEURISTIC_RAW) --output $(EVAL_HEURISTIC_DATASET)
eval-models: build-heuristic-dataset
uv run aman eval-models --dataset $(EVAL_DATASET) --matrix $(EVAL_MATRIX) --heuristic-dataset $(EVAL_HEURISTIC_DATASET) --heuristic-weight $(EVAL_HEURISTIC_WEIGHT) --output $(EVAL_OUTPUT)
sync-default-model:
uv run aman sync-default-model --report $(EVAL_OUTPUT) --artifacts $(MODEL_ARTIFACTS) --constants $(CONSTANTS_FILE)
check-default-model:
uv run aman sync-default-model --check --report $(EVAL_OUTPUT) --artifacts $(MODEL_ARTIFACTS) --constants $(CONSTANTS_FILE)
sync:
uv sync
test:
$(PYTHON) -m unittest discover -s tests -p 'test_*.py'
check:
$(PYTHON) -m py_compile src/*.py
$(MAKE) test
build:
$(PYTHON) -m build --no-isolation
package: package-deb package-arch package-portable
package-deb:
./scripts/package_deb.sh
package-arch:
./scripts/package_arch.sh
package-portable:
./scripts/package_portable.sh
release-check:
$(MAKE) check-default-model
$(PYTHON) -m py_compile src/*.py tests/*.py
$(MAKE) runtime-check
$(MAKE) test
$(MAKE) build
install-local:
$(PYTHON) -m pip install --user ".[x11]"
install-service:
mkdir -p $(HOME)/.config/systemd/user
cp systemd/aman.service $(HOME)/.config/systemd/user/aman.service
systemctl --user daemon-reload
systemctl --user enable --now aman
install: install-local install-service
clean-dist:
rm -rf $(DIST_DIR)
clean-build:
rm -rf $(BUILD_DIR)
clean: clean-build