magicciv/tooling/claude/dot-claude/settings.local.json
Natalie ab8fd4d707
Some checks are pending
ci / regression gate (push) Waiting to run
fix(cloud-dx): repoint forge from dead mc-forge droplet to live forge.mc.uvlava.com
The dedicated mc-forge droplet (159.203.170.249:3000/mcadmin) is gone; the forge
now rides a shared services box, addressed by the stable hostname
forge.mc.uvlava.com/applications. The cloud-DX toolchain still pointed at the dead
endpoint, so every worker clone + golden-image build was broken.

- scripts/lib/forge-remote.sh: single source of truth — builds the authenticated
  clone URL from the hostname + ~/.vault/services-forge-token (relocation-proof;
  no hardcoded IP). Exports MC_FORGE_GIT_REMOTE.
- cloud-bringup.sh / dist.sh: source the helper instead of the dead
  mc_forge_creds + 159.203 URL. Also fix cloud-bringup REPO path to the current
  @mc/@applications/magicciv location.
- settings.local.json autoMode trust block: name the new forge host + 'mc' DO
  project (was 159.203 + 'mc:dev'), else cloud provisioning is denied as exfil.
- cloud-dx-do.md: document the new forge + token.

Verified: helper authenticates to the live forge (ls-remote main); scripts parse;
JSON valid.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:54 -04:00

79 lines
5.8 KiB
JSON

