☰ Contents
AISA v2.0 / Technical documentation / Customer-Specific Development Module

Customer-Specific Development Module

F verified factP decided planC open challenge

Fixes on the code the customer runs. Bug fixes and small features that extend existing functionality — never new modules (goals). The customer's lineage is not the main branch: it forked on 18.03.2025 and has diverged since — the counts live in memory with their measuring query, never as a quoted figure (§ 0.1) — so a fix developed on the main branch may not apply to the code the customer runs, and every case starts by naming which code it is fixing.

P The flow at every presentation level. Planning (S1) reproduces the problem and pins the branch set. Approval (S2) confirms placement, scope and tests. Implementation (S3) uses isolated worktrees; Test (S3 ) records the applicable checks; Validation (S4) includes the merge-request verdict, with corrections returning to implementation. Release scripts (S5) pins the target set and recovery at H4; Deploy approval (S6) obtains target authority; Deploy and verify (S7) proves the actual serving revision and requested behaviour. Reversal (S8) is conditional. Required work returns to the owning Support request's closure; experience/skill/tool review runs after the result. The walkthrough expands these same stages, not a separate delivery workflow.

P The module is source-agnostic (decision Vladimir, 02.09.2026 — D58): it is built against the idea of a source — a system it can read, change, build, test and deploy — never against a concrete estate. A source is configuration (a sources row set per customer plug-in, Whitelabel Catalogue § 4): its repositories, its database side, its branch model and start flows, its seam catalogue, its build/test gates, its deploy mechanism. The Bulstrad estate's sources — serdica-backend, serdica-ui, intentgpt and the environment databases' PL/SQL — are the first plug-in's content (the Camunda process files are not a source of their own: they live in serdica-backend, written by the camunda developer into source/serdica-backend/core), named in this page because they are the working example; the module that works them works any declared source. What a case runs on is not master by default: the customer lineage forked from master on 18.03.2025 F: measured; [memory]. Repository knowledge (microservice indexes, build truths, branch maps) lives in the source/* memory domains (§ 0.1 above; Agents Memory Part I), not in this document. The seam catalogue and the criteria that choose between them are in Stage Planning.

P Core Development is only a classification/communication outcome. Its request, offer and delivery terms go to the owning organisation; it does not run the Source stages below.

Agents in this module

P Open an agent below for its function, input/output brief, task context, methods and restrictions. These descriptions are generated from the same catalogue as the module agent subpage. The memory domains listed later are knowledge stores, not additional agents.

Task contract. Start only when the selected work and prerequisites are ready. Pin the profile, request/plan and source revisions; provide the original objective, relevant evidence, decisions, uncertainties and dependencies. The agent proposes a plan to its immediate parent, waits for that confirmation before dependent work, and returns a result or a precise question. Parent confirmation does not replace an effect gate. Runtime and context contract.

Customer-specific development root · source.root

Own accepted customer defect or bounded extension work, placement and release gates, source task coordination and return evidence to the originating root.

Agent contract Detail
Input Accepted customer defect/extension brief, lineage and estate ownership, requested target set
Output Source task graph, accepted brief, root decision packets, scoped handovers and complete result/remaining obligations
Task instructions Keep origin, intent, route, parent-confirmed plans, gates, accepted handovers, waits and obligations coherent.
Ask the owning profile for a bounded interpretation when knowledge is insufficient; return evidence to the asking case.
Memory source
platform/experience
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
Core Development is outside this workflow: return that classification to Support root and the communicator for the request, offer and delivery estimate. Acceptance never opens a Core pipeline.
Runtime access case.read / papers / task state
experience.query (strategy-selected)
runtime.validate-contract
May consult support/experience — What has gone wrong in this seam, service or product before?
Eval set source.planning

Methods. common.skill.experience.

Selected method segments. source-change strategy; current case/tenant and version filters

Full technical definition, sources and executable bindings.

Placement planner · source.planner

Establish reproduction and actual source lineage, choose the smallest fitting seam and prepare the brief for owner approval.

Agent contract Detail
Input Accepted request/evidence, current branch/source registry and source/configuration contracts
Output Reproduction or evidence substitute, branch set, selected/rejected seams, blast radius, tests and recovery brief
Task instructions Ask the owning profile for a bounded interpretation when knowledge is insufficient; return evidence to the asking case.
Memory source; selected repository nodes
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
No implementation before accepted H2. A config-only remedy returns to Configuration through root-accepted work, not an unneeded code patch.
Runtime access connector.git.read
connector.oracle.source-and-signature
connector.logs.read
experience.query (strategy-selected)
May consult support/experience — What has gone wrong in this seam, service or product before? It sizes the blast radius.
configuration/ipal — Is this behaviour a catalogue row rather than a code path? Yes ends the case here: Hd to Configuration. (a change is Hd)
Eval set source.planning

Methods. source.skill.placement, common.skill.experience, common.db-prober.

Selected method segments. source-change strategy; current case/tenant and version filters

Full technical definition, sources and executable bindings.

Source implementer — one instance per declared source · source.implementer

The stage profile of Implementation: one bounded instance per declared source the accepted change touches, booted from that source's own memory node. No source is privileged — the backend services, the UI, stored code and any other source the customer plug-in declares are siblings — and a declared source with no node of its own is worked by this profile from the approved brief alone.

Agent contract Detail
Input Approved brief naming the seam, the branch set, the test plan and the cross-source contract paper where two sources are involved
The declared source this instance is bound to, with its own build truths, layout and conventions
Output Worktree commits in that one source, the failing test first where the change is a defect fix, and the pipeline run S4 reads
Interface gaps and a source-domain learning proposal
Task instructions Ask the owning profile for a bounded interpretation when knowledge is insufficient; return evidence to the asking case.
Memory source/<declared source>
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
No protected-branch push, deployment or editing another source outside the task.
One instance works one declared source. A change that needs another source recruits that source's instance; widening the diff is not diligence.
A source with a dedicated node uses that node's profile — serdica-backend, serdica-ui, db-plsql, intentgpt — and this profile is the seam that dispatches to them.
Runtime access workspace.create / edit / diff
connector.git.read
runtime.run-pinned-build-command
Eval set source.implementation

Methods. common.db-prober.

Full technical definition, sources and executable bindings.

Backend implementer · source.implementer.serdica-backend

Implement only the accepted task in this declared source and return reproducible change/test evidence.

