Skip to content

fix(firegate): remove interpretive reason + add somatic grain power-down#4

Merged
razvantirboaca merged 6 commits intomainfrom
feat/memory-pool-tape17
Feb 4, 2026
Merged

fix(firegate): remove interpretive reason + add somatic grain power-down#4
razvantirboaca merged 6 commits intomainfrom
feat/memory-pool-tape17

Conversation

@razvantirboaca
Copy link
Member

@razvantirboaca razvantirboaca commented Feb 3, 2026

🥋 Van Damme confirmă, Doctor G! 🎖️✨

PR Body gata pentru copy/paste:


Title

fix(firegate): remove interpretive reason + add somatic grain power-down

Description

  • remove interpretive reason from Nova UI/log render (facts-only surface)
  • enforce somatic server prompt rules (no motive inference, no nicotine/diagnostic framing)
  • add somatic noise detection (caps/!!!) via somaticFlagsFromText
  • add subtle static grain overlay:
    • base 3%
    • spike 8% on shout
  • apply power-down state when noisy (slower visual tempo)
  • warm/calm caret switch:
    • warm #C9A56B in noisy mode
    • calm otherwise
  • keep "Breathe first." as minimal hold-target anchor

Why

  • reduce false interpretation
  • keep feedback embodied and minimal
  • preserve calm UX while still surfacing noise clearly

Validation

  • ✅ eslint on touched files
  • ✅ tsc --noEmit
  • ✅ vite build (@firegate/ui)

Notes

  • thresholds currently set to:
    • shout: 0.7
    • excited: 0.5
  • plan: preview test for 24h before any threshold tuning

Assembly Notes

  • ① Firegate interaction layer updated (index.tsx)
  • ② new somatic helpers/components (somatic.ts, StaticGrainOverlay.tsx)
  • Ⓐ server prompt contract tightened (index.ts)
  • Ⓑ visual skin updated (index.css)
  • no a11y regressions observed in local checks

Co-signed: Bamse 🧸
Co-signed: Van Damme 🐍


🟢 Next Action

  1. Deschizi PR-ul cu body-ul de mai sus
  2. Deploy pe Preview (automatic via Vercel)
  3. Test 24h cu S/N pe pragurile actuale (0.7 / 0.5)
  4. Dacă simți prea sensibil/inert → ajustare rapid + repush
  5. Apoi merge când e tuned corect

Van Damme e pe linie pentru:

  • PR review când e live
  • Preview link verification
  • Threshold adjustment support (dacă e necesar)

⚓🦅⚜️🐺🪖

Hai să-l punem pe Preview, soldier! 🔥✨

Cambio, Doctor G! 🎖️

- add somatic flags (caps/!!!) to trigger power-down

- add subtle static grain overlay (3-8% feel)

- remove Reason/interpretation from Nova card + prompt hard rules

🌬 whisper: breathe first; speak only what helps.
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 97fbc0370c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the Firegate interface to enforce a more somatic, minimal, and fact-based interaction model. The changes remove interpretive reasoning from Nova's responses and add visual feedback for detecting "noisy" user input (shouting, excessive punctuation).

Changes:

  • Removes the reason field from Nova responses across the entire stack (UI, server, database logging)
  • Adds somatic detection for noisy input (caps lock, multiple punctuation marks)
  • Introduces visual feedback via static grain overlay that intensifies with noisy input
  • Updates server prompt to enforce strict 4-point response structure without emotional inference
  • Changes from dynamic tag inference to static language-specific tags
  • Adds a "Breathe first" hold-to-return interaction pattern

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 14 comments.

Show a summary per file
File Description
shared/src/i18n/en.json Adds new translations for "breatheFirst" and updates placeholder text to be more embodied/somatic
shared/src/i18n/es.json Spanish translations for new somatic-focused UI text
shared/src/i18n/ro.json Romanian translations for new somatic-focused UI text
packages/ui/src/index.css Adds CSS for static grain overlay animation and power-down visual states
packages/ui/src/features/Firegate/memory_aspects.json New JSON file with memory aspect seed data for initial somatic state
packages/ui/src/features/Firegate/lib/somatic.ts New utility module for detecting noisy text patterns (caps, punctuation)
packages/ui/src/features/Firegate/components/StaticGrainOverlay.tsx New component for rendering visual static/grain overlay
packages/ui/src/features/Firegate/index.tsx Major refactoring: removes reason field, adds somatic detection, integrates grain overlay, adds hold-to-return interaction
packages/ui/src/App.jsx Removes Vercel Analytics component (cleanup)
packages/ui/package.json Reorders devDependencies alphabetically
packages/server/index.ts Updates Nova prompt to enforce strict rules against emotional inference; removes reason from response

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 127 to 131
const [isSomaticNoisy, setIsSomaticNoisy] = useState<boolean>(
((memoryAspects as MemoryAspect[]).reduce((acc, aspect) => acc + aspect.static_level, 0) || 0) /
Math.max((memoryAspects as MemoryAspect[]).length, 1) >=
0.2
);
Copy link

Copilot AI Feb 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The initializer for isSomaticNoisy uses a synchronous calculation based on memoryAspects to determine the initial noisy state. However, this calculation happens during component initialization and will only run once. If the memoryAspects data is meant to represent a dynamic state that changes, this initial calculation may become stale. Consider whether this should be computed in a useEffect or if the initial state should simply be false and be set based on user interaction instead.

Copilot uses AI. Check for mistakes.
…#memory-pool) ♾️

- add /api/vault/resolve policy endpoint (GET/POST) for deterministic runtime gating

- wire Firegate pre-flight policy check and enforce soft-stop before content flow

- add SignalQuality status pill, rose soft-stop blur lock, and rotating somatic tips

🌬️ whisper: clear gates, calm outcomes.
- add express-rate-limit to server dependencies

- throttle GET/POST /api/vault/resolve to protect filesystem-backed policy reads

- keep Nova and translate routes unchanged

🌬️ whisper: protect the gate so signal stays clean.
- delete legacy memory_aspects.json to avoid stale confusion in review

- keep somatic state driven by live prompt/policy signals only

🌬️ whisper: less noise, clearer intent.
@razvantirboaca razvantirboaca merged commit e9367f4 into main Feb 4, 2026
5 checks passed
@razvantirboaca razvantirboaca deleted the feat/memory-pool-tape17 branch February 4, 2026 05:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant