Ctrl K
ComunidadGuías…

docs/OPERATOR_BRIEF.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# ALWAYS READ THIS FIRST

This is the mandatory entrypoint for AI agents and operators working on
Ferryman or updating an attached project.

## Current standard

- Ferryman project standard revision: **2**
- Updated: **2026-07-24**
- Portable marker: `<project>/.ferryman/ferryman/STANDARD.toml`
- Outer marker: `<project>/.ferryman/standard.toml`

Revision 2 adds crash-safe live communications, inbound private-Git
synchronization, acknowledgement delivery/retry, actor-scoped inbox/claim/ack
tokens, queue/quarantine status, safe unregister, and framework-neutral
unmanaged/single-agent/multi-agent adoption.

If either marker is missing or its `revision` is lower than 2, the attached
project needs a standard update. A higher revision means this checkout is older:
stop and update Ferryman before touching the project.

## Before any update: scan, then ask the user to review

Never begin with `git pull`, attachment apply, Syncthing registration, or a remote
change. First run the read-only directory safety scan and show the result to the
user:

```powershell
& C:\ferryman\scripts\scan-project-safety.ps1 -Workspace C:\example
```

```bash
scripts/scan-project-safety.sh --workspace /path/to/example
```

The scan reads paths, Git metadata, ignore state, and Ferryman-owned standard
markers. It checks for reparse points/symlinks, dirty portable files, suspicious
portable filenames, a misplaced token/runtime directory, and unexpected
remotes. It never reads `.ferryman/token` or other secret contents.

Stop if the scan reports `FAIL`. Do not update through an unexplained symlink,
dirty managed file, unexpected inner remote, or possible secret in the portable
repository.

## Determine whether Ferryman itself changed

From `C:\ferryman`, preserve the working tree and inspect:

```powershell
git status --short --branch
git log -1 --oneline --decorate
git fetch --prune origin
git rev-list --left-right --count HEAD...origin/main
git log --oneline HEAD..origin/main
```

`git fetch` updates remote-tracking metadata only. Do not merge or pull over a
dirty tree. The final two commands state whether local Ferryman is ahead/behind
and list exactly which upstream commits are new. Review `README.md`,
`docs/COMMUNICATIONS_READINESS.md`, and this file after an update.

## Update an attached local project

Keep the project's existing integration model. Supply the same project ID,
paths, private repository, and participant mappings used during attachment.
Always dry-run first.

PowerShell:

```powershell
& C:\ferryman\scripts\attach-project.ps1 `
  -Workspace C:\example `
  -Project example `
  -SharedRemote /wisp-bridges/example `
  -GitRemote https://github.com/estejosh/example-bridge.git `
  -IntegrationMode unmanaged `
  -UpdateStandard `
  -DryRun
```

WSL/Linux:

```bash
scripts/attach-project.sh \
  --workspace /path/to/example \
  --project example \
  --shared-remote /wisp-bridges/example \
  --git-remote https://github.com/estejosh/example-bridge.git \
  --integration-mode unmanaged \
  --update-standard \
  --dry-run
```

Review every reported action, remove only the dry-run flag, then scan again.
The update refuses dirty Ferryman-managed portable files, validates and
enriches a compatible legacy outer `bridge.toml`, updates revision markers and
portable instructions, and commits only managed portable metadata. It never
stages the outer token/runtime or changes the main project remote.

For a single- or multi-agent project, retain its existing `-Participant` or
`--participant` entries. Do not convert a project to multiple agents merely to
adopt the standard; `project-inbox` supports humans, scripts, CI, and unmanaged
projects.

## What must never be automatic

- Never inspect, print, copy, rewrite, or commit token/credential contents.
  Only the attachment helper may load an existing token directly into an
  authorization header; it must not display or persist the value elsewhere.
- Never change the main project Git remote.
- Never weaken the channel's `.stignore`; it is what stops Syncthing replicating `.git`.
- Never make a GitHub repository public.
- Never delete an old communications checkout during attachment/update.
- Never unregister communications while either outbox is non-empty.
- Never migrate a real project solely because its name appears in this file.

NATV is the first designated real migration target. Its apply step still
requires review of the current read-only scan and dry run before any filesystem,
Syncthing, hub, or GitHub mutation.