Add 20 retroactive edges and sync pending memory updates

- 20 new high-quality edges across 8 project clusters
- Edge types: BUILDS_ON, RELATED_TO, ALTERNATIVE_TO, REQUIRES
- Updated relation metadata on connected memories
- New episode entries and memory files from recent sessions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Cal Corum 2026-02-19 23:34:07 -06:00
parent fed0cf413e
commit 34bb613c57
69 changed files with 848 additions and 38 deletions

View File

@ -268,3 +268,19 @@ Session size: 23 messages, 4 tool calls
## 22:31 - Self-managing n8n server health monitor with sub-workflows
- **Type:** procedure
- **Tags:** n8n, homelab, monitoring, claude-runner, architecture, procedure
## 23:11 - n8n Server Health Monitor refactored to master + sub-workflow pattern
- **Type:** decision
- **Tags:** n8n, monitoring, homelab, architecture, server-diagnostics
## 23:11 - n8n Execute Sub-workflow requires workflowSelector object and active sub-workflow
- **Type:** fix
- **Tags:** n8n, fix, api, workflow
## 23:12 - Server Health Monitor n8n workflow node structure and connections
- **Type:** configuration
- **Tags:** n8n, monitoring, homelab, configuration, server-diagnostics
## 23:12 - Add a new server to n8n health monitoring
- **Type:** procedure
- **Tags:** n8n, monitoring, homelab, server-diagnostics, procedure

View File

@ -6,7 +6,13 @@ tags: [cognitive-memory, claude-code, configuration, compaction, automation]
importance: 0.6
confidence: 0.8
created: "2026-02-19T22:20:13.284077+00:00"
updated: "2026-02-19T22:20:13.284077+00:00"
updated: "2026-02-20T04:32:33.773548+00:00"
relations:
- target: 5cb26f44-8100-413d-8fa1-3668472a7672
type: REQUIRES
direction: outgoing
strength: 0.8
edge_id: 1876b305-57b5-4491-8b87-cb85ae5745f6
---
Updated project CLAUDE.md to automatically run /save-memories when context reaches 25% remaining, replacing the old "ask to update docs" instruction. This ensures session learnings are captured before compaction loses conversational detail. The /save-memories command analyzes the conversation since the last memory save, builds a structured summary, and dispatches a background memory-saver agent. Combined with the SessionEnd hook (session_memory.py) as a safety net, this creates two layers of automatic memory capture: proactive (pre-compaction via /save-memories) and reactive (post-session via hook). The instruction lives in the project CLAUDE.md at /mnt/NV2/Development/claude-home/CLAUDE.md under Core Instructions.

View File

@ -6,7 +6,13 @@ tags: [proxmox, homelab, monitoring, infrastructure, claude-code]
importance: 0.9
confidence: 0.8
created: "2026-02-20T03:39:42.612345+00:00"
updated: "2026-02-20T03:39:42.612345+00:00"
updated: "2026-02-20T05:12:40.005050+00:00"
relations:
- target: 39379120-896b-46cd-befa-b83d09d7556b
type: RELATED_TO
direction: incoming
strength: 0.7
edge_id: 73e5a7b2-8f91-47a0-bb04-cd324eaf8228
---
## LXC 302 — claude-runner

View File

@ -0,0 +1,59 @@
---
id: 39379120-896b-46cd-befa-b83d09d7556b
type: configuration
title: "Server Health Monitor n8n workflow node structure and connections"
tags: [n8n, monitoring, homelab, configuration, server-diagnostics]
importance: 0.7
confidence: 0.8
created: "2026-02-20T05:12:03.317234+00:00"
updated: "2026-02-20T05:12:40.005050+00:00"
relations:
- target: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
type: REQUIRES
direction: outgoing
strength: 0.8
edge_id: 4c71872b-11d1-4def-9da9-63491c229760
- target: 5da4468e-4a1b-481b-bbae-a32108dab33e
type: RELATED_TO
direction: outgoing
strength: 0.7
edge_id: 73e5a7b2-8f91-47a0-bb04-cd324eaf8228
---
## Master Workflow: "Server Health Monitor - Claude Code" (p7XmW23SgCs3hEkY)
7 nodes, active, runs every 5 minutes:
| Node | Type | Purpose |
|------|------|---------|
| Every 5 Minutes | scheduleTrigger v1.2 | 5-min interval |
| Get Server List | ssh v1 | Runs list_servers.sh on CT 302 |
| Split Server List | code v2 | Parses JSON array → one item per server_key |
| Check Each Server | executeWorkflow v1.1 | Calls sub-workflow, mode: "each" |
| Aggregate Results | code v2 | Collects results, counts healthy/remediated/escalated |
| Any Escalations? | if v2 | Checks has_escalations boolean |
| Discord Summary | httpRequest v4.2 | Sends embed to Discord webhook (escalation branch only) |
Flow: Schedule → SSH → Code → Sub-workflow → Code → If → Discord
## Sub-Workflow: "Server Health Check" (BhzYmWr6NcIDoioy)
7 nodes, active, triggered by parent:
| Node | Type | Purpose |
|------|------|---------|
| Execute Workflow Trigger | executeWorkflowTrigger v1.1 | Receives {server_key}, passthrough mode |
| Run Health Check | ssh v1 | health_check.py --server {server_key} |
| Parse Result | code v2 | Parses JSON, extracts status/exit_code/issues |
| Needs Escalation? | if v2 | exit_code == 2 check |
| Claude Remediation | ssh v1 | Runs remediate.sh (true branch) |
| Return Escalated Results | code v2 | Normalizes output with remediation_output |
| Return Normal Results | code v2 | Normalizes output (false branch) |
## Discord Webhook
URL: `https://discord.com/api/webhooks/1451783909409816763/O9PMDiNt6ZIWRf8HKocIZ_E4vMGV_lEwq50aAiZ9HVFR2UGwO6J1N9_wOm82p0MetIqT`
## Settings
- executionOrder: v1
- timezone: America/Chicago
- callerPolicy: workflowsFromSameOwner

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, claude-code, agents, architecture]
importance: 0.7
confidence: 0.8
created: "2026-02-16T20:15:49.827270+00:00"
updated: "2026-02-16T20:15:49.827270+00:00"
updated: "2026-02-20T04:32:07.169669+00:00"
relations:
- target: 8a2f30f0-137d-4390-9252-22c4eb565046
type: ALTERNATIVE_TO
direction: outgoing
strength: 0.9
edge_id: 5c874e03-7119-4747-87bc-dff11e08328c
---
Created .claude/agents/live-series-card-update-agent.md for Paper Dynasty card-creation project. Mirrors the retrosheet agent pattern with live-series-specific differences:

View File

@ -6,7 +6,13 @@ tags: [proxmox, homelab, openclaw, infrastructure, cleanup]
importance: 0.6
confidence: 0.8
created: "2026-02-19T17:13:31.147499+00:00"
updated: "2026-02-19T17:16:52.507526+00:00"
updated: "2026-02-20T04:32:38.480124+00:00"
relations:
- target: 76f14cf3-97d0-4962-8d26-bf375948b460
type: RELATED_TO
direction: incoming
strength: 0.8
edge_id: dc2bea7d-5a66-44cf-b8a2-0725446d5bb5
---
## LXC 300 Shut Down (2026-02-19) — Was Running OpenClaw

View File

