Skip to content

feat(submodules): bump transcribe-and-fetch and hyperdimensions - #1546

Merged
POWERFULMOVES merged 2 commits into
mainfrom
feat/submodule-updates
May 19, 2026
Merged

POWERFULMOVES merged 2 commits into
mainfrom
feat/submodule-updates

Conversation

@POWERFULMOVES

@POWERFULMOVES POWERFULMOVES commented May 19, 2026

Copy link
Copy Markdown
Owner

Updates submodule pointers for transcribe-and-fetch (provider-agnostic changes) and hyperdimensions (beats constellation preset).

Summary by CodeRabbit

  • New Features

    • Added automatic Windows system detection that probes hardware configuration (CPU, GPU, memory, disk, network) and recommends the appropriate node type for deployment provisioning.
    • Enhanced NIC collision detection to identify and report conflicting network adapters sharing the same subnet in both JSON and human-readable formats.
  • Chores

    • Updated project dependencies and subproject references.
    • Reformatted configuration files.

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@POWERFULMOVES has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 55 minutes and 29 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4fe89bdd-4f36-4563-af85-56cd4d170cb5

📥 Commits

Reviewing files that changed from the base of the PR and between 91caff2 and 31aacbd.

📒 Files selected for processing (1)
  • .claude/mcp.json
📝 Walkthrough

Walkthrough

This PR adds comprehensive host hardware probing and node-type classification for both Windows and Linux, with cross-platform NIC collision detection. It introduces a new PowerShell script, enhances the existing Bash script, and includes submodule and configuration updates.

Changes

Host Probing and Classification

Layer / File(s) Summary
PowerShell: Foundation, help, and hardware probes
deploy/provision/glances-autodetect.ps1 (lines 1–210)
Script header with parameter definitions (-Json, -JsonFile, -Suggest, -Help), usage documentation, and JSON schema. Help system extracts and prints script comments. Hardware discovery functions probe OS (caption/version/arch), CPU (model/cores), RAM (GB rounded), GPU (enumeration with VRAM from registry and WMI fallback), disk (Get-PhysicalDisk with Win32_DiskDrive fallback), and NIC (active adapters with LinkSpeed in Mbps).
PowerShell: Collision detection and node-type classification
deploy/provision/glances-autodetect.ps1 (lines 222–348)
NIC same-subnet collision detection groups IPv4 addresses by subnet prefix and correlates to adapter status, identifying primary vs. ghost interfaces. Platform hint detection identifies Tailscale, Docker, WSL2, and Hyper-V. Node-type classifier applies ordered heuristics: DGX Spark on ARM64+NVIDIA; specific RTX 5090/4090 matches; RDNA4 workstations; PVE candidates based on NIC bandwidth/NVMe/RAM; generic desktop workstations; or manual/unknown. Each classification includes confidence and rationale.
PowerShell: Main orchestration and output modes
deploy/provision/glances-autodetect.ps1 (lines 353–490)
Main flow orchestrates all probes, suppresses output header in JSON/suggest modes, builds the result JSON object with collisions and platform hints, and supports four output modes: --Suggest (node type only), --JsonFile (UTF-8 JSON to file), --Json (JSON to stdout), and interactive reporting with structured sections and a bash apply command suggestion.
Bash: NIC collision detection and output integration
deploy/provision/glances-autodetect.sh (lines 30–757)
Added detect_nic_collisions() function that groups global IPv4 addresses by subnet and identifies primary vs. ghost interfaces. Updated JSON schema and emitted output to include new nic_collisions array. Report now displays collision summary: "none detected" or per-subnet primary/ghost details with remediation guidance. Integrated collision detection into main execution flow after NIC discovery.

Configuration and Dependencies

Layer / File(s) Summary
Configuration formatting and submodule updates
.claude/mcp.json, PMOVES-transcribe-and-fetch, Pmoves-hyperdimensions
Reformatted .claude/mcp.json pmoves-cipher args array from compact single-line to multi-line format (no semantic change). Updated PMOVES-transcribe-and-fetch submodule from commit a88812c7 to f497a263, and Pmoves-hyperdimensions from commit 1a6cb725 to 41e1dc60.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Poem

