@novare-technologies/nvaid 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +137 -2
- package/dist/cli.js +476 -0
- package/package.json +46 -4
- package/templates/commands/apply.md +28 -0
- package/templates/commands/breakdown.md +27 -0
- package/templates/commands/contracts.md +35 -0
- package/templates/commands/intent.md +32 -0
- package/templates/nvaid/DESIGN-CODE-DICTIONARY.md +90 -0
- package/templates/nvaid/PROJECT-RULES.md +93 -0
- package/templates/nvaid/config.yml +74 -0
- package/templates/nvaid/intents/.gitkeep +0 -0
- package/templates/rules/ISSUE-TRACKER-TEMPLATE.md +221 -0
- package/templates/rules/backend-architecture-contract-generation-rules.md +56 -0
- package/templates/rules/customer-experience-contract-generation-rules.md +51 -0
- package/templates/rules/frontend-architecture-contract-generation-rules.md +56 -0
- package/templates/rules/quality-architecture-contract-generation-rules.md +86 -0
- package/templates/rules/solutions-architecture-contract-generation-rules.md +59 -0
- package/templates/rules/unit-breakdown-rules.md +121 -0
- package/templates/skills/backend/SKILL.md +34 -0
- package/templates/skills/customer-experience/SKILL.md +26 -0
- package/templates/skills/daily-construction-update/SKILL.md +27 -0
- package/templates/skills/frontend/SKILL.md +30 -0
- package/templates/skills/github/SKILL.md +142 -0
- package/templates/skills/pr-review/SKILL.md +119 -0
- package/templates/skills/project-ticketing/SKILL.md +26 -0
- package/templates/skills/quality/SKILL.md +31 -0
- package/templates/skills/r3-analytics/SKILL.md +26 -0
- package/templates/skills/release-plan/SKILL.md +27 -0
- package/templates/skills/solutions/SKILL.md +29 -0
- package/templates/skills/unit-breakdown/SKILL.md +31 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
command: nvaid:breakdown
|
|
3
|
+
summary: Cut an approved Intent into Units of Work — the Phase 5 final cut, each unit tagged with its Owning Repo.
|
|
4
|
+
stage: "Mob Elaboration — Phase 5"
|
|
5
|
+
precondition: Contracts drafted (/nvaid:contracts has run)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /nvaid:breakdown
|
|
9
|
+
|
|
10
|
+
Produce `unit-breakdown.md` — the **Phase 5 output**, the decomposition of record,
|
|
11
|
+
informed by the contracts from `/nvaid:contracts`. This runs **after** contracts, not
|
|
12
|
+
before (the `unit-breakdown` Skill is Phase 5; the contract Skills are Phases 2–5).
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Read `intent.md` and the drafted `contracts/`.
|
|
17
|
+
2. Run the `unit-breakdown` Skill per `{{AIDLC_ROOT}}/unit-breakdown-rules.md`: cut into
|
|
18
|
+
Units each with its own Acceptance Criteria, classify Story or Bug, size per the rules.
|
|
19
|
+
3. Tag each Unit with its **Owning Repo** (frontend | backend | platform) — this is what
|
|
20
|
+
assigns units across the family (proposal §7).
|
|
21
|
+
4. Reconcile each contract's `covers_units` against the final cut.
|
|
22
|
+
5. Write `nvaid/intents/<INTENT-ID>-<slug>/unit-breakdown.md`. Flag as a draft awaiting
|
|
23
|
+
room critique (Phases 3–4) and the Decomposition-Approved gate.
|
|
24
|
+
|
|
25
|
+
## Next
|
|
26
|
+
|
|
27
|
+
`/nvaid:apply` — generate the per-repo unit design docs and open construction branches.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
command: nvaid:contracts
|
|
3
|
+
summary: Draft the per-role Architecture Contracts for an approved Intent (Phases 2–5).
|
|
4
|
+
stage: "Mob Elaboration — Phases 2–5"
|
|
5
|
+
precondition: Intent approved (Decomposition-Approved gate green)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /nvaid:contracts
|
|
9
|
+
|
|
10
|
+
Draft the Architecture Contracts for an **already-approved** Intent, running each role's
|
|
11
|
+
contract Skill. The contracts are negotiated across Elaboration Phases 2–5 and **precede**
|
|
12
|
+
the unit-breakdown (which is the Phase 5 output) — run `/nvaid:breakdown` after this.
|
|
13
|
+
|
|
14
|
+
## Precondition
|
|
15
|
+
|
|
16
|
+
Only run once the Intent is approved. If `intent.md` is still a draft awaiting the
|
|
17
|
+
stakeholder, stop and say so.
|
|
18
|
+
|
|
19
|
+
## Steps
|
|
20
|
+
|
|
21
|
+
1. Read the approved `intent.md`.
|
|
22
|
+
2. Run each required role Skill per its `*-architecture-contract-generation-rules.md`
|
|
23
|
+
under `{{AIDLC_ROOT}}`: solutions, the relevant tier contract(s) (frontend / backend),
|
|
24
|
+
quality, customer-experience. Pull a role in only if the Intent touches its domain;
|
|
25
|
+
state "not pulled in" explicitly for the rest.
|
|
26
|
+
3. Write each to `nvaid/intents/<INTENT-ID>-<slug>/contracts/`.
|
|
27
|
+
4. Each contract is a **draft awaiting its Architect's sign-off** — never present as final.
|
|
28
|
+
Read the architect roster from `nvaid/config.yml` (`architects.<role>`) and flag each
|
|
29
|
+
contract as "awaiting sign-off from <that named architect>". Never fill in a sign-off
|
|
30
|
+
on an architect's behalf (propose, don't dispose). If a role has no named architect in
|
|
31
|
+
config, state that its contract is not pulled in rather than inventing an owner.
|
|
32
|
+
|
|
33
|
+
## Next
|
|
34
|
+
|
|
35
|
+
`/nvaid:breakdown` — cut the approved Intent into Units, informed by these contracts.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
command: nvaid:intent
|
|
3
|
+
summary: Draft an Intent (intent.md) — the business need and success criteria only, then STOP.
|
|
4
|
+
stage: "Fig. 2 Stage 1 — Intent captured, pre-Elaboration"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /nvaid:intent
|
|
8
|
+
|
|
9
|
+
Draft a new Intent from the user's description. Produce **only** `intent.md` — the
|
|
10
|
+
business need, who it's for, success criteria, and scope boundaries — then **stop**.
|
|
11
|
+
|
|
12
|
+
## Hard rule: generate the intent and nothing else
|
|
13
|
+
|
|
14
|
+
Do NOT generate contracts, a unit-breakdown, or any downstream artifact. The Intent must
|
|
15
|
+
be approved by the stakeholder (the Decomposition-Approved green light) before anything
|
|
16
|
+
downstream is generated. Stopping here is the whole point of the gated workflow, not a
|
|
17
|
+
limitation — propose, don't dispose.
|
|
18
|
+
|
|
19
|
+
## Steps
|
|
20
|
+
|
|
21
|
+
1. Read this repo's `nvaid/PROJECT-RULES.md` (if present) for the project's operating
|
|
22
|
+
guardrails and approved stack. If it is still the unfilled template, proceed but note
|
|
23
|
+
that the project rules are not yet defined.
|
|
24
|
+
2. Write `nvaid/intents/<INTENT-ID>-<slug>/intent.md`: business need, who it's for,
|
|
25
|
+
Intent-level success criteria (observable outcomes, not implementation), scope
|
|
26
|
+
boundaries (name what's out of scope, don't silently drop it), and open questions for
|
|
27
|
+
the room. Do not decide the technical shape here.
|
|
28
|
+
3. Flag the file as a draft awaiting stakeholder approval. Stop.
|
|
29
|
+
|
|
30
|
+
## Next (do not run automatically)
|
|
31
|
+
|
|
32
|
+
After the stakeholder approves: `/nvaid:contracts`, then `/nvaid:breakdown`.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
document: Design-Code Dictionary
|
|
3
|
+
project: "{{PROJECT_NAME}}"
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
owner: "<owner name>"
|
|
6
|
+
maintained_by: AI agent — updated as part of any unit of work that touches a mapped component
|
|
7
|
+
last_updated: "<YYYY-MM-DD>"
|
|
8
|
+
status: draft
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# {{PROJECT_NAME}} — Design-Code Dictionary
|
|
12
|
+
|
|
13
|
+
> **Template dropped by `nvaid init` — HAND-OWNED, fill this in.**
|
|
14
|
+
> `nvaid update` never overwrites this file. Delete these template notes once you have
|
|
15
|
+
> real content.
|
|
16
|
+
|
|
17
|
+
**What this file is:** a *technical README for the code* — the specs and design patterns
|
|
18
|
+
of this repository, and a live map from each named concept (a feature, a module, an
|
|
19
|
+
architectural component) to where it actually lives in the codebase and what else touches
|
|
20
|
+
it. It answers two questions without opening the source: **"where does this live?"** and
|
|
21
|
+
**"what breaks if I change it?"**
|
|
22
|
+
|
|
23
|
+
**What this file is not:**
|
|
24
|
+
|
|
25
|
+
- Not a replacement for reading the code when making a change — it is a navigation aid for
|
|
26
|
+
deciding whether a change is safe and who should review it.
|
|
27
|
+
- Not a product spec. `nvaid/PROJECT-RULES.md` says what to build and how; this file says
|
|
28
|
+
where that intent actually landed, after the fact.
|
|
29
|
+
- Not a promise of completeness. §5 exists so this file can honestly state what it has not
|
|
30
|
+
mapped yet, rather than implying coverage it doesn't have.
|
|
31
|
+
|
|
32
|
+
**Keep it current.** Updating this file for every component a change adds, moves, or
|
|
33
|
+
removes is part of the Definition of Done — a stale map is worse than none, because it is
|
|
34
|
+
trusted and wrong.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 1. Tech stack & toolchain
|
|
39
|
+
|
|
40
|
+
The authoritative, structured stack lives in **`nvaid/config.yml` → `tech_stack`** (that is
|
|
41
|
+
what agents and the CLI read). Don't duplicate it here — instead, add the *narrative* this
|
|
42
|
+
file is for: why each major choice was made, how the pieces fit together, and any
|
|
43
|
+
non-obvious interactions or constraints a contributor should know before changing them.
|
|
44
|
+
|
|
45
|
+
<e.g. "React + Vite for the SPA; Vitest chosen over Jest for ESM-native speed. The build
|
|
46
|
+
emits a static bundle served by nginx — see §2 and the Dockerfile. No SSR.">
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## 2. Project structure
|
|
50
|
+
|
|
51
|
+
<A short orientation to the top-level directories — what each is for. Example:>
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
src/
|
|
55
|
+
<area>/ <one line: what lives here>
|
|
56
|
+
<area>/
|
|
57
|
+
test/
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 3. Design patterns & conventions
|
|
61
|
+
|
|
62
|
+
<The patterns a contributor (human or agent) must follow to stay consistent with the
|
|
63
|
+
codebase. Be specific — these are the rules an agent can't infer from a single file.
|
|
64
|
+
Examples:>
|
|
65
|
+
|
|
66
|
+
- **<Pattern name>** — <what it is, when to use it, where an example lives>.
|
|
67
|
+
- **State / data flow** — <how state is managed and data moves>.
|
|
68
|
+
- **Error handling** — <the project's convention>.
|
|
69
|
+
- **Naming** — <files, modules, symbols>.
|
|
70
|
+
|
|
71
|
+
## 4. Component map (design concept → code)
|
|
72
|
+
|
|
73
|
+
| Concept / feature | Lives in | Depends on | Changing it affects |
|
|
74
|
+
|---|---|---|---|
|
|
75
|
+
| <e.g. Auth session> | `src/auth/session.ts` | <modules> | <what breaks> |
|
|
76
|
+
| | | | |
|
|
77
|
+
|
|
78
|
+
## 5. Not yet mapped
|
|
79
|
+
|
|
80
|
+
<List components or areas that exist in the code but aren't documented above yet, so this
|
|
81
|
+
file is honest about its coverage. Keep this section — an empty "not yet mapped" is a
|
|
82
|
+
claim of full coverage, and should only be empty when that's actually true.>
|
|
83
|
+
|
|
84
|
+
- <none yet — fill the map as the code grows>
|
|
85
|
+
|
|
86
|
+
## 6. Change log
|
|
87
|
+
|
|
88
|
+
| Version | Date | Change | Author |
|
|
89
|
+
|---|---|---|---|
|
|
90
|
+
| 0.1.0 | <YYYY-MM-DD> | Initial draft from the nvaid template | <name> |
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
document: Project Standards & Engineering Rules
|
|
3
|
+
project: "<project name>"
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
owner: "<owner name>"
|
|
6
|
+
last_updated: "<YYYY-MM-DD>"
|
|
7
|
+
status: draft
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# <project> — Project Standards & Engineering Rules
|
|
11
|
+
|
|
12
|
+
> **Template dropped by `nvaid init` — HAND-OWNED, fill this in.**
|
|
13
|
+
> `nvaid update` never overwrites this file. It is intentionally project-specific:
|
|
14
|
+
> nvaid ships the universal skills and contract/unit rules, but *this* file is where a
|
|
15
|
+
> developer records what is unique to this repo — the approved stack, the guardrails, the
|
|
16
|
+
> data rules. Delete these template notes once you have real content.
|
|
17
|
+
|
|
18
|
+
## 1. What this project is
|
|
19
|
+
|
|
20
|
+
<One short paragraph: the objective, this phase's scope, explicit non-goals. The "why"
|
|
21
|
+
an agent needs in the same file as the "how".>
|
|
22
|
+
|
|
23
|
+
## 2. Architecture principles & constraints
|
|
24
|
+
|
|
25
|
+
### 2.1 Approved technology stack
|
|
26
|
+
|
|
27
|
+
| Layer | Approved | Disallowed without an ADR |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| <e.g. Backend> | <language/framework> | <what's off-limits> |
|
|
30
|
+
| <e.g. Frontend> | <framework> | <what's off-limits> |
|
|
31
|
+
| <e.g. Data store> | <engine> | <what's off-limits> |
|
|
32
|
+
|
|
33
|
+
### 2.2 Non-negotiable constraints
|
|
34
|
+
|
|
35
|
+
- <e.g. deployment target, network posture, build output format — things an agent must
|
|
36
|
+
not quietly change.>
|
|
37
|
+
|
|
38
|
+
### 2.3 Architecture Decision Records (ADRs)
|
|
39
|
+
|
|
40
|
+
<Where ADRs live and the rule to check them before proposing a change in an area one
|
|
41
|
+
already covers.>
|
|
42
|
+
|
|
43
|
+
## 3. Data rules
|
|
44
|
+
|
|
45
|
+
- <How tenant/user/domain data is handled; what the project's own data is vs. isn't;
|
|
46
|
+
secret-handling discipline.>
|
|
47
|
+
|
|
48
|
+
## 4. Design & coding standards
|
|
49
|
+
|
|
50
|
+
- Follow the existing file/module layout; flag any new structural pattern.
|
|
51
|
+
- Documentation bar (docstrings, module responsibilities) applies to AI-generated code
|
|
52
|
+
the same as human-authored.
|
|
53
|
+
- Linter/formatter config: <link once established>.
|
|
54
|
+
|
|
55
|
+
## 5. Quality & testing rules
|
|
56
|
+
|
|
57
|
+
### 5.1 Definition of Done (per Unit of Work)
|
|
58
|
+
|
|
59
|
+
- [ ] The Unit's stated Acceptance Criteria are met and each traces to a covering test.
|
|
60
|
+
- [ ] Static analysis / security scan passes with no unresolved High findings.
|
|
61
|
+
- [ ] Merge approved by the owning reviewer on gate evidence.
|
|
62
|
+
- [ ] `nvaid/DESIGN-CODE-DICTIONARY.md` updated for every component added/moved/removed.
|
|
63
|
+
|
|
64
|
+
### 5.2 Quality gates (CI gates that must pass before merge)
|
|
65
|
+
|
|
66
|
+
<List the gates CI enforces for this project — build, unit test, coverage floor,
|
|
67
|
+
code quality, security scan, etc. Keep project-wide gates here; per-Intent gates come
|
|
68
|
+
from each Quality Architecture Contract.>
|
|
69
|
+
|
|
70
|
+
## 6. Known gaps (do not silently resolve)
|
|
71
|
+
|
|
72
|
+
- <Open questions the agent must treat as questions, not assumptions to fill in.>
|
|
73
|
+
|
|
74
|
+
## 7. AI operating rules (guardrails, not suggestions)
|
|
75
|
+
|
|
76
|
+
1. **Propose, don't dispose.** A named human approves before anything is merged or
|
|
77
|
+
treated as final. Never approve your own gate.
|
|
78
|
+
2. **Ask before assuming.** Ambiguity → a clarifying question, not a best-guess fill-in.
|
|
79
|
+
3. **Respect existing decisions.** Conflict with an ADR or an approved design → flag it,
|
|
80
|
+
don't quietly resolve it.
|
|
81
|
+
4. **No unreviewed new dependencies.**
|
|
82
|
+
5. **No destructive/irreversible actions without explicit per-action confirmation.**
|
|
83
|
+
6. **Artifact hygiene is part of the task** — code without the matching `nvaid/` artifact
|
|
84
|
+
update is an incomplete task.
|
|
85
|
+
7. **Identify AI-assisted changes** in commits and PRs.
|
|
86
|
+
|
|
87
|
+
<Extend with project-specific guardrails.>
|
|
88
|
+
|
|
89
|
+
## 8. Change log
|
|
90
|
+
|
|
91
|
+
| Version | Date | Change | Author |
|
|
92
|
+
|---|---|---|---|
|
|
93
|
+
| 0.1.0 | <YYYY-MM-DD> | Initial draft from the nvaid template | <name> |
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# nvaid project config — HAND-OWNED. `nvaid update` never overwrites this file.
|
|
2
|
+
#
|
|
3
|
+
# This is the one place a repo declares who and what it is in the AI-DLC workflow:
|
|
4
|
+
# - which coding agents nvaid targets here,
|
|
5
|
+
# - what tier/role this repo plays,
|
|
6
|
+
# - the full tech stack of the project,
|
|
7
|
+
# - who the named architects are that sign off on each contract,
|
|
8
|
+
# - the always-on project context every agent should carry.
|
|
9
|
+
#
|
|
10
|
+
# Written by `nvaid init`, then yours to maintain. The skills and slash commands read
|
|
11
|
+
# this file to know, for example, who a drafted contract is "awaiting sign-off" from.
|
|
12
|
+
|
|
13
|
+
schema: nvaid/v1
|
|
14
|
+
|
|
15
|
+
# A short name for this project/repo, used in generated artifact headers
|
|
16
|
+
# (replaces the {{PROJECT_NAME}} placeholder in PROJECT-RULES.md and the dictionary).
|
|
17
|
+
project_name: "<set-me>"
|
|
18
|
+
|
|
19
|
+
# Which repo this is in the family — used to tag the units this repo owns when a
|
|
20
|
+
# unit-breakdown is cut. One of: frontend | backend | platform | <other>.
|
|
21
|
+
owning_repo: "<set-at-init>"
|
|
22
|
+
|
|
23
|
+
# The full tech stack of this project. This is the STRUCTURED, machine-readable source of
|
|
24
|
+
# truth that agents and the CLI key off — e.g. a skill checks `languages` before proposing
|
|
25
|
+
# a dependency, or picks the right test command from `test`. Keep it factual and short;
|
|
26
|
+
# the narrative "why we chose this / how it fits together" belongs in
|
|
27
|
+
# nvaid/DESIGN-CODE-DICTIONARY.md, which references this block rather than repeating it.
|
|
28
|
+
#
|
|
29
|
+
# Leave a field blank or omit it if it doesn't apply. `additional` is an open map for
|
|
30
|
+
# anything the fixed fields don't cover (message brokers, infra, cloud, auth providers…).
|
|
31
|
+
tech_stack:
|
|
32
|
+
languages: [] # e.g. ["TypeScript", "Python"]
|
|
33
|
+
runtime: "" # e.g. "Node >=18", "Python 3.12"
|
|
34
|
+
frameworks: [] # e.g. ["React", "FastAPI"]
|
|
35
|
+
package_manager: "" # e.g. "npm", "pnpm", "uv", "poetry"
|
|
36
|
+
build: "" # e.g. "Vite", "tsup", "hatch"
|
|
37
|
+
test: "" # e.g. "Vitest", "pytest"
|
|
38
|
+
lint_format: "" # e.g. "eslint + prettier", "ruff"
|
|
39
|
+
database: "" # e.g. "PostgreSQL 16", "none"
|
|
40
|
+
deploy: "" # e.g. "Docker + Kubernetes", "GitHub Pages"
|
|
41
|
+
additional: {} # e.g. { cache: "Redis", broker: "RabbitMQ", auth: "OIDC" }
|
|
42
|
+
|
|
43
|
+
# Named architects who sign off on each role's Architecture Contract.
|
|
44
|
+
#
|
|
45
|
+
# These are SIGN-OFF / OWNERSHIP identities: the person accountable for approving that
|
|
46
|
+
# contract. The AI drafts contracts and flags them "awaiting <role> sign-off from <name>";
|
|
47
|
+
# it never signs on their behalf (propose, don't dispose). Leave a role blank/null if this
|
|
48
|
+
# repo doesn't have that architect — a contract for a missing role is simply not pulled in.
|
|
49
|
+
architects:
|
|
50
|
+
solutions: "<name>" # Solutions Architect
|
|
51
|
+
frontend: "<name>" # Frontend / Identity-Access Architect (if this repo has a frontend)
|
|
52
|
+
backend: "<name>" # Backend Solutions Architect (if this repo has a backend)
|
|
53
|
+
quality: "<name>" # Quality Architect
|
|
54
|
+
customer_experience: "<name>" # Customer Experience Architect (BA / PM)
|
|
55
|
+
# add any project-specific roles here, e.g.:
|
|
56
|
+
# devops: "<name>"
|
|
57
|
+
|
|
58
|
+
# Coding agents nvaid injected skills into. `nvaid update` regenerates exactly these.
|
|
59
|
+
# Managed by init/update; change via `nvaid init` rather than by hand.
|
|
60
|
+
agents: []
|
|
61
|
+
|
|
62
|
+
# Optional project context passed to every agent — constraints an agent can't infer
|
|
63
|
+
# from the code. Keep discoverable codebase facts OUT (same discipline as openspec).
|
|
64
|
+
# The project's full guardrails live in nvaid/PROJECT-RULES.md (fill in that template);
|
|
65
|
+
# this field is just the short, always-on context.
|
|
66
|
+
# Example:
|
|
67
|
+
# context: |
|
|
68
|
+
# On-premises only. No cloud targets.
|
|
69
|
+
# See nvaid/PROJECT-RULES.md for the approved stack and gates.
|
|
70
|
+
context: ""
|
|
71
|
+
|
|
72
|
+
# nvaid version this repo was last generated against. `nvaid validate` compares the
|
|
73
|
+
# installed CLI version to this and flags drift.
|
|
74
|
+
generated_with: "0.1.0"
|
|
File without changes
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
---
|
|
2
|
+
document: Issue Tracker Integration (Jira / GitHub Projects)
|
|
3
|
+
project: "{{PROJECT_NAME}}"
|
|
4
|
+
version: 0.3.0
|
|
5
|
+
owner: "[Process Facilitator name]"
|
|
6
|
+
last_updated: "[YYYY-MM-DD]"
|
|
7
|
+
status: draft
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Issue Tracker Integration
|
|
11
|
+
|
|
12
|
+
**What this file is:** the field shape and creation rules for how Fig. 2's Intent-to-Release
|
|
13
|
+
artifacts show up in Jira or GitHub Projects — one Epic per Intent, one Story or Bug per
|
|
14
|
+
Unit of Work, bundled for shipping by Release Checkpoint rather than by sprint — so the
|
|
15
|
+
tracker and the `aidlc-docs/` artifacts never disagree about what was decided.
|
|
16
|
+
|
|
17
|
+
**What this file is not:** not a replacement for `intent.md`, `unit-breakdown.md`, or any
|
|
18
|
+
contract file. The tracker is the *tracking* layer — status, ownership, checkpoint
|
|
19
|
+
placement, at-a-glance search. The artifacts are the *content* layer — what was actually
|
|
20
|
+
agreed, in full, versioned in git. A ticket field never carries content that only exists in
|
|
21
|
+
the ticket; if it's worth writing down, it's worth writing into the file the AI agent
|
|
22
|
+
actually reads, and the ticket links to it.
|
|
23
|
+
|
|
24
|
+
**Companion files:** [PROJECT-RULES.md](./PROJECT-RULES.md) §7 rule 11 is the operating
|
|
25
|
+
rule this file implements. [unit-breakdown-rules.md](./unit-breakdown-rules.md) governs
|
|
26
|
+
*how* a Unit of Work is decided and classified before it ever becomes the ticket
|
|
27
|
+
described here. The worked example in `docs/templates/samples/` is what every link below
|
|
28
|
+
would actually point at for `INTENT-004`.
|
|
29
|
+
|
|
30
|
+
**Why no sprints:** Scrum's sprint boundary is a batching mechanism for coordinating fixed
|
|
31
|
+
human capacity in fixed time boxes. Once a Unit of Work is small, AI-implemented, and gated
|
|
32
|
+
independently rather than committed to as part of a sprint's bundle, the fixed box adds
|
|
33
|
+
waiting without adding structure. This file uses continuous, pull-based flow instead — see
|
|
34
|
+
§3 for the checkpoint that replaces the sprint as the unit of release planning.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 0. The Rule This File Exists to Enforce
|
|
39
|
+
|
|
40
|
+
A ticket holds three kinds of information, and only two of them belong in ticket fields:
|
|
41
|
+
|
|
42
|
+
1. **Tracking metadata** (status, gate state, checkpoint, owner) — belongs in ticket
|
|
43
|
+
fields. This is what Jira/GitHub boards are good at, and it's fine for it to live only
|
|
44
|
+
there.
|
|
45
|
+
2. **Links to content** (the Intent, the contracts, the design docs) — belongs in ticket
|
|
46
|
+
fields, as links, never as pasted text.
|
|
47
|
+
3. **The content itself** (what the API contract actually says, what the acceptance
|
|
48
|
+
criteria actually are) — belongs *only* in the `aidlc-docs/` artifact. Pasting it into
|
|
49
|
+
a ticket description creates a second copy that drifts the first time either one is
|
|
50
|
+
edited without the other, and the AI agent isn't the one reading the ticket anyway — it
|
|
51
|
+
reads the file.
|
|
52
|
+
|
|
53
|
+
## 1. Epic — one per Intent
|
|
54
|
+
|
|
55
|
+
Created by the AI agent immediately after the Decomposition Approved gate (Fig. 2, Stage
|
|
56
|
+
3) — not before, since the Epic's content depends on Joint Elaboration having actually
|
|
57
|
+
happened.
|
|
58
|
+
|
|
59
|
+
| Field | Value | Set By |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| Issue type | Epic | — |
|
|
62
|
+
| Title | `[<INTENT-ID>] <business objective, short>` | AI |
|
|
63
|
+
| Intent ID | e.g. `INTENT-004` | AI |
|
|
64
|
+
| Link — Intent | permalink to `intent.md` | AI |
|
|
65
|
+
| Link — Unit Breakdown | permalink to `unit-breakdown.md` | AI |
|
|
66
|
+
| Gate: Decomposition Approved | status / approver / date | AI transcribes an approval already recorded in `unit-breakdown.md` — never grants it |
|
|
67
|
+
| Contracts produced | links only, e.g. Solutions / Backend / Frontend / Quality / CX — each to its own file | AI, from the Contracts Produced table in `unit-breakdown.md` |
|
|
68
|
+
| Role explicitly not pulled in | e.g. `devops: not pulled in — see devops-architecture-contract.md` | AI |
|
|
69
|
+
| Epic owner (accountable human) | Customer Experience Architect (BA/PM) | AI sets, human is the actual owner |
|
|
70
|
+
| Status | see §4 | AI, mechanically |
|
|
71
|
+
| Release Checkpoint | *(blank at creation)* | **Process Facilitator**, following the CX Architect's prioritized backlog — see §3 |
|
|
72
|
+
|
|
73
|
+
**Contracts live here, not on the Story.** Architecture Contracts are produced once per
|
|
74
|
+
Intent, at Joint Elaboration — they are never re-created per Unit of Work. A Story (§2)
|
|
75
|
+
links to whichever of *this* Epic's contracts are relevant to it, via that contract's own
|
|
76
|
+
`covers_units` field; it does not carry its own copy or its own contract.
|
|
77
|
+
|
|
78
|
+
**Worked example (`INTENT-004`):** Title `[INTENT-004] Developer Provisions a mycv
|
|
79
|
+
Environment with a Branch Override`; contracts linked for Solutions, Backend, Frontend,
|
|
80
|
+
Quality, and CX; DevOps flagged not pulled in, linking `devops-architecture-contract.md`.
|
|
81
|
+
|
|
82
|
+
## 2. Story or Bug — one per Unit of Work, child of its Intent's Epic
|
|
83
|
+
|
|
84
|
+
Created as a stub alongside the Epic (Stage 3), status `Backlog`; filled in as the owning
|
|
85
|
+
role's Per-Role Authoring (Stage 4) and its gate (Stage 5) complete. **One Unit of Work is
|
|
86
|
+
always exactly one Story or one Bug** — never a separate ticket type, never both. Which
|
|
87
|
+
one is decided by `unit-breakdown-rules.md` §3's classification rule (new/changed
|
|
88
|
+
capability → Story; existing shipped behavior violating its own spec → Bug), not
|
|
89
|
+
by the tracker.
|
|
90
|
+
|
|
91
|
+
| Field | Value | Set By |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| Issue type | `Story` or `Bug` (Jira native types; GitHub: Issue labeled `type:story` / `type:bug`, sub-issue of the Epic) — per `unit-breakdown-rules.md` §3 | AI |
|
|
94
|
+
| Title | `[<UNIT-ID>] <short description>` | AI |
|
|
95
|
+
| Unit ID | e.g. `UNIT-004-02` | AI |
|
|
96
|
+
| Owning role | e.g. Backend Solutions Architect | AI, from `unit-breakdown.md` |
|
|
97
|
+
| Link — Unit design | permalink to `unit-XXX-design.md` | AI, added at Stage 4 |
|
|
98
|
+
| Link — Gate approval | permalink to `gate-approval-unit-XXX.md` | AI, added at Stage 5 |
|
|
99
|
+
| Relevant contracts | a **list** of links, one per Epic contract whose `covers_units` names this Unit — a Story routinely carries more than one | AI |
|
|
100
|
+
| Gate: Per-Unit Design Approved | status / approver / date | AI transcribes; owning Architect grants |
|
|
101
|
+
| Merge Approval | status / approver / date / PR link | AI transcribes; owning Architect grants |
|
|
102
|
+
| Status | see §4 | AI, mechanically |
|
|
103
|
+
| Release Checkpoint | *inherited from the parent Epic — not set independently* | — |
|
|
104
|
+
|
|
105
|
+
**A Story never carries its own Release Checkpoint.** All Units of Work under one Intent
|
|
106
|
+
ship in the same checkpoint as that Intent — splitting them across two checkpoints would
|
|
107
|
+
mean the Intent's own success criteria could be satisfied on one deploy and not the other,
|
|
108
|
+
which breaks the reason the Intent was decomposed as a whole in the first place.
|
|
109
|
+
|
|
110
|
+
**Sub-tasks are not a default part of this shape.** A Unit of Work is already sized to be
|
|
111
|
+
one AI-implementable increment (Fig. 2, Stage 6) — splitting it into sub-tasks by default
|
|
112
|
+
would just be re-inventing what the Unit boundary already does. Add a sub-task only if the
|
|
113
|
+
Unit's own design doc identifies a genuinely separable implementation chunk, and let that
|
|
114
|
+
doc, not the ticket, be the reason why.
|
|
115
|
+
|
|
116
|
+
## 3. Release Checkpoint — a bundle of Intents, not a date
|
|
117
|
+
|
|
118
|
+
Replaces the sprint as the unit of release planning. A Release Checkpoint is a **named,
|
|
119
|
+
content-defined set of Intents** assigned to ship together — mapped directly onto a native
|
|
120
|
+
tracker construct rather than a bespoke one:
|
|
121
|
+
|
|
122
|
+
| Tracker | Native construct |
|
|
123
|
+
|---|---|
|
|
124
|
+
| Jira | Fix Version / Release |
|
|
125
|
+
| GitHub Projects | Milestone |
|
|
126
|
+
|
|
127
|
+
Both already carry the right semantics out of the box: a bundle of issues, a completion
|
|
128
|
+
percentage, and a "Release" / close action — no custom issue type needed.
|
|
129
|
+
|
|
130
|
+
**Completion rule:** a Release Checkpoint is **Released** — deployment happens — only once
|
|
131
|
+
*every* Epic assigned to it has reached **Intent Complete**: every one of its child
|
|
132
|
+
Stories has reached `Merged`, and each Story's own Definition of Done (`PROJECT-RULES.md`
|
|
133
|
+
§5.1, which already includes the Design-Code Dictionary update) was satisfied on the way
|
|
134
|
+
there. This is deliberately all-or-nothing: one straggler Intent holds the whole checkpoint
|
|
135
|
+
back. That's a real tradeoff, not a hidden one — it buys a release that always contains a
|
|
136
|
+
coherent, fully-tested set of capabilities, at the cost of a fast Intent sometimes waiting
|
|
137
|
+
on a slow sibling. If that tradeoff stops being worth it for a given checkpoint, split it
|
|
138
|
+
into two smaller checkpoints — don't quietly ship a partial one.
|
|
139
|
+
|
|
140
|
+
**Who assigns what:**
|
|
141
|
+
|
|
142
|
+
- The **CX Architect (BA/PM)** decides which Intents belong together and in what order —
|
|
143
|
+
this is the prioritized backlog they already own (see the Roles table).
|
|
144
|
+
- The **Process Facilitator** turns that priority into the actual checkpoint assignment
|
|
145
|
+
(moving the Epic into the Fix Version / Milestone) and watches flow — if a checkpoint's
|
|
146
|
+
scope stops looking realistic given current throughput, that's flagged, not silently
|
|
147
|
+
absorbed by working longer hours.
|
|
148
|
+
- **Release Approval** (Fig. 2, Stage 10) is granted at the checkpoint level by the
|
|
149
|
+
Solutions Architect + CX Architect, once every contained Epic shows Intent Complete —
|
|
150
|
+
read Stage 10 in Fig. 2 as operating on the checkpoint, not on a single Intent in
|
|
151
|
+
isolation.
|
|
152
|
+
|
|
153
|
+
## 4. Status — Story and Epic tracked separately
|
|
154
|
+
|
|
155
|
+
Kanban-shaped: continuous flow through named columns, not a sprint burndown. Suggested WIP
|
|
156
|
+
limits apply only at genuinely constrained (human-gated) columns — AI-only stages aren't a
|
|
157
|
+
shared human resource in the same way, so capping them is a pipeline-capacity question, not
|
|
158
|
+
a flow-discipline one.
|
|
159
|
+
|
|
160
|
+
### Story
|
|
161
|
+
|
|
162
|
+
| Status | Fig. 2 stage | Set by | Suggested WIP limit |
|
|
163
|
+
|---|---|---|---|
|
|
164
|
+
| Backlog | 3 · Decomposition Approved | AI creates | none — it's the queue |
|
|
165
|
+
| Design In Progress | 4 · Per-Role Authoring | AI | ≈1–2 per owning role in parallel |
|
|
166
|
+
| Design Approved | 5 · Gate passed | AI transcribes; owning Architect grants | transient, no cap needed |
|
|
167
|
+
| In Progress | 6 · Implementation | AI | pipeline-capacity bound, not human-bound |
|
|
168
|
+
| Gates Running | 7 · Automated Gates (incl. self-correct loop) | AI / pipeline | pipeline-capacity bound |
|
|
169
|
+
| Merge Pending | 7 passed, awaiting 8 | AI | ≈1–2 per owning Architect — keeps approvals from queuing into a rubber-stamped batch |
|
|
170
|
+
| Merged | 8 · Merge Approved | AI transcribes; owning Architect grants | — |
|
|
171
|
+
|
|
172
|
+
### Epic
|
|
173
|
+
|
|
174
|
+
| Status | Meaning | Set by |
|
|
175
|
+
|---|---|---|
|
|
176
|
+
| Backlog | Decomposition Approved, not yet assigned a Release Checkpoint | AI creates |
|
|
177
|
+
| In a Checkpoint | Assigned; child Stories in flight | Process Facilitator assigns; status itself rolls up automatically |
|
|
178
|
+
| Intent Complete | Every child Story is `Merged`, DoD satisfied on each | AI, mechanically, once true |
|
|
179
|
+
| Released | Its Release Checkpoint has been approved and deployed | AI transcribes; Solutions Architect + CX Architect grant, at the checkpoint (§3) |
|
|
180
|
+
|
|
181
|
+
## 5. Who Creates, Who Schedules
|
|
182
|
+
|
|
183
|
+
- **The AI agent creates and maintains every issue** — Epic and Story, every field in §1
|
|
184
|
+
and §2 except Release Checkpoint — as a direct, mechanical byproduct of the artifacts it
|
|
185
|
+
already produces. This is reversible (edit or close an issue, nothing breaks) and
|
|
186
|
+
evidence-based (every field is a transcription of something already decided in a file),
|
|
187
|
+
so it fits the same "propose, don't dispose" rule that governs the agent's other
|
|
188
|
+
unsupervised actions — see `PROJECT-RULES.md` §7.
|
|
189
|
+
- **A human is the only one who assigns a Release Checkpoint** — see §3's split between the
|
|
190
|
+
CX Architect (priority) and the Process Facilitator (the actual assignment and flow
|
|
191
|
+
health). That's a scope and capacity call the agent has no real visibility into.
|
|
192
|
+
- **Gate and approval fields are transcriptions, not grants.** The AI agent writes
|
|
193
|
+
"Design Approved: yes, [Architect], [date]" into the ticket only after that approval
|
|
194
|
+
already exists in the corresponding `gate-approval-unit-XXX.md` file — it never sets an
|
|
195
|
+
approval field as an independent action.
|
|
196
|
+
|
|
197
|
+
**Known limitation, stated plainly:** neither Jira nor GitHub Projects has a built-in
|
|
198
|
+
permission that technically restricts *which fields* an integration can write — unlike a
|
|
199
|
+
git branch-protection rule, "AI never assigns a Release Checkpoint" is a process convention
|
|
200
|
+
enforced by this document and spot-checked at the Process Facilitator's regular review, not
|
|
201
|
+
a hard technical lock. If the harness's tracker integration ever supports scoped field
|
|
202
|
+
permissions, tighten this from convention to enforcement and update this section.
|
|
203
|
+
|
|
204
|
+
## 6. Jira vs. GitHub Projects — mechanics
|
|
205
|
+
|
|
206
|
+
| Concept | Jira | GitHub Projects |
|
|
207
|
+
|---|---|---|
|
|
208
|
+
| Epic | Native `Epic` issue type | Tracking issue with native sub-issues, or a Project grouping field |
|
|
209
|
+
| Story / Bug | Native `Story` / `Bug` issue type, linked via Epic Link | Issue, labeled `type:story` / `type:bug`, added as a sub-issue of the Epic |
|
|
210
|
+
| Custom fields (Intent ID, Gate status, etc.) | Custom fields, single-select for status-like values | Project (beta) custom fields — same types available |
|
|
211
|
+
| Release Checkpoint | Fix Version / Release | Milestone |
|
|
212
|
+
| Sprint / Iteration | Native field — **deliberately unused** under this flow model | Native field — **deliberately unused** under this flow model |
|
|
213
|
+
| Link to repo artifact | Web Link / Remote Link to the file's permalink | Native — link or reference the file path directly |
|
|
214
|
+
|
|
215
|
+
## 7. Change Log
|
|
216
|
+
|
|
217
|
+
| Version | Date | Change | Trigger |
|
|
218
|
+
|---|---|---|---|
|
|
219
|
+
| 0.1.0 | [date] | Initial version | Question raised while reviewing the Mob Elaboration Ceremony: how do Jira/GitHub tickets relate to these artifacts |
|
|
220
|
+
| 0.2.0 | [date] | Replaced Sprint/Iteration with Release Checkpoint (Fix Version / Milestone, bundling Intents, all-or-nothing completion); split the Story and Epic status enums; added WIP-limit guidance; clarified contracts are Intent-level, referenced per-Unit via `covers_units`, never duplicated per Story | Kanban-vs-Scrum discussion; clarifying question on Intent/Unit-of-Work/contract relationships |
|
|
221
|
+
| 0.3.0 | [date] | A Unit of Work is now explicitly Story *or* Bug, classified by `unit-breakdown-rules.md` §3; clarified a Story/Bug carries a list of contract links, not a single one | New companion file: `unit-breakdown-rules.md` |
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
document: Backend Architecture Contract — Generation Rules
|
|
3
|
+
project: "{{PROJECT_NAME}}"
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
owner: "[Backend Solutions Architect name]"
|
|
6
|
+
last_updated: "[YYYY-MM-DD]"
|
|
7
|
+
status: draft
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Backend Architecture Contract: Generation Rules
|
|
11
|
+
|
|
12
|
+
**What this file is:** the rules the AI agent follows to draft a Backend Architecture
|
|
13
|
+
Contract for an Intent, during Mob Elaboration Phases 2–5 — what triggers producing one,
|
|
14
|
+
and what it must contain when it does.
|
|
15
|
+
|
|
16
|
+
**What this file is not:** not the worked example —
|
|
17
|
+
`docs/templates/samples/contracts/backend-architecture-contract.md` is the canonical
|
|
18
|
+
shape and sign-off format, filled in for `INTENT-004`. Not the draft/human-edit
|
|
19
|
+
relationship either — every generated contract is a starting framework, never a verdict;
|
|
20
|
+
see the AI-Native Engineering Model's §Mob Elaboration for how the Backend Solutions
|
|
21
|
+
Architect accepts, extends, or simplifies it before Sign-Off.
|
|
22
|
+
|
|
23
|
+
**Companion files:** [unit-breakdown-rules.md](./unit-breakdown-rules.md) (same
|
|
24
|
+
Elaboration session). The other five `*-architecture-contract-generation-rules.md` files
|
|
25
|
+
are siblings, one per role.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 1. When This Contract Is Required
|
|
30
|
+
|
|
31
|
+
Any Intent with at least one Unit of Work touching the backend — an API/service layer, an
|
|
32
|
+
async worker or job runner, or a data-store schema. If none of an
|
|
33
|
+
Intent's Units touch these, this contract is not produced — logged the same way
|
|
34
|
+
`devops-architecture-contract-generation-rules.md` §1 logs a skip: the file states "not
|
|
35
|
+
pulled in" and why, rather than simply not existing.
|
|
36
|
+
|
|
37
|
+
## 2. Required Content
|
|
38
|
+
|
|
39
|
+
- **API Contract Exposed.** Full request/response shape for any new or changed endpoint,
|
|
40
|
+
including error cases (4xx/5xx) — not just the happy path.
|
|
41
|
+
- **Shared Derivation Rules.** Anything another role (most often Frontend) needs to
|
|
42
|
+
independently reproduce — a naming rule, an ID derivation — is defined once, here, and
|
|
43
|
+
referenced elsewhere. It is never re-derived independently by the consuming role.
|
|
44
|
+
- **Data Model Touches.** Which tables/columns are written, and whether a migration is
|
|
45
|
+
needed.
|
|
46
|
+
- **Components Touched (Design-Code Dictionary impact).** Named components this
|
|
47
|
+
Intent's Backend work will add, move, or touch.
|
|
48
|
+
- **What This Contract Deliberately Excludes.** Anything the room discussed and
|
|
49
|
+
explicitly deferred — stated, not silently dropped.
|
|
50
|
+
- **Sign-Off.**
|
|
51
|
+
|
|
52
|
+
## 3. Change Log
|
|
53
|
+
|
|
54
|
+
| Version | Date | Change | Trigger |
|
|
55
|
+
|---|---|---|---|
|
|
56
|
+
| 0.1.0 | [date] | Initial version | Companion to the five sibling `*-contract-generation-rules.md` files |
|