fix(manifest): keep freeze override operator-only - #4391
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | ec8ad40 | Commit Preview URL Branch Preview URL |
Jul 09 2026, 08:24 AM |
Contributor
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4391 +/- ##
=======================================
Coverage 93.96% 93.96%
=======================================
Files 401 401
Lines 36869 36869
Branches 13480 13480
=======================================
Hits 34644 34644
Misses 1569 1569
Partials 656 656
🚀 New features to boost your workflow:
|
Merged
16 tasks
JSONbored
added a commit
that referenced
this pull request
Jul 9, 2026
…vate config source (#4410) #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.
21 tasks
JSONbored
added a commit
that referenced
this pull request
Jul 10, 2026
…4617) (#4682) check-docs-drift.mjs only guaranteed docs for GITTENSORY_REVIEW_* env flags and 13 hand-picked *GateMode fields, leaving ~90 other RepositorySettings fields and the entire FocusManifest config surface (packages/gittensory-engine) with zero automated documentation check. Add two new checks: every RepositorySettings field (via a brace-depth type-literal extractor, not a name-shape regex) and every parseable FocusManifest leaf field (recursing into nested config types, e.g. review.visual.production_url) against .gittensory.yml.example. Fields documented under a renamed/nested yml key are recorded in two small alias manifests (mirroring the existing GATE_MODE_MANIFEST pattern) rather than flagged as false positives. Document the two live-but-undocumented fields the widened checker found: review.visual.production_url and four sibling review.ai_model.* overrides, in .gittensory.yml.example and its byte-synced config/examples/gittensory.full.yml counterpart. agentGlobalFreezeOverride (the other field named in #4617) is deliberately excluded instead: it is settable only from the operator's own private config, and documenting it in the public example would reintroduce the #4391 scope-leak this repo already fixed once (test/unit/focus-manifest.test.ts's existing SETTINGS_OPERATOR_ONLY_FIELDS list carries the same exclusion).
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.
Motivation
agentGlobalFreezeOverride, which let repo maintainers bypass the operator DB-backed global agent freeze and restore live bot mutations for that repo.Description
agentGlobalFreezeOverridefrom the focus-manifestFocusManifestSettingstype so it is no longer a recognized repo-config field inpackages/gittensory-engine/src/focus-manifest.ts.settings.agentGlobalFreezeOverridefrom manifests by removing it from the boolean-flag parsing loop inparseSettingsOverrideso manifest content can no longer inject the override..gittensory.yml.exampleandconfig/examples/gittensory.full.yml).test/unit/focus-manifest.test.ts) to assert a manifest-suppliedagentGlobalFreezeOverrideis ignored and that the DB value remains authoritative.Testing
npx vitest run test/unit/focus-manifest.test.ts --no-colorand it passed (all tests in that file succeeded).npm run typecheckand it succeeded with no errors.git diff --check,npm run docs:drift-check, andnpm run manifest:drift-checkwhich all succeeded.npm run test:ci) andnpm audit --audit-level=moderatebut these were blocked by unrelated local environment issues (cf-typegen/wrangler drift and npm registry audit returning 403) so the complete CI gate was not completed here.Codex Task