[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 (the error usage.log is
still committed independently). Add a regression test that verifies via
a fresh 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); this clears the false-positive log.
Assert the H8 executable-tools refusal warning via assertLogs instead of
letting it leak. Add mail_notify_force_send=False to
TestAdvisoryInfra.setUpClass to stop the mail.catchall send ERROR.
- 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. Assert
the BYOK no-provider skip warning via assertLogs. Add ACL regression
tests driven via with_user.
- viin_ai_agent: assert the sudo-escalation refusal security warning via
assertLogs so the expected signal is captured, not leaked to the log.
| Subbuilds | Name | State | Detail |
|---|---|---|---|
| Build 386011 | Check the quality with Pylint: from test_lint to test_pylint 14m | Failed | Log |
| Build 386012 | At install tests: from account to website_twitter 130m | Succeed | Log |
| Build 386013 | Post install tests: step install all modules 74m | Succeed | Log |
| Build 386014 | Post install tests: from account to payment_authorize 120m | Succeed | Log |
| Build 386015 | Post install tests: from payment_bidv_viin to theme_default 135m | Succeed | Log |
| Build 386016 | Post install tests: from to_account_accountant to transifex 59m | Succeed | Log |
| Build 386017 | Post install tests: from uom to viin_estimate_approval 65m | Failed | Log |
| Build 386018 | Post install tests: from viin_estimate_budget to viin_project 24m | Succeed | Log |
| Build 386019 | Post install tests: from viin_project_access_timesheet to website_twitter 44m | Succeed | Log |
| Build 386020 | Test install all modules without demo data: from account to website_twitter 54m | Succeed | Log |
| Create Date | Level | Message |
|---|---|---|
| 06/16/2026 20:00:01 | INFO |
Updated repository Viindoo-odoo
|
| 06/16/2026 20:00:01 | INFO |
Updated repository Viindoo-tvtmaaddons
|
| 06/16/2026 20:00:01 | INFO |
Updated repository Viindoo-erponline-enterprise
|
| 06/16/2026 20:00:01 | INFO |
Updated repository Viindoo-branding
|
| 06/16/2026 20:00:01 | INFO |
Cloned repository Viindoo-ai
|
| 06/16/2026 20:15:00 | ERROR |
Subbuild # 386011:
odoo.addons.test_pylint.tests.test_flake8: FAIL: TestFlake8.test_flake8
Traceback (most recent call last):
File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_flake8.py", line 91, in test_flake8
self.fail("flake8 test failed:\n" + (b"\n" + out + b"\n" + err).decode('utf-8').strip())
AssertionError: flake8 test failed:
/data/build/rb-2715f36-222222/viin_ai_approval/tests/test_advisory_acl.py:431:1: W391 blank line at end of file
|
| 06/16/2026 20:15:00 | ERROR |
Subbuild # 386011:
odoo.modules.loading: Module test_pylint: 1 failures, 0 errors of 7 tests
|
| 06/16/2026 20:15:00 | ERROR |
Subbuild # 386011:
odoo.modules.loading: At least one test failed when loading the modules.
|
| 06/16/2026 20:15:00 | ERROR |
Subbuild # 386011:
odoo.tests.result: 1 failed, 0 error(s) of 24 tests when loading database 'rb-2715f36-222222-386011'
|
| 06/16/2026 22:20:31 | ERROR |
Subbuild # 386017:
odoo.addons.viin_ai_memory.tests.test_memory_recall: FAIL: TestMemoryRecallBehavior.test_summarize_cron_makes_zero_external_call_when_disallowed
Traceback (most recent call last):
File "/data/build/rb-2715f36-222222/viin_ai_memory/tests/test_memory_recall.py", line 322, in test_summarize_cron_makes_zero_external_call_when_disallowed
with self.assertLogs(
File "/usr/lib/python3.10/unittest/_log.py", line 84, in __exit__
self._raiseFailure(
AssertionError: no logs of level WARNING or higher triggered on odoo.addons.viin_ai_memory.models.viin_ai_memory
|
| 06/16/2026 22:20:31 | ERROR |
Subbuild # 386017:
odoo.addons.mail.models.mail_mail: failed sending mail (id: 348) due to You must either provide a sender address explicitly or configure using the combination of `mail.catchall.domain` and `mail.default.from` ICPs, in the server configuration file or with the --email-from startup parameter.
Traceback (most recent call last):
File "/data/build/Viindoo-odoo-17.0/addons/mail/models/mail_mail.py", line 664, in _send
msg = SendIrMailServer.build_email(
File "/data/build/Viindoo-odoo-17.0/odoo/addons/base/models/ir_mail_server.py", line 526, in build_email
assert email_from, self.NO_FOUND_FROM
AssertionError: You must either provide a sender address explicitly or configure using the combination of `mail.catchall.domain` and `mail.default.from` ICPs, in the server configuration file or with the --email-from startup parameter.
|
| 06/16/2026 22:20:31 | ERROR |
Subbuild # 386017:
odoo.tests.result: 1 failed, 0 error(s) of 2096 tests when loading database 'rb-2715f36-222222-386017'
|