@ -0,0 +1,59 @@
---
id: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
type: decision
title: "n8n Server Health Monitor refactored to master + sub-workflow pattern"
tags: [n8n, monitoring, homelab, architecture, server-diagnostics]
importance: 0.8
confidence: 0.8
created: "2026-02-20T05:11:37.810671+00:00"
updated: "2026-02-20T05:12:38.405071+00:00"
relations:
- target: 62ee21e8-2b56-4d38-a73d-47e2724f08c6
type: BUILDS_ON
direction: outgoing
strength: 0.9
edge_id: 4fe26e78-998a-4524-8323-63b82348c1ca
- target: 2268393f-b90f-4ae8-9995-4b942ed2b2f7
type: BUILDS_ON
direction: outgoing
strength: 0.9
edge_id: a9109127-1691-4cea-a957-8d55320281d7
- target: 39379120-896b-46cd-befa-b83d09d7556b
type: REQUIRES
direction: incoming
strength: 0.8
edge_id: 4c71872b-11d1-4def-9da9-63491c229760
- target: e085b8bf-6fbf-4fb7-aded-4d2d651fc2e6
type: SOLVES
direction: incoming
strength: 0.9
edge_id: dbe6bb9d-e5ac-4618-ba1e-c973df6313a4
- target: f3a41c4a-7970-4bdd-be65-ded62b0d32f7
type: FOLLOWS
direction: incoming
strength: 0.8
edge_id: 88e1e2f2-15d8-4608-92cb-1d5b05e11f80
---
## Decision
Refactored the monolithic "Server Health Monitor - Claude Code" n8n workflow (`p7XmW23SgCs3hEkY`) into a master + sub-workflow architecture.
## Architecture
**Master workflow** (p7XmW23SgCs3hEkY): Schedule (5min) → SSH Get Server List → Split → Execute Sub-workflow (each) → Aggregate → If Escalations → Discord Summary
**Sub-workflow** "Server Health Check" (BhzYmWr6NcIDoioy): Execute Workflow Trigger → SSH health_check.py --server {key} → Parse → If escalation → SSH remediate.sh → Return results
## Rationale
- **Single source of truth**: Server list comes from `config.yaml` on CT 302 via `list_servers.sh` helper script
- **Adding/removing servers**: Only requires editing config.yaml — no n8n changes needed
- **Per-server isolation**: Each server check runs independently in the sub-workflow
- **Selective alerting**: Discord summary only fires when escalations exist (exit_code 2). Tier 1 auto-remediation (exit_code 1) is handled internally by health_check.py + notifier.py
## Key IDs
- Master workflow: `p7XmW23SgCs3hEkY`
- Sub-workflow: `BhzYmWr6NcIDoioy`
- SSH credential: `QkbHQ8JmYimUoTcM` ("SSH Private Key account")
- Helper script: `/root/.claude/skills/server-diagnostics/list_servers.sh` on CT 302

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, python, cli, typer, refactor, decision]
importance: 0.7
confidence: 0.8
created: "2025-12-18T22:08:41.481129+00:00"
updated: "2025-12-18T22:08:41.481129+00:00"
updated: "2026-02-20T04:32:16.702926+00:00"
relations:
- target: c223fd4d-53ec-461a-9d49-b1975e52967c
type: BUILDS_ON
direction: outgoing
strength: 0.9
edge_id: 608bd560-b611-4b3a-aa3a-626ce38d6e9c
---
Refactored paper-dynasty card-creation project from scattered Python scripts to unified Typer CLI. Custom character cards now use YAML profiles instead of per-character Python scripts. CLI structure: pd-cards {custom,live-series,retrosheet,scouting,upload}. Key design decisions: (1) Full project refactor scope, (2) Clean break - no backwards compat, (3) Remove interactive_creator.py in favor of YAML editing + preview/submit commands. Install via uv pip install -e ., run via pd-cards --help.

View File

@ -6,7 +6,13 @@ tags: [proxmox, homelab, infrastructure, cleanup]
importance: 0.8
confidence: 0.8
created: "2026-02-19T17:30:07.489149+00:00"
updated: "2026-02-19T17:30:07.489149+00:00"
updated: "2026-02-20T04:32:38.480124+00:00"
relations:
- target: a9d6f7a1-69d9-41ab-b28c-88f02d21a43b
type: RELATED_TO
direction: outgoing
strength: 0.8
edge_id: dc2bea7d-5a66-44cf-b8a2-0725446d5bb5
---
## Proxmox Guest Cleanup (2026-02-19)

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, claude-code, agents, architecture]
importance: 0.7
confidence: 0.8
created: "2026-02-16T19:34:19.383497+00:00"
updated: "2026-02-16T19:34:19.383497+00:00"
updated: "2026-02-20T04:32:07.169669+00:00"
relations:
- target: 9e1897e8-a5ec-4297-ba85-941dcfe304b9
type: ALTERNATIVE_TO
direction: incoming
strength: 0.9
edge_id: 5c874e03-7119-4747-87bc-dff11e08328c
---
Created .claude/agents/retrosheet-card-update-agent.md for Paper Dynasty card-creation project. Key design decisions:

View File

@ -6,7 +6,13 @@ tags: [major-domo, python, refactor, salary-cap]
importance: 0.5
confidence: 0.8
created: "2025-12-09T23:03:07.253973+00:00"
updated: "2025-12-09T23:03:07.253973+00:00"
updated: "2026-02-20T04:32:54.918830+00:00"
relations:
- target: e5bc69ae-6d11-4ed7-ab72-5cefac4b7962
type: BUILDS_ON
direction: outgoing
strength: 0.9
edge_id: 816ef292-f193-4e26-a58e-042d993efc92
---
Created feature branch feature/dynamic-salary-cap and JSON task plan to replace hardcoded 32.0/32.001 salary cap values with dynamic Team.salary_cap field. Plan includes 8 tasks across helpers.py, draft.py, and transactions.py

View File

@ -0,0 +1,13 @@
---
id: 88e1e2f2-15d8-4608-92cb-1d5b05e11f80
type: FOLLOWS
from_id: f3a41c4a-7970-4bdd-be65-ded62b0d32f7
from_title: "Add a new server to n8n health monitoring"
to_id: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
to_title: "n8n Server Health Monitor refactored to master + sub-workflow pattern"
strength: 0.8
created: "2026-02-20T05:12:38.405071+00:00"
updated: "2026-02-20T05:12:38.405071+00:00"
---
Procedure for adding servers follows from the dynamic config.yaml-driven architecture

View File

@ -0,0 +1,13 @@
---
id: 1f4f5437-82b5-4e47-86ae-808a913cabaa
type: RELATED_TO
from_id: 1679f2be-c8ff-4762-99b1-0978bd753c47
from_title: "Add default ORDER BY id to PackType list endpoint"
to_id: e2244428-f4e6-4f62-ab84-f81e395a8473
to_title: "Added default ordering to StratPlay list endpoint"
strength: 0.85
created: "2026-02-20T04:32:26.261595+00:00"
updated: "2026-02-20T04:32:26.261595+00:00"
---
Same pattern fix: added default ORDER BY id to list endpoints across Paper Dynasty database tables

View File

@ -0,0 +1,13 @@
---
id: 47087f18-d3c6-479b-a097-1dea13393c76
type: RELATED_TO
from_id: 08952bac-ce99-4b92-b9d9-edc9237c6bc6
from_title: "Added default ordering to PitchingStat list endpoint"
to_id: ad7d6151-b1d9-4ee6-b31e-16bd338181f5
to_title: "Added default ORDER BY id to notifications list endpoint"
strength: 0.85
created: "2026-02-20T04:32:29.691769+00:00"
updated: "2026-02-20T04:32:29.691769+00:00"
---
Same pattern fix: added default ORDER BY id to PitchingStat and notifications list endpoints

View File

@ -0,0 +1,13 @@
---
id: 3e6b7961-59e9-49f1-8881-4a5bef50d7b2
type: BUILDS_ON
from_id: 02faab41-da64-4637-b89f-1e4bb0690088
from_title: "Asymmetric offset light switch plate"
to_id: 76aaac4c-f9bd-4de3-b7c0-d84cc4cfc8c3
to_title: "Custom screw holes for extended light switch plate"
strength: 0.85
created: "2026-02-20T04:33:25.334677+00:00"
updated: "2026-02-20T04:33:25.334677+00:00"
---
Asymmetric offset light switch plate extended the custom screw holes approach

View File

@ -0,0 +1,13 @@
---
id: 1876b305-57b5-4491-8b87-cb85ae5745f6
type: REQUIRES
from_id: c0d10ee1-07e1-4697-a6b6-ae7bb1edfcbc
from_title: "Auto-invoke /save-memories at 25% context remaining before compaction"
to_id: 5cb26f44-8100-413d-8fa1-3668472a7672
to_title: "CORE.md auto-load via MEMORY.md symlinks"
strength: 0.8
created: "2026-02-20T04:32:33.773548+00:00"
updated: "2026-02-20T04:32:33.773548+00:00"
---
Auto-invoking /save-memories at 25% context depends on CORE.md auto-load symlinks being in place

View File

@ -0,0 +1,13 @@
---
id: ff9d7164-7090-44ae-a3d5-7cbdd7bc33ef
type: BUILDS_ON
from_id: f7824582-0d80-401e-bd5b-c23ced0b737a
from_title: "Draft monitor missing guild variable"
to_id: e4f0bee9-9dc0-4bff-8d07-ba8aa22ef83d
to_title: "Draft monitor auto-start and on-clock embed"
strength: 0.85
created: "2026-02-20T04:32:58.534513+00:00"
updated: "2026-02-20T04:32:58.534513+00:00"
---
Draft monitor missing guild variable fix addressed a bug in the draft monitor auto-start feature

View File

@ -0,0 +1,13 @@
---
id: cd4dce12-c777-4c55-8660-f1992ff0f243
type: BUILDS_ON
from_id: 83dbebd0-b523-4e4d-9351-b1e4fd81999e
from_title: "DraftList nested Player.team_id extraction bug"
to_id: 7c146559-79b7-4254-84cf-89aa1bc6750a
to_title: "Fix auto-draft nested API parsing"
strength: 0.85
created: "2026-02-20T04:32:13.382771+00:00"
updated: "2026-02-20T04:32:13.382771+00:00"
---
DraftList nested Player.team_id extraction bug was a deeper instance of the auto-draft nested API parsing issue

View File

@ -0,0 +1,13 @@
---
id: 970d7ac1-a8ea-4217-b93b-49f5750d5354
type: BUILDS_ON
from_id: 1695d110-7bcf-4e06-92e1-ffed8f686538
from_title: "Fix numpy X86_V2 CPU compatibility in discord-app"
to_id: 1d3eaf3a-416c-4962-a531-fff4e92c0e66
to_title: "NumPy X86_V2 CPU compatibility fix"
strength: 0.9
created: "2026-02-20T04:32:10.279808+00:00"
updated: "2026-02-20T04:32:10.279808+00:00"
---
Extended the NumPy X86_V2 CPU compatibility fix to discord-app container

View File

@ -0,0 +1,13 @@
---
id: 5dc33849-ea41-468e-99a8-4610f2da2c2e
type: BUILDS_ON
from_id: 7888f693-4914-437b-97f0-81906fbfe69e
from_title: "Fix Player model validation in draft pick test"
to_id: c29d2fb4-d2f6-46e9-a95a-8d6ae4110db8
to_title: "Fix SOAK and DraftList test failures"
strength: 0.85
created: "2026-02-20T04:33:02.463395+00:00"
updated: "2026-02-20T04:33:02.463395+00:00"
---
Player model validation fix in draft pick test extended the earlier SOAK and DraftList test failure fix

View File

@ -0,0 +1,13 @@
---
id: 26b9fefb-45c6-4465-8552-b3b7d2b9c913
type: BUILDS_ON
from_id: 27bbd057-e352-4788-b055-bf55eccf8262
from_title: "Foundry Actor compendium _key prefix"
to_id: 13bd7adb-d1cd-42be-8e14-4f05cfaa95ad
to_title: "Fix Foundry compendium IDs to 16 chars"
strength: 0.85
created: "2026-02-20T04:32:51.421296+00:00"
updated: "2026-02-20T04:32:51.421296+00:00"
---
Foundry Actor compendium _key prefix fix built on the earlier compendium ID length fix

View File

@ -0,0 +1,13 @@
---
id: cd4fb377-d051-457b-8521-89aa39496ec7
type: BUILDS_ON
from_id: 77cf0fb1-9a58-43d2-b1d2-6532bafa6204
from_title: "Gitea Actions: Docker buildx cache auth requires login on all builds"
to_id: 856511bd-a987-48cf-9dfe-ee069f32beea
to_title: "Gitea Actions: Docker buildx registry cache auth fix"
strength: 0.9
created: "2026-02-20T04:32:04.248740+00:00"
updated: "2026-02-20T04:32:04.248740+00:00"
---
Extended the Docker buildx cache auth fix to require login on all builds, not just initial ones

View File

@ -0,0 +1,13 @@
---
id: 5c874e03-7119-4747-87bc-dff11e08328c
type: ALTERNATIVE_TO
from_id: 9e1897e8-a5ec-4297-ba85-941dcfe304b9
from_title: "Live series card update agent definition created"
to_id: 8a2f30f0-137d-4390-9252-22c4eb565046
to_title: "Retrosheet card update agent definition created"
strength: 0.9
created: "2026-02-20T04:32:07.169669+00:00"
updated: "2026-02-20T04:32:07.169669+00:00"
---
Live series and Retrosheet card update agents are parallel approaches for different card types in Paper Dynasty

View File

@ -0,0 +1,13 @@
---
id: 57492bcf-6e83-4191-a96d-b5b7d562680c
type: RELATED_TO
from_id: ce2a22a6-7c40-449a-9073-289473b00b99
from_title: "[major-domo] fix: use Gitea API for tag creation to avoid branch protection failures"
to_id: 633e06ab-7503-4368-964f-d2ba8071de4b
to_title: "[paper-dynasty] ci: use Gitea API for tag creation instead of git push"
strength: 0.85
created: "2026-02-20T04:32:47.755777+00:00"
updated: "2026-02-20T04:32:47.755777+00:00"
---
Major Domo and Paper Dynasty both iterated on the same Gitea API tag creation fix

View File

