5f8009e844
CI / detect-changes (pull_request) Successful in 8s
CI / branch-name (pull_request) Successful in 1s
CI / guardrail-integrity (pull_request) Successful in 5s
CI / secret-scan (pull_request) Successful in 6s
CI / dep-audit (pull_request) Failing after 54s
CI / sbom-scan (pull_request) Failing after 1m3s
CI / build-sha-integrity (pull_request) Successful in 5s
CI / validate-canonical-controls (pull_request) Successful in 4s
CI / loc-budget (pull_request) Successful in 17s
CI / go-lint (pull_request) Failing after 13s
CI / python-lint (pull_request) Failing after 13s
CI / nodejs-lint (pull_request) Failing after 1m8s
CI / nodejs-build (pull_request) Successful in 3m0s
CI / test-go (pull_request) Successful in 1m0s
CI / iace-gt-coverage (pull_request) Successful in 22s
CI / test-python-backend (pull_request) Successful in 30s
CI / test-python-document-crawler (pull_request) Successful in 13s
CI / test-python-dsms-gateway (pull_request) Successful in 16s
secret-scan (gitleaks) had never run on a PR (broken checkout). A real Qdrant dev API key was hardcoded in 4 pre-existing files; removed in favour of env / gitea-secret references (scripts read QDRANT_API_KEY from os.environ; rag-ingest workflow references a gitea Actions secret). The remaining ~52 findings are doc curl examples + .env.example placeholders + a rule_key identifier, allowlisted in .gitleaks.toml (default ruleset kept). gitleaks now reports 0 findings. ACTION REQUIRED: rotate the Qdrant dev API key — the leaked value is in git history. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
29 lines
985 B
Python
29 lines
985 B
Python
"""Delete eu_2023_988 duplicate from production Qdrant."""
|
|
import httpx
|
|
import os
|
|
|
|
PROD_URL = "https://qdrant-dev.breakpilot.ai"
|
|
HEADERS = {"api-key": os.environ.get("QDRANT_API_KEY", "")}
|
|
|
|
# Delete
|
|
resp = httpx.post(
|
|
f"{PROD_URL}/collections/bp_compliance_ce/points/delete",
|
|
json={"filter": {"must": [{"key": "regulation_id", "match": {"value": "eu_2023_988"}}]}},
|
|
headers=HEADERS, timeout=60,
|
|
)
|
|
print(f"Delete status: {resp.json().get('status')}")
|
|
|
|
# Verify
|
|
resp2 = httpx.post(
|
|
f"{PROD_URL}/collections/bp_compliance_ce/points/count",
|
|
json={"filter": {"must": [{"key": "regulation_id", "match": {"value": "eu_2023_988"}}]}, "exact": True},
|
|
headers=HEADERS, timeout=15,
|
|
)
|
|
remaining = resp2.json().get("result", {}).get("count", 0)
|
|
print(f"Remaining: {remaining}")
|
|
|
|
# Total
|
|
resp3 = httpx.get(f"{PROD_URL}/collections/bp_compliance_ce", headers=HEADERS, timeout=10)
|
|
total = resp3.json().get("result", {}).get("points_count", "?")
|
|
print(f"Total points: {total}")
|