QERRA-v2 Classical – A Classical Ethical Evaluation Engine for Robotics

Hello everyone,

I am Marussa Metocharaki, an independent researcher based in Greece. I have been developing QERRA-v2 Classical, a fully explainable, classical (non-neural) ethical decision framework designed specifically for robotics and high-stakes autonomous systems.

Core Idea

It uses the SEMEV-12 framework — 12 immutable, human-centred ethical vectors. The system evaluates situations and returns a traceable ethical score with full reasoning, activated vectors, and moral clarity signals. No black boxes, no large language models — everything is deterministic and auditable.

Current State

  1. 9 out of 12 vectors are now implemented and tested
  2. Public API available (free tier on Hugging Face)
  3. ROS 2 bridge included (ready for testing)
  4. Full transparency about development constraints (solo developer, limited resources

Repository: GitHub - marunigno-ship-it/QERRA-v2-classical: 100% Classical Ethical Decision Framework – Extension of QERRA-v2 Hybrid · GitHub

Latest Release: v1.8.5

What I am looking for

I would greatly appreciate feedback from the ROS community, especially regarding:

  • Practical integration as a Behavior Tree condition node

  • Real-world testing scenarios

  • Suggestions for the remaining vectors

  • Any technical or ethical concerns

The project is open source (AGPL-3.0) and I am open to collaboration.

Thank you for your time. :slightly_smiling_face:

Any constructive input is very welcome.
Marussa Metocharaki
Independent Researcher, Greece

Hi ,
This is an impressive piece of work.In robotics, explainability is often worth more than the slight accuracy gains of a black-box model. While exploring your SEMEV-12 framework, I encountered a fascinating structural question: Have you considered the “order dependency” (commutativity) of these vectors?
In my own research, I’ve found the evaluation order often matters—i.e., evaluating v005 (harm_intent) before v003 (survival_instinct) usually yields a different decision path than the reverse. If the system treats these vectors as a commutative summation, it might lose the context of how the ethical state was reached.
I’m curious if you’ve faced any issues with “order inflation” or context-clashing when multiple vectors trigger simultaneously in your current implementation?

Thank you so much for taking the time to read about the project and for this thoughtful question, @zc_Liu 🙏

I really appreciate it.

To be honest, I don’t come from a strong technical or academic background — I’m an independent researcher working completely solo, and a lot of this has been built through observation, iteration, and learning as I go. So questions like yours are incredibly valuable to me.

You’re right to point out the order dependency issue. In the current v1.8.8 version, the vectors are mostly evaluated in parallel and then combined with weighted scoring + some nuance dampening. So right now the system is largely commutative (the final score doesn’t change much based on order).

But I’ve also been thinking about this exact problem. Especially with strong vectors like v005 (harm_intent) and v003/v007 (survival instinct / personal potential), I feel the interaction between them should be more contextual, not just additive. Sometimes survival instinct should clearly reduce the weight of harm intent, but in other cases it might not.

I don’t have a final elegant solution yet, which is why feedback from people with real robotics experience is so important to me.

If you have any thoughts or examples from your own work about how order has affected decisions in practice, I would be genuinely grateful to hear them. Even rough ideas would help me a lot.

Thank you again for engaging with the project. It means a lot.

Best regards,  
Marussa

Thank you for being so transparent about your development process. Since you’ve identified that “order dependency” is a core challenge for the next iteration of your framework, I thought it might be useful to share a mathematical approach I’ve been developing in the ROS community to solve exactly this: Non-associative modeling.
https://discourse.openrobotics.org/t/sipa-quantifying-physical-integrity-and-the-sim-to-real-gap-in-7-dof-trajectories/52884?u=zc_liu

Thank you again for the reply and for sharing your work :slightly_smiling_face:

I just saw the link you sent. I haven’t had time to read it properly yet, but I will do that carefully in the next few days.

The idea that the order of things can change the final result is really interesting to me. I can see how this might also apply to my vectors, especially when strong ones like harm_intent and survival instinct appear together.

Right now my system mostly evaluates everything at the same time and then combines the scores, but I understand that the order might matter more than I thought.

I’ll take some time to read your SIPA post first and then come back with any questions I have.

Thank you again for taking the time to share this with me. It really helps.

Best regards,
Marussa

Glad you see the connection.
Honestly, I believe this “commutativity trap” is exactly why Embodied AI is struggling to cross the bridge from labs to the real world. Most current systems treat physical and ethical states as parallel, static inputs—but reality is fundamentally path-dependent. Order is meaning. If a system assumes A+B is the same as B+A, it misses the causal narrative of the world.
I’m convinced that moving beyond additive scoring is not just an optimization—it’s the missing link to making AI truly “grounded” in dynamic environments.
Feel free to reach out whenever you’ve had a chance to digest the SIPA concepts.

I appreciate you sharing this.

The idea that “order is meaning” and that many systems miss the path-dependent nature of reality resonates with me a lot.

I’ll take some time to read your SIPA work properly. The math is quite advanced for me, t.b.h.

Just to be transparent: I’m working completely solo, with very limited resources, so because of that I cannot actively experiment with bigger architectural changes like order dependency at the moment. I have to move very carefully and in small steps.

Still, I find the concept meaningful and I’ll keep thinking about it.

i’ll reach out when i’ve had the chance

Thank’s again

Quick update on the integration of QERRA-V2 Classical :slight_smile:

I’ve just finalized the implementation of a Hybrid Action Server Bridge.

The main challenge I wanted to solve was reliability. In a real robotics scenario, you can’t afford to wait 5 seconds for a cloud response on whether an action is ethical.

What’s new:

  • The ‘Hard’ 800ms Cut-off: I’ve implemented a strict latency timeout. If the API doesn’t return a score in 800ms, the node automatically kills the request and executes the check locally on the CPU.

  • Behavior Tree Integration: Successfully tested a non-blocking QerraConditionNode within py_trees. The robot’s higher-level behavior tree stays responsive while the ethics gate evaluates.

Verified the logic today via local simulation—safe actions proceed, while high-risk scenarios successfully trigger a sequence failure and move to human-review fallbacks.

The goal is ‘zero-leak’ ethics logic: no robot action gets to execute until the ethical score returns, but the robot shouldn’t freeze just because the Wi-Fi is shaky.