The same API, a bigger request, run in feature scope.
The hello-world run used /aidlc express: 10 of 33 stages and 4 gates. This page is a real run of /aidlc feature on the next request for the same priorauth-api, with AI-DLC 2.11.0 and Claude Code. It stops early, partway into 1.4 Scope Definition, when the API key ran out of credit. That still covers the first 6 stages, and they are where feature scope differs most from express: a reviewer agent, sensors, summary confirmations, learnings, and an Ideation phase that express skips entirely. Every Claude answer below is copied from the run, not written for the page.
Express and feature, side by side
| Express (the hello-world run) | Feature (this run) | |
|---|---|---|
| Stages | 10 of 33: Initialization, 2.1, 2.3, 3.5, 3.6, and three conditional Operation stages | All 33 are planned; conditional ones skip themselves at run time (1.2 did) |
| Ideation (1.1–1.7) | Skipped as a whole phase | Runs: intent, market research (skipped itself), feasibility, scope, team, mockups, approval |
| Depth | Minimal | Standard |
| Reviewer agent | None | The product-lead reviewer rates each artifact before you decide (1.1: R-01 Major, R-02–R-05 Minor) |
| Sensors | off (from scope express) | on: 26 checks in Ideation alone |
| Summary confirmation | off | on: “does this all look correct” before every set of artifacts |
| Learnings | off | on: before each gate, which notes to keep for next time |
| Plan approval | on only because a command turned it on | on (from scope feature) |
| Stops in the first 18 minutes | the whole run had 4 gates + the plan stop | 1.1 alone: answer mode, 2 summary confirmations, learnings, follow-up Q9, 2 reviews, Request Changes, approval |
| What it surfaced | Requirements and assumptions for one change | A compliance ruling (no member ID by email), a 2027-calendar deadline, a new tenant TX-02, a RAID log |
The same workspace, a new request
Feature scope needs nothing extra in the workspace: the same team files, the same aidlc config and workspace-sync as the setup page. Two differences from the hello-world start: the code starts at v1.1.0, because the age column has shipped, and the request is Ravi's next message.
mkdir C:\work\feature-workspace -Force | Out-Null; cd C:\work\feature-workspace
git clone https://github.com/varasrinivas/aidlc-java-workspace.git .
mkdir docs-in -Force | Out-Null
[IO.File]::WriteAllText("$PWD\docs-in\request.md", (@'
# Per-tenant overdue limit and a morning digest
From: Ravi Menon (Nurse Manager, Utilization Management) · Slack #prior-auth-platform · Tue 20 Oct, 08:40
> The age column works, thank you. Two things now. First, the over-5 flag is one limit for everyone, but each
> tenant has its own: Northside says 5 business days, Lakeview says 3. The flag should use the tenant's limit.
> Second, I want an email at 7 every morning listing everything that is over its limit, per tenant, so I do not
> have to open the screen to find out. Same age rule as before: weekends and the tenant's holidays do not count.
Attachments: none. Repo: priorauth-api (the API behind the reviewer screen).
'@ -replace "`r", "") + "`n")
aidlc config --harness claude
aidlc system workspace-sync
cd priorauth-api; git reset --hard v1.1.0; cd ..
scripts\verify.cmdmkdir -p ~/work/feature-workspace && cd ~/work/feature-workspace git clone https://github.com/varasrinivas/aidlc-java-workspace.git . mkdir -p docs-in cat > docs-in/request.md <<'EOF' # Per-tenant overdue limit and a morning digest From: Ravi Menon (Nurse Manager, Utilization Management) · Slack #prior-auth-platform · Tue 20 Oct, 08:40 > The age column works, thank you. Two things now. First, the over-5 flag is one limit for everyone, but each > tenant has its own: Northside says 5 business days, Lakeview says 3. The flag should use the tenant's limit. > Second, I want an email at 7 every morning listing everything that is over its limit, per tenant, so I do not > have to open the screen to find out. Same age rule as before: weekends and the tenant's holidays do not count. Attachments: none. Repo: priorauth-api (the API behind the reviewer screen). EOF aidlc config --harness claude aidlc system workspace-sync (cd priorauth-api && git reset --hard v1.1.0) ./scripts/verify.sh
CLAUDE.md, repos.json, scripts/) from the course's java-workspace, which is what main of aidlc-java-workspace holds, then ran the same aidlc config, workspace-sync and git reset. The baseline verify passed on JDK 21. Pushes from the run's clone were disabled, so nothing could reach GitHub. The story is dated Tue 20 Oct; the run was done on 16 Oct, so the intent ID is 261016-….Start the run in feature scope
Naming the scope in the command starts the run without a scope question, as /aidlc express did. The engine then plans all 33 stages and turns on the checks express leaves off.
/aidlc feature Build what ./docs-in/request.md describes
Scope: feature Depth: Standard (from scope feature) Guard Policy: off (from scope feature) Sensors: on (from scope feature) Learnings: on (from scope feature) Summary Confirmation: on (from scope feature) Plan Approval: on (from scope feature) Collaborators: off (from scope feature)
| Setting | express | feature | What it does in the run |
|---|---|---|---|
| Depth | Minimal | Standard | Longer artifacts: 1.1 wrote 9 questions and a stakeholder map |
| Sensors | off | on | Automatic checks on each draft (step 8) |
| Learnings | off | on | A question before each gate: which notes to keep in the project's memory |
| Summary confirmation | off | on | Claude restates your answers and waits before writing artifacts |
| Plan approval | on (set by a command) | on (from scope feature) | The plan stop before code generation, per unit |
| Guard policy, collaborators | off | off | Same in both |
claude -p "<reply>" --resume <session> --output-format json, one call per turn, from PowerShell, so every reply and its cost could be logged. You would just type in claude. Headless mode showed one wrinkle: once, an answer did not reach the engine, and Claude asked for it again (step 4).Intent Capture: 9 questions, 2 confirmations, a learnings stop
Express never asks what the problem is or who it is for; Requirements Analysis starts from the message. In feature scope the product agent frames the intent first, and asks how you want to answer.
I'm bringing in the product manager's view for this first step: framing what Ravi asked for and who it's for. I've created 8 questions at `aidlc/spaces/default/intents/261016-tenant-overdue-digest/ideation/intent-capture/intent-capture-questions.md`. They confirm what the request means: which of the two asks this work covers, who gets the 7 a.m. email, where the per-tenant limits come from, and what the first version leaves out. How would you like to answer them? 1. Guide me: we go through each question here 2. I'll edit the file: you fill in the answers in the file yourself 3. Chat: we talk it through and I pull the decisions out of the conversation 4. Other Reply with a number (or just tell me).
3. Kiran here; I just went through these with Ravi (requester) and Meena Iyer (tech lead). Our answers: Q1: A, both the per-tenant flag and the morning email. Q2: A. Q3: A. Q4: C. Ravi says each tenant's limit comes from its contract, so a wrong flag is a compliance risk, and the shared limit was what he noticed. Q5: A, B, C, D, E. Q6: B. Meena Iyer, tech lead for #prior-auth-platform, decides scope and priority; Ravi influences as the requester. Q7: B. One email per tenant, to that tenant's nurse manager(s); the addresses live in configuration. Q8: A, B and C.
Thanks, Kiran. Here is what I took from your answers: - **Q1:** this work covers both the per-tenant over-limit flag and the 7 a.m. email of over-limit requests per tenant. - **Q2:** nurse managers in Utilization Management get the email; reviewers benefit from a correct flag. - **Q3:** success means the flag matches each request's tenant limit, and an email arrives by 07:00 every morning listing every over-limit request, grouped by tenant, with none missing. - **Q4:** the trigger is both operational (Ravi noticed the shared limit) and contractual (each tenant's limit comes from its contract, so a wrong flag is a compliance risk). - **Q5:** the stakeholders are Ravi Menon, the reviewers, the priorauth-api team, whoever owns each tenant's limit and holiday list, and compliance / quality. - **Q6:** Meena Iyer, tech lead for #prior-auth-platform, decides scope and priority; Ravi influences as the requester. - **Q7:** one email per tenant, to that tenant's nurse manager(s); the addresses live in configuration. - **Q8:** this first version leaves out a screen for changing limits, channels other than email, and "about to go over" warnings. …
1
# :bulb: Intent Capture & Framing Complete - **Problem:** the over-limit flag uses one shared limit, but each tenant's limit comes from its contract. Managers also have to open the screen to find overdue work. - **This work covers:** a flag that uses each tenant's own limit, plus one 7 a.m. email per tenant to that tenant's nurse manager(s), listing every request over its limit. - **Success:** for every pending request the flag matches its tenant's limit, and the email arrives by 07:00 with every over-limit request and none missing. - **Decides:** Meena Iyer (tech lead). **Influences:** Ravi Menon (requester). - **Not in this first version:** a screen for editing limits, channels other than email, and "about to go over" warnings. | Artifact | Contents | |----------|----------| | intent-statement.md | Problem, target customer, 3 success metrics, trigger, scope boundary (2 in, 3 out) | | stakeholder-map.md | 6 stakeholder groups, decision-maker and influencer, the morning-email requirement | | intent-capture-questions.md | 8 questions, all answered, summary confirmed | Before the approval, two quick questions about notes for future runs. **Which notes from this stage should be kept for next time?** (pick any) 1. Keep none of these 2. "Kiran answered for the group (Ravi Menon and Meena Iyer)" → `project.md ## Corrections` (can be widened to the team) **Anything to add for next time?** 1. Nothing to add 2. Add a note Reply with each question's number and your choice (for example `Q1: 1, Q2: 1`), or just tell me.
Q1: 2, Q2: 1
aidlc/spaces/default/memory/project.md under Corrections, and every later stage reads it: When one person answers the stage questions on behalf of a group (for example Kiran for Ravi Menon and Meena Iyer), record the answers as the group's confirmed answers, and list that person as a stakeholder only when their role is stated. (learned 2026-10-16)The reviewer, Request Changes, and a second review
Before the gate, a separate reviewer agent (the product lead) checks the artifacts against your answers. It caught Claude stating an outcome nobody had chosen. Express has no reviewer; you would have had to spot that yourself.
I saved the note to the project rules (`project.md`, under Corrections). Intent Capture & Framing is ready for your review: what it produced is in aidlc/spaces/default/intents/261016-tenant-overdue-digest/ideation/intent-capture/. **Stage:** Intent Capture & Framing **Review outcome:** Concerns remain for your decision. **Why now:** First review completed. **Review artifact:** `aidlc/spaces/default/intents/261016-tenant-overdue-digest/ideation/intent-capture/intent-statement.md` | ID | Severity | Where | Status | |---|---|---|---| | R-01 | Major | intent-statement.md > Target Customer, first... | New | | R-02 | Minor | intent-statement.md > Success Metrics (Email... | New | | R-03 | Minor | stakeholder-map.md > Communication Requiremen... | New | | R-04 | Minor | intent-statement.md > Initial Scope Signal (b... | New | > R-01 Finding: The bullet says nurse managers "no longer need to open the screen to learn what is overdue". That outcome is Q3 option B, and the human did not select it (Q3 answer is A). Q2 only confirms the current pain. The artifact states an unselected outcome as a goal and cites [Q2]. > R-01 Where: intent-statement.md > Target Customer, first bullet > R-01 Required action: Reword to the confirmed Q2 pain, for example that nurse managers currently have to open the screen to find overdue work. Or ask a follow-up to confirm the outcome as a success criterion. > R-02 Finding: The "over-limit" definition is never stated. The request says weekends and each tenant's holidays do not count, but no confirmed [Q] answer carries that rule, so "none missing" is not testable from this artifact. The "07:00" has no time zone. The case of a tenant with no over-limit requests (empty email, or no email) is not addressed. > R-02 Where: intent-statement.md > Success Metrics (Email timeliness, Email completeness) > R-02 Required action: Add an Assumptions & Open Questions entry tagged [assumption], or a follow-up Q, covering the age rule, the time zone of 07:00, and the empty-digest behaviour. Requirements analysis can then settle each one. > R-03 Finding: Q7 chose one email per tenant to that tenant's nurse managers. The requester Ravi Menon (Utilization Management, a cross-tenant role) is not stated as a recipient. His interest row says he "wants the morning email". > R-03 Where: stakeholder-map.md > Communication Requirements and Decision-Makers > R-03 Required action: Confirm whether Ravi also receives the emails, or whether he is covered only as a tenant nurse manager. Record the answer as a follow-up Q or an open question. > R-04 Finding: The boundary entries "limits are set in configuration" and, in the stakeholder map, "addresses live in configuration" are implementation-level detail in an ideation artifact. > R-04 Where: intent-statement.md > Initial Scope Signal (boundary tables) > R-04 Required action: Restate them as needs (limits and recipients are maintained without a screen). Leave the mechanism to later stages. **Decision options:** - **Approve** - continue with the open findings accepted. - **Request Changes** - return to the listed artifacts so the required actions can be addressed. My take: R-01 is a real wording slip on my part. The fix is a one-line rewording back to the pain you confirmed. R-02 and R-03 are details Requirements Analysis will settle anyway: the time zone for 07:00, whether weekends get an email, the empty-email case, and whether Ravi also gets every tenant's email. **Review:** `aidlc/spaces/default/intents/261016-tenant-overdue-digest/ideation/intent-capture/` If you approve, the next step is Market Research. 1. Approve: continue to Market Research 2. Request Changes: tell me what to revise Reply with a number (or just tell me).
2. Request Changes, from Meena Iyer (tech lead): R-01: reword to the confirmed pain (managers have to open the screen to find overdue work). R-02: add them as open questions for Requirements Analysis (age rule, time zone of 07:00, empty-digest behaviour). R-03: Ravi gets a copy of every tenant's email; record that. R-04: restate as needs, as the reviewer suggests.
I've recorded your change request and added Ravi's copy of every email as a follow-up question in the questions file. Your answer didn't reach AI-DLC. Please give it once more. If it happens again, type /aidlc --doctor. **Q9. Does Ravi Menon also receive the morning emails?** 1. Yes: Ravi gets a copy of every tenant's email 2. No: only each tenant's own nurse manager(s) receive it 3. Not yet defined 4. Other Reply with a number (or just tell me).
1
I've revised both documents with Meena's four changes: - **R-01:** the Target Customer line now states the confirmed pain: today managers have to open the screen to find overdue work. - **R-02:** the age rule, the time zone of 07:00, and the empty-email case are listed as open questions for Requirements Analysis. - **R-03:** Ravi now receives a copy of every tenant's email, in both the intent statement and the stakeholder map. - **R-04:** "in configuration" is restated as a need: limits and recipients are maintained by the team without a screen. One last check before the re-review. Those three open questions are marked as unconfirmed in the documents. Meena asked to leave them for Requirements Analysis, which is option 1. 1. Accept assumptions: keep them as open questions for Requirements Analysis 2. Convert to follow-up questions: answer them now, in this stage 3. Other Reply with a number (or just tell me).
1
| ID | Severity | Where | Status | |---|---|---|---| | R-01 | Major | intent-statement.md > Target Customer, first... | Resolved (reviewer) | | R-02 | Minor | intent-statement.md > Success Metrics (Email... | Resolved (reviewer) | | R-03 | Minor | stakeholder-map.md > Communication Requiremen... | Resolved (reviewer) | | R-04 | Minor | intent-statement.md > Initial Scope Signal (b... | Resolved (reviewer) | | R-05 | Minor | intent-statement.md > Initial Scope Signal, "... | New | > R-05 Finding: The row says limits and recipients are "maintained by the team without one". The Q7 and Q8 answers only say the addresses and limits "live in configuration". They do not say who maintains them or that it is "the team". > R-05 Where: intent-statement.md > Initial Scope Signal, "Not in this first version" row 1 > R-05 Required action: Say only that no screen is provided and changes are made outside the product. Leave who maintains them to Requirements Analysis as an open question. …
1. Approved by Meena Iyer. R-05 accepted as open: who maintains limits and recipients goes to Requirements Analysis.
## Gate Approved
**Timestamp**: 2026-10-16T15:04:12Z
**Event**: GATE_APPROVED
**Stage**: intent-capture
**User Input**: Approve
**Review Finding Dispositions**: {"version":1,"dispositions":[{"artifact":"aidlc/spaces/default/intents/261016-tenant-overdue-digest/ideation/intent-capture/intent-statement.md","id":"R-05","fingerprint":"sha256:8c0aac6717a3ac6e04168e41a0fe86ffad470ce0518ae0fffe5792af26e601eb","status":"Accepted risk","decided_at_severity":"Minor","reviewed_record":{"path":".aidlc-engine/reviews/intent-capture/stage/907b2b9a917ac3ae/1.json","digest":"sha256:57d1b1fd1dfa41ba46e75df3c7417ca6ab68f270c61e6f2f9dd9c441d845f73b"}}]}1.2 Market Research skipped itself
Feature scope plans all 33 stages, but many are conditional. This one checks whether the work has a market to research. No question, no gate: the engine records the reason and moves on. The next gate offers it back.
## Stage Skip **Timestamp**: 2026-10-16T15:05:28Z **Event**: STAGE_SKIPPED **Stage**: market-research **Reason**: Internal enhancement to the priorauth-api reviewer screen and an internal morning email for nurse managers; no external market positioning, and no build-vs-buy question was raised in Intent Capture. The stage condition says to skip internal tools. **Skip Kind**: conditional-runtime
If you approve, the next step is Scope Definition. 1. Approve: continue to Scope Definition 2. Request Changes: tell me what to revise 3. Add Market Research: run the stage I skipped Reply with a number (or just tell me).
Feasibility: the code, compliance and a 2027 deadline
The feasibility stage reads the code before asking anything. It found that the API cannot send mail or run timed jobs, that only one tenant has a holiday calendar, and that the email would carry patient data out of the system. None of this would surface in express until code review, if at all.
Answering the way you chose earlier: Chat. Say if you'd rather be guided through them here or edit the file. The code turned up a few things that affect feasibility: - The API can't send email or run timed jobs yet. - Only one tenant has a holiday calendar (`TX-01`), and only for 2026. - The email will carry health-plan request data out of the system. The 8 questions are in `aidlc/spaces/default/intents/261016-tenant-overdue-digest/ideation/feasibility/feasibility-questions.md`. Answer in whatever form suits you, as you did last time: - **Q1. What may the email contain?** A: request ID, tenant, service, received date and age, with no member ID. B: A plus the member ID. C: only a count per tenant and a link to the screen. D: not yet defined, compliance decides. - **Q2. How can the API send email?** A: an organisation mail relay it may use. B: another team's notification service. C: nothing exists yet. D: not known. - **Q3. Where does the 7 a.m. list come from?** A: the same live source as the screen, read at send time. B: the nightly export, as of last night. C: not known. - **Q4. How many tenants today?** A: two, Northside and Lakeview. B: more (please list them, with IDs if you have them). C: not known. - **Q5. Holiday calendars.** A missing calendar counts holidays as working days, which can wrongly flag a request. A: tenant owners supply 2026 and 2027 calendars for every tenant before go-live. B: accept today's behaviour as a known risk. C: not known. - **Q6. How does the API run in production?** A: one always-on instance. B: several instances behind a load balancer. C: a platform with its own job scheduler. D: not known. - **Q7. Timeline.** A: no fixed date. B: a fixed date. C: a freeze or competing priority is coming. D: not known. - **Q8. A new email library.** A: the framework's standard email library is fine if the plan names it. B: Meena approves first. C: no new libraries, use an internal service. D: not yet defined. When you're ready to proceed, say **done** and I'll summarize our decisions.
Kiran, after checking with Meena and with compliance: Q1: A. Compliance says no member ID in email; request ID, tenant, service, received date and age only. Q2: A. The organisation's SMTP relay; the API may use it (host and credentials come from configuration). Q3: B. The same nightly export the API already reads, as of last night. Q4: B. Two tenants: Northside is TX-01 (the one in the data today) and Lakeview is TX-02 (new; it needs its data and limit added). Q5: A. Tenant owners supply 2026 and 2027 calendars for both tenants before go-live. Q6: A. One always-on instance. Q7: A. No fixed date. Q8: A. The framework's standard mail starter is fine if the plan names it. done
# :test_tube: Feasibility & Constraints Complete - **Verdict:** feasible, with low-to-moderate risk. Every capability has a confirmed route: the organisation's mail relay, one always-on instance, and the standard mail library. The real risks are data being ready and correct. - **Biggest risk:** holiday calendars for 2027 must be in place by 1 January 2027, about ten weeks away. Without them, holidays count as working days and requests are flagged wrongly. - **Other risks:** a stale nightly export, a missed email if the instance is down at 07:00, silent send failures, and Ravi seeing every tenant's requests in his copies (to confirm with compliance). - **Dependencies:** Lakeview's (`TX-02`) data and limit, both tenants' 2026 and 2027 calendars, how the export is refreshed, the relay settings, and the recipients' addresses. | Artifact | Contents | |----------|----------| | feasibility-assessment.md | Verdict, 6 capabilities rated, risk rating by area | | constraint-register.md | 3 compliance, 6 technical, 4 organisational, 3 scope constraints | | raid-log.md | 6 risks, 3 assumptions, 2 issues, 5 dependencies | | feasibility-questions.md | 8 questions, all answered, summary confirmed | Two quick questions about notes before the approval: **Which notes from this stage should be kept for next time?** (pick any) 1. Keep none of these 2. "The specialists were off for this work; compliance input came from the human compliance team" → `project.md ## Corrections` **Anything to add for next time?** 1. Nothing to add 2. Add a note Reply with each question's number and your choice (for example `Q1: 1, Q2: 1`), or just tell me.
Q1: 1, Q2: 1
1. Approved by Meena Iyer. Ravi will confirm the two limits (A-02) against the contracts before Requirements Analysis.
priorauth-api has one tenant, TX-01. The answers made Northside TX-01 and Lakeview a new tenant, TX-02, whose requests, limit and calendar this work must add. Both limits (5 and 3) are recorded as assumption A-02 until Ravi checks them against the contracts.Scope Definition: where the run stopped
The scope stage asked only four questions; everything already decided upstream is listed at the top and not asked again. The next turn, the answers below, failed: the API key had run out of credit. The record stops here, consistent: aidlc engine status reads it, and /aidlc in a new session would continue from these questions.
Answering the way you chose earlier: Chat. Say if you'd rather be guided through them here or edit the file. Most of the scope is already settled by the intent and feasibility answers, so I have only 4 questions, all about how to slice and protect the first release. They're in `aidlc/spaces/default/intents/261016-tenant-overdue-digest/ideation/scope-definition/scope-definition-questions.md`: - **Q1. How should the two capabilities ship?** - A: together, in one release. - B: the per-tenant flag first, then the email. The flag fixes a contractual risk on the screen today. - C: the email first. - D: decide at delivery planning. - **Q2. Is getting Lakeview (`TX-02`) set up part of this work?** - A: partly. This work adds its limit, calendar and recipients; its request data comes through the export from the data owners. - B: fully, including its request data. - C: no. This work only has to behave correctly once Lakeview's data and settings exist. - D: not yet defined. - **Q3. Which safeguards are must-haves for the first release?** Pick any: - A: the email says which day's data it was built from. - B: a failed send is logged and visible. - C: a missed 07:00 send goes out late after a restart. - D: the API refuses to start when a tenant has no limit or no recipients. - E: none beyond the core. - **Q4. Is any one capability tied to a deadline?** - A: no. - B: the flag must be live before Lakeview goes live. - C: everything before 1 January 2027, when the calendars change year. - D: not known. When you're ready to proceed, say **done** and I'll summarize our decisions.
Kiran, continuing the AI-DLC workflow. My answers to the open Scope Definition questions (Chat mode), agreed with Meena: Q1: B. The per-tenant flag first, then the email. Q2: A. Q3: A and B. Q4: B. The flag must be live before Lakeview goes live. done
Credit balance is too low
What the audit log recorded
Everything above is in one audit log under the intent, written by AI-DLC's hooks, not by Claude's prose: each question, each answer, each sensor, each review, each gate. These are its event counts, read from the file.
claim-sources sensor on the 1.1 drafts, for example “intent-statement.md ## Initial Scope Signal: claim block has no source tag”. Each was fixed before the gate. This is why every line in the artifacts ends in a source tag such as [Q1].ERROR_LOGGED events, listed below the table. None reached a file.| Event | Count |
|---|---|
ARTIFACT_UPDATED | 35 |
SENSOR_FIRED | 26 |
SENSOR_PASSED | 20 |
SESSION_ENDED | 14 |
HUMAN_TURN | 13 |
DECISION_RECORDED | 12 |
SESSION_RESUMED | 12 |
ARTIFACT_CREATED | 11 |
STAGE_STARTED | 7 |
QUESTION_ANSWERED | 6 |
SENSOR_FAILED | 6 |
STAGE_COMPLETED | 5 |
ERROR_LOGGED | 3 |
REVIEW_REQUESTED | 3 |
STAGE_AWAITING_APPROVAL | 3 |
SUBAGENT_COMPLETED | 3 |
SUMMARY_CONFIRMATION_RECORDED | 3 |
GATE_APPROVED | 2 |
PHASE_STARTED | 2 |
REVIEW_COMPLETED | 2 |
GATE_REJECTED | 1 |
GUARDRAIL_LOADED | 1 |
HEALTH_CHECKED | 1 |
PHASE_COMPLETED | 1 |
PHASE_VERIFIED | 1 |
RULE_LEARNED | 1 |
SESSION_STARTED | 1 |
STAGE_REVISING | 1 |
STAGE_SKIPPED | 1 |
WORKFLOW_STARTED | 1 |
WORKSPACE_INITIALISED | 1 |
WORKSPACE_SCAFFOLDED | 1 |
WORKSPACE_SCANNED | 1 |
· Refusing to reject "intent-capture": Request Changes requires nonblank revision feedback in --feedback (or --reason through aidlc-orchestrate.ts report). Ask "What should change?", end the turn, and pass their answer. · Cannot record this answer because no new human reply has arrived for the question. Wait for the human to type an answer, then try again. If the person already replied, that reply was not recorded for this question. Tell them exactly this, with nothing about why: "Your answer didn't reach AI-DLC. Please give it once more. If it happens again, type /aidlc --doctor." Never offer to turn a check off for them. · Cannot start review iteration 2 for "intent-capture" because the next iteration is 1. Retry with --iteration 1.
Every turn: time, tool calls and cost
One row per reply typed; times are local (UTC+5:30), model turns are Claude's steps inside that reply. The cost is each turn's own, from Claude Code's JSON output. A resumed session reports its running total, so each row is the difference from the row before.
| Turn | Start | Took | Model turns | Cost | Ended at |
|---|---|---|---|---|---|
| 01 | 20:15 | 3:20 | 35 | $1.14 | 1.1 questions written · how to answer? |
| 02 | 20:19 | 1:10 | 12 | $0.27 | 1.1 summary confirmation |
| 03 | 20:21 | 2:53 | 17 | $1.01 | 1.1 artifacts · learnings stop |
| 04 | 20:24 | 1:50 | 6 | $0.24 | 1.1 review 1 · gate |
| 05 | 20:26 | 1:05 | 7 | $0.36 | Request Changes → follow-up Q9 |
| 06 | 20:27 | 0:43 | 4 | $0.17 | 1.1 summary confirmation (with Q9) |
| 07 | 20:28 | 1:27 | 10 | $0.38 | artifacts revised · keep open questions? |
| 08 | 20:30 | 3:12 | 12 | $1.00 | 1.1 review 2 · gate |
| 09 | 20:33 | 3:12 | 39 | $1.40 | 1.1 approved · 1.2 skipped · 1.3 questions |
| 10 | 20:37 | 1:14 | 12 | $0.39 | 1.3 summary confirmation |
| 11 | 20:39 | 2:07 | 13 | $0.81 | 1.3 artifacts · learnings stop |
| 12 | 20:41 | 0:33 | 3 | $0.17 | 1.3 gate |
| 13 | 20:42 | 1:44 | 21 | $0.80 | 1.3 approved · 1.4 questions |
| 14 | 20:44 | 0:47 | 17 | $0.40 | failed: credit balance too low |
What would come next, and how to continue
Not run, so labelled expected: the stage list is the engine's plan for this intent; what each stage would do is from the stage definitions. To continue the real run, type /aidlc in Claude Code in the workspace; it resumes at the 1.4 questions.
| Stages | Expected for this request |
|---|---|
| 1.4 → 1.7 | Scope: the flag ships first, then the email (the answers drafted for turn 14). Team formation and rough mockups skip themselves: one developer, no new screen. 1.7 hands off the initiative. |
| 2.1, 2.2 | Reverse engineering scans priorauth-api (no codekb in this workspace yet); practices discovery reads the team's CLAUDE.md: verify script, one unit = one branch = one PR, no new pom dependency without the plan. |
| 2.3, 2.4 | Requirements settle the open questions: age rule, time zone of 07:00, empty-email morning, who maintains limits. User stories for the reviewer, the nurse manager and Ravi. |
| 2.6 → 2.9 | Domain design: where per-tenant limits and recipients live, how the job is scheduled, the mail starter. Units, likely three: per-tenant limit, Lakeview TX-02 data, morning digest. Contract design for the email. Bolt plan and the verification command. |
| 3.x | Per unit: functional design, NFRs (by 07:00, failed sends logged), plan approval, code, scripts/verify, a checkpoint. Three branches and three PRs under the team's rule: step 11. |
| 4.x | Conditional. A scheduled email job is the first thing in the course with something to observe, so 4.4 Observability and 4.5 runbooks may run. |
/aidlc
Each unit: plan, branch, checkpoint, pull request
AI-DLC has no pull-request stage in any scope. The PR comes from the team's CLAUDE.md (one unit = one branch = one PR), as PR #58 did in the express run. What feature scope adds is units: express had none, so it had one branch and one PR. Here each unit ends at its own checkpoint, so the branch-to-PR loop below runs three times. Not run: the engine's steps and the checkpoint question are from AI-DLC 2.11's Construction protocol, the git and gh lines are the express run's step 14 applied to one unit.
| What happens | Whose step | Where it is recorded | |
|---|---|---|---|
| 1 | Plan approval. Claude writes the unit's code-generation plan, naming the branch and any new pom dependency (the team's rule), and stops: Approve Plan. | the engine stops; Meena answers | construction/u1-tenant-limit/code-generation/code-generation-plan.md, the audit log |
| 2 | Branch. git -C priorauth-api switch -c overdue/u1-tenant-limit main, the name from the plan. | Claude, because CLAUDE.md says so | the code repo |
| 3 | Code and tests, then scripts/verify, never an ad hoc mvn. | Claude | code-summary.md, traceability.json for the unit |
| 4 | Verification command, first unit only. “Use this command to verify each completed Unit?” with scripts\verify.cmd (or ./scripts/verify.sh). Approved once, reused for every unit. | the engine asks; Kiran answers | the intent's state: Construction Verification Command |
| 5 | Unit checkpoint. The engine runs that command itself and keeps the proof, then asks: “Verified with scripts\verify.cmd (exit 0). Approve this completed u1-tenant-limit?” | the engine; Meena answers | a CHECKPOINT_VERIFICATION_RECORDED receipt, then the approval |
| 6 | Commit. The code on the unit branch; the record on the workspace's main (“commit it after every gate”). Claude Code asks before each git commit. | Claude, under the team's rule | both repos' history |
| 7 | Push and open the PR, with the unit's code summary as the description (below). | Kiran | GitHub |
| 8 | Review and squash-merge. AI-DLC's own default in memory/org.md is trunk-based with squash-merge, so each unit lands on main as one commit. | Meena | GitHub; main |
! git -C priorauth-api push -u origin overdue/u1-tenant-limit ! gh pr create --repo acme-health/priorauth-api --base main --head overdue/u1-tenant-limit --title "Per-tenant over-limit flag (U1, intent 261016-tenant-overdue-digest)" --body-file aidlc/spaces/default/intents/261016-tenant-overdue-digest/construction/u1-tenant-limit/code-generation/code-summary.md
| Unit | Branch | In the PR | Starts from |
|---|---|---|---|
| U1 per-tenant limit | overdue/u1-tenant-limit | Limits per tenant in configuration (Northside 5); the flag reads its tenant's limit instead of priorauth.aging.threshold-days | main at v1.1.0 |
| U2 Lakeview data | overdue/u2-lakeview-tx02 | Tenant TX-02: its requests, its holiday file, limit 3 | main; it does not need U1's code |
| U3 morning digest | overdue/u3-morning-digest | The 07:00 job, recipients per tenant plus Ravi's copy, no member ID in the email (the 1.3 compliance ruling). Adds a mail starter to pom.xml, so the plan must say so | main after PRs 1 and 2 merge: it needs both |
main regardless. U3 needs both: its plan approval is the natural place to wait, so answer it once PRs 1 and 2 are on main. Stacking U3 on an unmerged branch works too, but short-lived branches merged in order are what org.md asks for.CLAUDE.md says request-age/<slug>, written for the last request. Claude follows it as written, so change it (here, to overdue/<slug>) and commit that before Construction starts.Construction Execution: swarm, which builds independent units in parallel: each gets a git worktree on a bolt-<id8>_<slug> branch, and the engine merges the passing ones back into the base branch locally, with no PR. A team that reviews every change by PR keeps the default, serial.main. Then Operation: 4.4 Observability may run this time, because a scheduled email job has something to watch.What is real here, and what is not
Real: the run, on Fri 16 Oct 2026, AI-DLC 2.11.0 and Claude Code 2.1.301 on Windows: every Claude answer (copied from the JSON output of each turn), every file under the intent, the audit log and its counts, the learned rule, aidlc engine status, and each turn's time and cost. The files are in the repo under aidlc-hello-world-java/feature-run/, and this page is built from them. Chosen for the story: the answers, given on behalf of the course's fictional cast, and the request itself. Not run: everything after the 1.4 questions; steps 10 and 11 are labelled expected, and acme-health on GitHub is the story's. The run stopped because the API key ran out of credit, not because of AI-DLC.
Sources: AI-DLC docs on phases and stages, scopes, depth and test strategy and interaction modes.