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:
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user