Replies: 3 comments
-
|
I do like this plan, what maybe we could add to this, is also a short track route? Since if we do this for everything, we might be close to the dead by policy rule. I do think, a lot of PRs can be merged (not as quickly as before, but quicker than this plan mentions), think of small bug fixes, non-related auth or other strict scopes or domains, or very simple UI fixes. I think for these, it would be overkill to perform these in this policy. We should still have a small review, is this really a small bugfix, and does this not touch an important domain, and is not an issue for other ongoing PRs, and if yes, it can go with the fast-track. |
Beta Was this translation helpful? Give feedback.
-
|
Yeah, I agree with this framing. I do not want this to become a rigid process that every PR has to pass through. The bucket structure makes the most sense for work that needs organization: broad areas, overlapping proposals, deferred/non-milestone goals, roadmap-ish work, unclear issue ownership, or places where multiple PRs may be candidate implementations of the same problem. For narrow fixes, Stabilization milestone items, and clearly scoped PRs tied to clearly scoped issues, the reviewer should be able to review directly. If the issue is already narrow and the PR is narrow, there may be nothing useful to categorize. The hierarchy should help when ownership is unclear, not create a required ceremony before review can happen. Longer term, once the bigger buckets exist, I think we can also experiment with advisory automation: suggest likely parent buckets, duplicates, related issues, or cleanup routes. But I would keep that as correction-friendly organization, not a hard rule. Maintainers should be able to override it, and the structure should emerge from real issue patterns rather than being designed perfectly up front. So I think the actionable question is less "can some things be fast-tracked?" and more "which kinds of work benefit from the organizational layer, and which kinds should stay direct?" My answer would be: use the layer for ambiguous, broad, deferred, or overlapping work; keep narrow fixes and active stabilization work direct unless classification actually helps. |
Beta Was this translation helpful? Give feedback.
-
|
Great! This would indeed be a quite solid and stable plan. Related to your open questions, are just how we want to organize it. I think an system with structured and tracker labeled parent issues, with a more free and open sub issues, would prefer this. With possible discussions pinned would be my way to go, but i can see this go either way. Also for the bucketing, would it be worth looking into what kind of issues/PRs open and closed are already out there? We could run a quick script, to analyze all tickets, which domains they touch/ed, and what kind of bucket this would fall into. This would not give us the definitive ones, but maybe a good starting point for some possible buckets. Other way would just be creating them as we go. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Issue buckets: parent trackers, child issues, and PR candidates
I think we need one more lightweight coordination rule: make issue hierarchy the owner of the problem, and make PRs candidate implementations of that problem.
Right now a lot of attention lands on "which PR should merge?" When volume is high, that makes it hard to see whether the underlying issue is real, duplicated, partially solved, superseded, or part of a bigger area.
I think we should turn that around:
The issue can be worth keeping even if the current PR is not good enough. A PR can be useful but still only solve part of the issue. Multiple PRs can exist for one issue, but the issue should stay the owner of the problem and acceptance criteria.
flowchart TD D["Coordination Discussion<br/>priorities + process"] B["Parent Tracker<br/>Stabilization + Review Scalability"] A["Tracker Bucket<br/>Auth + Owner Boundaries<br/>#4200"] S["Tracker Bucket<br/>Storage + Persistence<br/>#4377"] A1["Issue Slice<br/>Owner contract<br/>#4201"] A2["Issue Slice<br/>Chat/tool writes<br/>#4202"] S1["Issue Slice<br/>Source-of-truth map"] S2["Issue Slice<br/>Scheduled email store"] PA1["PR<br/>resolver + tests"] PA3["PR<br/>write migration"] PS1["PR<br/>storage audit"] PS2["PR<br/>email cleanup"] D --> B B --> A B --> S A --> A1 A --> A2 S --> S1 S --> S2 A1 --> PA1 A2 --> PA3 S1 --> PS1 S2 --> PS2This graph is intentionally simplified to show the base hierarchy: parent tracker -> sub-tracker buckets -> issue slices -> PRs. Real areas can have more or fewer tracker layers depending on need. The important rule is that each issue has one main owner bucket, and the smallest actionable issue slice owns the acceptance criteria. A PR can be linked, partial, superseded, or accepted without changing the value of the issue itself.
Where this should not apply
This should not become a required gate for every PR.
The organizational layer makes the most sense for broad, ambiguous, overlapping, deferred, non-milestone, or roadmap-ish work: places where ownership is unclear, several PRs may be candidate implementations, or maintainers need a durable problem bucket before deciding what should merge.
It should not block narrow fixes, active Stabilization milestone items, or clearly scoped issues/PRs where the owner area and acceptance criteria are already obvious. If the issue is narrow and the PR is narrow, the reviewer should be able to review directly. Categorization only helps when it reveals overlap, missing issue shape, risky scope, or a better parent bucket.
Mental model
Related, dependencies, labels, or project fields.This keeps ownership clear. One issue belongs in one main bucket. If it touches auth and storage, pick the bigger owner area and link the other area as related instead of trying to make both own it.
Examples
#4200 is a good tracker shape. It owns the Default/Local owner-profile problem. #4201, #4202, #4203, and #4204 are smaller slices. #4195 is related current-behavior work, but it is not the same thing as completing #4200.
#4377 is another good shape. It keeps storage architecture discussion out of one noisy PR thread and turns it into per-domain child issues.
#2523 is a useful existing roadmap tracker example: one parent issue, ordered slices, active slice called out, next available work made explicit.
Proposed workflow
For top-down work:
For bottom-up work:
Concrete implementation path
The first practical maintainer task is not to design every bucket up front. It is to start classifying existing issues and let the buckets emerge from the real problems already being reported.
A workable pass could look like this:
That means PR inspection starts from the issue being real and well-shaped enough to warrant review. If the issue is a duplicate, overlap, or malformed report, maintainers can handle that at the issue layer first instead of spending review time on every linked PR.
Over time this creates an emergent map of the project from the issues themselves. The categories should be broad, sensible, and curated carefully, but they do not need to be perfect on day one. Build the bucket structure as we go, from the actual issue queue, and let repeated problem shapes show where new tracker buckets are needed.
Later, once maintainers have established enough obvious structure, automation can help pre-classify new issues into likely buckets. A tuned pipeline or CI helper could suggest a parent tracker, related buckets, likely duplicates, or a "needs issue cleanup" route. That should be advisory at first: maintainers curate the structure, and automation reduces sorting work after the shape is already logical.
The same boundary should apply to automation too: it can suggest organization for broad, ambiguous, deferred, or overlapping work, but it should not become an automatic blocker for narrow fixes that are already reviewable.
What this helps with
First practical slices
Related context
Open questions
trackerlabel, issue type, or just naming/body convention?Beta Was this translation helpful? Give feedback.
All reactions