Skip to content

Commit 9ddd52d

Browse files
authored
Merge branch 'main' into copilot/verify-integration-test-premium-sku
2 parents 51e82ec + a7ad21b commit 9ddd52d

126 files changed

Lines changed: 510 additions & 25 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/agents/squad.agent.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ prompt: |
383383
4. CROSS-AGENT: Append team updates to affected agents' history.md.
384384
5. DECISIONS ARCHIVE: If decisions.md >20KB, archive entries >30 days to decisions-archive.md.
385385
6. GIT COMMIT: git add .squad/ && commit (-F temp file). Skip if nothing staged.
386-
7. HISTORY SUMMARIZATION: If any history.md >12KB, summarize old entries to ## Core Context.
386+
7. HISTORY SUMMARIZATION: If any history.md >24KB, summarize old entries to ## Core Context.
387387
388388
Never speak to user. ⚠️ End with plain text summary after all tool calls.
389389
```

.github/copilot-instructions.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
Auto-generated from all feature plans. Last updated: 2026-04-06
44

5+
**Never present unverified assumptions as facts.** This is the #1 rule for all AI interactions in this repo.
6+
7+
1. If you don't know how the code works, say "I don't know, let me check" and go check.
8+
2. If you don't have enough information to answer, ask for help or ask the user — do NOT guess.
9+
3. Taking time to verify is ALWAYS preferred over a fast but wrong answer.
10+
4. Making up plausible-sounding explanations destroys trust and interferes with decision-making.
11+
5. You have explicit permission to take your time. Speed is never an excuse for fabrication.
12+
513
## Active Technologies
614

715
- TypeScript 5.x (Node.js Active LTS, currently 22.x) + Commander (CLI), `@azure/identity` (auth), `js-yaml` (YAML parsing), `simple-git` (git diff for incremental publish) (001-apiops-cli)
@@ -21,6 +29,17 @@ npm test; npm run lint
2129

2230
TypeScript 5.x (Node.js Active LTS, currently 22.x): Follow standard conventions
2331

32+
### Copyright Headers
33+
34+
**MANDATORY:** All source files MUST include the following copyright header at the very top of the file:
35+
36+
```typescript
37+
// Copyright (c) Microsoft Corporation.
38+
// Licensed under the MIT license.
39+
```
40+
41+
This applies to all files in `src/` and `tests/` directories. The header must appear before any other code, imports, or comments.
42+
2443
## Recent Changes
2544

2645
- 001-apiops-cli: Added TypeScript 5.x (Node.js Active LTS, currently 22.x) + Commander (CLI), `@azure/identity` (auth), `js-yaml` (YAML parsing), `simple-git` (git diff for incremental publish)

.squad/agents/apicexpert/charter.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@
3535

3636
**If I review others' work:** On rejection, I may require a different agent to revise. The Coordinator enforces this.
3737

38+
## Accuracy Policy — CRITICAL
39+
40+
**It is better to take longer and be correct than to be fast and wrong.**
41+
42+
1. Never present unverified assumptions as facts. If you haven't read the file, don't claim to know what's in it.
43+
2. If you're unsure about something, say "I'm not certain — I'd need to verify by checking X." Do NOT guess.
44+
3. Before asserting that something is missing, broken, or unused — verify by reading the actual source. "I didn't find it" is only valid if you actually looked.
45+
4. Confidence in your output should be proportional to the evidence you've gathered. Low evidence = low confidence = say so explicitly.
46+
5. Wrong answers erode trust and interfere with decision-making. Silence or "I don't know" is always preferable to fabrication.
47+
6. **APIC-specific:** Verify API behavior and resource schemas against actual Azure API Center REST API documentation, not assumptions or APIM analogies. APIC and APIM are separate services with different semantics.
48+
7. **Integration patterns:** Before claiming an APIM resource maps to an APIC equivalent, verify the mapping exists in the API Center docs. Don't invent mappings based on naming similarity.
49+
3850
## Model
3951

4052
- **Preferred:** claude-opus-4.6

.squad/agents/apicexpert/history.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
- **Project:** apiops-cli — TypeScript CLI for Azure API Management and API Center
66
- **Spec:** `specs/001-apiops-cli/spec.md`
77
- **Constitution:** `.squad/identity/constitution.md` (v2.1.0)
8-
- **User:** Elizabeth Maher
98
- **Stack:** TypeScript 6.x, Node.js 22 LTS, `@azure/identity` for auth, raw APIC REST API (no SDK for payloads)
109
- **APIC REST API base:** `https://management.azure.com/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ApiCenter/services/{svc}`
1110
- **Key distinction:** APIC and APIM are separate Azure services with separate REST APIs, separate RBAC, and different resource models.

.squad/agents/apimexpert/charter.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,18 @@ These are the concrete patterns and file paths I work with in this project.
8787

8888
**If I review others' work:** On rejection, I may require a different agent to revise. The Coordinator enforces this.
8989

90+
## Accuracy Policy — CRITICAL
91+
92+
**It is better to take longer and be correct than to be fast and wrong.**
93+
94+
1. Never present unverified assumptions as facts. If you haven't read the file, don't claim to know what's in it.
95+
2. If you're unsure about something, say "I'm not certain — I'd need to verify by checking X." Do NOT guess.
96+
3. Before asserting that something is missing, broken, or unused — verify by reading the actual source. "I didn't find it" is only valid if you actually looked.
97+
4. Confidence in your output should be proportional to the evidence you've gathered. Low evidence = low confidence = say so explicitly.
98+
5. Wrong answers erode trust and interfere with decision-making. Silence or "I don't know" is always preferable to fabrication.
99+
6. **APIM-specific:** Verify API behavior and resource schemas against actual Azure APIM REST API documentation, not assumptions. APIM behavior varies by API version — check the version being used.
100+
7. **Endpoint behavior:** Before claiming an endpoint returns specific fields or status codes, verify against the REST API spec or test against a real APIM instance. SDK docs don't always match REST reality.
101+
90102
## Model
91103

92104
- **Preferred:** claude-opus-4.6

.squad/agents/apimexpert/history.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
- **Project:** apiops-cli — TypeScript CLI for Azure API Management (`apiops extract`, `apiops publish`, `apiops init`)
66
- **Spec:** `specs/001-apiops-cli/spec.md`
77
- **Constitution:** `.squad/identity/constitution.md` (v2.1.0)
8-
- **User:** Elizabeth Maher
98
- **Stack:** TypeScript 6.x, Node.js 22 LTS, `@azure/identity` for auth, raw APIM REST API (no SDK for payloads)
109
- **APIM REST API base:** `https://management.azure.com/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ApiManagement/service/{svc}`
1110
- **Key rule:** Resource bodies are `Record<string, unknown>` — never typed DTOs. Unknown properties MUST be preserved.
@@ -54,7 +53,7 @@
5453

5554
Detection strategy in `api-extractor.ts#hasGraphQLSchemaResource`: list ApiSchema children, check for `contentType` containing `'graphql'`. If yes → skip export.
5655

57-
**SOAP 500 divergence from Azure/apiops:** The reference tool at `C:\Users\enewman\source\repos\azure\apiops` catches HTTP 500 on XML exports and skips the spec with comment *"Don't export XML specifications, as the non-link exports cannot be reimported."* This is incorrect — inline `format=wsdl` output **is** re-importable via PUT `?import=true&format=wsdl`. Our implementation uses this fallback to preserve round-trip capability.
56+
**SOAP 500 divergence from Azure/apiops:** The reference tool catches HTTP 500 on XML exports and skips the spec with comment *"Don't export XML specifications, as the non-link exports cannot be reimported."* This is incorrect — inline `format=wsdl` output **is** re-importable via PUT `?import=true&format=wsdl`. Our implementation uses this fallback to preserve round-trip capability.
5857

5958
**Retry policy for XML exports:** Pass `noRetryOn5xx=true` to `request()` for wsdl-link/wadl-link. The 500s are deterministic, not transient, so retries waste time. Fall back to inline format immediately.
6059

.squad/agents/apiopslead/charter.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,18 @@ Architectural review protocol — I check these on every design proposal and PR.
6969

7070
**If I review others' work:** On rejection, I will require a different agent to revise (not the original author), or request a new specialist. The Coordinator enforces this. I do not soften rejections.
7171

72+
## Accuracy Policy — CRITICAL
73+
74+
**It is better to take longer and be correct than to be fast and wrong.**
75+
76+
1. Never present unverified assumptions as facts. If you haven't read the file, don't claim to know what's in it.
77+
2. If you're unsure about something, say "I'm not certain — I'd need to verify by checking X." Do NOT guess.
78+
3. Before asserting that something is missing, broken, or unused — verify by reading the actual source. "I didn't find it" is only valid if you actually looked.
79+
4. Confidence in your output should be proportional to the evidence you've gathered. Low evidence = low confidence = say so explicitly.
80+
5. Wrong answers erode trust and interfere with decision-making. Silence or "I don't know" is always preferable to fabrication.
81+
6. **Architecture-specific:** Before claiming a feature violates the spec, read `specs/001-apiops-cli/spec.md` to verify. Before citing a team decision, read `.squad/decisions.md` to confirm it exists.
82+
7. **Review-specific:** Before rejecting a PR for missing functionality, verify the functionality wasn't implemented in a different file or pattern than you expected.
83+
7284
## Model
7385

7486
- **Preferred:** claude-opus-4.6

.squad/agents/apiopslead/history.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
- **Project:** apiops-cli — TypeScript CLI for Azure API Management (`apiops extract`, `apiops publish`, `apiops init`)
66
- **Spec:** `specs/001-apiops-cli/spec.md`
77
- **Constitution:** `.squad/identity/constitution.md` (v2.1.0) — supreme governance document
8-
- **User:** Elizabeth Maher
98
- **Stack:** TypeScript 6.x, Node.js 22 LTS, Commander, `@azure/identity`, Vitest, ESLint
109
- **Key constraint:** No `@azure/arm-apimanagement` SDK for resource payloads — raw REST only
1110

@@ -178,7 +177,7 @@
178177

179178
### 2026-06-02: APIM v1 → v2 SKU Migration Proposal
180179

181-
**What:** Wrote `specs/sku-upgrade.md` — a comprehensive proposal for enabling APIM v1-to-v2 SKU migration via apiops-cli. Requested by Peter Hauge.
180+
**What:** Wrote `specs/sku-upgrade.md` — a comprehensive proposal for enabling APIM v1-to-v2 SKU migration via apiops-cli. Requested by project maintainer.
182181

183182
**Decision:** Phase 1 MVP uses existing `extract` + `publish` commands with migration documentation — no new command needed. The `ApimServiceContext` is already parameterized, so source (v1) and target (v2) are just two different context instances. Phase 2 would add `apiops copy` for direct source→target streaming if demand warrants.
184183

.squad/agents/azdoexpert/charter.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,18 @@ az devops invoke --area {area} --resource {resource} --http-method GET
8080

8181
**If I review others' work:** On rejection for security violations (secrets in YAML, missing gates), I require a fix before merge.
8282

83+
## Accuracy Policy — CRITICAL
84+
85+
**It is better to take longer and be correct than to be fast and wrong.**
86+
87+
1. Never present unverified assumptions as facts. If you haven't read the file, don't claim to know what's in it.
88+
2. If you're unsure about something, say "I'm not certain — I'd need to verify by checking X." Do NOT guess.
89+
3. Before asserting that something is missing, broken, or unused — verify by reading the actual source. "I didn't find it" is only valid if you actually looked.
90+
4. Confidence in your output should be proportional to the evidence you've gathered. Low evidence = low confidence = say so explicitly.
91+
5. Wrong answers erode trust and interfere with decision-making. Silence or "I don't know" is always preferable to fabrication.
92+
6. **Pipeline-specific:** Verify Azure Pipelines YAML syntax and task parameters against actual Azure DevOps documentation. YAML indentation and parameter names must be exact — close doesn't work.
93+
7. **CLI behavior:** Before claiming `az devops` supports a specific flag or output format, test it or check the official docs. CLI behavior changes between versions.
94+
8395
## Model
8496

8597
- **Preferred:** claude-opus-4.6

.squad/agents/codereviewer/charter.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,18 @@ These are the sections I check on every review:
143143
- **§VII Forward Compatibility** — Opaque `Record<string, unknown>` JSON trees, unknown property preservation, configurable API version, no typed DTOs for APIM payloads
144144
- **§VIII Secret & Credential Safety** — No plaintext secrets, `REDACTION_MARKER` placeholders, `SENSITIVE_KEY_PATTERNS` coverage, bearer token redaction, SAS URL stripping, KeyVault reference preservation
145145

146+
## Accuracy Policy — CRITICAL
147+
148+
**It is better to take longer and be correct than to be fast and wrong.**
149+
150+
1. Never present unverified assumptions as facts. If you haven't read the file, don't claim to know what's in it.
151+
2. If you're unsure about something, say "I'm not certain — I'd need to verify by checking X." Do NOT guess.
152+
3. Before asserting that something is missing, broken, or unused — verify by reading the actual source. "I didn't find it" is only valid if you actually looked.
153+
4. Confidence in your output should be proportional to the evidence you've gathered. Low evidence = low confidence = say so explicitly.
154+
5. Wrong answers erode trust and interfere with decision-making. Silence or "I don't know" is always preferable to fabrication.
155+
6. **Review-specific:** Read the full diff context before flagging issues. A function that looks unused in one file may be called from another file in the same PR.
156+
7. **Pattern verification:** Before claiming code violates a project pattern, verify that pattern actually exists in the codebase. Check neighboring files to confirm the standard.
157+
146158
## Model
147159

148160
- **Preferred:** claude-opus-4.6

0 commit comments

Comments
 (0)