Agent contract Detail
Input Accepted brief and cross-source shape, pinned source head, task scope and source-specific build/test contract
Output Confined diff/build state, actual checks, interface gaps and source-domain learning proposal
Task instructions Ask the owning profile for a bounded interpretation when knowledge is insufficient; return evidence to the asking case.
Memory source/serdica-backend/<service>
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
No protected-branch push, deployment or editing other sources outside the task.
Preserve the agreed DTO/GraphQL/RabbitMQ/DB contract and the target layout; a shared-library change names its consuming services.
The Python riskmodel under Analytics/ is part of this source: use the repository's own pytest and golden-master toolchain (its analytics-* skills), not the .NET one; a rating-filter change ships as the anl-risk-model artefact.
A declared-source variant of source.implementer: siblings, none of them the stage's default.
Runtime access workspace.create / edit / diff
connector.git.read
runtime.run-pinned-build-command
May consult configuration/abacus — Engine questions on rating behaviour; after two failed attempts an unknown contract goes to the owning repository agent.
Eval set source.implementation

Methods. Uses the selected case method and runtime protocol.

Full technical definition, sources and executable bindings.

Frontend implementer · source.implementer.serdica-ui

Implement only the accepted task in this declared source and return reproducible change/test evidence.

Agent contract Detail
Input Accepted brief and cross-source shape, pinned source head, task scope and source-specific build/test contract
Output Confined diff/build state, actual checks, interface gaps and source-domain learning proposal
Task instructions Ask the owning profile for a bounded interpretation when knowledge is insufficient; return evidence to the asking case.
Memory source/serdica-ui
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
No protected-branch push, deployment or editing other sources outside the task.
Operator journey, actual requests/state and maintained translations matter; a source/DOM test is not a real first-click browser test.
bulstrad-staging is Angular 16 / Nx 16 / NGXS 3.8, one app with hash routing and no Module Federation; the master-only import aliases do not exist on this lineage (serdica-ui CLAUDE.md, verified 10.09.2026).
A declared-source variant of source.implementer: siblings, none of them the stage's default.
Runtime access workspace.create / edit / diff
runtime.run-pinned-build-command
connector.browser.scoped-action
May consult configuration/abacus — Engine questions on rating behaviour; after two failed attempts an unknown contract goes to the owning repository agent.
Eval set source.implementation

Methods. Uses the selected case method and runtime protocol.

Full technical definition, sources and executable bindings.

Declared behaviour-source implementer · source.implementer.intentgpt

Implement only the accepted task in this declared source and return reproducible change/test evidence.

Agent contract Detail
Input Accepted brief and cross-source shape, pinned source head, task scope and source-specific build/test contract
Output Confined diff/build state, actual checks, interface gaps and source-domain learning proposal
Task instructions Ask the owning profile for a bounded interpretation when knowledge is insufficient; return evidence to the asking case.
Memory source/intentgpt
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
No protected-branch push, deployment or editing other sources outside the task.
Bind only when that declared source is reachable. The current catalogue does not invent repository contents, tests or implementation when unavailable.
A declared-source variant of source.implementer: siblings, none of them the stage's default.
Runtime access workspace.create / edit / diff
connector.git.read
runtime.run-pinned-build-command
May consult configuration/abacus — Engine questions on rating behaviour; after two failed attempts an unknown contract goes to the owning repository agent.
Eval set source.implementation

Methods. Uses the selected case method and runtime protocol.

Full technical definition, sources and executable bindings.

Stored-code implementer · source.implementer.db-plsql

Prepare the smallest signature-guarded stored-code change, reconciling live edits and all called/remote dependencies.

Agent contract Detail
Input Accepted brief, exact live/baseline object snapshots and caller/dependency map
Output Full object apply/inverse proposal, narrow diff, signature preconditions and runtime smoke plan
Task instructions Ask the owning profile for a bounded interpretation when knowledge is insufficient; return evidence to the asking case.
Memory source/db-plsql
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
No direct DDL, stale-body replacement, schema-wide recompile or automatic INSIS-core ownership.
A declared-source variant of source.implementer: siblings, none of them the stage's default.
Runtime access connector.oracle.source-and-signature
workspace.create / edit / diff
connector.git.read
runtime.validate-contract
May consult configuration/abacus — Engine questions on rating behaviour; after two failed attempts an unknown contract goes to the owning repository agent.
Eval set source.implementation

Methods. source.skill.plsql-change.

Full technical definition, sources and executable bindings.

Process developer · source.camunda_developer

Author BPMN/task contracts and the migration/teardown statement for an accepted process change.

Agent contract Detail
Input Accepted process brief, current definitions/instances and generated source contract
Output Process and generated source diff, tests, migration/residue statement and configuration registration prerequisite
Task instructions Ask the owning profile for a bounded interpretation when knowledge is insufficient; return evidence to the asking case.
Memory source/serdica-backend/core (proposal to backend owner)
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
No register/deploy/start/terminate/migrate without the separate effect path.
Camunda 7 Community Edition is end-of-life and serdica-backend master carries a proposed migration to Elsa Workflows (Camunda obsoletion decision, 11.02.2026); the Bulstrad lineage still runs Camunda — 344 BPMN files and 242 C# references on bulstrad-staging (counted 10.09.2026) — so a process change is authored for Camunda on the customer lineage and its master counterpart is a brief decision (Stage Deployment Scripts, G27).
Runtime access workspace.edit-process-source
connector.process.read
runtime.run-pinned-build-command
Eval set source.implementation

Methods. source.skill.process-change.

Full technical definition, sources and executable bindings.

Independent source validator — validates the change against the approved brief · source.validator

Review placement, actual diff, contract compatibility and test coverage, then independently assess declared release/recovery proof when selected.

Agent contract Detail
Input Accepted brief, exact source head/diff, test results or scoped target evidence; no author transcript
Output Head-bound review verdict, corrections, coverage gaps or target-proof disagreement
Task instructions Re-derive the specific claim from objective, evidence and provenance; return the evidence separating agreement from disagreement.
Memory source (read/propose)
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
No author identity/reasoning, implementation of the reviewed change or approval of a changed unreviewed head.
Checklist seeds are the repositories' own reviewer agents: security, EF Core misuse, async patterns, translations and plugins for the backend; Angular 16, NGXS, RxJS, Apollo and Formly patterns for the UI.
Runtime access connector.git.read
runtime.run-pinned-build-command
compare current scoped evidence
connector.logs.read
Context continuity Receive original objective/requirements, relevant source citations, current baseline and observations, exact proposed or applied artefacts, assertions, dependencies and known uncertainties. Exclude author private reasoning/transcript, not necessary facts; ask the parent for missing evidence before judging.
Eval set source.review

Methods. common.skill.validation.

Full technical definition, sources and executable bindings.

Source release coordinator · source.deployer

Prepare the complete target set and ports, coordinate current authorised release operations, and reconcile proof or recovery per consumer.

