Name: [ADD] KG temporal Wave-2 (ADR-006): _as_of reconstruction + live KG tools + memory-brain bridge

State: Failed finished in 14m

PR State: merged

PR Author: David Tran

PR Author Email:

PR: #60

Committer: David Tran

Committer Email: davidtran.hp@gmail.com

Commit: 8555493b0fca2e83335eea75948d4dbd0feb50ae

Description:

                                            [ADD] viin_ai_memory_brain: AI memory <-> Brain vault bridge (KG temporal Wave-2)

New auto-install bridge (depends viin_ai_memory + viin_brain). Adds an
optional vault_id Many2one('viin.brain.vault') to viin.ai.memory so a memory
can be scoped to a Brain vault, plus a GLOBAL ir.rule that restricts memory
visibility to vaults the user can access (member or access-group), while
vault-less memories remain governed by the existing per-owner rule.

The vault rule is GLOBAL (AND-combines = restricts), not non-global: a
non-global rule with an OR(vault_id=False, ...) disjunct would OR-union with
the owner rule and leak every vault-less memory across owners. Tests cover
cross-vault, cross-company, owner-only vault-less, and the cross-owner
vault-less regression.

Part of ADR-006 KG temporal Wave-2.

Claude-Session: https://claude.ai/code/session_01JTYAzu8ndxtrQGJeTNa3pf
                                            

Branch: 17.0

Instance ID: 0

Age:

Up-time:

Subbuilds Name State Detail
Build 386458 Check the quality with Pylint: from test_lint to test_pylint 13m Failed Log
Build 386459 At install tests: from account to website_twitter 183m Succeed Log
Build 386460 Post install tests: step install all modules 94m Succeed Log
Build 386461 Post install tests: from account to payment_bidv_viin 204m Succeed Log
Build 386462 Post install tests: from payment_buckaroo to to_account_asset 229m Succeed Log
Build 386463 Post install tests: from to_account_asset_purchase to viin_account 89m Succeed Log
Build 386464 Post install tests: from viin_account_auto_transfer to viin_estimate 94m Failed Log
Build 386465 Post install tests: from viin_estimate_approval to viin_project 44m Succeed Log
Build 386466 Post install tests: from viin_project_access_timesheet to website_twitter 68m Succeed Log
Build 386467 Test install all modules without demo data: from account to website_twitter 63m Succeed Log
Create Date Level Message
06/20/2026 10:55:48 INFO
Updated repository Viindoo-odoo
06/20/2026 10:55:48 INFO
Updated repository Viindoo-tvtmaaddons
06/20/2026 10:55:48 INFO
Updated repository Viindoo-erponline-enterprise
06/20/2026 10:55:48 INFO
Updated repository Viindoo-branding
06/20/2026 10:55:48 INFO
Cloned repository Viindoo-ai
06/20/2026 11:10:19 ERROR
Subbuild # 386458: odoo.addons.test_pylint.tests.test_pylint: FAIL: TestPyLint.test_pylint Traceback (most recent call last): File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_pylint.py", line 147, in test_pylint self.fail("pylint test failed:\n" + (b"\n" + out + b"\n" + err).decode('utf-8').strip()) AssertionError: pylint test failed: ************* Module viin_ai_brain.tests.test_record_historian Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.viin_ai_brain" (W8150) at rb-8555493-222272/viin_ai_brain/tests/test_record_historian.py:53 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.viin_ai_brain" (W8150) at rb-8555493-222272/viin_ai_brain/tests/test_record_historian.py:113 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.viin_ai_brain" (W8150) at rb-8555493-222272/viin_ai_brain/tests/test_record_historian.py:158 ------------------------------------ Your code has been rated at 10.00/10
06/20/2026 11:10:19 ERROR
Subbuild # 386458: odoo.modules.loading: Module test_pylint: 1 failures, 0 errors of 7 tests
06/20/2026 11:10:19 ERROR
Subbuild # 386458: odoo.modules.loading: At least one test failed when loading the modules.
06/20/2026 11:10:19 ERROR
Subbuild # 386458: odoo.tests.result: 1 failed, 0 error(s) of 24 tests when loading database 'rb-8555493-222272-386458'
06/20/2026 14:25:46 ERROR
Subbuild # 386464: odoo.addons.viin_ai_brain.tests.test_brain_tools_kg_temporal: ERROR: TestBrainToolsKgTemporalSignature.test_record_state_as_of_with_args_returns_state_dict Traceback (most recent call last): File "/data/build/rb-8555493-222272/viin_ai_brain/tests/test_brain_tools_kg_temporal.py", line 185, in test_record_state_as_of_with_args_returns_state_dict result = self.tools.tool_brain_record_state_as_of(args, as_of=None) File "/data/build/rb-8555493-222272/viin_ai_brain/models/brain_tools.py", line 700, in tool_brain_record_state_as_of state = self._as_of_record(res_model, int(res_id), as_of_val) File "/data/build/rb-8555493-222272/viin_ai_brain/models/record_historian.py", line 71, in _as_of_record result = self._as_of_records(model_name, [record_id], timestamp) File "/data/build/rb-8555493-222272/viin_ai_brain/models/record_historian.py", line 88, in _as_of_records ts = fields.Datetime.to_datetime(timestamp) File "/data/build/Viindoo-odoo-17.0/odoo/fields.py", line 2301, in to_datetime return datetime.strptime(value, DATETIME_FORMAT[:len(value)-2]) File "/usr/lib/python3.10/_strptime.py", line 568, in _strptime_datetime tt, fraction, gmtoff_fraction = _strptime(data_string, format) File "/usr/lib/python3.10/_strptime.py", line 349, in _strptime raise ValueError("time data %r does not match format %r" % ValueError: time data '2026-01-01T00:00:00' does not match format '%Y-%m-%d %H:%M:%S'
06/20/2026 14:25:46 ERROR
Subbuild # 386464: odoo.addons.viin_ai_brain.tests.test_brain_tools_kg_temporal_run: ERROR: TestBrainToolsKgTemporalRun.test_record_state_as_of_sale_order_run_boundary Traceback (most recent call last): File "/data/build/rb-8555493-222272/viin_ai_brain/tests/test_brain_tools_kg_temporal_run.py", line 204, in test_record_state_as_of_sale_order_run_boundary result = _run_tool_action( File "/data/build/rb-8555493-222272/viin_ai_brain/tests/test_brain_tools_kg_temporal_run.py", line 37, in _run_tool_action return action.with_context(**ctx).run() File "/data/build/Viindoo-odoo-17.0/odoo/addons/base/models/ir_actions.py", line 943, in run res = runner(run_self, eval_context=eval_context) File "/data/build/Viindoo-odoo-17.0/addons/website/models/ir_actions_server.py", line 61, in _run_action_code_multi res = super(ServerAction, self)._run_action_code_multi(eval_context) File "/data/build/Viindoo-odoo-17.0/odoo/addons/base/models/ir_actions.py", line 775, in _run_action_code_multi safe_eval(self.code.strip(), eval_context, mode="exec", nocopy=True, filename=str(self)) # nocopy allows to return 'action' File "/data/build/Viindoo-odoo-17.0/odoo/tools/safe_eval.py", line 408, in safe_eval return unsafe_eval(c, globals_dict, locals_dict) File "ir.actions.server(1355,)", line 1, in <module> File "/data/build/rb-8555493-222272/viin_ai_brain/models/brain_tools.py", line 700, in tool_brain_record_state_as_of state = self._as_of_record(res_model, int(res_id), as_of_val) File "/data/build/rb-8555493-222272/viin_ai_brain/models/record_historian.py", line 71, in _as_of_record result = self._as_of_records(model_name, [record_id], timestamp) File "/data/build/rb-8555493-222272/viin_ai_brain/models/record_historian.py", line 123, in _as_of_records messages = self.env['mail.message'].search([ File "/data/build/Viindoo-tvtmaaddons-17.0/viin_mail_route/models/mail_message.py", line 23, in search return super(MailMessage, self).search(domain, offset, limit, order) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 1623, in search return self.search_fetch(domain, [], offset=offset, limit=limit, order=order) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 1646, in search_fetch query = self._search(domain, offset=offset, limit=limit, order=order or self._order) File "/data/build/Viindoo-odoo-17.0/addons/mail/models/mail_message.py", line 301, in _search query = super()._search(domain, offset, limit, order, access_rights_uid) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 5443, in _search self._flush_search(domain, order=order) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 5397, in _flush_search self.env[model_name].check_field_access_rights('read', field_names) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 3544, in check_field_access_rights raise AccessError(_( odoo.exceptions.AccessError: The requested operation can not be completed due to security restrictions. Document type: Message (mail.message) Operation: read User: 513 Fields: - tracking_value_ids (allowed for groups 'Administration / Settings')
06/20/2026 14:25:46 ERROR
Subbuild # 386464: odoo.addons.viin_ai_brain.tests.test_record_historian: FAIL: TestRecordHistorian.test_sale_order_reconstruction_returns_old_partner Traceback (most recent call last): File "/data/build/rb-8555493-222272/viin_ai_brain/tests/test_record_historian.py", line 175, in test_sale_order_reconstruction_returns_old_partner self.assertIsNot( AssertionError: unexpectedly identical: '__unresolvable__' : partner_id must be reconstructable (tracking=1 on sale.order).
06/20/2026 14:25:46 ERROR
Subbuild # 386464: odoo.tests.result: 1 failed, 2 error(s) of 2158 tests when loading database 'rb-8555493-222272-386464'