Integrate BACKBEAT SDK and resolve KACHING license validation

Major integrations and fixes:
- Added BACKBEAT SDK integration for P2P operation timing
- Implemented beat-aware status tracking for distributed operations
- Added Docker secrets support for secure license management
- Resolved KACHING license validation via HTTPS/TLS
- Updated docker-compose configuration for clean stack deployment
- Disabled rollback policies to prevent deployment failures
- Added license credential storage (CHORUS-DEV-MULTI-001)

Technical improvements:
- BACKBEAT P2P operation tracking with phase management
- Enhanced configuration system with file-based secrets
- Improved error handling for license validation
- Clean separation of KACHING and CHORUS deployment stacks

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
anthonyrawlins
2025-09-06 07:56:26 +10:00
parent 543ab216f9
commit 9bdcbe0447
4730 changed files with 1480093 additions and 1916 deletions

View File

@@ -13,50 +13,50 @@ func TestParseBzzzURI(t *testing.T) {
}{
{
name: "valid basic URI",
uri: "bzzz://claude:frontend@chorus:implement/src/main.go",
uri: "CHORUS://claude:frontend@chorus:implement/src/main.go",
expected: &BzzzURI{
Agent: "claude",
Role: "frontend",
Project: "chorus",
Task: "implement",
Path: "/src/main.go",
Raw: "bzzz://claude:frontend@chorus:implement/src/main.go",
Raw: "CHORUS://claude:frontend@chorus:implement/src/main.go",
},
},
{
name: "URI with wildcards",
uri: "bzzz://any:*@*:test",
uri: "CHORUS://any:*@*:test",
expected: &BzzzURI{
Agent: "any",
Role: "*",
Project: "*",
Task: "test",
Raw: "bzzz://any:*@*:test",
Raw: "CHORUS://any:*@*:test",
},
},
{
name: "URI with query and fragment",
uri: "bzzz://claude:backend@bzzz:debug/api/handler.go?type=error#line123",
uri: "CHORUS://claude:backend@CHORUS:debug/api/handler.go?type=error#line123",
expected: &BzzzURI{
Agent: "claude",
Role: "backend",
Project: "bzzz",
Project: "CHORUS",
Task: "debug",
Path: "/api/handler.go",
Query: "type=error",
Fragment: "line123",
Raw: "bzzz://claude:backend@bzzz:debug/api/handler.go?type=error#line123",
Raw: "CHORUS://claude:backend@CHORUS:debug/api/handler.go?type=error#line123",
},
},
{
name: "URI without path",
uri: "bzzz://any:architect@project:review",
uri: "CHORUS://any:architect@project:review",
expected: &BzzzURI{
Agent: "any",
Role: "architect",
Project: "project",
Task: "review",
Raw: "bzzz://any:architect@project:review",
Raw: "CHORUS://any:architect@project:review",
},
},
{
@@ -66,12 +66,12 @@ func TestParseBzzzURI(t *testing.T) {
},
{
name: "missing role",
uri: "bzzz://claude@chorus:implement",
uri: "CHORUS://claude@chorus:implement",
expectError: true,
},
{
name: "missing task",
uri: "bzzz://claude:frontend@chorus",
uri: "CHORUS://claude:frontend@chorus",
expectError: true,
},
{
@@ -81,7 +81,7 @@ func TestParseBzzzURI(t *testing.T) {
},
{
name: "invalid format",
uri: "bzzz://invalid",
uri: "CHORUS://invalid",
expectError: true,
},
}
@@ -307,20 +307,20 @@ func TestBzzzURIString(t *testing.T) {
Task: "implement",
Path: "/src/main.go",
},
expected: "bzzz://claude:frontend@chorus:implement/src/main.go",
expected: "CHORUS://claude:frontend@chorus:implement/src/main.go",
},
{
name: "URI with query and fragment",
uri: &BzzzURI{
Agent: "claude",
Role: "backend",
Project: "bzzz",
Project: "CHORUS",
Task: "debug",
Path: "/api/handler.go",
Query: "type=error",
Fragment: "line123",
},
expected: "bzzz://claude:backend@bzzz:debug/api/handler.go?type=error#line123",
expected: "CHORUS://claude:backend@CHORUS:debug/api/handler.go?type=error#line123",
},
{
name: "URI without path",
@@ -330,7 +330,7 @@ func TestBzzzURIString(t *testing.T) {
Project: "project",
Task: "review",
},
expected: "bzzz://any:architect@project:review",
expected: "CHORUS://any:architect@project:review",
},
}
@@ -479,7 +479,7 @@ func TestValidateBzzzURIString(t *testing.T) {
}{
{
name: "valid URI",
uri: "bzzz://claude:frontend@chorus:implement/src/main.go",
uri: "CHORUS://claude:frontend@chorus:implement/src/main.go",
expectError: false,
},
{