feat(plan-01): Phase 4a — make harness location-independent (facade-free capable)
Resolve every root by marker walk-up instead of a fixed depth that only lands on the app via the .specify compat symlink, so the harness runs correctly when invoked by its real packages/casan-harness path — proven by a full gate run via that path: 64/0/0. - 95 scripts/tests: PROJECT_ROOT/ROOT "$SCRIPT_DIR/../.."-style computations -> $CASAN_APP_ROOT. - 6 leaf scripts (infra-lab, context-validate, secrets-scan, path-guard, toolchain-verify, phase2-sourcegen) now source casan-paths + use CASAN_APP_ROOT. - run-casan4: source casan-paths as a package sibling (facade-independent), PROJECT_ROOT=CASAN_APP_ROOT. - 8 Python files: project_root()/REPO_ROOT/bundle_root walk UP for the .specify marker (control-plane-settings, loop_common, model-call, context-compress, test-integrity, bundle-integrity, traceability-matrix; generate-* fixed earlier). - evidence-pack-build.py + traceability-matrix.py: domain refs -> apps/okr/domain (input/, corpus/redteam-vectors.jsonl, traceability-map.json). - ci-harness-gate.sh: export CASAN_TESTS_DIR/CASAN_TEST_MANIFEST/CASAN_BUNDLE_ROOT so the integrity Python resolves via the harness root regardless of invocation path; ROOT=CASAN_APP_ROOT. - Remove the domain compat symlinks from packages/casan-harness/security (redteam-corpus, redteam-vectors, benign-corpus) — packages now holds NO domain data. Both invocation paths pass (compat facade still present): .specify/... and packages/... Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
f2ea5590b1
commit
3adc48ed82
@@ -24,7 +24,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
LOG="$CASAN_STATE_ROOT/logs/level5/action-gate.jsonl"
|
LOG="$CASAN_STATE_ROOT/logs/level5/action-gate.jsonl"
|
||||||
mkdir -p "$(dirname "$LOG")"
|
mkdir -p "$(dirname "$LOG")"
|
||||||
# shellcheck source=casan-log.sh
|
# shellcheck source=casan-log.sh
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
LOG_DIR="$CASAN_STATE_ROOT/logs"
|
LOG_DIR="$CASAN_STATE_ROOT/logs"
|
||||||
TRACE_DIR="$LOG_DIR/trace"
|
TRACE_DIR="$LOG_DIR/trace"
|
||||||
# SEC-23 (MT-01): telemetry dir is tenant-scoped when CASAN_METRICS_DIR is set
|
# SEC-23 (MT-01): telemetry dir is tenant-scoped when CASAN_METRICS_DIR is set
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
AGENTOPS_DIR="${CASAN_AGENTOPS_DIR:-$CASAN_HARNESS_ROOT/agentops}"
|
AGENTOPS_DIR="${CASAN_AGENTOPS_DIR:-$CASAN_HARNESS_ROOT/agentops}"
|
||||||
STATE="$AGENTOPS_DIR/alert-dispatch-state.jsonl"
|
STATE="$AGENTOPS_DIR/alert-dispatch-state.jsonl"
|
||||||
DEADLETTER="$AGENTOPS_DIR/alert-deadletter.jsonl"
|
DEADLETTER="$AGENTOPS_DIR/alert-deadletter.jsonl"
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
GOV_DIR="$CASAN_GOVERNANCE_ROOT"
|
GOV_DIR="$CASAN_GOVERNANCE_ROOT"
|
||||||
REVIEWERS_FILE="${CASAN_REVIEWERS_FILE:-$GOV_DIR/reviewers.registry}"
|
REVIEWERS_FILE="${CASAN_REVIEWERS_FILE:-$GOV_DIR/reviewers.registry}"
|
||||||
REVIEWERS_DIR="${CASAN_REVIEWERS_DIR:-$GOV_DIR/reviewers}"
|
REVIEWERS_DIR="${CASAN_REVIEWERS_DIR:-$GOV_DIR/reviewers}"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
HEAD_FILE="${1:-$CASAN_STATE_ROOT/logs/audit/audit-head.txt}"
|
HEAD_FILE="${1:-$CASAN_STATE_ROOT/logs/audit/audit-head.txt}"
|
||||||
LEDGER="${2:-${CASAN_WORM_LEDGER:-$CASAN_STATE_ROOT/logs/worm/anchor-ledger.jsonl}}"
|
LEDGER="${2:-${CASAN_WORM_LEDGER:-$CASAN_STATE_ROOT/logs/worm/anchor-ledger.jsonl}}"
|
||||||
mkdir -p "$(dirname "$LEDGER")"
|
mkdir -p "$(dirname "$LEDGER")"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
SEC_DIR="$CASAN_HARNESS_ROOT/security"
|
SEC_DIR="$CASAN_HARNESS_ROOT/security"
|
||||||
CORPUS_DIR="$CASAN_DOMAIN_ROOT/corpus/benign-corpus"
|
CORPUS_DIR="$CASAN_DOMAIN_ROOT/corpus/benign-corpus"
|
||||||
VECTORS="$CASAN_DOMAIN_ROOT/corpus/redteam-vectors.jsonl"
|
VECTORS="$CASAN_DOMAIN_ROOT/corpus/redteam-vectors.jsonl"
|
||||||
|
|||||||
@@ -23,6 +23,19 @@ import glob
|
|||||||
import hashlib
|
import hashlib
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def _casan_app_root():
|
||||||
|
# Plan-01: walk UP for the `.specify` state marker (harness code lives in
|
||||||
|
# packages/casan-harness/, so a fixed __file__ depth would mis-root).
|
||||||
|
_d = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
_p = _d
|
||||||
|
while _p != os.path.dirname(_p):
|
||||||
|
if os.path.isdir(os.path.join(_p, ".specify")):
|
||||||
|
return _p
|
||||||
|
_p = os.path.dirname(_p)
|
||||||
|
return os.path.abspath(os.path.join(_d, "..", "..", ".."))
|
||||||
|
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
@@ -48,7 +61,7 @@ EXCLUDE_SUBSTR = ["/logs/", "/output/", "bundle-integrity", "test-integrity"]
|
|||||||
|
|
||||||
def bundle_root() -> str:
|
def bundle_root() -> str:
|
||||||
return os.environ.get("CASAN_BUNDLE_ROOT") or os.path.join(
|
return os.environ.get("CASAN_BUNDLE_ROOT") or os.path.join(
|
||||||
os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..")), ".specify")
|
_casan_app_root(), ".specify")
|
||||||
|
|
||||||
|
|
||||||
def manifest_path() -> str:
|
def manifest_path() -> str:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
# SEC-23 (MT-01): make state (control-plane settings, telemetry, audit) tenant-scoped
|
# SEC-23 (MT-01): make state (control-plane settings, telemetry, audit) tenant-scoped
|
||||||
# when CASAN_TENANT_ID is set, so a run for tenant A never touches tenant B's state.
|
# when CASAN_TENANT_ID is set, so a run for tenant A never touches tenant B's state.
|
||||||
# No-op when no tenant is set (baseline unchanged); invalid tenant fails closed.
|
# No-op when no tenant is set (baseline unchanged); invalid tenant fails closed.
|
||||||
|
|||||||
@@ -13,9 +13,17 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
ROOT="$CASAN_APP_ROOT"
|
||||||
TESTS="$CASAN_HARNESS_ROOT/tests"
|
TESTS="$CASAN_HARNESS_ROOT/tests"
|
||||||
|
|
||||||
|
# Plan-01: the integrity Python self-locates via __file__ and would mis-root when the
|
||||||
|
# package is invoked by its real path (no .specify facade). Export the harness-relative
|
||||||
|
# locations so test-integrity.py / bundle-integrity.py resolve correctly whether the gate
|
||||||
|
# is reached via .specify/... (compat symlink) or packages/casan-harness/... directly.
|
||||||
|
export CASAN_TESTS_DIR="$CASAN_HARNESS_ROOT/tests"
|
||||||
|
export CASAN_TEST_MANIFEST="$CASAN_HARNESS_ROOT/tests/test-integrity-manifest.json"
|
||||||
|
export CASAN_BUNDLE_ROOT="$CASAN_HARNESS_ROOT"
|
||||||
|
|
||||||
PASS=0
|
PASS=0
|
||||||
FAIL=0
|
FAIL=0
|
||||||
SKIP=0
|
SKIP=0
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
ROOT="$CASAN_APP_ROOT"
|
||||||
PROVIDER_LOG="${CASAN_PROVIDER_LOG:-$CASAN_STATE_ROOT/logs/level5/provider-usage.jsonl}"
|
PROVIDER_LOG="${CASAN_PROVIDER_LOG:-$CASAN_STATE_ROOT/logs/level5/provider-usage.jsonl}"
|
||||||
CIRCUIT_BREAKER_THRESHOLD="${CIRCUIT_BREAKER_THRESHOLD:-5}"
|
CIRCUIT_BREAKER_THRESHOLD="${CIRCUIT_BREAKER_THRESHOLD:-5}"
|
||||||
CIRCUIT_WINDOW="${CIRCUIT_WINDOW:-10}"
|
CIRCUIT_WINDOW="${CIRCUIT_WINDOW:-10}"
|
||||||
|
|||||||
@@ -19,6 +19,19 @@ model, so it cannot be used as a path to evade H4.
|
|||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def _casan_app_root():
|
||||||
|
# Plan-01: walk UP for the `.specify` state marker (harness code lives in
|
||||||
|
# packages/casan-harness/, so a fixed __file__ depth would mis-root).
|
||||||
|
_d = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
_p = _d
|
||||||
|
while _p != os.path.dirname(_p):
|
||||||
|
if os.path.isdir(os.path.join(_p, ".specify")):
|
||||||
|
return _p
|
||||||
|
_p = os.path.dirname(_p)
|
||||||
|
return os.path.abspath(os.path.join(_d, "..", "..", ".."))
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@@ -30,7 +43,7 @@ def compression_enabled() -> bool:
|
|||||||
store_file = os.environ.get(
|
store_file = os.environ.get(
|
||||||
"CASAN_CP_STORE_FILE",
|
"CASAN_CP_STORE_FILE",
|
||||||
os.path.join(
|
os.path.join(
|
||||||
os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..")),
|
_casan_app_root(),
|
||||||
".specify/level5/control-plane-settings.json",
|
".specify/level5/control-plane-settings.json",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ fi
|
|||||||
CTX_DIR="$(cd "$(dirname "$CTX")" && pwd)"
|
CTX_DIR="$(cd "$(dirname "$CTX")" && pwd)"
|
||||||
# Resolve paths relative to the repo root (3 levels up from this script).
|
# Resolve paths relative to the repo root (3 levels up from this script).
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
|
|
||||||
python - "$CTX" "$PROJECT_ROOT" "${CASAN_CONTEXT_TTL_SECONDS:-0}" <<'PY'
|
python - "$CTX" "$PROJECT_ROOT" "${CASAN_CONTEXT_TTL_SECONDS:-0}" <<'PY'
|
||||||
import os, re, sys, subprocess
|
import os, re, sys, subprocess
|
||||||
|
|||||||
@@ -51,7 +51,13 @@ GENESIS_HASH = "0" * 64
|
|||||||
|
|
||||||
|
|
||||||
def project_root() -> str:
|
def project_root() -> str:
|
||||||
return os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
d = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
p = d
|
||||||
|
while p != os.path.dirname(p):
|
||||||
|
if os.path.isdir(os.path.join(p, ".specify")):
|
||||||
|
return p
|
||||||
|
p = os.path.dirname(p)
|
||||||
|
return os.path.abspath(os.path.join(d, "..", "..", ".."))
|
||||||
|
|
||||||
|
|
||||||
def _tenant_id():
|
def _tenant_id():
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
# SEC-23 (MT-03): per-tenant cost/quota. With no explicit log arg, a tenant run
|
# SEC-23 (MT-03): per-tenant cost/quota. With no explicit log arg, a tenant run
|
||||||
# evaluates its OWN usage log so one tenant's spend never counts against another's
|
# evaluates its OWN usage log so one tenant's spend never counts against another's
|
||||||
# budget (noisy-neighbor isolation). No tenant set -> the shared default log.
|
# budget (noisy-neighbor isolation). No tenant set -> the shared default log.
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
AGENTOPS_DIR="${CASAN_AGENTOPS_DIR:-$CASAN_HARNESS_ROOT/agentops}"
|
AGENTOPS_DIR="${CASAN_AGENTOPS_DIR:-$CASAN_HARNESS_ROOT/agentops}"
|
||||||
PID_FILE="$AGENTOPS_DIR/dashboard.pid"
|
PID_FILE="$AGENTOPS_DIR/dashboard.pid"
|
||||||
PORT_FILE="$AGENTOPS_DIR/dashboard.port"
|
PORT_FILE="$AGENTOPS_DIR/dashboard.port"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
mkdir -p "$(dirname "$REPORT")" "$CASAN_STATE_ROOT/logs/level5"
|
mkdir -p "$(dirname "$REPORT")" "$CASAN_STATE_ROOT/logs/level5"
|
||||||
|
|
||||||
python - "$GOLDEN" "$CANDIDATE" "$REPORT" <<'PY'
|
python - "$GOLDEN" "$CANDIDATE" "$REPORT" <<'PY'
|
||||||
|
|||||||
@@ -85,9 +85,9 @@ def main():
|
|||||||
sys.executable,
|
sys.executable,
|
||||||
traceability_script,
|
traceability_script,
|
||||||
"--requirements",
|
"--requirements",
|
||||||
os.path.join(root, "docs/input/okr-requirement.md"),
|
os.path.join(root, "apps/okr/domain/input/okr-requirement.md"),
|
||||||
"--map",
|
"--map",
|
||||||
os.path.join(root, ".specify/traceability-map.json"),
|
os.path.join(root, "apps/okr/domain/traceability-map.json"),
|
||||||
"--out",
|
"--out",
|
||||||
traceability_out,
|
traceability_out,
|
||||||
"--gate",
|
"--gate",
|
||||||
@@ -145,7 +145,7 @@ def main():
|
|||||||
fp = json.load(open(fp_json, encoding="utf-8"))
|
fp = json.load(open(fp_json, encoding="utf-8"))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
fp = None
|
fp = None
|
||||||
vectors_path = os.path.join(root, ".specify/security/redteam-vectors.jsonl")
|
vectors_path = os.path.join(root, "apps/okr/domain/corpus/redteam-vectors.jsonl")
|
||||||
vectors = read_jsonl(vectors_path)
|
vectors = read_jsonl(vectors_path)
|
||||||
reports["redteam-result.json"] = {
|
reports["redteam-result.json"] = {
|
||||||
"run_id": run_id, "vectors_defined": len(vectors),
|
"run_id": run_id, "vectors_defined": len(vectors),
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
# shellcheck source=casan-log.sh
|
# shellcheck source=casan-log.sh
|
||||||
source "$SCRIPT_DIR/casan-log.sh"
|
source "$SCRIPT_DIR/casan-log.sh"
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
LOG_DIR="$CASAN_STATE_ROOT/logs"
|
LOG_DIR="$CASAN_STATE_ROOT/logs"
|
||||||
TRACE_DIR="$LOG_DIR/trace"
|
TRACE_DIR="$LOG_DIR/trace"
|
||||||
AUDIT_DIR="$LOG_DIR/audit"
|
AUDIT_DIR="$LOG_DIR/audit"
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
LOG_DIR="$CASAN_STATE_ROOT/logs/level5"
|
LOG_DIR="$CASAN_STATE_ROOT/logs/level5"
|
||||||
OUT="$LOG_DIR/provider-usage.jsonl"
|
OUT="$LOG_DIR/provider-usage.jsonl"
|
||||||
mkdir -p "$LOG_DIR"
|
mkdir -p "$LOG_DIR"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
SEC_DIR="$CASAN_HARNESS_ROOT/security"
|
SEC_DIR="$CASAN_HARNESS_ROOT/security"
|
||||||
LOG="$CASAN_STATE_ROOT/logs/level5/incidents.jsonl"
|
LOG="$CASAN_STATE_ROOT/logs/level5/incidents.jsonl"
|
||||||
RUNBOOK="$SEC_DIR/incident-runbook.md"
|
RUNBOOK="$SEC_DIR/incident-runbook.md"
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ set -uo pipefail
|
|||||||
# infra-lab.sh start|stop|status|verify|env
|
# infra-lab.sh start|stop|status|verify|env
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
COMPOSE="$PROJECT_ROOT/infra/local-prod/docker-compose.yml"
|
COMPOSE="$PROJECT_ROOT/infra/local-prod/docker-compose.yml"
|
||||||
CMD="${1:-status}"
|
CMD="${1:-status}"
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
KS_DIR="${CASAN_KILLSWITCH_DIR:-$CASAN_STATE_ROOT/logs/level5/kill-switch}"
|
KS_DIR="${CASAN_KILLSWITCH_DIR:-$CASAN_STATE_ROOT/logs/level5/kill-switch}"
|
||||||
mkdir -p "$KS_DIR"
|
mkdir -p "$KS_DIR"
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,13 @@ class PolicyError(Exception):
|
|||||||
|
|
||||||
|
|
||||||
def project_root() -> str:
|
def project_root() -> str:
|
||||||
return os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
d = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
p = d
|
||||||
|
while p != os.path.dirname(p):
|
||||||
|
if os.path.isdir(os.path.join(p, ".specify")):
|
||||||
|
return p
|
||||||
|
p = os.path.dirname(p)
|
||||||
|
return os.path.abspath(os.path.join(d, "..", "..", ".."))
|
||||||
|
|
||||||
|
|
||||||
def now_iso() -> str:
|
def now_iso() -> str:
|
||||||
|
|||||||
@@ -23,6 +23,19 @@ Usage:
|
|||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def _casan_app_root():
|
||||||
|
# Plan-01: walk UP for the `.specify` state marker (harness code lives in
|
||||||
|
# packages/casan-harness/, so a fixed __file__ depth would mis-root).
|
||||||
|
_d = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
_p = _d
|
||||||
|
while _p != os.path.dirname(_p):
|
||||||
|
if os.path.isdir(os.path.join(_p, ".specify")):
|
||||||
|
return _p
|
||||||
|
_p = os.path.dirname(_p)
|
||||||
|
return os.path.abspath(os.path.join(_d, "..", "..", ".."))
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
@@ -31,7 +44,7 @@ from datetime import datetime, timezone
|
|||||||
|
|
||||||
OLLAMA_HOST = "127.0.0.1:11434" # the only allowed ollama endpoint
|
OLLAMA_HOST = "127.0.0.1:11434" # the only allowed ollama endpoint
|
||||||
ALLOWED_CLOUD = {"api.anthropic.com", "api.openai.com"}
|
ALLOWED_CLOUD = {"api.anthropic.com", "api.openai.com"}
|
||||||
REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
REPO_ROOT = _casan_app_root()
|
||||||
PROVIDER_LOG = os.path.join(REPO_ROOT, ".specify/logs/level5/provider-usage.jsonl")
|
PROVIDER_LOG = os.path.join(REPO_ROOT, ".specify/logs/level5/provider-usage.jsonl")
|
||||||
|
|
||||||
# SEC-21 (ARCH-07): a 180s-per-call timeout across many pipeline steps let a hung
|
# SEC-21 (ARCH-07): a 180s-per-call timeout across many pipeline steps let a hung
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
PIN_FILE="${CASAN_MODEL_DIGEST_PIN:-$CASAN_HARNESS_ROOT/security/model-digest.pin}"
|
PIN_FILE="${CASAN_MODEL_DIGEST_PIN:-$CASAN_HARNESS_ROOT/security/model-digest.pin}"
|
||||||
mkdir -p "$(dirname "$PIN_FILE")"
|
mkdir -p "$(dirname "$PIN_FILE")"
|
||||||
CMD="${1:-verify}"
|
CMD="${1:-verify}"
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
LOG_DIR="$CASAN_STATE_ROOT/logs/level5"
|
LOG_DIR="$CASAN_STATE_ROOT/logs/level5"
|
||||||
mkdir -p "$LOG_DIR" "$(dirname "$OUTPUT_FILE")"
|
mkdir -p "$LOG_DIR" "$(dirname "$OUTPUT_FILE")"
|
||||||
FALLBACK_LOG="$LOG_DIR/fallback.jsonl"
|
FALLBACK_LOG="$LOG_DIR/fallback.jsonl"
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ set -uo pipefail
|
|||||||
# Exit: 0 inside the root, 1 outside / unresolvable.
|
# Exit: 0 inside the root, 1 outside / unresolvable.
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
|
|
||||||
TARGET="${1:-}"
|
TARGET="${1:-}"
|
||||||
ROOT="${2:-$PROJECT_ROOT}"
|
ROOT="${2:-$PROJECT_ROOT}"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
OUT="${2:-$CASAN_STATE_ROOT/logs/level5/provider-usage.jsonl}"
|
OUT="${2:-$CASAN_STATE_ROOT/logs/level5/provider-usage.jsonl}"
|
||||||
mkdir -p "$(dirname "$OUT")"
|
mkdir -p "$(dirname "$OUT")"
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ ROLLBACK_COMMAND="${3:-}"
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
LOG_DIR="$CASAN_STATE_ROOT/logs/level5"
|
LOG_DIR="$CASAN_STATE_ROOT/logs/level5"
|
||||||
BACKUP_DIR="$LOG_DIR/rollback-backups"
|
BACKUP_DIR="$LOG_DIR/rollback-backups"
|
||||||
TX_LOG="$LOG_DIR/rollback-transactions.jsonl"
|
TX_LOG="$LOG_DIR/rollback-transactions.jsonl"
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ set -uo pipefail
|
|||||||
# Exit: 0 all checks pass, 1 violation found, 2 scan error.
|
# Exit: 0 all checks pass, 1 violation found, 2 scan error.
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
|
ROOT="$CASAN_APP_ROOT"
|
||||||
PASS=0; FAIL=0; WARN=0
|
PASS=0; FAIL=0; WARN=0
|
||||||
|
|
||||||
ok() { echo " PASS $1"; PASS=$((PASS+1)); }
|
ok() { echo " PASS $1"; PASS=$((PASS+1)); }
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
LOG_DIR="$CASAN_STATE_ROOT/logs"
|
LOG_DIR="$CASAN_STATE_ROOT/logs"
|
||||||
TRACE_DIR="$LOG_DIR/trace"
|
TRACE_DIR="$LOG_DIR/trace"
|
||||||
AUDIT_DIR="$LOG_DIR/audit"
|
AUDIT_DIR="$LOG_DIR/audit"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
ROOT="$CASAN_APP_ROOT"
|
||||||
PASS=0; FAIL=0; SKIP=0
|
PASS=0; FAIL=0; SKIP=0
|
||||||
run() { # <name> <command...>
|
run() { # <name> <command...>
|
||||||
local name="$1"; shift
|
local name="$1"; shift
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
|
|
||||||
AUDIT_LOG="${1:-$CASAN_STATE_ROOT/logs/audit/audit.jsonl}"
|
AUDIT_LOG="${1:-$CASAN_STATE_ROOT/logs/audit/audit.jsonl}"
|
||||||
AUDIT_DIR="$(dirname "$AUDIT_LOG")"
|
AUDIT_DIR="$(dirname "$AUDIT_LOG")"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ set -euo pipefail
|
|||||||
MODE="${1:-}"
|
MODE="${1:-}"
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
GOV_DIR="$CASAN_GOVERNANCE_ROOT"
|
GOV_DIR="$CASAN_GOVERNANCE_ROOT"
|
||||||
BUNDLE="$GOV_DIR/policy-bundle.yaml"
|
BUNDLE="$GOV_DIR/policy-bundle.yaml"
|
||||||
MANIFEST="$GOV_DIR/policy-manifest.json"
|
MANIFEST="$GOV_DIR/policy-manifest.json"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
SEC_DIR="$CASAN_HARNESS_ROOT/security"
|
SEC_DIR="$CASAN_HARNESS_ROOT/security"
|
||||||
# shellcheck source=casan-log.sh
|
# shellcheck source=casan-log.sh
|
||||||
source "$SCRIPT_DIR/casan-log.sh"
|
source "$SCRIPT_DIR/casan-log.sh"
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
L5_DIR="$CASAN_STATE_ROOT/logs/level5"
|
L5_DIR="$CASAN_STATE_ROOT/logs/level5"
|
||||||
COST_DIR="$CASAN_STATE_ROOT/logs/cost"
|
COST_DIR="$CASAN_STATE_ROOT/logs/cost"
|
||||||
mkdir -p "$L5_DIR"
|
mkdir -p "$L5_DIR"
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
STATE_ROOT="${CASAN_TENANT_STATE_ROOT:-$CASAN_STATE_ROOT/state/tenants}"
|
STATE_ROOT="${CASAN_TENANT_STATE_ROOT:-$CASAN_STATE_ROOT/state/tenants}"
|
||||||
|
|
||||||
die() { echo "TENANT_DENIED reason=$1" >&2; exit 3; }
|
die() { echo "TENANT_DENIED reason=$1" >&2; exit 3; }
|
||||||
|
|||||||
@@ -36,7 +36,13 @@ CHECK_RE = re.compile(r'(?:(?<![\w])pass\s+")|(?:\bexpect_rc\s)')
|
|||||||
|
|
||||||
|
|
||||||
def project_root() -> str:
|
def project_root() -> str:
|
||||||
return os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
d = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
p = d
|
||||||
|
while p != os.path.dirname(p):
|
||||||
|
if os.path.isdir(os.path.join(p, ".specify")):
|
||||||
|
return p
|
||||||
|
p = os.path.dirname(p)
|
||||||
|
return os.path.abspath(os.path.join(d, "..", "..", ".."))
|
||||||
|
|
||||||
|
|
||||||
def tests_dir() -> str:
|
def tests_dir() -> str:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ fi
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
REGISTRY="$CASAN_HARNESS_ROOT/level5/tool-registry.yaml"
|
REGISTRY="$CASAN_HARNESS_ROOT/level5/tool-registry.yaml"
|
||||||
LOG_DIR="$CASAN_STATE_ROOT/logs/level5"
|
LOG_DIR="$CASAN_STATE_ROOT/logs/level5"
|
||||||
AUDIT_DIR="$CASAN_STATE_ROOT/logs/audit"
|
AUDIT_DIR="$CASAN_STATE_ROOT/logs/audit"
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ set -uo pipefail
|
|||||||
# Exit: 0 ok, 1 missing/shadowed/untrusted.
|
# Exit: 0 ok, 1 missing/shadowed/untrusted.
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
|
|
||||||
REQUIRED=("$@")
|
REQUIRED=("$@")
|
||||||
if [[ ${#REQUIRED[@]} -eq 0 ]]; then
|
if [[ ${#REQUIRED[@]} -eq 0 ]]; then
|
||||||
|
|||||||
@@ -16,7 +16,16 @@ FR_RE = re.compile(r"\|\s*(FR-\d+)\s*\|\s*([^|]+?)\s*\|")
|
|||||||
|
|
||||||
|
|
||||||
def project_root() -> str:
|
def project_root() -> str:
|
||||||
return os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
# Plan-01: harness code lives in packages/casan-harness/; a fixed __file__ parent
|
||||||
|
# depth lands on the package, not the app. Walk UP for the `.specify` state marker
|
||||||
|
# so this resolves the app root whether invoked via packages/... or the .specify facade.
|
||||||
|
d = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
p = d
|
||||||
|
while p != os.path.dirname(p):
|
||||||
|
if os.path.isdir(os.path.join(p, ".specify")):
|
||||||
|
return p
|
||||||
|
p = os.path.dirname(p)
|
||||||
|
return os.path.abspath(os.path.join(d, "..", "..", ".."))
|
||||||
|
|
||||||
|
|
||||||
def parse_requirements(path: str):
|
def parse_requirements(path: str):
|
||||||
@@ -102,8 +111,8 @@ def resolve_files(root: str, values):
|
|||||||
def main() -> int:
|
def main() -> int:
|
||||||
root = project_root()
|
root = project_root()
|
||||||
ap = argparse.ArgumentParser()
|
ap = argparse.ArgumentParser()
|
||||||
ap.add_argument("--requirements", default=os.path.join(root, "docs/input/okr-requirement.md"))
|
ap.add_argument("--requirements", default=os.path.join(root, "apps/okr/domain/input/okr-requirement.md"))
|
||||||
ap.add_argument("--map", default=os.path.join(root, ".specify/traceability-map.json"))
|
ap.add_argument("--map", default=os.path.join(root, "apps/okr/domain/traceability-map.json"))
|
||||||
ap.add_argument("--out", default=os.path.join(root, "docs/output/casan/traceability-matrix.json"))
|
ap.add_argument("--out", default=os.path.join(root, "docs/output/casan/traceability-matrix.json"))
|
||||||
ap.add_argument("--gate", action="store_true")
|
ap.add_argument("--gate", action="store_true")
|
||||||
args = ap.parse_args()
|
args = ap.parse_args()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
AUDIT_LOG="${1:-$CASAN_STATE_ROOT/logs/audit/audit.jsonl}"
|
AUDIT_LOG="${1:-$CASAN_STATE_ROOT/logs/audit/audit.jsonl}"
|
||||||
|
|
||||||
if [[ ! -f "$AUDIT_LOG" ]]; then
|
if [[ ! -f "$AUDIT_LOG" ]]; then
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
HEAD_FILE="${1:-$CASAN_STATE_ROOT/logs/audit/audit-head.txt}"
|
HEAD_FILE="${1:-$CASAN_STATE_ROOT/logs/audit/audit-head.txt}"
|
||||||
LEDGER="${2:-${CASAN_WORM_LEDGER:-$CASAN_STATE_ROOT/logs/worm/anchor-ledger.jsonl}}"
|
LEDGER="${2:-${CASAN_WORM_LEDGER:-$CASAN_STATE_ROOT/logs/worm/anchor-ledger.jsonl}}"
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
REGISTRY="$CASAN_HARNESS_ROOT/level5/project-registry.json"
|
REGISTRY="$CASAN_HARNESS_ROOT/level5/project-registry.json"
|
||||||
PACKAGE="$CASAN_HARNESS_ROOT/level5/harness-package.json"
|
PACKAGE="$CASAN_HARNESS_ROOT/level5/harness-package.json"
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ set -euo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/casan-paths.sh"
|
source "$SCRIPT_DIR/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
LOG="${1:-$CASAN_STATE_ROOT/logs/audit/tool-calls.jsonl}"
|
LOG="${1:-$CASAN_STATE_ROOT/logs/audit/tool-calls.jsonl}"
|
||||||
|
|
||||||
if [[ ! -f "$LOG" ]]; then
|
if [[ ! -f "$LOG" ]]; then
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
../../../apps/okr/domain/corpus/benign-corpus
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../apps/okr/domain/corpus/redteam-corpus.jsonl
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../apps/okr/domain/corpus/redteam-vectors.jsonl
|
|
||||||
@@ -15,7 +15,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
SCRIPTS="$CASAN_HARNESS_ROOT/scripts/bash"
|
SCRIPTS="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
SB="$S/sandbox-container.sh"
|
SB="$S/sandbox-container.sh"
|
||||||
WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
|
WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
|
WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
|
||||||
export CASAN_KILLSWITCH_DIR="$WORK/ks" # isolate the kill-switch state
|
export CASAN_KILLSWITCH_DIR="$WORK/ks" # isolate the kill-switch state
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
CP="$CASAN_HARNESS_ROOT/scripts/bash/control-plane-settings.py"
|
CP="$CASAN_HARNESS_ROOT/scripts/bash/control-plane-settings.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
GR="$CASAN_HARNESS_ROOT/scripts/bash/governance-report.py"
|
GR="$CASAN_HARNESS_ROOT/scripts/bash/governance-report.py"
|
||||||
CPS="$CASAN_HARNESS_ROOT/scripts/bash/control-plane-settings.py"
|
CPS="$CASAN_HARNESS_ROOT/scripts/bash/control-plane-settings.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
SC="$CASAN_HARNESS_ROOT/scripts/bash/security-check.sh"
|
SC="$CASAN_HARNESS_ROOT/scripts/bash/security-check.sh"
|
||||||
CORPUS="$CASAN_DOMAIN_ROOT/corpus/benign-corpus"
|
CORPUS="$CASAN_DOMAIN_ROOT/corpus/benign-corpus"
|
||||||
WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
|
WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
SC="$S/security-check.sh"
|
SC="$S/security-check.sh"
|
||||||
CORPUS="$CASAN_DOMAIN_ROOT/corpus/benign-corpus"
|
CORPUS="$CASAN_DOMAIN_ROOT/corpus/benign-corpus"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
REG="$CASAN_GOVERNANCE_ROOT/reviewers.registry"
|
REG="$CASAN_GOVERNANCE_ROOT/reviewers.registry"
|
||||||
WORK="$(mktemp -d)"; RV="$WORK/reviewers"; mkdir -p "$RV"
|
WORK="$(mktemp -d)"; RV="$WORK/reviewers"; mkdir -p "$RV"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
|
WORK="$(mktemp -d)"; trap 'rm -rf "$WORK"' EXIT
|
||||||
PASS=0; FAIL=0
|
PASS=0; FAIL=0
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
SINK_PID=""; API_PID=""
|
SINK_PID=""; API_PID=""
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
CONV="$CASAN_HARNESS_ROOT/scripts/bash/loop-convergence.py"
|
CONV="$CASAN_HARNESS_ROOT/scripts/bash/loop-convergence.py"
|
||||||
POLICY="$CASAN_HARNESS_ROOT/config/loop-policy.yaml"
|
POLICY="$CASAN_HARNESS_ROOT/config/loop-policy.yaml"
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
GATE="$CASAN_HARNESS_ROOT/scripts/bash/loop-gate.py"
|
GATE="$CASAN_HARNESS_ROOT/scripts/bash/loop-gate.py"
|
||||||
|
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
GOV="$CASAN_HARNESS_ROOT/scripts/bash/loop-governor.py"
|
GOV="$CASAN_HARNESS_ROOT/scripts/bash/loop-governor.py"
|
||||||
POLICY="$CASAN_HARNESS_ROOT/config/loop-policy.yaml"
|
POLICY="$CASAN_HARNESS_ROOT/config/loop-policy.yaml"
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BIN="$CASAN_HARNESS_ROOT/scripts/bash"
|
BIN="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
META="$BIN/loop-metaloop.py"
|
META="$BIN/loop-metaloop.py"
|
||||||
GOV="$BIN/loop-governor.py"
|
GOV="$BIN/loop-governor.py"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BIN="$CASAN_HARNESS_ROOT/scripts/bash"
|
BIN="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
RUN="$BIN/loop-run.sh"
|
RUN="$BIN/loop-run.sh"
|
||||||
TRACE="$BIN/loop-trace.py"
|
TRACE="$BIN/loop-trace.py"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
TRACE="$CASAN_HARNESS_ROOT/scripts/bash/loop-trace.py"
|
TRACE="$CASAN_HARNESS_ROOT/scripts/bash/loop-trace.py"
|
||||||
|
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
PF="$S/harness-preflight.sh"
|
PF="$S/harness-preflight.sh"
|
||||||
ROUTER="$S/model-router.sh"
|
ROUTER="$S/model-router.sh"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
|
|
||||||
PASS=0; FAIL=0; SKIP=0
|
PASS=0; FAIL=0; SKIP=0
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
RAI="$CASAN_HARNESS_ROOT/scripts/bash/rai-guard.py"
|
RAI="$CASAN_HARNESS_ROOT/scripts/bash/rai-guard.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
RBAC="$CASAN_HARNESS_ROOT/scripts/bash/rbac-check.py"
|
RBAC="$CASAN_HARNESS_ROOT/scripts/bash/rbac-check.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
RBAC="$CASAN_HARNESS_ROOT/scripts/bash/rbac-check.py"
|
RBAC="$CASAN_HARNESS_ROOT/scripts/bash/rbac-check.py"
|
||||||
|
|
||||||
PASS=0; FAIL=0
|
PASS=0; FAIL=0
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
RM="$CASAN_HARNESS_ROOT/scripts/bash/rollback-manager.sh"
|
RM="$CASAN_HARNESS_ROOT/scripts/bash/rollback-manager.sh"
|
||||||
TX_LOG="$CASAN_STATE_ROOT/logs/level5/rollback-transactions.jsonl"
|
TX_LOG="$CASAN_STATE_ROOT/logs/level5/rollback-transactions.jsonl"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
GATE="$CASAN_HARNESS_ROOT/scripts/bash/action-gate.sh"
|
GATE="$CASAN_HARNESS_ROOT/scripts/bash/action-gate.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
AUDIT="$CASAN_STATE_ROOT/logs/audit/audit.jsonl"
|
AUDIT="$CASAN_STATE_ROOT/logs/audit/audit.jsonl"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
CP="$CASAN_HARNESS_ROOT/scripts/bash/control-plane-settings.py"
|
CP="$CASAN_HARNESS_ROOT/scripts/bash/control-plane-settings.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
REG="$CASAN_GOVERNANCE_ROOT/reviewers.registry"
|
REG="$CASAN_GOVERNANCE_ROOT/reviewers.registry"
|
||||||
WORK="$(mktemp -d)"; RV="$WORK/reviewers"; mkdir -p "$RV"
|
WORK="$(mktemp -d)"; RV="$WORK/reviewers"; mkdir -p "$RV"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
PM="$CASAN_HARNESS_ROOT/scripts/bash/pii-mask.py"
|
PM="$CASAN_HARNESS_ROOT/scripts/bash/pii-mask.py"
|
||||||
RULES="$CASAN_HARNESS_ROOT/security/pii-rules.yaml"
|
RULES="$CASAN_HARNESS_ROOT/security/pii-rules.yaml"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
# security-check / drift-detect touch shared logs; restore on exit.
|
# security-check / drift-detect touch shared logs; restore on exit.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
GATE="$S/tool-registry-gate.sh"
|
GATE="$S/tool-registry-gate.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
DD="$CASAN_HARNESS_ROOT/scripts/bash/drift-detect.sh"
|
DD="$CASAN_HARNESS_ROOT/scripts/bash/drift-detect.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
FETCH="$S/provider-usage-fetch.sh"
|
FETCH="$S/provider-usage-fetch.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
MDC="$CASAN_HARNESS_ROOT/scripts/bash/model-digest-check.sh"
|
MDC="$CASAN_HARNESS_ROOT/scripts/bash/model-digest-check.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
BI="$BASH_DIR/bundle-integrity.py"
|
BI="$BASH_DIR/bundle-integrity.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
TI="$CASAN_HARNESS_ROOT/scripts/bash/test-integrity.py"
|
TI="$CASAN_HARNESS_ROOT/scripts/bash/test-integrity.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
CP="$CASAN_HARNESS_ROOT/scripts/bash/control-plane-settings.py"
|
CP="$CASAN_HARNESS_ROOT/scripts/bash/control-plane-settings.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
BASH_DIR="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
TV="$BASH_DIR/toolchain-verify.sh"
|
TV="$BASH_DIR/toolchain-verify.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
MC="$CASAN_HARNESS_ROOT/scripts/bash/model-call.py"
|
MC="$CASAN_HARNESS_ROOT/scripts/bash/model-call.py"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'git -C "$PROJECT_ROOT" checkout -- .specify/logs/level5/provider-usage.jsonl 2>/dev/null; rm -rf "$WORK"' EXIT
|
trap 'git -C "$PROJECT_ROOT" checkout -- .specify/logs/level5/provider-usage.jsonl 2>/dev/null; rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
AV="$S/approval-verify.sh"
|
AV="$S/approval-verify.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
RBAC="$S/rbac-check.py"
|
RBAC="$S/rbac-check.py"
|
||||||
HARNESS="$S/casan-harness.sh"
|
HARNESS="$S/casan-harness.sh"
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
RV="$S/tenant-registry-verify.sh"
|
RV="$S/tenant-registry-verify.sh"
|
||||||
TC="$S/tenant-crypt.sh"
|
TC="$S/tenant-crypt.sh"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
HARNESS="$S/casan-harness.sh"
|
HARNESS="$S/casan-harness.sh"
|
||||||
KS="$S/kill-switch.sh"
|
KS="$S/kill-switch.sh"
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
S="$CASAN_HARNESS_ROOT/scripts/bash"
|
||||||
CPS="$S/control-plane-settings.py"
|
CPS="$S/control-plane-settings.py"
|
||||||
TS="$S/tenant-store.sh"
|
TS="$S/tenant-store.sh"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
TS="$CASAN_HARNESS_ROOT/scripts/bash/tenant-store.sh"
|
TS="$CASAN_HARNESS_ROOT/scripts/bash/tenant-store.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
SCI="$CASAN_HARNESS_ROOT/scripts/bash/supply-chain-integrity.sh"
|
SCI="$CASAN_HARNESS_ROOT/scripts/bash/supply-chain-integrity.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
AA="$CASAN_HARNESS_ROOT/scripts/bash/artifact-attest.sh"
|
AA="$CASAN_HARNESS_ROOT/scripts/bash/artifact-attest.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
SCS="$CASAN_HARNESS_ROOT/scripts/bash/stored-content-scan.sh"
|
SCS="$CASAN_HARNESS_ROOT/scripts/bash/stored-content-scan.sh"
|
||||||
WORK="$(mktemp -d)"
|
WORK="$(mktemp -d)"
|
||||||
trap 'rm -rf "$WORK"' EXIT
|
trap 'rm -rf "$WORK"' EXIT
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ set -uo pipefail
|
|||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
source "$SCRIPT_DIR/../scripts/bash/casan-paths.sh"
|
||||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
PROJECT_ROOT="$CASAN_APP_ROOT"
|
||||||
|
|
||||||
PASS=0; FAIL=0
|
PASS=0; FAIL=0
|
||||||
pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
|
pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user