fix: correct PROXY_CALLERS raw key format + session 6 facts

- agent_prompts.md: store raw keys in PROXY_CALLERS (app.py hashes internally);
  pre-hashing caused double-hash → all jenkins auth failed
- context.md: session 6 facts — Phase 1 complete, PROXY_CALLERS bug fixed,
  behavior_changes table created, Jenkinsfile shell operator bug logged (id=1),
  next session: fix Jenkinsfile then launch Phase 2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Backtalk6858
2026-06-27 00:54:21 -05:00
parent cb7a9def3d
commit 0860263935
2 changed files with 26 additions and 2 deletions
+21
View File
@@ -504,5 +504,26 @@ Key finding this session: secrets-proxy /shell only accepts target=sandbox or ta
**Phase 3** (1 agent): **Phase 3** (1 agent):
11. id=155 — required_playbooks precision pass (needs id=154 from Phase 2) 11. id=155 — required_playbooks precision pass (needs id=154 from Phase 2)
### 2026-06-27 Sprint Day 11 session 1 facts (midnight)
- Phase 1 ALL COMPLETE ✅ — all 5 agents finished:
- id=163: secrets-proxy restarted (jenkins key active)
- id=164: sudo-bridge compose IP fixed (192.168.1.88→192.168.1.90)
- Hermes config: hermes-cli added to platform_toolsets.telegram, Hermes healthy
- container-health-sweep SKILL.md: created on server-01
- semantic-recall SKILL.md: created on server-01
- behavior_changes table CREATED in api_business DB
- Bug id=1 LOGGED: Jenkinsfile shell operators (&& and ||) incompatible with secrets-proxy shlex.split — all compound commands fail at secrets-proxy /shell
- PROXY_CALLERS format bug DISCOVERED + FIXED: app.py expects raw keys (not pre-hashed); P1-1 agent pre-hashed them causing double-hash → 403 on all auth; fixed by restart with raw keys
- Jenkins internal URL: http://192.168.1.90:8090 (direct — Cloudflare blocks automated API calls without service token)
- Jellyfin jellyfin verify: FAILED (two bugs — auth now fixed, shell operators still broken)
- agent_prompts.md FIXED: PROXY_CALLERS raw key format corrected in P1-1 and P2-1
- New anti-patterns added to playbook: PROXY_CALLERS pre-hashing, tier-2 wildcard shadowing, NTFY reliability
#### After /compact — next session:
1. Fix Jenkinsfile shell operator bug: split compound commands into separate secrets-proxy calls (affects all 34 Jenkins jobs using standard-redeploy.Jenkinsfile)
2. Re-run jellyfin Jenkins verify after fix
3. Launch Phase 2 (5 parallel agents): id=161, id=154, content repurposing, id=135, id=112
4. After Phase 2 id=154 completes: launch Phase 3 (id=155)
## Update instructions ## Update instructions
Update at the end of every agent-builder session. Keep agent status, key decisions, and prereq checklist current. Update at the end of every agent-builder session. Keep agent status, key decisions, and prereq checklist current.
+5 -2
View File
@@ -51,9 +51,11 @@ db = vread(tok, 'postgres/secrets-proxy')
ntfy = vread(tok, 'ntfy/secrets-proxy-bot') ntfy = vread(tok, 'ntfy/secrets-proxy-bot')
urllib.request.urlopen(urllib.request.Request(f'{VAULT_ADDR}/v1/auth/token/revoke-self', data=b'{}', headers={'X-Vault-Token': tok, 'Content-Type':'application/json'}, method='POST')) urllib.request.urlopen(urllib.request.Request(f'{VAULT_ADDR}/v1/auth/token/revoke-self', data=b'{}', headers={'X-Vault-Token': tok, 'Content-Type':'application/json'}, method='POST'))
ch = {n: hashlib.sha256(k.encode()).hexdigest() for n, k in callers.items()}
# IMPORTANT: store RAW keys — app.py hashes them internally via CALLER_KEY_TO_NAME
# Do NOT pre-hash: storing hashed keys causes double-hash, all auth fails
lines = [ lines = [
f'PROXY_CALLERS={json.dumps(ch)}', f'PROXY_CALLERS={json.dumps(callers)}',
'VAULT_PROD_ADDR=http://192.168.1.88:8200', 'VAULT_PROD_ADDR=http://192.168.1.88:8200',
f'VAULT_PROD_ROLE_ID={approle.get("role_id","")}', f'VAULT_PROD_ROLE_ID={approle.get("role_id","")}',
f'VAULT_PROD_SECRET_ID={approle.get("secret_id","")}', f'VAULT_PROD_SECRET_ID={approle.get("secret_id","")}',
@@ -480,6 +482,7 @@ Write a Python script that:
Run the same restart_proxy.py pattern from id=163 (already in your instructions above). Run the same restart_proxy.py pattern from id=163 (already in your instructions above).
The script reads proxy/callers from Vault (now includes hermes) and restarts with updated PROXY_CALLERS. The script reads proxy/callers from Vault (now includes hermes) and restarts with updated PROXY_CALLERS.
IMPORTANT: Store raw keys in PROXY_CALLERS (not pre-hashed) — app.py hashes internally. Use json.dumps(callers) not json.dumps({n: sha256(k) for n,k in callers.items()}).
Script template is identical to P1-1 — write it fresh to /tmp/restart_proxy_161.py and run it. Script template is identical to P1-1 — write it fresh to /tmp/restart_proxy_161.py and run it.
Verify: curl http://172.16.16.12:8080/health returns 200. Verify: curl http://172.16.16.12:8080/health returns 200.