Add project defaults to cycles #90
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/bb-100-cycle-project-defaults"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #87
Cycles can select projects whose newly created issues inherit the cycle. Project selections can be edited later without changing historical issues. Explicit cycle assignments win; multiple matching open cycles return a conflict requiring explicit assignment. Includes migration, API/client/MCP surfaces, Settings UI, docs, and behavior tests.
Independent BB-100 review: CHANGES REQUESTED
Reviewed exact head
49f72305baagainst base5ff90e8cc2. 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:
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 re-review: PASS | Reviewed exact head
ecdc070e5bagainst base4fe391a90a(PR91 landed after the repair push; re-evaluated: zero file overlap with PR90, clean merge-tree, no re-review needed on that delta). All 18 changed files and the full 811+/90- diff reviewed in isolated ~/.worktrees/breadboard/fix/muse-rereview-pr90-ecdc070. Primary checkout untouched.Acceptance (card 87: new issues under selected projects join the cycle; no retroactive moves):
49f7230build fails at step 1 with actual [] vs expected [ALPHA], confirming the old defect and the fix.49f7230(None vs Some(1)), confirming old defect and fix. Markdown imports route through create_issue, matching the documented rule.Independent verification at
ecdc070(scratch worktree only):ecdc070) status success, context check / check (push), 2m5s. Per-step logs are not exposed by the available API (jobs endpoints 404; web UI needs session auth), so each check step was re-run locally above instead of taking the combined status on faith. The single job runs clippy, cargo test (includes the shutdown test, not ignored), check-docs, bakery script, and web build.Merge interplay: base moved
5ff90e8to4fe391avia PR91 (shutdown-test hardening only); no shared files, merge-tree clean. PR88 and PR89 heads are both CI-red (blocked on their own repair, not on this PR); merge-tree shows no textual conflicts between PR90 and either branch, so PR90 landing first does not block them. Recommendation: land PR90 first; PR88/PR89 need CI repair plus independent review before landing, in either relative order.BB-108 (npm audit advisories, card 95) is pre-existing, untouched by this PR, and kept separate. No em dashes or attribution in commits or diff.
Integration result: merged true. Merge commit
f02d977b1bon main; reviewed headecdc070e5bis an ancestor of the merge and head did not move between final review read and merge. Review evidence: issuecomment-5083. Residual race note: this Forgejo API version offers no expected-head merge condition; mitigated by the immediate pre-merge re-read (head/base/checks/reviews/mergeability) plus this post-merge confirmation. Post-merge check on main will run automatically (check.yml covers main pushes). Cards stay in review for coordinator verification; not marking done.