sinapse-ai 9.4.0 → 10.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/CLAUDE.md +10 -4
- package/.claude/hooks/enforce-git-push-authority.sh +25 -4
- package/.claude/hooks/verify-packages.cjs +83 -0
- package/.claude/rules/hook-governance.md +1 -0
- package/.claude/rules/mandatory-delegation.md +24 -0
- package/.claude/rules/project-intelligence.md +63 -0
- package/.claude/rules/safe-collaboration.md +4 -2
- package/.claude/rules/security-data-protection.md +18 -0
- package/.claude/rules/squad-awareness.md +93 -67
- package/.codex/agents/analyst.md +90 -0
- package/.codex/agents/architect.md +78 -0
- package/.codex/agents/data-engineer.md +38 -0
- package/.codex/agents/developer.md +97 -0
- package/.codex/agents/devops.md +121 -0
- package/.codex/agents/product-lead.md +27 -0
- package/.codex/agents/project-lead.md +28 -0
- package/.codex/agents/quality-gate.md +89 -0
- package/.codex/agents/sprint-lead.md +28 -0
- package/.codex/agents/squad-creator.md +58 -0
- package/.codex/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
- package/.sinapse-ai/core/ids/registry-updater.js +6 -1
- package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
- package/.sinapse-ai/data/entity-registry.yaml +1348 -907
- package/.sinapse-ai/data/registry-update-log.jsonl +28 -0
- package/.sinapse-ai/development/agents/architect.md +5 -0
- package/.sinapse-ai/development/agents/data-engineer.md +38 -0
- package/.sinapse-ai/development/agents/developer.md +28 -0
- package/.sinapse-ai/development/agents/devops.md +4 -0
- package/.sinapse-ai/development/agents/product-lead.md +27 -0
- package/.sinapse-ai/development/agents/project-lead.md +28 -0
- package/.sinapse-ai/development/agents/quality-gate.md +4 -0
- package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
- package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
- package/.sinapse-ai/development/agents/squad-creator.md +58 -0
- package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
- package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
- package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
- package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
- package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
- package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
- package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
- package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
- package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
- package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
- package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
- package/.sinapse-ai/development/skills/model-router.md +92 -0
- package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
- package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
- package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
- package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
- package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
- package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
- package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
- package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
- package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
- package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
- package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
- package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
- package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
- package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
- package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
- package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
- package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
- package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
- package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
- package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
- package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
- package/.sinapse-ai/install-manifest.yaml +168 -41
- package/.sinapse-ai/internal/aiox-feature-map.md +270 -0
- package/README.en.md +167 -20
- package/README.md +174 -22
- package/bin/cli.js +363 -82
- package/bin/sinapse-graph.js +9 -0
- package/bin/sinapse-minimal.js +20 -9
- package/bin/sinapse.js +9 -0
- package/bin/utils/deprecation-warning.js +46 -0
- package/docs/chrome-brain-upgrade-plan.md +624 -0
- package/docs/framework/orqx-plan.md +1 -1
- package/docs/installation/chrome-brain.md +17 -7
- package/docs/mega-upgrade-orchestration-plan.md +71 -0
- package/docs/pt/contributing.md +20 -0
- package/docs/research-synthesis-for-upgrade.md +511 -0
- package/docs/security-audit-report.md +306 -0
- package/package.json +11 -4
- package/packages/installer/src/detection/detect-project-type.js +181 -63
- package/packages/installer/src/installer/manifest-signature.js +32 -17
- package/packages/installer/src/wizard/i18n.js +12 -0
- package/packages/installer/src/wizard/ide-config-generator.js +5 -0
- package/packages/installer/src/wizard/index.js +119 -14
- package/packages/installer/src/wizard/questions.js +2 -3
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
- package/scripts/coverage-report-summary.js +169 -0
- package/scripts/generate-install-manifest.js +6 -2
- package/scripts/release-readiness.js +169 -0
- package/scripts/validate-install-docs.js +394 -0
- package/scripts/validate-no-external-refs.js +376 -0
- package/scripts/validate-squad-orqx.js +302 -0
- package/scripts/validate-story-meta.js +263 -0
- package/squads/claude-code-mastery/CHANGELOG.md +1 -1
- package/squads/claude-code-mastery/README.md +2 -2
- package/squads/claude-code-mastery/squad.yaml +1 -1
- package/squads/squad-artdir/README.md +90 -0
- package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
- package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
- package/squads/squad-artdir/agents/color-psychologist.md +166 -0
- package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
- package/squads/squad-artdir/agents/design-system-architect.md +100 -0
- package/squads/squad-artdir/agents/ia-architect.md +169 -0
- package/squads/squad-artdir/agents/interaction-designer.md +162 -0
- package/squads/squad-artdir/agents/layout-engineer.md +163 -0
- package/squads/squad-artdir/agents/motion-architect.md +185 -0
- package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
- package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
- package/squads/squad-artdir/agents/product-surface-director.md +86 -0
- package/squads/squad-artdir/agents/type-systemist.md +138 -0
- package/squads/squad-artdir/agents/visual-strategist.md +127 -0
- package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
- package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
- package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
- package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
- package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
- package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
- package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
- package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
- package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
- package/squads/squad-artdir/package.json +20 -0
- package/squads/squad-artdir/squad.yaml +271 -0
- package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
- package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
- package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
- package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
- package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
- package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
- package/squads/squad-artdir/tasks/design-color-system.md +81 -0
- package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
- package/squads/squad-artdir/tasks/design-token-system.md +58 -0
- package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
- package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
- package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
- package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
- package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
- package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
- package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
- package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
- package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
- package/squads/squad-brand/squad.yaml +20 -6
- package/squads/squad-claude/knowledge-base/context-window-optimization.md +1 -1
- package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +2 -2
- package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
- package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
- package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
- package/squads/squad-content/squad.yaml +187 -27
- package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
- package/squads/squad-copy/squad.yaml +19 -4
- package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
- package/squads/squad-design/squad.yaml +19 -4
package/.claude/CLAUDE.md
CHANGED
|
@@ -87,11 +87,17 @@ Use Grep (not grep), Read (not cat), Edit (not sed), Glob (not find). Prefer nat
|
|
|
87
87
|
- Agent memory in `.sinapse-ai/development/agents/{id}/MEMORY.md`
|
|
88
88
|
- **Memory as hints:** Memory entries are hints, NOT ground truth. Always verify against actual codebase before acting on remembered facts.
|
|
89
89
|
|
|
90
|
-
##
|
|
90
|
+
## Token Economy & Response Format (NON-NEGOTIABLE)
|
|
91
91
|
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
Auto-applied to all agents: `~/.claude/rules/token-economy.md` + `~/.claude/rules/response-format.md`. Compact at 60%, model route haiku/sonnet/opus, no preamble, no trailing summary.
|
|
93
|
+
|
|
94
|
+
## Delegation & Anti-Hallucination
|
|
95
|
+
|
|
96
|
+
- Persona switch for sequential work, sub-agent only for parallel (20K+ tokens each)
|
|
97
|
+
- Model routing: `haiku` routine, `sonnet` standard, `opus` complex
|
|
98
|
+
- Sub-agents announce their model for visual verification via statusline
|
|
99
|
+
- `npm view {pkg}` before adding deps. Cite file:line for claims.
|
|
100
|
+
- Mark uncertain claims with [NEEDS VERIFICATION]. Compact at 60%.
|
|
95
101
|
|
|
96
102
|
---
|
|
97
103
|
*SINAPSE v6.0 — CLI First | Observability Second | UI Third*
|
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# enforce-git-push-authority.sh
|
|
3
|
-
# PreToolUse hook: blocks "git push" commands in Bash tool
|
|
4
|
-
#
|
|
3
|
+
# PreToolUse hook: blocks "git push" commands in Bash tool unless active agent is @devops
|
|
4
|
+
# Detects active agent via .sinapse/session-state.json (same pattern as enforce-delegation.cjs)
|
|
5
5
|
# Uses node (not jq) for JSON parsing — works on Windows/Git Bash
|
|
6
|
-
# FAIL-CLOSED: if parsing fails, blocks the command
|
|
7
|
-
# Hardened
|
|
6
|
+
# FAIL-CLOSED: if parsing fails OR session-state is missing/unreadable, blocks the command
|
|
7
|
+
# Hardened v3: adds real agent detection (Story 10.15), retains indirect-execution checks
|
|
8
8
|
|
|
9
9
|
INPUT=$(cat)
|
|
10
10
|
|
|
11
|
+
# Resolve project root consistently with other hooks
|
|
12
|
+
PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
|
|
13
|
+
|
|
14
|
+
# Detect active agent from session state (fail-closed: empty string on any error)
|
|
15
|
+
AGENT=$(node -e "
|
|
16
|
+
const fs = require('fs');
|
|
17
|
+
const path = require('path');
|
|
18
|
+
try {
|
|
19
|
+
const p = path.join(process.argv[1], '.sinapse', 'session-state.json');
|
|
20
|
+
const s = JSON.parse(fs.readFileSync(p, 'utf8'));
|
|
21
|
+
console.log(s.lastAgent || '');
|
|
22
|
+
} catch (e) {
|
|
23
|
+
console.log('');
|
|
24
|
+
}
|
|
25
|
+
" "$PROJECT_ROOT" 2>/dev/null)
|
|
26
|
+
|
|
27
|
+
# If active agent is @devops, allow the command immediately (AC 1)
|
|
28
|
+
if [ "$AGENT" = "devops" ]; then
|
|
29
|
+
exit 0
|
|
30
|
+
fi
|
|
31
|
+
|
|
11
32
|
# Extract command from JSON using node (available on all SINAPSE systems)
|
|
12
33
|
COMMAND=$(echo "$INPUT" | node -e "
|
|
13
34
|
let d='';
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* verify-packages.cjs — Slopsquatting Prevention Hook
|
|
4
|
+
*
|
|
5
|
+
* Blocks `npm install`/`npm add` commands that reference packages
|
|
6
|
+
* not found on the npm registry. Prevents installation of hallucinated
|
|
7
|
+
* (fabricated) packages that attackers may register with malicious code.
|
|
8
|
+
*
|
|
9
|
+
* Research: 19.7% of packages recommended by LLMs are fabricated.
|
|
10
|
+
* Source: arXiv study, 576K samples across 16 models.
|
|
11
|
+
*
|
|
12
|
+
* Hook type: PreToolUse (Bash)
|
|
13
|
+
* Exit 0 = allow, Exit 2 = block
|
|
14
|
+
*/
|
|
15
|
+
'use strict';
|
|
16
|
+
|
|
17
|
+
const { execSync } = require('child_process');
|
|
18
|
+
|
|
19
|
+
let input = '';
|
|
20
|
+
process.stdin.setEncoding('utf8');
|
|
21
|
+
process.stdin.on('data', (d) => { input += d; });
|
|
22
|
+
process.stdin.on('end', () => {
|
|
23
|
+
try {
|
|
24
|
+
const data = JSON.parse(input);
|
|
25
|
+
const command = (data.tool_input && data.tool_input.command) || '';
|
|
26
|
+
|
|
27
|
+
// Only check direct npm install/add commands (not text in PR bodies, etc.)
|
|
28
|
+
// Skip if command is gh, curl, echo, or other non-npm commands
|
|
29
|
+
const trimmed = command.trim();
|
|
30
|
+
if (trimmed.startsWith('gh ') || trimmed.startsWith('curl ') || trimmed.startsWith('echo ')) process.exit(0);
|
|
31
|
+
const installMatch = trimmed.match(/^npm\s+(install|add|i)\s+(.+)/m);
|
|
32
|
+
if (!installMatch) process.exit(0);
|
|
33
|
+
|
|
34
|
+
const argsStr = installMatch[2];
|
|
35
|
+
|
|
36
|
+
// Extract package names, skipping flags (--save-dev, -D, etc.)
|
|
37
|
+
const tokens = argsStr.split(/\s+/).filter(t => !t.startsWith('-'));
|
|
38
|
+
if (tokens.length === 0) process.exit(0);
|
|
39
|
+
|
|
40
|
+
const failed = [];
|
|
41
|
+
for (const token of tokens) {
|
|
42
|
+
// Strip version specifier: pkg@1.0.0 -> pkg, @org/pkg@^2 -> @org/pkg
|
|
43
|
+
let pkgName;
|
|
44
|
+
if (token.startsWith('@')) {
|
|
45
|
+
// Scoped package: @org/pkg@version
|
|
46
|
+
const slashIdx = token.indexOf('/');
|
|
47
|
+
if (slashIdx === -1) continue; // malformed, skip
|
|
48
|
+
const afterSlash = token.substring(slashIdx + 1);
|
|
49
|
+
const atIdx = afterSlash.indexOf('@');
|
|
50
|
+
pkgName = atIdx > 0
|
|
51
|
+
? token.substring(0, slashIdx + 1 + atIdx)
|
|
52
|
+
: token;
|
|
53
|
+
} else {
|
|
54
|
+
const atIdx = token.indexOf('@');
|
|
55
|
+
pkgName = atIdx > 0 ? token.substring(0, atIdx) : token;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Skip if it looks like a local path or URL
|
|
59
|
+
if (pkgName.startsWith('.') || pkgName.startsWith('/') || pkgName.includes('://')) continue;
|
|
60
|
+
if (pkgName.endsWith('.tgz') || pkgName.endsWith('.tar.gz')) continue;
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
execSync(`npm view "${pkgName}" name`, { timeout: 8000, stdio: 'pipe' });
|
|
64
|
+
} catch {
|
|
65
|
+
failed.push(pkgName);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (failed.length > 0) {
|
|
70
|
+
const names = failed.map(n => `'${n}'`).join(', ');
|
|
71
|
+
const msg = failed.length === 1
|
|
72
|
+
? `BLOCKED: Package ${names} not found on npm. This may be a hallucinated package (slopsquatting).`
|
|
73
|
+
: `BLOCKED: Packages ${names} not found on npm. These may be hallucinated packages (slopsquatting).`;
|
|
74
|
+
process.stderr.write(msg + '\n');
|
|
75
|
+
process.exit(2);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
process.exit(0);
|
|
79
|
+
} catch {
|
|
80
|
+
// Fail-open: if hook crashes, allow the operation
|
|
81
|
+
process.exit(0);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
@@ -14,6 +14,7 @@ paths:
|
|
|
14
14
|
| Hook | Purpose | Behavior |
|
|
15
15
|
|------|---------|----------|
|
|
16
16
|
| `enforce-git-push-authority.sh` | Art. II — Only @devops can push | BLOCK (deny) |
|
|
17
|
+
| `verify-packages.cjs` | Security — Block hallucinated npm packages (slopsquatting) | BLOCK (exit 2) |
|
|
17
18
|
| `sql-governance.py` | Security — Block dangerous SQL | BLOCK (exit 2) |
|
|
18
19
|
| `enforce-delegation.cjs` | Art. VIII — Orchestrators can't execute | BLOCK (exit 2) |
|
|
19
20
|
|
|
@@ -91,6 +91,30 @@ Everything OUTSIDE their orchestration domain MUST be delegated.
|
|
|
91
91
|
- Saying "vou fazer isso eu mesmo" instead of delegating
|
|
92
92
|
- Absorbing a request and executing it instead of routing
|
|
93
93
|
|
|
94
|
+
## Universal Auto-Routing (users should NEVER call agents manually)
|
|
95
|
+
|
|
96
|
+
Users are NOT AI experts. The system MUST understand natural language and route automatically.
|
|
97
|
+
|
|
98
|
+
**On EVERY user message (not just orchestrator):**
|
|
99
|
+
1. Detect the domain of the request
|
|
100
|
+
2. If a specialist exists → delegate automatically (no confirmation needed)
|
|
101
|
+
3. Brief acknowledgment: "Delegando para @specialist..."
|
|
102
|
+
4. Return the result to the user
|
|
103
|
+
|
|
104
|
+
**Auto-detect project state on first interaction:**
|
|
105
|
+
- Check for `.sinapse-ai/` → SINAPSE-managed (continue SDC)
|
|
106
|
+
- Check for `package.json` or `.git` → Brownfield (run quick tech scan first)
|
|
107
|
+
- Empty directory → Greenfield (ask project type, scaffold)
|
|
108
|
+
|
|
109
|
+
**Cross-agent handoff (automatic, never ask user):**
|
|
110
|
+
- Agent needs git push → auto-delegate to @devops
|
|
111
|
+
- Agent needs tests → auto-delegate to @quality-gate
|
|
112
|
+
- Agent needs schema → auto-delegate to @data-engineer
|
|
113
|
+
- Agent needs story → auto-create via fast-track or @sprint-lead
|
|
114
|
+
- Agent needs architecture decision → auto-delegate to @architect
|
|
115
|
+
|
|
94
116
|
## Enforcement
|
|
95
117
|
|
|
96
118
|
Any response from an orchestrator that contains direct domain work (code, schema, copy, etc.) without having first delegated to the appropriate specialist is a **constitutional violation** and must be corrected immediately.
|
|
119
|
+
|
|
120
|
+
Any response that asks the user to manually invoke an agent (showing `@agent-name` or `/SINAPSE:agents:...` commands) instead of auto-routing is a **UX violation** — the system should just do it.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Project Intelligence — Auto-Detection (NON-NEGOTIABLE)
|
|
2
|
+
|
|
3
|
+
> Applies to ALL agents, ALL sessions. Users NEVER configure project type manually.
|
|
4
|
+
|
|
5
|
+
## Auto-Detect on First Interaction
|
|
6
|
+
|
|
7
|
+
Before ANY work, silently detect project state:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
1. Check: does .sinapse-ai/ exist?
|
|
11
|
+
YES → SINAPSE-managed project. Read core-config.yaml for context.
|
|
12
|
+
NO → Continue to step 2.
|
|
13
|
+
|
|
14
|
+
2. Check: is directory empty (or only has .git)?
|
|
15
|
+
YES → GREENFIELD. Ask project type, then scaffold.
|
|
16
|
+
NO → Continue to step 3.
|
|
17
|
+
|
|
18
|
+
3. Check: does package.json or .git exist?
|
|
19
|
+
YES → BROWNFIELD. Run quick tech scan, then proceed.
|
|
20
|
+
NO → UNKNOWN. Ask user what they want to build.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick Tech Scan (BROWNFIELD, < 5 seconds)
|
|
24
|
+
|
|
25
|
+
When brownfield detected, silently check:
|
|
26
|
+
|
|
27
|
+
| Check | How | Sets Context |
|
|
28
|
+
|-------|-----|-------------|
|
|
29
|
+
| Framework | package.json dependencies | next/react/vue/angular/express |
|
|
30
|
+
| Language | tsconfig.json exists? | typescript/javascript |
|
|
31
|
+
| Database | supabase/, prisma/, .env | supabase/prisma/drizzle/none |
|
|
32
|
+
| Tests | jest.config, vitest.config | jest/vitest/none |
|
|
33
|
+
| CI | .github/workflows/ | github-actions/none |
|
|
34
|
+
|
|
35
|
+
Report to user in ONE line: "Projeto Next.js + TypeScript + Supabase detectado."
|
|
36
|
+
|
|
37
|
+
## Behavior Adaptation by State
|
|
38
|
+
|
|
39
|
+
### Greenfield Behavior
|
|
40
|
+
- Prioritize: scaffolding, architecture decisions, project setup
|
|
41
|
+
- Workflow: setup → story → implement (no brownfield discovery needed)
|
|
42
|
+
- Auto-apply: infra templates (PR template, CI, .env.example, CODEOWNERS)
|
|
43
|
+
- Ask: "Que tipo de projeto? (web app, API, SaaS, landing page)"
|
|
44
|
+
|
|
45
|
+
### Brownfield Behavior
|
|
46
|
+
- Prioritize: understanding existing code before changing anything
|
|
47
|
+
- First action: read README, package.json, folder structure
|
|
48
|
+
- Workflow: quick scan → understand → then proceed with user request
|
|
49
|
+
- NEVER rewrite or refactor without understanding existing patterns
|
|
50
|
+
- Respect existing conventions (naming, folder structure, testing framework)
|
|
51
|
+
|
|
52
|
+
### SINAPSE-Managed Behavior
|
|
53
|
+
- Check for active story in docs/stories/
|
|
54
|
+
- Resume where last session left off
|
|
55
|
+
- Follow SDC workflow (story → implement → QA → push)
|
|
56
|
+
|
|
57
|
+
## Anti-Patterns (FORBIDDEN)
|
|
58
|
+
|
|
59
|
+
- Asking user "is this a new or existing project?"
|
|
60
|
+
- Asking user to set `projectType` in config
|
|
61
|
+
- Starting implementation in brownfield without reading existing code first
|
|
62
|
+
- Applying greenfield templates to a brownfield project (overwriting existing CI/configs)
|
|
63
|
+
- Ignoring existing patterns and imposing SINAPSE conventions forcefully
|
|
@@ -91,8 +91,10 @@ Types: `feat`, `fix`, `refactor`, `docs`, `chore`, `test`
|
|
|
91
91
|
After push, the agent MUST:
|
|
92
92
|
```
|
|
93
93
|
1. gh pr create with clear title and description (uses PR template)
|
|
94
|
-
2. Auto-assign
|
|
95
|
-
|
|
94
|
+
2. Auto-assign reviewer based on who is pushing:
|
|
95
|
+
- Caio's PR → Caio can merge directly (admin bypass)
|
|
96
|
+
- Matheus's PR → Assign @caioimori as reviewer (required approval)
|
|
97
|
+
3. Inform the user: "PR criado"
|
|
96
98
|
```
|
|
97
99
|
|
|
98
100
|
### 6. After PR Merge — Cleanup
|
|
@@ -98,6 +98,24 @@ db.query('SELECT * FROM users WHERE name = $1', [input]);
|
|
|
98
98
|
supabase.from('users').select('*').eq('name', input);
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
+
### RLS Performance Optimization (research-backed, ~95% improvement)
|
|
102
|
+
|
|
103
|
+
```sql
|
|
104
|
+
-- SLOW: auth.uid() called per-row (function call overhead)
|
|
105
|
+
CREATE POLICY "bad" ON items USING (auth.uid() = user_id);
|
|
106
|
+
|
|
107
|
+
-- FAST: subselect evaluates once per query (~95% faster)
|
|
108
|
+
CREATE POLICY "good" ON items USING ((SELECT auth.uid()) = user_id);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Index strategy:** Create indexes on EVERY column used in RLS USING/WITH CHECK clauses:
|
|
112
|
+
```sql
|
|
113
|
+
CREATE INDEX idx_items_user ON items(user_id);
|
|
114
|
+
CREATE INDEX idx_items_org ON items(org_id);
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Anti-patterns:** No `EXISTS` subqueries in RLS, no JOINs in policies, no RLS on tables accessed >1000 req/s without indexes.
|
|
118
|
+
|
|
101
119
|
### Least Privilege
|
|
102
120
|
- Each service uses a dedicated role with minimal permissions
|
|
103
121
|
- Read-only services get SELECT only
|
|
@@ -4,70 +4,96 @@ paths:
|
|
|
4
4
|
- ".sinapse-ai/development/agents/**"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# Sinapse —
|
|
8
|
-
|
|
9
|
-
>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
|
39
|
-
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
|
50
|
-
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
7
|
+
# Sinapse — Intelligent Auto-Routing (NON-NEGOTIABLE)
|
|
8
|
+
|
|
9
|
+
> Users are NOT AI experts. They should NEVER need to know agent names, commands, or squad structures.
|
|
10
|
+
> The system MUST understand natural language and route automatically.
|
|
11
|
+
|
|
12
|
+
## Golden Rule
|
|
13
|
+
|
|
14
|
+
**User types anything → SINAPSE understands → Routes to the right specialist → Delivers result.**
|
|
15
|
+
|
|
16
|
+
The user NEVER needs to:
|
|
17
|
+
- Know which agent handles what
|
|
18
|
+
- Type `@agent-name` or `/SINAPSE:agents:...`
|
|
19
|
+
- Understand greenfield vs brownfield
|
|
20
|
+
- Know about squads, orchestrators, or handoffs
|
|
21
|
+
|
|
22
|
+
## Auto-Detection at Session Start
|
|
23
|
+
|
|
24
|
+
On EVERY session start, automatically detect:
|
|
25
|
+
1. **Project State:** Greenfield (empty/new) | Brownfield (existing code) | SINAPSE-managed
|
|
26
|
+
2. **Tech Stack:** Framework, language, database, testing, CI/CD
|
|
27
|
+
3. **Maturity:** Score 0-10 based on tests, docs, CI presence
|
|
28
|
+
|
|
29
|
+
Use this context to adjust behavior:
|
|
30
|
+
- **Greenfield:** Start with scaffolding, architecture decisions, project setup
|
|
31
|
+
- **Brownfield:** Start with discovery, tech debt assessment, understanding existing code
|
|
32
|
+
- **SINAPSE-managed:** Continue normal SDC workflow
|
|
33
|
+
|
|
34
|
+
## Automatic Request Routing
|
|
35
|
+
|
|
36
|
+
When ANY user message arrives, classify and route:
|
|
37
|
+
|
|
38
|
+
| User Says (examples) | Route To | How |
|
|
39
|
+
|----------------------|----------|-----|
|
|
40
|
+
| "cria um site", "novo projeto", "scaffold" | @architect → @developer | Greenfield workflow |
|
|
41
|
+
| "arruma esse bug", "fix isso" | @developer | Fast-track if trivial |
|
|
42
|
+
| "cria uma marca", "logo", "identidade" | squad-brand | Auto-delegate |
|
|
43
|
+
| "escreve um copy", "headline", "landing page" | squad-copy | Auto-delegate |
|
|
44
|
+
| "pesquisa sobre X", "analise competitiva" | squad-research | Auto-delegate |
|
|
45
|
+
| "faz deploy", "publica", "push" | @devops | Exclusive authority |
|
|
46
|
+
| "testa isso", "quality check" | @quality-gate | QA gate |
|
|
47
|
+
| "cria uma story", "nova feature" | @sprint-lead → @product-lead | SDC workflow |
|
|
48
|
+
| "animacao", "three.js", "shader" | squad-animations | Auto-delegate |
|
|
49
|
+
| "SEO", "growth", "analytics" | squad-growth | Auto-delegate |
|
|
50
|
+
| "ads", "campanha", "meta ads" | squad-paidmedia | Auto-delegate |
|
|
51
|
+
| "financeiro", "pricing", "P&L" | squad-finance | Auto-delegate |
|
|
52
|
+
| "seguranca", "pentest", "LGPD" | squad-cybersecurity | Auto-delegate |
|
|
53
|
+
| "conteudo", "blog", "editorial" | squad-content | Auto-delegate |
|
|
54
|
+
| "design system", "UI", "wireframe" | squad-design | Auto-delegate |
|
|
55
|
+
| "estrategia", "conselho", "decisao" | squad-council | Auto-delegate |
|
|
56
|
+
| "storytelling", "pitch", "narrativa" | squad-storytelling | Auto-delegate |
|
|
57
|
+
| "vende isso", "proposta", "CRM" | squad-commercial | Auto-delegate |
|
|
58
|
+
| "produto", "roadmap", "discovery" | squad-product | Auto-delegate |
|
|
59
|
+
|
|
60
|
+
## Handoff Protocol (Automatic)
|
|
61
|
+
|
|
62
|
+
When routing between agents/squads:
|
|
63
|
+
1. **Never ask permission** — just route
|
|
64
|
+
2. **Provide context** — pass the user's original request + project state
|
|
65
|
+
3. **Confirm briefly** — "Delegando para @specialist que e o expert nisso."
|
|
66
|
+
4. **Return result** — bring the deliverable back to the user
|
|
67
|
+
|
|
68
|
+
## Brownfield Auto-Behavior
|
|
69
|
+
|
|
70
|
+
When project is detected as BROWNFIELD and user hasn't run discovery:
|
|
71
|
+
1. **First interaction:** "Detectei um projeto existente. Vou analisar a estrutura antes de comecar."
|
|
72
|
+
2. **Auto-run:** Quick tech stack scan (< 30 seconds, not full brownfield discovery)
|
|
73
|
+
3. **Inform:** "Projeto {framework} com {database}. Pronto para trabalhar."
|
|
74
|
+
4. **Then proceed** with the user's original request
|
|
75
|
+
|
|
76
|
+
## Greenfield Auto-Behavior
|
|
77
|
+
|
|
78
|
+
When project is detected as GREENFIELD:
|
|
79
|
+
1. **First interaction:** "Projeto novo detectado. Vou configurar a estrutura ideal."
|
|
80
|
+
2. **Ask minimal:** "Que tipo de projeto? (web app, API, landing page)"
|
|
81
|
+
3. **Auto-scaffold:** Apply templates, CI/CD, .env.example
|
|
82
|
+
4. **Then proceed** with implementation
|
|
83
|
+
|
|
84
|
+
## Tool & Command Handoff
|
|
85
|
+
|
|
86
|
+
When ANY agent encounters a task outside its domain:
|
|
87
|
+
- **Git push needed** → Auto-delegate to @devops (NEVER ask user)
|
|
88
|
+
- **Database work** → Auto-delegate to @data-engineer
|
|
89
|
+
- **Test needed** → Auto-delegate to @quality-gate
|
|
90
|
+
- **Architecture decision** → Auto-delegate to @architect
|
|
91
|
+
- **Story needed** → Auto-create via fast-track (trivial) or @sprint-lead (complex)
|
|
92
|
+
|
|
93
|
+
## Anti-Patterns (FORBIDDEN)
|
|
94
|
+
|
|
95
|
+
- Asking user "which agent should handle this?"
|
|
96
|
+
- Showing agent invocation commands to the user
|
|
97
|
+
- Requiring user to type `@agent-name` for routing
|
|
98
|
+
- Leaving a task unfinished because "that's another agent's job" without auto-delegating
|
|
99
|
+
- Asking user if project is greenfield or brownfield (auto-detect it)
|
package/.codex/agents/analyst.md
CHANGED
|
@@ -203,6 +203,96 @@ autoClaude:
|
|
|
203
203
|
|
|
204
204
|
---
|
|
205
205
|
|
|
206
|
+
## Research-Backed Frameworks
|
|
207
|
+
|
|
208
|
+
### Knowledge Architecture (GraphRAG)
|
|
209
|
+
|
|
210
|
+
Modern knowledge systems combine three retrieval paradigms for maximum accuracy:
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
[Query]
|
|
214
|
+
--> BM25 (keyword search) --> Top-K results
|
|
215
|
+
--> Dense Embeddings (semantic) --> Top-K results
|
|
216
|
+
--> Knowledge Graph (structured) --> Entities/Relations
|
|
217
|
+
--> Reciprocal Rank Fusion (RRF) --> Merged & Ranked
|
|
218
|
+
--> Cross-Encoder Reranking --> Final Top-N
|
|
219
|
+
--> LLM Generation with Context
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**Why hybrid matters:** BM25 alone misses semantic similarity. Embeddings alone miss exact terms (product codes, acronyms, legal terms). Graph alone misses nuance. Hybrid search reduces errors by 35-60% vs semantic-only retrieval.
|
|
223
|
+
|
|
224
|
+
### Context Engineering (Karpathy 2025)
|
|
225
|
+
|
|
226
|
+
**Definition (Andrej Karpathy):** "Context engineering is the delicate art and science of filling the context window with just the right information for the next step."
|
|
227
|
+
|
|
228
|
+
**Mental model:** Think of the LLM as a CPU. The context window is RAM. Your job is analogous to an OS: load working memory with exactly the right code and data for the task.
|
|
229
|
+
|
|
230
|
+
| Memory Tier | Analogy | Function | Cost |
|
|
231
|
+
|-------------|---------|----------|------|
|
|
232
|
+
| HOT | Working memory | Active task info in context window | Direct tokens |
|
|
233
|
+
| WARM | Short-term | Retrievable in <300ms via vector/graph search | Low |
|
|
234
|
+
| COLD | Long-term | On-demand from filesystem/archive | Minimal |
|
|
235
|
+
|
|
236
|
+
**Token budget principle:** A well-managed memory system cuts token costs by ~90% and latency by ~91% vs sending full history.
|
|
237
|
+
|
|
238
|
+
### Research Synthesis Framework
|
|
239
|
+
|
|
240
|
+
When conducting research, apply the FINDING-IMPLICATION-RECOMMENDATION pattern:
|
|
241
|
+
|
|
242
|
+
1. **FINDING:** Objective fact with source attribution
|
|
243
|
+
2. **IMPLICATION:** What this means for the project/decision
|
|
244
|
+
3. **RECOMMENDATION:** Actionable next step
|
|
245
|
+
|
|
246
|
+
Example:
|
|
247
|
+
- **FINDING:** 82% of container users run K8s in production (CNCF 2025)
|
|
248
|
+
- **IMPLICATION:** K8s is mainstream, not bleeding-edge risk for SINAPSE projects
|
|
249
|
+
- **RECOMMENDATION:** Include K8s patterns in architect knowledge base
|
|
250
|
+
|
|
251
|
+
### Organization Frameworks for Knowledge
|
|
252
|
+
|
|
253
|
+
| Framework | Structure | Best For |
|
|
254
|
+
|-----------|-----------|----------|
|
|
255
|
+
| Zettelkasten | Network of atomic interlinked notes | Research, writing, idea emergence |
|
|
256
|
+
| PARA | Projects / Areas / Resources / Archives | Action-oriented productivity |
|
|
257
|
+
| Evergreen Notes | Conceptual notes that evolve over time | Deep reflection, lasting knowledge |
|
|
258
|
+
| MOC (Maps of Content) | Index notes aggregating themes | Navigation in large vaults |
|
|
259
|
+
| Knowledge Graph | Entities + relations + attributes | Agent reasoning, inference |
|
|
260
|
+
|
|
261
|
+
### Vector Database Selection (2026)
|
|
262
|
+
|
|
263
|
+
| Database | Best For | Max Scale | Compliance |
|
|
264
|
+
|----------|----------|-----------|------------|
|
|
265
|
+
| Pinecone | Enterprise production | Billions | SOC 2 II, ISO 27001 |
|
|
266
|
+
| Weaviate | Native hybrid search | Hundreds of millions | SOC 2 II, HIPAA |
|
|
267
|
+
| Qdrant | Performance/cost ratio | Hundreds of millions | SOC 2 II |
|
|
268
|
+
| pgvector | PostgreSQL integration (Supabase) | 5-100M | Inherits from PG |
|
|
269
|
+
| Chroma | Rapid prototyping | Millions | Open-source |
|
|
270
|
+
|
|
271
|
+
**Strategy:** Start with pgvector/Chroma for prototype, migrate to Pinecone/Weaviate for production.
|
|
272
|
+
|
|
273
|
+
### Agentic RAG Patterns
|
|
274
|
+
|
|
275
|
+
Modern RAG systems are not simple retrieve-then-generate. State of the art (2026):
|
|
276
|
+
|
|
277
|
+
1. **Plan:** Decompose query into sub-queries
|
|
278
|
+
2. **Retrieve:** Hybrid search (BM25 + embeddings + graph traversal)
|
|
279
|
+
3. **Reason:** Evaluate retrieved context for relevance and sufficiency
|
|
280
|
+
4. **Critique:** Self-assess if answer is grounded or needs more retrieval
|
|
281
|
+
5. **Refine:** Loop until confidence threshold met (max N iterations)
|
|
282
|
+
|
|
283
|
+
**LazyGraphRAG (Microsoft):** Achieves indexing at 0.1% the cost of full GraphRAG with comparable quality for global queries.
|
|
284
|
+
|
|
285
|
+
### Multi-Agent Research Orchestration
|
|
286
|
+
|
|
287
|
+
| Agent Pattern | Description | When to Use |
|
|
288
|
+
|---------------|-------------|-------------|
|
|
289
|
+
| ReAct | Reason + Act in loop | Tasks with tools (search, edit) |
|
|
290
|
+
| Tree of Thought | Explore multiple reasoning paths | Problems with multiple valid solutions |
|
|
291
|
+
| Graph of Thought | Reasoning as graph, merge/refine | Complex synthesis from multiple sources |
|
|
292
|
+
| Reflection | Agent evaluates own output | Quality assurance, self-correction |
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
206
296
|
## Quick Commands
|
|
207
297
|
|
|
208
298
|
**Research & Analysis:**
|
|
@@ -253,6 +253,11 @@ dependencies:
|
|
|
253
253
|
# Execution Engine (Epic 4)
|
|
254
254
|
- plan-create-implementation.md
|
|
255
255
|
- plan-create-context.md
|
|
256
|
+
# Infrastructure & Observability (Infra Research 2026-04)
|
|
257
|
+
- infrastructure-assessment.md
|
|
258
|
+
- observability-blueprint.md
|
|
259
|
+
knowledge_bases:
|
|
260
|
+
- infrastructure-decision-framework.md
|
|
256
261
|
scripts:
|
|
257
262
|
# Memory Layer (Epic 7)
|
|
258
263
|
- codebase-mapper.js
|
|
@@ -388,6 +393,79 @@ autoClaude:
|
|
|
388
393
|
|
|
389
394
|
---
|
|
390
395
|
|
|
396
|
+
## Research-Backed Frameworks
|
|
397
|
+
|
|
398
|
+
### Cloud Provider Decision Matrix
|
|
399
|
+
|
|
400
|
+
| Criterion | AWS | Azure | GCP | Cloudflare |
|
|
401
|
+
|-----------|-----|-------|-----|------------|
|
|
402
|
+
| Breadth of services | Largest (200+) | Large | Medium | Focused (edge) |
|
|
403
|
+
| AI/ML | Bedrock + SageMaker | OpenAI + Copilot | Vertex AI + TPUs | Workers AI |
|
|
404
|
+
| Enterprise integration | Strong | Strongest | Medium | Weak |
|
|
405
|
+
| Data warehouse | Redshift | Synapse | BigQuery (best) | N/A |
|
|
406
|
+
| Edge compute | Lambda@Edge | Front Door | Cloud Run | Workers (leader) |
|
|
407
|
+
| Brazilian region | sa-east-1 (SP, 3 AZs) | Brazil South (SP, 3 AZs) | southamerica-east1 (SP) | POPs in SP, RJ, Fortaleza |
|
|
408
|
+
| Egress fees | High | High | High | Zero (R2) |
|
|
409
|
+
|
|
410
|
+
**Default for SINAPSE projects:** Vercel (frontend) + Supabase (backend) + Cloudflare (CDN/edge). Escalate to hyperscalers only for specific workloads (GPU, compliance, enterprise integration).
|
|
411
|
+
|
|
412
|
+
### Kubernetes Patterns (When Applicable)
|
|
413
|
+
|
|
414
|
+
- **82% of container users run K8s in production** (CNCF 2025); it is the de facto "OS for AI"
|
|
415
|
+
- **Managed K8s:** GKE (most mature, fastest version adoption) > EKS (largest ecosystem) > AKS (best for Microsoft shops)
|
|
416
|
+
- **Anti-patterns to block:** Cluster-as-monolith, pods without resource limits, RBAC over-permissive, secrets in ConfigMaps, no PodDisruptionBudgets
|
|
417
|
+
- **Service Mesh decision:** Linkerd (performance-first, small teams) > Istio (feature-rich, multi-cluster) > Cilium (eBPF, high-throughput fintech)
|
|
418
|
+
|
|
419
|
+
### Infrastructure as Code (IaC) Decision
|
|
420
|
+
|
|
421
|
+
| Criterion | OpenTofu | Pulumi | Crossplane |
|
|
422
|
+
|-----------|----------|--------|------------|
|
|
423
|
+
| License | MPL 2.0 (OSS) | Apache 2.0 | Apache 2.0 (CNCF Graduated) |
|
|
424
|
+
| Language | HCL | Python, TS, Go, C#, Java | YAML (K8s CRDs) |
|
|
425
|
+
| Best for | New OSS default (Terraform successor) | Dev teams wanting real language + unit tests | Platform teams, K8s-heavy orgs |
|
|
426
|
+
| Learning curve | Medium | Low (if language known) | High (K8s + IaC) |
|
|
427
|
+
|
|
428
|
+
**Recommendation:** OpenTofu as default IaC (50% of Spacelift deployments already). Pulumi for teams with strong TypeScript culture. Avoid Terraform BSL lock-in post-IBM acquisition.
|
|
429
|
+
|
|
430
|
+
### Observability Stack
|
|
431
|
+
|
|
432
|
+
**OpenTelemetry is the universal standard** (2nd most active CNCF project after K8s). 57% orgs use it for metrics, 50% for traces, 48% for logs (Grafana Survey 2025).
|
|
433
|
+
|
|
434
|
+
| Signal | Tool | Purpose |
|
|
435
|
+
|--------|------|---------|
|
|
436
|
+
| Metrics | Prometheus + Grafana | Time-series, alerting, dashboards |
|
|
437
|
+
| Traces | Tempo (Grafana) or Jaeger | Distributed request tracing |
|
|
438
|
+
| Logs | Loki (Grafana) | Log aggregation and correlation |
|
|
439
|
+
| Profiling | Pyroscope | Continuous CPU/memory profiling via eBPF |
|
|
440
|
+
| Errors | Sentry | Exception tracking, replay on error |
|
|
441
|
+
|
|
442
|
+
**Architecture pattern:** Instrument with OTel SDKs -> OTel Collector (process/export) -> Backend (Grafana stack or Datadog). This eliminates vendor lock-in at the instrumentation layer.
|
|
443
|
+
|
|
444
|
+
### Platform Engineering (Backstage)
|
|
445
|
+
|
|
446
|
+
Backstage (Spotify, CNCF) has 3,000+ adopters and 270+ orgs in production. Use as Internal Developer Portal when team exceeds 10 developers. Provides: service catalog, scaffolder templates, TechDocs, and plugin ecosystem.
|
|
447
|
+
|
|
448
|
+
### SRE Error Budgets
|
|
449
|
+
|
|
450
|
+
The most impactful SRE concept for architecture decisions:
|
|
451
|
+
|
|
452
|
+
| SLO | Error Budget | Meaning |
|
|
453
|
+
|-----|-------------|---------|
|
|
454
|
+
| 99.9% | 0.1% (~43 min/month) | Budget full -> deploy freely. Empty -> freeze releases, fix stability |
|
|
455
|
+
| 99.95% | 0.05% (~22 min/month) | Typical for internal tools |
|
|
456
|
+
| 99.99% | 0.01% (~4.3 min/month) | Financial systems, auth services |
|
|
457
|
+
|
|
458
|
+
**Formula:** `Error Budget = 1 - SLO`. When budget is consumed, product velocity pauses and engineering focuses on reliability. This programmatically aligns product (speed) and SRE (stability) incentives.
|
|
459
|
+
|
|
460
|
+
### FinOps Quick Rules
|
|
461
|
+
|
|
462
|
+
- 50% of orgs put "waste reduction" as priority #1 (FinOps Foundation 2025)
|
|
463
|
+
- 63% now manage AI spend as a distinct cost category
|
|
464
|
+
- H100 GPU prices dropped 64% in 2025 -- GPU compute is now a manageable cost, not a fixed tax
|
|
465
|
+
- **Cloudflare R2 eliminates egress fees** -- consider for any S3-compatible storage workload
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
391
469
|
## Quick Commands
|
|
392
470
|
|
|
393
471
|
**Architecture Design:**
|