Allow discovery refresh to adopt redundant model names #35

Merged
vnprc merged 1 commit from agent/pi-provider-redundant-names into master 2026-08-25 03:32:41 +01:00
Member

This lets discover-refresh adopt and remove a model name only when it exactly repeats that model's id. Custom names and every unrelated field still fail before bearer access; HTTP, credentials, transactions, removals, and manual add are unchanged. The 336-assertion synthetic suite and full provisioning check cover normalization and the refusal boundary. If this behaves incorrectly, revert this commit; any private profiles change can be restored from its prior commit.

Closes #34.

Strategy plan and reviews: allod/strategy#42.

Risk

Residual risk is R3 because this relaxes validation immediately before authenticated discovery. The accepted predicate is exact across every model, and command-level fixtures prove custom names, non-string names, ordinary unsupported fields, and an empty-string field key all fail without Age or HTTP access.

Validation

  • bash -n scripts/pi-provider tests/pi-provider.sh
  • nix shell nixpkgs#shellcheck -c shellcheck -x --source-path=SCRIPTDIR scripts/pi-provider tests/pi-provider.sh
  • bash tests/pi-provider.sh — 336 assertions
  • nix build .#checks.x86_64-linux.provisioning-contract
  • independent implementation review with gpt-5.5: one unsupported-empty-key blocker and one missing non-string witness found and fixed
  • different-model scoped verification with gpt-5.6-terra: no remaining findings

All authenticated-discovery tests use generated local HTTP and Age fixtures. No private provider, inference, deployment, rebuild, or provider-side mutation was performed.

This lets `discover-refresh` adopt and remove a model `name` only when it exactly repeats that model's `id`. Custom names and every unrelated field still fail before bearer access; HTTP, credentials, transactions, removals, and manual `add` are unchanged. The 336-assertion synthetic suite and full provisioning check cover normalization and the refusal boundary. If this behaves incorrectly, revert this commit; any private profiles change can be restored from its prior commit. Closes #34. Strategy plan and reviews: allod/strategy#42. ## Risk Residual risk is R3 because this relaxes validation immediately before authenticated discovery. The accepted predicate is exact across every model, and command-level fixtures prove custom names, non-string names, ordinary unsupported fields, and an empty-string field key all fail without Age or HTTP access. ## Validation - `bash -n scripts/pi-provider tests/pi-provider.sh` - `nix shell nixpkgs#shellcheck -c shellcheck -x --source-path=SCRIPTDIR scripts/pi-provider tests/pi-provider.sh` - `bash tests/pi-provider.sh` — 336 assertions - `nix build .#checks.x86_64-linux.provisioning-contract` - independent implementation review with `gpt-5.5`: one unsupported-empty-key blocker and one missing non-string witness found and fixed - different-model scoped verification with `gpt-5.6-terra`: no remaining findings All authenticated-discovery tests use generated local HTTP and Age fixtures. No private provider, inference, deployment, rebuild, or provider-side mutation was performed.
vnprc approved these changes 2026-08-25 03:32:35 +01:00
vnprc merged commit 6107b954c0 into master 2026-08-25 03:32:41 +01:00
vnprc deleted branch agent/pi-provider-redundant-names 2026-08-25 03:32:42 +01:00
Sign in to join this conversation.
No description provided.