Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/github-repo-workflow.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@
"deployLabels": [],
"healthUrls": [],
"relatedRepos": [
"disable_odoo_online",
"odoo-docker",
"odoo-shared-addons",
"odoo-tenant-cm",
"odoo-tenant-opw",
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion docs/tooling/workspace-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
2 changes: 1 addition & 1 deletion odoo_devkit/workspace_cockpit.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.",
)


Expand Down
2 changes: 1 addition & 1 deletion templates/workspace-cockpit/workspace-cockpit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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]]
Expand Down
9 changes: 5 additions & 4 deletions tests/test_scaffold.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)


Expand Down Expand Up @@ -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:
Expand Down
Loading