spanforge 1.0.2__tar.gz → 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- spanforge-1.0.3/LICENSE +21 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/PKG-INFO +11 -14
- {spanforge-1.0.2 → spanforge-1.0.3}/PRICING.md +5 -5
- {spanforge-1.0.2 → spanforge-1.0.3}/README.md +8 -11
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/contributing.md +2 -2
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/rfc/rfc-0001.md +1 -1
- {spanforge-1.0.2 → spanforge-1.0.3}/pyproject.toml +3 -3
- spanforge-1.0.2/LICENSE +0 -128
- {spanforge-1.0.2 → spanforge-1.0.3}/.bandit +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.gitattributes +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.github/CODEOWNERS +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.github/ISSUE_TEMPLATE/rfc.yml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.github/pull_request_template.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.github/workflows/ci.yml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.github/workflows/release.yml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.gitignore +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.pre-commit-hooks.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.sf-gate/artifacts/g1_result.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.sf-gate/artifacts/gate5_governance_result.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.sf-gate/artifacts/gate6_trust_result.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/.sf-gate/artifacts/test-gate_result.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/CNAME +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/CODE_OF_CONDUCT.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/CONFORMANCE.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/MAINTAINERS.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/RELEASE.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/SECURITY.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/SPANFORGE_COMPLETE_Master_Build_Plan_v6_FULL.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/artifacts/g1_result.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/artifacts/gate5_governance_result.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/artifacts/gate6_trust_result.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docker-compose.selfhosted.yml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/Makefile +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/_static/.gitkeep +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/ADR-001-immutable-audit-trail.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/ADR-002-singleton-service-clients.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/ADR-003-schema-versioning-strategy.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/ADR-004-local-first-architecture.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/ADR-005-sandbox-mode.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/ADR-006-rag-tracing.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/ADR-007-user-feedback.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/ADR-008-sso-scim-oidc.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/adr/README.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/alert.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/audit.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/auto.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/cache.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/cec.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/compliance.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/config.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/consumer.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/debug.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/deprecations.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/drift.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/enterprise.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/eval.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/event.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/exceptions.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/explain.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/export.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/feedback.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/gate.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/governance.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/hooks.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/http.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/identity.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/index.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/integrations.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/io.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/lineage.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/lint.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/metrics.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/migrate.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/models.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/normalizer.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/observe.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/operator.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/pii.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/pipelines.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/plugins.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/policy.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/rag.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/rbac.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/redact.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/regression.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/schema.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/scope.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/sdk-reference.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/secrets.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/signing.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/stats.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/store.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/stream.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/testing.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/testing_mocks.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/trace.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/trust.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/types.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/ulid.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/api/validate.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/changelog.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/cli.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/competitor-comparison.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/conf.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/configuration.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/demos/enterprise-evidence-demo.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/demos/runtime-governance-demo.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/deployment/air-gapped.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/deployment/kubernetes.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/enterprise-integrations.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/evidence-export.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/ga-release-notes.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/index.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/installation.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/integrations/crewai.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/integrations/halluccheck.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/make.bat +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/migrations/from-langfuse.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/migrations/from-langsmith.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/migrations/from-openllmetry.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/migrations/v5-to-v6.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/audit.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/cache.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/consent.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/cost.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/diff.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/eval.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/explanation.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/feedback.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/fence.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/guard.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/hitl.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/index.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/model_registry.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/prompt.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/redact_ns.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/retrieval.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/template.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/namespaces/trace.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/quickstart.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/reference-architectures.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/replay-simulation.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/rfc/adr-index.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/runbook.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/runtime-governance-contracts.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/runtime-governance.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/README.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/envelope.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/agent-run.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/agent-step.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/audit.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/cache.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/consent.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/cost.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/diff.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/eval.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/explanation.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/fence.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/guard.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/hitl.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/model-registry.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/prompt.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/redact.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/span.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/payloads/template.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema/types/common.schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/schema-versioning.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/alert.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/audit.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/cache.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/compliance.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/custom_exporters.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/debugging.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/events.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/export.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/feedback.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/gate.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/governance.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/in_memory_state.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/index.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/linting.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/metrics.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/migration.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/rag.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/redaction.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/signing.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/docs/user_guide/tracing.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/agent_workflow.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/budget_alert.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/docker/Dockerfile +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/docker/docker-compose.yml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/docker/otel-config.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/enterprise_evidence_demo.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/explain_demo.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/gates/gate5_governance.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/gates/sf-gate.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/langchain_chain.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/multi_agent_rag.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/multi_tenant.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/openai_chat.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/otlp_grafana.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/production_multi_agent.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/runtime_governance_demo.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/scope_demo.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/scope_manifest.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/secure_pipeline.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/streaming_response.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/testing_mocks_example.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/examples/validate_demo.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/Chart.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/templates/_helpers.tpl +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/templates/deployment.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/templates/hpa.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/templates/networkpolicy.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/templates/pdb.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/templates/secret.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/templates/service.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/helm/spanforge/values.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/k6/README.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/k6/pii_scan_50rps.js +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/k6/score_100rps.js +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/k6/secrets_scan_100rps.js +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/sonar-project.properties +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_ansi.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_batch_exporter.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_cli.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_cli_audit.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_cli_compliance.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_cli_config.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_cli_cost.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_cli_ops.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_cli_phase11.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_hooks.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_server.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_span.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_store.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_stream.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_trace.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/_tracer.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/actor.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/alerts.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/auto.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/baseline.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/cache.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/compliance.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/config.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/consent.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/consumer.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/core/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/core/compliance_mapping.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/core/dx.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/cost.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/debug.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/deprecations.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/drift.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/egress.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/eval.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/event.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/exceptions.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/explain.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/append_only.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/cloud.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/datadog.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/grafana.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/jsonl.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/openinference.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/otel_bridge.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/otlp.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/otlp_bridge.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/redis_backend.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/siem.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/siem_schema.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/siem_splunk.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/siem_syslog.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/export/webhook.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/exporters/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/exporters/console.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/exporters/jsonl.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/exporters/sqlite.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/gate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/governance.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/hitl.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/http.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/inspect.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/_pricing.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/anthropic.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/azure_openai.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/bedrock.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/crewai.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/gemini.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/groq.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/langchain.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/langgraph.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/llamaindex.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/ollama.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/openai.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/integrations/together.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/io.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/lint.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/metrics.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/metrics_export.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/migrate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/model_registry.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/models.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/audit.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/cache.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/chain.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/confidence.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/consent.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/cost.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/decision.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/diff.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/drift.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/eval_.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/feedback.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/fence.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/guard.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/hitl.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/latency.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/prompt.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/redact.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/retrieval.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/runtime_governance.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/template.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/tool_call.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/namespaces/trace.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/normalizer.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/plugins.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/presidio_backend.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/processor.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/prompt_registry.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/py.typed +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/redact.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/regression.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/runtime_policy.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sampling.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/schema.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/schemas/frameworks/frameworks.yaml +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/schemas/v1.0/schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/schemas/v2.0/schema.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/_base.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/_base.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/_exceptions.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/_types.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/alert.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/alert.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/audit.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/audit.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/cec.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/cec.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/config.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/config.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/dataset_scanner.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/enterprise.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/enterprise.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/explain.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/fallback.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/feedback.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/gate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/gate.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/identity.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/identity.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/lineage.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/observe.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/observe.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/operator.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/pii.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/pii.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/pipelines.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/pipelines.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/policy.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/rag.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/rbac.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/registry.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/registry.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/scope.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/secrets.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/secrets.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/security.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/security.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/trust.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/trust.pyi +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/sdk/validate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/secrets.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/signing.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/stats.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/stream.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/testing.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/testing_mocks.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/trace.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/types.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/ulid.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/validate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/src/spanforge/workflow.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/test_agent.jsonl +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/test_events.jsonl +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/chaos/README.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/chaos/test_service_unavailability.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/fixtures/chain.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/fixtures/compliance.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/fixtures/key_security.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/fixtures/migration.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/fixtures/pii.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/fixtures/signing.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/fixtures.json +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/run_conformance.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conformance/test_conformance.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/conftest.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/fixtures/clean_dataset/data.jsonl +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/fixtures/no_consent_dataset/data.jsonl +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/fixtures/pii_dataset/data.jsonl +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/integration/__init__.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/integration/test_dx_integration.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/load/README.md +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_1e1_siem_langgraph.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_actor.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_alerts.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_ansi.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_auto.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_baseline.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_batch_exporter.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_benchmarks.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_budget_alert.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cache.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cli.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cli_audit_module.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cli_compliance_dataset.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cli_compliance_module.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cli_config_1d1.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cli_cost_module.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cli_ops_module.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cli_phase11_module.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_compliance.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_compliance_mapping.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_config_interpolate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_consent.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_consumer.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cost_event_emission.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_cost_tracker.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_costguard_gaps.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_coverage_gaps.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_coverage_supplement_1.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_coverage_supplement_2.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_coverage_supplement_3.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_coverage_supplement_4.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_dataset_scanner.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_deprecations.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_drift.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_e2e_cli.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_egress_and_normalizer.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_eval_behaviour_scorer.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_event.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_exceptions.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_explain.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_cloud.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_datadog.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_grafana.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_jsonl.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_otel_bridge.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_otlp.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_redis_backend.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_siem_splunk.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_siem_syslog.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_export_webhook.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_feedback.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_framework_mapper.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_gate_deep.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_governance.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_hitl.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_http.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_inspect.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_integration.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_integrations.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_io.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_lint.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_migrate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_model_registry.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_models.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_namespaces.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_otlp_bridge.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase0_scale.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase10_features.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase10_trust.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase11_enterprise.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase11_security.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase12_dx.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase1_context_trace.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase2_observability.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase3_debug_sampling.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase4_agent_instrumentation.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase4_metrics_store.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase5_console_exporter.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase5_coverage.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase5_enterprise_integrations.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase5_hooks_crewai.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase6_enterprise_deployment_packaging.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase6_openai_integration.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_phase8_release_hardening.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_plugins.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_processor_coverage.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_prompt_registry.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_properties.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_public_root_lazy_imports.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_rag.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_redact.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_regression.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_repo_guardrails.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_rfc_namespaces.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_runtime_governance_phase0.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sampling_coverage.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_schema.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_config.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_coverage_boost.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_explain.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_exporters.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_final_coverage.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_gap_filler.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_openai_integration.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_phase7_integrations.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_pipelines_deep.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_precision_coverage.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_scope.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_span.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_stream.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_tracer.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_validate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sdk_validation_coverage.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_server.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf11.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf12.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf13.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf14.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf15.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf16.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf9_config.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_alert.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_audit.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_cec.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_explain.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_gate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_identity.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_lineage.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_observe.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_operator.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_pii.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_policy.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_policy_integration.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_policy_phase3.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_rag.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_rbac.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_scope.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_sf_secrets.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_signing.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_stats.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_stream.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_trace_decorator.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_trace_pytest_fixtures.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_types.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_ulid.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_validate.py +0 -0
- {spanforge-1.0.2 → spanforge-1.0.3}/tests/test_workflow.py +0 -0
spanforge-1.0.3/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 viswanathanstartup
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spanforge
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: SpanForge — AI lifecycle and governance platform (RFC-0001 SPANFORGE)
|
|
5
5
|
Project-URL: Homepage, https://github.com/veerarag1973/spanforge
|
|
6
6
|
Project-URL: Documentation, https://github.com/veerarag1973/spanforge/blob/main/docs/index.md
|
|
@@ -8,12 +8,12 @@ Project-URL: Source, https://github.com/veerarag1973/spanforge
|
|
|
8
8
|
Project-URL: Bug Tracker, https://github.com/veerarag1973/spanforge/issues
|
|
9
9
|
Project-URL: Changelog, https://github.com/veerarag1973/spanforge/blob/main/docs/changelog.md
|
|
10
10
|
Author: viswanathanstartup
|
|
11
|
-
License:
|
|
11
|
+
License: MIT
|
|
12
12
|
License-File: LICENSE
|
|
13
13
|
Keywords: agentic-ai,ai-compliance,ai-lifecycle,events,governance,llm,opentelemetry,schema,spanforge
|
|
14
14
|
Classifier: Development Status :: 5 - Production/Stable
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
16
|
-
Classifier: License ::
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
17
|
Classifier: Programming Language :: Python :: 3
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -122,9 +122,8 @@ Description-Content-Type: text/markdown
|
|
|
122
122
|
<img src="https://img.shields.io/badge/version-1.0.2-4c8cbf" alt="Version 1.0.2"/>
|
|
123
123
|
<img src="https://img.shields.io/badge/dependencies-zero-brightgreen" alt="Zero dependencies"/>
|
|
124
124
|
<a href="docs/index.md"><img src="https://img.shields.io/badge/docs-local-4c8cbf" alt="Documentation"/></a>
|
|
125
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-
|
|
126
|
-
<img src="https://img.shields.io/badge/free%20for-
|
|
127
|
-
<a href="https://getspanforge.com/pricing"><img src="https://img.shields.io/badge/commercial%20use-license%20required-orange" alt="Commercial use requires a license"/></a>
|
|
125
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"/></a>
|
|
126
|
+
<img src="https://img.shields.io/badge/free%20for-any%20use-brightgreen" alt="Free for any use"/>
|
|
128
127
|
</p>
|
|
129
128
|
|
|
130
129
|
---
|
|
@@ -143,13 +142,13 @@ You might think compliance is a later problem — something to worry about when
|
|
|
143
142
|
|
|
144
143
|
- **You'll hit it sooner than you think.** The first B2B customer, the first SaaS sign-up from an EU user, the first healthcare or fintech pilot — they'll ask "how do you govern your AI?" If you have no answer, you lose the deal.
|
|
145
144
|
- **Retrofitting is expensive.** Adding audit trails, PII scrubbing, and signed evidence chains to an existing system takes weeks. Adding them with spanforge from day one takes minutes.
|
|
146
|
-
- **It's zero-cost to start.** The entire SDK is
|
|
145
|
+
- **It's zero-cost to start.** The entire SDK is MIT-licensed, zero dependencies, and works in-memory with no infrastructure. You don't pay anything until you need hosted storage.
|
|
147
146
|
- **It de-risks you personally.** GDPR fines apply to individuals running services, not just corporations. PII redaction and tamper-proof logs are your protection too.
|
|
148
147
|
|
|
149
148
|
In short: spanforge is the `logging` import you should have added on day one — except it also signs your audit trail and maps it to the regulations that will eventually matter to you.
|
|
150
149
|
|
|
151
150
|
```python
|
|
152
|
-
pip install spanforge #
|
|
151
|
+
pip install spanforge # MIT licensed, zero deps
|
|
153
152
|
```
|
|
154
153
|
|
|
155
154
|
```python
|
|
@@ -1539,14 +1538,12 @@ Contributions welcome — see the [Contributing Guide](docs/contributing.md). Al
|
|
|
1539
1538
|
|
|
1540
1539
|
## License
|
|
1541
1540
|
|
|
1542
|
-
**[
|
|
1541
|
+
**[MIT License](LICENSE)**
|
|
1543
1542
|
|
|
1544
|
-
- ✅ Free for
|
|
1545
|
-
-
|
|
1543
|
+
- ✅ Free for any use — personal, research, education, open-source, and commercial.
|
|
1544
|
+
- ✅ No restrictions on distribution, modification, or sublicensing.
|
|
1546
1545
|
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
> Enterprise features (SSO, air-gapped deployment, dedicated support, SLAs) are available in **SpanForge Enterprise** — a separate commercial product.
|
|
1546
|
+
> Enterprise features (SSO, air-gapped deployment, dedicated support, SLAs) are available in **SpanForge Enterprise** — contact **sriram@getspanforge.com** | [getspanforge.com/pricing](https://getspanforge.com/pricing).
|
|
1550
1547
|
|
|
1551
1548
|
---
|
|
1552
1549
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# spanforge Pricing
|
|
2
2
|
|
|
3
|
-
spanforge is source
|
|
3
|
+
spanforge is open-source software released under the [MIT License](https://opensource.org/licenses/MIT). The core library is and always will be **free for any use**, including commercial.
|
|
4
4
|
|
|
5
5
|
The paid tiers described below are for **hosted services, commercial support, and enterprise add-ons** built on top of the open-source library.
|
|
6
6
|
|
|
@@ -10,8 +10,8 @@ The paid tiers described below are for **hosted services, commercial support, an
|
|
|
10
10
|
|
|
11
11
|
| | **Community** | **Cloud** | **Cloud Team** | **Compliance** |
|
|
12
12
|
|---|---|---|---|---|
|
|
13
|
-
| **Price** | Free (
|
|
14
|
-
| **License** |
|
|
13
|
+
| **Price** | Free (MIT) | $29 / month flat | $99 / month flat | $299 / month flat |
|
|
14
|
+
| **License** | MIT | MIT + Cloud ToS | MIT + Cloud ToS | MIT + Enterprise Agreement |
|
|
15
15
|
| **Core SDK** | ✅ All features | ✅ All features | ✅ All features | ✅ All features |
|
|
16
16
|
| **HMAC signing** | ✅ | ✅ | ✅ | ✅ |
|
|
17
17
|
| **PII redaction** | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -41,8 +41,8 @@ The paid tiers described below are for **hosted services, commercial support, an
|
|
|
41
41
|
|
|
42
42
|
## Community (Free)
|
|
43
43
|
|
|
44
|
-
- Full SDK under
|
|
45
|
-
-
|
|
44
|
+
- Full SDK under MIT License — free for any use including commercial
|
|
45
|
+
- Paid tiers are for hosted services, managed storage, compliance tooling, and enterprise support — contact [team@getspanforge.com](mailto:team@getspanforge.com)
|
|
46
46
|
- 97-file test suite, 6,109+ tests, 90%+ coverage
|
|
47
47
|
- Local SPA trace viewer (`spanforge serve` / `spanforge ui`)
|
|
48
48
|
- GitHub Issues, GitHub Discussions, SECURITY.md responsible-disclosure
|
|
@@ -18,9 +18,8 @@
|
|
|
18
18
|
<img src="https://img.shields.io/badge/version-1.0.2-4c8cbf" alt="Version 1.0.2"/>
|
|
19
19
|
<img src="https://img.shields.io/badge/dependencies-zero-brightgreen" alt="Zero dependencies"/>
|
|
20
20
|
<a href="docs/index.md"><img src="https://img.shields.io/badge/docs-local-4c8cbf" alt="Documentation"/></a>
|
|
21
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-
|
|
22
|
-
<img src="https://img.shields.io/badge/free%20for-
|
|
23
|
-
<a href="https://getspanforge.com/pricing"><img src="https://img.shields.io/badge/commercial%20use-license%20required-orange" alt="Commercial use requires a license"/></a>
|
|
21
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"/></a>
|
|
22
|
+
<img src="https://img.shields.io/badge/free%20for-any%20use-brightgreen" alt="Free for any use"/>
|
|
24
23
|
</p>
|
|
25
24
|
|
|
26
25
|
---
|
|
@@ -39,13 +38,13 @@ You might think compliance is a later problem — something to worry about when
|
|
|
39
38
|
|
|
40
39
|
- **You'll hit it sooner than you think.** The first B2B customer, the first SaaS sign-up from an EU user, the first healthcare or fintech pilot — they'll ask "how do you govern your AI?" If you have no answer, you lose the deal.
|
|
41
40
|
- **Retrofitting is expensive.** Adding audit trails, PII scrubbing, and signed evidence chains to an existing system takes weeks. Adding them with spanforge from day one takes minutes.
|
|
42
|
-
- **It's zero-cost to start.** The entire SDK is
|
|
41
|
+
- **It's zero-cost to start.** The entire SDK is MIT-licensed, zero dependencies, and works in-memory with no infrastructure. You don't pay anything until you need hosted storage.
|
|
43
42
|
- **It de-risks you personally.** GDPR fines apply to individuals running services, not just corporations. PII redaction and tamper-proof logs are your protection too.
|
|
44
43
|
|
|
45
44
|
In short: spanforge is the `logging` import you should have added on day one — except it also signs your audit trail and maps it to the regulations that will eventually matter to you.
|
|
46
45
|
|
|
47
46
|
```python
|
|
48
|
-
pip install spanforge #
|
|
47
|
+
pip install spanforge # MIT licensed, zero deps
|
|
49
48
|
```
|
|
50
49
|
|
|
51
50
|
```python
|
|
@@ -1435,14 +1434,12 @@ Contributions welcome — see the [Contributing Guide](docs/contributing.md). Al
|
|
|
1435
1434
|
|
|
1436
1435
|
## License
|
|
1437
1436
|
|
|
1438
|
-
**[
|
|
1437
|
+
**[MIT License](LICENSE)**
|
|
1439
1438
|
|
|
1440
|
-
- ✅ Free for
|
|
1441
|
-
-
|
|
1439
|
+
- ✅ Free for any use — personal, research, education, open-source, and commercial.
|
|
1440
|
+
- ✅ No restrictions on distribution, modification, or sublicensing.
|
|
1442
1441
|
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
> Enterprise features (SSO, air-gapped deployment, dedicated support, SLAs) are available in **SpanForge Enterprise** — a separate commercial product.
|
|
1442
|
+
> Enterprise features (SSO, air-gapped deployment, dedicated support, SLAs) are available in **SpanForge Enterprise** — contact **sriram@getspanforge.com** | [getspanforge.com/pricing](https://getspanforge.com/pricing).
|
|
1446
1443
|
|
|
1447
1444
|
---
|
|
1448
1445
|
|
|
@@ -201,5 +201,5 @@ Before opening a PR, confirm:
|
|
|
201
201
|
|
|
202
202
|
## License
|
|
203
203
|
|
|
204
|
-
spanforge is released under the [
|
|
205
|
-
By contributing you agree that your contributions will be licensed under the
|
|
204
|
+
spanforge is released under the [MIT License](https://opensource.org/licenses/MIT). Contributions are accepted under the same license.
|
|
205
|
+
By contributing you agree that your contributions will be licensed under the MIT License.
|
|
@@ -137,4 +137,4 @@ All changes to this RFC go through the RFC amendment process:
|
|
|
137
137
|
|
|
138
138
|
## License
|
|
139
139
|
|
|
140
|
-
This RFC and the SPANFORGE schema are published under the [
|
|
140
|
+
This RFC and the SPANFORGE schema are published under the [MIT License](../../LICENSE).
|
|
@@ -7,16 +7,16 @@ build-backend = "hatchling.build"
|
|
|
7
7
|
# ---------------------------------------------------------------------------
|
|
8
8
|
[project]
|
|
9
9
|
name = "spanforge"
|
|
10
|
-
version = "1.0.
|
|
10
|
+
version = "1.0.3"
|
|
11
11
|
description = "SpanForge — AI lifecycle and governance platform (RFC-0001 SPANFORGE)"
|
|
12
12
|
readme = "README.md"
|
|
13
|
-
license = { text = "
|
|
13
|
+
license = { text = "MIT" }
|
|
14
14
|
authors = [{ name = "viswanathanstartup" }]
|
|
15
15
|
keywords = ["llm", "spanforge", "ai-compliance", "opentelemetry", "agentic-ai", "governance", "ai-lifecycle", "schema", "events"]
|
|
16
16
|
classifiers = [
|
|
17
17
|
"Development Status :: 5 - Production/Stable",
|
|
18
18
|
"Intended Audience :: Developers",
|
|
19
|
-
"License ::
|
|
19
|
+
"License :: OSI Approved :: MIT License",
|
|
20
20
|
"Programming Language :: Python :: 3",
|
|
21
21
|
"Programming Language :: Python :: 3.9",
|
|
22
22
|
"Programming Language :: Python :: 3.10",
|
spanforge-1.0.2/LICENSE
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
PolyForm Noncommercial License 1.0.0
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 viswanathanstartup
|
|
4
|
-
|
|
5
|
-
Acceptance
|
|
6
|
-
|
|
7
|
-
In order to get any license under these terms, you must agree to them as both
|
|
8
|
-
strict obligations and conditions to all your licenses.
|
|
9
|
-
|
|
10
|
-
Copyright License
|
|
11
|
-
|
|
12
|
-
The licensor grants you a copyright license for the software to do everything
|
|
13
|
-
you might do with the software that would otherwise infringe the licensor's
|
|
14
|
-
copyright in it for any permitted purpose. However, you may only distribute
|
|
15
|
-
the software according to Distribution License and make changes or new works
|
|
16
|
-
based on the software according to Changes and New Works License.
|
|
17
|
-
|
|
18
|
-
Distribution License
|
|
19
|
-
|
|
20
|
-
The licensor grants you an additional copyright license to distribute copies
|
|
21
|
-
of the software. Your license to distribute covers distributing the software
|
|
22
|
-
with changes and new works permitted by Changes and New Works License.
|
|
23
|
-
|
|
24
|
-
Notices
|
|
25
|
-
|
|
26
|
-
You must ensure that anyone who gets a copy of any part of the software from
|
|
27
|
-
you also gets a copy of these terms or the URL for them above, as well as
|
|
28
|
-
copies of any plain-text lines beginning with "Required Notice:" that the
|
|
29
|
-
licensor provided with the software. For example:
|
|
30
|
-
|
|
31
|
-
Required Notice: Copyright (c) 2026 viswanathanstartup (https://getspanforge.com)
|
|
32
|
-
|
|
33
|
-
Changes and New Works License
|
|
34
|
-
|
|
35
|
-
The licensor grants you an additional copyright license to make changes and
|
|
36
|
-
new works based on the software for any permitted purpose.
|
|
37
|
-
|
|
38
|
-
Patent License
|
|
39
|
-
|
|
40
|
-
The licensor grants you a patent license for the software that covers patent
|
|
41
|
-
claims the licensor can license, or will be able to license, that you would
|
|
42
|
-
infringe by using the software.
|
|
43
|
-
|
|
44
|
-
Noncommercial Purposes
|
|
45
|
-
|
|
46
|
-
Any noncommercial purpose is a permitted purpose.
|
|
47
|
-
|
|
48
|
-
Personal Uses
|
|
49
|
-
|
|
50
|
-
Personal use for research, experiment, and testing for the benefit of public
|
|
51
|
-
knowledge, personal study, private entertainment, hobby projects, amateur
|
|
52
|
-
pursuits, or religious observance, without any anticipated commercial
|
|
53
|
-
application, is use for a permitted purpose.
|
|
54
|
-
|
|
55
|
-
Noncommercial Organizations
|
|
56
|
-
|
|
57
|
-
Use by any charitable organization, educational institution, public research
|
|
58
|
-
organization, public safety or health organization, environmental protection
|
|
59
|
-
organization, or government institution is use for a permitted purpose
|
|
60
|
-
regardless of the source of funding or obligations resulting from the funding.
|
|
61
|
-
|
|
62
|
-
Fair Use
|
|
63
|
-
|
|
64
|
-
You may have "fair use" rights for the software under the law. These terms do
|
|
65
|
-
not limit them.
|
|
66
|
-
|
|
67
|
-
No Other Rights
|
|
68
|
-
|
|
69
|
-
These terms do not allow you to sublicense or transfer any of your licenses to
|
|
70
|
-
anyone else, or prevent the licensor from granting licenses to anyone else.
|
|
71
|
-
These terms do not imply any other licenses.
|
|
72
|
-
|
|
73
|
-
Patent Defense
|
|
74
|
-
|
|
75
|
-
If you make any written claim that the software infringes or contributes to
|
|
76
|
-
infringement of any patent, your patent license for the software granted under
|
|
77
|
-
these terms ends immediately. If your employer makes such a claim, your patent
|
|
78
|
-
license ends immediately for work on behalf of your employer.
|
|
79
|
-
|
|
80
|
-
Violations
|
|
81
|
-
|
|
82
|
-
The first time you are notified in writing that you have violated any of these
|
|
83
|
-
terms, or done anything with the software not covered by your licenses, you
|
|
84
|
-
may avoid losing your licenses by taking all practical steps to comply within
|
|
85
|
-
30 days after the notice. If you do not do so, your licenses end immediately.
|
|
86
|
-
|
|
87
|
-
No Liability
|
|
88
|
-
|
|
89
|
-
As far as the law allows, the software comes as is, without any warranty or
|
|
90
|
-
condition, and the licensor will not be liable to you for any damages arising
|
|
91
|
-
out of these terms or the use or nature of the software, under any kind of
|
|
92
|
-
legal claim.
|
|
93
|
-
|
|
94
|
-
Definitions
|
|
95
|
-
|
|
96
|
-
The "licensor" is the individual or entity offering these terms.
|
|
97
|
-
|
|
98
|
-
The "software" is the software the licensor makes available under these terms.
|
|
99
|
-
|
|
100
|
-
"You" refers to the individual or entity agreeing to these terms.
|
|
101
|
-
|
|
102
|
-
"Your company" is any legal entity, sole proprietorship, or other kind of
|
|
103
|
-
organization that you work for, plus all organizations that have control over,
|
|
104
|
-
are under the control of, or are under common control with that organization.
|
|
105
|
-
"Control" means ownership of substantially all the assets of an entity, or the
|
|
106
|
-
power to direct its management and legal commitments.
|
|
107
|
-
|
|
108
|
-
"Your licenses" are all the licenses granted to you for the software under
|
|
109
|
-
these terms.
|
|
110
|
-
|
|
111
|
-
"Use" means anything you do with the software requiring one of your licenses.
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
COMMERCIAL USE
|
|
116
|
-
|
|
117
|
-
Use of this software for any commercial purpose — including but not limited to:
|
|
118
|
-
- running this software as part of a paid product or service,
|
|
119
|
-
- using this software to process data on behalf of a business,
|
|
120
|
-
- integrating this software into a product offered to customers,
|
|
121
|
-
- using this software internally at a for-profit company —
|
|
122
|
-
|
|
123
|
-
requires a separate commercial license from the copyright holder.
|
|
124
|
-
|
|
125
|
-
To obtain a commercial license, contact: sriram@getspanforge.com
|
|
126
|
-
Commercial licensing details: https://getspanforge.com/pricing
|
|
127
|
-
|
|
128
|
-
SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|