🐰 A rabbit hops through networks wide,
Spots ghost adapters side by side,
On Windows, Linux, probes take flight—
Now glances knows what node is right!
With PowerShell and Bash in sync,
Hardware whispers, swift as a blink.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title describes only a subset of the actual changes (submodule bumps) but omits major additions like the new Windows PowerShell probe script and NIC collision detection in both scripts. Update the title to reflect all significant changes, e.g., 'feat: add Windows probe script, NIC collision detection, and bump submodules' or split into focused commits.
Description check ⚠️ Warning The PR description is incomplete: it lacks the Testing section with commands/output, does not document NIC collision detection and Windows PowerShell script additions, and omits all required checklist items. Complete the description template with Testing commands, summarize all changes including the new glances-autodetect.ps1 and collision detection, and fill the Required Checks and Review Coordination checklists.
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/submodule-updates

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 and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8b3b33ce55

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .claude/mcp.json Outdated
"API_TOKEN": "${HOSTINGER_API_KEY}"
}
},
3

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Remove stray token from MCP JSON

When .claude/mcp.json is loaded, this bare 3 makes the file invalid JSON (python3 -m json.tool .claude/mcp.json fails at this line), so any Claude/MCP tooling that reads the repo config will be unable to parse the server definitions at all. Remove the token or replace it with the missing comma/keyed entry before the tailscale server.

Useful? React with 👍 / 👎.

