Skip to content

Commit d1c00f2

Browse files
jpmorardcodex
andauthored
[codex] Rename deploy workers action label (#746)
* Rename deploy workers action label * Document visible action rename skill sweep * Classify AGILAB path discovery fallback --------- Co-authored-by: Codex <codex@openai.com>
1 parent 3fce78a commit d1c00f2

31 files changed

Lines changed: 142 additions & 125 deletions

.claude/skills/agilab-streamlit-pages/SKILL.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: agilab-streamlit-pages
33
description: Streamlit page authoring patterns for AGILAB (session_state safety, keys, rerun, UX).
44
license: BSD-3-Clause (see repo LICENSE)
55
metadata:
6-
updated: 2026-06-02
6+
updated: 2026-07-02
77
---
88

99
# Streamlit Pages Skill (AGILAB)
@@ -159,16 +159,23 @@ Use this skill when editing:
159159
PROJECT, ORCHESTRATE, WORKFLOW, ANALYSIS, SETTINGS, sidebars, and robot click
160160
labels. Avoid same-label/different-contract collisions; scope labels by
161161
object and layer, for example `Install agi-app` for package/catalog install
162-
and `Deploy workers` for manager/worker environment deployment.
162+
and `Deploy scheduler & workers` for manager/worker environment deployment.
163163
- Preserve stable lower-level API names when product copy changes. In
164-
ORCHESTRATE, `Deploy workers` can correctly call `AGI.install`: the API
164+
ORCHESTRATE, `Deploy scheduler & workers` can correctly call `AGI.install`: the API
165165
prepares manager and worker runtime environments and reuses an already-ready
166166
local manager environment rather than forcing a reinstall.
167167
- For visible-label cleanup, search every render path before closing the task:
168168
page files, `main_page.py`, `page_bootstrap.py`, `workflow_ui.py`,
169169
`page_project_selector.py`, lazy-import wrappers, CSS class names, and tests.
170170
Add or update a negative regression assertion for removed text so tests do
171171
not encode newly introduced clutter as expected behavior.
172+
- For visible action renames, update the robot source-of-truth in the same
173+
change: `tools/agilab_widget_robot.py`,
174+
`tools/agilab_widget_robot_matrix.py`, `tools/agilab_web_robot.py`,
175+
`tools/ui_robot_canary.py`, `tools/ui_robot_coverage_contract.py`, and the
176+
paired robot/action-contract tests. A page-only rename can leave hosted
177+
selected-action profiles, above-fold canaries, and coverage contracts looking
178+
for the old label even when the UI tests pass.
172179
- Prefer page headers with a few read-only KPI cards over status banners that say
173180
`ready`, `not set`, or `missing` without useful context.
174181
- Use the same visual semantics across pages:

.codex/skills/.generated/skills_index.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"generated_at_utc": "2026-07-01T16:04:06Z",
2+
"generated_at_utc": "2026-07-02T16:13:53Z",
33
"tool": "tools/codex_skills.py",
44
"count": 33,
55
"skills": [
@@ -135,7 +135,7 @@
135135
"name": "agilab-streamlit-pages",
136136
"description": "Streamlit page authoring patterns for AGILAB (session_state safety, keys, rerun, UX).",
137137
"license": "BSD-3-Clause (see repo LICENSE)",
138-
"updated": "2026-06-02",
138+
"updated": "2026-07-02",
139139
"path": ".codex/skills/agilab-streamlit-pages/SKILL.md",
140140
"body_preview": "# Streamlit Pages Skill (AGILAB)\nUse this skill when editing:\n- `src/agilab/main_page.py`\n- `src/agilab/pages/*.py`"
141141
},

.codex/skills/.generated/skills_index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Codex Skills Index
22

3-
Generated: 2026-07-01T16:04:06Z
3+
Generated: 2026-07-02T16:13:53Z
44

55
This file is auto-generated by `tools/codex_skills.py`.
66

@@ -22,7 +22,7 @@ This file is auto-generated by `tools/codex_skills.py`.
2222
| `agilab-release-verification` | Verify AGILAB release readiness and post-release truth across PyPI, GitHub Releases, release proof, docs, coverage badges, and Hugging Face Space sync. Use when the user asks "ready for release?", "release it", "all good?", "HF aligned?", "why badge failed?", or any release/publication alignment check. | 2026-06-19 | BSD-3-Clause (see repo LICENSE) | `.codex/skills/agilab-release-verification/SKILL.md` |
2323
| `agilab-runbook` | Runbook for working in the AGILab repo (uv, Streamlit, run configs, packaging, troubleshooting). | 2026-06-19 | BSD-3-Clause (see repo LICENSE) | `.codex/skills/agilab-runbook/SKILL.md` |
2424
| `agilab-security-review-patterns` | Review AGILAB changes for security hardening risks. Use when code, docs, or workflows touch installers, Streamlit exposure, cluster/SSH/share behavior, app execution, notebooks, LLM connectors, secrets, PyPI/GitHub/Hugging Face publishing, dependency policy, or external repositories. | 2026-06-04 | BSD-3-Clause (see repo LICENSE) | `.codex/skills/agilab-security-review-patterns/SKILL.md` |
25-
| `agilab-streamlit-pages` | Streamlit page authoring patterns for AGILAB (session_state safety, keys, rerun, UX). | 2026-06-02 | BSD-3-Clause (see repo LICENSE) | `.codex/skills/agilab-streamlit-pages/SKILL.md` |
25+
| `agilab-streamlit-pages` | Streamlit page authoring patterns for AGILAB (session_state safety, keys, rerun, UX). | 2026-07-02 | BSD-3-Clause (see repo LICENSE) | `.codex/skills/agilab-streamlit-pages/SKILL.md` |
2626
| `agilab-testing` | Quick, targeted test strategy for AGILAB (core unit tests, app smoke tests, regression). | 2026-06-17 | BSD-3-Clause (see repo LICENSE) | `.codex/skills/agilab-testing/SKILL.md` |
2727
| `agilab-ui-robot-validation` | Validate AGILAB Streamlit UI changes with the repo's browser and widget robots. Use when touching ABOUT, PROJECT, ORCHESTRATE, ANALYSIS, SETTINGS, sidebar flows, first-proof wizard links, notebook import, screenshots, or public demo UI evidence. | 2026-05-31 | BSD-3-Clause (see repo LICENSE) | `.codex/skills/agilab-ui-robot-validation/SKILL.md` |
2828
| `chat-export` | Export chat transcripts or conversation JSON into clean Markdown, JSON, or plain-text artifacts. Use this skill when a user wants a reusable export of a chat thread, needs a deterministic transcript cleanup, or wants a conversation converted into a file-oriented format for reports, prompts, docs, or downstream tooling. | - | BSD-3-Clause (see repo LICENSE) | `.codex/skills/chat-export/SKILL.md` |

.codex/skills/agilab-streamlit-pages/SKILL.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: agilab-streamlit-pages
33
description: Streamlit page authoring patterns for AGILAB (session_state safety, keys, rerun, UX).
44
license: BSD-3-Clause (see repo LICENSE)
55
metadata:
6-
updated: 2026-06-02
6+
updated: 2026-07-02
77
---
88

99
# Streamlit Pages Skill (AGILAB)
@@ -159,16 +159,23 @@ Use this skill when editing:
159159
PROJECT, ORCHESTRATE, WORKFLOW, ANALYSIS, SETTINGS, sidebars, and robot click
160160
labels. Avoid same-label/different-contract collisions; scope labels by
161161
object and layer, for example `Install agi-app` for package/catalog install
162-
and `Deploy workers` for manager/worker environment deployment.
162+
and `Deploy scheduler & workers` for manager/worker environment deployment.
163163
- Preserve stable lower-level API names when product copy changes. In
164-
ORCHESTRATE, `Deploy workers` can correctly call `AGI.install`: the API
164+
ORCHESTRATE, `Deploy scheduler & workers` can correctly call `AGI.install`: the API
165165
prepares manager and worker runtime environments and reuses an already-ready
166166
local manager environment rather than forcing a reinstall.
167167
- For visible-label cleanup, search every render path before closing the task:
168168
page files, `main_page.py`, `page_bootstrap.py`, `workflow_ui.py`,
169169
`page_project_selector.py`, lazy-import wrappers, CSS class names, and tests.
170170
Add or update a negative regression assertion for removed text so tests do
171171
not encode newly introduced clutter as expected behavior.
172+
- For visible action renames, update the robot source-of-truth in the same
173+
change: `tools/agilab_widget_robot.py`,
174+
`tools/agilab_widget_robot_matrix.py`, `tools/agilab_web_robot.py`,
175+
`tools/ui_robot_canary.py`, `tools/ui_robot_coverage_contract.py`, and the
176+
paired robot/action-contract tests. A page-only rename can leave hosted
177+
selected-action profiles, above-fold canaries, and coverage contracts looking
178+
for the old label even when the UI tests pass.
172179
- Prefer page headers with a few read-only KPI cards over status banners that say
173180
`ready`, `not set`, or `missing` without useful context.
174181
- Use the same visual semantics across pages:

agenticweb.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
agenticweb: "1"
33
description: "AGILAB is an open-source AI/ML workbench for reproducible experiments, notebook-to-app workflows, run evidence, proof capsules, and local agent evidence review."
4-
updated: "2026-07-01"
4+
updated: "2026-07-02"
55
organization:
66
name: "AGILAB"
77
website: "https://thalesgroup.github.io/agilab"

agilab-capabilities.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"generated_at_utc": "2026-07-01T16:03:59Z",
2+
"generated_at_utc": "2026-07-02T16:13:53Z",
33
"schema": "agilab.capabilities.v1",
44
"schema_version": 1,
55
"generated_by": {
@@ -892,7 +892,7 @@
892892
"name": "agilab-streamlit-pages",
893893
"description": "Streamlit page authoring patterns for AGILAB (session_state safety, keys, rerun, UX).",
894894
"path": ".claude/skills/agilab-streamlit-pages/SKILL.md",
895-
"updated": "2026-06-02"
895+
"updated": "2026-07-02"
896896
},
897897
{
898898
"name": "agilab-testing",

llms-full.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ This file is generated from `.claude/skills/*/SKILL.md` for LLM and scraper disc
8080
preview: # AGILAB Security Review Patterns Use this skill to review AGILAB changes through a security-hardening lens before merge, release, or public documentation. It is a review workflow, not a pentest claim. Keep findings tied to concrete files, commands, and user impact.
8181
- agilab-streamlit-pages: Streamlit page authoring patterns for AGILAB (session_state safety, keys, rerun, UX). (.claude/skills/agilab-streamlit-pages/SKILL.md)
8282
license: BSD-3-Clause (see repo LICENSE)
83-
updated: 2026-06-02
83+
updated: 2026-07-02
8484
preview: # Streamlit Pages Skill (AGILAB) Use this skill when editing: - `src/agilab/main_page.py` - `src/agilab/pages/*.py`
8585
- agilab-testing: Quick, targeted test strategy for AGILAB (core unit tests, app smoke tests, regression). (.claude/skills/agilab-testing/SKILL.md)
8686
license: BSD-3-Clause (see repo LICENSE)

src/agilab/core/agi-env/src/agi_env/runtime/agi_env.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,8 @@ def read_agilab_path(verbose=False):
627627
module_file=_public_agi_env_module_file(),
628628
find_spec=importlib.util.find_spec,
629629
)
630+
# best-effort fallback: keep the persisted marker result when source/package
631+
# discovery is unavailable in partial installs or constrained runtimes.
630632
except Exception:
631633
return install_path
632634

src/agilab/diagnostics/runtime_failure_diagnostics.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def classify_runtime_failure(payload: Any, *, phase: str = "runtime") -> Runtime
7676
"or not a valid .7z dataset archive."
7777
),
7878
next_action=(
79-
"Restore or regenerate the app dataset archive, then rerun Deploy workers. "
79+
"Restore or regenerate the app dataset archive, then rerun Deploy scheduler & workers. "
8080
"For a notebook-derived project, recreate it from the packaged notebook if needed."
8181
),
8282
)
@@ -98,7 +98,7 @@ def classify_runtime_failure(payload: Any, *, phase: str = "runtime") -> Runtime
9898
title="Dependency is missing.",
9999
detail=f"The runtime could not import `{missing_module}` in the selected environment.",
100100
next_action=(
101-
"Rerun Deploy workers for this project and verify the dependency is declared "
101+
"Rerun Deploy scheduler & workers for this project and verify the dependency is declared "
102102
"in the manager or worker pyproject."
103103
),
104104
)
@@ -110,7 +110,7 @@ def classify_runtime_failure(payload: Any, *, phase: str = "runtime") -> Runtime
110110
category="project-state",
111111
title="Project environment is incomplete.",
112112
detail="The selected project or worker environment is missing its virtual environment.",
113-
next_action="Run Deploy workers for the selected project before RUN.",
113+
next_action="Run Deploy scheduler & workers for the selected project before RUN.",
114114
)
115115

116116
if "worker copy" in normalized or (
@@ -120,7 +120,7 @@ def classify_runtime_failure(payload: Any, *, phase: str = "runtime") -> Runtime
120120
category="worker-copy",
121121
title="Worker environment copy is inconsistent.",
122122
detail="The copied worker environment appears stale or has dependency metadata that no longer matches the source app.",
123-
next_action="Remove the stale worker environment for this app, rerun Deploy workers, then retry the action.",
123+
next_action="Remove the stale worker environment for this app, rerun Deploy scheduler & workers, then retry the action.",
124124
)
125125

126126
if (

src/agilab/orchestrate/orchestrate_execute.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,7 @@ def _render_run_panel_controls() -> None:
988988
else:
989989
pending_hidden_action = consume_pending_execute_action(st.session_state)
990990
if pending_hidden_action:
991-
st.error("RUN is not available yet. Run Deploy workers first, then retry RUN.")
991+
st.error("RUN is not available yet. Run Deploy scheduler & workers first, then retry RUN.")
992992

993993
pending_action = consume_pending_execute_action(st.session_state)
994994
run_clicked = pending_action == "run"

0 commit comments

Comments
 (0)