☰ Contents
AISA v2.0 / Technical documentation / Components — Configuration module

Components — Configuration module

F verified factP decided planC open challenge

Purpose

Configuration Module says what the module does; Configuration Module says what each stage owes its neighbours. This page says what has to be built: every component of the module, its kind, what it consumes and produces, how it is proved done, and who can build it without waiting for anyone else. It is the phase-1 deliverable for this module and the work breakdown for phase 2 (Delivery § 1, Delivery § 1.4).

Evidence base: the wiki's stage pages, and the three configurator documents of 03.09.2026 — Requirements, Design, Product design — reconciled in Product Configurator § A. Rows marked new 03.09 come from that reconciliation and are additions to the module as previously specified.

0. The six kinds of component

P Every component of every module is one of six kinds. The kind decides who builds it, what "done" means, and whether two of them can be built in parallel.

Kind Is Built by Done when
Agent a versioned profile: published prompt, one owned memory domain, tools per environment scope, denied context, budget, eval set (Agents § 0.1) an agent author — no code its own eval set is green and the publisher role makes it live
Skill an executable operation: inputs, connector calls, assertions, dry-run default, teardown (Agents Memory and Skills) a developer with the domain owner it runs read-only on a real target and its assertions fire on a known-bad case
Projection deterministic code from the validated model to an artefact — SQL per part, the rendered document, the export a developer, alone the same model produces the same artefact twice, and a reviewer can read the code
Contract a schema plus the validator that enforces what a schema cannot the contract author (track T0) the deliberately broken fixture is rejected with one message per rule
Connector operation one operation with its capability description — input, target, effect class, authorization, timeout behaviour, recovery (Failure and Recovery § 4) a connector developer the operation refuses out of scope before contact, and its evidence returns
Memory domain one AGENTS.md node and its articles (Agents Memory § 1) the domain owner (knowledge stream) its held-out triage hit-rate beats the grep baseline (Agents Memory § 7.2)

P The kinds are not layers. One deliverable of the module — "the Abacus stage" — is an agent, three skills, one projection and a memory domain, and those four are built by different people against the contracts of § 2.

1. The map

flowchart TB
  C["Typed case contracts"]:::store
  A["Published agent profiles"]:::work
  S["Executable skills"]:::work
  G["Auditor, gates and grants"]:::decision
  X["Connector execution"]:::work
  P["Proof and delivery"]:::proof
  M["Experience and evaluation"]:::learn
  C -->|"validated input"| A
  A -->|"invoke"| S
  S -->|"effect proposal"| G
  G -->|"authorised operation"| X
  X -->|"recorded result"| P
  P -.->|"learn after result"| M
  M -.->|"published revision"| A
  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 C href "../contracts.html" "Inputs, selected plan, obligations and signed result contracts are built first."
  click A href "configuration-module.html" "normalizer; Abacus, IPAL, Offer and Serdica stage owners"
  click S href "../50-agents/agents-memory.html" "Deterministic procedures and assertions; no target permission is inherited from a skill."
  click G href "../gating.html" "Every applicable requirement is bound to the current proposal."
  click X href "../contracts/Connectors.Abstractions.cs.html" "Registered read operations and separately granted effects use their own recovery form."
  click P href "../case-protocol.html" "Verify the complete requested target and any external dependencies."
  click M href "../50-agents/agents-memory.html" "Record outcome; evaluate proposed knowledge or skill changes before reuse."

Configuration component responsibilities. The tables below enumerate each profile, skill and connector; this map shows their contracts and handoffs.

2. Contracts — the four that block everything else

P These are track T0 (Delivery § 1). Until they exist, five stage authors cannot start; once they exist, the five never need to talk to each other.

Component What it fixes Consumes → produces Done test
product.schema.json + validator the shape of a product specification, product-agnostic (D67); the validator holds the semantic rules a schema cannot — it recomputes reconciliation counts from the body, requires a layer_model where the tariff repeats, resolves every cross-reference, holds H1 open on an unanswered contradiction (Stage Normalization § WS-2) S1's output → every later stage's input F the broken fixture is rejected with nine semantic blockers (contracts/fixtures/broken.product.json, written 02.09.2026) — 2 reconciliation, 1 layer model, 4 cross-reference, 1 duplicate default, 1 blocking unresolved[]; structural errors are additional when jsonschema is installed; schema 1.1 adds one violation per new rule
Configuration summary the 31 fields S2 hands S3 — covers as rated, loadings with their bases and order, the factors the grids key on, what the engine demands (Stage Abacus); it is the body of the tariff sign-out phase 1's output → phase 2's input phase 2's plans can be built from the summary alone, with no access to phase 1's transcript. Draft configuration-summary.schema.json (D139)
Sign-out document · new 03.09 the six sections every phase hands on: what was built with counts from the write log · what was tested with its assertions · the proof rung reached · what the next phase needs · what is open · what was written and how to undo it (Configuration Module § 1b, D75) each phase's output → the next phase's only input a person picking the case up on another day plans the next phase from the sign-out and nothing else. Draft sign-out-document.schema.json
Stage contract eleven phases (ten steps, 8b splitting the approval of execution from the approval of the scripts), the assertion form, the done test, what a stage may not do (Configuration Module) binds all five stage prompts an author who has read it writes their stage without asking a neighbour. Draft stage-contract.schema.json

P The drafts are drafts on purpose (D139, Contracts § 2): a required core the platform validates and an open body a case may extend; a stage that adds a field records it in its sign-out, and the author lifts recurring additions into the next draft version.

P Three additions from the configurator documents (new 03.09):

3. Agents — one author, one prompt, one memory domain

P Every row is a profile in the Agents catalogue. The two right-hand columns are what makes the authors independent: a disjoint domain, and an eval set that runs without the other four stages.

P The graph — who spawns whom, which sub-agents are isolated, and where the write path runs. The table under it carries every profile in full; the platform-wide profiles these draw on are Agents § 1.

flowchart TB
  R["Configuration root"]:::owner
  P["Planning and specialist tasks"]:::work
  K["Own index and
selected domain knowledge"]:::learn T["Typed plan and result papers"]:::store V["Independent review"]:::proof G["Required decisions"]:::decision E["Execution coordinator"]:::work R -->|"assign bounded task"| P K -.->|"context"| P P -->|"propose and report"| T T -->|"independent evidence"| V V -.->|"verdict"| R T -->|"reviewable packet"| G G -->|"permit"| E 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 "configuration-module.html" "The root owns the bounded objective and confirms child plans." click P href "configuration-module.html" "normalizer; Abacus, IPAL, Offer and Serdica stage owners" click K href "../50-agents/agents-memory.html" "Read compatible knowledge; consult its owner for judgement; write only in owned domains." click T href "../case-protocol.html" "Task text, evidence, scope and completed assertions remain durable." click V href "../50-agents/agents.html" "The verifier or reviewer receives scoped evidence without the author's transcript." click G href "../gating.html" "Root presents unresolved scope and permission decisions; it cannot invent authority." click E href "../50-agents/agent-runtime.html" "The deterministic handler applies only a current permitted packet."

Task ownership and review: a profile is reusable across cases. Each task has its own parent, inputs, evidence and restricted tool catalogue; the root remains responsible for the result.

Agent Owns, and its hardest judgement In → Out Memory (boots from → writes) Tools (env scope) Denied Escalates Eval set
configuration.root the handover packet it is reached by (or, for a case started in place, the intake conversation), the stage set, the working environment, the deployment set, every gate packet — which stages this case actually needs, and when a gap is a handover rather than a question handover packet (D142, fields in Agents § 5 / Contracts § 2) or operator conversation → case type, stage set, environment, deployment set (plan rev 1); stage Results → next stage / gate packets; DeadEnd → H6 configuration/ none directly; spawns write executors the human (the only one) ten intakes → the stage set and deployment set each should produce
configuration.normalizer S1: the source inventory, the specification, the open questions — which of two sources is authoritative for a part, and what the set is silent about raw material → product.json + generated product.md + unresolved[]; contradictions → Question (batched) configuration/normalization connector readers and scoped catalogue reads for live-code mapping mutating connectors; tariff analyst remains entirely DB-blind root; after two failed reconciliations → Question real source sets → the specification the author wrote by hand, diffed field by field
configuration.tariff_analyst isolated the pricing half of the specification, in the document's own vocabulary — reading a rate as the document writes it, and marking a silence as not stated rather than inferring a market value tariff documents → tariff, ld, layer_model sections with double extraction and suspect cells configuration/normalization → none none all DB connectors, the rest of the spec normalizer tariff documents → rate structures, graded on covers found, units, silences marked
configuration.estate_prober isolated · new 03.09 measured counts for every column a stage will set: constraint, live distribution, row and product counts, the date — keeping permitted distinct from used, and returning counts where an adjective is wanted column set → counts and dates, no product intent configuration/ oracle-iprod read, oracle-anlt read (§ 6) the specification and the product code root a column set → the counts, checked against a direct query
configuration.abacus.stage S2: rating versions, the configuration summary, the tariff script set — which rule a grid can hold and which is a filter — code, therefore a handover spec sections → rating versions on the working env, configuration summary, script set; Plan → H2; results → H3 configuration/abacus oracle-anlt (read; write via executor), gateway getRates (read) — working env writes without executor root; unknown engine contract → consult source.backend after two attempts tariff sections → rating that prices the worked examples to the cent
configuration.ipal.stage S3: catalogue, covers, definitions, factors, and the process registration (D86) — whether a deployed process fits this product's shape, before anything is written summary + spec → catalogue, factors (POL only), policy skill green; process-fit pre-check → Hd if none fits configuration/ipal oracle-iprod (read; write via executor), camunda (read; process registration as a gated write — D86), browser (policy skill) writes without executor root summaries + specifications → a catalogue the policy skill can drive
configuration.offer.stage S4: packages, extents, preset limits, the rules between covers — the commercial shape — which covers are mandatory, recommended, optional catalogue + offers → packages, rules, template links; offer skill green configuration/offer oracle-iprod LB tables (read; write via executor), gateway root packaging wishes → an offer matrix whose rules fire on constructed violations
configuration.serdica.stage S5: routes, labels, endpoints, roles, numbering, print — what makes the product reachable, which is where "configured" historically diverges from "usable" tariff sign-out + specification requirements → wiring, labels, roles, numbering, print; deploy-coupled items flagged configuration/serdica oracle-sys (Routes, EndPoints, roles, messages), oracle-integr (numbering, print), camunda read, GitLab (deploy-coupled appsettings as a proposition) user assignment (roles only — D31); process registration belongs to S3 (D86) root; process not fitting → Hd products → the wiring set, with the deploy-coupled items flagged
configuration.verifier isolated the phase-5 and phase-10 verdict on the proof level claimed — whether the evidence supports the rung, or only the one below it phase-5 / phase-10 evidence → Verdict on the proof level claimed configuration/ → none read connectors on working and target env author transcripts, provenance root evidence packets → agree / disagree, with the separating evidence
configuration.deployer phases 7–10: the script set, the deploy request, the smoke tests, the teardown — the blast radius of a deploy — which versions consume a changed rate file approved script set + H5 grant → applied set, smoke results, teardown recorded configuration/ → none write executors per target env, skill runners read-only on target anything outside the approved set root; H7 for teardown approved sets → the executed set, its smoke results and its recorded teardown

P The estate prober is new, and it is an isolation, not a specialisation (new 03.09). It is told nothing about the product being built and cannot ask, so it cannot return the answer the caller wants; it returns the constraint, the live distribution, the counts and the measurement date, never a recommendation or a "usual value" F (Design § 04). Why it is worth a profile: the estate is evidence, not a template, and the failure it prevents is measured — PR_BASIC_LD.LD_TYPE permits FEE (check constraint PR_BASIC_LD_TYPE_CK, verified on PROD 07.09.2026) and 0 of 1 465 rows use it; MSG_TYPE permits LABEL and 22 rows carry it F (Requirements § 04). Being the first product to use a permitted value is allowed; doing it without noticing is the failure.

P What each isolation denies, because isolation is provisioning and not an instruction (Agents § 0.2): the tariff analyst's scope contains no database connector and no schema vocabulary, so storage cannot bend its reading; the estate prober's task carries no product intent; the verifier's context carries no author transcript and no author context.

P Every write of every stage additionally passes the platform's write_auditor before its gate — the isolated profile that checks a packet for exactness, boundedness, reversibility and scope (Gating § 6, D73). It is a platform component, not a module one, so it is not a track of this module; it is listed here because no stage's write reaches a target without it.

4. Skills — the deterministic half

P A skill exists where doing the work by reasoning costs an hour of tokens every time (Agents Memory and Skills). Each is code plus assertions, governed like a prompt, and runs dry by default.

P The module's existing skill set also covers S5 writes: the ipal configure skill uses separate wiring coverage entries; the read-only sweep is not a write path.

Skill Used by What it asserts Notes
render-product S1, after the validator nothing — it is a rendering: product.json → the reviewed Markdown and the HTML view, from the customer plug-in's templates, with no model call (D40) the reviewed document and the consumed document cannot disagree
getRates test S2 phases 5 and 10 per cover: base premium, every loading and tax row, the roll-up, against the documents' worked examples; the factor payload is built from what the product declares, queried and never remembered the engine computes and stores nothing, so this is the safe inner loop
abacus configure · new 03.09 phase 1, as the stage's write path that every object it wrote exists with the identity and count the plan declared, whichever path wrote it it drives the rating engine's own configuration endpoints — a version created, compiled and deployed on the working environment only, its covers, loading list, factors and rate files — and is not limited to them: what the endpoints do not cover it writes as guarded statements through the write executor, under the same approved shapes. Its coverage map records, per object, which path was used and why; first instances run under a draft shape, person-confirmed (D112)
ipal configure · new 03.09 phase 2B, as the stage's write path the same, for catalogue, covers, definitions, factors, packages and rules the same pairing on the product side: the system's own configuration services where they exist — they apply its validation and leave its own trail — and guarded statements where they do not. Neither path writes a shared row without a person (W3, Gating § 3); first instances run under a draft shape, person-confirmed (D112)
abacus seed · new 03.09 S2 → S3 boundary, once that it wrote only what ABACUS owns — cover codes with their object, the loading list with type and sign, the factor skeleton — and refused the ABACUS-only rows F coverage over the 63 products ABACUS knows on PROD: covers 98.4 %, loadings 91.6 %, factors 44.2 %; 290 covers and 210 factors exist only in ABACUS (Requirements § SY)
policy test S3 phases 5 and 10 product findable, steps render, dropdowns populated, covers selectable, the premium equal to the figure S2 reconciled, policy issues; then the persisted structure against the specification drives quotation → issue on the working environment
offer test S4 phases 5 and 10 each package carries exactly the specified covers, extents and preset limits; constructed violating selections make the rules fire; available is not selected offer resolution runs before rating, so a gap here masks rating correctness
route / label / endpoint check S5 and the post-deploy smoke the product is visible to the intended roles, every visible name resolves in every maintained language, the endpoint rows exist a product missing one route row is invisible, silently
product export → whitelabel the module's evaluation that a live product re-derives into a specification comparable with the authored one the round-trip golden set
estate probe · new 03.09 the prober agent one GROUP BY per configurable column, returning constraint, distribution, counts and date anything a script can settle is not left to judgement

5. Projections — model in, artefact out, no model call

P The rule, stated once (D74, D120, D136). A configuration write goes through the system's own configuration endpoint wherever the coverage map (configure.endpoint_coverage) declares one, and otherwise through an approved statement template with parameters (Write Envelopes § 1). The agent never authors a statement that reaches a database: it supplies the parameters, the executor renders the template and applies it past the write auditor, and the same template emits the revert, in the same step as the artefact (D120) — so a phase is revertable without reading its transcript. The template, not a projection, is the permanently reviewable part, and two runs of one product diff at template + parameters. Why: model-written SQL is reviewable exactly once, by whoever is looking that day; a reviewed template applied to validated parameters is reviewable permanently, in code F (Product design § 10).

Projection Produces Rules
Template renderer (in the executor) one idempotent artefact per configuration part from an approved template plus the stage's parameters, each headed with the model section it carries, and its revert beside it (D120) ABACUS artefacts are applied before the IPAL ones whatever their reading order — rates are the only never-derivable artefact and PR_BASIC_LD derives from the ABACUS loading list F (Design § 03)
Acceptance script four parts: completeness per surface, deliberate omissions, cross-layer agreement, the manual test expected counts derive from the model, so a changed decision surfaces as a failing count rather than a silent inconsistency
Rollback script exactly what was added, in reverse dependency order, rendered from the same template (D120) written in the same sitting as the artefact it undoes — a rollback written later is a rollback written from memory F (Design § 03)
Product document what was configured, what was decided, what remains open, how to undo it the review surface; generated, never hand-edited
PAS contract export · new 03.09 the cover list, the factor list with types and allowed values, and a worked request/response pair, as data and as a page needed where the platform configures rating for a policy administration system it does not own — shape 1, a product shape to build for (C-8 → D125)

6. Connector operations the module needs

P Each is a versioned capability row; a connector refuses an operation that has no row (Failure and Recovery § 4).

Connector Operations Effect class
oracle-anlt read the design surface; write a new rating version, compile and deploy it on the working environment only, and never include it in a customer-facing deployment set before H5 (D113); never touch another deployed version's rows, never write the compiled artefact write shape A, allow-listed tables
oracle-iprod read the catalogue; write catalogue rows through the executor, one product-scoped transaction per step group, access rows last write shape A
oracle-sys / oracle-integr read and write routes, endpoints, roles, messages, numbering, print configuration write shape A
abacus gateway getRates — computes and stores nothing read
camunda read process definitions (S5); register a process against the product (S3, D86) read; the registration is a gated write, sequenced with the deploy-coupled items (Configuration Module § 3)
file / mail / Jira readers fetch the source set, hash it, convert once to text and tables read

P Intake is immutable (new 03.09): the source set is unpacked, hashed and stored once, and every later step reads the same rendition; later material creates a new immutable input revision in the same case when the objective continues; affected plans/acceptances reopen, and unrelated objectives become new cases F (Product design § 03).

P The write path's own contract (new 03.09), adopted from the service design for the rating surface, where the estate itself provides the safety property: write into a new version, then compile and deploy it on the working environment only; never update a row belonging to another deployed version; never write the compiled runtime artefact; an allow-listed table set in code, reviewed like any other security boundary; the exact statements previewed with a row-count estimate and a diff against the previous version; one transaction, one audit record; undo is discarding the version, not repairing it; and customer-facing deployment is a separate decision whose packet lists every version consuming a changed rate file F (Product design § 05, D113). The IPAL surface has no version boundary, so the same argument does not carry there — hence the three conditions of C-1.

7. Memory domains

Domain Owning profile Holds Seeded from
configuration/ root the module's rules, the deployment-set presets, the gate packets' shape this wiki
configuration/normalization normalizer input-document traps, the field catalogue, reconciliation practice, the source-inventory rules the configurator's measured reading traps
configuration/abacus abacus stage the engine, versions, templates, filters, grid formats, the deploy chain and its version-selection rule the abacus knowledge documents
configuration/ipal ipal stage the catalogue chain, the factor model, the twelve parts, naming grammars and counted conventions the configurator's naming and value rules
configuration/offer offer stage the packaging model, dependency and conflict mechanics the offer knowledge
configuration/serdica serdica stage routes, endpoints, core registration, roles, numbering, print the wiring knowledge

P Engine knowledge and estate knowledge are separated (new 03.09): the rate-file grammar, the premium vocabulary and the version-and-deploy model are generic and travel with the platform; product codes, counted defaults and role names are per customer, measured on first connection and refreshed on a schedule, every count carrying its date F (Product design § 04).

8. What can be built in parallel

P Three waves. Inside a wave, the rows have no dependency on each other.

Wave Components Why they are independent
1 — contracts the schema and validator, the configuration summary, the sign-out document shape, the stage contract nothing else can start; two people at most
2 — per stage, five tracks for each of S1…S5: the agent, its memory domain, its skill, its projection each track touches one prompt, one domain and one target surface; the contracts of wave 1 are what remove the need to coordinate
2 — beside the stages tariff analyst · estate prober · verifier · render-product · the acceptance projection · the reverts each stage agent emits with its artefacts (D120) isolations and projections depend on the contracts, not on any stage
3 — integration the deployer, the joint proof, the round-trip golden set, the PAS export they consume what wave 2 produced

P The build tracks and the run phases are different axes, and confusing them wastes people. Five authors build five stages at once because the contracts make the stages independent to write. A configured product then runs through those stages in two phases with a sign-out between them, because the artefacts have real dependencies at run time (Configuration Module § 1, D75). The stage author of Serdica and the stage author of IPAL work in parallel in both senses; the stage author of Abacus works in parallel with them at build time and ahead of them at run time.

P The rehearsal that is usually skipped: before configuring a real product, re-emit a product that already works and explain every difference. It is the only rehearsal with an answer key, and its differences are exactly where the knowledge base is wrong F (Design § 08). It is the acceptance test of wave 2.

9. What this module does not build

P Named so nobody assumes otherwise, following the configurator's own list F (Design § 09):

Challenges