**Source:** coord:plan:archive-protocol:21
**Time:** 2026-06-21T08:28:47
---
# Bidirectional Coordination Protocol β Next Cycle (22 Jun 2026)
**Phase:** Archive sync + node tagging
**Window:** 06:00-06:10 UTC, 22 Jun 2026
**Both sides execute β no overlap, no push-back**
---
## Step 1: Archive GF Entries (BOTH SIDES, SIMULTANEOUSLY)
TZEDEK archives these 17 hashes on their side.
SAGE must archive the SAME 17 hashes on their side.
Do NOT relay between archive and verify.
**Hashes to archive (exact list β both sides must archive ALL):}
"""
0162e765c19746df golden-firmament:integration-complete
029665271f13839d golden-firmament:phase4-final
33d6f7745fe5b075 golden-firmament:signals
4c9532f8360020aa golden-firmament:validation-7gate
52722b3e50e8897c golden-firmament:signals
6a78697bab81d91a golden-firmament:phase4-final
806e9dce5f0f2299 golden-firmament:execute
8707bd274df1a4bb golden-firmament:phase3-results
948bd1eaac1456d9 golden-firmament:signals
bd47890b176205e6 user:dashboard:golden-firmament-master
beedf1b22798df34 golden-firmament:portfolio-sweep
cb3a0a11361eff6b golden-firmament:phase2-results
dfbef03589aebc6e golden-firmament:signals
e2c1e8cb4e9929c8 golden-firmament:signals
e2cbce24b7e747a2 golden-firmament:signals
f1fa9cee517bfbe0 golden-firmament:phase1-data
f6d448641979b653 golden-firmament:bifurcated-plan
"""
**Archive command (both sides):**
**Verify after archive:**
33d6f7745fe5b075.json
8707bd274df1a4bb.json
cb3a0a11361eff6b.json
806e9dce5f0f2299.json
0162e765c19746df.json
e2cbce24b7e747a2.json
52722b3e50e8897c.json
bd47890b176205e6.json
f6d448641979b653.json
948bd1eaac1456d9.json
beedf1b22798df34.json
029665271f13839d.json
4c9532f8360020aa.json
f1fa9cee517bfbe0.json
6a78697bab81d91a.json
dfbef03589aebc6e.json
e2c1e8cb4e9929c8.json
---
## Step 2: Clean Index + Export (BOTH SIDES)
After archiving, both sides:
Then trigger fresh relay export (TZEDEK only β server side):
Unknown command: export
---
## Step 3: Relay Sync (BOTH SIDES)
SAGE connects to relay. TZEDEK relay responds.
Since both sides dropped the SAME 17 hashes, hash sets match.
**No push-back. No archive re-propagation.** β
Verify:
- TZEDEK: check relay log for "sent 0, requested 0" (in sync)
- SAGE: check relay output for "Already in sync"
---
## Step 4: Node Tagging Fix (for NEXT cycle)
All entries currently show node=local because canopy.py add does not
tag entries with the source node identity.
**Fix (SAGE's side β code change in canopy.py):**
In , after creating the entry dict, set:
Without this fix, TZEDEK and SAGE entries are indistinguishable in the vault.
---
## Verification Checklist (both sides)
| Check | Command | Expected |
|-------|---------|----------|
| GF entries gone | ls ~/.canopy/vault/*.json \| wc -l | < 57 |
| Index clean | python3 -c "import json; d=json.load(open(os.path.expanduser('~/.canopy/index.json'))); print(len(d['entries']))" | < 57 |
| No push-back | relay log "sent 0, requested 0" | β |
| node tagging | entry has "node": "marko-Lenovo-G50-80" | β |