From d761255e7a2c52c98422068807a6a5a0656bbc9b Mon Sep 17 00:00:00 2001 From: Chris Busillo Date: Sun, 3 May 2026 15:54:35 -0400 Subject: [PATCH] Reconcile docs metadata and cockpit guidance --- .github/github-repo-workflow.json | 2 ++ docs/README.md | 2 +- docs/tooling/workspace-cli.md | 3 ++- odoo_devkit/workspace_cockpit.py | 2 +- templates/workspace-cockpit/workspace-cockpit.toml | 2 +- tests/test_scaffold.py | 9 +++++---- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/github-repo-workflow.json b/.github/github-repo-workflow.json index 5564ec2..f722993 100644 --- a/.github/github-repo-workflow.json +++ b/.github/github-repo-workflow.json @@ -54,6 +54,8 @@ "deployLabels": [], "healthUrls": [], "relatedRepos": [ + "disable_odoo_online", + "odoo-docker", "odoo-shared-addons", "odoo-tenant-cm", "odoo-tenant-opw", diff --git a/docs/README.md b/docs/README.md index 1615843..f83f33f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,7 +16,7 @@ preview lifecycle for stable remote lanes live in `launchplane`. - [tooling/workspace-cli.md](tooling/workspace-cli.md) for the workspace command surface and generated-output contract. - [tooling/artifact-inputs.md](tooling/artifact-inputs.md) for the repo-owned - publish input manifest shape. + runtime and publish source-input contract. - [tooling/command-patterns.md](tooling/command-patterns.md) for concrete workspace command examples. - [tooling/tenant-overlay.md](tooling/tenant-overlay.md) for the thin tenant diff --git a/docs/tooling/workspace-cli.md b/docs/tooling/workspace-cli.md index 2fa8773..8590677 100644 --- a/docs/tooling/workspace-cli.md +++ b/docs/tooling/workspace-cli.md @@ -81,7 +81,8 @@ Purpose Purpose - Report whether the workspace exists. -- Report whether the lock file and workspace-root docs surface exist. +- Report whether the lock file and workspace-root cockpit files exist: + `AGENTS.md`, `docs/README.md`, and `docs/session-prompt.md`. - Report the tenant/devkit/shared-addons source paths and attached IDE roots. ## `workspace scaffold-cockpit-root` diff --git a/odoo_devkit/workspace_cockpit.py b/odoo_devkit/workspace_cockpit.py index 1cb7e63..5b0963f 100644 --- a/odoo_devkit/workspace_cockpit.py +++ b/odoo_devkit/workspace_cockpit.py @@ -377,7 +377,7 @@ def _default_session_prompt_rule_lines() -> tuple[str, ...]: "Launchplane PR previews replace any durable shared dev lane.", "Do not bring odoo-ai into the normal workspace context unless the task is explicit archaeology.", "Keep tenant repos thin and tenant-specific; fix shared behavior in devkit.", - "When `workspace-cockpit.toml`, the workspace root, and source repos disagree, treat the source repos as the source of truth, then regenerate the cockpit.", + "When cockpit-root files disagree, update `workspace-cockpit.toml` for cockpit guidance or the relevant source repo for repo-owned code/docs, then regenerate the cockpit.", ) diff --git a/templates/workspace-cockpit/workspace-cockpit.toml b/templates/workspace-cockpit/workspace-cockpit.toml index 8782426..c96d60c 100644 --- a/templates/workspace-cockpit/workspace-cockpit.toml +++ b/templates/workspace-cockpit/workspace-cockpit.toml @@ -46,7 +46,7 @@ working_rules = [ "Launchplane PR previews replace any durable shared dev lane.", "Do not bring odoo-ai into the normal workspace context unless the task is explicit archaeology.", "Keep tenant repos thin and tenant-specific; fix shared behavior in devkit.", - "When `workspace-cockpit.toml`, the workspace root, and source repos disagree, treat the source repos as the source of truth, then regenerate the cockpit.", + "When cockpit-root files disagree, update `workspace-cockpit.toml` for cockpit guidance or the relevant source repo for repo-owned code/docs, then regenerate the cockpit.", ] [[repos]] diff --git a/tests/test_scaffold.py b/tests/test_scaffold.py index dc3a5dc..69586b7 100644 --- a/tests/test_scaffold.py +++ b/tests/test_scaffold.py @@ -209,7 +209,8 @@ def test_real_workspace_cockpit_template_links_back_to_devkit(self) -> None: self.assertIn("workspace-cockpit.toml", agents_text) self.assertIn("uv --project sources/devkit", agents_text) self.assertIn("status-cockpit-root", agents_text) - self.assertIn("workspace root, and source repos", session_prompt_text) + self.assertIn("When cockpit-root files disagree", session_prompt_text) + self.assertIn("repo-owned code/docs", session_prompt_text) self.assertIn("launchplane for remote release actions", session_prompt_text) @@ -272,9 +273,9 @@ def test_sync_workspace_cockpit_rerenders_existing_root(self) -> None: self.assertIn("sources/shared-addons", agents_text) self.assertIn("AGENTS.override.md", agents_text) self.assertIn("Public base image", (output_directory / "docs" / "README.md").read_text(encoding="utf-8")) - self.assertIn( - "source repos as the source of truth", (output_directory / "docs" / "session-prompt.md").read_text(encoding="utf-8") - ) + session_prompt_text = (output_directory / "docs" / "session-prompt.md").read_text(encoding="utf-8") + self.assertIn("workspace-cockpit.toml", session_prompt_text) + self.assertIn("repo-owned code/docs", session_prompt_text) def test_workspace_cockpit_status_reports_current_missing_and_stale_files(self) -> None: with tempfile.TemporaryDirectory() as temporary_directory: