fix(manifest): restore agentGlobalFreezeOverride for the operator-private config source - #4410
Merged
Merged
Conversation
…vate config source #4391 correctly closed the scope leak where a repo's own committed .gittensory.yml could grant itself an exemption from the operator's fleet-wide freeze, but it also removed the field from parsing entirely -- leaving raw DB writes as the only way to set it, even for the operator's own private self-host config (source: "api_record"), which is a different, already-trusted actor from a repo maintainer. Restores parsing gated strictly on source === "api_record": a repo-owned manifest (source: "repo_file") still has the field silently dropped with an operator-only warning, preserving #4391's fix, while the operator's private container-local yml can set it again as config-as-code instead of an undocumented DB write.
Contributor
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | d0c4dd9 | Commit Preview URL Branch Preview URL |
Jul 09 2026, 10:47 AM |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4410 +/- ##
=======================================
Coverage 93.96% 93.96%
=======================================
Files 401 401
Lines 36902 36908 +6
Branches 13494 13497 +3
=======================================
+ Hits 34676 34682 +6
Misses 1570 1570
Partials 656 656
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.gittensory.ymlcould grant itself an exemption from the operator's fleet-wide agent freeze — but it removedagentGlobalFreezeOverridefrom manifest parsing entirely, leaving raw, undocumented DB writes as the only way to set it at all, even for the operator's own private self-host config.source: "api_record", produced byloadRepoFocusManifestWithCachePolicyfor self-host installs) is a fundamentally different trust boundary from a repo maintainer's public, git-committed manifest (source: "repo_file") — it's edited only by whoever has filesystem access to the operator's own config directory, never by a repo's maintainers.settings.agentGlobalFreezeOverride, gated strictly onsource === "api_record". A repo-owned manifest still has the field silently dropped (with a new operator-only warning, not a normal "invalid value" one, so a contributor-facing preview never teaches a non-operator the field exists), preserving fix(manifest): keep freeze override operator-only #4391's fix exactly. The operator's own private config can set it again as config-as-code, matching this project's "every operator-facing control is global-default + per-repo-override config, not raw DB writes" convention — instead of the emergency-only direct-DB-UPDATE workaround this bug forced.Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run typechecknpx vitest run test/unit/focus-manifest.test.ts— 570/570 pass (includes 2 new dedicated tests for both source paths, plus the doc-drift exhaustiveness check updated for the new operator-only exclusion)npm run actionlint/npm run test:workers/npm run build:mcp/npm run test:mcp-pack/npm run ui:openapi:check/npm run ui:lint/npm run ui:typecheck/npm run ui:build/npm audit— not run locally for this focused change; relying on CI (validate) for the full gate.describeblock covering bothsource: "api_record"(allowed) andsource: "repo_file"(dropped + warned) explicitly, plus updated the pre-existing multi-field parse test and the docs-drift exhaustiveness check.If any required check was skipped, explain why:
npm run test:cigate is left to CI per the repo's own established practice for this size of change.Safety
UI Evidencesection. — N/A, no UI changes..gittensory.yml.example/config/examples/gittensory.full.yml(the public templates), since it must never appear as something a repo maintainer can self-serve.Notes
UPDATEworking as a stopgap. This PR closes that gap properly.