{ "version": "6.0", "updated_at": "2026-03-27", "scope": { "active_repos": [ "pulse", "pulse-enterprise", "pulse-mobile", "pulse-pro" ], "control_plane_repo": "pulse", "ignored_repos": [ "pulse-5.1.x", "pulse-refactor-streams" ], "repo_catalog": [ { "id": "pulse", "purpose": "Core desktop/runtime repo and canonical Pulse v6 release-control authority.", "visibility": "public" }, { "id": "pulse-enterprise", "purpose": "Closed-source enterprise and paid runtime features that should not ship as open-source surfaces.", "visibility": "private" }, { "id": "pulse-mobile", "purpose": "Mobile client, mobile relay flows, approval UX, and device-local auth/state handling.", "visibility": "private" }, { "id": "pulse-pro", "purpose": "Financial, operational, checkout, license-server, and relay-server surfaces that back commercial flows.", "visibility": "private" } ] }, "source_precedence": [ "docs/release-control/v6/internal/SOURCE_OF_TRUTH.md", "docs/release-control/v6/internal/status.json", "docs/release-control/v6/status.schema.json", "docs/release-control/v6/internal/CANONICAL_DEVELOPMENT_PROTOCOL.md", "docs/release-control/v6/internal/subsystems/registry.json", "docs/release-control/v6/internal/subsystems/registry.schema.json" ], "execution_model": "direct-repo-sessions", "readiness": { "repo_ready_rule": "all lanes target-met and evidence-present plus all repo-ready assertions passed", "rc_ready_rule": "repo_ready plus all rc-ready assertions passed plus zero rc-ready open_decisions plus all rc-ready release_gates passed", "release_ready_rule": "rc_ready plus all release-ready assertions passed plus zero release-ready open_decisions plus all release-ready release_gates passed" }, "readiness_assertions": [ { "id": "RA1", "summary": "Governed surfaces that should use the unified resource model do not keep shipping on legacy equivalents.", "kind": "invariant", "blocking_level": "repo-ready", "proof_type": "automated", "lane_ids": [ "L6", "L13" ], "subsystem_ids": [ "api-contracts", "unified-resources" ], "release_gate_ids": [], "proof_commands": [ { "id": "ra1-unified-resource-guardrails", "run": [ "go", "test", "./internal/unifiedresources", "-run", "TestNoDirectStateAccessForMigratedResources|TestNoLegacyHostResourceTypeSymbol|TestNoLegacyMigrationHintsInRuntimeCode|TestV6AgentRegistrationArtifactsStayCanonical|TestV6BroadLegacyAliasCoverage|TestV6ReleaseFacingAPITestsCoverLegacyHostRejection|TestV6DirectHostAliasValidatorCoverage", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "frontend-modern/src/components/Infrastructure/__tests__/UnifiedResourceTable.workloads-link.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/hooks/__tests__/useUnifiedResources.test.ts", "kind": "file" }, { "repo": "pulse", "path": "internal/unifiedresources/code_standards_test.go", "kind": "file" } ] }, { "id": "RA2", "summary": "New users can complete Pulse Pro Relay signup through paid activation without manual operator intervention or ambiguous provisioning steps.", "kind": "journey", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L2", "L3", "L8", "L12" ], "subsystem_ids": [ "cloud-paid", "frontend-primitives" ], "release_gate_ids": [ "hosted-signup-billing-replay" ], "proof_commands": [ { "id": "hosted-signup-api-tests", "run": [ "go", "test", "./internal/api", "-run", "TestHostedLifecycle|TestHostedSignupSuccess|TestHostedSignupValidationFailures|TestHostedSignupHostedModeGate|TestHostedSignupRateLimit|TestHostedSignupRateLimit_NoProvisioningSideEffects|TestHostedSignupCleanupOnRBACFailure|TestHostedSignupFailsClosedWithoutPublicURL", "-count=1" ] }, { "id": "hosted-signup-provisioner-tests", "run": [ "go", "test", "./internal/hosted", "-run", "TestProvisionTenantSuccess|TestProvisionTenantIdempotentDuplicateEmail|TestProvisionTenantIdempotentDuplicateEmailCaseInsensitive|TestProvisionTenantValidationFailures|TestProvisionTenantPartialFailureRollback|TestProvisionHostedSignupSuccess", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/hosted-signup-billing-replay-2026-03-12.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/hosted-signup-billing-replay-production-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/hosted-signup-billing-replay-production-fixed-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/BillingAdminPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/api/hosted_lifecycle_integration_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/hosted_signup_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/hosted/provisioner_test.go", "kind": "file" } ] }, { "id": "RA3", "summary": "After first successful entitlement activation, Pulse preserves paid state across supported sessions and upgrades without repeated license entry.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L3", "L5", "L8" ], "subsystem_ids": [ "cloud-paid", "frontend-primitives" ], "release_gate_ids": [ "paid-feature-entitlement-gating", "upgrade-state-and-entitlement-preservation" ], "proof_commands": [ { "id": "entitlement-gating-api-tests", "run": [ "go", "test", "./internal/api", "-run", "TestHandleActivateLicense_ExchangesLegacyJWTInStrictV6|TestHandleActivateLicense_ClearsCommercialMigrationStateOnNativeActivation|TestHandleActivateLicense_ActivationKeyClearsStaleLegacyPersistence|TestGetTenantComponents_AutoExchangesPersistedLegacyJWT|TestGetTenantComponents_SkipsExchange_WhenActivationStateExists|TestGetTenantComponents_PersistsCommercialMigrationState_WhenAutoExchangeFails|TestRequireLicenseFeature_HostedEntitlementsBlockMissingFeature|TestRequireLicenseFeature_HostedEntitlementsAllowGrantedFeature|TestLicenseGatedEmptyResponse_HostedEntitlementsReturnEmptyArrayWhenLocked", "-count=1" ] }, { "id": "upgrade-state-migration-tests", "run": [ "go", "test", "./tests/migration", "-run", "TestV5PaidLicenseUpgrade_CommercialMigrationFailureMatrix|TestV5PaidLicenseUpgrade_RealLicenseServerExchange|TestV5DataDir_CSRFLegacyMapFormat|TestV5DataDir_CSRFTokenFileContinuity|TestV5DataDir_SessionLegacyMapFormat|TestV5DataDir_SessionTokenContinuity|TestV5DowngradeSafety|TestV5FullUpgradeScenario", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/upgrade-state-and-entitlement-preservation-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "internal/api/license_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/licensing_handlers_auto_migrate_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_commercial_migration_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_real_exchange_upgrade_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_session_db_test.go", "kind": "file" } ] }, { "id": "RA4", "summary": "Typical end users cannot trivially unlock Pulse Pro features by stripping client-only checks while server and hosted entitlements still deny access.", "kind": "trust-gate", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L2", "L3", "L6", "L9", "L12" ], "subsystem_ids": [ "api-contracts", "cloud-paid" ], "release_gate_ids": [ "paid-feature-entitlement-gating" ], "proof_commands": [ { "id": "entitlement-gating-api-tests", "run": [ "go", "test", "./internal/api", "-run", "TestHandleActivateLicense_ExchangesLegacyJWTInStrictV6|TestHandleActivateLicense_ClearsCommercialMigrationStateOnNativeActivation|TestHandleActivateLicense_ActivationKeyClearsStaleLegacyPersistence|TestGetTenantComponents_AutoExchangesPersistedLegacyJWT|TestGetTenantComponents_SkipsExchange_WhenActivationStateExists|TestGetTenantComponents_PersistsCommercialMigrationState_WhenAutoExchangeFails|TestRequireLicenseFeature_HostedEntitlementsBlockMissingFeature|TestRequireLicenseFeature_HostedEntitlementsAllowGrantedFeature|TestLicenseGatedEmptyResponse_HostedEntitlementsReturnEmptyArrayWhenLocked", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/RBACPaywallPanels.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/pages/__tests__/AIIntelligence.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/api/license_handlers_test.go", "kind": "file" } ] }, { "id": "RA5", "summary": "Non-paid users do not see paid-only navigation or pages unless the surface is explicitly promotional.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L2", "L3", "L8", "L9", "L12" ], "subsystem_ids": [ "cloud-paid", "frontend-primitives" ], "release_gate_ids": [ "paid-feature-entitlement-gating" ], "proof_commands": [ { "id": "frontend-paid-surface-visibility-tests", "cwd": "frontend-modern", "run": [ "npm", "test", "--", "--run", "src/components/Dashboard/__tests__/RelayOnboardingCard.test.tsx", "src/components/Settings/__tests__/RBACPaywallPanels.test.tsx", "src/components/Settings/__tests__/settingsNavigation.integration.test.tsx", "src/pages/__tests__/AIIntelligence.test.tsx" ] } ], "evidence": [ { "repo": "pulse", "path": "frontend-modern/src/components/Dashboard/__tests__/RelayOnboardingCard.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/RBACPaywallPanels.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/settingsNavigation.integration.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/pages/__tests__/AIIntelligence.test.tsx", "kind": "file" } ] }, { "id": "RA6", "summary": "Supported upgrades preserve core state, entitlements, and first-session continuity without manual repair steps.", "kind": "journey", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L3", "L5", "L8" ], "subsystem_ids": [ "cloud-paid", "frontend-primitives" ], "release_gate_ids": [ "upgrade-state-and-entitlement-preservation" ], "proof_commands": [ { "id": "csrf-state-migration-api-tests", "run": [ "go", "test", "./internal/api", "-run", "TestCSRFTokenStore_Load_CurrentFormat_SkipsNilAndExpired|TestCSRFTokenStore_Load_MigratesLegacyFormat", "-count=1" ] }, { "id": "upgrade-state-migration-tests", "run": [ "go", "test", "./tests/migration", "-run", "TestV5PaidLicenseUpgrade_CommercialMigrationFailureMatrix|TestV5PaidLicenseUpgrade_RealLicenseServerExchange|TestV5DataDir_CSRFLegacyMapFormat|TestV5DataDir_CSRFTokenFileContinuity|TestV5DataDir_SessionLegacyMapFormat|TestV5DataDir_SessionTokenContinuity|TestV5DowngradeSafety|TestV5FullUpgradeScenario", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/upgrade-state-and-entitlement-preservation-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "internal/api/csrf_store_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/licensing_handlers_auto_migrate_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/integration/tests/11-first-session.spec.ts", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_full_upgrade_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_real_exchange_upgrade_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_session_db_test.go", "kind": "file" } ] }, { "id": "RA7", "summary": "Monitored-system allocation stays coherent across enforcement, entitlements, and UI: counted top-level monitored systems are collection-path agnostic, capped limits stay canonical, and users see the same monitored-system usage that the runtime enforces.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L2", "L3", "L6", "L8", "L12", "L16" ], "subsystem_ids": [ "api-contracts", "cloud-paid", "frontend-primitives" ], "release_gate_ids": [ "paid-feature-entitlement-gating" ], "proof_commands": [ { "id": "monitored-system-allocation-backend-tests", "run": [ "go", "test", "./internal/api", "-run", "TestMonitoredSystemCountNilMonitor|TestLegacyConnectionCountsFromReadState|TestLegacyConnectionCountsUsesSnapshotFallback|TestDeployReservedCount|TestUnifiedAgentHandlers_HandleReport_EnforcesMaxMonitoredSystemsForNewHostsOnly|TestHandleAddNode_BlocksNewCountedSystemAtLimit|TestHandleAutoRegister_BlocksNewCountedSystemAtLimit|TestDockerAgentHandlers_HandleReport_BlocksNewMonitoredSystemAtLimit|TestKubernetesAgentHandlers_HandleReport_BlocksNewMonitoredSystemAtLimit|TestTrueNASHandlers_HandleAdd_BlocksNewCountedSystemAtLimit|TestBuildEntitlementPayloadWithUsage_CurrentValues", "-count=1" ] }, { "cwd": "frontend-modern", "id": "monitored-system-allocation-frontend-tests", "run": [ "npm", "test", "--", "--run", "src/components/Settings/__tests__/OrganizationBillingPanel.test.tsx", "src/components/shared/__tests__/MonitoredSystemLimitWarningBanner.test.tsx" ] }, { "id": "monitored-system-allocation-limit-contract-tests", "run": [ "go", "test", "./pkg/licensing", "-run", "TestExceedsMonitoredSystemLimit|TestInstalledUnifiedAgentCount|TestLimitsForCloudPlan_KnownPlans|TestLimitsForCloudPlan_UnknownPlanFailsClosed", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/OrganizationBillingPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/shared/__tests__/MonitoredSystemLimitWarningBanner.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/api/config_handlers_add_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/config_handlers_auto_register_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/docker_agents_additional_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/entitlement_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/kubernetes_agents_additional_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/monitored_system_limit_enforcement_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/truenas_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/unified_agent_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "pkg/licensing/features_test.go", "kind": "file" }, { "repo": "pulse", "path": "pkg/licensing/monitored_system_limit_test.go", "kind": "file" } ] }, { "id": "RA8", "summary": "Stable or GA promotion happens only after an exercised RC, live release-pipeline proof, a recorded rollback target, and a written v5 maintenance-only support policy.", "kind": "trust-gate", "blocking_level": "release-ready", "proof_type": "hybrid", "lane_ids": [ "L1", "L9", "L11", "L12" ], "subsystem_ids": [], "release_gate_ids": [ "rc-to-ga-promotion-readiness" ], "proof_commands": [ { "id": "release-promotion-policy-tests", "run": [ "python3", "scripts/release_control/release_promotion_policy_test.py" ] } ], "evidence": [ { "repo": "pulse", "path": ".github/workflows/release-dry-run.yml", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/PRE_RELEASE_CHECKLIST.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/RC_TO_GA_REHEARSAL_TEMPLATE.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/rc-to-ga-promotion-readiness-blocked-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/rc-to-ga-promotion-readiness-blocked-2026-03-26.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/rc-to-ga-promotion-readiness-rehearsal-blocked-2026-03-26.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/RELEASE_PROMOTION_POLICY.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/V5_MAINTENANCE_SUPPORT_POLICY.md", "kind": "file" }, { "repo": "pulse", "path": "scripts/release_control/release_promotion_policy_test.py", "kind": "file" } ] }, { "id": "RA9", "summary": "A real v5-installed Pulse Unified Agent upgrades through v6 release assets into one canonical v6 agent identity, preserves one-shot update continuity metadata, keeps legacy persisted host-agent token scopes valid at the v6 canonical agent endpoints, and does not drift agent-count or fallback behavior during the crossover.", "kind": "journey", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L11", "L12", "L16" ], "subsystem_ids": [ "agent-lifecycle" ], "release_gate_ids": [ "unified-agent-v5-upgrade-continuity" ], "proof_commands": [ { "id": "unified-agent-first-report-continuity-tests", "run": [ "go", "test", "./internal/hostagent", "-run", "TestNew_CarriesUpdatedFromIntoFirstV6Report|TestAgentSendReport_SetsHeadersAndPostsJSON", "-count=1" ] }, { "id": "unified-agent-install-fallback-tests", "run": [ "go", "test", "./internal/api", "-run", "TestDownloadUnifiedInstallScript|TestDownloadUnifiedInstallScriptPS|TestProxyInstallScriptFromGitHub|TestContract_InstallScriptReleaseAssetURL|TestDownloadUnifiedAgent|TestUnifiedAgentHandlers_LegacyV5ReportUpgradesToSingleCanonicalUnifiedAgent|TestUnifiedAgentEndpointsAcceptLegacyUnifiedAgentReportScopeAlias|TestNormalizeRequestedScopesCanonicalizesLegacyUnifiedAgentAliases|TestContract_APITokenScopeAliasNormalization", "-count=1" ] }, { "id": "unified-agent-update-handoff-tests", "run": [ "go", "test", "./internal/agentupdate", "-run", "TestCheckAndUpdateToFirstHostReportCarriesPreviousVersionOnce|TestUpdateToFirstHostReportCarriesPreviousVersionOnce|TestPerformUpdatePersistsPreviousVersionForNextStart", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/unified-agent-v5-upgrade-continuity-2026-03-12.md", "kind": "file" }, { "repo": "pulse", "path": "internal/agentupdate/coverage_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/agentupdate/update_hostagent_integration_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/security_regression_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/security_tokens_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/unified_agent_more_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/unified_agent_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/unified_agent_upgrade_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/config/api_tokens_coverage_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/hostagent/agent_new_test.go", "kind": "file" } ] }, { "id": "RA10", "summary": "Active Pulse v6 guidance reflects the current governed behavior of the codebase, and legacy or historical documentation does not remain part of the active v6 guidance surface.", "kind": "invariant", "blocking_level": "release-ready", "proof_type": "hybrid", "lane_ids": [ "L9" ], "subsystem_ids": [], "release_gate_ids": [ "documentation-currentness-and-legacy-cleanup" ], "proof_commands": [ { "id": "documentation-currentness-tests", "run": [ "python3", "scripts/release_control/documentation_currentness_test.py" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/control_plane.json", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/internal/CONTROL_PLANE.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/CANONICAL_DEVELOPMENT_PROTOCOL.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/documentation-currentness-and-legacy-cleanup-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/SOURCE_OF_TRUTH.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/status.json", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/README.md", "kind": "file" }, { "repo": "pulse", "path": "scripts/release_control/documentation_currentness_test.py", "kind": "file" } ] }, { "id": "RA11", "summary": "Pulse Hosted works as a real offered v6 tier: customers can sign up or sign in to a hosted tenant, enter a working hosted runtime, and use hosted billing/admin surfaces without self-hosted fallback paths or broken post-provisioning behavior.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L3", "L4", "L12" ], "subsystem_ids": [ "cloud-paid" ], "release_gate_ids": [ "cloud-hosted-tier-runtime-readiness" ], "proof_commands": [ { "id": "cloud-hosted-tier-runtime-api", "run": [ "go", "test", "./internal/api", "-run", "TestHostedLifecycle|TestHostedOrgAdminHandlers|TestHostedSignupSuccess|TestHostedSignupValidationFailures|TestHostedSignupHostedModeGate|TestHostedSignupRateLimit|TestHostedSignupRateLimit_NoProvisioningSideEffects|TestHostedSignupCleanupOnRBACFailure|TestHostedSignupFailsClosedWithoutPublicURL|TestStripeWebhook_", "-count=1" ] }, { "id": "cloud-hosted-tier-runtime-frontend", "run": [ "npx", "vitest", "run", "src/pages/__tests__/HostedSignup.test.tsx", "src/components/Settings/__tests__/BillingAdminPanel.test.tsx", "src/components/Settings/__tests__/OrganizationBillingPanel.test.tsx" ], "cwd": "frontend-modern" }, { "id": "cloud-hosted-tier-runtime-go", "run": [ "go", "test", "./internal/cloudcp/...", "./internal/hosted/...", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-production-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-production-fixed-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-production-followup-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-production-recovered-2026-03-26.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/cloud-paid.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/BillingAdminPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/OrganizationBillingPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/pages/__tests__/HostedSignup.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/api/hosted_lifecycle_integration_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/hosted_org_admin_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/hosted_signup_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/cloudcp/stripe/cloud_lifecycle_integration_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/hosted/provisioner_test.go", "kind": "file" } ] }, { "id": "RA12", "summary": "Multi-tenant Pulse is sound: tenant isolation, organization membership, RBAC scope, tenant-scoped runtime state, sharing, and migration all fail closed outside the intended tenant boundary instead of partially behaving like a single-tenant system.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L4", "L6", "L12", "L13", "L14" ], "subsystem_ids": [ "api-contracts", "monitoring", "organization-settings" ], "release_gate_ids": [ "multi-tenant-runtime-isolation-and-coherence" ], "proof_commands": [ { "id": "multi-tenant-runtime-api", "run": [ "go", "test", "./internal/api", "-run", "TestOrgHandlers|TestMultiTenant|TestResourceHandlers_NonDefaultOrg|TestSetMultiTenantMonitor_WiresHandlers|TestMultiTenantStateProvider|TestMultiTenantAPITokenRemainsScopedToIssuingOrg", "-count=1" ] }, { "id": "multi-tenant-runtime-frontend", "run": [ "npx", "vitest", "run", "src/components/Settings/__tests__/OrganizationSharingPanel.test.tsx", "src/components/Settings/__tests__/RBACPaywallPanels.test.tsx", "src/utils/__tests__/rbacPermissions.test.ts", "src/utils/__tests__/rbacPresentation.test.ts", "src/utils/__tests__/organizationRolePresentation.test.ts", "src/utils/__tests__/organizationSettingsPresentation.test.ts" ], "cwd": "frontend-modern" }, { "id": "multi-tenant-runtime-migration", "run": [ "go", "test", "./tests/migration", "-run", "TestV5DataDir_MultiTenantMigration", "-count=1" ] }, { "id": "multi-tenant-runtime-monitoring", "run": [ "go", "test", "./internal/monitoring", "-run", "TestMultiTenantMonitor", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/multi-tenant-runtime-isolation-and-coherence-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/organization-settings.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/OrganizationSharingPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/RBACPaywallPanels.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/organizationRolePresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/organizationSettingsPresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/rbacPermissions.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/rbacPresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "internal/api/api_token_org_scope_integration_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/org_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/rbac_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/resources_tenant_security_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/router_helpers_more_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/monitoring/multi_tenant_monitor_additional_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/integration/tests/03-multi-tenant.spec.ts", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_to_v6_test.go", "kind": "file" } ] }, { "id": "RA13", "summary": "MSP support works as a real v6 product mode: one provider account can onboard, view, and manage multiple client tenants from one control surface with canonical MSP plan handling and without cross-client leakage, scope confusion, or per-client operational drift.", "kind": "journey", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L3", "L4", "L12" ], "subsystem_ids": [ "cloud-paid" ], "release_gate_ids": [ "msp-provider-tenant-management" ], "proof_commands": [ { "id": "msp-account-and-registry-tests", "run": [ "go", "test", "./internal/cloudcp/account", "./internal/cloudcp/registry", "-count=1" ] }, { "id": "msp-frontend-tests", "run": [ "npx", "vitest", "run", "src/components/Settings/__tests__/OrganizationBillingPanel.test.tsx", "src/pages/__tests__/CloudPricing.test.tsx" ], "cwd": "frontend-modern" }, { "id": "msp-lifecycle-tests", "run": [ "go", "test", "./internal/cloudcp/stripe", "-run", "TestMSPLifecycle_AccountToPortal", "-count=1" ] }, { "id": "msp-plan-guardrails", "run": [ "go", "test", "./internal/cloudcp", "./pkg/licensing", "-run", "TestPublicCloudSignupCheckoutMetadataRejectsMSPPlanForPublicSignup|TestMSPPlanAliasCanonicalizationContract", "-count=1" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-production-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-production-fixed-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-production-followup-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/cloud-paid.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/OrganizationBillingPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/pages/__tests__/CloudPricing.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/cloudcp/account/handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/cloudcp/public_cloud_signup_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/cloudcp/registry/registry_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/cloudcp/stripe/msp_lifecycle_integration_test.go", "kind": "file" }, { "repo": "pulse", "path": "pkg/licensing/grant_claims_contract_test.go", "kind": "file" } ] }, { "id": "RA14", "summary": "API tokens remain least-privilege and correctly scoped: every token stays bound to its intended user, org, and scope, cannot silently widen authority through legacy alias handling, and stops working when revoked.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L1", "L6", "L11", "L14", "L16" ], "subsystem_ids": [ "agent-lifecycle", "api-contracts", "security-privacy" ], "release_gate_ids": [ "api-token-scope-and-assignment" ], "proof_commands": [ { "id": "api-token-scope-backend", "run": [ "go", "test", "./internal/api", "-run", "Test(APIToken|SecurityTokens|SystemSettings|MultiTenant)|TestNormalizeRequestedScopesCanonicalizesLegacyUnifiedAgentAliases|TestUnifiedAgentEndpointsRequireAgentReportScope|TestUnifiedAgentEndpointsAcceptLegacyUnifiedAgentReportScopeAlias|TestMultiTenantAPITokenRemainsScopedToIssuingOrg|TestContract_APITokenScopeAliasNormalization", "-count=1" ] }, { "id": "api-token-scope-frontend", "run": [ "npx", "vitest", "run", "src/components/Settings/__tests__/APITokenManager.test.tsx", "src/utils/__tests__/apiClient.org.test.ts", "src/utils/__tests__/apiTokenPresentation.test.ts" ], "cwd": "frontend-modern" } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/api-token-scope-and-assignment-2026-03-12.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/security-privacy.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/api/__tests__/security.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/APITokenManager.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/apiClient.org.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/apiTokenPresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "internal/api/api_token_org_scope_integration_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/contract_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/security_regression_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/security_status_additional_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/security_tokens_owner_binding_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/security_tokens_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/system_settings_telemetry_test.go", "kind": "file" } ] }, { "id": "RA15", "summary": "Assigned user privileges fail closed: a user cannot view, mutate, or destroy anything beyond the permissions granted by their effective organization membership and role, including cross-org and destructive paths.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L4", "L6", "L12", "L14" ], "subsystem_ids": [ "api-contracts", "organization-settings" ], "release_gate_ids": [ "organization-user-scope-and-rbac" ], "proof_commands": [ { "id": "user-privilege-backend", "run": [ "go", "test", "./internal/api", "-run", "TestOrgHandlersViewerCannotManageOrg|TestOrgHandlersTokenListAllowedButWriteForbidden|TestOrgHandlersCrossOrgIsolation|TestOrgHandlersShareIsolationAcrossOrganizations|TestMultiTenantRBACRoleUpdateChangesPermissions", "-count=1" ] }, { "id": "user-privilege-frontend", "run": [ "npx", "vitest", "run", "src/components/Settings/__tests__/OrganizationSharingPanel.test.tsx", "src/components/Settings/__tests__/RBACPaywallPanels.test.tsx", "src/utils/__tests__/organizationRolePresentation.test.ts", "src/utils/__tests__/organizationSettingsPresentation.test.ts", "src/utils/__tests__/rbacPermissions.test.ts", "src/utils/__tests__/rbacPresentation.test.ts" ], "cwd": "frontend-modern" } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/organization-user-scope-and-rbac-2026-03-12.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/OrganizationSharingPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/RBACPaywallPanels.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/organizationRolePresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/organizationSettingsPresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/rbacPermissions.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/rbacPresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "internal/api/org_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/rbac_handlers_test.go", "kind": "file" } ] }, { "id": "RA16", "summary": "Commercial continuity fails closed across cancellation and re-entry: active grandfathered v5 recurring customers keep their legacy recurring price only while the subscription remains continuous, cancellation revokes paid access cleanly, and any later re-entry uses current public v6 pricing rather than reviving grandfathered terms.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L2", "L3", "L11", "L12" ], "subsystem_ids": [ "cloud-paid" ], "release_gate_ids": [ "commercial-cancellation-reactivation" ], "proof_commands": [ { "id": "commercial-cancellation-reactivation-proof", "run": [ "python3", "scripts/release_control/internal/commercial_cancellation_reactivation_proof.py" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/COMMERCIAL_CANCELLATION_REACTIVATION_E2E_TEST_PLAN.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/commercial-cancellation-reactivation-2026-03-12.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/commercial-cancellation-reactivation-external-e2e-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/ProLicensePanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "pkg/licensing/billing_state_normalization_test.go", "kind": "file" }, { "repo": "pulse", "path": "scripts/release_control/internal/commercial_cancellation_reactivation_proof.py", "kind": "file" } ] }, { "id": "RA17", "summary": "Pulse Mobile access stays coherent against a real Pulse instance: pairing, secure persistence, relay reconnect, approval flows, and auth or revocation transitions recover cleanly and fail closed instead of leaving stale mobile access behind.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L5", "L6", "L7", "L12" ], "subsystem_ids": [ "api-contracts", "relay-runtime" ], "release_gate_ids": [ "mobile-relay-auth-approvals" ], "proof_commands": [ { "id": "mobile-relay-auth-approvals-proof", "run": [ "python3", "scripts/release_control/internal/mobile_relay_auth_approvals_proof.py" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/mobile-relay-auth-approvals-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "scripts/release_control/internal/mobile_relay_auth_approvals_proof.py", "kind": "file" }, { "repo": "pulse-enterprise", "path": "internal/aiautofix/handlers_test.go", "kind": "file" }, { "repo": "pulse-mobile", "path": "src/__tests__/mobileRelayAuthApprovals.rehearsal.test.ts", "kind": "file" }, { "repo": "pulse-mobile", "path": "src/hooks/__tests__/useRelayLifecycle.test.ts", "kind": "file" }, { "repo": "pulse-mobile", "path": "src/stores/__tests__/approvalStore.test.ts", "kind": "file" }, { "repo": "pulse-mobile", "path": "src/stores/__tests__/authStore.test.ts", "kind": "file" } ] }, { "id": "RA18", "summary": "Relay runtime remains resilient under registration and reconnect pressure: fresh registration, reconnect, stale-session recovery, and disconnect drain all recover predictably without stranding clients in resume loops, dead sessions, or lost inflight work.", "kind": "invariant", "blocking_level": "rc-ready", "proof_type": "hybrid", "lane_ids": [ "L5", "L6", "L7", "L12" ], "subsystem_ids": [ "api-contracts", "relay-runtime" ], "release_gate_ids": [ "relay-registration-reconnect-drain" ], "proof_commands": [ { "id": "relay-registration-reconnect-drain-proof", "run": [ "python3", "scripts/release_control/internal/relay_registration_reconnect_drain_proof.py" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/relay-registration-reconnect-drain-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Dashboard/__tests__/RelayOnboardingCard.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/RelaySettingsPanel.runtime.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/relay/client_managed_runtime_test.go", "kind": "file" }, { "repo": "pulse", "path": "scripts/release_control/internal/relay_registration_reconnect_drain_proof.py", "kind": "file" }, { "repo": "pulse-mobile", "path": "src/relay/__tests__/client-hardening.test.ts", "kind": "file" } ] }, { "id": "RA19", "summary": "Comparable Pulse settings surfaces use the canonical settings page-shell contract: shared SettingsPanel framing, consistent header structure, and no ad hoc top-level layout chrome unless explicitly approved.", "kind": "invariant", "blocking_level": "release-ready", "proof_type": "hybrid", "lane_ids": [ "L8" ], "subsystem_ids": [ "frontend-primitives" ], "release_gate_ids": [ "settings-surface-layout-consistency" ], "proof_commands": [ { "id": "settings-architecture-guardrails", "cwd": "frontend-modern", "run": [ "npx", "vitest", "run", "src/components/Settings/__tests__/settingsArchitecture.test.ts" ] } ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/settings-surface-layout-consistency-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/SOURCE_OF_TRUTH.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/status.json", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/frontend-primitives.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts", "kind": "file" }, { "repo": "pulse", "path": "tests/integration/tests/15-settings-shell-consistency.spec.ts", "kind": "file" } ] } ], "evidence_reference_policy": { "format": "repo-qualified-relative-paths", "allowed_kinds": [ "file", "dir" ], "absolute_paths_forbidden": true, "local_repo": "pulse" }, "priority_engine": { "formula": "behind_score = (max(0,target-current)*4) + criticality + staleness + dependency + blocker_bonus", "floor_rule": { "release_critical_lanes": [ "L1", "L2", "L3", "L7", "L8", "L9", "L10", "L11", "L12" ], "minimum_score": 6 }, "weights": { "gap_multiplier": 4, "criticality_range": "0-5", "staleness_range": "0-3", "dependency_range": "0-3", "blocker_bonus": 8 } }, "lanes": [ { "id": "L1", "name": "Self-hosted release confidence", "target_score": 9, "current_score": 9, "status": "partial", "completion": { "state": "bounded-residual", "summary": "Self-hosted RC confidence is at the current floor; GA promotion still depends on the shared RC-to-GA gate plus the lane-local self-hosted promotion package follow-up.", "tracking": [ { "kind": "lane-followup", "id": "self-hosted-ga-promotion-package" }, { "kind": "release-gate", "id": "rc-to-ga-promotion-readiness" } ] }, "blockers": [], "subsystems": [ "deployment-installability" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/deployment-installability.md", "kind": "file" } ] }, { "id": "L2", "name": "Conversion/commercial readiness", "target_score": 9, "current_score": 9, "status": "target-met", "completion": { "state": "complete", "summary": "Commercial conversion surfaces are at the current tracked RC floor, including real cancellation/reactivation continuity through the governed external Stripe rehearsal.", "tracking": [] }, "blockers": [], "subsystems": [], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/COMMERCIAL_CANCELLATION_REACTIVATION_E2E_TEST_PLAN.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-msp-price-audit-2026-03-13.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/cloud-paid.md", "kind": "file" }, { "repo": "pulse-pro", "path": "V6_LAUNCH_CHECKLIST.md", "kind": "file" } ] }, { "id": "L3", "name": "Cloud paid readiness", "target_score": 8, "current_score": 8, "status": "target-met", "completion": { "state": "complete", "summary": "Cloud-paid runtime and billing surfaces are at the current tracked RC floor, including real cancellation/reactivation continuity across checkout, portal, entitlement boundaries, and the shared commercial billing shell/model now used by both self-hosted Pulse Pro and hosted organization billing.", "tracking": [] }, "blockers": [], "subsystems": [ "cloud-paid" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/cloud-paid.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/BillingAdminPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/BillingAdminPanel.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/CommercialBillingSections.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/commercialBillingModel.ts", "kind": "file" } ] }, { "id": "L4", "name": "Hosted MSP readiness", "target_score": 6, "current_score": 6, "status": "target-met", "completion": { "state": "complete", "summary": "Hosted MSP support is at the current tracked RC floor, including real tenant-management behavior and the shared hosted commercial replay proof.", "tracking": [] }, "blockers": [], "subsystems": [], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-2026-03-13.md", "kind": "file" } ] }, { "id": "L5", "name": "Mobile go-live readiness", "target_score": 8, "current_score": 8, "status": "partial", "completion": { "state": "bounded-residual", "summary": "Mobile is at the RC usefulness floor; broader go-live hardening beyond pairing, auth, reconnect, and approvals remains post-RC follow-up.", "tracking": [ { "kind": "lane-followup", "id": "mobile-post-rc-hardening" } ] }, "blockers": [], "subsystems": [], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/PRE_RELEASE_CHECKLIST.md", "kind": "file" }, { "repo": "pulse-mobile", "path": "store/listing.md", "kind": "file" }, { "repo": "pulse-pro", "path": "V6_LAUNCH_CHECKLIST.md", "kind": "file" } ] }, { "id": "L6", "name": "Architecture coherence", "target_score": 8, "current_score": 8, "status": "partial", "completion": { "state": "bounded-residual", "summary": "Architecture coherence now carries the canonical Connected infrastructure projection and frontend state contract by construction; the remaining residual is limited to later cross-surface cleanup outside those normalized contracts.", "tracking": [ { "kind": "lane-followup", "id": "architecture-post-rc-canonicalization" } ] }, "blockers": [], "subsystems": [ "ai-runtime", "alerts", "api-contracts", "notifications", "patrol-intelligence" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/ai-runtime.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/notifications.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/api/responseUtils.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/api/streaming.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/features/alerts/OverviewTab.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/alertIncidentPresentation.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/alertOverviewPresentation.ts", "kind": "file" }, { "repo": "pulse", "path": "internal/api/resources.go", "kind": "file" }, { "repo": "pulse-enterprise", "path": "docs/V6_REPO_REALIGNMENT.md", "kind": "file" } ] }, { "id": "L7", "name": "Relay infrastructure readiness", "target_score": 9, "current_score": 9, "status": "partial", "completion": { "state": "bounded-residual", "summary": "Relay infrastructure is at the RC floor; the remaining residual is limited to the backend-owned mobile relay capability boundary.", "tracking": [ { "kind": "lane-followup", "id": "relay-mobile-capability-boundary" } ] }, "blockers": [], "subsystems": [ "relay-runtime" ], "evidence": [ { "repo": "pulse", "path": "docs/RELAY.md", "kind": "file" }, { "repo": "pulse", "path": "internal/relay", "kind": "dir" }, { "repo": "pulse-mobile", "path": "src/relay", "kind": "dir" }, { "repo": "pulse-pro", "path": "relay-server", "kind": "dir" } ] }, { "id": "L8", "name": "First-session & UX polish", "target_score": 8, "current_score": 8, "status": "partial", "completion": { "state": "bounded-residual", "summary": "First-session UX reached the RC floor with the runtime wizard reduced to welcome and security, direct handoff into Infrastructure Operations install, and setup completion retained only as a separate preview surface; broader polish and parity work remain intentionally outside the current stabilization target.", "tracking": [ { "kind": "lane-followup", "id": "first-session-post-rc-polish" } ] }, "blockers": [], "subsystems": [ "frontend-primitives" ], "evidence": [ { "repo": "pulse", "path": "frontend-modern/src/components/Settings/Settings.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/SetupWizard/SetupWizard.tsx", "kind": "file" }, { "repo": "pulse", "path": "tests/integration/tests/11-first-session.spec.ts", "kind": "file" } ] }, { "id": "L9", "name": "Documentation readiness", "target_score": 8, "current_score": 8, "status": "partial", "completion": { "state": "bounded-residual", "summary": "Documentation is current enough for the RC floor, but GA-facing promotion and release communication stay as a lane-local follow-up alongside the shared RC-to-GA gate.", "tracking": [ { "kind": "lane-followup", "id": "documentation-ga-promotion-package" }, { "kind": "release-gate", "id": "rc-to-ga-promotion-readiness" } ] }, "blockers": [], "subsystems": [], "evidence": [ { "repo": "pulse", "path": "docs", "kind": "dir" }, { "repo": "pulse", "path": "docs/releases/RELEASE_NOTES_v6.md", "kind": "file" }, { "repo": "pulse", "path": "README.md", "kind": "file" }, { "repo": "pulse-pro", "path": "landing-page", "kind": "dir" } ] }, { "id": "L10", "name": "Performance & scalability", "target_score": 8, "current_score": 8, "status": "partial", "completion": { "state": "bounded-residual", "summary": "Performance is at the current release floor, but additional scalability headroom and non-blocking performance polish remain post-RC follow-up.", "tracking": [ { "kind": "lane-followup", "id": "performance-post-rc-headroom" } ] }, "blockers": [], "subsystems": [ "performance-and-scalability" ], "evidence": [ { "repo": "pulse", "path": "frontend-modern/src/components/Dashboard/__tests__/Dashboard.performance.contract.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Dashboard/Dashboard.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Dashboard/workloadSelectors.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Infrastructure/__tests__/UnifiedResourceTable.performance.contract.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Infrastructure/infrastructureSelectors.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Infrastructure/resourceDetailMappers.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Infrastructure/UnifiedResourceTable.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/api/http_metrics.go", "kind": "file" }, { "repo": "pulse", "path": "pkg/metrics/store.go", "kind": "file" }, { "repo": "pulse", "path": "tests/integration/tests/02-navigation-perf.spec.ts", "kind": "file" } ] }, { "id": "L11", "name": "v5-to-v6 migration safety", "target_score": 8, "current_score": 8, "status": "partial", "completion": { "state": "bounded-residual", "summary": "Migration safety is at the RC floor, while GA promotion proof remains the only governed residual work.", "tracking": [ { "kind": "release-gate", "id": "rc-to-ga-promotion-readiness" } ] }, "blockers": [], "subsystems": [], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/LEGACY_HOST_CLASSIFICATION_2026-03-05.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/V5_TO_V6_COMMERCIAL_MIGRATION_AUDIT_2026-03-07.md", "kind": "file" }, { "repo": "pulse", "path": "docs/UPGRADE_v6.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/scripts/sync-embed-dist.mjs", "kind": "file" }, { "repo": "pulse", "path": "internal/api/frontend_embed_sync_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/integration/tests/12-v5-commercial-migration.spec.ts", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_commercial_migration_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_full_upgrade_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_session_db_test.go", "kind": "file" }, { "repo": "pulse", "path": "tests/migration/v5_to_v6_test.go", "kind": "file" } ] }, { "id": "L12", "name": "E2E journey coverage", "target_score": 8, "current_score": 8, "status": "partial", "completion": { "state": "bounded-residual", "summary": "The end-to-end journey suite covers the RC floor, while RC-to-GA promotion remains the only shared residual proof track.", "tracking": [ { "kind": "release-gate", "id": "rc-to-ga-promotion-readiness" } ] }, "blockers": [], "subsystems": [], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/COMMERCIAL_CANCELLATION_REACTIVATION_E2E_TEST_PLAN.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/commercial-cancellation-reactivation-2026-03-12.md", "kind": "file" }, { "repo": "pulse", "path": "tests/integration/tests/journeys", "kind": "dir" } ] }, { "id": "L13", "name": "Core monitoring runtime", "target_score": 8, "current_score": 8, "status": "target-met", "completion": { "state": "complete", "summary": "Core monitoring runtime is at the current tracked floor: discovery, metrics-history, and platform-runtime proof routing now land on explicit governed routes, while broader ReadState convergence remains owned by architecture coherence.", "tracking": [] }, "blockers": [], "subsystems": [ "monitoring", "unified-resources" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/monitoring.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/registry.json", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/unified-resources.md", "kind": "file" }, { "repo": "pulse", "path": "docs/TRUENAS.md", "kind": "file" }, { "repo": "pulse", "path": "docs/UNIFIED_RESOURCES.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Infrastructure/UnifiedResourceTable.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/api/resources.go", "kind": "file" }, { "repo": "pulse", "path": "internal/monitoring/canonical_guardrails_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/monitoring/metrics_history.go", "kind": "file" }, { "repo": "pulse", "path": "internal/monitoring/poll_providers.go", "kind": "file" }, { "repo": "pulse", "path": "internal/unifiedresources/code_standards_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/unifiedresources/metrics_targets.go", "kind": "file" }, { "repo": "pulse", "path": "internal/unifiedresources/registry.go", "kind": "file" }, { "repo": "pulse", "path": "scripts/release_control/subsystem_lookup_test.py", "kind": "file" } ] }, { "id": "L14", "name": "Security, identity, and privacy", "target_score": 8, "current_score": 8, "status": "target-met", "completion": { "state": "complete", "summary": "Security, identity, and privacy is at the current governed floor: privacy disclosures, telemetry controls, RBAC boundaries, and shared token/auth settings surfaces now route through explicit subsystem ownership with exercised proof across the remaining shared token and auth boundaries.", "tracking": [] }, "blockers": [], "subsystems": [ "organization-settings", "security-privacy" ], "evidence": [ { "repo": "pulse", "path": "docs/PRIVACY.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/organization-settings.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/security-privacy.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/api/__tests__/security.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/OrganizationSharingPanel.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/RBACPaywallPanels.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/SecurityPostureSummary.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/organizationRolePresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/utils/__tests__/organizationSettingsPresentation.test.ts", "kind": "file" }, { "repo": "pulse", "path": "internal/api/api_token_org_scope_integration_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/org_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/rbac_handlers_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/security_status_additional_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/security_tokens_owner_binding_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/system_settings_telemetry_test.go", "kind": "file" }, { "repo": "pulse", "path": "internal/telemetry/telemetry.go", "kind": "file" }, { "repo": "pulse", "path": "SECURITY.md", "kind": "file" } ] }, { "id": "L15", "name": "Storage and recovery", "target_score": 8, "current_score": 8, "status": "partial", "completion": { "state": "bounded-residual", "summary": "Storage and recovery have reached the governed RC floor. Filter coherence is proven across all four transport surfaces (rollups, points, series, facets), storage URL state now normalizes canonical source/status/node/resource selections, and recovery route-backed query, provider, outcome, and stale-only filters round-trip through shared links while facets still narrow with the selected timeline day. Broader storage health UX polish and additional recovery timeline hardening remain post-RC follow-up.", "tracking": [ { "kind": "lane-followup", "id": "storage-recovery-post-rc-hardening" } ] }, "blockers": [], "subsystems": [ "storage-recovery" ], "evidence": [ { "repo": "pulse", "path": "docs/RECOVERY.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/storage-recovery.md", "kind": "file" }, { "repo": "pulse", "path": "docs/STORAGE_ARCHITECTURE.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Recovery/__tests__/Recovery.test.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Recovery/Recovery.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Storage/__tests__/storagePageState.test.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Storage/Storage.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/recovery/recovery_test.go", "kind": "file" } ] }, { "id": "L16", "name": "Agent lifecycle and fleet operations", "target_score": 8, "current_score": 8, "status": "target-met", "completion": { "state": "complete", "summary": "Agent lifecycle and fleet operations are at the current governed RC floor: canonical auto-register now converges on one v6 contract, install-command consumers fail closed through shared validated boundaries, profile-management surfaces preserve the canonical malformed-payload and missing-profile resync contract across settings and deploy surfaces, and the runtime-side Unified Agent reporting path now uses the canonical product terminology.", "tracking": [] }, "blockers": [], "subsystems": [ "agent-lifecycle" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/unified-agent-v5-upgrade-continuity-2026-03-12.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/agent-lifecycle.md", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/api/agentProfiles.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/api/nodes.ts", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Infrastructure/deploy/ResultsStep.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/AgentProfilesPanel.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/InfrastructureOperationsController.tsx", "kind": "file" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/NodeModal.tsx", "kind": "file" }, { "repo": "pulse", "path": "internal/agentupdate/update.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/config_setup_handlers.go", "kind": "file" }, { "repo": "pulse", "path": "internal/api/unified_agent.go", "kind": "file" }, { "repo": "pulse", "path": "internal/hostagent/agent.go", "kind": "file" }, { "repo": "pulse", "path": "scripts/install.sh", "kind": "file" } ] } ], "release_gates": [ { "id": "api-token-scope-and-assignment", "summary": "Confirm API tokens are assigned to the correct user and org context, enforce scope boundaries including legacy persisted host-agent scope aliases, and revoke cleanly.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "managed-runtime-exercise", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L1", "L6", "L11", "L14", "L16" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/api-token-scope-and-assignment-2026-03-12.md", "kind": "file", "evidence_tier": "managed-runtime-exercise" } ] }, { "id": "cloud-hosted-tier-runtime-readiness", "summary": "Confirm the actual hosted Pulse tier works end to end after provisioning: hosted auth, runtime entry, and hosted billing/admin surfaces all function coherently.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "real-external-e2e", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L3", "L4", "L12" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-2026-03-13.md", "kind": "file", "evidence_tier": "local-rehearsal" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-blocked-2026-03-25.md", "kind": "file", "evidence_tier": "real-external-e2e" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-production-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-production-fixed-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-production-followup-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/cloud-hosted-tier-runtime-readiness-production-recovered-2026-03-26.md", "kind": "file", "evidence_tier": "real-external-e2e" } ] }, { "id": "commercial-cancellation-reactivation", "summary": "Confirm grandfathered v5 recurring continuity holds while active, completed cancellation revokes paid state, and re-entry after cancellation uses current public v6 pricing.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "real-external-e2e", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L2", "L3", "L11", "L12" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/commercial-cancellation-reactivation-2026-03-12.md", "kind": "file", "evidence_tier": "managed-runtime-exercise" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/commercial-cancellation-reactivation-external-e2e-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" } ] }, { "id": "documentation-currentness-and-legacy-cleanup", "summary": "Confirm active v6-facing guidance is current, and any legacy or historical docs are clearly archived or demoted instead of remaining current guidance.", "owner": "project-owner", "blocking_level": "release-ready", "minimum_evidence_tier": "local-rehearsal", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L9" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/documentation-currentness-and-legacy-cleanup-2026-03-13.md", "kind": "file", "evidence_tier": "local-rehearsal" } ] }, { "id": "hosted-signup-billing-replay", "summary": "Confirm hosted signup, org provisioning, billing-admin visibility, and webhook replay succeed in the real checkout path.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "real-external-e2e", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L2", "L3", "L4", "L12" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/hosted-signup-billing-replay-2026-03-12.md", "kind": "file", "evidence_tier": "local-rehearsal" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/hosted-signup-billing-replay-production-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/hosted-signup-billing-replay-production-fixed-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" } ] }, { "id": "mobile-relay-auth-approvals", "summary": "Confirm pulse-mobile pairing, persistence, relay reconnect, auth transitions, and approval flows work against a real instance.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "real-external-e2e", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L5", "L7", "L12" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/mobile-relay-auth-approvals-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" } ] }, { "id": "msp-provider-tenant-management", "summary": "Confirm MSP mode behaves as a real provider workflow: one account can manage multiple client tenants coherently without cross-client leakage or MSP/public-plan confusion.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "real-external-e2e", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L3", "L4", "L12" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-2026-03-13.md", "kind": "file", "evidence_tier": "local-rehearsal" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-production-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-production-fixed-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/msp-provider-tenant-management-production-followup-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" } ] }, { "id": "multi-tenant-runtime-isolation-and-coherence", "summary": "Confirm multi-tenant Pulse behaves as a coherent tenant-isolated product across org scope, runtime state, sharing, and migration.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "managed-runtime-exercise", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L4", "L6", "L12" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/multi-tenant-runtime-isolation-and-coherence-2026-03-13.md", "kind": "file", "evidence_tier": "managed-runtime-exercise" } ] }, { "id": "organization-user-scope-and-rbac", "summary": "Confirm user creation, organization membership, RBAC scope, and cross-org sharing fail closed outside intended access.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "managed-runtime-exercise", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L4", "L9", "L12", "L14" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/organization-user-scope-and-rbac-2026-03-12.md", "kind": "file", "evidence_tier": "managed-runtime-exercise" } ] }, { "id": "paid-feature-entitlement-gating", "summary": "Confirm free-versus-paid feature gating and agent allocation accounting match entitlements across UI, API, hosted, and upgrade surfaces.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "managed-runtime-exercise", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L2", "L3", "L6", "L9", "L12", "L16" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/paid-feature-entitlement-gating-2026-03-12.md", "kind": "file", "evidence_tier": "managed-runtime-exercise" } ] }, { "id": "rc-to-ga-promotion-readiness", "summary": "Confirm stable or GA promotion is coming from an exercised RC with live release-pipeline proof, rollback instructions, and a written v5 maintenance-only policy.", "owner": "project-owner", "blocking_level": "release-ready", "minimum_evidence_tier": "real-external-e2e", "status": "blocked", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L1", "L9", "L11", "L12" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/rc-to-ga-promotion-readiness-blocked-2026-03-13.md", "kind": "file", "evidence_tier": "local-rehearsal" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/rc-to-ga-promotion-readiness-blocked-2026-03-26.md", "kind": "file", "evidence_tier": "local-rehearsal" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/records/rc-to-ga-promotion-readiness-rehearsal-blocked-2026-03-26.md", "kind": "file", "evidence_tier": "real-external-e2e" } ] }, { "id": "relay-registration-reconnect-drain", "summary": "Confirm relay fresh registration, reconnect, stale-session recovery, and disconnect drain behavior hold under real pressure.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "managed-runtime-exercise", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L5", "L7", "L12" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/relay-registration-reconnect-drain-2026-03-13.md", "kind": "file", "evidence_tier": "managed-runtime-exercise" } ] }, { "id": "settings-surface-layout-consistency", "summary": "Confirm comparable settings surfaces present the canonical page shell, with consistent header framing and no ad hoc top-level layout chrome.", "owner": "project-owner", "blocking_level": "release-ready", "minimum_evidence_tier": "local-rehearsal", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L8" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/settings-surface-layout-consistency-2026-03-13.md", "kind": "file", "evidence_tier": "local-rehearsal" }, { "repo": "pulse", "path": "frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts", "kind": "file", "evidence_tier": "test-proof" } ] }, { "id": "unified-agent-v5-upgrade-continuity", "summary": "Confirm a real v5-installed Pulse Unified Agent upgrades through candidate v6 RC assets into one canonical v6 agent identity without duplicate registration, stale fallback or legacy-scope breakage, or agent-count drift.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "real-external-e2e", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L11", "L12", "L16" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/unified-agent-v5-upgrade-continuity-2026-03-12.md", "kind": "file", "evidence_tier": "real-external-e2e" } ] }, { "id": "upgrade-state-and-entitlement-preservation", "summary": "Confirm supported upgrades preserve state, entitlements, and first-session continuity without repair flows.", "owner": "project-owner", "blocking_level": "rc-ready", "minimum_evidence_tier": "real-external-e2e", "status": "passed", "verification_doc": "docs/release-control/v6/internal/HIGH_RISK_RELEASE_VERIFICATION_MATRIX.md", "lane_ids": [ "L3", "L5", "L8" ], "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/records/upgrade-state-and-entitlement-preservation-2026-03-13.md", "kind": "file", "evidence_tier": "real-external-e2e" } ] } ], "lane_followups": [ { "id": "architecture-post-rc-canonicalization", "summary": "Track the remaining post-RC architecture cleanup that still belongs to L6 after canonicalizing Connected infrastructure and the frontend state contract by construction.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-13", "lane_ids": [ "L6" ], "subsystem_ids": [ "ai-runtime", "alerts", "notifications", "patrol-intelligence" ] }, { "id": "documentation-ga-promotion-package", "summary": "Track the GA-facing documentation and release communication package that should only be finalized when promotion is actually being executed.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-13", "lane_ids": [ "L9" ], "subsystem_ids": [] }, { "id": "first-session-post-rc-polish", "summary": "Track broader first-session polish and parity work that is intentionally outside the RC stabilization floor.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-13", "lane_ids": [ "L8" ], "subsystem_ids": [ "frontend-primitives" ] }, { "id": "mobile-post-rc-hardening", "summary": "Track broader mobile go-live hardening beyond the RC usefulness floor, including work above pairing, auth, reconnect, and approvals recovery.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-13", "lane_ids": [ "L5" ], "subsystem_ids": [] }, { "id": "performance-post-rc-headroom", "summary": "Track additional scalability headroom and non-blocking performance polish beyond the current release floor.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-13", "lane_ids": [ "L10" ], "subsystem_ids": [ "performance-and-scalability" ] }, { "id": "self-hosted-ga-promotion-package", "summary": "Track the lane-local self-hosted GA promotion package: stable candidate inputs, rollback clarity, and dry-run capture once GA promotion is actually being executed.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-13", "lane_ids": [ "L1" ], "subsystem_ids": [] }, { "id": "storage-recovery-post-rc-hardening", "summary": "Track broader storage health UX polish and recovery timeline hardening beyond the current RC floor, including additional filter coherence edge cases and storage panel presentation improvements.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-14", "lane_ids": [ "L15" ], "repo_ids": [ "pulse" ], "subsystem_ids": [ "storage-recovery" ], "cross_repo": false }, { "id": "relay-mobile-capability-boundary", "summary": "Narrow the dedicated backend-owned mobile relay capability to the minimum supported runtime route set and require any future route expansion to land as explicit governed relay surface work rather than incidental backend reach-through.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-28", "lane_ids": [ "L7" ], "subsystem_ids": [ "relay-runtime" ] } ], "coverage_gaps": [ { "id": "action-governance-and-audit", "summary": "v6 has approvals and AI surfaces, but it lacks a governed action model covering declared capabilities, planning and dry-run boundaries, approval requirements, audit trail ownership, and safe execution contracts.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-17", "lane_ids": [ "L6", "L14" ], "subsystem_ids": [ "ai-runtime", "api-contracts", "patrol-intelligence", "security-privacy" ], "proposed_resolution": "new-lane", "coverage_impact": 14, "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/ai-runtime.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/V6_BRIDGE_RELEASE_FOUNDATION_SPEC.md", "kind": "file" } ] }, { "id": "fleet-governance-v1", "summary": "L16 covers install and registration continuity, but the governed map still underrepresents fleet governance primitives such as enrollment state, version drift, adapter health, config rollout, credential status, and remote control-plane safety.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-17", "lane_ids": [ "L16" ], "subsystem_ids": [ "agent-lifecycle" ], "proposed_resolution": "lane-expansion", "coverage_impact": 10, "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/agent-lifecycle.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/V6_BRIDGE_RELEASE_FOUNDATION_SPEC.md", "kind": "file" } ] }, { "id": "policy-aware-data-governance", "summary": "The current v6 map treats privacy and AI runtime as adjacent concerns, but it does not yet govern sensitivity classification, redaction, local-vs-cloud routing, or AI-safe summary boundaries as a first-class release surface.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-17", "lane_ids": [ "L6", "L14" ], "subsystem_ids": [ "ai-runtime", "api-contracts", "security-privacy" ], "proposed_resolution": "new-lane", "coverage_impact": 15, "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/security-privacy.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/V6_BRIDGE_RELEASE_FOUNDATION_SPEC.md", "kind": "file" } ] }, { "id": "resource-change-and-timeline", "summary": "The current v6 lane map proves unified resources and monitoring floors, but the resource-change and cross-resource timeline work is now kept as hidden backend foundation for investigation and AI flows until the surfaced case is proven.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-17", "lane_ids": [ "L6", "L13" ], "subsystem_ids": [ "alerts", "api-contracts", "monitoring", "unified-resources" ], "proposed_resolution": "lane-split", "coverage_impact": 15, "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/unified-resources.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/V6_BRIDGE_RELEASE_FOUNDATION_SPEC.md", "kind": "file" } ] }, { "id": "customer-account-portal-surface", "summary": "v6 has real billing, checkout, hosted tenant, MSP account, and self-serve utility surfaces, but it still lacks one coherent authenticated Pulse account portal that unifies licenses, hosted tenants, billing, recovery, and MSP admin actions under a canonical customer control surface.", "owner": "project-owner", "status": "planned", "recorded_at": "2026-03-25", "lane_ids": [ "L3", "L4" ], "subsystem_ids": [ "cloud-paid" ], "proposed_resolution": "new-lane", "coverage_impact": 14, "evidence": [ { "repo": "pulse", "path": "docs/release-control/v6/internal/PULSE_ACCOUNT_PORTAL_SPEC.md", "kind": "file" }, { "repo": "pulse", "path": "docs/release-control/v6/internal/subsystems/cloud-paid.md", "kind": "file" }, { "repo": "pulse", "path": "internal/cloudcp/account/tenant_handlers.go", "kind": "file" }, { "repo": "pulse", "path": "internal/cloudcp/portal/page.go", "kind": "file" }, { "repo": "pulse-pro", "path": "landing-page/manage.html", "kind": "file" }, { "repo": "pulse-pro", "path": "landing-page/retrieve-license.html", "kind": "file" } ] } ], "candidate_lanes": [ { "id": "action-governance-auditability", "name": "Action governance and auditability", "summary": "Promote action capability declaration, plan and dry-run state, approval requirements, safe execution boundaries, and audit ownership into a dedicated governed lane.", "status": "planned", "recorded_at": "2026-03-17", "target_id": "v6-product-lane-expansion", "current_lane_ids": [ "L6", "L14" ], "coverage_gap_ids": [ "action-governance-and-audit" ], "subsystem_ids": [ "ai-runtime", "api-contracts", "patrol-intelligence", "security-privacy" ] }, { "id": "fleet-governance-rollout-control", "name": "Fleet governance and rollout control", "summary": "Expand the current fleet lane from install and lifecycle continuity into governed enrollment, drift, adapter-health, config-rollout, and credential-status control surfaces.", "status": "planned", "recorded_at": "2026-03-17", "target_id": "v6-product-lane-expansion", "current_lane_ids": [ "L16" ], "coverage_gap_ids": [ "fleet-governance-v1" ], "subsystem_ids": [ "agent-lifecycle" ] }, { "id": "policy-aware-data-governance-lane", "name": "Policy-aware data governance", "summary": "Promote sensitivity classification, redaction, local-vs-cloud routing, and AI-safe summary boundaries into a governed product lane rather than leaving them split across privacy and AI runtime residue.", "status": "planned", "recorded_at": "2026-03-17", "target_id": "v6-product-lane-expansion", "current_lane_ids": [ "L6", "L14" ], "coverage_gap_ids": [ "policy-aware-data-governance" ], "subsystem_ids": [ "ai-runtime", "api-contracts", "security-privacy" ] }, { "id": "resource-change-intelligence", "name": "Resource change intelligence", "summary": "Promote canonical resource relationships, first-class change envelopes, and cross-resource timelines into an explicit lane once the monitoring-first surface proves the case; keep the backend foundations hidden until then.", "status": "planned", "recorded_at": "2026-03-17", "target_id": "v6-product-lane-expansion", "current_lane_ids": [ "L6", "L13" ], "coverage_gap_ids": [ "resource-change-and-timeline" ], "subsystem_ids": [ "alerts", "api-contracts", "monitoring", "unified-resources" ] }, { "id": "customer-account-portal", "name": "Customer account portal", "summary": "Promote fragmented cloud billing, hosted tenant, self-serve licensing, recovery, and MSP admin surfaces into one governed Pulse account lane with a coherent customer and operator control surface.", "status": "planned", "recorded_at": "2026-03-25", "target_id": "v6-product-lane-expansion", "current_lane_ids": [ "L3", "L4" ], "coverage_gap_ids": [ "customer-account-portal-surface" ], "subsystem_ids": [ "cloud-paid" ] } ], "work_claims": [], "open_decisions": [], "source_of_truth_file": "docs/release-control/v6/internal/SOURCE_OF_TRUTH.md", "resolved_decisions": [ { "id": "ga-floor-policy", "summary": "Staged release policy locked; L4 Hosted MSP full portal is post-GA and not a GA floor gate.", "kind": "release-policy", "decided_at": "2026-02-27", "subsystem_ids": [], "lane_ids": [ "L4" ] }, { "id": "msp-pricing-band-lock", "summary": "MSP pricing locked at Starter/Growth/Scale = $149/$249/$399 monthly with 10/25/50 workspace breakpoints.", "kind": "pricing", "decided_at": "2026-02-27", "subsystem_ids": [], "lane_ids": [ "L2", "L4" ] }, { "id": "stripe-mapping-contract-lock", "summary": "Cloud/MSP Stripe mapping contract is locked; concrete price IDs remain operational fill-in tasks.", "kind": "contract", "decided_at": "2026-02-27", "subsystem_ids": [ "cloud-paid" ], "lane_ids": [ "L2", "L3", "L4" ] }, { "id": "host-type-migration-boundary-audit", "summary": "Host-type migration audit completed; remaining host references are compatibility boundaries, internal shims, or non-resource terminology.", "kind": "architecture", "decided_at": "2026-03-05", "subsystem_ids": [ "agent-lifecycle", "alerts", "api-contracts", "monitoring", "unified-resources" ], "lane_ids": [ "L6", "L11", "L13", "L16" ] }, { "id": "trial-authority-saas-controlled", "summary": "Trial authority for v6 is SaaS-controlled; hosted signup initiates trial start and local runtime may only redeem signed trial activations.", "kind": "contract", "decided_at": "2026-03-06", "subsystem_ids": [ "cloud-paid" ], "lane_ids": [ "L2", "L3", "L11" ] }, { "id": "v5-license-bridge-landed", "summary": "The v5-to-v6 license migration bridge landed, including upgrade exchange, activation input acceptance, and aligned public migration guidance.", "kind": "migration", "decided_at": "2026-03-06", "subsystem_ids": [], "lane_ids": [ "L11" ] }, { "id": "browser-proof-commercial-migration", "summary": "Browser-level proof exists for unresolved v5 commercial migration states via the upgraded-fixture commercial migration spec.", "kind": "migration", "decided_at": "2026-03-07", "subsystem_ids": [], "lane_ids": [ "L11" ] }, { "id": "commercial-migration-truth-table-owned", "summary": "The v5 commercial migration truth table is owned by v6 release-control and unresolved paid-license states must remain preserved through migration.", "kind": "migration", "decided_at": "2026-03-07", "subsystem_ids": [], "lane_ids": [ "L11" ] }, { "id": "embedded-frontend-drift-protection", "summary": "Embedded frontend drift protection landed through synced dist assets, embed parity tests, and native embedded migration UI proof.", "kind": "governance", "decided_at": "2026-03-07", "subsystem_ids": [], "lane_ids": [ "L11" ] }, { "id": "orchestrator-retired", "summary": "The v6 release-control orchestrator was retired; direct repo-aware sessions and governance guardrails are the only supported execution path.", "kind": "governance", "decided_at": "2026-03-11", "subsystem_ids": [], "lane_ids": [ "L6", "L9" ] }, { "id": "top-level-governance-split", "summary": "SOURCE_OF_TRUTH.md now owns only stable governance and locked decisions; live lane state and evidence references live only in status.json.", "kind": "governance", "decided_at": "2026-03-11", "subsystem_ids": [], "lane_ids": [ "L6", "L9" ] }, { "id": "stable-release-promotion-model", "summary": "v6 and later releases use an opt-in RC preview channel plus a promotion-only stable channel; stable customers must receive only already-validated builds, unattended auto-update exposure remains stable-only, and GA stays blocked until rollback instructions and the v5 maintenance-only policy are explicit.", "kind": "release-policy", "decided_at": "2026-03-12", "subsystem_ids": [], "lane_ids": [ "L1", "L3", "L11", "L12" ] }, { "id": "v5-maintenance-support-policy", "summary": "Once v6 reaches stable or GA, v5 moves to a 90-day maintenance-only window for critical security issues, critical correctness/data-loss issues, and safe migration blockers only; after that window, v5 is unsupported.", "kind": "release-policy", "decided_at": "2026-03-12", "subsystem_ids": [], "lane_ids": [ "L9" ] }, { "id": "v5-pro-price-grandfathering", "summary": "Paid Pulse Pro v5 customers keep their existing recurring price through the v6 pricing change until they cancel; renewals must preserve that grandfathered price state, while any return after cancellation re-enters on current v6 pricing.", "kind": "pricing", "decided_at": "2026-03-12", "subsystem_ids": [ "cloud-paid" ], "lane_ids": [ "L2", "L3", "L11" ] }, { "id": "cloud-msp-price-id-propagation", "summary": "The 13 canonical Cloud/MSP v6 price IDs are populated in the governed pulse-pro operations doc, launch checklist, and license-server env mapping template.", "kind": "contract", "decided_at": "2026-03-13", "subsystem_ids": [ "cloud-paid" ], "lane_ids": [ "L2", "L3", "L4" ] }, { "id": "cloud-msp-stripe-prices", "summary": "The 13 canonical Cloud/MSP v6 price IDs already exist as active live recurring Stripe prices and match the governed commercial mappings.", "kind": "pricing", "decided_at": "2026-03-13", "subsystem_ids": [ "cloud-paid" ], "lane_ids": [ "L2", "L3", "L4" ] }, { "id": "mobile-usefulness-floor", "summary": "Pulse Mobile is considered useful enough for the v6 RC line when it preserves at least one trusted paired instance across relaunches, surfaces relay/runtime state clearly in the main shell, fails closed into a recoverable disconnected state on stale or revoked access, and supports live approval visibility and action recovery; broader parity remains post-RC scope.", "kind": "release-policy", "decided_at": "2026-03-13", "subsystem_ids": [ "frontend-primitives", "relay-runtime" ], "lane_ids": [ "L5", "L7", "L8", "L12" ] }, { "id": "accidental-prerelease-tags-do-not-count-as-shipped-rcs", "summary": "Accidental prerelease git tags do not count as shipped prerelease lineage. `v6.0.0-rc.1` was pushed accidentally, never published, and must not be treated as a valid stable-promotion `promoted_from_tag`.", "kind": "release-policy", "decided_at": "2026-03-14", "subsystem_ids": [], "lane_ids": [ "L1", "L9", "L11", "L12" ] }, { "id": "monitored-systems-counting-contract", "summary": "Commercial counting for Pulse v6 is based on monitored systems, not installed agents: each top-level monitored system counts once regardless of collection path, while child resources remain included and API-only monitoring must consume the same cap as agent-backed monitoring.", "kind": "contract", "decided_at": "2026-03-17", "subsystem_ids": [], "lane_ids": [ "L2" ] }, { "id": "pulse-not-agent-sandbox-boundary", "summary": "Pulse is not a universal agent sandbox; it is the infrastructure-specific context, policy, and action plane that sandboxed agents should use.", "kind": "architecture", "decided_at": "2026-03-17", "subsystem_ids": [ "ai-runtime", "api-contracts", "security-privacy", "unified-resources" ], "lane_ids": [ "L6", "L13", "L14" ] }, { "id": "self-hosted-pricing-band-lock-v2", "summary": "Pulse v6 self-hosted pricing is locked at Community free, Relay $4.99/$39, Pro $8.99/$79, and Pro+ $14.99/$129 with the 5/8/15/50 monitored-system ladder.", "kind": "pricing", "decided_at": "2026-03-17", "subsystem_ids": [], "lane_ids": [ "L2" ] }, { "id": "v6-bridge-release-foundation", "summary": "Pulse v6 is a bridge release toward a resource + policy + control platform: it must land irreversible primitives for canonical resources, policy-aware routing, governed actions, and fleet control without attempting the full private operational broker in one release.", "kind": "architecture", "decided_at": "2026-03-17", "subsystem_ids": [ "agent-lifecycle", "ai-runtime", "api-contracts", "security-privacy", "unified-resources" ], "lane_ids": [ "L6", "L13", "L14", "L16" ] }, { "id": "canonical-timeline-source-precedence", "summary": "Unified-resource change history is the canonical durable backend timeline; alert incident memory remains a derived investigation projection for alert-local notes, analysis, commands, runbooks, and lifecycle breadcrumbs.", "kind": "architecture", "decided_at": "2026-03-20", "subsystem_ids": [ "ai-runtime", "alerts", "api-contracts", "monitoring", "unified-resources" ], "lane_ids": [ "L6", "L13" ] } ] }