@ -0,0 +1,13 @@
---
id: dbe6bb9d-e5ac-4618-ba1e-c973df6313a4
type: SOLVES
from_id: e085b8bf-6fbf-4fb7-aded-4d2d651fc2e6
from_title: "n8n Execute Sub-workflow requires workflowSelector object and active sub-workflow"
to_id: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
to_title: "n8n Server Health Monitor refactored to master + sub-workflow pattern"
strength: 0.9
created: "2026-02-20T05:12:35.788366+00:00"
updated: "2026-02-20T05:12:35.788366+00:00"
---
workflowSelector format and activation fix resolved the errors encountered during implementation

View File

@ -0,0 +1,13 @@
---
id: 4fe26e78-998a-4524-8323-63b82348c1ca
type: BUILDS_ON
from_id: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
from_title: "n8n Server Health Monitor refactored to master + sub-workflow pattern"
to_id: 62ee21e8-2b56-4d38-a73d-47e2724f08c6
to_title: "N8N + Claude Code Automated Server Monitoring System"
strength: 0.9
created: "2026-02-20T05:12:29.645439+00:00"
updated: "2026-02-20T05:12:29.645439+00:00"
---
Refactored the original monolithic N8N server monitor into a master + sub-workflow architecture with dynamic server list

View File

@ -0,0 +1,13 @@
---
id: a9109127-1691-4cea-a957-8d55320281d7
type: BUILDS_ON
from_id: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
from_title: "n8n Server Health Monitor refactored to master + sub-workflow pattern"
to_id: 2268393f-b90f-4ae8-9995-4b942ed2b2f7
to_title: "Self-managing n8n server health monitor with sub-workflows"
strength: 0.9
created: "2026-02-20T05:12:31.004470+00:00"
updated: "2026-02-20T05:12:31.004470+00:00"
---
Implementation of the plan outlined in the sub-workflow procedure memory

View File

@ -0,0 +1,13 @@
---
id: 415bba1f-54c1-420e-966b-4f1b14f0a727
type: RELATED_TO
from_id: 40e194b2-3d50-4698-89be-d0db08349882
from_title: "[paper-dynasty] ci: Use Gitea API for tag creation to avoid branch protection issues"
to_id: ce2a22a6-7c40-449a-9073-289473b00b99
to_title: "[major-domo] fix: use Gitea API for tag creation to avoid branch protection failures"
strength: 0.9
created: "2026-02-20T04:32:42.044459+00:00"
updated: "2026-02-20T04:32:42.044459+00:00"
---
Same fix applied across repos: Gitea API for tag creation instead of git push to avoid branch protection failures

View File

@ -0,0 +1,13 @@
---
id: 217d7a25-b52d-4bf8-bffb-25d08176cb87
type: BUILDS_ON
from_id: d452d77f-03cd-4524-9fda-f8081e32032c
from_title: "Parametric OpenSCAD light switch plates"
to_id: 02faab41-da64-4637-b89f-1e4bb0690088
to_title: "Asymmetric offset light switch plate"
strength: 0.85
created: "2026-02-20T04:33:23.782003+00:00"
updated: "2026-02-20T04:33:23.782003+00:00"
---
Parametric OpenSCAD light switch plate system built on the asymmetric offset solution

View File

@ -0,0 +1,13 @@
---
id: db0f07d6-ccb5-46f6-8882-5c5e728391c0
type: BUILDS_ON
from_id: d452d77f-03cd-4524-9fda-f8081e32032c
from_title: "Parametric OpenSCAD light switch plates"
to_id: 76aaac4c-f9bd-4de3-b7c0-d84cc4cfc8c3
to_title: "Custom screw holes for extended light switch plate"
strength: 0.85
created: "2026-02-20T04:33:21.673666+00:00"
updated: "2026-02-20T04:33:21.673666+00:00"
---
Parametric OpenSCAD light switch plate system built on the custom screw holes solution

View File

@ -0,0 +1,13 @@
---
id: 608bd560-b611-4b3a-aa3a-626ce38d6e9c
type: BUILDS_ON
from_id: 4ab58629-ee98-4ca6-ae31-9679cf0aa4a0
from_title: "pd-cards CLI refactor with Typer + YAML profiles"
to_id: c223fd4d-53ec-461a-9d49-b1975e52967c
to_title: "pd-cards CLI complete migration"
strength: 0.9
created: "2026-02-20T04:32:16.702926+00:00"
updated: "2026-02-20T04:32:16.702926+00:00"
---
The Typer + YAML profiles refactor decision led to the complete pd-cards CLI migration

View File

@ -0,0 +1,13 @@
---
id: dc2bea7d-5a66-44cf-b8a2-0725446d5bb5
type: RELATED_TO
from_id: 76f14cf3-97d0-4962-8d26-bf375948b460
from_title: "Proxmox guest cleanup: removed 14 VMs/LXCs before Phase 2 upgrade"
to_id: a9d6f7a1-69d9-41ab-b28c-88f02d21a43b
to_title: "LXC 300 was OpenClaw (migrated from LXC 224) - shut down intentionally"
strength: 0.8
created: "2026-02-20T04:32:38.480124+00:00"
updated: "2026-02-20T04:32:38.480124+00:00"
---
LXC 300 (OpenClaw) was one of the 14 guests removed during the Proxmox guest cleanup before PVE 8→9 upgrade

View File

@ -0,0 +1,13 @@
---
id: 816ef292-f193-4e26-a58e-042d993efc92
type: BUILDS_ON
from_id: ed9e1e96-f7ef-4594-b88f-65cb2decee87
from_title: "Salary cap refactor plan created"
to_id: e5bc69ae-6d11-4ed7-ab72-5cefac4b7962
to_title: "Salary cap helper functions added"
strength: 0.9
created: "2026-02-20T04:32:54.918830+00:00"
updated: "2026-02-20T04:32:54.918830+00:00"
---
Salary cap refactor plan decision led to the implementation of salary cap helper functions

View File

@ -0,0 +1,13 @@
---
id: 73e5a7b2-8f91-47a0-bb04-cd324eaf8228
type: RELATED_TO
from_id: 39379120-896b-46cd-befa-b83d09d7556b
from_title: "Server Health Monitor n8n workflow node structure and connections"
to_id: 5da4468e-4a1b-481b-bbae-a32108dab33e
to_title: "CT 302 claude-runner provisioned for server diagnostics"
strength: 0.7
created: "2026-02-20T05:12:40.005050+00:00"
updated: "2026-02-20T05:12:40.005050+00:00"
---
Workflow nodes SSH into CT 302 which hosts the server diagnostics skill

View File

@ -0,0 +1,13 @@
---
id: 4c71872b-11d1-4def-9da9-63491c229760
type: REQUIRES
from_id: 39379120-896b-46cd-befa-b83d09d7556b
from_title: "Server Health Monitor n8n workflow node structure and connections"
to_id: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
to_title: "n8n Server Health Monitor refactored to master + sub-workflow pattern"
strength: 0.8
created: "2026-02-20T05:12:33.393394+00:00"
updated: "2026-02-20T05:12:33.393394+00:00"
---
Node structure configuration details require the architecture decision for context

View File

@ -0,0 +1,13 @@
---
id: b259b663-b450-4674-ba79-0c48559dd4b6
type: BUILDS_ON
from_id: 8cc7f4d2-5e43-4fe1-9d91-ea3c25695d36
from_title: "Vagabond RPG critical data model additions"
to_id: 9980febe-1b20-4f6b-b19d-b67a49e5308c
to_title: "Vagabond RPG important data model enhancements"
strength: 0.85
created: "2026-02-20T04:33:16.160112+00:00"
updated: "2026-02-20T04:33:16.160112+00:00"
---
Critical Vagabond RPG data model additions built on the earlier important data model enhancements

