Commit graph

2 commits

Author SHA1 Message Date
4a1073847e docs: convert negative patterns to positive actionable instructions
Some checks failed
Typecheck / typecheck (apps/shared) (pull_request) Has been cancelled
Contributor Attribution Check / check-attribution (pull_request) Has been cancelled
History Check / check-common-ancestor (pull_request) Has been cancelled
Nix / nix (macos-latest) (pull_request) Has been cancelled
Nix / nix (ubuntu-latest) (pull_request) Has been cancelled
Typecheck / typecheck (ui-tui) (pull_request) Has been cancelled
Supply Chain Audit / changes (pull_request) Has been cancelled
Typecheck / typecheck (apps/bootstrap-installer) (pull_request) Has been cancelled
Typecheck / typecheck (apps/desktop) (pull_request) Has been cancelled
Typecheck / typecheck (web) (pull_request) Has been cancelled
Supply Chain Audit / Scan PR for critical supply chain risks (pull_request) Has been cancelled
Supply Chain Audit / Check PyPI dependency upper bounds (pull_request) Has been cancelled
Rewrite 'do not X' / 'never Y' / 'avoid Z' / 'cannot W' patterns across
documentation files into positive 'do ABC to achieve XYZ' instructions.

Files changed:
- AGENTS.md (180 lines): 30+ patterns converted including caching,
  profiles, known pitfalls, testing, change-detector tests
- CONTRIBUTING.md (50 lines): 14+ patterns including memory providers,
  cross-platform rules, skill authoring, security
- README-FreeBSD.md: operator-user instructions
- apps/desktop/DESIGN.md (49 lines): 12 design constraint patterns
- docs/observability/README.md: 4 observer contract patterns

Hard safety invariants preserved:
- Secrets never in logs → 'Keep secrets out of logs. Redact from log output'
- Tests never write to ~/.hermes → 'Use _isolate_hermes_home fixture'
- Prompt cache never broken → 'Past context stays immutable mid-conversation'
2026-06-21 13:24:20 +02:00
Bryan Bednarski
0d9b7132ff feat(observability): observer-grade telemetry hooks + NeMo-Relay plugin
Adds backend-neutral observer hooks for plugins: session, turn, API
request, tool, approval, and subagent lifecycle events with stable
correlation IDs (session_id, task_id, turn_id, api_request_id,
tool_call_id, parent/child subagent ids). Extends VALID_HOOKS with
api_request_error and subagent_start.

Hot path is zero-cost when no plugin subscribes: has_hook()/presence
checks gate all payload construction, request payloads are returned
by reference when no middleware rewrites, and the sanitized response
payload no longer embeds raw response objects.

Bundles the optional NeMo-Relay observability plugin
(plugins/observability/nemo_relay) as an in-repo consumer of the new
hooks, peer to the existing langfuse plugin. Fails open when the
optional nemo-relay package is not installed.

Authored-by: Bryan Bednarski <bbednarski@nvidia.com>
Salvaged from #29722 onto current main.
2026-06-03 06:36:46 -07:00