hololake-system-architecture/product-source/hololake-platform/docs/adr/0155-source-ownership-and-deployment-routing.md

2 KiB

ADR 0155: Source ownership and deployment routing

Status

Accepted as an immediate fail-closed boundary on 2026-07-26.

Context

The HoloLake research repository is readable by collaborators, but its source was also treated as a generic deployment source. The repository only registered HLP-CHANNEL-0001, Ice Shuo's Zero Core personal channel, while build commands exposed both personal and team packages. A collaborator could therefore select the personal build path and deploy source they did not own.

Read access is intentional. Deployment authority is not.

Decision

HoloLake uses three separately routed source domains:

  1. Personal product source lives in its human owner's repository on the owner's registered server.
  2. Team product source lives in the enterprise research repository on AW-GZ-001.
  3. Reusable modules live in a public module repository and are imported as versioned dependencies, never deployed as an application source.

research/source-route-policy.json is the repository-side route declaration. Packaging now fails closed unless distribution, repository, source channel, persona, and target match an active route. The Lake Lamp deployment receiver independently enforces the same binding from its protected server registry.

Until exact enterprise and public-module repository identifiers are registered, their routes remain disabled. Team UI development can continue with pnpm build:team-foundation, but this personal repository cannot produce a team deployment artifact.

Consequences

  • Cloning or reading source remains allowed.
  • A team persona cannot package or deploy Ice Shuo's personal distribution.
  • Personal packaging requires source owner and human authorizer ICE-GL∞, executing persona ICE-GL-ZY001, public execution runtime SYS-GLW-ZY-EXEC-0001, and target JD-FD-PRIMARY.
  • Team deployment remains blocked until the enterprise repository is created and mapped.
  • Public modules need an explicit repository and module manifest before cross-channel reuse.