This repository has been archived on 2026-06-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
rta-handbook/docs/projection-operations.md
2026-06-07 17:31:08 -07:00

100 lines
2.4 KiB
Markdown

# Projection Operations
This repo is projected into AFFiNE manually for now.
Canonical Gitea repo:
```text
http://100.64.0.1:30087/virgil-admin/rta-mock-docs.git
```
Projected AFFiNE path:
```text
Agent Workspace / projected-markdown / mock-rta-docs
```
## What A Collaborator Does
```sh
cd ~/Developer/Section0/rta-mock-docs
git pull --ff-only
# edit Markdown
git add .
git commit -m "Update docs"
git push
```
## What The Projection Operator Does
The operator keeps a separate checkout so projection never depends on a
collaborator's dirty working tree.
Nice wrapper:
```sh
/Users/virgil/Developer/rta/tmp/markdown-projection-gitea/collaborator-checkout/rta-mock-docs/scripts/project-rta-mock-docs.sh
```
It pulls the projector checkout, checks it is clean, and runs the AFFiNE
projection command.
Manual equivalent:
```sh
git -C /Users/virgil/Developer/rta/tmp/markdown-projection-gitea/projector-checkout/rta-mock-docs pull --ff-only
```
Then from `home-lab-v7`:
```sh
cd /Users/virgil/Developer/Virgil-Info/home-lab-v7
nix develop --command bash -lc 'scripts/ops/sync-obsidian-affine.rb \
--name rta-mock-docs \
--source /Users/virgil/Developer/rta/tmp/markdown-projection-gitea/projector-checkout/rta-mock-docs \
--username projection-bot \
--authentik-sub rta-projection-bot \
--affine-workspace "Agent Workspace" \
--affine-workspace-id 53ea0a0b-eca7-4887-8e31-f5b2a8ab7744 \
--affine-user-id ce42f50a-5367-4466-920b-7422c4e27de0 \
--affine-namespace projected-markdown/mock-rta-docs \
--include "**/*.md" \
--apply'
```
Expected healthy result currently includes five docs:
```text
docs: 5
mark stale: 0
mode: one-way read-only AFFiNE docs
```
## Push-To-Projection Automation
Pushing to `main` can trigger sync, but it should be implemented as a small
projection worker, not as a Gitea container hook.
Preferred shape:
```text
Gitea push webhook
-> RTA projection worker endpoint
-> pull projector checkout
-> validate clean source
-> run projection
-> emit logs/receipt
```
This keeps Gitea as Git infrastructure and keeps projection policy in RTA. A
server-side Git hook inside the Gitea container would be harder to observe,
harder to recover, and too tightly coupled to the packaged app internals.
## Rule Of Thumb
If the source repo changes, pull the projector checkout and run projection.
If AFFiNE changes, treat it as a comment or sketch. Move durable edits back to
Markdown before projecting again.