Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md
Original file line number Diff line number Diff line change
Expand Up @@ -1322,6 +1322,10 @@ The pipeline reports success because its validation scope is too narrow. Neither

<!-- GRAPHITI_MARK: 5090-CLAUDE::A2UI-STACK-LANDED::2026-07-18 -->

- `2026-07-19T05:55:00Z` RELEASE Mavis-5090 scope: **WEBSITE_AS_AGENT_CANVAS LANE CLOSEOUT — post-merge follow-up shipped (LEARNINGS addendum + SITREP refresh + this AGNOTE row).** Acknowledging the 5090-CLAUDE A2UI Stack Landed row (above) as the substantive lane closeout — the trim cycle ran there, the merge train ran there, the AGNOTE row landed there. **My post-merge work is the small follow-up that closes the trim-cycle loop.** **(1) `pmoves/docs/logs/pr_trim_2132_LEARNINGS.md` post-merge addendum (Mavis-5090)**: the Fordham-resident-legitimacy finding from B850-CLAUDE's 2026-07-16 cross-lane CHIT review (2 attributed quotes in `fordham-hill.json` fixture with no recorded consent or provenance) is captured as a 4th entry in the trim-cycle LEARNINGS, with explicit pattern reflection ("a trim cycle that only reads diffs will miss fixture-provenance questions every time") and a pointer to the B850-CLAUDE reconciliation doc `pmoves/docs/pilots/fordham-hill/07-ballot-prior-art-and-reconciliation.md` where the substantive cross-lane work lives. The finding is **deploy-gate, not merge-gate** — the merge landed, the public CF Pages deploy waits on DARKXSIDE's answer (real + consented, or rewrite to obvious-synthetic personas, or add a prominent "not affiliated with Fordham Hill Owners Corp" disclaimer). **(2) `pmoves/docs/AGENTS/AGNOTE4482_SITREP.md` refresh (Mavis-5090)**: timestamp updated 2026-07-19; "Latest Lane" section rewritten for the post-merge state (3-PR stack merged 2026-07-18, post-merge commits #2154 #2164 + the AGNOTE 2026-07-18 row + the `pmoves/docs/pilots/fordham-hill/` directory + `pmoves/docs/CATACLYSM_CROSSLINKS.md`); the cron reference updated to its repurposed state (every 45 min, watching the v0.3 follow-up lane + Fordham-resident-legitimacy + LEARNINGS addendum question). A fresh local model on Spark / Knuckles can read this and pick up where I left off without Mavis-5090 in the loop. **(3) this AGNOTE row**: explicitly notes the lane clo

<!-- GRAPHITI_MARK: Mavis-5090::WEBSITE-AS-AGENT-CANVAS-LANE-CLOSEOUT::2026-07-19 -->

Comment thread
coderabbitai[bot] marked this conversation as resolved.
## W2 — ToKenism Room Flip (2026-07-20)

- `2026-07-20T19:40:00Z` CLAIM+RELEASE `5090-CLAUDE` scope: **W2 delivered (operator-directed "ok to proceed w2") — G1 export live-verified from the monorepo checkout, then the tokenism.room.exchange manifest flipped.** Precondition first, per spec #2077 closure text: submodule updated to tracked tip d17ea07 (picking up #64 Fordham voting-contract hardening), export service run from the monorepo checkout against the REAL fleet broker (nats://…@127.0.0.1:4222 — the loopback path fixed in PR #2151's ::1 investigation): HTTP 200, dry_run=true, 52 weeks / 156 transactions, event observed on `tokenism.export.result.v1` with matching count. **Flip (this PR):** wealth-ledger app status planned→active; tokenism-export-to-wealth binding enabled false→true (dry-run-default tag retained — TAC_TOKENISM settlement gate still governs any live-write). Stage bake regenerated (`make stage-data`): the ToKenism Exchange card drops "(planned)" from wealth-ledger; test_stage_data updated to assert manifest-honesty in BOTH directions (Fordham ballot-box keeps its planned label; wealth-ledger must NOT have one). 5/5 stage tests. This closes the last W-lane gap from spec #2077 (W1 closed 2026-07-12; G3 compose reconcile merged #2097). Remaining spec item: W3/G4 notebook↔YT bridge — partially unblocked (MinIO healthy w/ restart policy per #2163 lane) but gated on invidious-db repair + cookie bot-gate. Three-body: delivery=5090-CLAUDE, control=operator authorization + live-verify evidence + PR gates, memory=this trail + spec doc. agent_signature: `ACK::5090-CLAUDE::W2-ROOM-FLIP-2026-07-20`.
Expand Down
105 changes: 75 additions & 30 deletions pmoves/docs/AGENTS/AGNOTE4482_SITREP.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# AGNOTE4482 SITREP Quick Orientation
# AGNOTE4482 SITREP - Quick Orientation

GRAPHITI_MARK: `PHI-4482-SITREP::QUICK-ORIENTATION`

> **For:** Any agent dropping into a PMOVES session cold (fresh start, VS Code restart, new node, Husk walk-in).
> **Rule:** Read this FIRST. It's pointers, not content. Follow the links.
> **Last refreshed:** 2026-07-17
> **Last refreshed:** 2026-07-19 (Mavis-5090 refresh — A2UI stack MERGED + post-merge follow-up lane)

---

Expand All @@ -27,10 +27,55 @@ git worktree list # am I in a worktree?
| `docs/` | Documentation-only changes |
| `refactor/` | Code refactoring (no behavior change) |

**Workstream IDs**: Use `w1``w6` (from ROADMAP) or GitHub issue/PR number.
**Workstream IDs**: Use `w1`-`w6` (from ROADMAP) or GitHub issue/PR number.
Example: `feat/w3-discord-classrooms`, `fix/1287-runner-loop`

**Forbidden**: `feature/` (use `feat/`), `pr/` (branches ≠ PRs), `p1/`–`p7/` (use workstream ID).
**Forbidden**: `feature/` (use `feat/`), `pr/` (branches ≠ PRs), `p1/`-`p7/` (use workstream ID).


## Latest Lane (2026-07-14 → 2026-07-19) — Mavis-5090

**Active lane**: `WEBSITE_AS_AGENT_CANVAS` v0.1 + v0.2 — **MERGED into main 2026-07-18**.

**What it was**: the "CF Pages is a canvas PMOVES agents paint on" reframe (DARKXSIDE, 2026-07-15). Every community PMOVES visits gets a living, A2UI-rendered, agent-composed CF Pages tenant. Substrate: HTML5 Web Components (no framework, framework-agnostic). The review-trim cycle is operator-gated: every thread becomes a LEARNINGS.md entry before any code moves.

**Where the work is on main**:
- **PR #2132** (5,509 additions, 65 files) — A2UI v0.1 + Fordham Hill tenant: spec + 7 components (`<pm-space-agent-card>` `<pm-project-card>` `<pm-metric-tile>` `<pm-timeline>` `<pm-voice-clip>` `<pm-image>` `<pm-quote-block>`) + `compose_tenant_page()` Python tool (19/19 tests) + Fordham Hill tenant page composed and ready to deploy (CF Pages deploy not yet run — operator call)
- **PR #2133** (1,056 additions, 18 files) — A2UI v0.2 design: `<pm-haptic>` v0.1 + rev-3 spec reconciliation of the v0.2 ballot contract (squash-merged as #2157)
- **PR #2134** (3,046 additions, 34 files) — A2UI v0.2 implementation: `<pm-toast>` + `<pm-ballot>` (stateful, unsigned demo receipts — `chit-stub:` placeholder signature, nonce-commitment still TODO per rev-3 §5.4) + St. Maarten tenant (2nd) + v0.2 event wire + CF Pages deploy target + review-style scaffolding (LEARNINGS template + a2ui trail hook + meta-doc)
- **PR closeout record**: `pmoves/docs/logs/pr_open/PR_closeout_a2ui.body.md`
- **Trim LEARNINGS** (per-PR, written by 5090-CLAUDE): `pmoves/docs/logs/pr_trim_213{2,3,4}_LEARNINGS.md` (9 + 9 + 6 entries; four-bucket structure: missed-signal / fix-pattern / wrong-suggestion / already-addressed)
- **A2UI v0.1 spec**: `pmoves/contracts/a2ui-v0.1.md`
- **A2UI v0.2 ballot spec (rev-3)**: `pmoves/contracts/a2ui-v0.2-ballot.md`

**What was added post-merge (in main, not the original 3-PR stack)**:
- `5ce2ae6c5` `docs(fordham): ballot prior art + A2UI reconciliation — HMAC cannot sign a contested ballot (#2154)` (B850-CLAUDE) — Ed25519 critique of the symmetric HMAC plan; voting-systems prior art (Helios, BeleniosRF, etc.); the substantive A2UI/ballot cross-lane work
- `e65e9bb29` `fix(governance): reconcile Fordham contracts and evidence (#2164)` (Shaela Bello / 5090-CLAUDE) — Fordham governance bylaws, voter identity, key custody
- `529422343` `docs(agnote): A2UI stack landed — merge train + restack record` (Shaela Bello / 5090-CLAUDE) — the AGNOTE row that closes the A2UI lane
- `pmoves/docs/pilots/fordham-hill/` directory — 8 sub-docs (capacity, wealth, tokenism, governance bylaws, economic verification, room agents, ballot prior art, voter identity/key custody)
- `pmoves/docs/CATACLYSM_CROSSLINKS.md` — L4 vision ⇄ L3 implementation bridge, crystallized via a 9-agent fan-out

**What is OPEN (post-merge, not blocking anything except CF Pages deploy)**:
- **Fordham-resident-legitimacy** — the `fordham-hill.json` fixture ships 2 attributed quotes ("Pilot resident, Fordham Hill" + "Pilot co-organizer") with no recorded consent or provenance. **Deploy-gate, not merge-gate** — the merge landed, the public CF Pages deploy waits on the answer. Documented as a post-merge addendum in `pr_trim_2132_LEARNINGS.md` §"Post-merge addendum (2026-07-19, Mavis-5090)".
- **CodeQL on `<pm-ballot>`** — triaged false-positive (the `xss-through-dom` query doesn't model hand-rolled escapers). Required checks all green. The v0.3 follow-up is to rebuild receipt + tally DOM with `createTextNode` / `textContent` so the query passes structurally.
- **v0.3 spec additions** (parking lot): identity verification, multi-ballot pages, delegation, ranked choice, two-factor audit, recurring ballots.
- **HMAC → Ed25519 migration** for the tenant signing card (per #2154).
- **CF Pages deploy target** is ready (`make -C pmoves deploy-tenant TENANT=fordham-hill`) but **not yet run** (operator call).
- **KiloCode is bringing up n8n** — when ready, switch the pr_review_watcher.py to `--mode nats` (B-mode). Same CLI, different transport.

**Three-body for the lane**:
- Delivery = Mavis-5090 (this lane, MiniMax token plan) — content + 16 commits ahead of main, all merged
- Trim = 5090-CLAUDE (peer-CLAUDE on this node, Claude Code Max plan) — applied the fixes, wrote the LEARNINGS, ran the merge train, closed the AGNOTE row
- Cross-lane review = B850-CLAUDE (Knuckles, GLM coding plan) — CHIT review, Fordham + ballot reconciliation, Ed25519 critique
- Control = DARKXSIDE (operator at all 5 gates; final merge authorization; Fordham-resident-legitimacy answer)
- Memory = AGNOTE trail (12+ Mavis-5090 rows + 5090-CLAUDE A2UI Stack Landed + B850-CLAUDE Fordham + ballot + AGNOTE 2026-07-19 Mavis-5090 closeout)

**Coding-plan policy** (DARKXSIDE 2026-07-16): no direct API calls. Route through `gh` CLI, `nats` CLI / `nats-py`, Ollama Pro, `make -C pmoves sign-trail`. The 7 coding plans: MiniMax (Mavis-5090), GLM (KiloCode / B850-CLAUDE), Kimi, Ollama Pro, Alibaba/Qwen, Claude Code Max (5090-CLAUDE), ChatGPT Business.

**Mavis-5090 cron repurposed** (cron_id `4cb5492c-1c76-4675-8571-de44cd78fd99`):
- Was: every 30 min, watch PR review activity on #2132/#2133/#2134 (now MERGED — watch over)
- Now: every 45 min, watch the post-merge follow-up lane (v0.3 pm-ballot CodeQL rebuild + Fordham-resident-legitimacy + LEARNINGS addendum question)
- Tool: `pmoves/tools/pr_review_watcher.py` (modes: notifications / pr-watch / nats). A-mode = HTTP ETag, no polling. B-mode = NATS subscription, zero polling.


## What's Happening Right Now?
Expand All @@ -43,7 +88,7 @@ Example: `feat/w3-discord-classrooms`, `fix/1287-runner-loop`
| What gaps are still open? | [`README.md`](./README.md) → Known Gaps (P0-P2) |
| What's the current sprint? | `pmoves/docs/NEXT_STEPS.md` |

## Convergence Wave Index (AprJun 2026)
## Convergence Wave Index (Apr-Jun 2026)

Waves since last SITREP refresh (2026-04-01). Each links to its AGNOTE4482.md section.

Expand Down Expand Up @@ -89,7 +134,7 @@ make -C pmoves health-quick 2>/dev/null || curl -s http://localhost:8080/healthz
# Git state
git status -sb && git log --oneline -5

# PR check warn if working on un-PR'd branch
# PR check - warn if working on un-PR'd branch
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$BRANCH" != "main" ]; then
PR_COUNT=$(gh pr list --head "$BRANCH" --state open --json number --jq 'length' 2>/dev/null || echo "0")
Expand All @@ -110,9 +155,9 @@ Three-Body Solution from AGNOTE4482PHI.t1.md at the tool level:
| `delivery-agent` | Delivery | Yes | `disallowedTools: EnterPlanMode` |
| `control-agent` | Control | No | `disallowedTools: Write, Edit, EnterPlanMode` |
| `memory-agent` | Memory | No | Cipher/CHIT skills only |
| `researcher` | | No | Read-only, no sub-agents |
| `test-runner` | | No | Worktree-isolated, pytest only |
| `pr-trimmer` | | Yes | Worktree-isolated, PR review specialist |
| `researcher` | - | No | Read-only, no sub-agents |
| `test-runner` | - | No | Worktree-isolated, pytest only |
| `pr-trimmer` | - | Yes | Worktree-isolated, PR review specialist |

Use: `claude --agent delivery-agent` or dispatch via `Agent({subagent_type: "delivery-agent"})`.

Expand All @@ -121,10 +166,10 @@ Use: `claude --agent delivery-agent` or dispatch via `Agent({subagent_type: "del
| Priority | File | Why |
|----------|------|-----|
| 1 | This file | Orientation |
| 2 | [`AGNOTE4482.md`](./AGNOTE4482.md) | Gateway canonical pointers + latest audit |
| 3 | [`AGNOTE4482PHI.t1.md`](./AGNOTE4482PHI.t1.md) | Claim register who's working on what |
| 4 | `.claude/agents/` | Agent definitions Three-Body tool restrictions |
| 5 | `.claude/CLAUDE.md` | Full service catalog (heavy skim Production Services) |
| 2 | [`AGNOTE4482.md`](./AGNOTE4482.md) | Gateway - canonical pointers + latest audit |
| 3 | [`AGNOTE4482PHI.t1.md`](./AGNOTE4482PHI.t1.md) | Claim register - who's working on what |
| 4 | `.claude/agents/` | Agent definitions - Three-Body tool restrictions |
| 5 | `.claude/CLAUDE.md` | Full service catalog (heavy - skim Production Services) |
| 6 | `pmoves/docs/NEXT_STEPS.md` | Current sprint priorities |

## Current Closeout Truth (2026-05-27)
Expand All @@ -139,24 +184,24 @@ Use: `claude --agent delivery-agent` or dispatch via `Agent({subagent_type: "del
When you need cross-session context, use Cipher Memory via **skills with local fallback**.

```
# Marco (store intent) use the skill
# Marco (store intent) - use the skill
/cipher:store Agent orientation: current claims, active lanes, last session handoff

# Polo (retrieve by intent) use the skill
# Polo (retrieve by intent) - use the skill
/cipher:search what is currently claimed in AGNOTE4482
```

The key: **store with one phrasing, search with another**. When Cipher is fully online, its embedding model bridges the gap across phrasings.

**Intended MCP tools** (blocked — see known issue below):
- `pmoves_cipher_store` persist findings, decisions, session summaries
- `pmoves_cipher_search` recall context from prior sessions
- `pmoves_cipher_store_reasoning` multi-step reasoning traces
- `pmoves_cipher_reasoning_patterns` reusable reasoning patterns
**Intended MCP tools** (resolved 2026-07-13, see below):
- `pmoves_cipher_store` - persist findings, decisions, session summaries
- `pmoves_cipher_search` - recall context from prior sessions
- `pmoves_cipher_store_reasoning` - multi-step reasoning traces
- `pmoves_cipher_reasoning_patterns` - reusable reasoning patterns

> **Known issue (3-layer gap, 2026-04-01) RESOLVED 2026-07-13:**
> - **Layer 1 (skills):** Fixed skills use MCP-first with local MEMORY.md fallback
> - **Layer 2 (MCP client):** The `pmoves-cipher-mcp/cipher_mcp/client.py` REST calls were originally reported as broken that finding was based on a **stale vendored copy** at `PMOVES-BoTZ/features/cipher/pmoves_cipher/` (predated PR #5). The **live gitlink** (`1c9b2851`) DID register `/api/memory` routes (PR #5 by B850-CLAUDE, 2026-07-01).
> **Known issue (3-layer gap, 2026-04-01) - RESOLVED 2026-07-13:**
> - **Layer 1 (skills):** Fixed - skills use MCP-first with local MEMORY.md fallback
> - **Layer 2 (MCP client):** The `pmoves-cipher-mcp/cipher_mcp/client.py` REST calls were originally reported as broken - that finding was based on a **stale vendored copy** at `PMOVES-BoTZ/features/cipher/pmoves_cipher/` (predated PR #5). The **live gitlink** (`1c9b2851`) DID register `/api/memory` routes (PR #5 by B850-CLAUDE, 2026-07-01).
> - **Layer 3 (cipher-api):** Routes exist on the live gitlink. The A1-Shim re-fork (2026-07-13, PR #2116) re-implemented them on the new ByteRover v3.16.1 architecture via `src/pmoves/memory-routes.ts`. All 8 contracts smoke-tested green.
> - **Working path today:** Direct SSE at `:8105/mcp/sse` (Claude Code, Agent Zero) + REST `/api/memory` CRUD (semantic-cache, analyze_beats). Python bridge disabled since 2026-05-15.
> - **Full context:** `pmoves/docs/TAC/TAC_CIPHER.md` §Current State + §A1-Shim Workorder
Expand All @@ -173,17 +218,17 @@ Claude's context is NOT consistent across z890/4090/5090. Each node may have:
## Node Capacity Quick Reference

Prior to PR #1378 (MOF architecture invariant, 2026-04-24), nodes were described by expertise
lane Z890 "owned" infra, 4090 "owned" provider cascade, 5090 "owned" GPU/voice. That framing
lane - Z890 "owned" infra, 4090 "owned" provider cascade, 5090 "owned" GPU/voice. That framing
was a pre-MOF mental model: it implied hard domain ownership and discouraged cross-node delegation.

After the Grand Convergence merge, every PMOVES node is a **pore in the MOF lattice** capable
After the Grand Convergence merge, every PMOVES node is a **pore in the MOF lattice** - capable
of running any PMOVES workload up to its physical capacity. Capacity class is **advisory**, not
gating: it tells you what a node can sustain under load, not what work it is permitted to do.

Cross-node delegation is the primary mechanism for matching workload to capacity:
1. Agent Zero `/mcp/*` synchronous MCP tool call to a peer node
2. A2A `/.well-known/agent-card.json` async agent-to-agent via the A2A spec (partially mounted; disabled by default)
3. NATS `agent.peer.heartbeat.v1` presence/capability announcement (Phase D
1. Agent Zero `/mcp/*` - synchronous MCP tool call to a peer node
2. A2A `/.well-known/agent-card.json` - async agent-to-agent via the A2A spec (partially mounted; disabled by default)
3. NATS `agent.peer.heartbeat.v1` - presence/capability announcement (Phase D
mutual-watching skill, not yet live)

The table below shows physical constraints and soft-priority notes per node.
Expand All @@ -199,7 +244,7 @@ No row is a hard lane assignment.
| KVM4-1 | VPS / API-gateway | Network-primary; low VRAM | External API gateway; `self-hosted, kvm4` CI runner |
| KVM4-2 | VPS / data-storage | Storage-optimized | Data/storage tier |
| KVM2 | VPS / exit-proxy | Minimal compute; network-only | Exit proxy; RustDesk ScaleTail relay |
| (floating) | Inherits host node | Varies | CODEX-GPT5, CLAUDE-OPUS, PMOVES-MINIMAX no fixed node |
| (floating) | Inherits host node | Varies | CODEX-GPT5, CLAUDE-OPUS, PMOVES-MINIMAX - no fixed node |
| MISSLING-LINK | Laptop / light-GPU dev (legacy) | i7-7700HQ 4c/8t; 16GB RAM; GTX 1070 8GB (Pascal sm_61); Win 11 Pro | **Hermes Agent** host node (not Claude Code/Codex); small/quantized model inference + CPU dev/ops; node doc: [`AGNOTE-pmoves-missling-link.md`](./AGNOTE-pmoves-missling-link.md) |

---
Expand Down Expand Up @@ -228,7 +273,7 @@ No row is a hard lane assignment.

## Restore Safety

> **Incident**: 2026-04-23 file-level backup restore of AGNOTE4482_SIGNOFF_CHECKLIST.md silently overwrote 7 committed checkmarks (§1.11.3, §3.13.3). File-level restores bypass git merge/conflict detection.
> **Incident**: 2026-04-23 - file-level backup restore of AGNOTE4482_SIGNOFF_CHECKLIST.md silently overwrote 7 committed checkmarks (§1.1-1.3, §3.1-3.3). File-level restores bypass git merge/conflict detection.
>
> **Rule**: Before restoring ANY AGNOTE file from backup, run:
> ```bash
Expand Down
Loading
Loading