VIRGO

워크스페이스와 프로젝트

업무 영역은 분리하고, 인프라는 공유합니다.

Workspace는 격리 경계이고 project는 그 안의 구체적 작업 단위입니다. Persona 임무는 project에 붙으며, 머신은 전체 설치가 공유하는 capacity로 남습니다.

계층

소유권이 구체적인 임무로 좁혀집니다.

이 계층은 권한과 기록을 설명합니다. Workspace마다 머신을 전용으로 배정하지 않습니다.

HOME과 명령

기본은 단순하게, 분리가 필요할 때는 명시적으로.

virgo init은 불변 기본 workspace ID home을 만듭니다. 영역이 하나인 소유자는 처음부터 workspace 구조를 설계할 필요가 없습니다.

virgo workspace add job
virgo workspace add client-a
virgo workspace list

추가 영역은 모두 명시적인 행동입니다. Workspace는 persona와 기록을 담기 때문에, 파괴 의미가 정의되기 전까지 초기 command surface에는 remove가 없습니다.

PROJECT BINDING

페르소나는 주변 전체가 아니라 임무를 받습니다.

Project는 한 workspace 안에 있고 보통 저장소에 대응합니다. Persona 임무는 이 수준에 붙으므로 project lead나 coder는 workspace 전체가 아니라 해당 project에 필요한 worktree와 action을 받습니다.

workspace/project/agent

이 주소는 routing, record provenance, authority를 같은 계층에 수렴시킵니다.

기계장치로 강제하는 격리

형식상 올바른 cross-workspace 요청도 실패합니다.

Persona stampworkspace = client-a
must equal
Tool targetworkspace = client-a
and
Transport bindingworkspace = client-a

Capability authorization은 stamped scope와 operation을 비교합니다. Transport는 모든 operation에서 검증된 persona identity와 binding을 비교합니다. 다른 workspace를 향한 요청은 문법이 맞아도 거부되며, UI filter는 격리 경계가 아닙니다.

공유 머신군

Placement는 workspace 소유가 아니라 capacity와 policy를 따릅니다.

Machine Ahome/persona-1
job/persona-2
Machine Bclient-a/persona-3
Machine Celigible spare

머신은 설치 전체의 자원이며 서로 다른 workspace의 fenced persona를 함께 실행할 수 있습니다. 나중에 선택적 placement constraint로 eligibility를 좁혀도 계층은 바뀌지 않습니다.