Name: [ADD] AI Cognitive Wave-1: Memory L0-L3 + Skill runtime + Pulse cost gate + KG temporal (supersedes #53)

State: Succeed finished in 214m

PR State: merged

PR Author: David Tran

PR Author Email:

PR: #54

Committer: David Tran

Committer Email: davidtran.hp@gmail.com

Commit: 1e512470c46c00b6c8b2910e75e3e960ffc05aab

Description:

                                            [FIX] viin_ai: clear Runbot errors and warnings (PR #54)

Resolve every Runbot build error and warning on the Cognitive Wave-1
branch without masking any behavior. Each fix is root-cause proven and
verified by a real Odoo 17 test run on a fresh DB (--skip-auto-install).

- viin_ai_chat: fix stale mock signature in test_user_error_passed_through.
  _user_err now matches _collect_allowed_tools(self, applied_skills=None),
  which viin_ai_skill's _resolve_run_skills override calls positionally.
  This was the only build-breaking failure.

- viin_ai_base: guard the _record_error_usage separate-cursor write so a
  provider_id/model_id not yet visible to that cursor is set NULL instead
  of raising a ForeignKeyViolation. Removes the odoo.sql_db ERROR noise
  while preserving the trace-durability invariant. Add a regression test
  that verifies via a fresh cursor (the row is committed by a separate
  cursor, invisible to the REPEATABLE READ test cursor).

- viin_ai_approval: remove the dead advisory tool ACL-gap warning in
  _advisory_agent_has_tools (unreachable - every caller runs sudo, so it
  could never detect a real gap). Assert the H8 executable-tools refusal
  warning via assertLogs. Add mail_notify_force_send=False to
  TestAdvisoryInfra.setUpClass.

- viin_ai_memory: align the promotion.log / observation owner ir.rule perms
  with ir.model.access.csv (promotion.log read-only, observation
  append-only), clearing the to_base record-rule validator warning. Add
  ACL regression tests driven via with_user. Downgrade the BYOK
  no-provider summarize-skip log from WARNING to INFO (expected
  steady-state when no key is configured), and keep the cron test asserting
  its real contract (zero external call) rather than a data-state-dependent
  log.

- viin_ai_agent: assert the sudo-escalation refusal security warning via
  assertLogs so the expected signal is captured, not leaked to the log.

- viin_ai_ops / viin_ai_ops_brain / viin_ai_approval_sale: add the
  mail_notify_force_send=False test-context guard (OpsBaseTestCase and the
  evidence/advisory-sale test classes) so confirm/route/notify flows do not
  attempt a synchronous mail send that fails on a runner with no
  mail.catchall ICP. These tests assert routing/state, not email delivery.
                                            

Branch: 17.0

Instance ID: 0

Age:

Up-time:

Delete Date:

Subbuilds Name State Detail
Build 386031 Check the quality with Pylint: from test_lint to test_pylint 14m Succeed Log
Build 386032 At install tests: from account to website_twitter 124m Succeed Log
Build 386033 Post install tests: step install all modules 69m Succeed Log
Build 386034 Post install tests: from account to payment_authorize 129m Succeed Log
Build 386035 Post install tests: from payment_bidv_viin to theme_default 143m Succeed Log
Build 386036 Post install tests: from to_account_accountant to transifex 58m Succeed Log
Build 386037 Post install tests: from uom to viin_estimate_approval 68m Succeed Log
Build 386038 Post install tests: from viin_estimate_budget to viin_project 29m Succeed Log
Build 386039 Post install tests: from viin_project_access_timesheet to website_twitter 44m Succeed Log
Build 386040 Test install all modules without demo data: from account to website_twitter 53m Succeed Log
Create Date Level Message
06/17/2026 07:30:17 INFO
Updated repository Viindoo-odoo
06/17/2026 07:30:17 INFO
Updated repository Viindoo-tvtmaaddons
06/17/2026 07:30:17 INFO
Updated repository Viindoo-erponline-enterprise
06/17/2026 07:30:17 INFO
Updated repository Viindoo-branding
06/17/2026 07:30:17 INFO
Cloned repository Viindoo-ai