Branch
[REF] all modules: switch to short version scheme (strip 17.0. prefix) Odoo recommends short version format (x.y.z) over full (17.0.x.y.z) so that porting to a new Odoo series requires no manifest version bump. - 11 __manifest__.py: strip 17.0. prefix - docs/ai/README.md, roadmap.md, conventions.md, migration.md: update version references and remove stale note about viin_ai_rag alignment - viin_ai_rag/migrations/17.0.0.1.0/pre-migrate.py: update docstring - viin_brain/tests: update migration version reference in comment Migration folder 17.0.0.1.0/ kept as-is (must match what Odoo stored in DB on existing installs).
[REF] all modules: switch to short version scheme (strip 17.0. prefix) Odoo recommends short version format (x.y.z) over full (17.0.x.y.z) so that porting to a new Odoo series requires no manifest version bump. - 11 __manifest__.py: strip 17.0. prefix - docs/ai/README.md, roadmap.md, conventions.md, migration.md: update version references and remove stale note about viin_ai_rag alignment - viin_ai_rag/migrations/17.0.0.1.0/pre-migrate.py: update docstring - viin_brain/tests: update migration version reference in comment Migration folder 17.0.0.1.0/ kept as-is (must match what Odoo stored in DB on existing installs).
[FIX] viin_brain: remove orphan test_ir_http.py — ir_http.py deleted in f815901 (TipTap rejected) Commit f815901 deleted viin_brain/models/ir_http.py and its __init__ import when TipTap editor was rejected in favour of OdooEditor (ADR-003 update). The companion test file viin_brain/tests/test_ir_http.py was not removed, leaving 2 HttpCase tests (test_session_info_includes_editor_backend_flag, test_session_info_defaults_to_odoo_when_invalid) that assert on viin_web_editor_editor_backend in session_info — a key that no longer exists because the injector (ir_http.py) was deleted. Runbot build 381692 (rb-84f5047-221719) caught both failures: AssertionError: None != 'tiptap' AssertionError: None != 'odoo' Fix: delete test_ir_http.py and remove its import from tests/__init__.py. No functional change — the WI-11 classmethod regression guard is no longer needed since the override that triggered it no longer exists.
[DOC] docs: fix documentation drift — editor ADR, stale state, nav breadcrumbs, Brain bridge timeline Group A — Stale / Navigation (8 fixes): - REPO_LAYOUT.md: replace stale 2026-04-16 skeleton status with accurate Phase 0-3 / P0-P13 ship state - README.md: remove duplicate conventions row, add docs/README.md persona pointer, update date - docs/README.md: add breadcrumb back to root README - docs/brain/README.md: add breadcrumb, remove absolute local path from footer, update date - CONTRIBUTING.md: add Brain cluster onboarding step (step 7) - docs/ai/README.md: add note explaining viin_ai_rag version scheme divergence - docs/brain/data-models.md: add v1.0 note clarifying viin.brain.block is v1.1+ spec Group B — Architecture drift (6 fixes): - docs/decisions/adr-003-wysiwyg-path-b.md: update status Proposed→active; rewrite Decision section — OdooEditor proper extension (NOT TipTap); move TipTap to Alternatives Considered - docs/decisions/README.md: update ADR-003 summary to reflect OdooEditor + TipTap rejected - docs/roadmap.md: fix Track B W12-W17 TipTap→OdooEditor; fix Brain bridge deprecation timeline (W4-W6 bridges redundant, formal remove deferred to v1.2 per ADR-001) - docs/brain/architecture.md: add v1.0 interim callout (raw contenteditable, migration P16) - docs/history/wysiwyg-migration-progress.md: add SUPERSEDED banner (TipTap rejected) - viin_brain/docs/brain/contenteditable_policy.md: rewrite §8 to reflect OdooEditor decision, remove TipTap activation requirements, note tiptap_adapter.js deleted Group C — Code cleanup (1 artifact removed): - viin_web_editor/__manifest__.py: remove tiptap_adapter.js asset entry - viin_brain/models/__init__.py: remove ir_http import - viin_web_editor/static/src/adapters/tiptap_adapter.js: delete TipTap stub - viin_brain/models/ir_http.py: delete TipTap feature flag injector
[DOC] docs: fix 7 conflicts — rescope viin_ai_documents, fix version pin, branch naming, encapsulation, eliminate stub redirects C1: rescope viin_ai_documents from SKIP to Phase 7.4 Wave-C - architecture.md: depends documents -> viin_document (Viindoo Enterprise) - roadmap.md: add to Wave-C W28-W30; footnote fix; inventory 30->31; §10 count update C2: README.md: viin_api_request_logger >= 0.2 -> >= 0.1.1 (actual version in tvtmaaddons17) C3: CONTRIBUTING.md: clarify external vs internal branch naming convention C4: docs/conventions.md: add note that ai17 daily branch is 17.0 (not master) C5: docs/ai/operating-model.md §4.1: remove optional external deps from viin_ai_ops C6: docs/brain/README.md: update roadmap description (absorbed into C7) C7: eliminate 2 stub redirect files (docs/ai/roadmap.md, docs/brain/roadmap.md) - reroute all relative roadmap.md links in docs/ai/*.md and docs/brain/*.md to ../roadmap.md - fix stale anchor in observability.md - update frozen decision records historical notes - update docs/README.md mention of stubs
[DOC] research/cowork-docs: restructure to match CoWork-OS repo layout Move 12 files from flat root into docs/ subdirectory to mirror the original CoWork-OS docs/ layout. The import had flattened this structure, creating 116+ broken links with docs/ prefix in root-level files. Files moved to docs/: - architecture.md, features.md, providers.md, core-automation.md - context-compaction.md, workflow-intelligence.md, heartbeat-v3.md - skills-runtime-model.md, knowledge-graph.md, memory-observations.md - operator-runtime-visibility.md, integration-skill-bootstrap-lifecycle.md Cross-reference fixes (8 links): - docs/architecture.md: managed-agents.md → ../managed-agents.md - docs/core-automation.md: permission-system.md → ../permission-system.md - docs/features.md: managed-agents.md → ../managed-agents.md - execution-runtime-model.md: bare architecture/features → docs/ prefix - permission-system.md: bare core-automation/architecture/features → docs/ prefix Result: broken links reduced from 213 to 185 (-28). Remaining 185 are Type 2 (files never imported from CoWork-OS — not fixable without importing additional source material).
[DOC] compact: merge ui-design pair + merge glossary into conventions A — Merge ui-design files: - docs/brain/ui-design-overview.md (190 lines) + ui-design-waves.md (528 lines) → docs/brain/ui-design.md (single spec, Overview + Component & Wave Specs sections). Removes cross-file navigation overhead. - Update references in brain/README.md, brain/architecture.md, brain/roadmap.md. B — Merge glossary into conventions: - docs/glossary.md (155 lines) absorbed into docs/conventions.md as new §Thuật ngữ section (terminology rules + 10 term tables for phases 3.8/3.9 + Cognitive Layer). - Remove duplicate "Vendor vs Provider" English dispatch section from conventions.md; keep the Vietnamese-focused table from glossary. - Update references in README.md, docs/README.md, docs/roadmap.md, CONTRIBUTING.md, SUPPORT.md, decisions/adr-004. Net: -3 files, -2 cross-file nav sections, conventions.md now single coding-standards-and-terminology reference.
[DOC] dead content cleanup: placeholders, history, orphan links - Remove screenshot placeholder sections from 3 module READMEs (viin_brain, viin_ai_brain, viin_brain_account_reports): TODO images violate ETHOS §4.4 visual evidence — remove until real screenshots exist. - Move 4 cancelled Phase 3.5 dogfood files to docs/history/ (CANCELLED). - Move 2 UAT files (2026-04-17) to docs/history/ (historical artifacts). - Update docs/history/README.md index with 6 new entries. - Fix wi-001-cluster-audit.md: Phase 3.5 status was "Not started" → "CANCELLED — zero legacy traffic; replaced by internal QA gate". - Rewrite docs/roadmap.md §1: remove historical narrative ("trước đây có hai roadmap song song...") — forward-looking only. - Add "See also" links in 3 docs to resolve orphaned files: docs/ai/security.md → phase1/phase2 security checklists docs/brain/security.md → conflict_registry + contenteditable_policy docs/ai/architecture.md → pgvector_install guide
[DOC] research/README.md: document external CoWork-OS origin + known dead-link limitation research/cowork-docs/ and research/cowork-skills/ are partial imports of the CoWork-OS repo (MIT), used as reference input for ADR-004 through ADR-008. Only a subset of CoWork-OS files was imported, so ~220 internal cross-links within those files are broken when navigating on GitHub. Add README explaining: - Source: CoWork-OS (MIT license) - Purpose: design reference, not production code - Known limitation: internal links broken (full import is out of scope) - Navigation workaround: use upstream CoWork-OS repo docs/ and all root .md files: verified 0 dead links.
[IMP] viin_brain: extend TourCaseBase with _ensure_contracts_database (round 4 follow-up) Address Gap 2 from CEO intent review: 7 tour JS files hardcode :contains("Contracts Database") + :contains("Contract Alpha") selectors, making those tours fail with --without-demo=all even after Phase B switch to TourCaseBase. Per CEO directive (Boil-the-Lake max): seed the demo_db_page_contracts fixture inside cls._tour_vault so tours pass deterministically regardless of demo data state. _ensure_contracts_database() seeds (idempotent — prefer demo, fallback search, finally create): - Contracts Database page (page_type=database, icon 🗂️) - Status property (select with Draft/Review/Signed options) - Effective Date property (date) - Contract Alpha + Contract Beta child pages (Gamma omitted — tours reference only Alpha; Beta provides second row for List/Kanban) - Property values for Alpha (Status=Review, Date=2025-01-15) - Default database view (kind=list, is_default=True) Sets cls._contracts_db_page + cls._contract_alpha_page for subclasses. Tours now pass with both --without-demo=all and demo loaded: brain_database_view, brain_database_calendar_tour, brain_database_gallery_tour, brain_database_board_tour, brain_properties, brain_wikilink (line 97 Contracts Database step) WI14 cluster (graph_panel tour) already covered by test_brain_graph_panel_tour.py's own setUpClass — no fixture extension needed. Refs PR #27.
[FIX] viin_brain: brain_ux_batch_a_tour line 127 indent 15→16 sp (round 4 follow-up) Off-by-1 from round 4 sprint A. Original CI stdout said "Insert ⏎···············" (displayed as 15 dots) but prettier 2.7.1 actually wants 16 spaces (12 parent + 4 sp continuation indent — standard Odoo eslint config printWidth=100, tabWidth=4). Verified local with prettier 2.7.1 (CI runbot version, /tmp/prettier-test): $ eslint --no-eslintrc -c web/tooling/_eslintrc.json \ --resolve-plugins-relative-to /tmp/prettier-test \ <4 round-4 fixed files> exit=0 Refs PR #27.
[ADD] tools: brain_v3_ci_check Rule 12 — no demo ref in tests (round 4 sprint C) Add CI guard preventing reintroduction of env.ref('*.demo_*') in test files across all 14 ai17 modules. Rule scans tests/test_*.py and tests/*_tests.py, skipping: - Python comment lines (#-prefixed) - Multi-line docstring blocks (tracked via triple-quote parity) - Files containing the marker '# CI-RULE12-EXEMPT: <reason>' Wired into main checkers list. Strict-mode invariant updates from 8 PASS / 1 pre-existing WARN baseline → 9 PASS / 1 pre-existing WARN (rule2 contenteditable=14 unchanged). Verified: $ python3 tools/brain_v3_ci_check.py --strict ✓ rule12_no_demo_ref_in_tests: Zero demo refs in test files across 14 module(s); 0 file(s) exempt via marker. Refs PR #27.
[ADD] docs: Phase 3.9 Cognitive Layer — 5 capability + 5 ADR + 1 WI Adopts CoWork-OS patterns: Memory cross-session L0-L3, Skill system additive runtime, KG temporal validity, Pulse cost gate, CoWork skill bundle (140 skill, 15 sub-pack, drop ~7 game). ADR-004 Memory layered + observation sidecar + data residency opt-in ADR-005 Skill additive runtime + version semver + skill pack ADR-006 KG temporal validity + as_of trên 4 Odoo model ADR-007 Pulse cost gate option A (compliant WI-002) ADR-008 CoWork-OS skill adoption + provenance MIT->AGPL WI-004 Cognitive Layer integration + operational runbook Campaign: 2026-05-03-ai17-cognitive-layer Plan: ~/.claude/plans/reflective-snuggling-gosling.md