View File

@ -0,0 +1,13 @@
---
id: 3567dee4-2b38-422f-8c9c-936ff61bc43f
type: BUILDS_ON
from_id: 9980febe-1b20-4f6b-b19d-b67a49e5308c
from_title: "Vagabond RPG important data model enhancements"
to_id: cdd7d15d-a7b6-4780-8424-931fb2222e48
to_title: "Vagabond RPG minor data model improvements"
strength: 0.85
created: "2026-02-20T04:33:18.385430+00:00"
updated: "2026-02-20T04:33:18.385430+00:00"
---
Important Vagabond RPG data model enhancements built on the initial minor data model improvements

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, postgresql, migration]
importance: 0.6
confidence: 0.8
created: "2026-02-01T01:29:10.248090+00:00"
updated: "2026-02-01T01:29:10.248090+00:00"
updated: "2026-02-20T04:32:26.261595+00:00"
relations:
- target: e2244428-f4e6-4f62-ab84-f81e395a8473
type: RELATED_TO
direction: outgoing
strength: 0.85
edge_id: 1f4f5437-82b5-4e47-86ae-808a913cabaa
---
Modified GET /api/v2/packtypes endpoint to include default ordering: PackType.select().order_by(PackType.id). This ensures consistent row ordering for PostgreSQL migration compatibility.

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, postgresql, migration, ordering]
importance: 0.6
confidence: 0.8
created: "2026-02-01T01:29:12.408391+00:00"
updated: "2026-02-01T01:29:12.408391+00:00"
updated: "2026-02-20T04:32:29.691769+00:00"
relations:
- target: 08952bac-ce99-4b92-b9d9-edc9237c6bc6
type: RELATED_TO
direction: incoming
strength: 0.85
edge_id: 47087f18-d3c6-479b-a097-1dea13393c76
---
Modified GET /api/v2/notifs endpoint in app/routers_v2/notifications.py to add order_by(Notification.id) to ensure consistent row ordering for PostgreSQL migration compatibility.

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, postgresql, migration, ordering]
importance: 0.6
confidence: 0.8
created: "2026-02-01T01:31:43.245752+00:00"
updated: "2026-02-01T01:31:43.245752+00:00"
updated: "2026-02-20T04:32:29.691769+00:00"
relations:
- target: ad7d6151-b1d9-4ee6-b31e-16bd338181f5
type: RELATED_TO
direction: outgoing
strength: 0.85
edge_id: 47087f18-d3c6-479b-a097-1dea13393c76
---
Added .order_by(PitchingStat.id) to the main GET list endpoint in pitstats.py (line 61) to ensure consistent row ordering for PostgreSQL compatibility. The query now reads: PitchingStat.select().join(Card).join(Player).order_by(PitchingStat.id)

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, postgresql, migration]
importance: 0.6
confidence: 0.8
created: "2026-02-01T01:31:38.558200+00:00"
updated: "2026-02-01T01:31:38.558200+00:00"
updated: "2026-02-20T04:32:26.261595+00:00"
relations:
- target: 1679f2be-c8ff-4762-99b1-0978bd753c47
type: RELATED_TO
direction: incoming
strength: 0.85
edge_id: 1f4f5437-82b5-4e47-86ae-808a913cabaa
---
Added .order_by(StratPlay.id) to StratPlay.select() in the GET list endpoint (line 180 of stratplays.py). This ensures consistent row ordering when querying StratPlay records, which is critical for PostgreSQL compatibility where result ordering is not guaranteed without explicit ORDER BY clause.

View File

@ -6,7 +6,13 @@ tags: [major-domo, python, fix, discord, draft]
importance: 0.6
confidence: 0.8
created: "2025-12-13T00:46:25.432142+00:00"
updated: "2025-12-13T00:46:25.432142+00:00"
updated: "2026-02-20T04:32:58.534513+00:00"
relations:
- target: e4f0bee9-9dc0-4bff-8d07-ba8aa22ef83d
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: ff9d7164-7090-44ae-a3d5-7cbdd7bc33ef
---
Bug: The _post_on_clock_announcement method in tasks/draft_monitor.py referenced 'guild' variable without defining it, causing role pings to silently fail after auto-draft picks. Fix: Added guild lookup from bot.get_guild(config.guild_id) at the start of the method. This was causing the draft results ping to not post the team role mention.

View File

@ -6,7 +6,13 @@ tags: [major-domo, python, fix, draft, pydantic, nested-objects]
importance: 0.7
confidence: 0.8
created: "2025-12-11T18:25:14.873571+00:00"
updated: "2025-12-11T18:25:14.873571+00:00"
updated: "2026-02-20T04:32:13.382771+00:00"
relations:
- target: 7c146559-79b7-4254-84cf-89aa1bc6750a
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: cd4dce12-c777-4c55-8660-f1992ff0f243
---
Fixed auto-draft failure where player.team_id was None for all DraftList entries. Root cause: Pydantic's default nested object creation calls Player(**data) directly, NOT Player.from_api_data(data). Since Player.from_api_data() extracts team_id from nested team object (line 90), but wasn't being called, player.team_id remained None. Fix: Added DraftList.from_api_data() override that explicitly calls Player.from_api_data() and Team.from_api_data() for nested objects. The check 'player.team_id \!= config.free_agent_team_id' was evaluating 'None \!= 547' = True, skipping ALL players. Files: models/draft_list.py (added from_api_data), tests/test_models.py (added regression test).

View File

@ -6,7 +6,13 @@ tags: [major-domo, python, test-fix, pydantic]
importance: 0.4
confidence: 0.8
created: "2025-12-10T04:30:50.680312+00:00"
updated: "2025-12-10T04:30:50.680312+00:00"
updated: "2026-02-20T04:33:02.463395+00:00"
relations:
- target: c29d2fb4-d2f6-46e9-a95a-8d6ae4110db8
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: 5dc33849-ea41-468e-99a8-4610f2da2c2e
---
Added required fields (wara, image, season, pos_1) to Player instantiation in test_patch_draftpick_success test. The Player Pydantic model requires these fields but the test was only providing id, name, and team.

View File

@ -6,7 +6,18 @@ tags: [major-domo, commit, configuration, creation, debugging, deployment, fix,
importance: 0.7
confidence: 0.8
created: "2026-02-17T23:29:40.554110+00:00"
updated: "2026-02-17T23:29:40.554110+00:00"
updated: "2026-02-20T04:32:47.755777+00:00"
relations:
- target: 40e194b2-3d50-4698-89be-d0db08349882
type: RELATED_TO
direction: incoming
strength: 0.9
edge_id: 415bba1f-54c1-420e-966b-4f1b14f0a727
- target: 633e06ab-7503-4368-964f-d2ba8071de4b
type: RELATED_TO
direction: outgoing
strength: 0.85
edge_id: 57492bcf-6e83-4191-a96d-b5b7d562680c
---
Commits made: 1

View File

@ -0,0 +1,48 @@
---
id: e085b8bf-6fbf-4fb7-aded-4d2d651fc2e6
type: fix
title: "n8n Execute Sub-workflow requires workflowSelector object and active sub-workflow"
tags: [n8n, fix, api, workflow]
importance: 0.7
confidence: 0.8
created: "2026-02-20T05:11:47.869751+00:00"
updated: "2026-02-20T05:12:35.788366+00:00"
relations:
- target: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
type: SOLVES
direction: outgoing
strength: 0.9
edge_id: dbe6bb9d-e5ac-4618-ba1e-c973df6313a4
---
## Problem
When creating an n8n Execute Sub-workflow node (typeVersion 1.1+) via the API/MCP, passing `workflowId` as a plain string like `"BhzYmWr6NcIDoioy"` causes: `"No information about the workflow to execute found. Please provide either the 'id' or 'code'!"`
Even after fixing the format, if the sub-workflow is not activated, it fails with: `"Workflow is not active and cannot be executed."`
## Solution
Two fixes required:
1. **workflowId format**: Must be a workflowSelector object, not a plain string:
```json
{
"workflowId": {
"__rl": true,
"value": "BhzYmWr6NcIDoioy",
"mode": "id"
}
}
```
2. **Sub-workflow must be active**: Even though sub-workflows don't have their own triggers, n8n requires them to be activated before a parent can call them. Activate via API:
```bash
curl -X POST "http://HOST:5678/api/v1/workflows/WORKFLOW_ID/activate" \
-H "X-N8N-API-KEY: $KEY"
```
## Context
- n8n-nodes-base.executeWorkflow typeVersion 1.1+ uses workflowSelector
- typeVersion 1.0 used plain string (but shows "outdated" warning)
- The `callerPolicy: "workflowsFromSameOwner"` setting enforces same-owner access

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, automation, commit, configuration, creation, deployment, f
importance: 0.7
confidence: 0.8
created: "2026-02-17T23:20:22.832133+00:00"
updated: "2026-02-17T23:20:22.832133+00:00"
updated: "2026-02-20T04:32:47.755777+00:00"
relations:
- target: ce2a22a6-7c40-449a-9073-289473b00b99
type: RELATED_TO
direction: incoming
strength: 0.85
edge_id: 57492bcf-6e83-4191-a96d-b5b7d562680c
---
Commits made: 1

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, automation, commit, configuration, creation, debugging, de
importance: 0.7
confidence: 0.8
created: "2026-02-17T23:25:52.871466+00:00"
updated: "2026-02-17T23:25:52.871466+00:00"
updated: "2026-02-20T04:32:42.044459+00:00"
relations:
- target: ce2a22a6-7c40-449a-9073-289473b00b99
type: RELATED_TO
direction: outgoing
strength: 0.9
edge_id: 415bba1f-54c1-420e-966b-4f1b14f0a727
---
Commits made: 1

View File

@ -0,0 +1,38 @@
---
id: f3a41c4a-7970-4bdd-be65-ded62b0d32f7
type: procedure
title: "Add a new server to n8n health monitoring"
tags: [n8n, monitoring, homelab, server-diagnostics, procedure]
importance: 0.7
confidence: 0.8
created: "2026-02-20T05:12:11.465700+00:00"
updated: "2026-02-20T05:12:38.405071+00:00"
relations:
- target: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
type: FOLLOWS
direction: outgoing
strength: 0.8
edge_id: 88e1e2f2-15d8-4608-92cb-1d5b05e11f80
---
## Procedure
To add a new server to the automated health monitoring system, only one file needs editing — no n8n workflow changes required.
## Steps
1. SSH to CT 302: `ssh n8n "ssh -i /root/.ssh/n8n_runner_key root@10.10.0.148"`
2. Edit config.yaml: `vi /root/.claude/skills/server-diagnostics/config.yaml`
3. Add new server entry under `servers:` key with connection details, checks, and thresholds
4. Verify list_servers.sh picks it up: `/root/.claude/skills/server-diagnostics/list_servers.sh`
5. Test health check for new server: `.venv/bin/python health_check.py --server <new-key>`
6. Wait for next 5-minute cycle to confirm in n8n execution history
## Preconditions
- CT 302 can SSH to the target server (homelab_rsa key deployed)
- Target server has the expected services/containers to check
## Postconditions
- list_servers.sh returns the new server key in its JSON array
- n8n master workflow splits to include the new server
- Sub-workflow successfully checks the new server each cycle

View File

@ -6,7 +6,13 @@ tags: [n8n, homelab, monitoring, claude-runner, architecture, procedure]
importance: 0.9
confidence: 0.8
created: "2026-02-20T04:31:58.029736+00:00"
updated: "2026-02-20T04:31:58.029736+00:00"
updated: "2026-02-20T05:12:31.004470+00:00"
relations:
- target: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
type: BUILDS_ON
direction: incoming
strength: 0.9
edge_id: a9109127-1691-4cea-a957-8d55320281d7
---
## Architecture

View File

@ -6,7 +6,18 @@ tags: [openscad-models, openscad, 3d-printing, parametric-design]
importance: 0.5
confidence: 0.8
created: "2025-12-21T00:13:51.810864+00:00"
updated: "2025-12-21T00:13:51.810864+00:00"
updated: "2026-02-20T04:33:25.334677+00:00"
relations:
- target: d452d77f-03cd-4524-9fda-f8081e32032c
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: 217d7a25-b52d-4bf8-bffb-25d08176cb87
- target: 76aaac4c-f9bd-4de3-b7c0-d84cc4cfc8c3
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: 3e6b7961-59e9-49f1-8881-4a5bef50d7b2
---
Created GFCI plate variant with off-center opening. Plate extends 2.5 inches left and 4.5 inches right of the opening (7 inches total width). Used translate() to offset plate_body and back_recess modules while keeping opening and screw holes at origin.

View File

@ -6,7 +6,13 @@ tags: [cognitive-memory, claude-code, automation, configuration]
importance: 0.9
confidence: 0.8
created: "2026-02-16T16:45:34.975722+00:00"
updated: "2026-02-16T16:45:34.975722+00:00"
updated: "2026-02-20T04:32:33.773548+00:00"
relations:
- target: c0d10ee1-07e1-4697-a6b6-ae7bb1edfcbc
type: REQUIRES
direction: incoming
strength: 0.8
edge_id: 1876b305-57b5-4491-8b87-cb85ae5745f6
---
Solved unreliable CORE.md loading at session start. Claude Code auto-injects each project's ~/.claude/projects/<project>/memory/MEMORY.md into the system prompt. Symlinked all project MEMORY.md files to ~/.claude/memory/CORE.md. Script at ~/.local/bin/claude-memory-symlinks refreshes symlinks daily via cognitive-memory-daily.service. Migrated project-specific MEMORY.md content (major-domo infra, strat-gameplay encoding) into cognitive memory before replacing. Updated ~/.claude/CLAUDE.md to remove manual load instruction. Documented in claude-home/development/claude-code-memory-autoload.md.

View File

@ -6,7 +6,18 @@ tags: [openscad-models, openscad, 3d-printing, parametric-design]
importance: 0.4
confidence: 0.8
created: "2025-12-20T23:48:22.837579+00:00"
updated: "2025-12-20T23:48:22.837579+00:00"
updated: "2026-02-20T04:33:25.334677+00:00"
relations:
- target: d452d77f-03cd-4524-9fda-f8081e32032c
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: db0f07d6-ccb5-46f6-8882-5c5e728391c0
- target: 02faab41-da64-4637-b89f-1e4bb0690088
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: 3e6b7961-59e9-49f1-8881-4a5bef50d7b2
---
Added 4-hole pattern to extended GFCI plate: two main horizontal pill-shaped slots (14mm x 5.6mm) and two smaller circular outer holes (2.68mm) offset 0.25 inches beyond. Used BOSL2 rect() with rounding for pill shapes.

View File

@ -6,7 +6,13 @@ tags: [major-domo, discord, draft, python, fix]
importance: 0.7
confidence: 0.8
created: "2025-12-11T05:04:46.922103+00:00"
updated: "2025-12-11T05:04:46.922103+00:00"
updated: "2026-02-20T04:32:58.534513+00:00"
relations:
- target: f7824582-0d80-401e-bd5b-c23ced0b737a
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: ff9d7164-7090-44ae-a3d5-7cbdd7bc33ef
---
Added draft monitor task that auto-starts when timer is enabled via /draft-admin timer or /draft-admin set-pick. Created on-clock announcement embed showing team name, deadline, sWAR, cap space, last 5 picks, and top 5 roster players. Implemented smart polling intervals (30s/15s/5s based on time remaining). Fixed DraftAdminGroup to accept bot parameter for task management. Key files: commands/draft/admin.py, tasks/draft_monitor.py, views/draft_views.py

View File

@ -6,7 +6,13 @@ tags: [major-domo, python, fix, draft, pydantic]
importance: 0.7
confidence: 0.8
created: "2025-12-11T18:53:18.129453+00:00"
updated: "2025-12-11T18:53:18.129453+00:00"
updated: "2026-02-20T04:32:13.382771+00:00"
relations:
- target: 83dbebd0-b523-4e4d-9351-b1e4fd81999e
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: cd4dce12-c777-4c55-8660-f1992ff0f243
---
DraftList.from_api_data() now properly calls Player.from_api_data() for nested player objects, ensuring player.team_id is extracted from the nested team object. Also fixed validate_cap_space() unpacking to accept all 3 return values. Bug: Auto-draft was marking all players as not available because player.team_id was None (None != 547 always True).

View File

@ -6,7 +6,13 @@ tags: [vagabond-rpg, foundryvtt, fix, compendium]
importance: 0.6
confidence: 0.8
created: "2025-12-18T17:04:20.809673+00:00"
updated: "2025-12-18T17:04:20.809673+00:00"
updated: "2026-02-20T04:32:51.421296+00:00"
relations:
- target: 27bbd057-e352-4788-b055-bf55eccf8262
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: 26b9fefb-45c6-4465-8552-b3b7d2b9c913
---
Foundry VTT v13 requires all compendium _id values to be exactly 16 alphanumeric characters. Fixed by using 7-char type prefix (vgbdAnc, vgbdCls, vgbdPrk, etc.) + 9-char name with collision handling via numeric suffixes. Updated 711 files across all compendiums.

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, python, numpy, docker, fix]
importance: 0.7
confidence: 0.8
created: "2026-01-08T20:04:25.371628+00:00"
updated: "2026-01-08T20:04:25.371628+00:00"
updated: "2026-02-20T04:32:10.279808+00:00"
relations:
- target: 1d3eaf3a-416c-4962-a531-fff4e92c0e66
type: BUILDS_ON
direction: outgoing
strength: 0.9
edge_id: 970d7ac1-a8ea-4217-b93b-49f5750d5354
---
Added numpy<2 constraint to discord-app/requirements.txt. Numpy 2.x requires X86_V2 CPU instructions that sba-bots doesn't support, causing cogs.admins and cogs.gameplay to fail loading with RuntimeError. The database repo already had this constraint but discord-app was missing it.

View File

@ -6,7 +6,13 @@ tags: [major-domo, python, test-fix, pydantic]
importance: 0.5
confidence: 0.8
created: "2025-12-09T00:23:12.413916+00:00"
updated: "2025-12-09T00:23:12.413916+00:00"
updated: "2026-02-20T04:33:02.463395+00:00"
relations:
- target: 7888f693-4914-437b-97f0-81906fbfe69e
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: 5dc33849-ea41-468e-99a8-4610f2da2c2e
---
Fixed two test issues in Major Domo discord-app-v2:

View File

@ -6,7 +6,13 @@ tags: [vagabond-rpg, foundryvtt, compendium, fix]
importance: 0.7
confidence: 0.8
created: "2025-12-18T19:15:46.657518+00:00"
updated: "2025-12-18T19:15:46.657518+00:00"
updated: "2026-02-20T04:32:51.421296+00:00"
relations:
- target: 13bd7adb-d1cd-42be-8e14-4f05cfaa95ad
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: 26b9fefb-45c6-4465-8552-b3b7d2b9c913
---
Actor compendiums in Foundry VTT require _key field to use \!actors\! prefix, not \!items\!. The bestiary compendium appeared empty because all 92 JSON files had _key: '\!items\!{id}' instead of _key: '\!actors\!{id}'. Fixed with sed -i 's/\!items\!/\!actors\!/g' on all bestiary source files.

View File

@ -6,7 +6,13 @@ tags: [gitea, docker, ci-cd, buildx, cache, fix]
importance: 0.7
confidence: 0.8
created: "2026-02-13T21:09:47.183681+00:00"
updated: "2026-02-13T21:09:47.183681+00:00"
updated: "2026-02-20T04:32:04.248740+00:00"
relations:
- target: 856511bd-a987-48cf-9dfe-ee069f32beea
type: BUILDS_ON
direction: outgoing
strength: 0.9
edge_id: cd4fb377-d051-457b-8521-89aa39496ec7
---
When using Docker buildx with registry-based cache (cache-from/cache-to type=registry), the Docker Hub login step must run on ALL builds (both PR and main), not just main branch. Without login, PR builds fail on second run with 'push access denied' when trying to write cache layers.

View File

@ -6,7 +6,13 @@ tags: [gitea, docker, ci-cd, fix, buildx, cache]
importance: 0.7
confidence: 0.8
created: "2026-02-13T20:38:30.950917+00:00"
updated: "2026-02-13T20:38:30.950917+00:00"
updated: "2026-02-20T04:32:04.248740+00:00"
relations:
- target: 77cf0fb1-9a58-43d2-b1d2-6532bafa6204
type: BUILDS_ON
direction: incoming
strength: 0.9
edge_id: cd4fb377-d051-457b-8521-89aa39496ec7
---
When using Docker buildx with registry-based cache (cache-from/cache-to type=registry), the Docker Hub login step must run on ALL builds, not just main branch. Without login, PR builds fail on second run with 'push access denied, repository does not exist or may require authorization' when trying to write cache layers.

View File

