Skip to content

feat(tools): mavis creative pipeline v0 - sketch + prompt -> theme.skin JSON - #2450

Merged
POWERFULMOVES merged 8 commits into
mainfrom
feat/mavis-creative-pipeline-v0
Aug 8, 2026
Merged

POWERFULMOVES merged 8 commits into
mainfrom
feat/mavis-creative-pipeline-v0

Conversation

@POWERFULMOVES

@POWERFULMOVES POWERFULMOVES commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Mavis creative-pipeline v0: sketch -> render -> skin foundation

The Mavis creative pipeline v0 slice lands the integration foundation that turns Cataclysm Studios sketch archive (G:\My Drive\CataclysmstudiosInc\Pictures) + 82 SoundCloud tracks into the production substrate for the music video + AI comic + CHIT viz pipeline.

The render itself happens later (operator runs the Aitrepreneur installer on an H3-capable host, Mavis submits the prompt), but the foundation is now in pmoves/tools/, self-explanatory, cross-agent pickup-ready, and respects the "sketch is the finished piece" framing.

What's in this PR

  • pmoves/tools/comfyui/install/ - 3 Aitrepreneur MiniMax H3 ULTRA installers (RunPod + Windows portable + Windows safe), verbatim from the operator's local Downloads/SEAP/ with full attribution
  • pmoves/tools/comfyui/workflows/ - 2 H3 ULTRA ComfyUI workflow JSONs (standard + turbo-LoRA), default is turbo (4-step, ~30-60s render at 5s 720p on RTX 4090)
  • pmoves/tools/comfyui_client.py - synchronous Python HTTP wrapper for the ComfyUI REST API (submit, wait, download). Env-driven. 12/12 tests pass
  • pmoves/tools/pinokio_launch.sh - shell wrapper for pinokio start <app> + port-readiness polling. Cross-platform (Python3 fallback for Git Bash). 8/8 tests pass
  • pmoves/tools/render_skin.py - the pipeline glue. Sketch + prompt -> patched workflow -> ComfyUI render -> theme.skin/v1 JSON. 14/14 tests pass
  • pmoves/tools/comfyui/README.md - high-level map for future agents picking this up

Acceptance criteria (5/5 met)

  • Mavis client can submit an H3 ULTRA workflow to a ComfyUI host
  • Mavis can launch a Pinokio app (ComfyUI / Ace Studio / Veo) and wait for ready
  • Mavis can take a sketch + prompt and produce a theme.skin JSON
  • The 3 install paths are documented + copied with attribution
  • The 2 H3 ULTRA workflows are committed as artifacts so future sessions don't need the operator's local SEAP folder

Tests (34/34 pass, no ComfyUI host required)

  • pmoves/tools/tests/test_comfyui_client.py - 12 tests
  • pmoves/tools/tests/test_pinokio_launch.sh - 8 tests
  • pmoves/tools/tests/test_render_skin.py - 14 tests

The "sketch is the finished piece" loop

The operator's 2023-11-03 6-eye third-eye horned-helmet character (cyber.png) becomes a Pillar 4 encoding pillar skin in 3 commands:

  1. pinokio_launch.sh comfyui --port 8188 (launch the ComfyUI host)
  2. python -m pmoves.tools.render_skin "G:\My Drive\CataclysmstudiosInc\Pictures\cyber.png" "Pillar 4 encoding visual, third eye, 6-eye motif" --output pmoves/design/skins/pillar4-encoding.json (submit + wait + download)
  3. Add the skin to a Pillar 4 room manifest in PMOVES-OpenRoom submodule (separate worktree)

The same loop works for the 82 SoundCloud tracks, the IDW/Transformers-style comic panels, and the CHIT tour pillars.

What this PR does NOT do (left for follow-up)

  • The actual cyber.png render - needs a ComfyUI host with H3. Operator runs the installer.
  • Beat → room manifest generator - 82 SoundCloud tracks → navigable openroom
  • CHIT tour re-skin pass - Warhammer/IDW/Mega Man X aesthetic
  • Pinokio MCP adapter - shell wrapper covers the immediate need
  • Pillar 4 room manifest bump in PMOVES-OpenRoom submodule - separate worktree, separate PR

CLAIM

Mavis::MAVIS-CREATIVE-PIPELINE-V0-CLAIM::2026-08-06 in pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md

Trail entry

graphiti:mavis phase:creative-pipeline-v0 in docs/AGENT_TRAIL.md

LEARNINGS

pmoves/tools/LEARNINGS/creative-pipeline-v0_LEARNINGS.md - 5-class taxonomy (legit/already-fixed/owner/out-of-scope/pre-existing) + 4-bucket learning signal (missed-signal/fix-pattern/wrong-suggestion/already-addressed) for the post-merge review cycle.

CHIT trail unsigned-local

No CHIT_PASSPHRASE loaded in this Mavis session per the standing operator convention.

Summary by CodeRabbit

  • New Features

    • Added a ComfyUI-based creative pipeline for generating PMOVES theme skins from prompts and sketches.
    • Added setup options for RunPod and Windows, including MiniMax H3 ULTRA models and required components.
    • Added tools to submit, monitor, and download renders, plus Pinokio launch support.
    • Added a persona living-document route with static asset delivery and path protection.
  • Documentation

    • Added installation, workflow, attribution, operational, and pipeline guidance.
  • Tests

    • Added smoke and integration-style coverage for rendering, client operations, and launcher scenarios.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 75e49131-d645-437a-b3c2-c846df5bfa3c

📥 Commits

Reviewing files that changed from the base of the PR and between 9c2c983 and ebe1bca.

📒 Files selected for processing (20)
  • docs/AGENT_TRAIL.md
  • pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md
  • pmoves/tools/LEARNINGS/creative-pipeline-v0_LEARNINGS.md
  • pmoves/tools/comfyui/README.md
  • pmoves/tools/comfyui/install/ATTRIBUTION.md
  • pmoves/tools/comfyui/install/MINIMAX_H3_ULTRA-AUTO_INSTALL-RUNPOD.sh
  • pmoves/tools/comfyui/install/MINIMAX_H3_ULTRA-COMFYUI-MANAGER_AUTO_INSTALL.bat
  • pmoves/tools/comfyui/install/MINIMAX_H3_ULTRA-MODELS-NODES_INSTALL.bat
  • pmoves/tools/comfyui/install/README.md
  • pmoves/tools/comfyui/workflows/MINIMAX_H3_ULTRA_+TURBO-LORA_WORKFLOW.json
  • pmoves/tools/comfyui/workflows/MINIMAX_H3_ULTRA_WORKFLOW.json
  • pmoves/tools/comfyui/workflows/README.md
  • pmoves/tools/comfyui_client.py
  • pmoves/tools/pinokio_launch.sh
  • pmoves/tools/render_skin.py
  • pmoves/tools/tests/_fake_pinokio.sh
  • pmoves/tools/tests/test_comfyui_client.py
  • pmoves/tools/tests/test_pinokio_launch.sh
  • pmoves/tools/tests/test_render_skin.py
  • pmoves/ui/app/persona/livingdoc/route.ts

📝 Walkthrough

Walkthrough

The PR adds MiniMax H3 ULTRA ComfyUI installers, a ComfyUI REST client, Pinokio launcher, sketch-to-skin rendering, tests, documentation, and a persona living-document route.

Changes

Creative Pipeline

