hermes-backup/daily/2026-04-28_203212/skills/devops/arif-sites-production-sync/SKILL.md
Sync /999 credential artifacts from arif-sites source repo to live Nginx production web root — includes key consistency checks and manual deploy steps.
npx skillsauth add ariffazil/openclaw-workspace arif-sites-production-syncInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The arifOS identity/verification surface lives at https://arif-fazil.com/999/ (the "Verification Room"). Source code lives in /root/sites/arif/ (GitHub: ariffazil/arif-sites), but production is served from a SEPARATE web root via Nginx — NOT via git push or Caddy.
Production did.json key can differ from source repo did.json key.
The production /var/www/arif-fazil.com/.well-known/did.json was independently updated and contained a DIFFERENT Ed25519 Multikey (z6MkuQTtujH...) than the source repo's version (z6MkkWQz...).
If you generate .sig files using a key from the source repo but the production did.json has a different key, verification will FAIL in production even though it works locally.
Rule: Always read production files before making artifacts.
caddy)/root/compose/Caddyfile/var/www/html/arif/ (served at https://arif-fazil.com/)/root/sites/ (git remote: github.com/ariffazil/arif-sites)site-autoresearch/apr26 is the working branch — commit here, push when verifiedExternal agent deploy scripts often use wrong paths (e.g. /mnt/agents/output/,
/root/sites/arif/ as root, or Nginx paths). Always verify against git staging first.
# External agents stage work in /root/sites/ git repo
cd /root/sites && git status -s # Shows all modified/new/untracked files
ls /root/sites/arif/ # Human surface source files
ls /root/sites/apex/ # Apex surface source files
# Human surface (arif-fazil.com)
cp /root/sites/arif/<file> /var/www/html/arif/
cp -r /root/sites/arif/888 /var/www/html/arif/
cp -r /root/sites/arif/history /var/www/html/arif/
cp -r /root/sites/arif/weight /var/www/html/arif/
# Apex surface (apex.arif-fazil.com)
cp /root/sites/apex/<file> /var/www/html/apex/
# Verify served correctly
curl -s -o /dev/null -w "%{http_code}" https://arif-fazil.com/<path>
docker exec caddy caddy reload --config /etc/caddy/Caddyfile
No nginx reload — Caddy handles everything.
cd /root/sites
git add arif/888 arif/history arif/weight ...
git commit -m "feat(surface): <description>"
git push origin site-autoresearch/apr26
Before deploying, verify the key in did.json matches keys.json:
import json
did_key = json.load(open('/path/to/.well-known/did.json'))['verificationMethod'][0]['publicKeyMultibase']
keys_key = json.load(open('/path/to/999/keys.json'))['keys'][0]['public_key']
assert did_key == keys_key, f"DID key ({did_key}) != keys.json ({keys_key}) — signatures will fail!"
print("Consistent ✅")
| File | Source | Production | Permissions |
|------|--------|------------|-------------|
| did.json | /root/sites/arif/.well-known/ | /var/www/arif-fazil.com/.well-known/ | 755 |
| keys.json | /root/sites/arif/999/ | /var/www/arif-fazil.com/999/ | 644 |
| *.sig files | /root/sites/arif/999/ | /var/www/arif-fazil.com/999/ | 644 |
| verify.sh | /root/sites/arif/999/ | /var/www/arif-fazil.com/999/ | 755 |
| index.html | /root/sites/arif/999/ | /var/www/arif-fazil.com/999/ | 644 |
| Private key | /root/arifOS/secrets/did_ed25519_private.key | N/A — never public | 600 |
Current state:
keys.json had PLACEHOLDER — replaced with real Ed25519 Multikey.sig files existed — generated 4 detached Ed25519 signaturesdid.json key ≠ keys.json key — discovered via production read, fixed both/proof/geologist-credential.json links broken — fixed to /999/ pathsThe .sig files are self-signed (issuer = did:web:arif-fazil.com). To reach L4, a third-party issuer must sign the geoscientist credential. This requires Arif to initiate, not an agent.
development
Federation-wide gold (XAUUSD) trading capability. Python stack, OANDA broker, backtesting, macro signals, RSI strategy. Every organ has a role.
development
Capital claim state management — tracks claim lifecycle across WEALTH organ.
development
Archived constitutional warga placeholder retained only for audit provenance. Do not use for active work; use the live arifOS governance and constitutional skills instead.
testing
Warga (citizen) agent skills for AAA federation members. See subdirectories for specialized warga skills.