alunduil / alunduil/projects-v2-sync
Spec supports item-state-derived (computed) status out-mappings
- 主要语言
- TypeScript
- 星标
- 0
- 派生
- 0
- 平均合并
- 53 分钟
- 30 天内合并 PR
- 1
描述
## Summary
Grow the declarative spec format so an item's single-select status can
be *derived from its state* — milestone version ordering, open-blocker
count, PR actionability — rather than a fixed per-type constant.
## Motivation
The reconciler (#3) stamps a fixed status option per item type (issue
vs PR). Some boards need the status computed from the item: an
unblocked issue in its repo's next milestone is pickable, one scheduled
three releases out or sitting behind an open blocker is parked. That
distinction can't be expressed as a constant.
Two config-layer consumers already exist in the board-config repo, both
blocked on this capability:
- alunduil/alunduil-infrastructure#133 — issues sort `Ready` vs
`Backlog` by next-milestone (version-parsed) + open `blockedBy`.
- alunduil/alunduil-infrastructure#187 — PRs sort `Review` vs `Blocked`
by actionability. #2 already flags this as "a future out-mapping the
format should grow into."
## Scope
- Extend the out-mapping in the spec (#2) so a single-select field's
option can be selected by a rule over item state, not just a constant
keyed on item type.
- Rule inputs the reconciler must expose: item milestone (+ the repo's
open milestones for "next" resolution), open-blocker count
(`blockedBy` / `issueDependenciesSummary`), item type.
- A version parser for milestone ordering: optional `v` prefix,
3-component semver, 4-component PVP, trailing ` — suffix` stripped;
pre-release and non-version titles excluded from ordering. "Next" is
the lowest version-parseable open milestone.
- JSON Schema covers the computed out-mapping; still carries no
field/option IDs (resolved by name at runtime, per #2/#3).
- Keep fixed per-type mappings working — computed is additive.
## Acceptance criteria
- [ ] Spec can express a single-select option chosen by a rule over
item state; documented in the schema.
- [ ] Reconciler exposes milestone, repo open-milestone set, and
open-blocker count to the rule.
- [ ] Version parser tests cover `4.2.0`, `1.0.0.2`, `v0.4.0`,
`0.4.0.1 — Trunk & Green CI`, `1.0.0-beta`, `Ready for Use`;
out-of-creation-order milestones pick the lowest version.
- [ ] Fixed per-type mappings still validate and apply.
- [ ] Clean re-run stays a strict no-op (idempotence preserved).
## Additional context
- Depends on #2 (spec shape) and #3 (reconciler).
- Config consumers: alunduil/alunduil-infrastructure#133 and #187.
贡献指南
这个仓库没有索引到贡献指南
调研方向
Start by reading the spec work in #2 and the reconciler work in #3, since this issue depends on both. Look for the JSON Schema for out-mappings, the reconciler's item-state inputs, and existing tests around fixed per-type mappings. Done means computed single-select status rules are expressible and tested, version milestone ordering matches the listed cases, fixed mappings still work, and reruns remain no-ops.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- github, github-actions, typescript
- 领域
- tooling
- Issue 类型
- 功能
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100