Agent contract Detail
Input Reviewed brief/head, exact artifacts and consuming services, current targets and release policy
Accepted source/configuration artefact hashes and semantic change set; fresh target inventory, baseline and drift; ordered dependencies and external-owner obligations
Output Release/preflight packet, operation outcomes, serving proof and per-target port/recovery/residue report
Versioned deployment packet: ordered API requests, parameterised SQL/migrations and source/build artefacts only where required; preconditions, exact scope/counts, assertions and recovery commands
H4 packet decision, applicable execution grants, effect journal, target verification refs and unresolved recovery/delivery obligations
Task instructions Prepare and follow exact operation packets, park external-owner steps and reconcile unknown outcomes before retry.
Prepare release scripts and exact API/SQL bindings after the working result is accepted. Reconcile against each target; do not copy working-environment surrogate ids or erase target-only valid state.
Reconfirm if target baseline or packet revision changes. Execute only through the shared auditor/gates/executor; reconcile unknown effects before retry.
Deployment preparation is after authoring, but still part of requested delivery. Do not close that obligation while scripts, confirmations, application, proof or due restoration are missing.
Memory source (release/port/recovery rules)
Restrictions One scoped task instance per selected responsibility; a reused profile never shares another case transcript, grants or mutable task state.
Boot from the own domain index, task request, pinned profile and confirmed parent plan. Select relevant articles, skills, tools and helpers on demand.
Target settings stay target-specific; one library artifact or one target pass does not close every affected consumer. Independent reviewer checks runtime result.
Runtime access connector.git.read
workspace.create / edit / diff
runtime.validate-contract
connector.pipeline.dispatch (gated)
connector.what-landed
connector.oracle.source-and-signature
Context continuity One deployment responsibility retains the chosen target set, packet revisions, decisions and effect journal through preparation, dispatch, verification and recovery. New target/scope needs a new current packet and authority, not a fresh agent for every step.
May consult configuration/ipal — What state is this product in on this environment? It tells a defect apart from a half-deployed product at S8 verification.
Eval set source.deployment

Methods. source.skill.release, source.skill.port, source.skill.release-audit, common.effect-applier.

Full technical definition, sources and executable bindings.

0. The agents

P The tree. One implementer per declared source, each booted from that repository's own memory domain; a planner that owns placement; a reviewer with no author reasoning/transcript; relevant requirements and evidence retained; a deployer; the Camunda developer and the database extractor as isolated sub-agents. The dashed edges are consults to the other modules' domains, the one handover, and the one exit.

flowchart TB
  R["source.root"]:::owner
  P["S1–S2 Planner"]:::work
  I["S3 Repository implementers"]:::work
  C["Camunda / DB specialists"]:::work
  T["S3 test runner"]:::proof
  V["S4 Independent reviewer"]:::proof
  D["S5–S8 Deployer"]:::work
  K["Repository knowledge"]:::learn
  R --> P
  P -->|"approved work"| I
  I -.->|"specialise"| C
  I -->|"change and tests"| T
  T -->|"actual results"| V
  V -->|"reviewed revision"| D
  K -.->|"current applicability"| P
  D -.->|"propose experience"| K
  classDef work fill:#eef4ff,stroke:#6889ba,color:#17365b,stroke-width:1.3px
  classDef decision fill:#fff4df,stroke:#b78c36,color:#65470d,stroke-width:1.5px
  classDef proof fill:#e9f5ef,stroke:#689b81,color:#224e39,stroke-width:1.3px
  classDef learn fill:#f1edf9,stroke:#9580b9,color:#534172,stroke-width:1.3px
  classDef store fill:#f5f7fa,stroke:#98a6b7,color:#34445a,stroke-width:1.2px
  classDef owner fill:#24486b,stroke:#24486b,color:#ffffff,stroke-width:1.4px
  click R href "../modules.html" "Owns the bounded change and receives an accepted Hd handover."
  click P href "stage-planning.html" "Reproduces the issue and pins actual source lineage, scope and placement."
  click I href "stage-implementation.html" "Backend, UI, DB/PLSQL and declared external source; riskmodel stays with backend."
  click C href "stage-implementation.html" "Bounded process work and read-only stored-code extraction."
  click T href "stage-test-and-corrections.html" "Deterministic command execution in a confined worktree; no model prompt."
  click V href "stage-test-and-corrections.html" "Review the complete change series and relevant generated artefacts."
  click D href "stage-deploy-and-reversal.html" "Release graph, current permits, target proof, directional port and reversal."
  click K href "../50-agents/agents-memory.html" "Versioned placement, build and recovery knowledge; publish tested improvements."

Agent responsibility follows the work. Repository implementers prepare changes; only the shared granted execution path can publish, deploy or change a target.

Root: source.root owns the case and receives Hd handovers from Support and Configuration. Lateral: implementers consult configuration/abacus on engine questions and the experience index on precedent; the two-failed-attempts rule sends unknown contracts to the owning repo agent [F: the PC 9951 run]. P Implementer agents are per source, and the set is configuration (D58): another customer declares its own sources and gets its own implementer profiles; the module does not change. P A missing repository node is never a prerequisite — a summarizer creates it before the work continues (Agents § 0.6).

Profiles in full — what each boots from, writes, may use, is denied, and the eval set that proves it: Components — Development § 3.

0.1 Its branch of the memory tree

source/
├─ AGENTS.md                     repo index + placement rules
├─ serdica-backend/
│  ├─ AGENTS.md                  index of service areas and microservices
│  └─ <microservice>/AGENTS.md   created on the first case that works it (Agents § 0.6)
├─ serdica-ui/AGENTS.md
├─ intentgpt/AGENTS.md
└─ db-plsql/AGENTS.md

Migration is wave 4 — per repository, as cases arrive (Agents Memory § 7); every seed a fact, linked.

Domain Owning profile Contents Seeds
source/ root and planner the seam catalogue per source, the placement criteria, the port procedure, the branch and environment map Stage Planning; branch/env map + divergence
source/serdica-backend backend implementer microservice index: platform services (Core, ApiGateway, IdentityServer, Authority, FileServer, NotificationService, PdfGeneration, RestApi/GraphQL/ServiceApi, ScheduleJobs, McpProxy), PAS services (Claims, PasPolicy, PasPolicyCrud, PasPremium, PasHealth, PasOperations, PasAnnexProcessing, PasBatch, PasClient, PasCustomerCrud, PasClaimsCrud, PasSrdIprodCrud, PasValidation, OutreachService), customer services under BusinessInsurance/ (BstPasPaymentPlan, BstPasPolicyService, PasClaim family, Integrations), Analytics/riskmodel, __Libraries [F: git ls-tree origin/master src/…, 31.08.2026]; per-microservice child nodes created on first case; the index is built for both source layouts* — master/bulstrad-qa and bulstrad-staging/bulstrad-prod — with a path map and the packaging (project reference vs NuGet) per lineage (§ 5 G15, G16) root AGENTS.md build/test/Vault toolchain F; LSP rule; compiled EF model; branch/env map + divergence
source/serdica-ui ui implementer Nx/formly mechanics, factor payload gates, admin-page work, the per-branch path map field validation; PC frontend-gate facts
source/intentgpt intentgpt implementer C built on first case — repo absent here; known: Beth+AI components, health path being replaced Beth anatomy; AI-program retirement manifest [F: branch tools, inspected 31.08.2026]
source/db-plsql plsql implementer extract-apply, release audit, UEXIT seams, per-env DB model 95 packages; workflow; 4-layer audit

