feat(workspaces): connectWorkspace use case with audit

Manifest-first: connectWorkspace declared mutates:true with the
workspace-connected audit event, requiredCores gains audit. Workspace
entity gains gitUrl + persisted status enum (created/connecting/ready/
error). Input takes name + git URL + PAT; the output schema is the
credential-free workspace entity, so the PAT can never round-trip.
Audit emission asserted with RecordingAuditLog; binders wire the use
case through wireUseCase with the __audited brand, and web-next
bindAll now binds core-audit (payload+stdout sinks in production,
stdout in dev-seed) so boot conformance passes in both modes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
This commit is contained in:
2026-07-12 21:54:00 +02:00
parent 6216897680
commit 8219c1fabb
27 changed files with 783 additions and 26 deletions

View File

@@ -1,8 +1,12 @@
export const WORKSPACES_SYMBOLS = {
IWorkspaceRepository: Symbol.for("workspaces:IWorkspaceRepository"),
// Use cases
IConnectWorkspaceUseCase: Symbol.for("workspaces:IConnectWorkspaceUseCase"),
IGetWorkspaceUseCase: Symbol.for("workspaces:IGetWorkspaceUseCase"),
// Controllers
IConnectWorkspaceController: Symbol.for(
"workspaces:IConnectWorkspaceController",
),
IGetWorkspaceController: Symbol.for("workspaces:IGetWorkspaceController"),
// <gen:event-handler-symbols>
// <gen:job-symbols>