Protect shared project metadata credentials and managed settings

Why:
Legacy project metadata can contain credentials outside the settings scope table.
Sharing raw projection settings exposed them, and generic project PATCH bypassed
the system-managed path guard already enforced by project settings endpoints.

Evidence:
SELF member Host regression failed before the fix. The fixed 4f72aaf server
baseline overlay reproduced HTTP metadata leakage and managed PATCH returning 200.
SELF shared Host-to-HTTP, immutable mask, dotted/schema/fallback, public mutation
and atomic managed-write regressions passed; uncached full suite, isolated PG
Store suite and static build passed. Independent delta replay remains a gate.

Impact:
Registered lifecycle metadata returns detached credential-masked views while
preserving service/configuration keys and persisted data. Generic project PATCH
shares the existing managed validator before rename or settings mutation; allowed
metadata key shapes and raw owner-only management lookups remain available.

Refs:
Dev project-member-access plan r1 Task 1 and R5; approved hard secret boundary;
2026-10-13 shared project metadata review follow-up
This commit is contained in:
2026-10-13 09:46:20 +00:00
parent 4f72aaf3d8
commit c4435d1415
9 changed files with 335 additions and 7 deletions
+2 -1
View File
@@ -6,7 +6,8 @@ import (
)
// ProjectHost is an optional actor-scoped host projection capability. Metadata
// can be shared by an authorizer; owned lookups and mutations remain owner-only.
// can be shared by an authorizer; registered-lifecycle metadata masks credentials.
// OwnedProject remains an owner-only management lookup; mutations remain owner-only.
type ProjectHost interface {
Owner() string
OwnedProjects() ([]core.Project, error)