Skip to content

Add signed model catalog updates and weekly review automation - #1921

Merged
Paul Lizer (paullizer) merged 7 commits into
Developmentfrom
paullizer-model-catalog-updates
Nov 11, 2026
Merged

Paul Lizer (paullizer) merged 7 commits into
Developmentfrom
paullizer-model-catalog-updates

Conversation

@paullizer

@paullizer Paul Lizer (paullizer) commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Let administrators preview/apply publisher-signed model metadata through offline upload or an explicit, default-off online-access switch, without another application deployment. Preserve custom profiles, connections and credentials; support explicit rollback.
  • Add separate Development/production keys and fixed feeds, approval-gated Development signing, Staging test attestation, and exact tested-payload verification before approved production signing on main.
  • Add an opt-in Monday 09:23 UTC research workflow: discover models from first-party indexes, gather capability/pricing evidence, and propose at most one bounded draft PR into Development. No automatic merge, signing, activation, or new pricing schema.
  • Not operational until publisher setup: public trust maps intentionally remain empty. Key Vault keys/identities, OIDC federation, protected environments/branch rules and Copilot Actions entitlement must be configured. No cloud permissions or automation enable variable were provisioned.

Linked issue

No associated issue; issue creation was offered but not confirmed.

Release Notes & Latest Features

  • New Feature
  • Bug Fix
  • UI Enhancement
  • Breaking Change
  • Internal only

Is this visible to end users?

  • Yes
  • No

Is this admin-facing (Admin Settings, governance, deployment, config)?

  • Yes
  • No

Should this become a Latest Feature card?

  • Yes
  • No
  • Already added

Screenshot needed for the card?

  • Yes
  • No
  • Attached

Version bump

  • application/single_app/config.py VERSION third segment bumped, or not needed because this is docs-only
  • deployers/version.txt bumped, or not needed because deployers/ was not changed

Application version is 0.261.431, above integrated Development 0.261.428. deployers/ was not changed. Current Development, including support exports and native-audit fixes, is integrated without discarding either feature.

Testing / validation

  • All final-head PR checks passed, including CodeQL for Python/JavaScript/Actions, publication contracts, full Cosmos contracts, Swagger, syntax, access-control/XSS guards, branch flow, release-note check and CLA.
  • python scripts/check_cosmos_response_boundaries.py --run-contracts — passed in final CI run 43064816431: 2,070 tests and 431 subtests. The workflow's separate network-blocked plugin-discovery/document-action check passed 38 tests.
  • The full job completed in 36m23s. Two prior runs hit the former 30-minute cap without assertion failures; the cap is now 45 minutes. Every test, network restriction and merge gate remains intact.
  • python -m pytest -q functional_tests\test_m365_workflow_continuation_boundary.py functional_tests\test_model_catalog_signed_updates.py functional_tests\test_model_catalog_publication_lifecycle.py functional_tests\test_workflow_chat_delivery_loop.py — passed after final Development integration: 126 tests, including real-owner lock evidence, actual signatures, activation, malformed/oversized/non-ASCII versions, promotion and delivery contracts.
  • python -m pytest -q ui_tests\test_model_catalog_update_controls.py ui_tests\test_model_catalog_management.py — passed after final integration: 16 tests, including classic/V2 offline/online flows, apply/rollback and keyboard switches.
  • npm --prefix application\v2_ui run typecheck and npm --prefix application\v2_ui run build — passed after final integration; existing large-bundle advisory remains.
  • gh aw compile refresh-model-catalog --no-check-update --no-logo --no-emit --validate — passed; fixed-schedule and requirements-file inference advisories only. The generated workflow is committed with pinned actions/containers; final publication-contract CI also passed.
  • python -m pip install --dry-run --ignore-installed -r scripts\requirements-model-catalog.txt 'snowflake-connector-python[pandas]==4.7.3' --quiet — passed. The initial CI dependency conflict was resolved by aligning app/publisher cryptography pins to 46.0.7, compatible with the existing Snowflake requirement; final CI installation passed.
  • python .\scripts\check_cosmos_response_boundaries.py — passed after final integration: 1,104 owners, 428 doubles, zero review gaps, including renewed combined scheduler and test-import evidence.
  • python .\functional_tests\route_tests\test_route_blueprint_policy_inventory.py, python .\functional_tests\route_tests\test_route_unauthenticated_policy_contract.py, python .\functional_tests\route_tests\test_route_policy_test_coverage.py — passed earlier after Development integration: 15/15, 10/10, 4/4 respectively; final full contract CI also passed.
  • python .\functional_tests\test_docs_app_surface_coverage.py — passed 7/7; python .\functional_tests\test_docs_site_quality.py — passed 6/6 after final integration.
  • All six initial CodeQL findings are confirmed fixed by GitHub analysis: bounded ASCII version parsing, exact domain equality in the workflow test, unused imports removed, and intentional pytest fixture exports declared.
  • Approved real-component PNG previews used simulated local API responses. No live Key Vault signing, online feed publication, research run, or deployed-app Staging attestation has been performed; configuration prerequisites are intentionally explicit.

Documentation

  • Release notes updated, or not needed
  • Feature documentation updated, or not needed
  • Fix documentation updated, or not needed

Feature/setup/trust/testing documentation: docs/explanation/features/SIGNED_MODEL_CATALOG_UPDATES.md and docs/admin/model-catalog.md, including the parser and CI-budget corrections. Release-note changes were offered but not confirmed; incoming Development release notes are preserved. No separate bug-fix document applies.

Security checklist

  • New Flask routes include @swagger_route(security=get_auth_security())
  • Settings sent to non-admin frontends use sanitize_settings_for_user()
  • Browser JavaScript is served from local SimpleChat static assets only; no CDN-hosted JS
  • No secrets, keys, connection strings, or local-only artifacts are included

Public-key maps are empty placeholders, not real keys. Development packages carry a signed channel and cannot be accepted by production; no unsigned bypass or administrator-configurable download destination exists. Research and signing privileges are isolated. Staging approval attests the human-run live test; automated offline contracts do not claim to deploy or inspect an unspecified environment.

Support offline and opt-in online catalog activation, isolated Development signing, Staging validation, production promotion, and bounded weekly evidence-review PRs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the catalog delivery version at 0.261.428 above Development 0.261.427.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the locally verified 46.0.7 patch release for app and publisher; Snowflake 4.7.3 requires cryptography >=46.0.5. Bump application to 0.261.429.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep every contract and network restriction; allow 45 minutes after 30-minute timeouts without assertion failures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve catalog snapshots and support-export scheduling; rerun real-owner lock evidence and catalog/UI contracts.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@paullizer
Paul Lizer (paullizer) merged commit 09d3787 into Development Nov 11, 2026
15 checks passed
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