Skip to content

Features — pinky-provider

Update date : 2026-05-28 00:43

MVP scope

Rule: an object type is in MVP if it can be deployed via create_or_alter / from_dict() without special case handling. Objects requiring custom DDL paths, post-create SQL, or non-trivial workarounds are v2 or later.

Object MVP Notes
database
schema _log_level post-create = non-blocking SQL, not a blocker
warehouse
role
database_role
grant
network_policy
network_rule or_replace only — no friction
secret or_replace only — no friction
notification_integration
stage
table column diff handled by ADR-0007
stream IF NOT EXISTS — stateful, no friction
view column comments = non-blocking warning
dynamic_table columns pop before from_dict() — handled
procedure try/except pattern (ADR-0006) — handled
user_defined_function or_replace + copy_grants
task (standalone) serverless
task.dagv1
event_table _storage_lifecycle_policy = non-blocking SQL
tag
alert
streamlit
api_integration
external_volume
compute_pool Enterprise only
external_access_integration v2 SQL fallback — absent Core API
storage_lifecycle_policy v2 SQL fallback — absent Core API
semantic_view later upstream standard not yet stable
iceberg_table v2 subtleties with EXTERNAL_VOLUME (open question)

CI gate before PyPI: integration tests against a real Snowflake account — 4 consecutive releases without regression — before any publication.

Test pattern per type: create → idempotent re-apply → field change → re-apply (ALTER/REPLACE) → delete.

Implementation order: simple objects first (warehouse, role, grant, stage, secret…) to build the test infrastructure, then tables (all types) and callables (procedure, UDF, task) which are the complex ones — but already proven patterns from work. Iceberg and hybrid tables are out of scope.


Roadmap

Phase What
After MVP semantic_view — wait for upstream standard stabilisation
After CI gate PyPI publication (semver, CHANGELOG, README before/after)
v2 export — reverse-engineer fetch().yml
v3 validate — offline JSON Schema, integrable as pre-commit hook
Backlog plan --compare multi-env, mermaid graph viz, drift detection, DCM bridge, suite UDFs, budget per schema
Integration pinky-tools output → direct input to pinky-provider apply

Open questions

Status Question
✅ Decided DROP scope = 1 schema, DROP what is no longer in YAMLs
❓ Open CI → Snowflake auth: reuse existing IAM or switch to key pair?
❓ Open plan output format: JSON (like DCM) or human-readable text (like Terraform)?
❓ Open Mid-deploy error handling: rollback / continue / log+fail?
❓ Open Iceberg Tables: subtleties with EXTERNAL_VOLUME?
❓ Open Provider tests: unit mocks or integration on dedicated schema?
❓ Open Multi-schema scope (admin-project: PUBLIC objects + database-level warehouses)
❓ Open GET_CONTACTS() accessible from SP with DEPLOYER role? (needs testing)
❓ Open Power Automate Teams workflow — creation + webhook reception
❓ Open FINALIZE_TASK: design decided, implementation pending
❓ Open Contact naming: by domain or by person?
✅ Decided streamlit in MVP