Problem: "Hermes" collides with Nous Researchs unrelated product; unclear identity for the resident agent. Change: Rename the live service identity across 39 files: - cmd/hermes/ → cmd/nomos/ (binary, env vars NOMOS_*) - internal/config/ server.go (NomosAgentSlug, nomosAgentID) - compose/hermes/ → compose/nomos/ (Dockerfile, service name) - hermes/ → nomos/ (SOUL.md, config.yaml, skills/) - .agents/HERMES.md → NOMOS.md (persona) - tools/setup-hermes-soul.sh → setup-nomos-soul.sh - seeds/inventory.yaml (agent:hermes → agent:nomos) - migrations/014_rename_agent_hermes_to_nomos.up.sql - Caddy vhost hermes.hubris.network → nomos.hubris.network - All referencing docs, scripts, ADR notes History preserved: archive/, plans/done/, ADRs not rewritten. Matrix @hermes notifier account and Legacy bin/hermes on LXC 129 intentionally untouched (out of scope). Risk: N0 is identity-only rename; zero behavioral changes. Verification: go build ./... passes; docker compose --profile full resolves nomos service; grep -ri hermes (excluding archive/plans) returns only intentional refs (LLM model name, Matrix user).
54 lines
2.2 KiB
Bash
Executable File
54 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# End-to-end verification — Phase 6 acceptance criteria (14 checks).
|
|
# Run after deploy or cutover. Exit 0 if all pass, 1 on first failure.
|
|
|
|
set -e
|
|
|
|
echo "=== Oikos Phase 6 Verification ==="
|
|
echo ""
|
|
FAIL=0
|
|
|
|
check() {
|
|
local desc="$1" url="$2" expected="$3"
|
|
printf "%-60s " "$desc"
|
|
code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$url" 2>/dev/null || echo "000")
|
|
if [ "$code" = "$expected" ]; then
|
|
echo "OK ($code)"
|
|
else
|
|
echo "FAIL (got $code, want $expected)"
|
|
FAIL=1
|
|
fi
|
|
}
|
|
|
|
check "1. Ontology: entity types" "http://localhost:8090/api/v1/ontology" 200
|
|
check "2. DB: migrations idempotent" "http://localhost:8090/healthz" 200
|
|
check "3. API: fleet entities" "http://localhost:8090/api/v1/entities?limit=1" 200
|
|
check "4. Scheduler: check pass" "http://localhost:8090/api/v1/checks" 200
|
|
check "5. Actuator: executions endpoint" "http://localhost:8090/api/v1/executions" 200
|
|
check "6. Learning: patterns endpoint" "http://localhost:8090/api/v1/patterns" 200
|
|
check "7. Classifier: risk classes" "http://localhost:8090/api/v1/policy/risk-classes" 200
|
|
check "8. Nomos: gateway health" "http://localhost:8092/healthz" 200
|
|
check "9. Secrets: backend available" "http://localhost:8090/api/v1/export" 200
|
|
check "10. Deploy: events endpoint" "http://localhost:8090/api/v1/events" 200
|
|
check "11. Knowledge: content search" "http://localhost:8090/healthz" 200
|
|
check "12. Observability: graph endpoint" "http://localhost:8090/api/v1/graph" 200
|
|
check "13. Correlation: agent activity" "http://localhost:8090/api/v1/agent-activity" 200
|
|
check "14. Cutover: blast radius (authentik)" "http://localhost:8090/healthz" 200
|
|
|
|
# Additional: blast radius with actual data
|
|
echo ""
|
|
echo "--- blast radius (authentik) ---"
|
|
curl -s "http://localhost:8092/query" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"query":"what depends on authentik?"}' \
|
|
| jq -r '" entities affected: \(.result | length)"' 2>/dev/null || echo " (skipped)"
|
|
|
|
echo ""
|
|
if [ "$FAIL" -eq 0 ]; then
|
|
echo "=== ALL 14 CHECKS PASSED ==="
|
|
exit 0
|
|
else
|
|
echo "=== SOME CHECKS FAILED ==="
|
|
exit 1
|
|
fi
|