/goal /ultracode-workflows [SEC-2] attribute human identity into the secrets-sync audit trail #44

Closed
opened 2026-07-01 02:03:52 +00:00 by plat · 1 comment
Owner

Track/Wave: SEC-2 · Wave G1 · Size S
Repos: mcp, _app-template
Depends on: none

Why

The secrets sync commit is currently attributed to CI/admin, not the human who set the secret. Cheap auditability win.

Scope

Thread Forgejo Actions run metadata (github.actor, run id/URL, SHA) from sync-env.yml through secrets-cli.ts into syncAppEnv()'s commit trailer, reusing the existing Caller/Tool commit-attribution pattern. Commit-message change only, no new store.

Acceptance

Triggering sync-env as two different org members yields gitops commits each carrying the distinct human actor (not CI/admin), verifiable via git log alone.

Notes

Seam B: isolated syncAppEnv region (~1728) of server.ts — tolerated concurrent; land by rebase. Overlappable with Horizon 1.


Part of the First Client Deploy → Governance roadmap. The owning agent may recurse into its own subagent team (ultracode workflow) if the task warrants. Honor the seam-serialization: land on a shared seam by rebase, and don't start a seam position until the prior one has merged.

**Track/Wave:** `SEC-2` · Wave **G1** · Size **S** **Repos:** `mcp`, `_app-template` **Depends on:** none ## Why The secrets sync commit is currently attributed to CI/admin, not the human who set the secret. Cheap auditability win. ## Scope Thread Forgejo Actions run metadata (github.actor, run id/URL, SHA) from sync-env.yml through secrets-cli.ts into syncAppEnv()'s commit trailer, reusing the existing Caller/Tool commit-attribution pattern. Commit-message change only, no new store. ## Acceptance Triggering sync-env as two different org members yields gitops commits each carrying the distinct human actor (not CI/admin), verifiable via `git log` alone. ## Notes **Seam B: isolated syncAppEnv region (~1728) of server.ts — tolerated concurrent; land by rebase. Overlappable with Horizon 1.** --- *Part of the **First Client Deploy → Governance** roadmap. The owning agent may recurse into its own subagent team (ultracode workflow) if the task warrants. Honor the seam-serialization: land on a shared seam by rebase, and don't start a seam position until the prior one has merged.*
Author
Owner

DONE — merged. plat/mcp PR #4 + plat/app-template PR #2 merged to main (squash; two accidental junk files stripped from #4 first). Wiring verified end-to-end on valid8b: sync-env.yml sets PLAT_ACTOR/PLAT_RUN_URL/PLAT_SHA and forwards them into the container; secrets-cli reads them (GITHUB* fallback) and syncAppEnv appends a Caller/Tool/Run/Commit trailer only when actor.login is set (byte-identical otherwise). 51/51 tests. Live Actions e2e not run (valid8b has no runner + idle CI); trailer format reproduced/verified by hand. Same propagation caveat as RBAC-1 (needs release + seed refresh, #14).

**DONE — merged.** plat/mcp PR #4 + plat/_app-template PR #2 merged to main (squash; two accidental junk files stripped from #4 first). Wiring verified end-to-end on valid8b: sync-env.yml sets PLAT_ACTOR/PLAT_RUN_URL/PLAT_SHA and forwards them into the container; secrets-cli reads them (GITHUB_* fallback) and syncAppEnv appends a Caller/Tool/Run/Commit trailer only when actor.login is set (byte-identical otherwise). 51/51 tests. Live Actions e2e not run (valid8b has no runner + idle CI); trailer format reproduced/verified by hand. Same propagation caveat as RBAC-1 (needs release + seed refresh, #14).
plat closed this issue 2026-07-01 03:22:22 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
open-platform/mitosis#44
No description provided.