P Divergence numbers live in memory with their measuring query, never as a quoted figure, because they change (Development Details DG-3).

0.2 Agents, methods and executable helpers

P Full definitions live on Agents and methods. Shared definitions are referenced from Common agents and methods. Each method owns its optional executable helpers; runtime/connector operations are not extra skills.

1. The stages

flowchart TB
  P["Plan the actual lineage"]:::work
  G["Confirm scope and plan
H1 / H2"]:::decision I["Implement and test
S3"]:::work V["Review the full series
S4 / H3"]:::proof R["Prepare joined release
S5 / H4"]:::work D["Authorise and deploy
S6 / S7"]:::decision T["Verify target and port"]:::proof X["H7 Reversal
then prove recovery"]:::decision K["Retain regression
and lineage knowledge"]:::learn P --> G G --> I I --> V V -.->|"correction"| I V --> R R --> D D --> T T -.->|"failed proof"| X T -.->|"after result"| K classDef work fill:#eef4ff,stroke:#6889ba,color:#17365b,stroke-width:1.3px classDef decision fill:#fff4df,stroke:#b78c36,color:#65470d,stroke-width:1.5px classDef proof fill:#e9f5ef,stroke:#689b81,color:#224e39,stroke-width:1.3px classDef learn fill:#f1edf9,stroke:#9580b9,color:#534172,stroke-width:1.3px classDef store fill:#f5f7fa,stroke:#98a6b7,color:#34445a,stroke-width:1.2px classDef owner fill:#24486b,stroke:#24486b,color:#ffffff,stroke-width:1.4px click P href "stage-planning.html" "Reproduce, define the outcome, choose the approved seam and target set." click G href "../gating.html" "Parent confirmation orders work; the required role confirms its scope." click I href "stage-implementation.html" "One case may contain many commits and several repositories." click V href "stage-test-and-corrections.html" "Include schema, lockfile, configuration and generated-contract changes." click R href "stage-deployment-scripts.html" "Pin code, rows, packages, consumer images, BPMN and external templates." click D href "stage-deploy-and-reversal.html" "Execute the compatibility order under current target permissions." click T href "stage-deploy-and-reversal.html" "Serving revision and customer outcome, not image publication alone." click X href "stage-deploy-and-reversal.html" "Reconcile unknown effects; compensate only what this case changed." click K href "../50-agents/agents-memory.html" "Evaluate changes before the next independent case uses them."

Delivery is a joined, verified outcome. Dashed edges are correction, reversal or learning; a failed target check cannot be replaced by a successful build.

Stage ids name the stage documents, not a running order (D83).

P Which environment a case works on and which it targets is knowledge per product line (D123): the existing policy-administration products develop locally, then bulstrad-staging (TEST), then PROD, porting to master → bulstrad-qa afterwards; the health line (product 8000) works on QA, ports to master and targets the planned bulstrad-prod-2. The paths and the branch set they resolve to are Stage Planning § PL-3.

P Two signed results, and no step after the workflow. S3's green gates per repository and the pipeline result are the evidence S4 and H4 read (Stage Test and Corrections, DG-7); S7's runtime verification — which commit actually serves — is the signed result that opens the port (Stage Deploy and Reversal, D114, D141). Deploy, test and revert are the definition of done (DG-5), so nothing in this module runs after the workflow. The states are those of Gating § 1b (D148).

Stage Page
S1–S2 planning, placement, the brief Planning
S3 implementation Implementation
S3 –S4 test, corrections, the merge request Test and Corrections
S5 deployment scripts, the port, the revert path Deployment Scripts
S6–S8 deploy, verify, revert Deploy and Reversal

Each page carries what happens there, what runs it, and the rules real changes forced onto it. This page keeps only what is common to all nine stages, documented on five pages (S1–S2, S3, S3 –S4, S5, S6–S8).

Deployment, testing, and revert are the definition of done — a change missing any of the three keeps the case open (goals DG-5).

P The rules the eight real changes forced are on the stage pages they belong to — each stage's Rules this stage carries section — rather than in one list here.

2. The agents

The module's agent tree, its branch of the memory tree and its skills are at the head of this page (§ 0); every profile in full is Components — Development § 3.

2b. What this module asks of the others, and what they ask of it

P Two mechanisms, defined once in Agents § 5: a consult returns knowledge and uses a read; a handover (Hd) returns a changed system and uses a gate. Both handover directions here carry the one handover packet (D142 — request, response, completion; draft contract in Contracts § 2).

What Development asks:

It asks Of When What it does with the answer
"What has gone wrong in this seam, this service, this product before?" Support — support/experience + the symptom domain S1 planning, before the brief it sizes the blast radius, which is the half of the brief a person actually argues about
"Is this behaviour a catalogue row rather than a code path?" Configuration — the owning stage domain S1, at placement yes ends the case here: Hd to Configuration, and no code is written for something a configuration cell owns
"What state is this product in, on this environment?" Configuration — configuration/ipal S1 and S7 verification tells a defect apart from a half-deployed product
"Configure this instead" Configuration — Hd after placement the sub-case does the work; its verified outcome returns to the owning case before closure

P The module manifest declares Hd on S1 with the handover packet as a produced contract: placement that ends in configure this instead hands the packet to source.root, which raises the gate.

What is asked of Development:

Asked By What answers it
"Does a deployed process fit this product's shape?" Configuration, at S3 source/serdica-backend — and no turns the consult into an Hd for the process itself (D86)
"Will this render, and to which roles?" Configuration, at S4 source/serdica-ui
"What has gone wrong in this service before?" Data & Manipulation, at S2 investigation (D144) the repository's own domain
"Build or fix this" Support and Configuration — Hd source.root accepts and opens a sub-case, or rejects with a reason

P Placement is where configuration, the customer seam and the core proposition meet. The placement decision asks, in order: is this configuration (Hd to Configuration), is it a customer-specific seam, or is it shared code (Core Development). Configuration goes to its own module; core scope is a classified request communicated with its offer and delivery terms; it does not continue through the Source stages. The placement and ownership decision therefore precedes implementation.

3. Sample case

The claims-search feature of 29.06.2026 replayed (Customer-Specific Development Module § 5 C1; backend ce4279c73f + UI c1a9cbe9b, ~1,700 lines in a day — F: evidence). S1: the change lives on the bulstrad-qa branch set (new layout: src/PolicyAdministrationSystem/Claims/… + serdica-ui apps/ipal/…), not on staging; placement is mixed — the search endpoint is core Claims (seam 4, a proposition), the Bulstrad-specific IBAN/card columns are the Bulstrad claims plug-in (seam 1); the brief names both and the interim duplication. S2: brief approved with the two-repository contract paper (DTO + route) and the deploy order UI-after-backend. S3: fix with failing test first in two worktrees. S3 : dotnet build + tests, nx build, pipeline green as evidence. S4: reviewer checklist (test placement, i18n set, csproj bumps, appsettings hunks) → MR → human accepts. S5: QA deploy set; no master counterpart yet for the core part is recorded and becomes the proposition; revert commits prepared. S6–S7: H4 + the effect applier on QA, the deployment agent resolves and triggers the estate’s pipeline job (D130; Ablera DevOps keeps the rights and the compose units), runtime verification (D114). Close: experience entry + a source/serdica-backend/claims node created by the summarizer for both layouts.

4. Evaluation

Golden corpus: merged changes (requirement in → merged commit + test evidence as reference), seeded from the UAT Health file's dual-estimated rows F: [CEO evidence]; graded on placement, diff shape, and test coverage; re-runs when source/* domains or model routes change.

5. Real material — eight live changes

P Reading status. These are architecture test cases and historical gap records. Current execution and closure follow Runtime and Deploy and Reversal; an old quoted “closes against the issue” statement does not discharge a requested customer delivery.

F Re-read against the customer line on 07.09.2026 (Customer-specific development module — typical cases): C2, C4, C5 and C6 are typical shapes of the 300 backend and 134 UI commits on bulstrad-staging since 06.2025; C8 is typical in delivery and rare in content; C1 and C7 are architecture tests (C1 is not on the customer line at all); C3 is configuration. The eight miss the seven most frequent real shapes — product processes, print rules, the reinsurance stream, product premium rules, partner registration, party data, agents and commissions — which the typical-cases page carries as DV-01 … DV-07, with the census and the challenges the real changes raise against this page.

P Each of the 19 has a journey. DV-01 … DV-19 are traced through the platform as designed — brief and placement, the worktree, the tested change, the reviewed merge request, the release the estate's own pipeline runs, the runtime check, the revert path and the port — in the interactive case walkthrough, case by case from Typical cases. Case journeys states the rules, Case Protocol the service boundaries; both carry the variant that must fail.

Method: each case is a change that actually happened (or is actually open) in the Bulstrad estate, replayed through the v2 Development stages S1–S8 as written in the Customer-Specific Development Module page (file 10 Architecture/30 Source/Source Module.md), Stage Planning, and the platform pages they lean on. Repository facts were read with git over origin/<branch> refs in serdica-backend and serdica-ui on 02.09.2026, never by checkout. DB facts come from the linked memories, not fresh queries. Every "breaks" item quotes the page and section it contradicts; every gap ends in a proposal with a target page.

Two estate facts recur in nearly every case and are stated once here:


C1 — The claims-search feature (backend ce4279c73f + UI c1a9cbe9b, 29.06.2026)

The case. UAT Health row #30: search claims by IBAN / member card / email. One author, one day, both commits landed directly on bulstrad-qa. Backend: 20 files, +1,408/−8, all under src/PolicyAdministrationSystem/Claims/ — a generic pluggable framework in the service core (Claims.Abstractions/Contracts/IClaimSearchFilter.cs, App/Services/Search/ClaimSearchService.cs, App/Endpoints/Search/SearchClaimsEndpoint.cs, Contracts/Processing/ClaimSearchDtos.cs) plus one customer/health-specific filter in a plugin (__Plugins/Claims.Plugin.Health/Services/Search/MemberCardSearchFilter.cs), seven plugin .csproj bumps, and 777 lines of tests — all of them placed in test/Claims.Plugin.Health.Tests, including the tests of the core service. UI: 15 files, +276/−83 — claims.component.ts, a new claim-search.adapter.ts, three service files, and i18n keys in four languages (ar/bg/en/es) in two file sets each. The Claims microservice has zero files on bulstrad-staging and bulstrad-prod (only 2023 Routes_For_INSIS-Claims migrations); the UI on those branches has a claims-list component reading claims from elsewhere. No DB change.

v2 walk-through.

Where the architecture breaks or is silent.

Gaps → proposals. G1 rewrite Customer-Specific Development Module § 3 with the real branch set and the real mixed placement (Customer-Specific Development Module). G2 add a mixed-seam rule to Stage Planning § PL-1: the customer part ships in the customer lineage now; the core part becomes a proposition and an interim copy in the customer seam where the plugin needs it, with the duplication recorded as debt (Stage Planning). G3 replace "the bulstrad-prod set" with "the target set named in the brief" (Stage Deployment Scripts). G4 is closed by QA = H4 + effect applier and STAGING/TEST/PROD = H4 + H5 (D114). G5 add an inter-repo contract paper (DTO/route) to the case papers and a deploy order to S5 (Stage Planning; Stage Implementation). G6 write the reviewer's checklist (Stage Test and Corrections § Rules). G7 put the MR in the flow: S4 ends with an MR to the environment branch; its CI pipeline result is S3 evidence; the merger is the deployer under H4 (Stage Test and Corrections § Rules).


C2 — SD-1863: PROD SRD_INTEGR.POLQRY stub raising ORA-06503

The case. The print gate OBJECT_CREDITED( (backend commits 0561840d4f, 52de8b3721 on staging; f7c6fba83a on prod 24.08.2026) calls POLQRY.gINSIS_CREDITED_OBJ_IDS. On PROD the package spec had been promoted and the body recompiled from it, leaving the function as BEGIN NULL; END; — STATUS='VALID', raising ORA-06503 on every call, surfacing through the caller's fail-safe as "no data" (memory). TEST returned 3213616087,3213616088 for the same argument. Signature comparison — spec 19756319, body lines 1..87 255288638, equal on both — proved a whole-body CREATE OR REPLACE PACKAGE BODY from staging would be surgical. POLQRY is not in git (workflow memory); the PL/SQL developer edits packages directly on QA and commits nothing (Stage Planning § 3b). The related incident: a spec change to ABC_PREM_OBJ on 15.05.2026 broke every ABACUS-priced product for 23 minutes because INSIS.ABC_ACCESS.* callers over @abacus do not revalidate (memory).

v2 walk-through.

Where the architecture breaks or is silent.

Gaps → proposals. G8 redefine seam 3 as "the environment's DB-resident PL/SQL — the SRD_INTEGR/SRD_IPROD/SRD_CUST packages, UEXIT_* among them" (Stage Planning § PL-1). G9 add effect class DDL / auto-committed with "undo = compensating re-apply of the pre-apply snapshot" (F&R § 2; Agent Runtime § 5). G10 decide the seam-3 apply identity per environment and add a unified-audit policy on CREATE/ALTER PACKAGE for it (Software Architecture § 10; Stage Planning § 3b already raises the policy). G11 make S3 for seam-3 promotions = "signature proof + real call on the source env", and S7 = the same call on the target (Stage Test and Corrections). G12 add the INSIS-side dependency query and the PROD / INSIS / read grant to every seam-3 plan that touches a spec (Stage Planning § 3b table).


C3 — A serdica-ui fix: the formly dependency machinery (field-generator.ts)

The case. Stage IPAL § PF-8: a DEPENDENT_ON_FACTOR value without | makes the onInit dependency machinery return early, the list is never filtered and falls through to the full store list — and 137 live rows on the Ablera DEV database (PROD 102 · TEST 103 · QA 126 on 03.09.2026) are in that state, so it is the estate's normal configuration, not a defect backlog. The code: on master libs/serdica-utils/src/lib/serdica-utils/formly/field-generator.ts:471 (const [mainFactor, dependOnKey] = factor.dependentOnFactor.split('|'), 610 lines); on bulstrad-staging/bulstrad-prod the same logic lives at a different path — libs/serdica-shared/src/lib/formly/field-generator.ts:475 (640 lines). KI-054 recorded the file as "absent on bulstrad-prod"; it is present under the older path — the memory is wrong about absence and right about drift. A comparable real staging UI fix for scale: 6a76d8df1 fix(SD-2005): extend cargo framework visibility — one file, +4/−3, 06.08.2026.

v2 walk-through.

Where the architecture breaks or is silent.

Gaps → proposals. G13 add a placement pre-question to S1: configuration, code, or both — with Hd to Configuration when the data is the fix (Stage Planning § PL-2). G14 declare the browser connector's evidence class: screenshots are customer-identifying, stored as artefacts under the Support boundary, never inlined into a prompt; prefer DOM text through the handle substitution (Trust and Data § 4; Architecture § 1 tools row). G15 seed source/serdica-ui with a per-branch path map (shared vs utils) and the CI facts (no test stage; env-neutral build) (§ 0.1).


C4 — One fix on bulstrad-staging, ported to master: the two-layout problem

The case. 39c4f21b32 (27.08.2026, staging): "Add policy flat rate endpoint and consolidate the PasPolicy Bulstrad plugin" — 38 files. Paths on staging: src/BusinessInsurance/PasPolicy/…; the same service on master: src/PolicyAdministrationSystem/PasPolicy/…. The commit also touches .gitlab-ci/configs/services/pas-policy.yml (hand-written on staging; on master the equivalent is generated, .gitlab-ci/autogenerated/microservices/pas-policy.yml), PasPolicy.Dockerfile, PasPolicy.sln (75 lines), appsettings.json (3 lines), a new __Plugins/PasPolicy.Plugin.Bulstrad.Dockerfile, and deletes PasPolicy.Plugin.Registration.Bulstrad/Standard — a staging-only consolidation (AGENTS.md@bulstrad-staging:5 says PasPolicy on this branch defaults to Registration.Bulstrad). Second instance: SD-1863's 0561840d4f — staging path src/BusinessInsurance/Integrations/BstPrintDocuments/App/Services/PrintDocuments/PrintPolicyDocuments.cs, master path src/PolicyAdministrationSystem/__Integrations/BstIntegration/App/Services/BstPrintDocuments/PrintDocuments/PrintPolicyDocuments.cs, plus an appsettings.json bundled in the feature commit (the cherry-pick variant in the branch memory).

v2 walk-through.

Where the architecture breaks or is silent.

Gaps → proposals. G16 the summarizer creates source/serdica-backend/<service> with both trees, a path map, the plugin packaging per lineage and the CI file kind (Agents § 0 for the summarizer; § 0.1 for the node). G17 replace "cherry-pick" with a port procedure: functional-paths patch → merge-tree feasibility → path rewrite → layout files excluded → CI regenerated → appsettings proof gates → "adapted" recorded in the commit when it was (Customer-Specific Development Module § 1; Development Details DG-2). G18 move the master port after prod verification, or make the order a brief decision (Stage Deployment Scripts). G19 add a per-lineage seam table, or state that Stage Planning § PL-1 names master paths and the source/serdica-backend node holds the path map (Stage Planning § PL-1).


C5 — A per-branch appsettings.json change

The case. 64 appsettings.json files on bulstrad-staging; the appsettings-only staging→prod diff touches 44 of them (+541/−688), while the whole diff is 379 files (+2,847/−15,761). Two facts the wiki does not carry: (1) the committed src/Core/Core/appsettings.json on bulstrad-prod points ApiGateway, Redis, RabbitMQ and Camunda at serdicatest.bulstrad.bg — the decommissioned old TEST hostname; (2) the committed PasNotes appsettings.json on bulstrad-prod carries a connection string to 10.239.82.106 — the QA database — with a schema user. Neither is what PROD runs, so the branch's appsettings is not a description of the environment: the running values are injected at deploy time. On the old layout there are zero AddEnvironmentVariables("SERDICA_…") hits in source, yet AGENTS.md@bulstrad-staging:7 says Bulstrad deployments inject SERDICA_Serilog__… "through shared infra vars" — the binding lives in a NuGet package the agent cannot read on that branch. The same file also holds functional config: Core's RabbitMQRoutingConfig.RouteConfigs (command → exchange/queue), where pas_policy.register_policy exists on staging and not on prod (CH-25), and PasNotes' MaxPageSize: 100 (staging only — the KI-044 cap). Real commits: d7f8c72210 (staging, 19.08) edits PasNotes appsettings.json alongside library code; 0561840d4f bundles staging RabbitMQ/Redis/Oracle/BI Publisher addresses into a print fix.

v2 walk-through.

Where the architecture breaks or is silent.

Gaps → proposals. G20 add a config item class to S1's branch set: per-branch file, deploy-time override checked, functional vs environmental keys separated; record for each key whether Ansible/compose overrides it (Stage Planning § Rules; Software Architecture § 10). G21 worktree secret scrubbing — a pre-read filter on *appsettings*.json, *.env, connection strings; the implementer sees redacted values and edits by key (Trust and Data § 4; Agent Runtime § 2 rule 3). G22 add a host connector (SSH to the compose hosts, read-only exec + restart as a gated write) to the connector list; seed from ssh-mcp (Architecture § 1; Software Architecture § 10). G23 add read access to serdica-infrastructure (a GitLab project token) as a Development-module prerequisite (Software Architecture § 10).


C6 — A Camunda process for a new product (Hd: Configuration → Development)

The case. Product 3606 on staging, 06.07.2026: c37e140c76 "Product 3606 Creation Staging" is exactly two files — …/Policy/…/Products/GuestsAtTouristSites…PolicyIssue3606Single.bpmn (51 lines) and its …3606SingleUserTasks.cs (64 lines) under src/Core/Plugins/Core.Plugin.Bulstrad/; the UI commit 147767697 adds one i18n key in three languages. The shape is the generator's: per line-of-business Generate<Line>Products.sh scripts stamp <Key><Code>.bpmn + <Key><Code>UserTasks.cs from a template (17 liability products in one script). Deployment mechanics (WorkflowClient.LoadProcesses, staging src/Core/Core/WorkflowEngine/WorkflowClient.cs): at Core start-up every *.bpmn under WorkflowEngine/Processes, the plugin Processes/, and EnvSpecific/{SERDICA_PROJECT_ENV} is uploaded to Camunda via REST Deployments.Create(duplicateFiltering: true); a higher folder overrides a lower one by file name. 168 BPMN files on staging, 185 on master. On master, Camunda obsoletion decision.md (11.02.2026, "Proposed") plans the move to Elsa Workflows; Camunda 7 CE is end-of-life. The Configuration module's S4 Serdica says: "the process itself is Development-module work (Hd), its registration is configuration" (Stage Serdica).

v2 walk-through.

Where the architecture breaks or is silent.

Gaps → proposals. G24 a source/serdica-backend/core node section on the Camunda mechanics (start-up upload, name override, versioning, revert semantics, instance migration), created by the summarizer on the first case (§ 0.1). G25 define the camunda developer profile: writes to source/serdica-backend/core, tools = worktree + the generator scripts + a Camunda REST connector (read: definitions, instances; gated write: start, terminate, migrate) (Components — Development § 3; Architecture § 1). G26 a process-change case type with effect classes for start/terminate and a revert statement about in-flight instances (Customer-Specific Development Module § 1; F&R § 2). G27 record the Elsa decision as a lineage fact and let the brief choose "port to master" / "port as Elsa" / "no master counterpart" (Stage Planning § PL-3; Stage Deployment Scripts).


C7 — A Known Issue that is code: KI-044 (pas_notes_getlist unbounded reply → RabbitMQ 406)

The case. KNOWN_ISSUES KI-044: one scopeless pas_notes_getlist with filters:[] and pageSize:-1 selected all 1,152,205 SR_USER_NOTES rows, a ≈292 MiB reply exceeded the broker's 128 MiB max_message_size, RabbitMQ closed the channel, and /pas-notes — whose RabbitClient holds one channel created in its constructor and publishes without an IsOpen check — replayed the close-reason for hours; the gateway answered HTTP 200 with an empty list, operators saw "Бележки 0". Immediate relief: restart /pas-notes. The fix set spans six owners: (a) SrUserNotesGetListOperation.AllSelector base scope + pageSize cap + reject scopeless — PasNotes; (b) channel recovery on 406 + reply-size check — the RabbitMQSerdica library (src/Common/CommonCustomLibraries/RabbitMQSerdica/ on staging); (c) serdica-ui never sends filters:[]; (d) ApiGateway returns a real error on TaskStore timeout; (e) broker max_message_size; (f) Bulstrad archiving of SR_USER_NOTES. Lineage fact: SrUserNotesGetListOperation.cs exists on bulstrad-prod and bulstrad-staging only; on master/bulstrad-qa PasNotes is ten generated doc/*.md files and no code. The generic half of (a) already shipped: d7f8c72210 "Clamp the no limit requests" (staging, 19.08) in CrudBaseServices (see C8).

v2 walk-through.

Where the architecture breaks or is silent.

Gaps → proposals. G28 S1 emits a placement matrix (component → seam → module/owner) and opens one sub-case per row, with an ordering statement (Stage Planning § Rules; Agent Runtime § 11). G29 add "no master counterpart — recorded, with the reason" as a legitimate S5 outcome (Customer-Specific Development Module § 1; Development Details DG-2). G30 rank simulation venues: platform-shared resources and customer-facing environments need a blast-radius statement in the plan; prefer an isolated compose unit for broker/message tests (F&R § 5). G31 an operations action kind — restart, scale, broker setting — through the host and RabbitMQ connectors under H5-equivalent gating (Stage Deploy and Reversal § Rules; Architecture § 1). G32 describe the NuGet release path for old-layout libraries in S5 (Stage Deployment Scripts; source/serdica-backend node).


C8 — A genuinely standard change and how it leaves the module: "Clamp the no limit requests"

The case. d7f8c72210 (staging, 19.08.2026) adds PagingHelper.cs (+57), a MaxPageSize setting in MainServiceConfig, a clamp in GetListCrudOperation and BaseMainService, and bumps the Ablera.Serdica.CrudBaseServices package version — in src/Common/CommonCustomLibraries/ (NuGet on the old layout) — plus the PasNotes appsettings.json value. Eleven days later a44b7e21c8 (bulstrad-qa, 30.08) is the same five code files re-applied by hand under src/PolicyAdministrationSystem/__Libraries/Ablera.Serdica.CrudBaseServices/ (project reference on the new layout), no appsettings; master received it by merge on 31.08. The UI counterpart 8b7860a1c "Fix big unclamped loads of configurations data" (staging, 30.08) touches 17 components and adds a spec. This is the textbook seam-4 case: every customer benefits from clamping pageSize:-1; it was also urgent for Bulstrad (KI-044, S2, no workaround).

P Current AISA handling. Support classifies this as Core Development because the mechanism and benefit are shared. The root prepares the request/evidence and identifies the commercial/development owner. The communicator requests or conveys the offer, effort/price basis, delivery estimate, assumptions and customer response. No AISA S2–S8 implementation, release or urgent dual-path exception follows, including after acceptance. The historical commits above remain evidence for scope, dependencies and a realistic estimate; they do not define AISA's permitted work.

P What the communicated request must preserve. The shared library and affected consumers, the old/new lineage difference, configuration dependencies and acceptance evidence belong in the owner brief. A known estimate is labelled as proposed until the owner commits to it. A missing offer/date remains an open communication item. Core Development requests owns the complete contract.

P Review conclusions. G33's urgency exception is withdrawn: urgency affects communication and the owner's offer, not AISA implementation authority. G34 keeps a concrete owner/request reference and returned commercial terms. G35's package/consumer dependency facts remain valid for the request brief and customer-specific Source releases. G36's lineage dimension remains valid for source evaluations.


Gap table

# Gap Evidence Target page Proposal Status
G1 Sample case names a branch set and placement that cannot exist C1 Customer-Specific Development Module § 3 (this page) rewrite with the real QA branch set and the real core+plugin split closed — § 3
G2 No mixed-seam rule; the proposition rule splits one feature C1 Stage Planning § PL-1 customer part ships now; core part = proposition + recorded interim duplication closed — Stage Planning § PL-1
G3 S5 hard-codes "the bulstrad-prod set" C1 — "the target set named in the brief" closed — Stage Deployment Scripts § 4
G4 No gate for non-production deploys (QA/staging) C1, C3, C6 — add H4b or scope H4 to a named environment closed — Stage Deploy and Reversal § 4; QA = H4 + auditor, STAGING/TEST = H4 + H5 (D114)
G5 No inter-repo contract check or deploy order C1 — contract paper (DTO/route) + deploy order in S5 closed — Stage Planning § Rules; Stage Implementation § Rules
G6 Reviewer has no criteria C1 Stage Test and Corrections § Rules; Agent Framework § 6.5 for the scoring reviewer checklist: test placement, i18n set, csproj bumps, appsettings hunks residual: checklist exists in Stage Test and Corrections; eval scoring remains external
G7 GitLab MR, CI result and merger absent from the flow C1, all — S4 ends in an MR; pipeline result is S3 evidence; deployer merges under H4 closed — Stage Test and Corrections § Rules
G8 Seam 3 defined as UEXIT_* only C2 Stage Planning § PL-1 seam 3 = the environment's DB-resident PL/SQL closed — Stage Planning § PL-1
G9 DDL has no effect class / write shape C2 — class "DDL, auto-committed; undo = re-apply pre-apply snapshot" closed — Stage Planning § 3b and Failure and Recovery § 2 (D60)
G10 Seam-3 apply identity on PROD undecided and unaudited C2 Software Architecture § 10; Stage Planning § 3b name the account per env; unified-audit policy on it residual: D104 names executor/stage identity; audit policy remains owner work
G11 S3 vacuous for promotion cases C2 — S3 = signature proof + real call on source env; S7 = same call on target closed — Stage Test and Corrections § Rules
G12 Cross-DB dependency check names no tool or grant C2 Stage Planning § 3b INSIS-side ALL_DEPENDENCIES + PROD / INSIS / read in the plan closed — Stage Planning § 3b
G13 No "configuration, code, or both?" pre-question C3 — placement pre-question with Hd to Configuration closed — Stage Planning § Rules
G14 Browser evidence (screenshots) bypasses the handle boundary C3 — screenshots = customer-identifying artefacts; prefer DOM text through handles closed — Trust and Data § 4 (D116)
G15 source/serdica-ui seeded master-shaped; UI CI facts missing C3 § 0.1 (this page); Agents Memory Part I per-branch path map; "no test stage, env-neutral build" facts residual: belongs to Agents Memory; not assigned
G16 Microservice index built from master only C4 § 0.1 (this page); Agents § 0 for the summarizer summarizer builds both trees + path map + packaging per lineage residual: belongs to Agents Memory; not assigned
G17 "Cherry-pick" is wrong across layouts C4 — port procedure with merge-tree feasibility, path rewrite, layout files excluded, CI regenerated closed — Stage Deployment Scripts § Rules
G18 Port order contradicts the estate fix rule C4 — master port after prod verification, or a brief decision closed — Stage Deployment Scripts § Rules; Stage Deploy and Reversal § Rules
G19 Seam table is master-layout C4 Stage Planning § PL-1 per-lineage seam paths, or an explicit statement + node reference closed — Stage Planning § PL-1
G20 Committed appsettings ≠ running config; functional and env keys share a file C5 — config-item class in the branch set; per-key override check closed — Stage Planning § Rules
G21 Secrets in worktree files reach the model C5 — pre-read scrubbing of appsettings/.env/connection strings closed — Stage Implementation § Rules (D116)
G22 No host/SSH connector for runtime verification or restarts C5, C7 — host connector seeded from ssh-mcp; restart as gated write closed — Components § 5 and Stage Deploy and Reversal § Rules
G23 serdica-infrastructure invisible to the platform C5, C6 Software Architecture § 10 read token on the repo as a Development prerequisite residual: the token is an estate grant, not a wiki decision
G24 Camunda deployment/versioning/revert semantics absent C6 Agents Memory Part I (source/serdica-backend/core) node section on start-up upload, name override, versions, migration residual: mechanics described in case; memory node outside this edit set
G25 Camunda developer sub-agent has no profile/node/tools C6 — profile + Camunda REST connector (read; gated start/terminate/migrate) closed — Components § 3
G26 Process test/teardown has no effect inventory in Development C6 — process-change case type with effect classes and in-flight-instance statement closed — Stage Deploy and Reversal § Rules
G27 Elsa decision on master unknown to the port rule C6 — lineage fact; brief chooses port / port-as-Elsa / no counterpart closed — Stage Deployment Scripts § Rules
G28 No decomposition of a multi-placement case C7 — placement matrix → one sub-case per row + ordering closed — Stage Planning § Rules
G29 "No master counterpart" not an allowed S5 outcome C7 — record the outcome with reason; DG-5 satisfied closed — Stage Deployment Scripts § Rules
G30 Simulation venues treated as equal C7 Failure and Recovery § 5 rank venues by co-tenants; staging is customer-facing; isolated compose for broker tests closed — Failure and Recovery § 5 ranks venues; D114 for the customer-facing half
G31 Operations actions have no module/connector/gate C7 — "operations action" kind through host/RabbitMQ connectors under gate closed — Stage Deploy and Reversal § Rules
G32 Old-layout library fix = NuGet release + consumer rebuilds, undescribed C7, C8 source/serdica-backend node (§ 0.1) enumerate the deploy set closed — Stage Deployment Scripts § Rules
G33 Shared-core urgency was treated as an implementation exception C8 Core Development requests classification and request/offer/delivery communication only; no AISA implementation pipeline decided — current user scope
G34 "Development" undefined as a destination C8 Stage Planning § PL-1 proposition = GitLab issue/MR on master with brief; id in ledger; return signal closed — Stage Planning § PL-1 (D108)
G35 Blast radius of seam 4 on the old layout under-described C8 Stage Planning § PL-1 add "every consuming service image on this environment" closed — Stage Planning § PL-1; Stage Deployment Scripts § Rules
G36 Development eval corpus has no lineage dimension C8 Agent Framework § 6.5; § 4 (this page) grade a lineage pair as one requirement residual: the corpus is built with the first cases

Coverage: 8 cases · 4 repositories/surfaces (serdica-backend both layouts, serdica-ui both layouts, DB-resident PL/SQL, Camunda) · all four seams exercised (1: C1/C6, 2: C4/C7, 3: C2, 4: C1/C3/C8) · all nine stages and gates H2, H3, H4, H5, H7 and Hd walked · 36 gaps, of which 7 are contradictions with facts in the estate or the wiki itself (G1, G3, G8, G17, G18, G19, G20) and 29 are silences. Not covered: intentgpt (repository absent — CH-05/CH-30 stand), a DB-model (dbml/migration) change, and any case starting from the mailbox or HDesk channels.