Add cross-project pattern registry for retrieval-augmented generalization
- Create patterns/ directory with README, manifest, and 10 initial patterns covering Ollama JSON fallback, API escaping, deprecation, PTY auth, queue-poll, LLM-as-parser, credential rotation, reverse proxy binding, human approval gates, and transient retry. - Wire pattern loading into architecture/pipeline.js based on task tags. - Update architecture/orchestrator.js to load patterns and surface them in the system prompt. - Update MEMORY.md, ARCHITECTURE.md, and CONTEXT.md to document the registry and record the decision.
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"version": "2026-08-06",
|
||||
"description": "Cross-project technical pattern registry for retrieval-augmented generalization",
|
||||
"patterns": [
|
||||
{
|
||||
"id": "ollama-structured-output-fallback",
|
||||
"name": "Ollama Structured Output Fallback",
|
||||
"file": "patterns/ollama-structured-output-fallback.md",
|
||||
"tags": ["ollama", "json", "structured-output", "local-llm", "n8n", "safety-net", "regex"],
|
||||
"affected_projects": [
|
||||
"cyber-tips-newsletter",
|
||||
"proxmox-snapshot-summarizer",
|
||||
"ai-video-generation",
|
||||
"forex-trading-analysis"
|
||||
],
|
||||
"related_patterns": [
|
||||
"json-escaping-downstream-api",
|
||||
"llm-as-parser-fallback"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "json-escaping-downstream-api",
|
||||
"name": "JSON Escaping for Downstream APIs",
|
||||
"file": "patterns/json-escaping-downstream-api.md",
|
||||
"tags": ["json", "escaping", "llm-output", "api-payload", "n8n", "linkedin", "video-generation"],
|
||||
"affected_projects": [
|
||||
"linkedin-automation",
|
||||
"ai-video-generation",
|
||||
"n8n-general"
|
||||
],
|
||||
"related_patterns": [
|
||||
"ollama-structured-output-fallback",
|
||||
"llm-as-parser-fallback"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "api-version-deprecation",
|
||||
"name": "API Version Deprecation",
|
||||
"file": "patterns/api-version-deprecation.md",
|
||||
"tags": ["api", "versioning", "deprecation", "integration", "breaking-change", "linkedin"],
|
||||
"affected_projects": [
|
||||
"linkedin-automation"
|
||||
],
|
||||
"related_patterns": [
|
||||
"credential-rotation-recovery"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pty-device-code-auth",
|
||||
"name": "PTY-Required Device Code Authentication",
|
||||
"file": "patterns/pty-device-code-auth.md",
|
||||
"tags": ["powershell", "pty", "device-code", "authentication", "microsoft-graph", "intune-inspector", "pexpect"],
|
||||
"affected_projects": [
|
||||
"intune-inspector",
|
||||
"m365-admin-toolkit"
|
||||
],
|
||||
"related_patterns": []
|
||||
},
|
||||
{
|
||||
"id": "queue-poll-async-job",
|
||||
"name": "Queue-Poll Async Job Pattern",
|
||||
"file": "patterns/queue-poll-async-job.md",
|
||||
"tags": ["async", "queue", "poll", "long-running", "comfyui", "ollama", "n8n"],
|
||||
"affected_projects": [
|
||||
"ai-video-generation",
|
||||
"n8n-general"
|
||||
],
|
||||
"related_patterns": [
|
||||
"transient-failure-retry"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "llm-as-parser-fallback",
|
||||
"name": "LLM-as-Parser with Structured Fallback",
|
||||
"file": "patterns/llm-as-parser-fallback.md",
|
||||
"tags": ["llm", "parsing", "structured-output", "fallback", "validation", "regex"],
|
||||
"affected_projects": [
|
||||
"cyber-tips-newsletter",
|
||||
"proxmox-snapshot-summarizer",
|
||||
"email-inbox-triage",
|
||||
"monthly-it-newsletter"
|
||||
],
|
||||
"related_patterns": [
|
||||
"ollama-structured-output-fallback",
|
||||
"json-escaping-downstream-api"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "credential-rotation-recovery",
|
||||
"name": "Credential Rotation and External Service Breakage",
|
||||
"file": "patterns/credential-rotation-recovery.md",
|
||||
"tags": ["credentials", "vault", "rotation", "token", "api-key", "secrets", "approle"],
|
||||
"affected_projects": [
|
||||
"n8n-general",
|
||||
"nocodb",
|
||||
"vault"
|
||||
],
|
||||
"related_patterns": [
|
||||
"api-version-deprecation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "reverse-proxy-container-binding",
|
||||
"name": "Reverse Proxy + Container Port Binding",
|
||||
"file": "patterns/reverse-proxy-container-binding.md",
|
||||
"tags": ["reverse-proxy", "nginx-proxy-manager", "docker", "container", "port-binding", "nextcloud"],
|
||||
"affected_projects": [
|
||||
"nextcloud-aio"
|
||||
],
|
||||
"related_patterns": []
|
||||
},
|
||||
{
|
||||
"id": "human-approval-risky-publish",
|
||||
"name": "Human Approval Gate for Risky Publish Operations",
|
||||
"file": "patterns/human-approval-risky-publish.md",
|
||||
"tags": ["approval", "human-in-the-loop", "publish", "email", "linkedin", "client-facing", "risk"],
|
||||
"affected_projects": [
|
||||
"linkedin-automation",
|
||||
"email-inbox-triage",
|
||||
"cyber-tips-newsletter"
|
||||
],
|
||||
"related_patterns": []
|
||||
},
|
||||
{
|
||||
"id": "transient-failure-retry",
|
||||
"name": "Transient Failure Retry and Degradation",
|
||||
"file": "patterns/transient-failure-retry.md",
|
||||
"tags": ["retry", "backoff", "transient", "ollama", "network", "rate-limit", "queue"],
|
||||
"affected_projects": [
|
||||
"n8n-general",
|
||||
"ollama-general"
|
||||
],
|
||||
"related_patterns": [
|
||||
"queue-poll-async-job"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user