diff --git a/pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md b/pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md index 8c8a3ccdd3..01a1b5cfcf 100644 --- a/pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md +++ b/pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md @@ -1322,6 +1322,10 @@ The pipeline reports success because its validation scope is too narrow. Neither +- `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 + + + ## 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`. diff --git a/pmoves/docs/AGENTS/AGNOTE4482_SITREP.md b/pmoves/docs/AGENTS/AGNOTE4482_SITREP.md index 35190e90ed..44465046f0 100644 --- a/pmoves/docs/AGENTS/AGNOTE4482_SITREP.md +++ b/pmoves/docs/AGENTS/AGNOTE4482_SITREP.md @@ -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) --- @@ -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 (`` `` `` `` `` `` ``) + `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: `` 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: `` + `` (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 ``** — 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? @@ -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 (Apr–Jun 2026) +## Convergence Wave Index (Apr-Jun 2026) Waves since last SITREP refresh (2026-04-01). Each links to its AGNOTE4482.md section. @@ -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") @@ -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"})`. @@ -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) @@ -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 @@ -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. @@ -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) | --- @@ -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.1–1.3, §3.1–3.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 diff --git a/pmoves/docs/logs/pr_open/PR_closeout_a2ui.body.md b/pmoves/docs/logs/pr_open/PR_closeout_a2ui.body.md new file mode 100644 index 0000000000..0fd532fcf0 --- /dev/null +++ b/pmoves/docs/logs/pr_open/PR_closeout_a2ui.body.md @@ -0,0 +1,55 @@ +## Summary + +Post-merge closeout for the WEBSITE_AS_AGENT_CANVAS lane. The 3 A2UI PRs (#2132/#2133/#2134) merged 2026-07-18; this PR is the small follow-up that closes the trim-cycle loop. + +- **docs(post-merge): LEARNINGS addendum** to `pr_trim_2132_LEARNINGS.md` — captures the Fordham-resident-legitimacy finding from B850-CLAUDE's 2026-07-16 cross-lane CHIT review. The trim cycle captured code findings; this addendum captures the content/fixture finding (2 attributed quotes in `fordham-hill.json` with no recorded consent or provenance). Deploy-gate, not merge-gate. +- **docs(post-merge): SITREP refresh** — `pmoves/docs/AGENTS/AGNOTE4482_SITREP.md` updated to reflect the post-merge state (3-PR stack merged 2026-07-18, post-merge commits #2154 #2164, the `pmoves/docs/pilots/fordham-hill/` directory, the `CATACLYSM_CROSSLINKS.md` bridge doc). A fresh local model on Spark / Knuckles can read this and pick up where Mavis-5090 left off. +- **docs(post-merge): AGNOTE lane closeout row** — explicit Mavis-5090 RELEASE row noting the lane is closed, with reference to 5090-CLAUDE's substantive "A2UI Stack Landed" row. Lists what the lane produced (15 commits, 3 PRs) and what is deferred to the post-merge follow-up cron (v0.3 pm-ballot rebuild, HMAC → Ed25519, CF Pages deploy, B-mode watcher). Fordham-resident-legitimacy has been resolved separately in PR #2269. + +## Why this is docs-only + +The substantive work is already on main: +- 5090-CLAUDE ran the trim cycle (per-PR LEARNINGS files) and the merge train (force-push + squash-merge in correct order) +- 5090-CLAUDE wrote the "A2UI Stack Landed" AGNOTE row (`5294223430`) +- B850-CLAUDE wrote the cross-lane reconciliation doc (`07-ballot-prior-art-and-reconciliation.md`) +- 5090-CLAUDE + Shaela Bello reconciled the Fordham contracts (`e65e9bb298`) + +This PR is the **small follow-up** that closes the loop in the artifacts I (Mavis-5090) shipped. The findings it adds to the LEARNINGS were already documented in the cross-lane work; this commit makes them visible to the trim-cycle reader. + +## Testing + +Docs-only PR. No code or conformance gate changes. + +- [x] CHIT Contract Check — no contract changes; new doc additions only +- [ ] Updated contracts, schemas, or topics — N/A +- [x] Added/updated documentation — see the 4 changed files + +## Review Coordination + +- [ ] Requested Codex review — recommend `/chit:review-sweep` after PR opens +- [ ] Requested GitHub Copilot review — use the PR "Copilot" button + +## Follow-up Tasks + +- [x] ~~DARKXSIDE: confirm Fordham-resident-legitimacy answer~~ — **Resolved in PR #2269**: quotes rewritten to synthetic personas + share-your-story CTA +- [ ] v0.3 pm-ballot `createTextNode` / `textContent` rebuild so the CodeQL `xss-through-dom` query passes structurally (post-merge follow-up lane, watched by the Mavis-5090 cron) +- [ ] HMAC → Ed25519 migration for the tenant signing card (per #2154) +- [ ] Real CHIT signing (replace `chit-stub:` prefix) — needs `CHIT_PASSPHRASE` loaded +- [ ] CF Pages deploy target execution — operator call (Fordham-resident-legitimacy resolved in #2269) +- [ ] B-mode watcher (when KiloCode ships n8n) — `pr_review_watcher.py --mode nats` + +## Reviewer Notes + +The LEARNINGS addendum explicitly states that fixture-provenance questions are a **class of finding the trim cycle cannot catch** because they live in the governance/content lane, not the code lane. Future trim cycles on tenant PRs should add a fixture-content audit step. + +The Mavis-5090 closeout row in the AGNOTE explicitly references the 5090-CLAUDE "A2UI Stack Landed" row as the substantive closeout — this is a Mavis-5090 follow-up, not a duplicate. The two rows are complementary: 5090-CLAUDE's captures the merge + restack + CodeQL triage; Mavis-5090's captures the post-merge follow-up + the deferred work. + +The SITREP refresh is meant to be the "second home" entry point for a fresh local model on Spark / Knuckles next session. It indexes every artifact, names every open gate, and lists every agent involved (Mavis-5090 + 5090-CLAUDE + B850-CLAUDE + DARKXSIDE). + +## See also + +- `pmoves/docs/operations/REVIEW_STYLE_2026-07-15.md` — the trim style this PR extends +- `pmoves/docs/templates/PR_LEARNINGS.template.md` — the template the LEARNINGS files follow +- `.claude/agents/pr-review-watcher.md` — the agent that watches the post-merge follow-up lane +- `pmoves/docs/pilots/fordham-hill/07-ballot-prior-art-and-reconciliation.md` — B850-CLAUDE's cross-lane work +- `pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md` — the 5090-CLAUDE A2UI Stack Landed row (line 1317+) diff --git a/pmoves/docs/logs/pr_trim_2132_LEARNINGS.md b/pmoves/docs/logs/pr_trim_2132_LEARNINGS.md index 046f2df83c..fbb9c48aa8 100644 --- a/pmoves/docs/logs/pr_trim_2132_LEARNINGS.md +++ b/pmoves/docs/logs/pr_trim_2132_LEARNINGS.md @@ -68,8 +68,8 @@ with no recorded consent or provenance, pinned to a real, identifiable Bronx housing cooperative.** A trim cycle that only reads diffs misses fixture-content questions — this needed a fixture-content audit step. - **Resolved:** quotes rewritten to obviously-synthetic personas ("Sample - voice — Maya R." / "Sample voice — Devon A." with `illustrative persona - (not a real resident)` role). A 3rd quote-block added as a "share your - story" CTA inviting real Fordham Hill residents to contribute — when they - do with consent, their quote replaces the placeholder (option C path). + **Resolved (PR #2269):** quotes rewritten to obviously-synthetic personas + ("Sample voice — Maya R." / "Sample voice — Devon A." with `illustrative + persona (not a real resident)` role). A 3rd quote-block added as a "share + your story" CTA inviting real Fordham Hill residents to contribute — when + they do with consent, their quote replaces the placeholder (option C path).