# config-atlas — registry validation gate (ATLAS-WP-0002-T06)
# Markdown-first repo: no build/run, only validation and the explain tool.

.PHONY: validate validate-schema validate-reuse validate-whitespace validate-tests explain blast-radius

# Effective-config override path for a surface (ATLAS-WP-0004).
#   make explain SURFACE=surface.infotech.state-hub.api-config
explain:
	@python3 tools/config_explain.py $(SURFACE)

# Change blast-radius / dependency view for a surface (ATLAS-WP-0004).
#   make blast-radius SURFACE=surface.infotech.state-hub.api-config
blast-radius:
	@python3 tools/blast_radius.py $(SURFACE)

# Regenerate the config knowledge-graph edge artifact (ATLAS-WP-0004).
graph:
	@python3 tools/config_graph.py

# Query graph edges touching a surface id.
#   make graph-query SURFACE=surface.infotech.state-hub.api-config
graph-query:
	@python3 tools/config_graph.py --surface $(SURFACE)

# Discovery connectors (ATLAS-WP-0003) — emit candidates for PR review.
connect-gitconfig:
	@python3 tools/connector_gitconfig.py $(REPO)
connect-reposcoping:
	@python3 tools/connector_reposcoping.py $(REPO) $(if $(FACTS),--facts $(FACTS),)
connect-featurecontrol:
	@python3 tools/connector_featurecontrol.py $(if $(KEYS),--keys $(KEYS),)

# Stale / unowned surface report (ATLAS-WP-0003-T05).
registry-health:
	@python3 tools/registry_health.py

# Full gate run by agents and CI.
validate: validate-schema validate-graph validate-tests validate-whitespace validate-reuse
	@echo "validate: all checks passed"

# The committed graph edge artifact must match the registry.
validate-graph:
	@python3 tools/config_graph.py --check

# Resolver determinism + no-value-leak tests (ATLAS-WP-0004-T05).
validate-tests:
	@python3 -m unittest discover -s tests -q

# Surface entries validate against the JSON Schema; index is consistent.
validate-schema:
	@python3 tools/validate_registry.py

# No trailing whitespace / conflict markers in staged or working tree.
validate-whitespace:
	@git diff --check HEAD -- . && echo "validate-whitespace: OK"

# Capability registry federation validation (skipped if reuse-surface absent).
validate-reuse:
	@if command -v reuse-surface >/dev/null 2>&1; then \
		reuse-surface validate --root . ; \
	else \
		echo "validate-reuse: reuse-surface CLI not on PATH — skipped" ; \
	fi
