Breadboard automatic cycle delegation based on repo #87

Closed
opened 2026-10-13 19:29:00 +08:00 by Breadway · 3 comments
Owner

Add the ability to automatically add any new issues under a list of projects selected during cycle creation (and configurable after) to that cycle

Add the ability to automatically add any new issues under a list of projects selected during cycle creation (and configurable after) to that cycle
Author
Owner

Independent BB-100 review: CHANGES REQUESTED
Reviewed exact head 49f72305ba against base 5ff90e8cc2. All 14 changed files and complete 991-line diff reviewed in isolated ~/.worktrees/breadboard/fix/review-bb100-49f7230. Actual card #87 says any new issues under selected projects; interpretation includes newly created Forgejo-origin issues, not retroactive movement of historical imports.

Required repair checklist:

  • R1 high, Settings.svelte:290-292: existing-cycle selector converts project_ids to strings while Svelte option values are numeric. Real built-SPA Chromium test: API [2] displays selectedOptions []; saving [2,3] reloads as []; choosing Beta from this visually empty selector persists [3], silently dropping Alpha. Keep option and selected value types consistent. Also fix rejected-save rollback: injected 400 leaves visible selection [2] while persisted selection remains [3]. Add browser tests for initial/reloaded display, additive editing, clear and rejected PATCH. Filed BB-106 (#93).
  • R2 medium, store.rs:1107-1175 import_issue versus757-777 create_issue: newly opened Forgejo-origin issues bypass inheritance. Reproduced with enabled mapped Local/review project, sole open cycle selecting Alpha, signed issues/opened webhook with current timestamps: new external card cycle_id null, expected1. Cover webhook and reconcile for genuinely new external issues, define historical-import eligibility so old cards do not get reassigned, keep PR treatment explicit, and test conflict behavior. Filed BB-107 (#94). Repair on this existing PR.

Criterion mapping:
PASS API/database cycle selection at creation and replacement: migrations/0007_cycle_projects.sql; store.rs:435-557. Independent HTTP tests verified two projects, duplicate-id normalization, invalid create rollback, invalid patch rollback, missing-cycle404, unauthenticated PATCH401.
PASS normal create and Markdown import inheritance: store.rs:757-777, import.rs shared create_issue. Independent HTTP create by project key/id and checked/unchecked imports inherited the sole open cycle.
PASS explicit override and clear conflict: HTTP409 includes multiple-open-cycles diagnostic and rolls back number allocation; explicit cycle wins; closed cycles ignored. Open means closed=false, regardless of calendar dates.
PASS existing cards unchanged by selection edits: independent old unassigned, inherited, explicit and imported cards retained cycle_id after clearing defaults.
FAIL safe frontend editing: R1. Frontend creation did correctly persist selected numeric project ids.
FAIL any new issue across repository-origin creation: R2. Markdown import passes; Forgejo-origin new import fails.
PASS TS/MCP surfaces: api-client build, MCP build; actual stdio MCP tool discovery, create_cycle project_ids, update_cycle_projects by name and id, clear and end passed against local real API. Rust client update wrapper compiles in locked workspace tests/clippy, though no independent Rust HTTP wrapper test was added.

Independent checks: cargo test -p breadboard-server --locked --test api (4/4); cargo test --workspace --locked; cargo clippy --workspace --all-targets --locked -- -D warnings; cargo run -p xtask --locked -- check-docs; bash scripts/test-publish-bakery-stage.sh all pass locally. Clean npm ci, npm run build -w @breadboard/api-client, npm run check -w breadboard-web (0 errors/warnings), npm run build all pass. Initial web check before building api-client failed due to missing generated declarations, corrected by documented CI order, not a feature defect. Headless Chromium used only local scratch server, no live desktop/deployment. Evidence /tmp/opencode/bb100-independent2.log and worktree review-evidence/{ui.json,settings.png,server.log}; scripts /tmp/opencode/bb100-{independent.py,ui.mjs,mcp.mjs}.

Separate CI blocker, not a waiver: exact-head check / check (push) is FAILURE, run70. Local passing tests do not replace this. Coordinator reports shared shutdown.rs startup failure with PR88/89, prerequisite PR91 under repair. I verified failing exact-head status, but per-job/log API endpoints returned404 so detailed runner cause is not independently established here. Required check.yml includes clippy, test, docs, publisher, web. No branch protection entries; existing formal reviews empty. Integrate accepted prerequisite/current main, rerun all CI and request fresh review at resulting head. No merge or done.

npm audit reproduced eight advisories (1low/3moderate/3high/1critical), unchanged dependency lockfile. Deduplicated board and filed separate BB-108 (#95) for reachability/advisory triage, not a request for unrelated dependency churn here. Exploitability unverified.

Next: repair R1/R2 on PR90; BB-100 returns to todo; preserve branch and PR. Fresh exact-head review plus all green checks required before authorized merge. Coordinator session ses_ecaf08f38ffetTxrDPV5Z8cbkV. No implementation changes made by review. Markdown-import Forgejo writeback gap remains existing BB-96, not duplicated. History and current card body preserved. Models/session attribution not added. No merge authorization exercised. Progress is not completion. Preserved scratch evidence for rework. Version/release changes not performed. Primary checkout unchanged. Outstanding review state empty at read time, re-read again before any eventual merge. No approval is granted by this comment.

Independent BB-100 review: CHANGES REQUESTED Reviewed exact head 49f72305ba04e0694e472a03fc80949252921a59 against base 5ff90e8cc21b09fff09fd27b147e6f800d042a0e. All 14 changed files and complete 991-line diff reviewed in isolated ~/.worktrees/breadboard/fix/review-bb100-49f7230. Actual card #87 says any new issues under selected projects; interpretation includes newly created Forgejo-origin issues, not retroactive movement of historical imports. Required repair checklist: - [ ] R1 high, Settings.svelte:290-292: existing-cycle selector converts project_ids to strings while Svelte option values are numeric. Real built-SPA Chromium test: API [2] displays selectedOptions []; saving [2,3] reloads as []; choosing Beta from this visually empty selector persists [3], silently dropping Alpha. Keep option and selected value types consistent. Also fix rejected-save rollback: injected 400 leaves visible selection [2] while persisted selection remains [3]. Add browser tests for initial/reloaded display, additive editing, clear and rejected PATCH. Filed BB-106 (#93). - [ ] R2 medium, store.rs:1107-1175 import_issue versus757-777 create_issue: newly opened Forgejo-origin issues bypass inheritance. Reproduced with enabled mapped Local/review project, sole open cycle selecting Alpha, signed issues/opened webhook with current timestamps: new external card cycle_id null, expected1. Cover webhook and reconcile for genuinely new external issues, define historical-import eligibility so old cards do not get reassigned, keep PR treatment explicit, and test conflict behavior. Filed BB-107 (#94). Repair on this existing PR. Criterion mapping: PASS API/database cycle selection at creation and replacement: migrations/0007_cycle_projects.sql; store.rs:435-557. Independent HTTP tests verified two projects, duplicate-id normalization, invalid create rollback, invalid patch rollback, missing-cycle404, unauthenticated PATCH401. PASS normal create and Markdown import inheritance: store.rs:757-777, import.rs shared create_issue. Independent HTTP create by project key/id and checked/unchecked imports inherited the sole open cycle. PASS explicit override and clear conflict: HTTP409 includes multiple-open-cycles diagnostic and rolls back number allocation; explicit cycle wins; closed cycles ignored. Open means closed=false, regardless of calendar dates. PASS existing cards unchanged by selection edits: independent old unassigned, inherited, explicit and imported cards retained cycle_id after clearing defaults. FAIL safe frontend editing: R1. Frontend creation did correctly persist selected numeric project ids. FAIL any new issue across repository-origin creation: R2. Markdown import passes; Forgejo-origin new import fails. PASS TS/MCP surfaces: api-client build, MCP build; actual stdio MCP tool discovery, create_cycle project_ids, update_cycle_projects by name and id, clear and end passed against local real API. Rust client update wrapper compiles in locked workspace tests/clippy, though no independent Rust HTTP wrapper test was added. Independent checks: cargo test -p breadboard-server --locked --test api (4/4); cargo test --workspace --locked; cargo clippy --workspace --all-targets --locked -- -D warnings; cargo run -p xtask --locked -- check-docs; bash scripts/test-publish-bakery-stage.sh all pass locally. Clean npm ci, npm run build -w @breadboard/api-client, npm run check -w breadboard-web (0 errors/warnings), npm run build all pass. Initial web check before building api-client failed due to missing generated declarations, corrected by documented CI order, not a feature defect. Headless Chromium used only local scratch server, no live desktop/deployment. Evidence /tmp/opencode/bb100-independent2.log and worktree review-evidence/{ui.json,settings.png,server.log}; scripts /tmp/opencode/bb100-{independent.py,ui.mjs,mcp.mjs}. Separate CI blocker, not a waiver: exact-head check / check (push) is FAILURE, run70. Local passing tests do not replace this. Coordinator reports shared shutdown.rs startup failure with PR88/89, prerequisite PR91 under repair. I verified failing exact-head status, but per-job/log API endpoints returned404 so detailed runner cause is not independently established here. Required check.yml includes clippy, test, docs, publisher, web. No branch protection entries; existing formal reviews empty. Integrate accepted prerequisite/current main, rerun all CI and request fresh review at resulting head. No merge or done. npm audit reproduced eight advisories (1low/3moderate/3high/1critical), unchanged dependency lockfile. Deduplicated board and filed separate BB-108 (#95) for reachability/advisory triage, not a request for unrelated dependency churn here. Exploitability unverified. Next: repair R1/R2 on PR90; BB-100 returns to todo; preserve branch and PR. Fresh exact-head review plus all green checks required before authorized merge. Coordinator session ses_ecaf08f38ffetTxrDPV5Z8cbkV. No implementation changes made by review. Markdown-import Forgejo writeback gap remains existing BB-96, not duplicated. History and current card body preserved. Models/session attribution not added. No merge authorization exercised. Progress is not completion. Preserved scratch evidence for rework. Version/release changes not performed. Primary checkout unchanged. Outstanding review state empty at read time, re-read again before any eventual merge. No approval is granted by this comment.
Author
Owner

BB-100 review verdict: pass, merged. PR90 head ecdc070e5b reviewed exactly and merged as f02d977b1b. New issues under selected projects inherit the cycle default (unique open match; ambiguous returns 409 locally; explicit cycle_id wins; existing issues never moved). Full evidence in PR90 issuecomment-5083 and integration note issuecomment-5095. Leaving status for coordinator verification; not marking done.

BB-100 review verdict: pass, merged. PR90 head ecdc070e5b1f88b51893b19849b920eaa920d035 reviewed exactly and merged as f02d977b1b3e3502b1c97bac5071944330b38edb. New issues under selected projects inherit the cycle default (unique open match; ambiguous returns 409 locally; explicit cycle_id wins; existing issues never moved). Full evidence in PR90 issuecomment-5083 and integration note issuecomment-5095. Leaving status for coordinator verification; not marking done.
Author
Owner

Verified on integrated main f02d977 (merge of PR90, parents 4fe391a+ecdc070): cycle API 3/3, sync 12/12, shutdown 8/8 pass on the merge tree in a clean detached worktree.

Verified on integrated main f02d977 (merge of PR90, parents 4fe391a+ecdc070): cycle API 3/3, sync 12/12, shutdown 8/8 pass on the merge tree in a clean detached worktree.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Breadway/breadboard#87
No description provided.