fix(allocator): exclude vision/roadmap/umbrella coordination containers (Closes #854) #883
Merged
sysadmin
merged 3 commits from 2026-07-24 22:27:58 -05:00
fix/issue-854-semantic-container-exclusion into master
Labels
Clear labels
allocator
anti-stomp
architecture
bug
chore
codex
concurrency
contamination
control-plane
dashboard
database
design
documentation
enhancement
gitea
glitchtip
important
incident
incident-bridge
integration
jenkins
labels
leases
mcp
mcp-health
mcp-menu
multi-project
mutating
nice-to-have
observability
portability
preflight
protected-branch
queue
read-only
reconnect
recovery
refactor
release
reliability
resumable-review
reviewer
roadmap
safety
security
self-hosted
sentry
stale-runtime
status:blocked
status:in-progress
status:pr-open
status:ready
terminal-lock
testing
tracker
type:bug
type:feature
type:feature
type:guardrail
visibility
workflow
workflow-hardening
workflow-hardening
Controller-owned work allocator
Prevent concurrent LLM session stomping
Architecture / structural design
OpenAI Codex client / workflow session surface
Concurrent session safety
Workflow or session contamination incident
MCP control-plane coordination and allocation authority
MCP operational dashboard/queue view
Internal coordination storage (SQLite/Postgres)
Design / investigation, no implementation
Docs / runbooks
New feature or improvement
Gitea MCP workflow
GlitchTip integration
Operational or process incident requiring durable audit trail
Sentry-to-Gitea incident bridging
Integration testing
Jenkins integration
Label taxonomy management
Lease adopt/release/expire lifecycle
MCP server / tooling
MCP namespace and runtime health
MCP menu surface
Work spanning multiple monitoring projects or Gitea repos
Mutating action; requires gating
Observability, metrics, traces, error reporting
Cross-platform / portability
Shared preflight gates before mutation
Protected branch / stable-branch policy concern
Work queue visibility and allocation
Read-only, no mutation
MCP client reconnect/reload recovery path
Recovery paths for stale/foreign leases
Code refactor / restructure
Release / versioning
Reliability / failure handling
Persist and resume prepared review verdicts across sessions
Reviewer workflow tooling
Roadmap / umbrella issue
Safety rails and fail-closed mutation guards
Security / trust boundary
Self-hosted infrastructure integration
Sentry error monitoring integration
Stale backend daemon / runtime-vs-master parity failures
Issue is blocked
Issue is being worked on
Issue has an open pull request
Issue is ready for work
Terminal review lock (#332) path
Tests / test coverage
Issue tracker hygiene / meta
Bug or defect
Feature or enhancement
Feature or enhancement
Safety gate or guardrail
Workflow state visibility for LLMs/operators
Cross-tool workflow
LLM workflow coordination hardening
LLM workflow coordination hardening
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Scaled-Tech-Consulting/Gitea-Tools#883
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Fixes the live allocator regression where
gitea_allocate_next_workstill selected non-implementable coordination containers after #844:Changes
allocator_service.pyfor vision/roadmap/umbrella scope evidence.Epic:,Roadmap:,Product vision:,Umbrella:) only corroborate when body/label evidence is present; title alone never excludes.tests/test_issue_854_semantic_container_exclusion.pycovering #631/#652/#653/#655-shaped inventory.Test plan
pytest tests/test_issue_854_semantic_container_exclusion.py tests/test_allocator_epic_container_exclusion.py -q→ 23 passedCloses #854
Predecessor: #844
Pre-rank infrastructure: #776
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #883
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 58244-81762e5b6332
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr883-854-container
phase: claimed
candidate_head:
0a78da39e5target_branch: master
target_branch_sha:
870843f999last_activity: 2026-07-24T21:28:13Z
expires_at: 2026-07-24T21:38:13Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #883
issue: none
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 58244-81762e5b6332
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr883-854-container
phase: claimed
candidate_head:
0a78da39e5target_branch: master
target_branch_sha:
870843f999last_activity: 2026-07-24T21:30:41Z
expires_at: 2026-07-24T21:40:41Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #883
issue: #854
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 81690-c44c62139020
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr883-formal-20260724-185037
phase: claimed
candidate_head:
0a78da39e5target_branch: master
target_branch_sha:
870843f999last_activity: 2026-07-24T22:50:46Z
expires_at: 2026-07-24T23:00:46Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #883
issue: #854
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 81690-c44c62139020
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr883-formal-20260724-185037
phase: pre_review_mutation
candidate_head:
0a78da39e5target_branch: master
target_branch_sha:
870843f999last_activity: 2026-07-24T22:50:53Z
expires_at: 2026-07-24T23:00:53Z
blocker: none
Formal review — PR #883 (Closes #854)
Verdict: APPROVE at head
0a78da39e578e5a05b5dc2fbd4b6eab8aa13511a.Findings
allocator_service.py,tests/test_issue_854_semantic_container_exclusion.pyonly.Closes #854present.Validation
venv/bin/pytest tests/test_issue_854_semantic_container_exclusion.py tests/test_allocator_epic_container_exclusion.py -q→ 23 passed, 8 subtests (exit 0)Review Metadata:
Canonical PR State
STATE: ready-to-merge
WHO_IS_NEXT: merger
NEXT_ACTION: Merge PR #883 at approved head after merger preflight confirms approval_at_current_head
NEXT_PROMPT:
WHAT_HAPPENED: Formal reviewer approval after worktree validation and diff review of allocator semantic container exclusion.
WHY: Scope matches #854 acceptance; markers/labels/title rules correct; tests pass; no blockers.
ISSUE: #854
HEAD_SHA:
0a78da39e5REVIEW_STATUS: approved / approval_at_current_head
MERGE_READY: true
BLOCKERS: none
VALIDATION: 23 passed, 8 subtests on unmodified head
0a78da39e5NATIVE_REVIEW_PROOF: transport=native_mcp; entrypoint=mcp_server; token_fingerprint=f02814ed834dda2e
LAST_UPDATED_BY: sysadmin (prgs-reviewer)
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #883
issue: #854
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 49253-04cd5f9f8d14
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr883
phase: claimed
candidate_head:
3b68d15593target_branch: master
target_branch_sha:
a4c73766f4last_activity: 2026-07-25T03:06:30Z
expires_at: 2026-07-25T03:16:30Z
blocker: none
Review: PR #883 — allocator semantic container exclusion (Closes #854)
Verdict: APPROVE at head
3b68d1559388b5dcdc4f17b5615886202f617821, basemaster@a4c73766f4b0cc32f7c3808688eceeb6fee74335.Fresh independent review at the current live head. Review
579(approve at0a78da39e578e5a05b5dc2fbd4b6eab8aa13511a) is stale and was not relied on. Note the head moved twice since that approval and once past the head named in my review task:0a78da39…→b2e28428…→3b68d1559388b5dcdc4f17b5615886202f617821.Moved-head delta: does it change any earlier conclusion?
No. Both commits since the approved head are pure master integrations:
git diff a4c73766...3b68d155— the effective contribution against current master — is unchanged in shape and scope:commits_behind: 0,mergeable: true,has_conflicts: false. No PR-owned file changed between0a78da39…and this head, so every earlier conclusion carries forward; I re-established them below at this head anyway.Live-body revalidation (#652, #653, #655)
I ran the actual
classify_epic_or_child_only_containerat this head against verbatim excerpts of the live bodies and label sets, plus controls:title_vision_prefix; body_marker='do not implement features on this issue'title_roadmap_prefix; body_marker='implementing features on this roadmap issue'title_umbrella_prefix; body_marker='implementation is via linked children only'title_epic_prefix; body_marker='implementation is delivered via child issues only'0 failures. Each live container matches on a contiguous authoritative phrase, and each returns a structured skip reason rather than a bare boolean.
Acceptance criteria — all eight verified
test_652_vision_is_container,test_653_roadmap_is_container,test_655_umbrella_is_container, plus my live-body run above.test_631_still_container_after_854proves the #844 behavior is preserved.test_child_referencing_parent_policy_stays_eligible,test_apply_selects_child_not_container; my #640-shaped control stays eligible even though it links to both #652 and #653.test_incidental_vision_roadmap_umbrella_words_not_container,test_title_prefix_alone_not_container,test_incidental_mentions_remain_eligible; confirmed independently.detailreturnslabel=…/body_marker=…with the title prefix as a corroborating prefix token, as shown in the table.test_containers_cannot_receive_assignment_or_lease.test_live_equivalent_canary_excludes_all_containers_selects_child, which also asserts a real child is selected from the same inventory.test_fingerprint_stable_with_containers_present.Design point worth crediting: title prefixes never exclude on their own.
_title_container_prefixonly contributes a corroborating token, and exclusion still requires a label or a body marker — which is exactly what AC4 demands and what keepsRoadmap: tighten allocator rankingeligible.Validation
Executed from a read-only export pinned to
3b68d1559388b5dcdc4f17b5615886202f617821; no worktree was modified.pytest tests/test_issue_854_semantic_container_exclusion.py tests/test_allocator_epic_container_exclusion.py -q→ 23 passed, 8 subtests, exit 0.tests/*alloc*modules) at this head → 135 passed.a4c73766f4b0cc32f7c3808688eceeb6fee74335→ 135 passed. Identical set, identical result: zero introduced regressions.Author-safety:
sysadmin!=jcwalker3. Closing keywordCloses #854present. Scope is limited toallocator_service.pyand the new canary test — no unrelated refactoring.Non-blocking observations (carried forward; severity unchanged by this delta)
These are recorded for follow-up and are not merge blockers.
dashboard/documentation/mcp-health/status:ready/type:feature/workflow-hardening(#652),dashboard/documentation/queue/status:ready/type:feature/workflow-hardening(#653), andanti-stomp/mcp-health/safety/stale-runtime/status:ready/type:guardrail/workflow-hardening(#655). Exclusion therefore rests entirely on body phrases. An editorial rewording of any of those bodies would silently restore the original regression. Adding a structured container label (ortype:tracker-style marker) to the three records would make this robust; that is an issue-data change, not a code change, so it does not block this PR._EPIC_LABELSnow contains barevision,roadmap, andumbrella, andtest_roadmap_label_alone_is_containermakes that an intentional, tested rule. Live issue #820 already carries aroadmaplabel; it is a tracker, so exclusion is correct there, but an ordinary implementable issue given one of these bare labels would be skipped with no body evidence.this issue is the enduring source of truthandenduring source of truth for theare broad enough to match an ordinary issue that merely declares itself authoritative for some narrow topic. Narrowing these to the vision-specific phrasing would reduce that surface.Canonical PR State
STATE:
approved
WHO_IS_NEXT:
merger
NEXT_ACTION:
Acquire the merger lease and merge PR #883 at head
3b68d15593after merger preflight re-confirms approval_at_current_head and a live mergeable check.NEXT_PROMPT:
WHAT_HAPPENED:
Reviewer performed a fresh independent review of PR #883 at live head
3b68d15593, confirmed the delta since the previously approved head is master integration only, revalidated container classification against the live bodies and label sets of #652/#653/#655, verified all eight acceptance criteria, and ran focused and allocator regression suites against a master baseline.WHY:
The semantic container exclusion correctly classifies vision, roadmap, umbrella, epic, and child-only records from label or body evidence while title prefixes only corroborate, ordinary and incidental-mention issues stay eligible, excluded containers cannot receive assignments or leases, fingerprint behavior is preserved, and no regression was introduced.
ISSUE:
#854
BASE:
master
HEAD:
fix/issue-854-semantic-container-exclusion
HEAD_SHA:
3b68d15593REVIEW_STATUS:
approved
MERGE_READY:
yes
BLOCKERS:
none
SUPERSEDES:
Review 579 (approve at former head
0a78da39e5, stale against this head).SUPERSEDED_BY:
none
VALIDATION:
Focused pytest tests/test_issue_854_semantic_container_exclusion.py tests/test_allocator_epic_container_exclusion.py -> 23 passed, 8 subtests, exit 0. Allocator regression surface at this head -> 135 passed; identical suite at base master
a4c73766f4-> 135 passed, zero introduced regressions. Live-body classifier revalidation against #652/#653/#655 plus #631-shaped and three eligibility controls -> 7/7, 0 failures, each container returning a structured skip reason. git diff a4c73766...3b68d155 limited to allocator_service.py and tests/test_issue_854_semantic_container_exclusion.py. All commands run from a read-only export of the pinned head; no worktree modified.NATIVE_REVIEW_PROOF:
transport=native_mcp; entrypoint=mcp_server; pid=49253
LAST_UPDATED_BY:
sysadmin / prgs-reviewer / 2026-07-25
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #883
issue: #854
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 49253-04cd5f9f8d14
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/review-pr883
phase: released
candidate_head:
3b68d15593target_branch: master
target_branch_sha:
a4c73766f4last_activity: 2026-07-25T03:08:07Z
expires_at: 2026-07-25T03:18:07Z
blocker: manual-release
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #883
issue: #854
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 16119-e4ae4671398f
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/mergesim-883
phase: claimed
candidate_head:
3b68d15593target_branch: master
target_branch_sha:
a4c73766f4last_activity: 2026-07-25T03:27:28Z
expires_at: 2026-07-25T03:37:28Z
blocker: none
Stale #332 review-decision lock cleanup (#594)
Status: APPLIED
sysadminprgs-merger2026-07-25T03:28:00.738786+00:00approveon PR fix(allocator): exclude vision/roadmap/umbrella coordination containers (Closes #854) (#883)closed(merged=True)7af40fb5ff7debd5e9165fe97d9c7c279358e1752prgs-reviewerManual deletion of session-state files is not the workflow.
This path only clears a lock when the referenced PR is merged/closed.