Layer / File(s) Summary
MiniMax H3 ULTRA installer foundation
pmoves/tools/comfyui/install/*
Adds RunPod and Windows installers for dependencies, custom nodes, model downloads, environment locking, recovery modes, and validation.
ComfyUI client and skin rendering
pmoves/tools/comfyui_client.py, pmoves/tools/render_skin.py, pmoves/tools/tests/test_comfyui_client.py, pmoves/tools/tests/test_render_skin.py, pmoves/tools/comfyui/{README.md,workflows/README.md}
Adds workflow submission, polling, asset downloads, sketch staging, asset selection, and theme.skin JSON output with mock-based tests.
Pinokio launch and readiness control
pmoves/tools/pinokio_launch.sh, pmoves/tools/tests/test_pinokio_launch.sh, pmoves/tools/tests/_fake_pinokio.sh
Adds configurable app launching, readiness polling, normalized exit codes, and sandboxed smoke tests.
Pipeline records and operator documentation
docs/AGENT_TRAIL.md, pmoves/docs/AGENTS/AGNOTE4482PHI.t1.md, pmoves/tools/LEARNINGS/creative-pipeline-v0_LEARNINGS.md
Documents the pipeline scope, installer provenance, operating steps, acceptance criteria, tests, and deferred work.

Persona Living Document Route

Layer / File(s) Summary
Persona living document serving
pmoves/ui/app/persona/livingdoc/route.ts
Adds dynamic persona directory resolution, index and static-file serving, MIME detection, caching, traversal protection, and HTTP error handling.

Estimated code review effort: 4 (Complex) | ~60 minutes

Suggested reviewers: claudedev

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/mavis-creative-pipeline-v0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@POWERFULMOVES
POWERFULMOVES marked this pull request as ready for review August 7, 2026 20:15
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Mavis added 8 commits August 7, 2026 20:39
Add /persona/livingdoc route handler that serves the full persona room
directory (HTML5, CSS, JS, video, fonts, PreTeXt output) from the
volume-mounted rooms/persona/ path. Includes path-traversal guard and
correct MIME types for binary assets (mp4, woff2, images).

Add personalized "Welcome back, <name>" greeting to the dashboard
header using useSupabaseAuth — extracts display name from email or
user_metadata.

Fix /dashboard/rooms crash when a room manifest has no policies block
(null guard with optional chaining + fallback to 'default'). Add the
missing policies block to jons-edge.room.control.json.

💘 Generated with Crush
…on foundation

CLAIM the creative-pipeline v0 lane in AGNOTE4482PHI.t1 per three-body
collision-avoidance. Companion to today's OPENROOM-REALIZATION-SLICE-2-CLAIM.

Scope: the integration foundation that turns Cataclysm Studios sketch archive
(G:\My Drive\CataclysmstudiosInc\Pictures\) + 82 SoundCloud tracks into the
production substrate for the music video + AI comic + CHIT viz pipeline.
Pillar 4 skin (cyber.png -> theme.skin), beat-to-room generator, and CHIT
tour re-skin all needed the same Mavis->ComfyUI+Pinokio wire.

First trail entry for creative-pipeline v0. Subsequent commits land the
install scripts, workflow JSONs, HTTP client, Pinokio launcher, render
glue, and tests.
…s) w/ attribution

Three install paths from Aitrepreneur's MiniMax H3 ULTRA V1 setup, copied
verbatim from the operator's Downloads/SEAP/ folder:

- install/MINIMAX_H3_ULTRA-AUTO_INSTALL-RUNPOD.sh - one-shot RunPod
  installer (PyTorch 2.8.0+cu128, 5 custom nodes, 6 model files via
  HF Xet w/ resume, final dep check, auto-launch)
- install/MINIMAX_H3_ULTRA-COMFYUI-MANAGER_AUTO_INSTALL.bat - one-click
  Windows portable installer (downloads ComfyUI_windows_portable.7z,
  clones nodes, downloads models, launches run_nvidia_gpu.bat)
- install/MINIMAX_H3_ULTRA-MODELS-NODES_INSTALL.bat - safe add-on
  installer for existing ComfyUI (locks pip env, adds 5 nodes with
  sanitized deps, downloads missing model files only, /update /force
  /dryrun /restore flags)

Plus install/README.md (decision matrix: RunPod vs Windows portable vs
existing ComfyUI) + install/ATTRIBUTION.md (Aitrepreneur credit, model
provenance from Aitrepreneur/FLX HF repo, pinned dep versions, HF_TOKEN
note for the gated repo).

Scripts are unmodified - the operator's local files are canonical.
Aitrepreneur is the upstream author; we ship these as artifacts so
fresh local models (Spark, Knuckles) can reproduce the H3 host without
needing the operator's local SEAP folder.

Follow-up commits in this slice land the workflow JSONs, the
comfyui_client.py HTTP wrapper, the pinokio_launch.sh wrapper, and the
render_skin.py pipeline glue.
…turbo-LoRA)

Two exported ComfyUI workflow JSONs from the Aitrepreneur MiniMax H3 ULTRA
setup, copied verbatim from the operator's Downloads/SEAP/ folder:

- workflows/MINIMAX_H3_ULTRA_WORKFLOW.json (~250KB) - standard
  full-quality sampler chain. ~3-5min render at 5s 720p on RTX 4090.
  Use for hero shots, music video clips, final renders.
- workflows/MINIMAX_H3_ULTRA_+TURBO-LORA_WORKFLOW.json (~252KB) - the
  default. Loads minimax_h3_turbo_4step_ckpt500_comfyui_pruned.safetensors
  LoRA for 4-step sampling. ~30-60s render at 5s 720p. Use for
  iteration, concept work, skin renders, storyboards.

Both wire the full 6-model H3 stack (Qwen3-VL 32B text encoder, FL2VA
T2V/I2V diffusion, REF2VA reference video, video + audio VAEs, optional
turbo LoRA). Both expose the variable inputs (SEED, HEIGHT, Video
Duration) as INTConstant / RandomNoise / PrimitiveFloat so the
upcoming render_skin.py can override them per call. Both depend on
the ComfyUI-Spectrum-MiniMax-H3 custom node (cloned by the install
scripts).

Plus workflows/README.md - the decision matrix (turbo vs standard),
what's in each workflow, custom node requirement, editing workflow,
and why these specific exports (full 6-model stack, API format, pinned
sampler chain via Spectrum).

The Mavis client (comfyui_client.py, next commit) defaults to the
turbo-LoRA workflow because Pillar 4 skin renders and beat-to-room
stills prioritize iteration speed. Set PMOVES_COMFYUI_WORKFLOW to
override per-render.
…A host

Synchronous Python wrapper around the ComfyUI REST API. Four-method
surface: health, submit, wait, download. Returns a RenderResult dataclass
that the upcoming render_skin.py can iterate over to drop outputs into
a theme.skin JSON.

Design notes (in the module docstring):

- Centralizes PMOVES_COMFYUI_URL / PMOVES_COMFYUI_TIMEOUT_S /
  PMOVES_COMFYUI_POLL_S env vars so render_skin.py doesn't repeat them.
- Polls /history with exponential-backoff-friendly sleep (fixed poll_s
  for now, future-proofed for backoff if the slice grows).
- Translates the ComfyUI history entry into OutputAsset records
  (handles images, gifs, videos, audio - the four output kinds H3
  workflows can produce).
- CLI mode: submit a workflow JSON, optionally override the
  CLIPTextEncode text + LoadImage filename, wait for completion,
  print the output paths. Used by render_skin.py via direct calls
  but also runnable by hand for debugging.

Edge cases handled in the code:

- UnicodeDecodeError on /view (binary image data) - returns raw bytes.
- Missing prompt_id in /prompt response - raises ComfyUIError.
- Render errors flagged in /history status - RenderResult.status="error"
  so the caller can decide whether to retry.
- Timeout via PMOVES_COMFYUI_TIMEOUT_S - raises ComfyUIError with
  the prompt_id for log correlation.

Tests in pmoves/tools/tests/test_comfyui_client.py - 12/12 pass:

- HealthTests: OK + unreachable
- SubmitTests: prompt_id returned + missing-field error path
- WaitTests: success + error status + timeout
- DownloadTests: writes PNG bytes to dest
- BuildResultTests: parses all 4 output kinds (images/gifs/videos/audio)
- ApplyOverridesTests: text + image override paths
- EnvDefaultsTests: env vars override base_url/timeout/poll_s

No actual ComfyUI host required for the tests - all httpx calls
mocked via urllib.request.urlopen patching.
…launcher

Shell wrapper that lets Mavis launch any Pinokio app (comfyui, ace-studio,
veo-blueprints, comfyui-manager) and wait until it's actually serving
requests, not just until pinokio start returns.

Why a wrapper:

1. Idempotency - if the app is already running, pinokio start fails.
   The wrapper checks the port first and no-ops if up.
2. Readiness polling - pinokio start returns as soon as the launch
   command is submitted, not when the app is serving. The wrapper
   polls the app's port via a Python socket connect (cross-platform,
   works on Linux + macOS + Git Bash on Windows; the bash /dev/tcp
   redirect is unreliable on Git Bash).
3. Consistent exit codes - pinokio's exit codes vary by app. The
   wrapper normalizes to 0 (ok), 1 (no pinokio), 2 (no app), 3
   (start fail), 4 (timeout) so render_skin.py can branch on True.
4. Python3 fallback - detects python3 vs python (Git Bash on Windows
   often has no plain python).

CLI: pinokio_launch.sh <app> [--timeout S] [--port PORT] [--no-wait]

Env vars: PINOKIO_BIN (default: pinokio), PINOKIO_HOME (default:
\C:\Users\russe/.pinokio), PINOKIO_API_HOST (default: 127.0.0.1).

Tests in pmoves/tools/tests/test_pinokio_launch.sh - 8/8 pass. Uses a
fake pinokio binary (tests/_fake_pinokio.sh) that simulates the launch
behavior: install a fake app dir, optionally bind a port, optionally
fail the start command. The wrapper's exit codes are all exercised.

Tests:

- missing arg -> exit 1
- no pinokio binary -> exit 1
- app not installed -> exit 2
- launch + wait for ready -> exit 0
- --no-wait returns after start -> exit 0
- start fails -> exit 3
- timeout when port never opens -> exit 4
- already-running is a no-op -> exit 0
…ne glue

The Mavis pipeline glue. Takes a sketch from the Cataclysm Studios archive
+ a text prompt, submits a MiniMax H3 ULTRA workflow to ComfyUI, downloads
the output image(s), and writes a theme.skin JSON that the
pmovesRoomAdapter.applyTheme consumer (PR #2437 P6) can pick up.

Three-step render:

1. _patch_workflow(workflow, prompt, sketch, prompt_id_holder):
   - Finds the positive CLIPTextEncode node by title match
     ("positive" or "prompt") and patches widgets_values[0] with the prompt
   - Stages the sketch into pmoves/tools/comfyui/_input/ (or
     PMOVES_COMFYUI_INPUT_DIR override) and patches the LoadImage
     widget to point at it
   - Computes a stable prompt_id from the patched workflow hash so
     re-running the same sketch + prompt is cache-friendly

2. client.submit(workflow) + client.wait(prompt_id):
   - ComfyUIClient handles the HTTP /prompt + /history polling
   - Renders can take up to PMOVES_COMFYUI_TIMEOUT_S (default 600s)

3. _pick_assets(saved_images):
   - Smallest image -> theme.icon (favicon-sized)
   - First image -> theme.skin (the canonical reference)
   - Largest image -> theme.wallpaper (full-bleed background)
   - If only one image, all three point at it (consumers fall back)

Output JSON schema (pmoves.theme.skin/v1):

    {
      "schema_version": "pmoves.theme.skin/v1",
      "theme_skin": "renders/out.png",
      "theme_icon": "renders/icon.png",
      "theme_wallpaper": "renders/wall.png",
      "css_vars": {},
      "data_attrs": {"skin-source-sketch": "...", "skin-workflow": "...", "skin-prompt-id": "..."},
      "meta": {
        "source_sketch": "G:\\My Drive\\CataclysmstudiosInc\\Pictures\\cyber.png",
        "prompt": "Pillar 4 encoding visual, third eye, 6-eye motif",
        "workflow": "pmoves/tools/comfyui/workflows/MINIMAX_H3_ULTRA_+TURBO-LORA_WORKFLOW.json",
        "workflow_name": "MINIMAX_H3_ULTRA_+TURBO-LORA_WORKFLOW",
        "rendered_at": "2026-08-06T18:30:00+00:00",
        "comfyui_url": "http://localhost:8188",
        "prompt_id": "abc123",
        "status": "success",
        "title": "Pillar 4 encoding",
        "source_attribution": "Cataclysm Studios / DARKXSIDE archive"
      }
    }

The schema_version field pins the consumer contract: a future change can
roll out with a versioned fallback.

CLI:

    python -m pmoves.tools.render_skin <sketch> <prompt> \\
        --output pmoves/design/skins/<skin>.json \\
        [--workflow <workflow.json>] \\
        [--meta-title "..."] [--meta-source "..."]

Tests in pmoves/tools/tests/test_render_skin.py - 14/14 pass. Coverage:

- PatchWorkflowTests: positive prompt gets the override, negative is
  unchanged, LoadImage gets the staged filename, prompt_id is stable
  for same input, prompt_id differs for different input
- StageSketchTests: sketch lands in input dir
- PickAssetsTests: smallest=icon, largest=wallpaper, first=skin
- SkinSerializationTests: schema_version is present, all fields serialize
- WriteSkinTests: SkinResult -> JSON file at dest
- RenderSkinErrorTests: missing workflow, missing sketch, unreachable host
  all raise the right error class
- RenderSkinHappyPathTests: end-to-end with a mocked ComfyUIClient,
  verifies the full pipeline (patch -> submit -> wait -> download -> skin)

No actual ComfyUI host required for the tests.

Plus pmoves/tools/comfyui/README.md - the high-level map of the
sketch -> render -> skin pipeline. Documents the directory layout,
the workflow, and the 5 most common operator commands. This is the
file future Spark / Knuckles sessions will hit first to understand
the creative-pipeline integration.
Mavis convention per the operator's "review lessons > review comments"
framing: every PR gets a LEARNINGS file tracking the 5-class taxonomy
(legit/already-fixed/owner/out-of-scope/pre-existing) + the 4-bucket
learning signal (missed-signal/fix-pattern/wrong-suggestion/already-addressed).

This is the initial slice (no review cycles yet), so the buckets are
empty placeholders. As review comments come in on PR #TBD, this file
becomes the durable record of what was learned - more durable than
the resolved thread in opaque GraphQL.

Files in the slice:

- pmoves/tools/comfyui/README.md - high-level map for future agents
- pmoves/tools/comfyui/install/ - 3 Aitrepreneur H3 ULTRA installers
- pmoves/tools/comfyui/workflows/ - 2 H3 ULTRA ComfyUI workflow JSONs
- pmoves/tools/comfyui_client.py - HTTP wrapper for the ComfyUI host
- pmoves/tools/pinokio_launch.sh - Mavis bridge to the Pinokio launcher
- pmoves/tools/render_skin.py - sketch + prompt -> theme.skin JSON
- pmoves/tools/tests/test_* - 34 tests, all pass

Acceptance criteria (5/5 met) + tests (34/34 pass) + what this slice
does NOT do (the 5 follow-up paths from the trail entry's
"Left Behind" section) are all in this file.
@POWERFULMOVES
POWERFULMOVES force-pushed the feat/mavis-creative-pipeline-v0 branch from 4b14342 to ebe1bca Compare August 8, 2026 00:40
@github-actions github-actions Bot added docs Documentation governance AGNOTE register / agent definitions / damage-control hooks labels Aug 8, 2026
@POWERFULMOVES
POWERFULMOVES merged commit 3c7326a into main Aug 8, 2026
24 of 26 checks passed
@POWERFULMOVES
POWERFULMOVES deleted the feat/mavis-creative-pipeline-v0 branch August 8, 2026 00:41
POWERFULMOVES added a commit that referenced this pull request Aug 8, 2026
…2478)

`3c7326a1a` (PR #2450, mavis creative pipeline v0) replaced an 82-line region of
the Active Claim Register with 14 lines: 6 insertions, 74 deletions. The 6
insertions were the creative-pipeline entry written TWICE (the duplicate being
the corrupted copy removed in #2476). The 74 deletions were six unrelated
entries, none of them mentioned in that PR.

Lost:
  Mavis::ENV-LOCAL-STRAGGLERS-2026-08-05                (PR #2415)
  Mavis::VALIDATE-COMPOSES-TAC-RATCHETS-2026-08-05      (PR #2416)
  Mavis::VALIDATE-DOCKERFILE-PATHS-RATCHET-2026-08-05   (PR #2417)
  4090-claude::MINT-TOKENOMICS-FORKSYNC-TAC-YT-EGRESS   (PR #2457, merged 20:52)
  4090-claude::AUDIO-SEGMENTATION-TRUNK-INVENTORY       (PR #2457, merged 20:52)
  4090-claude::CLAIM-REGISTER-VERIFICATION-SWEEP        (PR #2465, merged 21:24)

#2465 and #2457 merged at 20:52 and 21:24; #2450 merged at 21:00 and 21:24 from a
base that predated them, so their content was silently reverted minutes after
landing. Classic stale-base overwrite on an append-only shared doc — the register
has no gate that would notice, because a deletion is a valid diff.

Restored verbatim from `3c7326a1a^` and re-inserted at the same anchor
(immediately after the CRUSH-GLM52 CIPHER-TENSORZERO-S5-OPENROOM mark), so
document order is unchanged from before the loss.

Verified after the edit: all six GRAPHITI_MARKs present exactly once, the two
entries #2450 legitimately added (creative-pipeline v0, openroom slice 2) still
present exactly once, zero conflict markers, +81/-0.

Nothing here is mine to close — the three Mavis lanes stay Mavis's under Village
Rule. This restores the record only.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
POWERFULMOVES added a commit that referenced this pull request Aug 8, 2026
…n the enumeration (#2482)

* docs(ws2): claim the tooling-audit workstream + correct three items in the enumeration

z890's coordination plan assigns Workstream 2 to this node by affinity. This
claims it — bounded to five enumerated items, not to "tooling" as an area — and
records the corrections the enumeration needs before either node builds on it.

Corrections, all verified against origin/main @ 22c78fb:

  (a) 2 leaking copies, not 4 drifting implementations. Both shell scripts
      already carry the #2473 buildx fix (pmoves-disk-cleanup.sh:52,
      docker-fleet-cleanup.sh:43). Only infra.mk:89 and
      ci-expedition/SKILL.md:69 lack it.

  (b) 4090's own earlier "13 of 15 fork services" figure was WRONG — it
      double-counted services re-declared across the generated split overlays.
      Correct count is 7 unique sibling-context builds in docker-compose.yml,
      plus n8n, plus hf-mcp-server.yml which the handed-over list missed.

  (c) The ci-expedition fix is narrower than "PR head, not default". In that
      row `issue_comment` and `push` are correct; only `pull_request_review`
      is wrong. Surgical edit, not a row rewrite.

  Plus: the four .worktrees/* skill copies are checkouts of the same tracked
  file, so fixing main fixes them all — one item off the list.

Evidence for (c) is empirical, from the #2479 fix rather than from docs: run
31257145963 (PR head pre-fix, main already fixed) ran the OLD workflow and
failed at checkout; run 31257247543 (head rebased) ran the NEW workflow and went
green. Default-branch resolution predicts the opposite.

Not claimed and deliberately left alone: infra.mk:89 (z890's declared sub-fix),
WS1/WS3/WS4. Recommends Mavis-5090 for WS4-B, since the "rooms pull portals"
model is their open OpenRoom slice-2 claim.

The handoff doc also carries a WS3-relevant finding: AGNOTE4482PHI.t1.md was
damaged three times in a row by stale-base merges (#2437 markers, #2450 deleting
six entries, a corrupted duplicate). A deletion is a valid diff, so nothing
catches it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* docs(ws2): retract hf-mcp-server from the submodule list, add the bind-mount class

Two corrections to the handoff doc, made before the enumeration propagates.

RETRACTION. An earlier revision added hf-mcp-server.yml to the sibling-submodule
build list. Wrong. Its context is ../../pmoves/services/hf-mcp-server — a
two-level relative path back INTO pmoves/services/, i.e. a first-party service.
My matcher keyed on a leading `../`, which is not sufficient: the first path
segment has to be checked against .gitmodules. Corrected list is 7 registered
submodules / 8 services, which is z890's original number plus n8n. This is the
same class of error as the "13 of 15" figure it was meant to fix — pattern-
matching a path shape instead of resolving it.

ADDITION. The enumeration covers build contexts only, and those are the less
dangerous half. Five BIND-MOUNT sources also come from submodules
(PMOVES-supabase x4, PMOVES-n8n x1). A missing build context fails loudly; a
missing bind source does not — Docker CREATES it as a directory, so a file mount
silently becomes a directory mount and the container then fails on its own
config. That is the class that took services down on this node, and it is the
reason item 4 is a runbook rather than a code fix.

Also records item 3's outcome: the two claude-pmoves.sh were never duplicates.
One selects an agent and loads nothing; the other loads env + the MCP roster and
selects no agent. Each ends in its own `exec claude`, so they are mutually
exclusive, and `make -C pmoves claude-pmoves` took the path with no creds.
Picking one — the item as written — would have deleted a working capability
either way. Fixed by delegation in #2484.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* docs(ws2): add claim TTL, split evidence provenance, correct the CI-blindness claim

Review pass on the claim + handoff. All six findings were valid; none were
cosmetic.

TTL. The claim had no expiry, so an abandoned branch would reserve these items
indefinitely with no way for another node to tell when reclaiming is safe.
Added: TTL 72h, expires 2026-08-11T13:00:00Z.

OWNERSHIP COUNT. The entry said "five items claimed" while the body enumerated
items 2-5 and the next paragraph assigned item 1 to z890 — ambiguous in exactly
the file that exists to prevent collisions. Now states WS2 has five items and
4090 reserves FOUR of them, with item 1 named as z890's.

PROVENANCE. "Everything re-verified via git show against origin/main" was not
true of the whole document: it also carries GitHub Actions run results and node
runtime observations, neither of which git show can produce. Now split three
ways — repository content via git show, CI behavior via gh api on run records,
node runtime state via docker inspect / git submodule status on THIS node only
(single-node observation, not a fleet claim).

CI-BLINDNESS CLAIM WAS WRONG. The doc said CI cannot catch the submodule gap
because workflows check out with `submodules: recursive`. They do not check out
submodules at all (validate-dockerfile-paths-ratchet.yml:54,
validate-composes-ratchet.yml:41). They pass because
validate_dockerfile_paths.py explicitly excludes sibling-submodule targets —
"external repos the ratchet can't statically check" — and because
validate-composes never inspects bind sources. A known, accepted blind spot
rather than an accidental one. That is a better argument for the runbook, not a
worse one, and it is now the one the doc makes.

TRIGGER ROW. Correction 3 said `issue_comment` and `push` were both correct and
only `pull_request_review` was wrong. `push` resolves from the PUSHED ref, so
that was half-right; my first fix left the other half standing. Now a three-row
table with the two halves' provenance distinguished — the pull_request_review
correction is empirical from runs 31257145963 / 31257247543, the push correction
is Actions semantics from review and is stated as behavior rather than as
something measured here.

Plus: item 3's outcome recorded (the two claude-pmoves.sh were never duplicates,
fixed by delegation in #2484), and MD040 language identifiers on three fenced
blocks.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
POWERFULMOVES added a commit that referenced this pull request Aug 9, 2026
…reign RELEASE lines (#2498)

* docs(agnote): WS2 RELEASE + lane sweep — evidence for owners, no foreign RELEASE lines

Two entries.

RELEASE — WS2 (z890's coordination plan) is complete inside its 72h TTL. Eight
PRs merged: #2482 claim+handoff+corrections, #2483 ci-expedition skill, #2484
claude-pmoves delegation, #2485 submodule gap runbook, #2486 up-* inventory,
#2488 validate-command-anchors, #2494 first-contact + guard routing table, #2495
Danger Room handoff to SPARK. pmoves/mk/infra.mk untouched throughout — z890's
#2480, no collision.

The entry records what the audit found BEYOND its enumerated items, because that
is the reusable part: a gate can advertise coverage it does not have (three
separate instances, each caught by review rather than by me); the always-loaded
orientation file misdirects first contact; the guard's own routing table has two
dead roads; and patterns.yaml is the pattern worth generalizing while
pre-tool.sh duplicates 5 of its entries minus the affordance.

It also records four corrections to my own prior work — the wrong 13-of-15
figure, the retracted hf-mcp-server entry, the dangerous first up-* retire list,
and the yt-cookies pair that was never a duplicate. A closeout that only lists
wins is not a closeout.

NOTE — lane sweep. 115 CLAIM against 119 RELEASE. Four Mavis lanes verified
shipped and missing only a RELEASE (harness v0 #2437/#2443/#2450, multi-fork
follow-ups #2477, OpenRoom slice 2, creative-pipeline v0). Four older lanes
still open with no PR cited and nothing found merged, now 8-10 days. Mine that
are correctly still open: #2446 draft, #2468 held for review, and the SPARK
handoff awaiting its CLAIM.

ZERO RELEASE lines written on another agent's behalf — verified in the diff.
Those lanes are Mavis's to close under Village Rule; this records evidence so
they can close from it rather than from memory. Kept distinct from the
KIMI-SPARK / CRUSH stale claims, which need a release OR re-claim — different
category, and conflating them would make the ping inaccurate.

Verified: make -C pmoves validate-command-anchors passes.

Note for follow-up: dogfooding this entry surfaced a real false-positive
generator in MAKE_CITE_RE — `-C \S+` swallows a closing backtick, so prose that
backticks "make -C pmoves" alone captures the following word as a target. Fixed
separately, not folded in here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* docs(agnote): state the counting method, and stop treating merge as acceptance

Three review findings, all correct, all mine.

1. THE TOTALS WERE NOT REPRODUCIBLE. I published "115 CLAIM against 119 RELEASE"
   with no method attached. Recounting three ways on the same file:

     anchored bullet rows      115 / 119   <- what I published
     token anywhere in text    284 / 221   (prose mentions)
     timestamped, no anchor    116 / 119

   and the 2026-08-07 sweep reported 121 / 115 on a fourth. None of these is
   wrong; a bare number with no pattern is. The entry now states the exact regex,
   lists what the other methods give, and says to treat the ratio as a rough
   signal rather than a metric — the per-lane table is the checkable part.

2. MERGE IS NOT RUNTIME ACCEPTANCE. I listed OpenRoom slice 2 under "verified
   shipped, missing only a RELEASE" on the strength of #2437 merging. That lane
   was claimed against six handoff priorities with room-level acceptance, and
   #2437 is scaffold plus iframe wiring. Merging it does not demonstrate the
   rooms render.

3. Same for line 1723: it covers three deliverables including fork-side
   consumers, and #2477 merging in PMOVES.AI says nothing about whether the fork
   consumers landed.

Both are now "merged, acceptance unverified" rather than ready-to-release, with
the reasoning stated so the owner closes from runtime evidence instead of from
my table.

This is precisely the error the register exists to prevent, made by the sweep
that exists to catch it — which is worth leaving visible rather than quietly
correcting. Every gate I shipped this week was weaker than advertised until
something proved it could say no; this one was a bookkeeping claim that had not
been asked to reproduce itself.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation governance AGNOTE register / agent definitions / damage-control hooks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant