Repository navigation
docs(spec,i18n): stop naming the removed feature_flags settings namespace - #30647
objectstack-fleet[bot] merged 2 commits into
Conversation
…pace
The kernel barrel and PUBLIC_AUTH_FEATURES docblocks now name a plugin's
own settings manifest (env-overridable as OS_{NAMESPACE}_{KEY}) and the
PUBLIC_AUTH_FEATURES registry; the SettingsManifestSchema example drops
feature_flags; console.settingsHub.subtitle drops "feature flags" in all
ten packs, pinned in the console copy test.
Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6bhgVugtCCwBs98FeR27P
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6bhgVugtCCwBs98FeR27P
📓 Docs Drift Check
What this run could not see
Coarse fallback — 170 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
|
domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P Contract reviewServed-tier: Independent reviewer, read-only: the net diff ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgmentEvery sentence of the new text, read against the live tree at
Findings in Out of scope, noted for a carrier: (1) ADR-0007 L326–L336 env-override table lacks the Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P 维护者速读
席位核对ACCEPT · head
Generated by Claude Code |
Requested by Sales · project thread
domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P
Fixes #30282
Clause-②: no
Metadata-protocol: none
维护者速读
feature_flags设置命名空间。OS_FEATURE_FLAGS_*也不生效。ui/packages/i18n/src/locales/en.ts(副标题)、packages/spec/src/kernel/index.ts(注释新说法)、ui/packages/i18n/src/__tests__/console-copy-system-noun-12956.test.ts(新守卫)。cd ui/packages/i18n && pnpm exec vitest run --root ../.. packages/i18n/src/__tests__/console-copy-system-noun-12956.test.ts,预期 21 条全绿。What changes
Spec doc comments (
@objectstack/spec, comments only, no schema/type/export change) — written from the live code:builtinSettingsManifestsin@objectstack/service-settingscarries nofeature_flagsmanifest, andenvKeyOfspells the env overrideOS_+ upper-casednamespace_key.packages/spec/src/kernel/index.ts(feature.zod removal note) FROM "Live toggles are thefeature_flagssettings manifest (ADR-0007, env-overridable via OS_FEATURE_FLAGS_*) and the PUBLIC_AUTH_FEATURES registry (public-auth-features.ts) for auth gates." TO "There is no central feature-flag namespace: a setting a plugin reads is declared on that plugin's own settings manifest (SettingsManifestSchema, ADR-0007, env-overridable via OS_{NAMESPACE}_{KEY}), and the capabilities a deployment advertises to clients are the PUBLIC_AUTH_FEATURES registry (public-auth-features.ts)."packages/spec/src/kernel/public-auth-features.ts(module docblock) FROM "NOT to be confused with runtime rollout toggles — those live on thefeature_flagssettings manifest (ADR-0007), not in the spec (the former …" TO "NOT to be confused with a runtime setting — that is declared on the settings manifest of the plugin that reads it (ADR-0007), not in this registry; there is no central feature-flag namespace (the former …" (rest of the sentence unchanged).packages/spec/src/system/settings-manifest.zod.ts(module docblock) FROM "(e.g.mail,branding,feature_flags)" TO "(e.g.mail,branding,localization)" — all three are registered namespaces.content/docs/references/system/settings-manifest.mdxregenerated bygen:docs(the only artifactcheck:generatedproved stale): frontmatterdescriptionand body line follow the docblock.console.settingsHub.subtitle(@object-ui/i18n), all ten packs; no key added or removed:Pin — a new top-level
describeinui/packages/i18n/src/__tests__/console-copy-system-noun-12956.test.ts(the existing console-copy pin that already enumeratesconsole.settingsHub): every pack inbuiltInLocales(floor 10) has a string subtitle matching none of the ten languages' feature-flag terms, plus a matcher self-check that each term catches the retired wording. The spec docblocks are comments: no pin owed.Changeset —
.changeset/30282-feature-flags-namespace-text.md:patchfor@objectstack/specand@object-ui/i18n(published, not private), with both declaration lines.Verification
All readings at head
f1e4de5bd2, worktreeobjectstack-issue-30282.pnpm --filter @objectstack/spec build→ exit 0;check:generated→ first run namedcontent/docs/references/**stale (plus acheck:test-typecheck"failed without diagnostics" that ran without a heap flag; re-run alone withNODE_OPTIONS=--max-old-space-size=4096→ OK, ledger held);gen:docs→ exit 0; re-runcheck:generated→ exit 0, "All 14 generated artifacts are up to date".pnpm --filter @object-ui/i18n test→ exit 0, Test Files 95 passed, Tests 1460 passed / 13 skipped (all-locales-key-parityincluded).pnpm --filter @object-ui/i18n type-check→ exit 0 (after building the@object-ui/i18n^...closure).node ui/scripts/check-i18n-en-drift.mjs→ exit 0: 1envalue changed, 9 pack values followed.desubtitle restored to the old wording throughscripts/ablation-replace.mjs(anchor 1 → 0, blobfb80a411→b9c43ae3) → the pin went red, 1 failed / 20 passed,de subtitle names no feature flags(matched/feature[\s-]?flags?/iu); restore: blob after = HEAD blobfb80a411,git diff HEADempty.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack→ 104 families, each run with its exit code recorded;--ran→ "104 derived, 104 run, 0 NOT-MEASURED, 0 UNRUN" after the prerequisite re-runs below.pnpm check:doc-authoring→ exit 0. eslint on the three spec files (--no-inline-config) → exit 0; eslint (ui config) on the test and the ten packs → exit 0.Gate families (104) — exit codes
@objectstack/formula,@objectstack/lint,@objectstack/client-react,@objectstack/objectql, full package build) and were re-run after building those closures:check:doc-formula-expressions0,check:doc-security-posture0, speccheck:skill-examples0,check:docs-transcript-drift0,check:lean-entry-closure0,check:dual-build-cjs-loads0.pnpm --dir ui exec vitest run scripts/→ exit 1 in this worktree: 2 failures, both inscripts/__tests__/date-only-zone-pins-10183.test.ts(the forkedFormulaFunctions.dateOnlyZone-10866control case answers11:00for03:00). Not this diff: the diff touches neitherpackages/formulanorui/packages/core, and a control worktree at baseaad1603cc2with only@objectstack/formulabuilt passes the same file 29/29, both without and with this branch's patch applied. The red follows this worktree's extra builtui/dists, not the source change. CI's run of this family is the verdict.Acceptance notes
PUBLIC_AUTH_FEATURESfor deployment-advertised capabilities). Acceptance 2: the subtitle drops feature flags in all ten packs. Acceptance 3: PR fix(service-settings)!: remove the Feature Flags page whose four toggles changed nothing #30272 merged 2026-11-05T05:47Z.origin/mainaad1603cand was where the card said; none had moved or been fixed.zh.ts/pt.ts, adds a generatedzh-Hant.ts) had not merged at push time, so the subtitle is edited in today's file shapes; whichever lands second carries the new subtitle onto the other's shape. The pin enumeratesbuiltInLocales, so azh-Hantpack that copies the old Chinese wording is caught.packages/spec/src/kernel/customization-package.test.tsandpackages/spec/src/system/settings-banner-translation.test.tsusefeature_flagsonly as an arbitrary identifier in test fixtures;packages/spec/CHANGELOG.mdentries namingOS_FEATURE_FLAGS_*are release-owned history;skills/**is skills(objectstack-platform): plugin-development.md still lists afeature_flagssettings manifest withai_enabled/OS_FEATURE_FLAGS_*; PR #30272 removes that namespace #30275's.🤖 Generated with Claude Code
https://claude.ai/code/session_01L6bhgVugtCCwBs98FeR27P