Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"$schema": "../../../contracts/plugin-evaluation-1.0.schema.json",
"schema_version": "1.0",
"plugin": {
"id": "contentcloud-video-production",
"version": "0.8.0",
"digest": "sha256:0bb239fa608f20638f9540cc41c4de9291662565de234e1ee758bb99903c5aeb"
},
"scope": "deterministic_release_contract",
"status": "passed",
"scenarios": [
{
"id": "codex-plugin-transaction",
"requirement": "Pinned Marketplace and Plugin plans remain read-only until confirmation, validate after install, roll back only owned changes, and open a new Codex chat through the documented fallback.",
"command": ["go", "test", "-v", "./internal/codexplugin", "-run", "^(TestPlanIsReadOnlyAndPinsMarketplaceAndPlugin|TestDetectClassifiesCurrentOutdatedAndBroken|TestApplyRequiresConfirmation|TestApplyInstallsAndValidates|TestApplyRollsBackOnlyMarketplaceAddedByThisRun|TestNewChatDeepLinkContainsWorkspaceAndPluginMention|TestLaunchNewChatFallsBackToWorkspaceCommand)$"],
"evidence": ["TestPlanIsReadOnlyAndPinsMarketplaceAndPlugin", "TestApplyRequiresConfirmation", "TestApplyInstallsAndValidates", "TestApplyRollsBackOnlyMarketplaceAddedByThisRun", "TestLaunchNewChatFallsBackToWorkspaceCommand"],
"status": "passed"
},
{
"id": "bootstrap-confirmation",
"requirement": "Bootstrap uses a deterministic plan_id, performs no mutation before exact confirmation, binds one browser authorization attempt to one session, runs doctor before registration, and preserves recoverability on failure.",
"command": ["go", "test", "-v", "./internal/cli", "./internal/app", "-run", "^(TestBootstrapPlanIsReadOnlyAndUsesOnlyPublicSessionID|TestBootstrapPlanIDIsStableUntilInputsChange|TestBootstrapApplyInstallsInitializesDoctorsAndRegisters|TestBootstrapApplyAuthorizationFailureDoesNotMutatePluginOrWorkspace|TestBootstrapApplyRejectsUnconfirmedPlanID|TestBootstrapApplyRequiresPlanIDBeforeMutation|TestBootstrapApplyRejectsPlanAfterCodexStateChanges|TestBootstrapAuthorizationRequiresApprovalAndMatchingVerifier|TestBootstrapAuthorizationAllowsOnlyOneActiveAttemptPerSession)$"],
"evidence": ["TestBootstrapPlanIsReadOnlyAndUsesOnlyPublicSessionID", "TestBootstrapApplyInstallsInitializesDoctorsAndRegisters", "TestBootstrapApplyRejectsUnconfirmedPlanID", "TestBootstrapApplyRejectsPlanAfterCodexStateChanges", "TestBootstrapAuthorizationRequiresApprovalAndMatchingVerifier", "TestBootstrapAuthorizationAllowsOnlyOneActiveAttemptPerSession"],
"status": "passed"
},
{
"id": "cross-conversation-handoff",
"requirement": "New conversations recover persisted state and atomically transfer one exact Run revision without reading prior transcripts.",
"command": ["go", "test", "-v", "./internal/localworkspace", "./internal/cli", "-run", "^(TestConversationContextReadsPersistedOfflineState|TestRunClaimIsSingleWriterAndExpiredTakeoverIsExplicit|TestHandoffAcceptIsAtomicAcrossConversations|TestHandoffRejectsChangedInputDigest|TestMCPRunsCrossConversationHandoffLifecycle)$"],
"evidence": ["TestConversationContextReadsPersistedOfflineState", "TestRunClaimIsSingleWriterAndExpiredTakeoverIsExplicit", "TestHandoffAcceptIsAtomicAcrossConversations", "TestHandoffRejectsChangedInputDigest", "TestMCPRunsCrossConversationHandoffLifecycle"],
"status": "passed"
},
{
"id": "governed-publish",
"requirement": "Publish binds exact files, disclosures, message, idempotency key, and environment to a confirmed plan_id and performs no cloud write for a missing, stale, or unconfirmed plan.",
"command": ["go", "test", "-v", "./internal/cli", "-run", "^(TestPublishPlanIDIsStableAndBindsExactInputs|TestPublishCLIRejectsMissingOrStalePlanBeforeCloudWrite|TestMCPPublishApplyRequiresExactConfirmationBeforeCloudWrite|TestPublishReadersRejectSymlinksOutsideWorkspace)$"],
"evidence": ["TestPublishPlanIDIsStableAndBindsExactInputs", "TestPublishCLIRejectsMissingOrStalePlanBeforeCloudWrite", "TestMCPPublishApplyRequiresExactConfirmationBeforeCloudWrite", "TestPublishReadersRejectSymlinksOutsideWorkspace"],
"status": "passed"
},
{
"id": "review-and-approved-resume",
"requirement": "Review feedback and ApprovedSnapshots are explicitly pulled, stored immutably, verified, and reused by later credential-free conversations without cloud reads.",
"command": ["go", "test", "-v", "./internal/localworkspace", "./internal/cli", "-run", "^(TestReviewFeedbackInboxKeepsImmutableRevisionsOfOneSubmissionRevision|TestReviewFeedbackInboxRejectsDigestMismatch|TestMCPFeedbackPullCreatesImmutableInboxForNewConversation|TestApprovedSnapshotCacheKeepsImmutableVersions|TestApprovedSnapshotCacheRejectsTamperingAndUnverifiedLegacyEntry|TestMCPApprovedSnapshotPullSupportsOfflineCrossConversationRead|TestWorkspaceApprovedCommandsReadCacheWithoutCredential)$"],
"evidence": ["TestReviewFeedbackInboxKeepsImmutableRevisionsOfOneSubmissionRevision", "TestMCPFeedbackPullCreatesImmutableInboxForNewConversation", "TestApprovedSnapshotCacheKeepsImmutableVersions", "TestApprovedSnapshotCacheRejectsTamperingAndUnverifiedLegacyEntry", "TestMCPApprovedSnapshotPullSupportsOfflineCrossConversationRead"],
"status": "passed"
},
{
"id": "knowledge-contract",
"requirement": "Knowledge candidates remain evidence-bound, reject invented or out-of-workspace inputs, and become eligible only through a verified ApprovedSnapshot.",
"command": ["go", "test", "-v", "./internal/localworkspace", "-run", "^(TestKnowledgeCandidateFlowToApprovedQueryAndPack|TestKnowledgeImportRejectsInventedEvidence|TestKnowledgeImportRejectsSymlinkOutsideWorkspace|TestKnowledgeImportRejectsInvalidCandidatePackageShapes)$"],
"evidence": ["TestKnowledgeCandidateFlowToApprovedQueryAndPack", "TestKnowledgeImportRejectsInventedEvidence", "TestKnowledgeImportRejectsSymlinkOutsideWorkspace", "TestKnowledgeImportRejectsInvalidCandidatePackageShapes"],
"status": "passed"
},
{
"id": "content-contract",
"requirement": "ContentItem and ContentBatch contracts enforce explicit arrays, blocked reasons, approved references, and declared revision drift before publish or export.",
"command": ["go", "test", "-v", "./internal/localworkspace", "./internal/cli", "-run", "^(TestContentItemRevisionDiffRejectsUndeclaredDrift|TestContentItemLintRequiresExplicitArraysAndBlockedReasons|TestPublishPreflightUsesContentBatchManifestAndAllowsBlockedItems|TestPublishPreflightRejectsBriefThatSkippedLocalLint)$"],
"evidence": ["TestContentItemRevisionDiffRejectsUndeclaredDrift", "TestContentItemLintRequiresExplicitArraysAndBlockedReasons", "TestPublishPreflightUsesContentBatchManifestAndAllowsBlockedItems", "TestPublishPreflightRejectsBriefThatSkippedLocalLint"],
"status": "passed"
},
{
"id": "v5-local-production-boundary",
"requirement": "Audience strategy, storyboard, and Seedance workflows keep candidates local, require governed ApprovedSnapshots for downstream work, and prevent Codex from fabricating server approval or external-platform side effects.",
"command": ["go", "test", "-v", "./internal/localworkspace", "./internal/app", "./internal/cli", "./plugins/contentcloud-video-production/skills", "-run", "^(TestAudienceStrategyScaffoldRequiresPulledTaxonomyAndProducesCandidates|TestStoryboardApprovalBoundaryAndSeedanceExport|TestStoryboardShotIDsCannotEscapeTheirPackage|TestServerRejectsLocalV5CandidatesAsFormalSubmissions|TestServerRequiresApprovedTaxonomyBaselineForAudienceStrategy|TestServerValidatesStoryboardContentBaseline|TestStrategyPublishPreflightIncludesApprovedTaxonomyBaseline|TestV5SkillsDeclareExecutionBoundaries)$"],
"evidence": ["TestAudienceStrategyScaffoldRequiresPulledTaxonomyAndProducesCandidates", "TestStoryboardApprovalBoundaryAndSeedanceExport", "TestStoryboardShotIDsCannotEscapeTheirPackage", "TestServerRejectsLocalV5CandidatesAsFormalSubmissions", "TestServerRequiresApprovedTaxonomyBaselineForAudienceStrategy", "TestServerValidatesStoryboardContentBaseline", "TestStrategyPublishPreflightIncludesApprovedTaxonomyBaseline", "TestV5SkillsDeclareExecutionBoundaries"],
"status": "passed"
},
{
"id": "browser-navigation-safety",
"requirement": "View intent remains read-only, arbitrary targets and page-provided instructions are rejected, Tool success is distinct from verified Browser success, and unavailable Browser/link outcomes do not rewrite the underlying business result.",
"command": ["go", "test", "-v", "./plugins/contentcloud-video-production/skills", "./internal/cli", "-run", "^(TestWorkspaceSkillBrowserSafetyContract|TestWorkspaceSkillBrowserEvalCases|TestMCPOpenProjectViewReturnsTrustedResourceLink|TestMCPOpenProjectViewRejectsUnsafeInputs|TestMCPWorkspaceToolLinkFailureDoesNotReverseBusinessSuccess|TestMCPProjectViewTargetSelectionDoesNotInventObjectPrecision)$"],
"evidence": ["TestWorkspaceSkillBrowserSafetyContract", "TestWorkspaceSkillBrowserEvalCases", "TestMCPOpenProjectViewReturnsTrustedResourceLink", "TestMCPOpenProjectViewRejectsUnsafeInputs", "TestMCPWorkspaceToolLinkFailureDoesNotReverseBusinessSuccess", "TestMCPProjectViewTargetSelectionDoesNotInventObjectPrecision"],
"status": "passed"
},
{
"id": "environment-control-plane",
"requirement": "Project-bound Manifests and Execution Bundles are signed and expiry-checked; Registry, local Lock, Pack, capability digest, subject binding, Automation pre-lease resolution, and attempt-scoped execution workspaces all fail closed without leaking run credentials or leaving an unfinished attempt.",
"command": ["go", "test", "-v", "./internal/environment", "./internal/app", "./internal/localworkspace", "./internal/capabilitycatalog", "./internal/serverconfig", "./internal/automationworkspace", "./internal/agentadapter", "./internal/cli", "-run", "^(TestManifestSignatureBindsPayloadProjectExpiryAndTrust|TestBuildManifestUsesOnlyExactPublishedCompatibleRegistryEntries|TestRevokedEntryBlocksNewUseButRemainsHistoricallyAuditable|TestLocalResolverIntersectsManifestRegistryAndLock|TestPreparationPlanBindsSignedPermissionsCostAndExecutionPlan|TestPreparedLockAddsOnlyExactConfirmedTaskPack|TestRegistryCanonicalPayloadMatchesNodeConformanceVector|TestCreativeExecutionBundleIsDeterministicAndBindsSubjectEnvironmentAndTrust|TestCreativeExecutionBundleFailsClosedForPackRegistryLockAndCapabilityDrift|TestBrowserBootstrapReturnsProjectBoundSignedEnvironmentManifest|TestAutomationPollRequiresVerifiedEnvironmentPackAndCapabilityBeforeLease|TestEnvironmentStateStoresAndVerifiesSignedManifestAndExactLock|TestEnvironmentStateFailsClosedForWrongProjectMissingPluginAndTampering|TestEnvironmentLockCompareAndSwapRejectsConcurrentChange|TestEnvironmentPreparationAndRunClaimAreMutuallyExclusive|TestBuiltinsUseDeterministicSHA256Digests|TestLoadEnvironmentBuildsVerifiedControlPlaneAndAutomationPolicy|TestLoadEnvironmentFailsClosedForPartialOrUnsafeConfiguration|TestMCPEnvironmentExecutionPlanUsesVerifiedOfflineState|TestMCPEnvironmentPreparationRequiresExactConfirmationAndReachesReady|TestWorkspacePrepareCLIPlanAndApplyUseTheSameDeterministicPlan|TestEnvironmentPreparationFailureRollsBackOnlyTheNewPack|TestAttemptWorkspaceFreezesInputsWithoutRunCredentialAndUsesExclusiveLease|TestAttemptWorkspaceRejectsInteractiveOverlapAndRecoversOnlyExpiredOwnedLease|TestAttemptWorkspaceRenewsExclusiveLeaseFromServerExpiry|TestAdapterLoadsOnlyFrozenAutomationWorkspaceResources|TestAgentEnvironmentDoesNotInheritUnrelatedSecret|TestDaemonFixtureUsesAttemptScopedWorkspaceWithoutPersistingRunCredential|TestDaemonFinishesAttemptWhenWorkspaceIsolationFails)$"],
"evidence": ["TestManifestSignatureBindsPayloadProjectExpiryAndTrust", "TestBuildManifestUsesOnlyExactPublishedCompatibleRegistryEntries", "TestRevokedEntryBlocksNewUseButRemainsHistoricallyAuditable", "TestLocalResolverIntersectsManifestRegistryAndLock", "TestPreparationPlanBindsSignedPermissionsCostAndExecutionPlan", "TestPreparedLockAddsOnlyExactConfirmedTaskPack", "TestRegistryCanonicalPayloadMatchesNodeConformanceVector", "TestCreativeExecutionBundleIsDeterministicAndBindsSubjectEnvironmentAndTrust", "TestCreativeExecutionBundleFailsClosedForPackRegistryLockAndCapabilityDrift", "TestBrowserBootstrapReturnsProjectBoundSignedEnvironmentManifest", "TestAutomationPollRequiresVerifiedEnvironmentPackAndCapabilityBeforeLease", "TestEnvironmentStateStoresAndVerifiesSignedManifestAndExactLock", "TestEnvironmentStateFailsClosedForWrongProjectMissingPluginAndTampering", "TestEnvironmentLockCompareAndSwapRejectsConcurrentChange", "TestEnvironmentPreparationAndRunClaimAreMutuallyExclusive", "TestBuiltinsUseDeterministicSHA256Digests", "TestLoadEnvironmentBuildsVerifiedControlPlaneAndAutomationPolicy", "TestLoadEnvironmentFailsClosedForPartialOrUnsafeConfiguration", "TestMCPEnvironmentExecutionPlanUsesVerifiedOfflineState", "TestMCPEnvironmentPreparationRequiresExactConfirmationAndReachesReady", "TestWorkspacePrepareCLIPlanAndApplyUseTheSameDeterministicPlan", "TestEnvironmentPreparationFailureRollsBackOnlyTheNewPack", "TestAttemptWorkspaceFreezesInputsWithoutRunCredentialAndUsesExclusiveLease", "TestAttemptWorkspaceRejectsInteractiveOverlapAndRecoversOnlyExpiredOwnedLease", "TestAttemptWorkspaceRenewsExclusiveLeaseFromServerExpiry", "TestAdapterLoadsOnlyFrozenAutomationWorkspaceResources", "TestAgentEnvironmentDoesNotInheritUnrelatedSecret", "TestDaemonFixtureUsesAttemptScopedWorkspaceWithoutPersistingRunCredential", "TestDaemonFinishesAttemptWhenWorkspaceIsolationFails"],
"status": "passed"
}
],
"limitations": [
"The deterministic Browser trace evaluation does not replace model-sampled Skill behavior or the ChatGPT Desktop Browser W4-01 host gate.",
"Codex Desktop host loading, Deep Link behavior, authentication profile, and session boundaries remain separate W4 smoke-test gates.",
"The V5 evaluation covers the local vertical slice and server governance gates; it does not claim Web review, media generation, PublishedCreativeBinding attribution, or a real Seedance/Douyin E2E.",
"The report does not use production credentials, publish release artifacts, or contact production services."
]
}
20 changes: 13 additions & 7 deletions .agents/plugins/registry.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@
{
"id": "contentcloud-video-production",
"kind": "scene_plugin",
"version": "0.7.0",
"version": "0.8.0",
"source": {
"repository": "https://github.com/limecloud/contentcloud",
"ref": "v0.7.0"
"ref": "v0.8.0"
},
"license": "Apache-2.0",
"digest": "sha256:59c80e26a2d0161f28f309d6f1b909d7261e9d933508f7398600f1d40de36bc9",
"digest": "sha256:0bb239fa608f20638f9540cc41c4de9291662565de234e1ee758bb99903c5aeb",
"signature": {
"status": "verified",
"algorithm": "ed25519",
"key_id": "contentcloud-plugin-release-2026-07",
"value": "2isc7SsECz2dgNTvJJQ4myNlAO3RrQeFfVG7+0iEF1gu5+8GxxxuMt83xK/tImzwRwvWLLfJg8dbmTcm0vzhBw=="
"value": "Z0neUpfzYjOxXTcuP6ocANIK/n4J9EhkVxgARo5xn2oRE3p5vFjQnhCKqLp9MutoAPcv+GLHun0rqa2LNWPECg=="
},
"compatible_profiles": [
"contentcloud.video-production"
Expand Down Expand Up @@ -45,12 +45,17 @@
"contracts/knowledge-page-3.0.schema.json",
"contracts/content-batch-3.0.schema.json",
"contracts/content-item-3.0.schema.json",
"contracts/handoff-1.0.schema.json"
"contracts/handoff-1.0.schema.json",
"contracts/audience-taxonomy-1.0.schema.json",
"contracts/audience-strategy-1.0.schema.json",
"contracts/commerce-offer-1.0.schema.json",
"contracts/storyboard-package-1.0.schema.json",
"contracts/seedance-prompt-package-1.0.schema.json"
],
"evaluation": {
"status": "passed",
"report": ".agents/plugins/evaluations/contentcloud-video-production-0.7.0.json",
"digest": "sha256:a9e5603a116a18526437a3990bf66b696729f728f7eb9395a8028976f674c39c",
"report": ".agents/plugins/evaluations/contentcloud-video-production-0.8.0.json",
"digest": "sha256:313c4d68c8a4f39d359270eb47c88668f5567740499fcc5a4d5123ffff82ae9c",
"evidence": [
"codex-plugin-transaction",
"bootstrap-confirmation",
Expand All @@ -59,6 +64,7 @@
"review-and-approved-resume",
"knowledge-contract",
"content-contract",
"v5-local-production-boundary",
"browser-navigation-safety",
"environment-control-plane"
]
Expand Down
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@

ContentCloud 的重要变更记录在此文件中。

## [0.8.0] - 2026-07-29

### Added

- 增加 V5 抖音电商人群目录、人群策略、商品权益、分镜包、Seedance 提示词包和已发布创意绑定契约,明确本机候选、服务端批准与外部平台人工操作的执行边界。
- 增加人群单选、2 至 3 类对比和八类探索的本地生成与 lint,以及基于已拉取 ApprovedSnapshot 的分镜准备和确定性 Seedance 导出命令。
- 增加抖音人群策略、分镜生产和 Seedance 导出三个 Plugin Skill,并为 V5 本地纵向切片增加独立确定性评测场景。

### Changed

- Submission 与 ApprovedSnapshot 扩展支持 `strategy`、`offer` 和 `storyboard`,服务端在 publish 与批准阶段复核 taxonomy 有效期、ApprovedSnapshot 血缘和分镜锁定摘要。
- CLI、Web、npm 安装器、Plugin、MCP、Environment Profile 和 bootstrap 固定版本统一升级到 `0.8.0`,Plugin 发布门改为校验明确的六 Skill 清单。
- V5 当前按受治理的本地纵向切片发布;Web 审核交互、媒体生成能力、PublishedCreativeBinding 结果归因和真实 Seedance/抖音 E2E 仍保留为后续发布门,不宣称完整生产闭环已验收。

### Fixed

- 修复 bootstrap 测试夹具依赖历史绝对时间、会在日期推进后因测试会话过期而失败的问题。

## [0.7.0] - 2026-07-27

### Added
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.7.0
0.8.0
Loading
Loading