Skip to content

chore: set native issue types in the issue forms - #23

Open
stephane-segning wants to merge 1 commit into
mainfrom
chore/issue-template-native-types
Open

chore: set native issue types in the issue forms#23
stephane-segning wants to merge 1 commit into
mainfrom
chore/issue-template-native-types

Conversation

@stephane-segning

@stephane-segning stephane-segning commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds the native GitHub issue type: field (Epic / Story / Task) to
this repo's three issue forms (epic.yml, user-story.yml,
dev-ticket.yml), placed immediately after the existing labels: line.
No body: block, question, or validation was touched.

Intent

Source of truth: the 2026-08-13 cross-repo backlog consolidation,
which had to hand-type the native issue type on every open issue across
the ADORSYS-GIS/vymalo estate precisely because the issue forms never
set one — they only stamped a title prefix ([Epic]:/[Story]:/
[Ticket]:) and a label (epic/user-story/ticket), leaving the
native type field (and therefore the Epic → Story → Task hierarchy
view) empty on every newly-filed ticket. This is part 2 of a 3-part
effort to make that taxonomy self-enforcing at creation time instead of
reapplied by hand after the fact. No standalone tracking issue exists
for the consolidation itself; the related, narrower issue
ai-governance#15
(a verification-evidence Done-gate-at-creation bug in the same forms)
is tracked separately and is not touched by this PR.

Scope

  • .github/ISSUE_TEMPLATE/epic.yml — add type: Epic
  • .github/ISSUE_TEMPLATE/user-story.yml — add type: Story
  • .github/ISSUE_TEMPLATE/dev-ticket.yml — add type: Task
  • Confirmed (unchanged) title:/labels: already match the intended
    convention ([Epic]:/epic, [Story]:/user-story,
    [Ticket]:/ticket) — no edit needed there.
  • Out of scope: any body: field, question wording, or validation rule.

Verification

  • git diff reviewed by hand — each file gets exactly one added line
    (type: <Name>), nothing else changed.
  • Confirmed via gh api graphql that the organization that owns this
    repo's issue-type registry already defines Epic, Story, and Task
    as native issue types, so the values referenced here resolve.
  • Not yet verified live: actually filing a test issue from each form
    post-merge to confirm GitHub renders/assigns the native type (left to
    the reviewer/maintainer, since this PR must not be merged by AI).

Risk Assessment

Low. Purely additive metadata on issue forms; does not change any
existing issue, does not touch CI, does not touch body: validation.
Worst case if a type: value were ever misspelled: GitHub ignores an
unrecognized type value and the form still renders as before (fails
open, not closed).

AI Usage Declaration

  • AI (Claude, Anthropic) proposed and made this change under
    direct maintainer instruction, as part of a scripted multi-repo
    rollout.
  • A human (the repo maintainer, @stephane-segning) reviews this PR
    before merge; it is intentionally left unmerged by the AI.
  • Verification performed: diff reviewed line-by-line before commit;
    target org's issue-type registry queried and confirmed to contain
    the three referenced type names.
  • Live GitHub issue-form render was not exercised in this PR (would
    require filing a real issue) — left for reviewer verification.

Reviewer Focus

  • Confirm the three type: values actually take effect when filing a
    new issue from each form (Epic/Story/Task selectable/assigned
    correctly).
  • Confirm no other repo automation (e.g. project-board workflows) keys
    off the absence of a native type in a way this change could disrupt.

Source of truth: ADORSYS-GIS/ai-helm#1002 — the tracking epic for the 2026-08-13 cross-repo backlog consolidation this change came out of.

The forms already stamp a title prefix and a label, but not the native
GitHub issue type, so every newly-filed ticket landed untyped and the
Epic/Story hierarchy decayed one issue at a time.

Adds `type: Epic|Story|Task` so the taxonomy is enforced at creation
rather than reapplied by hand afterwards.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Aug 13, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 236d055

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@lightbridge-assistant lightbridge-assistant Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🅵 Fast automated pass — SAST + a quick, diff-scoped look (no repo-wide retrieval). For a deeper, repo-aware review, mention @lightbridge-assistant on this PR.

Re-verified the P1 finding after an active search for disconfirming evidence: GitHub's "Common validation errors when creating issue forms" doc confirms unexpected top-level keys cause a form validation error ("can be fixed by removing the unexpected keys"), and the issue-form syntax doc still lists only name/description/title/labels/assignees/projects/body as valid top-level keys — no type. So the added type: Task|Epic|Story key in each of the three templates is invalid and makes them unusable. All three P1 findings stand.


🤖 AI-generated review — treat it as untrusted, verify before acting; a human owns the final decision (AI governance).

description: Implementation work, bugs, refactors, technical tasks, spikes, or operational work.
title: "[Ticket]: "
labels: ["ticket"]
type: Task

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 correctness

Invalid top-level type key breaks form

type is not a legal top-level key in a GitHub issue form. The schema for issue forms supports only name, description, title, labels, assignees, projects, and body (docs.github.com "Syntax for issue forms"). An unrecognized top-level key fails the form's YAML validation, so when a contributor opens this template GitHub refuses to load it (form configuration error), rendering the template — and this change's goal — unusable. Consider a legitimate mechanism such as the issue-types feature (repo/org-level) or a label, or verifying behavior in an actual repo before merging.

Evidence: Added line type: Task between labels: ["ticket"] and body:; GitHub issue-form schema documents no type top-level key.

Was this useful? React 👍/👎 to give us feedback

description: A large initiative spanning multiple stories with a meaningful business or technical objective.
title: "[Epic]: "
labels: ["epic"]
type: Epic

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 correctness

Invalid top-level type key breaks form

type is not a legal top-level key in a GitHub issue form (valid keys are name, description, title, labels, assignees, projects, body). Unknown top-level keys fail the form's YAML validation, so opening this template produces a form-configuration error and the template becomes unusable. Same defect as in dev-ticket.yml and user-story.yml.

Evidence: Added line type: Epic between labels: ["epic"] and body:; not in the documented issue-form top-level key set.

Was this useful? React 👍/👎 to give us feedback

description: A user need or a valuable capability, with testable acceptance criteria.
title: "[Story]: "
labels: ["user-story"]
type: Story

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 correctness

Invalid top-level type key breaks form

type is not a legal top-level key in a GitHub issue form (valid keys are name, description, title, labels, assignees, projects, body). Unknown top-level keys fail the form's YAML validation, so opening this template yields a form-configuration error and the template becomes unusable. Same defect as in dev-ticket.yml and epic.yml.

Evidence: Added line type: Story between labels: ["user-story"] and body:; not in the documented issue-form top-level key set.

Was this useful? React 👍/👎 to give us feedback

@stephane-segning

Copy link
Copy Markdown
Contributor Author

Review

Verdict: clean to merge

Verified

  • Diff scope: gh pr diff 23 touches exactly .github/ISSUE_TEMPLATE/{epic,user-story,dev-ticket}.yml, one added type: line each. No body: change.
  • YAML validity: all three files parse cleanly with yaml.safe_load on the PR head branch.
  • type: is top-level, only allowed keys present in each file ({body, description, labels, name, title, type}).
  • Title/label contract intact: [Epic]:/["epic"], [Story]:/["user-story"], [Ticket]:/["ticket"].
  • Labels epic, user-story, ticket all exist in vymalo/lci-codegraph.
  • Cross-org check (the important one for this PR): this repo's issue types live in the vymalo org, not ADORSYS-GIS. Queried directly — vymalo defines Task, Bug, Feature, Epic, Story, all isEnabled: true. The three type: values used here (Epic, Story, Task) all exist and are enabled, so they will resolve correctly rather than being silently dropped.

Findings

  • None.

CI

  • All green and unrelated to the failure mode seen on the ADORSYS-GIS repos: coverage, deny, docs, lint, msrv, package, test all pass. Lightbridge Review shows skipping (not a failure — this repo has no ADORSYS-GIS-style governance-check gate, so the PR-body format issue seen on webank-models#498/ai-governance#34 doesn't apply here).

Automated review of an AI-authored PR from the 2026-08-13 backlog consolidation (ADORSYS-GIS/ai-helm#1002). This is a self-review — it verifies mechanics, not whether the underlying decision was right. A human still owns that call.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant