Compare commits
base: mosaicstack/stack:f068a54a8dbff0c5a5997fb32a5085bc3e33359b
mosaicstack/stack:main
mosaicstack/stack:mos-comms-live
mosaicstack/stack:docs/heartbeat-framework-layering-ms-lead
mosaicstack/stack:feat/869-c4-version-coupling
mosaicstack/stack:feat/869-c2-install-ordering-guard
mosaicstack/stack:feat/869-c5-doctor-activation-check
mosaicstack/stack:feat/per-agent-gitea-identity
mosaicstack/stack:fix/875-belongs-case-insensitive-slug
mosaicstack/stack:fix/ci-queue-wait-404-branch-absent
mosaicstack/stack:feat/869-c1-activation-probe
mosaicstack/stack:feat/869-c3-broker-supervisor
mosaicstack/stack:fix/865-tea-cli-comment-invocation
mosaicstack/stack:feat/glpi-skills
mosaicstack/stack:fix/860-deflake-mutator-lease-gate
mosaicstack/stack:fix/850-detect-platform-port-normalization
mosaicstack/stack:fix/856-worktree-deps-preflight
mosaicstack/stack:fix/835-pr-review-approve-reject-comment-flag
mosaicstack/stack:fix/848-truthful-evidence
mosaicstack/stack:fix/812-pr-review-comment
mosaicstack/stack:fix/849-recovery-runtime-fixture-race
mosaicstack/stack:docs/758-ledger-m5-001-sync
mosaicstack/stack:feat/834-tc-server-side-doc
mosaicstack/stack:feat/833-constrained-recovery-command
mosaicstack/stack:feat/827-gate0-probe
mosaicstack/stack:governance/gate0-probe3-amendment
mosaicstack/stack:fix/795-codex-pr-diff
mosaicstack/stack:fix/795-ci-base-jq
mosaicstack/stack:fix/795-ci-base-git
mosaicstack/stack:feat/791-pr3-fleet-regen
mosaicstack/stack:feat/791-pr2-snapshot-restore
mosaicstack/stack:fix/807-glpi-206
mosaicstack/stack:fix/808-agent-send-false-sender
mosaicstack/stack:feat/791-upgrade-config-protection
mosaicstack/stack:feat/790-mosaic-yolo-claudex-pr2
mosaicstack/stack:feat/790-mosaic-yolo-claudex
mosaicstack/stack:feat/758-v1-v2-migrator
mosaicstack/stack:fix/766-exact-fleet-comms
mosaicstack/stack:test/758-reconciler-lifecycle-gates
mosaicstack/stack:docs/771-kbn101-db-role-split
mosaicstack/stack:test/758-example-profile-dispositions
mosaicstack/stack:feat/758-shared-role-resolution
mosaicstack/stack:feat/mos-logical-identity-fencing
mosaicstack/stack:feat/769-kbn100-unified-schema
mosaicstack/stack:docs/753-kbn010-threat-gate
mosaicstack/stack:feat/758-roster-v2-compiler
mosaicstack/stack:feat/756-official-discord-plugin
mosaicstack/stack:docs/758-fleet-config-management
mosaicstack/stack:fix/mos-option2-qualification-format
mosaicstack/stack:docs/issue-758-m0
mosaicstack/stack:docs/mos-option2-qualification
mosaicstack/stack:mos-comms
mosaicstack/stack:feat/tess-interaction-agent
mosaicstack/stack:fix/tess-docs-format
mosaicstack/stack:next
mosaicstack/stack:draft/mosaic-platform-prd
mosaicstack/stack:fix/installer-provider-gate-and-local-gateway-redis
mosaicstack/stack:release/mosaic-cli-0.0.37
mosaicstack/stack:feat/framework-constitution-alpha
mosaicstack/stack:fix/git-wrapper-repo-detection
mosaicstack/stack:fix/woodpecker-wrapper-legacy-mosaic
mosaicstack/stack:fix/t-a292e96f-gitea-pr-metadata
mosaicstack/stack:fix/gitea-pr-metadata-login-t-a292e96f
mosaicstack/stack:fix/t_a292e96f-pr-metadata-gitea
mosaicstack/stack:fix/t_3a368a52-gitea-usc-login
mosaicstack/stack:fix/bootstrap-hotfix
mosaicstack/stack:fix/populate-known-packages-list
mosaicstack/stack:fix/idempotent-init
mosaicstack/stack:v0.0.39-alpha
mosaicstack/stack:mosaic-v0.0.31
mosaicstack/stack:fed-v0.2.0-m2
mosaicstack/stack:fed-v0.1.0-m1
mosaicstack/stack:mosaic-v0.0.29
mosaicstack/stack:mosaic-v0.0.28
mosaicstack/stack:mosaic-v0.0.27
mosaicstack/stack:mosaic-v0.0.26
mosaicstack/stack:mosaic-v0.0.25
mosaicstack/stack:mosaic-v0.0.24
mosaicstack/stack:v0.2.0
mosaicstack/stack:v0.1.0
mosaicstack/stack:v0.0.8
mosaicstack/stack:v0.0.7
mosaicstack/stack:v0.0.6
mosaicstack/stack:v0.0.5
mosaicstack/stack:v0.0.4
..
compare: mosaicstack/stack:feat/per-agent-gitea-identity
mosaicstack/stack:mos-comms-live
mosaicstack/stack:main
mosaicstack/stack:docs/heartbeat-framework-layering-ms-lead
mosaicstack/stack:feat/869-c4-version-coupling
mosaicstack/stack:feat/869-c2-install-ordering-guard
mosaicstack/stack:feat/869-c5-doctor-activation-check
mosaicstack/stack:feat/per-agent-gitea-identity
mosaicstack/stack:fix/875-belongs-case-insensitive-slug
mosaicstack/stack:fix/ci-queue-wait-404-branch-absent
mosaicstack/stack:feat/869-c1-activation-probe
mosaicstack/stack:feat/869-c3-broker-supervisor
mosaicstack/stack:fix/865-tea-cli-comment-invocation
mosaicstack/stack:feat/glpi-skills
mosaicstack/stack:fix/860-deflake-mutator-lease-gate
mosaicstack/stack:fix/850-detect-platform-port-normalization
mosaicstack/stack:fix/856-worktree-deps-preflight
mosaicstack/stack:fix/835-pr-review-approve-reject-comment-flag
mosaicstack/stack:fix/848-truthful-evidence
mosaicstack/stack:fix/812-pr-review-comment
mosaicstack/stack:fix/849-recovery-runtime-fixture-race
mosaicstack/stack:docs/758-ledger-m5-001-sync
mosaicstack/stack:feat/834-tc-server-side-doc
mosaicstack/stack:feat/833-constrained-recovery-command
mosaicstack/stack:feat/827-gate0-probe
mosaicstack/stack:governance/gate0-probe3-amendment
mosaicstack/stack:fix/795-codex-pr-diff
mosaicstack/stack:fix/795-ci-base-jq
mosaicstack/stack:fix/795-ci-base-git
mosaicstack/stack:feat/791-pr3-fleet-regen
mosaicstack/stack:feat/791-pr2-snapshot-restore
mosaicstack/stack:fix/807-glpi-206
mosaicstack/stack:fix/808-agent-send-false-sender
mosaicstack/stack:feat/791-upgrade-config-protection
mosaicstack/stack:feat/790-mosaic-yolo-claudex-pr2
mosaicstack/stack:feat/790-mosaic-yolo-claudex
mosaicstack/stack:feat/758-v1-v2-migrator
mosaicstack/stack:fix/766-exact-fleet-comms
mosaicstack/stack:test/758-reconciler-lifecycle-gates
mosaicstack/stack:docs/771-kbn101-db-role-split
mosaicstack/stack:test/758-example-profile-dispositions
mosaicstack/stack:feat/758-shared-role-resolution
mosaicstack/stack:feat/mos-logical-identity-fencing
mosaicstack/stack:feat/769-kbn100-unified-schema
mosaicstack/stack:docs/753-kbn010-threat-gate
mosaicstack/stack:feat/758-roster-v2-compiler
mosaicstack/stack:feat/756-official-discord-plugin
mosaicstack/stack:docs/758-fleet-config-management
mosaicstack/stack:fix/mos-option2-qualification-format
mosaicstack/stack:docs/issue-758-m0
mosaicstack/stack:docs/mos-option2-qualification
mosaicstack/stack:mos-comms
mosaicstack/stack:feat/tess-interaction-agent
mosaicstack/stack:fix/tess-docs-format
mosaicstack/stack:next
mosaicstack/stack:draft/mosaic-platform-prd
mosaicstack/stack:fix/installer-provider-gate-and-local-gateway-redis
mosaicstack/stack:release/mosaic-cli-0.0.37
mosaicstack/stack:feat/framework-constitution-alpha
mosaicstack/stack:fix/git-wrapper-repo-detection
mosaicstack/stack:fix/woodpecker-wrapper-legacy-mosaic
mosaicstack/stack:fix/t-a292e96f-gitea-pr-metadata
mosaicstack/stack:fix/gitea-pr-metadata-login-t-a292e96f
mosaicstack/stack:fix/t_a292e96f-pr-metadata-gitea
mosaicstack/stack:fix/t_3a368a52-gitea-usc-login
mosaicstack/stack:fix/bootstrap-hotfix
mosaicstack/stack:fix/populate-known-packages-list
mosaicstack/stack:fix/idempotent-init
mosaicstack/stack:v0.0.39-alpha
mosaicstack/stack:mosaic-v0.0.31
mosaicstack/stack:fed-v0.2.0-m2
mosaicstack/stack:fed-v0.1.0-m1
mosaicstack/stack:mosaic-v0.0.29
mosaicstack/stack:mosaic-v0.0.28
mosaicstack/stack:mosaic-v0.0.27
mosaicstack/stack:mosaic-v0.0.26
mosaicstack/stack:mosaic-v0.0.25
mosaicstack/stack:mosaic-v0.0.24
mosaicstack/stack:v0.2.0
mosaicstack/stack:v0.1.0
mosaicstack/stack:v0.0.8
mosaicstack/stack:v0.0.7
mosaicstack/stack:v0.0.6
mosaicstack/stack:v0.0.5
mosaicstack/stack:v0.0.4
2
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
4b472a2242 |
fix(tools/git): restore executable bit on new per-agent-identity scripts
ci/woodpecker/pr/ci Pipeline was successful
core.filemode=false in this worktree meant the initial commit recorded git-credential-mosaic, test-git-credential-mosaic.sh, and test-gitea-token-identity.sh as 100644. git invokes a path-configured credential.helper directly (exec, not `sh <path>`), so git-credential-mosaic must carry the executable bit; the two test scripts match the 100755 convention already used by the other test-*.sh harnesses in this directory. Co-Authored-By: Claude Opus 4.8 <[email protected]> |
||
|
|
9d7038d325 |
feat(tools/git): per-agent Gitea identity (git-credential-mosaic + get_gitea_token)
Adds an opt-in per-agent Gitea identity so a fleet agent can push/commit/open
PRs under its own token instead of the single shared account, giving
cryptographic author-!=-reviewer separation (Gate-16).
Resolution priority (both tools): MOSAIC_GIT_IDENTITY env > git config
mosaic.gitIdentity (per-worktree, persists on disk) > git-supplied username
(git-credential-mosaic only). If the resolved identity has a token file at
~/.config/mosaic/secrets/gitea-tokens/gitea-{usc,mosaicstack}-<id>.token, that
identity is used; otherwise both tools fall through to the existing
shared-account path unchanged, so this is a no-op on any host without
per-slot tokens configured.
- tools/git/git-credential-mosaic: new git credential helper (get verb).
- tools/git/detect-platform.sh: get_gitea_token() gains the same identity
resolution, prepended ahead of the existing shared-token logic, so API
tooling (pr-create.sh, issue-create.sh, ...) authors under the same
identity as git push/fetch.
- install.sh: explicit chmod +x for git-credential-mosaic (it ships without
a .sh suffix, so the existing *.sh glob does not cover it); tools/** is
already framework-owned so the file syncs automatically.
- tools/git/README.md: documents the feature, the one-time
`git config credential.helper` registration step (deliberately not
auto-wired — see README for why), and the PowerShell-parity decision
(detect-platform.ps1 authenticates via tea logins, not a raw-token
function, so there is nothing to port there).
- tools/git/test-git-credential-mosaic.sh,
tools/git/test-gitea-token-identity.sh: new regression harnesses (red
verified against the pre-patch code) covering identity-resolution
priority, per-host token path selection, and shared-account fallback.
Wired into package.json's test:framework-shell.
Upstreams Mos host-local tooling-patch kit (2026-07-23), Patches 1+2.
Closes #873
Co-Authored-By: Claude Opus 4.8 <[email protected]>
|