Session summary — 2026-05-08 → 2026-05-10
Internal-only working notes covering three days of migration, QA, and
follow-up work across the three Mike-Azure repos. This file lives in
docs/migration/ and is excluded from publication to either target by
the existing tier rules.
Repos in play
| Role | Local path | Remote |
|---|---|---|
| Source of truth (private, internal) | C:\Data\Projects\MikeAzureDev |
not pushed publicly |
| Public AGPL fork | C:\Data\Projects\MikeOSSAzure |
Altien/mikeOssAzure |
| Private deploy / marketplace repo | C:\Data\Projects\MikeAzureDeploy |
Altien/MikeAzureDeploy |
Topology is also recorded in the auto-memory file
project_three_repo_topology.md.
What got done
1. Initial migration to MikeOssAzure and MikeAzureDeploy (2026-05-08)
Reviewed docs/migration/ plan, then migrated MikeAzureDev's diverged
tree to the two publication targets. Policy was "commit locally only,
hard compile requirement per commit".
- MikeOssAzure received 19 commits on top of the upstream baseline
b780a4b(= MikeOssAzure's initial empty commitd969096):- 2 Tier-A small refactors (storage interface, auth interface) —
cherry-pickable for upstream PRs to
willchen96/mike. - 17 Tier-B feature commits grouped by logical scope: KV config,
Azure Blob, schema migrations, Entra + tenant lifecycle, local
HS256, user profile REST, OpenAI/AOAI, JSONB fix, supabase
wrapper + chat fallback, install configurator + diagnostics,
runtime
/config+ bundled frontend, env example, frontend ConfigContext + AuthContext, SSR shells, Dockerfile, local-stack, docs.
- 2 Tier-A small refactors (storage interface, auth interface) —
cherry-pickable for upstream PRs to
- MikeAzureDeploy received 8 commits on top of the empty initial
commit:
- Bicep templates, deploy scripts, install operator scripts, CI/supply-chain scripts, runbooks/infra docs, README rewrite.
Both passed the per-commit tsc --noEmit and the sanitisation regex
for tenant identifiers (Entra GUIDs, dev FQDN, *-mike-{dev,prod}
resource names).
2. Acknowledgements + provenance (2026-05-09)
Added a structured Acknowledgements section to MikeOssAzure/README.md
naming the upstream as willchen96/mike (commit b780a4b), plus
scaffolding for future merged-from-upstream and merged-from-other-fork
entries. Memory rule feedback_acknowledgements_links.md codifies the
requirement that every upstream-derived change links to the source
commit/PR (or to a docs/extractions/<name>.md for messy
multi-commit extractions).
3. SECURITY.md and CONTRIBUTING.md (2026-05-09)
Added both at the root of MikeOssAzure:
SECURITY.md— private vulnerability reporting policy, contactsecurity@altien.com.- CONTRIBUTING.md — branching, commit shape, sanitisation rules, provider-boundary rules, "consider contributing upstream first" guidance, and a placeholder testing section noting the suite is on the roadmap.
4. Microsoft Marketplace TTK validation (2026-05-10)
User submitted a build to Microsoft Marketplace. Microsoft's arm-ttk
returned five 300.4.1.1 Best Practice Tests failures:
deploymentTemplate_Location Should Not Be Hardcoded—infra/main.bicep:23hasparam location string = 'westeurope'. Should beparam location string = resourceGroup().location.CreateUIDefinition_Password Textboxes Must Be Used For Password Parameters—mainTemplate.jsonsecurestrings collected via TextBox instead of PasswordBox.CreateUIDefinition_Credential Confirmation Should Not Be Hidden— at least one PasswordBox hashideConfirmation: true.CreateUIDefinition_Outputs Must Be Present In Template Parameters— drift between createUiDefinition outputs and mainTemplate parameters.CreateUIDefinition_Allowed Values Should Actually Be Allowed— dropdownallowedValuesdon't match parameterallowedValues.
Status
- The Bicep
locationdefault fix is identified but not yet applied — this is a Tier C change, lands in MikeAzureDeploy only. - The four
createUiDefinition.jsonissues need the actual marketplace package files which weren't located in the tree at scan time. Three options on the table for the user: point at where the package was assembled, paste the JSON files, or scaffold them fresh. - A planned
scripts/qa/run-ttk.ps1would compile Bicep → mainTemplate- run
Test-AzTemplateover the marketplace package. Not yet written.
- run
Workflow agreed
Fix in MikeAzureDev → test → migrate the fix to MikeAzureDeploy. The TTK fix is Tier C and does not propagate to MikeOssAzure.
5. Architecture-leakage cleanup + QA (2026-05-10)
The session's biggest shift. After confirming the topology hasn't
changed, the user surfaced a constraint that hadn't been explicit
earlier: OSS-shipped docs and code must describe what the fork does,
never what was removed or where the removed parts live. Words like
marketplace, Tier C, Repo 3, MikeAzureDeploy, private deploy,
deploy package, [link to marketplace listing] all leak the
existence and shape of the deploy-side IP.
Audit on MikeOssAzure found 50 leaks. Triaged and cleaned:
- AGENTS.md — removed the entire "AGPL Publication Awareness" section. The internal doctrine moved to docs/migration/agents-internal-rules.md so AGENTS.md can migrate cleanly to OSS.
- CONTRIBUTING.md, README.md,
backend/.env.example,backend/migrations/0003_user_profile_provider_keys.sql,backend/src/lib/llm/azureOpenai.ts,backend/src/routes/diagnostics.ts,backend/src/routes/install.ts, docs/azure-prereqs.md, docs/email/001-email-service.md, docs/fork-delta.md,docs/issues/azure-migration/{022,025,030,032}*.md, docs/runbook-entra-local-auth.md, scripts/install/README.md — all sanitised. - docs/agent-handoff.md — deleted from MikeOssAzure (kept in MikeAzureDev). The runbook references Tier C scripts and the internal repo path.
Same edits applied in MikeAzureDev so the next migration produces a clean OSS without re-doing the work.
QA scripts (scripts/qa/)
check-leakage.ps1— forbidden-phrase scan over file content and the last N commit messages. Defaults to git-tracked files only;-SourceModeskips internal-only paths (docs/migration/,infra/,deploy.ps1,.claude/, README.md, docs/agent-handoff.md, the Tier C issue subset).-CommitDepth Ncontrols commit-scan depth (default 50).-SkipCommitScanand-IncludeUntrackedare escape hatches.check-no-tier-c-in-oss.ps1— path-based check that no Tier C file (Bicep,deploy.ps1, install operator.ps1, deployment runbooks, Tier C issue docs,docs/migration/) exists in the public-fork tree.- scripts/qa/README.md — usage notes and where each script fits in the publication workflow.
Category error captured for future sessions
The first leakage-cleanup commit (ced05d7 in MikeOssAzure, before
amend) had clean file content but a commit message that
enumerated every "Altien Marketplace package", "Tier C", "Repo 3",
"downstream marketplace" phrase being removed — exactly the leak the
file-level cleanup was preventing. Caught and amended to edbd532
before push. The QA script's commit-message scan was added in
response.
Three earlier MikeOssAzure commits (feec6d3, 0bf51f7, c94bf9f)
were already pushed with leaky messages and remain in the public log.
User chose to accept the historical leakage rather than force-push a
rewrite.
Memory feedback_oss_no_architecture_leakage.md updated with:
- The forbidden-pattern list.
- The "applies to every public surface, not just file content" rule.
- The category error and SHAs as a worked example.
- The "describe positive shape, not negative delta" rule for leakage-cleanup commit messages.
Memory rules added or updated this session
All in C:\Users\alien\.claude\projects\C--Data-Projects-MikeAzureDev\memory\:
project_three_repo_topology.md— names the three repos, their roles, what lands where.feedback_public_fork_push.md— commit locally on MikeOssAzure / MikeAzureDeploy; the user pushes after review. MikeAzureDev not subject to this rule.feedback_acknowledgements_links.md— every upstream-derived merge inMikeOssAzure/README.mdAcknowledgements needs a direct GitHub URL (commit / PR / extraction note).feedback_oss_no_architecture_leakage.md— the leakage rule, with the commit-message-leak addendum and category-error example. Lives in MikeAzureDev memory regardless of which repo is being worked on.
AGENTS.md in MikeAzureDev gained a "Storage Provider Boundary"
section preserving the requireProvider vs optional-chaining lesson
from internal commit history (efdb687 introduced silent uploads via
await _provider?.upload(...); 2dbce7c fixed it). Migrates to
MikeOssAzure cleanly.
Outstanding work (open follow-ups)
- Marketplace TTK fixes (Workstream 1). Five createUiDefinition /
mainTemplate failures still pending. Need either the existing
marketplace package files or a scaffold-from-scratch decision.
infra/main.bicep:23location-default fix is the only one confirmed actionable so far. scripts/qa/run-ttk.ps1— planned third QA script. Compiles Bicep → mainTemplate, importsarm-ttk, runsTest-AzTemplatepre-Marketplace-submission.- GitHub Actions wiring for QA — both leakage scripts as a CI
gate on PRs to
Altien/mikeOssAzure. Workflow file not yet written. - Test suite — promised in
MikeOssAzure/CONTRIBUTING.md"in the coming weeks" (as of 2026-05-09). No suite exists yet on either side. - Three historical leaky commit messages on
Altien/mikeOssAzuremain(feec6d3,0bf51f7,c94bf9f). Decision: accept and move on. If ever revisited, requires force-rewrite of public history. - Untracked blog draft in MikeOssAzure
docs/blog/azure-deploy-minimal.md— local-only, contains marketplace mentions, must be sanitised before any publication. infra/main.parameters.dev.json— internal dev parameters file in MikeAzureDev. Not a marketplace concern; just a reminder it carries"location": "uksouth"which is fine for internal use but is the kind of thing the-SourceModeexcludes treat correctly.
Useful commands captured
# Pre-publication QA — always run before pushing the public fork:
pwsh scripts/qa/check-leakage.ps1 -Path C:/Data/Projects/MikeOSSAzure
pwsh scripts/qa/check-no-tier-c-in-oss.ps1 -Path C:/Data/Projects/MikeOSSAzure
# Source-tree QA — the one that legitimately contains the forbidden
# phrases in internal-only paths:
pwsh scripts/qa/check-leakage.ps1 -Path C:/Data/Projects/MikeAzureDev -SourceMode
# Commit-scan-only / file-scan-only escape hatches:
pwsh scripts/qa/check-leakage.ps1 -Path . -CommitDepth 100
pwsh scripts/qa/check-leakage.ps1 -Path . -SkipCommitScan