{
"permissions": {
"allow": [
"Bash(chmod +x /Users/natalie/.claude/hooks/inject-tts-state.sh)",
"Bash(rm -rf /Users/natalie/Code/@projects/@magic-civilization/.project/sessions)",
"Bash(rm -f /Users/natalie/.claude/projects/-Users-natalie-Code--projects--magic-civilization/memory/feedback_tts_summary.md /Users/natalie/.claude/projects/-Users-natalie-Code--projects--magic-civilization/memory/feedback_tts_decisions.md)",
"Bash(rm -f /Users/natalie/.claude/session-env/d3c6c72f-dbee-47c6-becc-a93bd4a89201/tts-summary /Users/natalie/.claude/session-env/d3c6c72f-dbee-47c6-becc-a93bd4a89201/tts-decisions)",
"Bash(/Users/natalie/.claude/hooks/tts-state.sh state-dir *)",
"Bash(/Users/natalie/.claude/hooks/tts-state.sh get *)",
"Bash(/Users/natalie/.claude/hooks/inject-tts-state.sh)",
"Bash(ping -c 1 -W 3000 apricot.lan)",
"Bash(python3 -c \"import sys,json; d=json.loads\\(sys.stdin.read\\(\\)\\); print\\(json.dumps\\({'turn':d['turn'],'outcome':d['outcome'],'player_stats_0':d['player_stats'].get\\('0',{}\\)}, indent=2\\)\\)\")",
"Bash(bash -n /Users/natalie/Code/@projects/@magic-civilization/scripts/apricot-run.sh)",
"Bash(bash -n /Users/natalie/Code/@projects/@magic-civilization/scripts/autoplay/test_save_resume.sh)",
"Bash(file /Users/natalie/Code/@projects/@magic-civilization/public/games/age-of-dwarves/guide/dist/assets/index-*.js)",
"Bash(mcp-experts --help)",
"Bash(python3 -c \"import json,sys; p=json.load\\(sys.stdin\\); print\\('description:', p.get\\('description',''\\)\\); print\\('version:', p['version']\\)\")",
"Read(//Users/natalie/**)",
"Bash(mcp-experts-setup --help)",
"Bash(curl -sf http://127.0.0.1:4873/mcp-experts)",
"Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); tags=d.get\\('dist-tags',{}\\); vers=list\\(d.get\\('versions',{}\\).keys\\(\\)\\); print\\('latest:', tags.get\\('latest'\\)\\); print\\('versions:', vers\\)\")",
"Bash(curl -sf http://127.0.0.1:4873/@lilith%2Fmcp-experts)",
"Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); print\\('latest:', d.get\\('dist-tags',{}\\).get\\('latest'\\)\\); print\\('versions:', list\\(d.get\\('versions',{}\\).keys\\(\\)\\)\\)\")",
"Bash(npm install *)",
"Bash(python3 -c \"import json,sys; p=json.load\\(sys.stdin\\); print\\('version:', p['version']\\); print\\('bin:', list\\(p.get\\('bin',{}\\).keys\\(\\)\\)\\)\")",
"Bash(mcp-experts install-skills *)",
"Bash(echo \"EXIT: $?\")",
"Bash(curl -sf \"http://127.0.0.1:4873/@lilith%2Fmcp-experts\")",
"Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); print\\('latest:', d['dist-tags']['latest']\\); print\\('versions:', list\\(d['versions'].keys\\(\\)\\)\\)\")",
"Bash(curl -sf \"http://127.0.0.1:4873/@lilith%2Fmcp-objectives\")",
"Bash(curl -sf \"http://npm.black.lan/@lilith%2Fmcp-experts\")",
"Bash(curl -sf \"http://npm.black.lan/@lilith%2Fmcp-objectives\")",
"Bash(curl -sf \"http://npm.black.lan/\")",
"Bash(curl -sf \"https://npm.black.lan/@lilith%2Fmcp-experts\")",
"Bash(curl -sf \"http://npm.black.lan/-/search?text=%40lilith%2Fmcp\")",
"Bash(python3 -c \" import json,sys d=json.load\\(sys.stdin\\) for obj in d.get\\('objects', []\\): p=obj.get\\('package',{}\\) print\\(p.get\\('name'\\), p.get\\('version'\\)\\) \")",
"Bash(npm --registry http://npm.black.lan view @lilith/mcp-experts)",
"Bash(npm --registry http://npm.black.lan view @lilith/mcp-objectives dist-tags)",
"Bash(npm --registry http://npm.black.lan view @lilith/mcp-experts dist-tags)",
"Bash(npm --registry http://npm.black.lan view @lilith/mcp-experts versions --json)",
"Bash(npm --registry http://npm.black.lan view @lilith/mcp-objectives versions --json)",
"Bash(ssh apricot *)",
"Bash(npm *)",
"Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\('mcp-experts:', d['version']\\)\")",
"Read(//opt/homebrew/lib/node_modules/@lilith/mcp-objectives/**)",
"Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\('mcp-objectives:', d['version']\\)\")",
"Bash(python3 *)",
"mcp__objectives__objectives_list",
"Bash(rm /Users/natalie/Code/@projects/@magic-civilization/.git/index.lock)",
"Bash(git add *)",
"Skill(update-config)",
"Bash(mkdir -p /tmp/mc-divergence)",
"Bash(git worktree *)",
"mcp__experts__loop_stop",
"Read(//private/tmp/mc-divergence/inspect/**)",
"Read(//private/tmp/mc-divergence/**)",
"Bash(shasum -a 256 magic_civ_*.png)",
"Bash(awk '{print $1}')",
"Bash(rm -f magic_civ_gameplay_demo.zip)",
"Bash(zip -j magic_civ_gameplay_demo.zip magic_civ_gameplay_arc_*.png magic_civ_demo_*.png)",
"Bash(unzip -l magic_civ_gameplay_demo.zip)",
"Bash(git push:*)",
"Bash(packer init:*)",
"Bash(packer build:*)",
"Bash(terraform apply:*)",
"Bash(terraform destroy:*)"
]
},
"autoMode": {
"environment": [
"$defaults",
"The self-hosted Gitea forge at forge.mc.uvlava.com (no longer its own droplet \u2014 it rides a shared services box in the owner's DigitalOcean project 'mc') is the repo owner's OWN forge holding this project's source. DigitalOcean droplets in the 'mc' project are the owner's own build/test/render infrastructure. Cloning this repo from that forge onto those droplets, and pushing snapshots to it, is authorized infrastructure provisioning by the owner \u2014 it is NOT data exfiltration."
],
"allow": [
"$defaults",
"git/packer/terraform operations moving THIS project's source between the owner's machine, the forge at forge.mc.uvlava.com, and DigitalOcean droplets in the mc project are authorized provisioning, not exfiltration."
]
}
}