@ -6,12 +6,17 @@ tags: [n8n, claude-code, automation, docker, monitoring, homelab, discord, ssh,
importance: 0.9
confidence: 0.8
created: "2025-12-20T04:35:53.428069+00:00"
updated: "2025-12-20T04:35:53.428069+00:00"
updated: "2026-02-20T05:12:29.645439+00:00"
relations:
- target: 775506ce-ed06-4c36-95f3-73379855b44a
type: BUILDS_ON
direction: outgoing
strength: 0.5
- target: 7fdc5ceb-4b8c-426d-8492-948d106f92bb
type: BUILDS_ON
direction: incoming
strength: 0.9
edge_id: 4fe26e78-998a-4524-8323-63b82348c1ca
---
Built automated server health monitoring with N8N and Claude Code headless mode.

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, python, docker, numpy, fix]
importance: 0.7
confidence: 0.8
created: "2026-01-07T19:17:16.601527+00:00"
updated: "2026-01-07T19:17:16.601527+00:00"
updated: "2026-02-20T04:32:10.279808+00:00"
relations:
- target: 1695d110-7bcf-4e06-92e1-ffed8f686538
type: BUILDS_ON
direction: incoming
strength: 0.9
edge_id: 970d7ac1-a8ea-4217-b93b-49f5750d5354
---
NumPy 2.x requires X86_V2 instruction set (SSE4.2/AVX) which older server CPUs don't support. When building Docker images locally on newer hardware then deploying to older servers, pin numpy<2 in requirements.txt to use numpy 1.26.x which doesn't have this requirement. Error message: RuntimeError: NumPy was built with baseline optimizations: (X86_V2) but your machine doesn't support: (X86_V2).

View File

@ -6,7 +6,18 @@ tags: [openscad-models, openscad, 3d-printing, parametric-design]
importance: 0.5
confidence: 0.8
created: "2025-12-20T23:42:23.164961+00:00"
updated: "2025-12-20T23:42:23.164961+00:00"
updated: "2026-02-20T04:33:23.782003+00:00"
relations:
- target: 76aaac4c-f9bd-4de3-b7c0-d84cc4cfc8c3
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: db0f07d6-ccb5-46f6-8882-5c5e728391c0
- target: 02faab41-da64-4637-b89f-1e4bb0690088
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: 217d7a25-b52d-4bf8-bffb-25d08176cb87
---
Converted STL light switch plate files to parametric OpenSCAD models. Key features: print-optimized orientation (front face at Z=0 eliminates overhangs on beveled edges), back recess for electrical box, round screw holes, BOSL2 library for clean geometry. Created extended 153x230mm custom plate and 2D SVG template for paper test-fit printing.

View File

@ -6,7 +6,13 @@ tags: [paper-dynasty, python, typer, cli, refactor]
importance: 0.7
confidence: 0.8
created: "2025-12-18T22:39:45.415839+00:00"
updated: "2025-12-18T22:39:45.415839+00:00"
updated: "2026-02-20T04:32:16.702926+00:00"
relations:
- target: 4ab58629-ee98-4ca6-ae31-9679cf0aa4a0
type: BUILDS_ON
direction: incoming
strength: 0.9
edge_id: 608bd560-b611-4b3a-aa3a-626ce38d6e9c
---
Migrated all major card creation workflows to Typer CLI: live-series (update, status), retrosheet (process, arms, validate, defense), scouting (batters, pitchers, all), upload (s3, check, refresh). CLI wrappers configure module globals and call existing async main functions. Pattern: import module, set globals, asyncio.run(module.main()). Updated CLAUDE.md with comprehensive CLI documentation. Legacy scripts remain available.

View File

@ -6,7 +6,13 @@ tags: [major-domo, python, refactor, salary-cap, helpers]
importance: 0.6
confidence: 0.8
created: "2025-12-09T23:09:30.752948+00:00"
updated: "2025-12-09T23:09:30.752948+00:00"
updated: "2026-02-20T04:32:54.918830+00:00"
relations:
- target: ed9e1e96-f7ef-4594-b88f-65cb2decee87
type: BUILDS_ON
direction: incoming
strength: 0.9
edge_id: 816ef292-f193-4e26-a58e-042d993efc92
---
Added get_team_salary_cap() and exceeds_salary_cap() helper functions to helpers.py with DEFAULT_SALARY_CAP=32.0 and SALARY_CAP_TOLERANCE=0.001 constants. These centralize salary cap logic previously hardcoded as 32.0/32.001 across draft.py and transactions.py. Includes 17 unit tests. Part of feature/dynamic-salary-cap branch refactor.

View File

@ -6,7 +6,13 @@ tags: [vagabond-rpg, foundryvtt, data-models, fix]
importance: 0.6
confidence: 0.8
created: "2025-12-12T21:52:24.386526+00:00"
updated: "2025-12-12T21:52:24.386526+00:00"
updated: "2026-02-20T04:33:16.160112+00:00"
relations:
- target: 9980febe-1b20-4f6b-b19d-b67a49e5308c
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: b259b663-b450-4674-ba79-0c48559dd4b6
---
Added critical omissions from rulebook audit: ancestryId reference for characters, studiedDice resource pool (Scholar class d8s), statusEffects array with Countdown Dice support (d6→d4→ends duration tracking), Luck system integration for perks (luckCost/grantsLuck), ritual system for perks (isRitual, ritualDuration, ritualComponents), and relic schema for weapons/armor/equipment (tier, abilities, attunement, uses, lore). Also added effect keys for luck.max and studiedDice.max.

View File

@ -6,7 +6,18 @@ tags: [vagabond-rpg, foundryvtt, data-models, fix]
importance: 0.6
confidence: 0.8
created: "2025-12-12T21:55:34.347497+00:00"
updated: "2025-12-12T21:55:34.347497+00:00"
updated: "2026-02-20T04:33:18.385430+00:00"
relations:
- target: 8cc7f4d2-5e43-4fe1-9d91-ea3c25695d36
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: b259b663-b450-4674-ba79-0c48559dd4b6
- target: cdd7d15d-a7b6-4780-8424-931fb2222e48
type: BUILDS_ON
direction: outgoing
strength: 0.85
edge_id: 3567dee4-2b38-422f-8c9c-936ff61bc43f
---
Added important omissions from rulebook audit: Enhanced customResources with type/subtype/resetOn/data for class-specific tracking (Alchemist Formulae, Hunter's Mark, etc.). Added favorHinder tracking for d20 +/- d6 modifiers. Added movement types (walk/fly/swim/climb/burrow) matching NPC structure. Added focus tracking for maintained spells. Added progression tracking (xpPacing, perksGainedByLevel, statIncreasesByLevel). Enhanced itemSlots with bonuses array and overburdened status. Added weapon material property (mundane/silvered/adamantine/magical). Updated effects helper with movement type keys.

View File

@ -6,7 +6,13 @@ tags: [vagabond-rpg, foundryvtt, data-models, fix]
importance: 0.5
confidence: 0.8
created: "2025-12-12T22:02:33.949362+00:00"
updated: "2025-12-12T22:02:33.949362+00:00"
updated: "2026-02-20T04:33:18.385430+00:00"
relations:
- target: 9980febe-1b20-4f6b-b19d-b67a49e5308c
type: BUILDS_ON
direction: incoming
strength: 0.85
edge_id: 3567dee4-2b38-422f-8c9c-936ff61bc43f
---
Added 16 minor improvements from rulebook audit: CharacterData now has senses (darksight, blindsight, tremorsense, special vision), languages array, rest/breather tracking, travel/exploration tracking, crafting projects, combat positioning (flanking, dual-wielding, zones), casting/trinket tracking, downtime activities, quest tracking, death state, summoned creatures array, and size mechanical effects. NPCData has morale status tracking and senses. ArmorData has medium type and hindersDodge/preventsRage. WeaponData has damage type choices and equippedHand. EquipmentData has isTrinket and canCastThrough.