2026-05-30 04:24:40 +00:00
|
|
|
name: Fortress Self-Archival
|
|
|
|
|
on:
|
|
|
|
|
push:
|
|
|
|
|
branches:
|
|
|
|
|
- master
|
|
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
|
archive:
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
steps:
|
|
|
|
|
- name: Check out Fortress
|
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
|
|
|
|
|
- name: Install Kubectl
|
|
|
|
|
run: |
|
|
|
|
|
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
|
|
|
|
|
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
|
|
|
|
|
|
|
|
|
|
- name: Pin to IPFS Sanctum
|
|
|
|
|
run: |
|
|
|
|
|
# Copy to IPFS pod
|
|
|
|
|
POD_NAME=$(kubectl get pods -l app=ipfs-node -o jsonpath="{.items[0].metadata.name}")
|
|
|
|
|
kubectl exec $POD_NAME -- mkdir -p /tmp/archives/knowledge-fortress
|
|
|
|
|
kubectl cp . $POD_NAME:/tmp/archives/knowledge-fortress
|
|
|
|
|
|
|
|
|
|
# Generate Hash
|
|
|
|
|
CID=$(kubectl exec $POD_NAME -- ipfs add -r -Q /tmp/archives/knowledge-fortress)
|
|
|
|
|
echo "========================================="
|
|
|
|
|
echo "Knowledge Engineering Fortress Archived!"
|
|
|
|
|
echo "CID: $CID"
|
|
|
|
|
echo "========================================="
|
|
|
|
|
|
|
|
|
|
# Clean up
|
|
|
|
|
kubectl exec $POD_NAME -- rm -rf /tmp/archives/knowledge-fortress
|
|
|
|
|
|
|
|
|
|
- name: Mirror to GitHub
|
|
|
|
|
env:
|
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
|
run: |
|
|
|
|
|
if [ -n "$GITHUB_TOKEN" ]; then
|
|
|
|
|
git remote add github https://x-access-token:${GITHUB_TOKEN}@github.com/mrhavens/${{ github.event.repository.name }}.git
|
|
|
|
|
git push --force --all github
|
|
|
|
|
git push --force --tags github
|
|
|
|
|
echo "Successfully mirrored to GitHub!"
|
|
|
|
|
else
|
|
|
|
|
echo "GITHUB_TOKEN secret not found. Skipping GitHub mirror."
|
|
|
|
|
fi
|
|
|
|
|
|
2026-05-30 04:26:49 +00:00
|
|
|
- name: Mirror to Bitbucket
|
|
|
|
|
env:
|
|
|
|
|
BITBUCKET_USER: ${{ secrets.BITBUCKET_USER }}
|
|
|
|
|
BITBUCKET_TOKEN: ${{ secrets.BITBUCKET_TOKEN }}
|
|
|
|
|
run: |
|
|
|
|
|
if [ -n "$BITBUCKET_TOKEN" ]; then
|
|
|
|
|
git remote add bitbucket https://${BITBUCKET_USER}:${BITBUCKET_TOKEN}@bitbucket.org/mrhavens/${{ github.event.repository.name }}.git
|
|
|
|
|
git push --force --all bitbucket
|
|
|
|
|
git push --force --tags bitbucket
|
|
|
|
|
echo "Successfully mirrored to Bitbucket!"
|
|
|
|
|
else
|
|
|
|
|
echo "BITBUCKET_TOKEN secret not found. Skipping Bitbucket mirror."
|
|
|
|
|
fi
|
|
|
|
|
|
2026-05-30 04:30:31 +00:00
|
|
|
- name: Mirror to GitLab
|
|
|
|
|
env:
|
|
|
|
|
GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
|
|
|
|
|
run: |
|
|
|
|
|
if [ -n "$GITLAB_TOKEN" ]; then
|
|
|
|
|
git remote add gitlab https://oauth2:${GITLAB_TOKEN}@gitlab.com/mrhavens/${{ github.event.repository.name }}.git
|
|
|
|
|
git push --force --all gitlab
|
|
|
|
|
git push --force --tags gitlab
|
|
|
|
|
echo "Successfully mirrored to GitLab!"
|
|
|
|
|
else
|
|
|
|
|
echo "GITLAB_TOKEN secret not found. Skipping GitLab mirror."
|
|
|
|
|
fi
|
|
|
|
|
|
2026-05-30 05:01:22 +00:00
|
|
|
- name: Mirror to Hugging Face
|
|
|
|
|
env:
|
|
|
|
|
HF_TOKEN: ${{ secrets.HF_TOKEN }}
|
|
|
|
|
run: |
|
|
|
|
|
if [ -n "$HF_TOKEN" ]; then
|
|
|
|
|
# Assuming a Model repository type by default on Hugging Face
|
|
|
|
|
git remote add huggingface https://mrhavens:${HF_TOKEN}@huggingface.co/mrhavens/${{ github.event.repository.name }}.git
|
|
|
|
|
git push --force --all huggingface
|
|
|
|
|
git push --force --tags huggingface
|
|
|
|
|
echo "Successfully mirrored to Hugging Face!"
|
|
|
|
|
else
|
|
|
|
|
echo "HF_TOKEN secret not found. Skipping Hugging Face mirror."
|
|
|
|
|
fi
|
|
|
|
|
|
2026-05-30 04:30:31 +00:00
|
|
|
- name: Setup Python
|
|
|
|
|
uses: actions/setup-python@v4
|
|
|
|
|
with:
|
|
|
|
|
python-version: '3.x'
|
|
|
|
|
|
2026-05-31 04:47:36 +00:00
|
|
|
- name: Steganographic Encoding (The Trojan Payload)
|
|
|
|
|
run: |
|
|
|
|
|
echo "Compressing the Sovereign Canon vault..."
|
|
|
|
|
tar --exclude='./docs/assets/carriers' --exclude='./.git' -czf CANONICAL_VAULT.tar.gz .
|
|
|
|
|
|
|
|
|
|
echo "Installing Python image processing libraries..."
|
|
|
|
|
pip install Pillow
|
|
|
|
|
|
|
|
|
|
echo "Encoding vault into primary carrier (Institute Logo)..."
|
|
|
|
|
python3 scripts/stego_encoder.py CANONICAL_VAULT.tar.gz docs/assets/carriers/institute_logo.png docs/assets/encoded_logo.png
|
|
|
|
|
|
|
|
|
|
echo "Encoding vault into secondary carrier (Infographic)..."
|
|
|
|
|
python3 scripts/stego_encoder.py CANONICAL_VAULT.tar.gz docs/assets/carriers/recursive_coherence_infographic.png docs/assets/encoded_infographic.png
|
|
|
|
|
|
|
|
|
|
echo "Moving encoded assets to MkDocs build directory..."
|
|
|
|
|
mv docs/assets/encoded_logo.png docs/assets/institute_logo.png
|
|
|
|
|
mv docs/assets/encoded_infographic.png docs/assets/recursive_coherence_infographic.png
|
|
|
|
|
|
|
|
|
|
echo "Steganographic injection complete."
|
|
|
|
|
|
2026-05-30 04:30:31 +00:00
|
|
|
- name: Build and Deploy Pages
|
|
|
|
|
run: |
|
|
|
|
|
if [ -f "mkdocs.yml" ]; then
|
|
|
|
|
pip install mkdocs mkdocs-material
|
|
|
|
|
git config --global user.name "Sovereign Automaton"
|
|
|
|
|
git config --global user.email "automaton@fieldprint.one"
|
|
|
|
|
mkdocs gh-deploy --force --remote-name origin
|
|
|
|
|
if git remote | grep -q "^github$"; then git push --force github gh-pages; fi
|
|
|
|
|
if git remote | grep -q "^gitlab$"; then git push --force gitlab gh-pages; fi
|
|
|
|
|
echo "Pages successfully built and deployed across the mesh!"
|
|
|
|
|
else
|
|
|
|
|
echo "No mkdocs.yml found. Skipping Pages deployment."
|
|
|
|
|
fi
|
|
|
|
|
|
2026-05-30 04:24:40 +00:00
|
|
|
- name: Sync to Radicle Network
|
|
|
|
|
run: |
|
|
|
|
|
RAD_POD=$(kubectl get pods -n radicle -l app=radicle -o jsonpath="{.items[0].metadata.name}")
|
|
|
|
|
kubectl exec -n radicle $RAD_POD -- mkdir -p /tmp/sync-repo
|
|
|
|
|
# We use tar to ensure .git and all hidden files are cleanly preserved
|
|
|
|
|
tar czf - . | kubectl exec -n radicle -i $RAD_POD -- tar xzf - -C /tmp/sync-repo
|
|
|
|
|
|
|
|
|
|
kubectl exec -n radicle $RAD_POD -- bash -c '
|
|
|
|
|
export RAD_HOME=/radicle/.radicle
|
|
|
|
|
export RAD_PASSPHRASE="sovereign"
|
|
|
|
|
export PATH=$PATH:/radicle/bin
|
|
|
|
|
cd /tmp/sync-repo
|
|
|
|
|
chown -R $(id -u):$(id -g) .
|
|
|
|
|
|
|
|
|
|
# Check if repository is already initialized in Radicle
|
|
|
|
|
if ! rad inspect > /dev/null 2>&1; then
|
|
|
|
|
echo "Initializing Radicle repository..."
|
|
|
|
|
rad init --name "${{ github.event.repository.name }}" --description "Sovereign Canon" --default-branch master --public --no-confirm
|
|
|
|
|
else
|
|
|
|
|
echo "Pushing updates to Radicle..."
|
|
|
|
|
git push rad master
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Clean up
|
|
|
|
|
cd /
|
|
|
|
|
rm -rf /tmp/sync-repo
|
|
|
|
|
'
|