メインコンテンツへスキップ

AFS

Runtime boundaries

Separate mounts, permissions, instance state, local validation, and formal publish so inspection never rewrites a user's environment by accident.

AFS behavior is always instance-shaped. The same CLI binary against two daemons, two ARC data directories, or two mount tables will not produce the same paths.

Verified with arc 2.0.0-beta.28 against a local daemon unless noted.

Mounts

FactDetail
Mount binds a path prefix to a provider URIExample shape: /modules/project -> fs:///absolute/path
List mountsarc afs mount list / arc afs explain mount
Validate config shapearc afs mount validateConfiguration is valid on the verification host
SecretsURIs may embed credentials (tokens, vault paths). Redact before sharing

mount add is not automatically an acceptance path

On beta.28, the following sequence was observed:

  1. arc afs mount add /modules/… fs:///tmp/… printed Mounted ….
  2. arc afs mount list showed the new row.
  3. arc afs explain <path> reported TYPE unknown.
  4. ls returned empty or connection errors; read returned not found.
  5. arc afs mount remove <path> cleared the list entry.

Do not document a recipe that assumes add-then-immediately-write succeeds on every host. Prefer:

  • inspecting mounts that are already serving data, or
  • an isolation procedure your team has verified end-to-end (separate data dir / service instance), then re-check with stat/ls before mutation.

Permissions and access

LayerWhat it constrains
Provider accessModereadonly / create / append / readwrite
visibilityfull vs meta (meta denies search content)
Action severity / policyWhich exec actions may run
Caller / network gatesAuth and network-read rules on some mounts

A root that lists write among root actions still does not make every child mount writable.

Instance state

Kind of stateExamplesDoc implication
ProcessRunning daemon PID/port under the host's AFS data dirCLI often talks to this daemon
Mount tableConfigured provider URIsEnvironment-specific
Provider dataFiles under an fs:// path, vault contents, remote resourcesMutation changes real data
Blocklet / space dataUnder local DID Space treesDifferent board; do not treat as disposable

Do not treat an arbitrary long-lived daemon as disposable test infrastructure. Commands that register mounts or write provider data need a deliberate isolation story.

Local validation vs formal publish

SurfaceWhat it provesWhat it does not prove
Local arc afs … against your daemonThis instance's path/ops/mount behaviorGlobal product defaults, multi-tenant deploy
Local blocklet service / browser (site docs)Site rendering of documentationRemote DID Space hosting of your app
arc deploy / DID Space publishPublish integration when that is the taskLocal AFS contract correctness by itself
Provider conformance tests in ARC monorepoProvider interface discipline at a commitThat your host's mounts match that provider

For this AFS board, local inspection and recipes are the primary evidence. Formal publish is a separate checklist—use it only when the task is deployment.

Practical checklist

  1. Record arc --version.
  2. Prefer read-only commands until mounts and capabilities are known.
  3. Read <mount>/.meta/.capabilities when present.
  4. Mutate only on mounts you own; clean up disposable paths.
  5. Redact secrets from any shared output.
  6. When a command fails, preserve the exact error—do not invent success output.