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:
parent
fed0cf413e
commit
34bb613c57
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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.
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user