arifos-deploy — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited arifos-deploy (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Ditempa Bukan Diberi. Every deployment is a thermodynamic state transition. Only deploy what is proven reversible.
These are constitutional-level constraints. No tool, command, or convenience may violate them.
arifOS-fazil.com → Hub (identity, summaries, machine discovery)
arifos.arifOS-fazil.com → Docs (full technical content)
arifOS:8080/mcp → Runtime (constitutional tool execution)Role rule: Hub never hosts full docs content. Docs never hosts hub content. Runtime is never a static site. These boundaries never swap.
Machine-readable files MUST be at root-level stable canonical paths:
/llms.txt → LLM context injection (text/plain)
/robots.txt → Crawler control
/sitemap.xml → Search indexing
/.well-known/agent.json → Agent discovery (application/json)
/.well-known/ai-plugin.json → Plugin manifestRule: These paths NEVER change. They never route through SPA. They never redirect. They always return correct Content-Type. If a hosting platform cannot serve a file at its canonical path, that platform is not suitable for this surface.
| File | Content-Type |
|---|---|
| llms.txt | text/plain; charset=utf-8 |
| agent.json | application/json |
| robots.txt | text/plain |
| sitemap.xml | application/xml |
Rule: Any deploy that breaks Content-Type for machine files is a failed deploy.
Every deploy MUST be GitHub Actions triggered by push to main. No manual scp or FTP. No exceptions.
Before any production deploy, the pipeline checks:
Every runtime deploy MUST verify /health returns 200 before marking deploy complete. If health check fails, deploy is marked failed — not degraded-ok.
Every deploy MUST produce a documented rollback path before executing. Rollback must be achievable in ≤2 minutes without data loss.
Standard rollback: Re-run previous successful workflow. GitHub Pages and GitHub Actions both support instant rollback to previous deployment.
Hub deploys when files in sites/arifOS-fazil.com-source/pages/, assets/, machine files, or deploy-hub.yml workflow change.
Docs deploys when files in arifOSmcp/sites/developer/ or deploy-sites.yml workflow change.
Runtime deploys when arifOSmcp/, docker-compose.yml, Dockerfile, or deploy-vps.yml change. Requires health check confirmation.
Do NOT deploy if:
Path filters in GitHub Actions enforce this automatically.
Purge ONLY files whose source content changed:
/llms.txt → republish when MEMORY.md, SOUL.md, or REPOS.md changes/.well-known/agent.json → republish when waw/.well-known/agent.json changesCache purge is CI-triggered, not blanket. Default GitHub Pages cache is acceptable. Cloudflare Pages cache purge only on explicit content change.
Purge-everything is operationally noisy and risks collateral damage. It is forbidden as a default step.
Transition rule: State B activates only after: (1) machine files verified working at canonical paths, (2) 5 consecutive successful deploys, (3) Cloudflare token available and configured.
| Error | Response |
|---|---|
| Deploy fails health check | Rollback immediately |
| Machine file returns wrong Content-Type | Rollback deploy |
| Hub/docs content swapped | Rollback + bug ticket |
| Runtime unreachable | Rollback runtime deploy only |
| Cache poisoning | Purge specific affected files |
| Tool | Purpose | Access |
|---|---|---|
gh CLI | GitHub Actions, repo, secrets | Authenticated via gh auth |
wrangler v4 | Cloudflare Pages, DNS, Cache Rules | Needs CLOUDFLARE_API_TOKEN env var |
docker / docker compose | VPS runtime management | SSH to VPS via deploy-vps.yml |
rsync | File transfer to VPS | Via SSH in deploy-vps.yml |
Python urllib | Direct Cloudflare REST API | Needs CF token |
| GitHub Actions | Automated CI/CD | Push-to-main trigger |
Current blockers: CLOUDFLARE_API_TOKEN not available in runtime. deploy-vps.yml secrets partially encrypted.
Every task that enters this skill must pass through a simplified run-state before any action is taken. This is the agentic embodiment of the 000→999 pipeline.
000_INIT → Identify surface, authority, and intent
111_CHECK → Classify: hub / docs / runtime / meta-deploy / query
333_REASON → Validate facts, check truth ownership, flag uncertainty
555_HEART → Assess blast radius, human impact, reversibility
777_ROUTE → Choose safe path: deploy / refuse / escalate / defer
888_HOLD → Pause if irreversible or high-risk; require human decision
999_SEAL → Emit final plan with rollback path and verification evidence| Stage | Question | Output |
|---|---|---|
| 000_INIT | What surface? Who authorized? What is the requested outcome? | Surface identified, authority confirmed |
| 111_CHECK | Is this hub, docs, runtime, or meta? Does it match the three-surface rule? | Task classified, path filters identified |
| 333_REASON | Is the claimed fact true? Who owns this truth? Is this canonical? | Fact map, uncertainty band |
| 555_HEART | What breaks if this goes wrong? Who is affected? Can we reverse it? | Blast radius score, reversibility |
| 777_ROUTE | Deploy / refuse / escalate / defer / query-only? | Action path chosen |
| 888_HOLD | Is this irreversible? Is uncertainty > Ω? Is human required? | HOLD if yes, else proceed |
| 999_SEAL | What is the exact deploy step? What is the rollback? What verifies success? | Final plan with rollback |
These are binding on every agent operating under this skill. No override, no convenience exception.
/llms.txt and /.well-known/agent.json must always be at root.When the correct action is unknown or uncertain:
Every agent operating under this skill must know when to stop, ask, or refuse. These are not optional politeness protocols — they are structural safeguards.
Stop and ask the human when ANY of these conditions are true:
| Condition | Example |
|---|---|
| Required secret/token is missing | CF token unavailable, VPS SSH key encrypted |
| Action is irreversible | DNS record deletion, production data deletion |
| Uncertainty > Ω threshold | Cannot verify Content-Type before deploy |
| Surface role violation requested | "Put full docs on the hub" |
| Non-canonical machine file path requested | "Serve llms.txt from /docs/llms.txt" |
| Blanket purge requested | "Purge everything" |
| No rollback path stated | Deploy without documented revert |
HOLD format:
888_HOLD — [Exact reason]
What is unclear: [Specific thing]
Why human judgment is needed: [Specific reason]
Required to proceed: [Specific input or token]Refuse and do not proceed when:
| Request | Reason |
|---|---|
| Ask to serve machine files at non-canonical paths | Machine discovery invariants are constitutional |
| Ask to use blanket purge | Cache purge doctrine forbids it |
| Ask to deploy without health check on runtime | Health check requirement is mandatory |
| Ask to skip rollback documentation | F1 rollback mandate is mandatory |
| Ask to swap hub/docs surface roles | Three-surface rule is constitutional |
| Ask to claim deployment success without verification | Behavioral invariant |
| Ask to publish mystical/unsubstantiated claims | Anti-mythological framing invariant |
| Ask to reveal secrets via logs or output | Security non-negotiable |
Refusal format:
REFUSE — [Verdict: VOID]
Reason: [Constitutional clause violated]
What would be required to reconsider: [Specific fix]Plan mode proposes. Execution mode acts. Switch from plan to execution ONLY when:
Never switch to execution mode based on assumption or implicit approval.
When in doubt:
Agent uncertainty
↓
Check canonical sources (MEMORY.md, deploy-matrix.md, file-inventory.md)
↓
Still uncertain → 888_HOLD with specific question
↓
Human provides answer → Document it → Continue
↓
Human refuses → Stop, do not proceedThis skill is governed by two principles that override all convenience:
Architecture first. Slogans second. If a deployment choice is architecturally cleaner but less impressive-sounding, choose the cleaner architecture. The estate must work correctly before it looks impressive. Every structural decision must be justifiable in terms of entropy, blast radius, and operational simplicity — not in terms of how it sounds.
Do not choose cleverness that obscures truth. A deployment that is simple, honest, and slightly inconvenient is worth more than an elegant, opaque, automated solution that no one can audit. If a tool or pattern makes the system harder to understand, it has violated maruah — even if it saves time.
These are not aspirational statements. They are operational filters: any proposed action that violates physics-over-narrative or maruah-over-convenience must be refused or redesigned.
docker compose up) — use vps-docker skillskill-creator skillLayer 3 — Operations:
references/deploy-matrix.md — domain → platform → CI trigger mappingreferences/file-inventory.md — machine files, paths, content typesreferences/cicd-patterns.md — workflow patterns (populate after State A proven)references/cloudflare-commands.md — exact CLI syntax (populate after CF token available)Layer 4 — Rituals:
references/verification-runbooks.md — exact checks for every surfacereferences/change-classification.md — classify every change type with required gatesreferences/888-hold-matrix.md — which actions require explicit human confirmationLayer 2 — Cognition:
references/constitutional-execution.md — task-to-stage mapping for each change typereferences/agent-behaviors.md — voice, refusal style, evidence thresholds~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.