POWERFULMOVES added a commit that referenced this pull request May 19, 2026
…cking main (#1548)

Audit (post-#1531) revealed 6 submodules where the gitlink in parent's
HEAD points to a SHA on the submodule's `main` branch, but `.gitmodules`
still records `branch = PMOVES.AI-Edition-Hardened`. The recorded branch
is no longer the active development line — running
`git submodule update --remote` against these entries would *regress*
the gitlink to a stale PMOVES.AI-Edition-Hardened tip rather than
advance to current HEAD.

Corrected entries (branch: PMOVES.AI-Edition-Hardened -> main):
- PMOVES-E2B-Danger-Room
- PMOVES-Danger-infra
- PMOVES-Pipecat
- PMOVES-MAI-UI
- PMOVES-Headscale
- Pmoves-cipher

Per-submodule verification (each at origin/main parity, 0/0):
- PMOVES-E2B-Danger-Room  HEAD=7a38b33b  origin/main=7a38b33b
- PMOVES-Danger-infra     HEAD=44d80c70  origin/main=44d80c70
- PMOVES-Pipecat          HEAD=a74aa0cc  origin/main=a74aa0cc
- PMOVES-MAI-UI           HEAD=182bcf4d  origin/main=182bcf4d
- PMOVES-Headscale        HEAD=d050dbe9  origin/main=d050dbe9
- Pmoves-cipher           HEAD=c4f8348f  origin/main=c4f8348f

No gitlink SHAs change in this PR — purely a metadata correction so
future `submodule update --remote` and fleet-audit automation
target the right branch.

Out of scope (require individual investigation, deferred):
- PMOVES-BoTZ           (actual=main but flagged in plan Lane B for branch reconciliation)
- PMOVES-BotZ-gateway   (actual=dependabot/pip/... — wrong-branch-tracking)
- PMOVES-transcribe-and-fetch (actual=dependabot/... — covered by PR #1546)
- PMOVES-n8n            (actual=codex/n8n-authoritative-runtime — codex agent scope)
- pmoves-e2b-mcp-server (HEAD not in any remote branch — needs investigation)
- pmoves/integrations/archon (actual=POWERFULMOVES-patch-1 — unusual)

The top-of-file comment "All submodules track PMOVES.AI-Edition-Hardened"
is now stale (it was already stale for ClawZ and skills/*); a follow-up
policy decision is needed on whether to standardize on main or restore
the PMOVES.AI-Edition-Hardened policy. Left unchanged here.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
deploy/provision/glances-autodetect.sh (1)

445-449: ⚡ Quick win

Primary/ghost classification differs from PowerShell implementation.

The Python logic assigns members[0] as primary regardless of link state. The PowerShell version (lines 252-261) explicitly checks adapter status to classify primaries (Up) vs ghosts (not Up). This could misclassify collisions if the first-discovered interface is actually down.

Consider aligning the heuristic: pass link state into Python and select the primary based on UP state, similar to the PowerShell logic.

Sketch of aligned approach
-    addr_list="$(ip -4 -o addr show 2>/dev/null | awk '/scope global/ {print $2, $4}')"
+    # Include link state in the data passed to Python
+    addr_list="$(ip -4 -o addr show 2>/dev/null | awk '/scope global/ {print $2, $4}')"
+    # Note: link_states is already captured at line 414

Then modify the Python to receive and use link state:

# In Python section, accept state and pick primary by UP status
# primary = next((m for m in members if m[2] == "UP"), members[0])
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@deploy/provision/glances-autodetect.sh` around lines 445 - 449, The current
loop over entries() assigns primary = members[0] regardless of link state and
can misclassify a downed interface; modify the logic that prints primary/ghost
pairs to choose primary by link state (prefer a member whose state field equals
"UP") and fall back to members[0] if none are UP: locate the loop using
variables entries, subnet, members, primary, ghost and change the selection to
something like selecting next(m for m in members if m[2] == "UP", members[0])
before iterating ghosts so the primary is consistent with the PowerShell
UP-vs-not-UP heuristic.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@deploy/provision/glances-autodetect.ps1`:
- Around line 342-345: Documentation says desktop-workstation requires >=32 GB
RAM but the detection block uses $RamGb -ge 16; update the code to match the doc
by changing the RAM check to $RamGb -ge 32 (the GPU/name logic using
$nvidiaGpus/$amdGpus and the returned object with type='desktop-workstation',
confidence='medium', rationale=... should remain unchanged), or alternatively
update the header comment to reflect the 16 GB requirement if the intended
threshold is 16 GB.
- Around line 292-293: The null-comparison order in the $hasWsl2 assignment can
misbehave when the right-hand side is an array; change the comparison so $null
is on the left side. Update the expression that sets $hasWsl2 (the Get-Command
'wsl' check and the ((wsl --list --quiet 2>$null) -ne $null) part) to use $null
-ne (...) instead of (...) -ne $null so PowerShell does not enumerate arrays
during the comparison.

In `@Pmoves-hyperdimensions`:
- Line 1: The submodule pointer in Pmoves-hyperdimensions references commits
that cannot be found; verify that the commit hashes
1a6cb7254732785b5b429ff2fe5a534a7c845d89 (old) and
41e1dc60a91b6a4ef0043f6363c7b4ecb5e442d4 (new) exist in the submodule repo and
that the submodule remote is correct: check the submodule's .gitmodules and the
submodule's origin (and run a fetch on that remote) to confirm the commits are
present; if commits are missing, push them from the submodule repo or correct
the target hash (update the submodule to a reachable commit and then git add &
commit the submodule change in the parent repo); if the remote is wrong, fix
.gitmodules/.git/config to point to the proper URL, run git submodule sync and
fetch, then update the parent commit pointer and commit the change so CI can
verify the new pointer.

---

Nitpick comments:
In `@deploy/provision/glances-autodetect.sh`:
- Around line 445-449: The current loop over entries() assigns primary =
members[0] regardless of link state and can misclassify a downed interface;
modify the logic that prints primary/ghost pairs to choose primary by link state
(prefer a member whose state field equals "UP") and fall back to members[0] if
none are UP: locate the loop using variables entries, subnet, members, primary,
ghost and change the selection to something like selecting next(m for m in
members if m[2] == "UP", members[0]) before iterating ghosts so the primary is
consistent with the PowerShell UP-vs-not-UP heuristic.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a86c8275-ae6c-4724-ba5c-d2bf66a20d40

📥 Commits

Reviewing files that changed from the base of the PR and between 4d29488 and 91caff2.

📒 Files selected for processing (5)
  • .claude/mcp.json
  • PMOVES-transcribe-and-fetch
  • Pmoves-hyperdimensions
  • deploy/provision/glances-autodetect.ps1
  • deploy/provision/glances-autodetect.sh

Comment on lines +292 to +293
$hasWsl2 = $null -ne (Get-Command 'wsl' -ErrorAction SilentlyContinue) -and
((wsl --list --quiet 2>$null) -ne $null)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix null comparison order for safer array handling.

When comparing with $null, place $null on the left side. This prevents unexpected behavior when the result is an array (PowerShell iterates arrays on the right side of comparisons).

Proposed fix
-    $hasWsl2      = $null -ne (Get-Command 'wsl' -ErrorAction SilentlyContinue) -and
-                   ((wsl --list --quiet 2>$null) -ne $null)
+    $hasWsl2      = $null -ne (Get-Command 'wsl' -ErrorAction SilentlyContinue) -and
+                   ($null -ne (wsl --list --quiet 2>$null))
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
$hasWsl2 = $null -ne (Get-Command 'wsl' -ErrorAction SilentlyContinue) -and
((wsl --list --quiet 2>$null) -ne $null)
$hasWsl2 = $null -ne (Get-Command 'wsl' -ErrorAction SilentlyContinue) -and
($null -ne (wsl --list --quiet 2>$null))
🧰 Tools
🪛 PSScriptAnalyzer (1.25.0)

[warning] 293-293: $null should be on the left side of equality comparisons.

Suggested fix: Use $null on the left hand side for safe comparison with $null.

(PSPossibleIncorrectComparisonWithNull)


[warning] Missing BOM encoding for non-ASCII encoded file 'glances-autodetect.ps1'

(PSUseBOMForUnicodeEncodedFile)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@deploy/provision/glances-autodetect.ps1` around lines 292 - 293, The
null-comparison order in the $hasWsl2 assignment can misbehave when the
right-hand side is an array; change the comparison so $null is on the left side.
Update the expression that sets $hasWsl2 (the Get-Command 'wsl' check and the
((wsl --list --quiet 2>$null) -ne $null) part) to use $null -ne (...) instead of
(...) -ne $null so PowerShell does not enumerate arrays during the comparison.

Comment thread deploy/provision/glances-autodetect.ps1 Outdated
Comment on lines +342 to +345
if (($nvidiaGpus.Count + $amdGpus.Count) -gt 0 -and $RamGb -ge 16) {
$gpuName = if ($nvidiaGpus.Count -gt 0) { $nvidiaGpus[0].model } else { $amdGpus[0].model }
return @{ type='desktop-workstation'; confidence='medium'; rationale="Detected $gpuName + $($CpuInfo.model) + $RamGb GB RAM" }
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Documentation/code mismatch: RAM threshold for desktop-workstation.

The header comment (line 43) states desktop-workstation requires >=32 GB RAM, but the code checks for >=16 GB. Please align the documentation with the intended behavior.

🧰 Tools
🪛 PSScriptAnalyzer (1.25.0)

[warning] Missing BOM encoding for non-ASCII encoded file 'glances-autodetect.ps1'

(PSUseBOMForUnicodeEncodedFile)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@deploy/provision/glances-autodetect.ps1` around lines 342 - 345,
Documentation says desktop-workstation requires >=32 GB RAM but the detection
block uses $RamGb -ge 16; update the code to match the doc by changing the RAM
check to $RamGb -ge 32 (the GPU/name logic using $nvidiaGpus/$amdGpus and the
returned object with type='desktop-workstation', confidence='medium',
rationale=... should remain unchanged), or alternatively update the header
comment to reflect the 16 GB requirement if the intended threshold is 16 GB.

Comment thread Pmoves-hyperdimensions
POWERFULMOVES and others added 2 commits May 19, 2026 22:43
Resolves P1 review comment: bare "3" between hostinger-api-mcp and
tailscale server blocks made the file invalid JSON, preventing any
Claude/MCP tooling from parsing server definitions.
@POWERFULMOVES
POWERFULMOVES force-pushed the feat/submodule-updates branch from 91caff2 to 31aacbd Compare May 19, 2026 22:43
@POWERFULMOVES
POWERFULMOVES merged commit 12ba20e into main May 19, 2026
12 checks passed
@POWERFULMOVES
POWERFULMOVES deleted the feat/submodule-updates branch May 19, 2026 22:49
POWERFULMOVES added a commit that referenced this pull request May 25, 2026
…1580)

* chore(.gitmodules): correct stale branch records for 6 submodules tracking main

Audit (post-#1531) revealed 6 submodules where the gitlink in parent's
HEAD points to a SHA on the submodule's `main` branch, but `.gitmodules`
still records `branch = PMOVES.AI-Edition-Hardened`. The recorded branch
is no longer the active development line — running
`git submodule update --remote` against these entries would *regress*
the gitlink to a stale PMOVES.AI-Edition-Hardened tip rather than
advance to current HEAD.

Corrected entries (branch: PMOVES.AI-Edition-Hardened -> main):
- PMOVES-E2B-Danger-Room
- PMOVES-Danger-infra
- PMOVES-Pipecat
- PMOVES-MAI-UI
- PMOVES-Headscale
- Pmoves-cipher

Per-submodule verification (each at origin/main parity, 0/0):
- PMOVES-E2B-Danger-Room  HEAD=7a38b33b  origin/main=7a38b33b
- PMOVES-Danger-infra     HEAD=44d80c70  origin/main=44d80c70
- PMOVES-Pipecat          HEAD=a74aa0cc  origin/main=a74aa0cc
- PMOVES-MAI-UI           HEAD=182bcf4d  origin/main=182bcf4d
- PMOVES-Headscale        HEAD=d050dbe9  origin/main=d050dbe9
- Pmoves-cipher           HEAD=c4f8348f  origin/main=c4f8348f

No gitlink SHAs change in this PR — purely a metadata correction so
future `submodule update --remote` and fleet-audit automation
target the right branch.

Out of scope (require individual investigation, deferred):
- PMOVES-BoTZ           (actual=main but flagged in plan Lane B for branch reconciliation)
- PMOVES-BotZ-gateway   (actual=dependabot/pip/... — wrong-branch-tracking)
- PMOVES-transcribe-and-fetch (actual=dependabot/... — covered by PR #1546)
- PMOVES-n8n            (actual=codex/n8n-authoritative-runtime — codex agent scope)
- pmoves-e2b-mcp-server (HEAD not in any remote branch — needs investigation)
- pmoves/integrations/archon (actual=POWERFULMOVES-patch-1 — unusual)

The top-of-file comment "All submodules track PMOVES.AI-Edition-Hardened"
is now stale (it was already stale for ClawZ and skills/*); a follow-up
policy decision is needed on whether to standardize on main or restore
the PMOVES.AI-Edition-Hardened policy. Left unchanged here.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(patterns): add Known Road for submodule documentation patterns

Codifies three load-bearing patterns surfaced by the 2026-05-20 CLAUDE.md
fleet audit and the 8-PR landing wave (2026-05-22). Future agents
following the fleet-audit pattern (or driving a multi-repo doc fix) need
these as up-front knowledge, not session-rediscovery cost.

1. Upstream `CLAUDE.md -> AGENTS.md` symlink: overlay at
   `.claude/CLAUDE.md`, never overwrite. Includes the `.gitignore`
   `.claude/*` + `!.claude/CLAUDE.md` whitelist mechanic that newcomers
   get wrong (negate doesn't work under a fully-ignored parent dir).

2. `gh pr create` "no commits between" after fresh push: lookup race,
   not real divergence. Retry with explicit `--repo` + `org:branch` head
   form.

3. Fleet audit -> grep before opening per-finding PRs: the audit's rubric
   reports one file per finding but the same anti-pattern usually
   repeats. DoX TensorZero URL audit cited 1 line; grep found 4.

Slotted between Skill Pairing (FlOO$) and PR Review & Merge Workflow so
agents reach it on the same read pass they use for the merge sequence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
POWERFULMOVES added a commit that referenced this pull request May 25, 2026
* chore(.gitmodules): correct stale branch records for 6 submodules tracking main

Audit (post-#1531) revealed 6 submodules where the gitlink in parent's
HEAD points to a SHA on the submodule's `main` branch, but `.gitmodules`
still records `branch = PMOVES.AI-Edition-Hardened`. The recorded branch
is no longer the active development line — running
`git submodule update --remote` against these entries would *regress*
the gitlink to a stale PMOVES.AI-Edition-Hardened tip rather than
advance to current HEAD.

Corrected entries (branch: PMOVES.AI-Edition-Hardened -> main):
- PMOVES-E2B-Danger-Room
- PMOVES-Danger-infra
- PMOVES-Pipecat
- PMOVES-MAI-UI
- PMOVES-Headscale
- Pmoves-cipher

Per-submodule verification (each at origin/main parity, 0/0):
- PMOVES-E2B-Danger-Room  HEAD=7a38b33b  origin/main=7a38b33b
- PMOVES-Danger-infra     HEAD=44d80c70  origin/main=44d80c70
- PMOVES-Pipecat          HEAD=a74aa0cc  origin/main=a74aa0cc
- PMOVES-MAI-UI           HEAD=182bcf4d  origin/main=182bcf4d
- PMOVES-Headscale        HEAD=d050dbe9  origin/main=d050dbe9
- Pmoves-cipher           HEAD=c4f8348f  origin/main=c4f8348f

No gitlink SHAs change in this PR — purely a metadata correction so
future `submodule update --remote` and fleet-audit automation
target the right branch.

Out of scope (require individual investigation, deferred):
- PMOVES-BoTZ           (actual=main but flagged in plan Lane B for branch reconciliation)
- PMOVES-BotZ-gateway   (actual=dependabot/pip/... — wrong-branch-tracking)
- PMOVES-transcribe-and-fetch (actual=dependabot/... — covered by PR #1546)
- PMOVES-n8n            (actual=codex/n8n-authoritative-runtime — codex agent scope)
- pmoves-e2b-mcp-server (HEAD not in any remote branch — needs investigation)
- pmoves/integrations/archon (actual=POWERFULMOVES-patch-1 — unusual)

The top-of-file comment "All submodules track PMOVES.AI-Edition-Hardened"
is now stale (it was already stale for ClawZ and skills/*); a follow-up
policy decision is needed on whether to standardize on main or restore
the PMOVES.AI-Edition-Hardened policy. Left unchanged here.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs+ops: CLAUDE.md fleet audit + daily/weekly automation pair

Bundles the audit and the automations that close the gaps it surfaced.

Audit (`pmoves/docs/audit/CLAUDE_MD_AUDIT_2026-05-20.md`):
- 26 CLAUDE.md / .claude/CLAUDE.md files scored across root + top-level
  submodules + pmoves/services + worktree overrides
- Per-file rubric scores, cross-file drift list, P0/P1/P2 priority queue
- One verified false positive: Cipher port drift was already fixed
- Submodule-level fixes already filed as separate PRs (ToKenism #49,
  DoX #170, ClawZ #2, tensorzero #4, Headscale #2, BoTZ #139)

Submodule-count fix (`.claude/CLAUDE.md`):
- Catalog said 20 submodules; `git submodule status` shows 50

Daily digest pair (paired with cloud routine
`trig_01QMXAdArAv8EusKmJPMrcq9`):
- `daily_pmoves_digest.ps1` -- worktree dirty/ahead/behind + light PR
  snapshot, posts to Discord webhook
- `register_daily_digest_task.ps1` -- one-time Windows Task Scheduler
  registration that bakes DISCORD_WEBHOOK_URL into a per-task wrapper

Fleet sweep pair:
- `fleet_stale_node_sweep.ps1` -- weekly tailnet sweep via local
  `tailscale status --json` (no cloud Tailscale connector available),
  flags peers offline > N days, posts to Discord
- `register_fleet_sweep_task.ps1` -- weekly Monday Task Scheduler
  registration

Why local rather than cloud routines: the cloud routine layer can't
reach the tailnet (no Tailscale MCP connector available) and can't see
local worktree state. The daily-digest pair is cloud-for-PRs +
local-for-worktrees; the fleet sweep is local-only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(tasks): keep webhook wrappers outside repo

* fix(scripts): harden webhook wrappers — ACL + whitespace + gitmodules doc

- Add Set-Acl lock-down after Set-Content in both register_*_task.ps1
  wrappers (wrapper contains plaintext DISCORD_WEBHOOK_URL, restrict to
  current user only)
- Tighten DISCORD_WEBHOOK_URL blank-check in daily_pmoves_digest.ps1
  to also reject whitespace-only values
- Update .gitmodules branch strategy header to reflect mixed strategy:
  most modules on PMOVES.AI-Edition-Hardened, E2B/infra + skills/* on main

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Shaela Bello <slbello@uncg.edu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant