Repository navigation
Template 0.1.18: Tools pin v0.3.0-alpha.1, pinned GitHub Actions, template CI, install rules - #33
Merged
Merged
Conversation
…rules Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
Collaborator
Author
|
Smoke results (LabConstrictor-Tools
Template CI on this PR: Still a draft: do not merge until the Tools tag Generated by Claude Code |
Found by the Tools agent: labconstrictor-app.yaml was not in the installer and post_install did not pass --app-manifest, so every registered app had no hosts and was listed in every host. - post_install.sh / .bat: pass --app-manifest <installed yaml>; when the yaml is missing (or has no hosts: line) log a WARNING and the 'declares no hosts' sentence, then register without hosts. - bump_constructor.py: bundle labconstrictor-app.yaml in extra_files when the file exists. - Migration 0.1.17 -> 0.1.18: surgical, idempotent step that adds the extra_files entry (only if the app has the yaml) and the register argument; unknown shapes are SKIPPED with a note. Resources and install.md updated. - Tests: migration on the frozen app fixtures (Playground, NucleiSky, VLab4Mic, GuessTheCondition, CellTracksColab-like), live post_install.sh run against a stub python, bump_constructor tests, and a CI smoke install (Linux, macOS, Windows) that checks the registry entry's hosts equal the manifest's hosts line (Tools from the PR 133 branch via LC_TOOLS_SPEC until the tag exists). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
- post_install.sh/.bat no longer test for a hosts: line themselves (stricter than the Tools reader: BOM, quoted key). They pass --app-manifest whenever the file is there; a missing file still logs the 'declares no hosts' sentence. Tools (now merged, main 398198a) prints the sentence for a manifest without hosts. - smoke-install: LC_TOOLS_SPEC is git+https://.../LabConstrictor-Tools (main) until the tag v0.3.0-alpha.1 exists (one commented place); new case: BOM and quoted hosts key. - Tests, resources and docs updated. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
…ry LC_TOOLS_SPEC) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
guijacquemet
marked this pull request as ready for review
October 14, 2026 11:41
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tools tag
v0.3.0-alpha.1exists (Tools main 380f0e8)The installers of this template pin
LC_TOOLS_PIN="v0.3.0-alpha.1"and downloadLabConstrictor-Tools/archive/refs/tags/v0.3.0-alpha.1.zip. The tag now exists (commit 380f0e8 of LabConstrictor-Tools, which is Tools main) and the archive URL answers HTTP 200. The CI smoke install now installs that tag throughpost_install(the temporaryLC_TOOLS_SPECoverride of the job is removed), so the pin URL is tested.What changes (template 0.1.17 -> 0.1.18)
app/bash_bat_scripts/post_install.sh/.bat:v0.2.0-rc.1->v0.3.0-alpha.1;.tools/docs/tools_bridge.mdnames the pinned tag.uses:in.github/workflows/*is pinned by commit SHA with the tag as a comment (table in.tools/docs/migration_0_1_18.md). The SHAs are the ones the apps already carry (NucleiSky Template 0.1.20: lock files, no lost workflow pushes, fresh JupyterLab launch #37); the five workflows of the template are byte-identical to the apps' merged files, and the three migration-resource copies of workflows are pinned the same way..github/workflows/tests.yml(pinned actions,contents: read,pull_request+ push tomain+ dispatch, guarded bygithub.repository):pytest tests,ruff checkandmypyon.template_sync,.tools/python,tests, configured inruff.toml/mypy.inito the current state.blackis not run (it would rewrite frozen migrations). Second jobsmoke-install(below)..tools/docs/install.md: "Before you install", "Update an installed app", "Where the app is listed"..tools/docs/migration_0_1_18.md+ index entry;template_version: 0.1.18.App hosts: the installer passes the app's
hosts:line to Toolspost_install.sh/.bat(all three OS) runregister ... --app-manifest <install folder>/labconstrictor-app.yamlwhenever the file is in the install; Tools reads it (BOM, quoted key, flow or block list). A manifest withouthosts:registers without hosts and the Tools sentence reachesmenuinst_debug.log; a missing file logs aWARNINGplus the same sentence.bump_constructor.pyadds theextra_filesentry when the manifest exists. The migration stepv0_1_17_to_v0_1_18.py(surgical, idempotent, never deletes) adds the entry and the hook lines. Tests:test_template_sync_0_1_18_hosts.py,test_post_install_hosts.py.CI smoke install (
smoke-install, Linux, macOS, Windows): runs the livepost_installin a fake prefix, installs the pinned Tools tagv0.3.0-alpha.1through the script itself, then reads the registry entry:hostsmust equal thehosts:line of each real manifest, and[notebook, napari]for a BOM + quoted-key manifest; for a manifest without ahosts:line and for no manifest the entry has nohostsand the log has the sentence. If the tag does not install, the job fails (the installer log is printed).Migration
v0_1_17_to_v0_1_18.pyPin moves only when the line still holds exactly
v0.2.0-rc.1; workflows replaced only when equal to the previous template version; install doc sections inserted if missing; Tools guide rewritten only if it is the 0.1.17 text; app hosts as above. Chains from 0.0.0, 0.1.9, 0.1.14-0.1.17 reach 0.1.18.Tests
pytest tests: 155 passed (171 subtests), ruff and mypy clean. One test (test_the_tests_workflow_of_the_template) now asserts that the workflow has noLC_TOOLS_SPECoverride instead of exactly one.Smoke (LabConstrictor-Tools
smoke_migration.yml)Needs the small CI-only Tools PR #131 (not merged); earlier runs against this branch used Tools main.
Not verified
constructorreally containslabconstrictor-app.yaml(belongs to the Toolssmoke_install.ymlon an app built with the new template).🤖 Generated with Claude Code
https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN