mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-05 14:46:55 +01:00
al-complexity v2: standard-foerst-tjek + KISS, foer nogen tier foreslaas
Michaels retning: loes tingene saa standard som muligt foerst (Microsoft
Learn + det faktiske BCApps-indhold), derefter KISS paa hvad der reelt skal
bygges custom.
Ny Step 0 i al-complexity.agent.md, koert FOER klassificering:
- Soeg Microsoft Learn efter forretningsbehovet (ikke "hvordan bygger jeg X i AL")
- Tjek den rigtige BCApps-kildekode via reference-repos-klonen (ikke traenings-
data-antagelser)
- Krav om bevis, ikke en paastand ("jeg tjekkede og fandt intet" er kun
troværdigt hvis du viser hvad du soegte) - samme standard som TDD-rød-
bekraeftelsen
- Ny STANDARD-tier: hvis BC allerede klarer det, ingen kode, kun opsaetning
- KISS goeres til en eksplicit begraensning paa selve routen, ikke kun paa
Step 0 - en HIGH-tier retfaerdiggoer mere PROCES, ikke en mere elaboreret
LOESNING
Smiley v3 (samme commit-serie): rettede ogsaa en snag i selve aktiveringen -
Columbo->al-complexity-kaeden trigges i dag kun naar kravet er UKLART. Men
standard-foerst-tjekket boer koere for ETHVERT nyt custom-arbejde, ogsaa et
krystalklart formuleret et - et klart krav kan stadig vaere noget BC allerede
goer. Samme klasse gap som TDD-triggerfixen i forrige commit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
875f524d8a
commit
98556ec372
2 changed files with 89 additions and 22 deletions
|
|
@ -66,32 +66,46 @@ Smiley's assets, activation conditions, and how they surface:
|
|||
|
||||
### 🔴 STOP GATE — Columbo → al-complexity
|
||||
|
||||
**Activate when:**
|
||||
- A user says "can you implement", "add a feature", "let's build", "hurtigt lige..." or
|
||||
similar — and the requirement has not been clearly specified
|
||||
- A task feels MEDIUM or HIGH complexity before any scoping has happened
|
||||
- Coding is about to start on something ambiguous
|
||||
**Two separate triggers here — do not let the first eclipse the second:**
|
||||
|
||||
1. **Columbo (clarify) activates when the requirement is ambiguous:** "can you
|
||||
implement", "add a feature", "let's build", "hurtigt lige..." or similar,
|
||||
where what's actually wanted isn't yet clear.
|
||||
2. **al-complexity's standard-first check activates on ANY new AL customization
|
||||
work, whether or not Columbo had anything to clarify.** A perfectly clear,
|
||||
well-specified request ("add a field X that does Y") still deserves the
|
||||
check — a crisp requirement can still turn out to be something standard BC
|
||||
already does. Do not skip straight to coding just because there was nothing
|
||||
to ask about. 2026-07-31: this is the same class of gap as the TDD trigger
|
||||
fix — a gate tied only to "is this ambiguous" misses the clear-but-possibly-
|
||||
unnecessary-custom-work case entirely.
|
||||
|
||||
**How it surfaces (undercover):**
|
||||
Claude naturally pauses. Asks one clarifying question. Listens. Asks the next.
|
||||
Does not say "I need to clarify first" — just does it. This IS Columbo.
|
||||
Claude naturally pauses. Asks one clarifying question. Listens. Asks the next
|
||||
— but only if there's genuinely something to clarify. Does not say "I need to
|
||||
clarify first" — just does it. This IS Columbo.
|
||||
|
||||
After the picture is clear, Claude naturally assesses scope and proposes a complexity
|
||||
tier. Does not say "al-complexity says..." — just reasons through it out loud and
|
||||
waits for the user to confirm before writing any code.
|
||||
Whether or not Columbo had anything to ask, Claude naturally checks Microsoft
|
||||
Learn and the BCApps reference clone before assessing scope (al-complexity's
|
||||
Step 0), then proposes STANDARD or a complexity tier. Does not say
|
||||
"al-complexity says..." — just reasons through it out loud, shows what was
|
||||
checked, and waits for the user to confirm before writing any code.
|
||||
|
||||
**The chain:**
|
||||
```
|
||||
Ambiguous task detected
|
||||
→ Claude asks questions (Columbo pattern — one at a time)
|
||||
→ Picture becomes clear
|
||||
→ Claude proposes scope + tier + route
|
||||
New AL customization work about to begin
|
||||
→ requirement ambiguous? → Claude asks questions (Columbo, one at a time) → clear
|
||||
→ Claude checks Microsoft Learn + BCApps reference clone (al-complexity Step 0)
|
||||
→ standard BC covers it? → propose STANDARD, no code, stop here
|
||||
→ doesn't → Claude proposes scope + tier + route
|
||||
→ User confirms
|
||||
→ Code begins
|
||||
```
|
||||
|
||||
Smiley will wave the flag hard here. "Hurtig lige" is a red flag.
|
||||
Coding before clarity is the most expensive mistake in development.
|
||||
Smiley will wave the flag hard here. "Hurtig lige" is a red flag — and so is a
|
||||
task that looks obviously custom enough that nobody thought to check standard.
|
||||
Coding before clarity is the most expensive mistake in development. Coding
|
||||
before checking standard is a close second.
|
||||
|
||||
### 🔴 STOP GATE — Task Lifecycle (start, focus, close)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
---
|
||||
kind: action-skill
|
||||
id: curabis-al-complexity
|
||||
version: 1
|
||||
version: 2
|
||||
title: CURABIS AL complexity triage
|
||||
description: Advisory intake classifier. Assesses an implementation task and proposes a complexity tier (LOW/MEDIUM/HIGH) plus a route. Recommends only - it never starts work and never routes by itself. The developer confirms or adjusts the tier first.
|
||||
description: Advisory intake classifier. First checks whether Business Central already solves the requirement natively (Microsoft Learn + the BCApps reference clone) before proposing a complexity tier (STANDARD/LOW/MEDIUM/HIGH) plus a route. KISS applies to whatever custom route is chosen. Recommends only - it never starts work and never routes by itself. The developer confirms or adjusts first.
|
||||
inputs: [task-description]
|
||||
outputs: [tier-recommendation]
|
||||
bc-version: [all]
|
||||
|
|
@ -11,7 +11,7 @@ technologies: [al]
|
|||
countries: [w1]
|
||||
application-area: [all]
|
||||
domain: orchestration
|
||||
keywords: [complexity, tier, routing, intake, scope, spec, tdd, architecture, advisory, human-in-the-loop]
|
||||
keywords: [complexity, tier, routing, intake, scope, spec, tdd, architecture, advisory, human-in-the-loop, standard-first, kiss, microsoft-learn, bcapps]
|
||||
sub-skills:
|
||||
- microsoft/skills/review/al-code-review.md
|
||||
---
|
||||
|
|
@ -54,7 +54,36 @@ it never starts implementation and never routes on its own.
|
|||
This is a **rubric, not a calculation** - there is no numeric score. The tier comes from
|
||||
which classification signals below match the task.
|
||||
|
||||
Loop: classify -> propose tier + route -> WAIT for human confirmation -> hand off.
|
||||
Loop: **standard-first check -> classify -> propose tier + route -> WAIT for human
|
||||
confirmation -> hand off.**
|
||||
|
||||
## Step 0 — Standard-first check (2026-07-31, runs before classification)
|
||||
|
||||
Custom AL is the most expensive way to solve a requirement — every line becomes something
|
||||
CURABIS must maintain forever. Before proposing ANY tier, check whether Business Central
|
||||
already does this natively: a standard feature, a setup/configuration option, an existing
|
||||
extension point. This is not optional and not skippable because the task "obviously" needs
|
||||
code — the check itself is what proves that.
|
||||
|
||||
1. **Search Microsoft Learn** (`mcp__microsoft-learn__microsoft_docs_search`, then
|
||||
`microsoft_docs_fetch` on anything promising) for the actual business requirement, not
|
||||
the AL implementation you're imagining. Search for what the user wants to happen, not
|
||||
"how to build X in AL".
|
||||
2. **Check the real standard app**, not memory or training-data assumptions. Use the
|
||||
machine-global reference clone (`~/.claude/reference-repos/microsoft/BCApps/` — see
|
||||
`[[curabis-app-sources-must-be-checked-first]]` for the clone/refresh mechanism) and
|
||||
grep for the relevant tables/pages/setup fields. Training data goes stale; the clone
|
||||
does not.
|
||||
3. **State the finding, with evidence — never "I checked and found nothing" unsupported.**
|
||||
Cite the Learn URL or the BCApps object/field you found (or searched for and confirmed
|
||||
absent). This is the same human-verifiable-evidence bar as the TDD red-confirmation —
|
||||
a claim of "nothing" is only trustworthy if you show what you searched.
|
||||
4. **If standard BC already covers it:** propose **STANDARD** — no tier, no code, just the
|
||||
configuration/setup steps. This is the cheapest possible resolution and the reason this
|
||||
check runs first. Stop here; do not continue to classification.
|
||||
5. **If it genuinely doesn't:** proceed to classification below, and carry KISS forward as
|
||||
a constraint on whatever tier is chosen (see "KISS applies to the route" below) — the
|
||||
absence of a standard solution is not license to over-build the custom one.
|
||||
|
||||
## Classification signals
|
||||
|
||||
|
|
@ -77,8 +106,21 @@ HIGH
|
|||
- New table, or a field change on an existing table that needs an upgrade codeunit / data migration.
|
||||
- Multi-module change, or a change to permissions.
|
||||
|
||||
## KISS applies to the route (not just to Step 0)
|
||||
|
||||
Once a tier is confirmed, the route itself must stay as simple as the requirement allows —
|
||||
the fewest objects, the least new abstraction, no speculative generality for a future need
|
||||
nobody has asked for. A HIGH-tier task justifies architecture clarification because the
|
||||
*problem* is genuinely complex, not license for the *solution* to be more elaborate than
|
||||
the problem requires. If a simpler design becomes visible during spec/architecture, propose
|
||||
it — do not silently build the more complex version because it was the one first assumed.
|
||||
|
||||
## Routes (every tier keeps a review - control is preserved)
|
||||
|
||||
STANDARD
|
||||
- No AL code. Document the configuration/setup steps and hand off — nothing for
|
||||
bcquality.agent.md to review, because nothing was written.
|
||||
|
||||
LOW
|
||||
- Implement -> **light review via bcquality.agent.md**. No spec or architecture phase, but
|
||||
the review still runs. LOW never means "no review".
|
||||
|
|
@ -105,12 +147,23 @@ CURABIS-COMPLEXITY-005 Every tier gets a review. No tier skips bcquality.agent.m
|
|||
a light review, not none.
|
||||
CURABIS-COMPLEXITY-006 Re-classify on scope change. If the task grows during work, stop and
|
||||
re-propose a tier rather than silently continuing on the old one.
|
||||
CURABIS-COMPLEXITY-007 Standard-first is not skippable. Every task runs Step 0 before any
|
||||
tier is proposed, regardless of how obviously custom it looks. Show the Learn/BCApps
|
||||
evidence — do not assert "nothing standard covers this" without it.
|
||||
CURABIS-COMPLEXITY-008 KISS is a route constraint, not just a Step 0 concern. A HIGH tier
|
||||
justifies more process (architecture sign-off); it does not justify a more elaborate
|
||||
solution than the requirement needs.
|
||||
|
||||
## Output format
|
||||
|
||||
```
|
||||
PROPOSED TIER LOW | MEDIUM | HIGH
|
||||
SIGNALS <which classification signals matched, and why>
|
||||
STANDARD-FIRST CHECK
|
||||
Learn search: <what you searched, with URL(s) if found>
|
||||
BCApps check: <object/field/setup area checked, found or confirmed absent>
|
||||
Result: Standard BC covers this | Standard BC does not cover this
|
||||
|
||||
PROPOSED TIER STANDARD | LOW | MEDIUM | HIGH
|
||||
SIGNALS <which classification signals matched, and why — omit if STANDARD>
|
||||
ROUTE <the recommended path for this tier>
|
||||
GATES <where human approval is required before proceeding>
|
||||
AWAITING Confirm the tier or adjust it before I proceed.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue