docs(adr): draft 0007 — namespace CRUD prod exposure model (#586)#607
Merged
docs(adr): draft 0007 — namespace CRUD prod exposure model (#586)#607
Conversation
Records the product-position decision for the Web UI Settings → Namespaces tab, currently dev-only via a single JS guard (settings-namespaces.js:179). PR #604 (#582 4.10a) just ungated the NS filter dropdown for prod; the deeper question — "is NS an indexing detail or a user-facing primitive?" — stayed open. Status is "Proposed (deferred pending trigger)" — same shape as ADR-0003/0004 — because prod usage signal is < 1 release cycle old and prod-user voice on whether they want CRUD is missing. Leaning recorded for the five axes the issue enumerated: - A=predefine + auto (both flows coexist; current default unchanged) - B=cosmetic only (color/description PATCH; rename/delete stay dev) - C=empty + first-time CTA (teach the primitive at lookup time) - D=config.json/CLI for rules (GUI rules editor is its own ADR) - E=rename out-of-scope (chunk-migration design is separate beast) Trigger criteria covers prod-user feedback ≥ 2 reports, NS rules in onboarding, and the multi-agent grouping verdict (2026-05-09). Implementation outline split into PR-A (lift JS gate + promote PATCH to prod tier) and PR-B (empty-state CTA). Rename / bulk delete deferred to their own ADRs. Closes nothing — issue stays open until trigger fires. Co-Authored-By: Claude <[email protected]>
4 tasks
Self-review of #607 caught two small inaccuracies: - Router list name in Consequences was `_DEV_ROUTERS`; the actual identifier in web/app.py:80 is `_DEV_ONLY_ROUTERS`. Corrected in-line and added the line citation (web/app.py:63 for `_PROD_ROUTERS`, :80 for `_DEV_ONLY_ROUTERS`) so an implementation PR triggered later can grep for the right name. - Replaced the auto-memory identifier `feedback_default_change_fanout` (which is a maintainer-local index entry, not resolvable for external readers) with the generic phrasing "the project's default-change convention". The ADR is published surface; internal memory keys shouldn't leak into it. Co-Authored-By: Claude <[email protected]>
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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
settings-namespaces.js:179).This is a doc-only PR. No code or test changes. Implementation PRs follow when a trigger fires.
Why deferred, not Accepted
Test plan
000N-kebab-case.mdpattern (next number = 0007 after docs(adr): draft 0006 — web UI folder/upload privacy redaction (#585) #606's 0006).path:linereferences in the ADR were grep-verified against the current source on origin/main (settings-namespaces.js:172/179/59,namespaces.py:17/22/57/76/93,config.py:279/353-355,engine.py:522-549).Issue stays open until a trigger fires; this PR does not close #586.
🤖 Generated with Claude Code