Skip to content

Per-host discovery: an app's hosts: line is binding (app_hosts_v1) - #133

Merged
guijacquemet merged 3 commits into
mainfrom
claude/app-hosts-discovery
Oct 14, 2026
Merged

guijacquemet merged 3 commits into
mainfrom
claude/app-hosts-discovery

Conversation

@guijacquemet

Copy link
Copy Markdown
Contributor

Decision of 14 Oct: the per-host discovery matrix is enforced by Tools and honoured by every host.

  • register --app-manifest <labconstrictor-app.yaml> (or --hosts a,b) records hosts in the registry entry; absent = listed in every host, logged and documented.
  • labconstrictor_tools.app_hosts.listed_for(entry, host) -> (listed, sentence) is the one reference rule; vectors in conformance.json section app_hosts.
  • Feature id app_hosts_v1 (Tools stays 0.3.0a1). list shows the declaration, list --json adds hosts, check --app-manifest checks the line. run is never filtered.
  • Release sandbox: tests/release_sandbox/expected_hosts.json, not_listed assertion for Napari, Fiji/QuPath driver contract (README there), no-tools apps (CellTracksColab) accepted explicitly.
  • Tests: unit, vectors, sandbox files, sabotage test. Docs: PROTOCOL, MANIFEST, HOST_FEATURES, CONFORMANCE, REPOSITORIES (one line), release notes.

Not verified locally: full CI matrix; test_hardening foreign-owned test fails on main too in my root sandbox.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN


Generated by Claude Code

…s_v1)

register records the app's declared hosts in the registry entry (--app-manifest or --hosts),
app_hosts.listed_for(entry, host) is the one reference rule with the exact sentences, conformance.json
carries the vectors, list shows the declaration, run stays unfiltered. Release sandbox: per-app expected
hosts file, not_listed assertions for Napari, the Fiji/QuPath driver contract, apps without tools accepted explicitly.

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
…, empty item, hosts_status, honest docs, red sandbox checks

- manifest reader: utf-8-sig, optionally quoted hosts key, unindented block items, 'hosts has an empty item'
- register --app-manifest without a hosts key still exits 0 (installers pass the manifest of every app) but says so on stderr
- list --json: hosts_status declared|absent|invalid next to the unchanged hosts
- docs: installer passing --app-manifest is template 0.1.18 and later; schema lives in the template repo
- release_sandbox: red CHECK for the QuPath sha256 and a Napari driver that printed no CHECK; NOTE when a host is skipped by input
- tests: BOM, CRLF, tabs, quoted key, duplicate key, comments, ABSENT log and stderr; sabotage entries for each

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
@guijacquemet
guijacquemet merged commit 398198a into main Oct 14, 2026
6 checks passed
guijacquemet pushed a commit that referenced this pull request Oct 14, 2026
…-alpha1

Resolve docs/REPOSITORIES.md keeping the discovery table and rule line from the
branch and the binding hosts: rule from main; bring TESTING.md, HOST_FEATURES.md,
HUMAN_TEST_PROTOCOL.md and README.md in line with the merged rule and sandbox.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
@guijacquemet
guijacquemet deleted the claude/app-hosts-discovery branch October 14, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants