☰ Contents
AISA v2.0 / Technical documentation / AISA Next — decision register

AISA Next — decision register

F verified factP decided planC open challenge

The decision register of AISA Next — D8–D151, each with what was decided, why, and the pages it is applied in. D1–D7 were taken on 01.09.2026 and are recorded in the remediation plan § 2; this register continues at D8. The document began on 01.09.2026 as the split of the open C challenges in aisa-next/ by who could close them — that snapshot is the table below.

How the 73 challenge statements split — snapshot of 01.09.2026

The live split is the generated Challenges Register (scripts/wiki_challenges.ps1): on 03.09.2026 it holds 145 rows — A 30 · B 32 · C 55 · D 21 (build items) · R 7 (resolved, kept for the record). The table below is the state this register started from (D118).

Class Count Who closes it
A — evidence 12 all settled 01.09.2026 — 8 resolved · 2 wiki-wrong (the health-scope freeze; USER_ACCOUNT_ROLES) · 1 sharpened · 1 confirmed. Two raised new decisions: D27, D28
B — your decision 21 17 taken · 1 closed · 1 explained and awaiting you · 2 in research; see § 6
C — deferred by design 40 needs data that does not exist yet: a first case, a first measurement, a repo not in the workspace. Listed in § 5 so they are visible, not forgotten.

A "class C" item is not neglect — closing it now would mean inventing the answer. Each names the event that will settle it.


1. Taken 01.09.2026 — the three that blocked the five stage authors

D8 — Whitelabel representation ✅ TAKEN

Decided: Markdown plus JSON with a published schema; HTML presentations generated later.

As applied (Stage Normalization § WS-2): product.json is the authored source of truth and the machine contract S2–S5 read; product.md is generated from it for H1 review; the HTML presentation is generated later from the same source. product.schema.json is versioned with the field catalogue and validated at the S1→S2 boundary.

Why one authored form — the consequence worth stating: two hand-edited representations of one product drift, and the drift shows up as a stage reading one thing while the human approved another. Generating the Markdown makes that impossible. A reviewer who wants a change makes it in the source and regenerates; the Markdown is never edited in place. If you would rather the Markdown be hand-authored and the JSON extracted from it, say so — that is a different design and needs a round-trip check to stay safe.

Validator: it recomputes the reconciliation counts rather than reading the reconciliation block, because a schema can only check that a number is present and a present-but-wrong number is worse than an absent one. H1 is blocked by: schema invalid · a recomputed count disagreeing with its claim · a repeating tariff with no layer_model · a field with no source.

Still open C: whether the renderer is a skill, a platform service, or the existing analysis-HTML toolchain — it does not affect the contract.

D9 — Contradicting sources ✅ TAKEN

Decided: ask the user. No precedence rule.

As applied (Stage Normalization, Stage Normalization § WS-7): every contradiction — informal against formal, or two formal documents against each other — is put to the user with both quotes and the consequence of each reading. No source class silently outranks another, and the proposed "newest explicit customer statement wins" rule is removed.

The cost, mitigated: this makes H1 heavier, which was the argument against it. Contradictions are therefore batched into one question set rather than asked one at a time, so the weight lands once per specification instead of per finding.

D10 — Publishing ✅ TAKEN

Decided: not mandatory peer review — a role that publishes prompts.

As applied (Agent Framework § 6.3, Trust and Data § 3): a fifth role, prompt publisher, joins viewer / operator / approver / administrator. Anyone may draft and test; making a version live requires the role. Two controls remain, and peer review is not one of them: the eval set (mechanical) and the role (a person accountable for what goes live).

Ownership and publishing are now separate acts: the owner is the only one who may change a prompt; the publisher is the one who makes a version live. Whether a stage author also holds the publisher role is a staffing choice, and the eval-set gate applies either way.

Refined 01.09.2026: the role is held per stage, not once across all five. This keeps the authors genuinely parallel — no single publisher becomes the queue every stage waits on — and it puts accountability next to the expertise, since judging whether a stage prompt is ready means knowing that stage.


2. Taken 01.09.2026 — platform and placement

D27 — the one-AI-runtime rule ✅ TAKEN, then softened by verification

Decided 01.09.2026: keep Ablera.Serdica.AI.Support[.*]; resolve the conflict by renaming the health service to Ablera.Serdica.AI.HealthDocuments.Manager. (This reverses D1; SRD_OPSSRD_SUPPORT per D18.)

Then the impact analysis changed the picture. Three things, all verified directly:

  1. Nothing is deployed. src/Serdica/Ablera.Serdica.AI has zero files on master, bulstrad-qa, bulstrad-staging and bulstrad-prod. It exists only on the unmerged health branch (344 files), with no Dockerfile and no CI deploy job.
  2. The constraint is prose, not enforcement. The one code-level guard asserts a single deployable inside src/Serdica/Ablera.Serdica.AI/**/App/. A sibling module elsewhere in src/Serdica/ trips nothing — renamed or not.
  3. "HealthDocuments" is probably the wrong name. The service also hosts AI.EMBED, AI.OCR_READ, AI.OCR_LAYOUT, AI.REFERENCE_INDEX_ACTIVATE, AI.REFERENCE_INDEX_BATCH and PROMPT.TEST_EXECUTE. Embedding, reference indexing and prompt testing are not health documents.

What this means: Ablera.Serdica.AI.Support was never blocked. I presented D-P2 as a gate to pass; it is a documentation conflict to settle, and the platform layout stands either way.

Revised recommendation: do not rename. Reword the 16 scope sentences instead — 1–2 hours against 1–2 days for the CLR rename and 1–2 weeks for the runtime identity strings — and only if and when the health-AI owner wants it. ⚠ If a rename is ever attempted, AI_MANAGER is frozen wire vocabulary: a schema enum at contracts/v1/schemas/serdica.workflow.evidence-delegation.v1.schema.json:42 inside a byte-hashed fixture. A blanket search-and-replace silently corrupts a canonical hash. The one argument for doing it now is that nothing is deployed, so it will never be cheaper.

C remaining: whether the health-AI owner wants the rewording, the rename, or neither. It no longer blocks anything here.

D12 — Budget enforcement ✅ TAKEN

Soft warning to the root agent at 80 %, hard refusal at 100 % — so an agent winds down and writes its papers instead of being cut off mid-apply.

D13 — Grants ✅ TAKEN

Decided: expire at case close or a fixed wall-clock, whichever comes first. And: the case's grants are part of the per-case prompt.

The second half is the better idea and is now in Trust and Data § 2: the agent is told what it may do rather than discovering it by being refused, so planning happens inside the boundary instead of against it. The connector check stays the enforcement — the prompt is how the agent knows, not how it is held.

D14 — What an agent boots with ✅ TAKEN

The agent starts from its own directory's AGENTS.md plus the task prompt — not the whole root→leaf chain — but is required to be aware of the rest of the knowledge and reads any node it judges relevant. memory_read is the whole tree and a profile may not narrow it. Boot is light; awareness is total.

D15 — Missing domain nodes ✅ TAKEN — auto-learn

When an agent needs a domain that does not exist, the platform launches a summarizer sub-agent that reads the subject and creates or updates the node before work continues. A missing node is never a prerequisite. Existing-but-stale nodes are updated, not replaced.

D16 — Case papers ✅ TAKEN — a dedicated file service

Not FileServer.V2 — verification confirmed it is write-once (409 on a keyed re-save), closed scope and tag vocabularies, no listing by owner, markdown rejected. Instead a dedicated token-gated file service owned by the module: few users, so no horizontal scaling; the design goals are security and simplicity. Every read and write carries a token scoped to the case and the role; papers are mutable with revision history; listing is by case; every access is audited.

D18 — Schema name ✅ TAKEN

SRD_SUPPORT, not SRD_OPS. Applied throughout.


3. Taken 01.09.2026 — process and simulation

D17 — Simulation ✅ TAKEN — and it is now the default

Everything is simulated before promotion except changes that are both very small and carry no blast radius. The venue is whatever fits — dev, staging, QA, a purpose-made new entity, or another form of simulation. Promotion is bound to confirmations and roles: simulation evidence is part of the promotion packet, not a note in a transcript.

This is a significant strengthening of what the wiki had, which treated simulation as an option for non-production and an exception in production.

The exemption test ✅ TAKEN — a change skips simulation only when all five hold: single row · single environment · reversible by an already-written teardown · no downstream consumer · no customer-visible effect. Failing any one means it is simulated. The test is applied and recorded in the plan, so an exemption is an auditable claim rather than a silent judgement.

D19 — Core-change propositions ✅ TAKEN

Routed to development. The proposition leaves the Source module and enters the estate's development process; the Source case records the handover and closes against it rather than waiting.

Erratum 07.09.2026 (D118). Superseded by D108 (04.09.2026): the proposition is addressed to a role — the estate development lead — as a GitLab issue on master carrying the brief, and the Development case closes against the issue id.

D20 — PL/SQL and git ✅ ANSWERED by research

Git stays, but only as a mirror the agent owns alone — the developer never touches it, which is what makes it workable. Applied in Stage Planning § 3b.

C remaining: the polling cadence is uncalibrated — nobody has measured how often the developer saves, and that parameter drives the whole design. Needs one live measurement.

D28 — SALE_STAGE ✅ TAKEN — scoped to IPAL configuration

It is one type of pricing-factor configuration, and it belongs to S3 IPAL, not to a product-wide policy. S2's only interest is the invariant that a rating axis must exist as a POL row, because nothing else syncs. Which stages a factor carries is decided where pricing factors are configured, with the verified mechanics (no fallback in either direction; the four hardcoded force-included codes) recorded there.

The depth research is done and lives in Stage IPAL: all 25 + 15 + 17 columns, the ten configuration axes, dependency and value-source traced end to end, and a failure atlas of 28 misconfigurations ordered silent-first.

Three findings worth naming, because they correct sources the wiki was trusting: - The extraction dispatch key is VALUE_SOURCE, not POLICY_TABLE — the PC extract has this wrong, and predicts correctly only because both usually say POV. - QT_REQUIRED is the rating-set gate, not an asterisk. 'N' drops a factor from the premium call and the completeness check, and on a quotation the engine zeroes the affected groups — so the quote comes out silently cheaper than the policy. - UI_REQUIRED does not exist on the deployed model (emitting it raises ORA-00904), STATUS has no filter anywhere, and PRICING_TYPE has no behavioural consumer at all.

Erratum 04.09.2026 (D118). Both statements about UI_REQUIRED in this register were right for one environment each: the column is absent on PROD (PR_PRICING_FACTORS has 25 columns; bulstrad-prod/bulstrad-staging code does not map it — ORA-00904 there) and present, NOT NULL, on TEST/STAGING, QA and DEV (26 columns; mapped on master/bulstrad-qa). STATUS is populated only on the values table (M/MO/O/U, plus A on QA/DEV); on the factors table it is NULL everywhere except two DEV rows. Verified 03.09.2026 on all four environments; § 8 below described the DEV database.

Also established: only one foreign key exists across the three tables — every other cross-reference is a free string the database will not check, which is why nearly every misconfiguration fails silently.

4. Operational policy — before the first real cases

D21 — v1 and v2 memory ✅ TAKEN

Decided: the two are used independently; v2 supersedes v1 over time; one-time migration.

As applied (Agents Memory § 7.1, Delivery § 3): no shared tree, no snapshot reads, no synchronisation. v1 keeps its memory/, v2 has its own, neither writes into the other. This is stronger than my recommendation of a shared tree with one writer per domain, and it removes the failure mode outright rather than policing it — two systems writing one domain would produce contradictions neither notices.

One-time does not mean one push: the crossing is executed in waves so each domain is measured (§ 2 acceptance test) before the next starts. What is one-time is that a domain crosses once, and afterwards v1's copy is not consulted for it.

D22 — Auto-classification ✅ TAKEN

Decided: always auto-classify; recommendation accepted.

As applied (Stage Classification § 2): no confidence threshold below which the platform declines. It classifies, shows the evidence, the operator corrects in one action, and the correction rate is the metric.

D23 — Precipitation ✅ TAKEN — and it became a ladder

Decided: threshold 3, not 2 — plus refinement passes at the 7th and 20th occurrence.

As applied (Stage Precipitation § 2):

Occurrence
1st–2nd experience entry only
3rd create the skill or article
7th first refinement pass — revisit the first version with six more cases of evidence
20th second refinement pass

This is a better design than the threshold I proposed, and worth saying why: a created skill is not a finished skill. The v1 corpus is full of entries written once and never revisited, which is a large part of why it does not fire. Scheduling refinement at a known occurrence count means it happens because the thing is used, not because someone remembered it.

D24 — Cross-kind ordering ✅ TAKEN

Decided: first occurrence → apply the one-time correction unless the operator suggests otherwise. If it repeats → also propose the configuration and/or development path, on the same counter as D23.

As applied (Stage Solution Take § 1): the instance is always corrected; what changes with recurrence is that the platform additionally proposes the structural path at H2. It is a recommendation, never an automatic escalation — which keeps the customer-facing fix fast while making the pattern visible.

This also resolves the risk I raised against instance-first: the gap is not merely tracked in a queue that can go quiet, it is re-proposed on every recurrence.

D25 — Who writes the experience entry ✅ TAKEN — my recommendation rejected

Decided: the experiencing agent writes it. Curation moves to the dreaming protocol.

As applied (Stage Precipitation § 1 and § 6): the agent that worked the case writes the entry while it still holds the context; the scheduled dreaming pass is where curation happens — re-reading entries against a would this help a stranger test and rewriting the ones that only make sense to someone who was there.

I had recommended the curator on the grounds that the closer knows too much. This is better: it keeps the entry cheap to produce (no context hand-off, no second agent reading papers) and puts the fix where it belongs — in a pass that sees many entries at once and can spot the pattern of unreadability, rather than in a per-case cost paid every time.

D11 — Investigator domain boundaries ✅ TAKEN

Decided: symptom-shaped — transfers and sync, pricing, printing, access, health, master data.

A customer reports a symptom and never a system; shaping the agents the other way would make every case start with a routing argument. System knowledge is not duplicated across investigators — it lives in the connectors/* and configuration/* domains, which every investigator reads and none owns.

C remaining: most real cases span systems, so which investigator leads a cross-system symptom still needs a rule. It is set from the first ten cases rather than from a table drawn now.

D26 — Health products (8000) in Configuration ✅ CLOSED — no exclusion

Closed 01.09.2026. The premise was wrong.

What I had claimed: exclude 8000 until the no-personal-data rule (CG-9) is shown to hold for its configuration material, on the grounds that provider catalogues and АО report structures might embed identifiable data.

Why that was wrong: it conflates the data a product processes at runtime with the material used to configure it. Configuring a product means reading tariff tables, package and cover structure, general terms, settlement rules and print templates. The workspace's own 8000 corpus separates the two cleanly — product_8000.md (packages, covers, ОУ, package×cover matrix), pricing_and_tariffs.md (2026 tariff bands by group size), the schema models and the templates carry no personal data; enrolment/census, claims and АО reports do, and those are runtime data belonging to Support under SG-9.

Resolution: no product family is excluded on data-protection grounds, 8000 included. CG-9 is restated as what it actually is — a description of what configuration material is, not a restriction hopefully imposed on it — and its anomaly rule (an ЕГН in intake stops the stage) remains the safeguard against a genuine mistake, such as a real census file pasted into a specification thread. The exclusion was redundant on top of a rule that already covered the case.

Erratum 04.09.2026 (D118). The stop-the-stage anomaly rule was replaced on 02.09.2026 by D57: stray identifiers in configuration intake are handle-substituted at the connector before storage; only material that is personal data (a real census) is rejected as wrong input.


5. Class C — deferred by design (40)

Each names the event that settles it; none is closable today.

Settled by Items
The first real case of its kind INSIS-transfer teardown checklist · deploy-coupled script/redeploy sequencing · filter authoring and registration · loop-back semantics (replan vs amend) · lifecycle scope per assignment · which layer owns a "visible to group X" wish · intentgpt internals and seams
The first measurement verification overhead per case · eval-set cost per module · retrieval mechanics (grep index vs Qdrant) · symptom-signature normalization depth · redaction fidelity · batch preflight sampling · article-proliferation control · fix-signature validity · rule-combination sampling
The migration itself triage of ~150 feedback files into mechanics vs articles · saga granularity · staleness re-verification queries per domain · whether others//hdesk//emails/ are linked or extracted
Environment inspection which non-production targets restore completely · which operations cannot be rehearsed reversibly
Later scale trust labelling through sub-agent summarisation · role-impersonation for replaying the customer's surface · whitelabel v0 extension on real inputs

6. What still needs you

Nothing is blocked. D18-a, D20-a, D27-a and D28-b were all closed on 01.09.2026 — see § 8.

The only open items are the ones deliberately deferred to a first case or a first measurement (class C, § 5), plus one that fell out of the live-data pass; the live list of open items is Open Decisions:

# What Why it matters
~~New~~ ~~/configure-product requires both sale stages for every factor~~ — settled 02.09.2026 by D29 (POL only, no per-factor exceptions; the QT residue is the path being removed)
~~New~~ ~~STATUS on the pricing-factor values table is populated (M/MO/O/U, plus A on QA/DEV) but no code reads it~~ — answered 02.09.2026 by Measurements § DB-1c: the factor STATUS is NULL on QA, STAGING and PROD and nothing writes it

7. D18-a — what dedicated credentials do and do not solve

Dedicated credentials for SRD_SUPPORT are the right call, and they settle access isolation: the platform authenticates as itself, its grants are its own, and nothing else in the estate can write its tables. That is a different problem from backup and restore. Five issues remain:

  1. Being a schema with its own user does not put it in a backup set. Someone has to add it to the RMAN or export scope. The classic failure is exactly this — a schema stood up outside the DBA's provisioning path, never attached to a backup job, and nobody finds out until a restore is needed. Dedicated credentials can make it more likely, because the platform can stand everything up without ever entering that path.
  2. Restore granularity. Oracle backup is whole-database. Restoring only SRD_SUPPORT to a point in time means a clone or a logical export/import — so that procedure has to exist and be tested, not assumed.
  3. Which database it lives on decides the coupling. On the IPAL production database it inherits a good schedule, but its restore is coupled to production IPAL — the platform cannot be rolled back without touching the PAS. On its own database it is independent and needs its own job.
  4. The ledger is append-only and it is the audit record. A restore that rolls SRD_SUPPORT back silently discards audit entries for work that really happened. Whatever the RPO is, that number is also the audit gap.
  5. Cross-schema consistency. Case papers reference objects in other schemas at points in time. Restoring SRD_SUPPORT alone leaves papers pointing at a state that no longer matches — recoverable, but the procedure has to say what happens to cases that were open.

Recommendation: the estate's DBA process owns it. The one thing worth confirming explicitly rather than assuming is that SRD_SUPPORT is in the backup inventory, and the one number worth stating is the ledger's RPO — because that is also how much audit history a restore can lose.

8. Closed 01.09.2026 by running the queries

D28-b — done. SQLcl was never the blocker: the workspace ships its own client at tools/sqlcl/, and it connects to db.serdica.ablera.dev:1521:orcl1 (SID form; the service-name form is not registered). I should have used it several turns earlier instead of reporting the MCP server as a wall.

What the data settled, and it corrected the research rather than confirming it:

Question Answer
D28 — is POL-only safe? Yes, per product, and it is already the norm. 53 of 76 products carry no QT row at all; 23 do; 170 factors carry both stages deliberately. POL-only is correct for a product with no quotation step. Your framing — a per-factor IPAL configuration decision — is what the estate actually does
UI_REQUIRED Exists, and is NOT NULL. The research said it was absent and that emitting it raises ORA-00904. The table has 26 columns; the compiled EF model maps 25. The compiled model is authoritative for what the code reads, not for what the table has
STATUS Populated, not dead — A on factors, M/MO/O/A/U on values
Dependencies without a \| 137 live rows, and they are not a defect backlog: showDepListsValues defaults to false and no caller sets it, so they fall through to the full unfiltered list. The empty-dropdown-forever failure needs a wrong path on the right-hand side, not a missing pipe
9951 carries 40 QT factors — contradicting a reading of the PC extract that concluded the reference run had needed none

D18-a — decided. SRD_SUPPORT lives on db.serdica.ablera.dev, alongside SRD_INTEGR. Credentials for provisioning exist. No schema was created — there is no DDL to put in it yet, and standing up an empty schema now would be a change with no purpose.

D20-a — decided, and it costs something. SRD_SUPPORT shares a database with SRD_INTEGR, so the PL/SQL snapshot store shares a failure domain with the packages it protects. That is exactly why the design mirrors snapshots into a git repository the agent owns: the mirror is the copy that survives losing that database. Recorded in Stage Planning § 3b.

D27-a — closed. The health-AI program owner is Vladimir Moushkov, so there is nobody else to raise it with. The 16 scope sentences are yours to reword or leave; nothing depends on it.

The PL/SQL cadence — now measured on the QA environment the developer uses (db.serdicaqa.bulstrad.bg): active on 13 of 90 days, 1–7 objects on a normal day, tightest cluster 7 objects in 15 seconds, and the one 105-object day spread over 5.4 hours rather than being a mass recompile. The developer is sparse, not continuous, so the polling frequency matters less than the capture gates — at case open and immediately before every apply. Recorded in Stage Planning § 3b. Staging, described as the most-changed environment, was deliberately not queried.

What the Ablera dev database could not answer: the same question. SRD_INTEGR on this host saw package DDL on exactly one day in 90 (21.07.2026, 3 objects) — the developer does not work here. Calibrating the polling interval needs the environment they actually use. Also of note on this host: 106 package specs against 19 bodies, which on a customer environment would be the spec-without-body hazard the sync design guards against, and on a dev box may simply be normal.

9. Taken 02.09.2026 — the review before the presentation phase

Vladimir's answers to the full-wiki review of 02.09.2026 (see memory/project/aisa_next_review_2026_09_02.md). Each is applied in aisa-next/.

# Decision Applied in
D29 POL only is a must, no per-factor exceptions — the QT sale stage and the code reading it are being obsoleted. The wiki carries a remark for agents: the QT residue (23/76 dev products, wizard bucketing, seeding paths) is the path being removed; never create or copy a QT row; a quote-step dependency is a MISSING entry resolved by the obsoletion (Source work). Stage IPAL § rule, Stage Abacus, Stage IPAL § 2/8b/9, Configuration Details CG-4, Requirements Register C-6
D30 Development target is Bulstrad QA. SRD_SUPPORT is to live on db.serdicaqa.bulstrad.bg (10.239.82.106, orcl1), not on the Ablera dev database — not yet created on either (verified 03.09.2026). Supersedes D18-a. Placement § 3b's failure-domain argument now holds (the PL/SQL developer works on QA). Architecture § 3, Stage Planning § 3b, Stage IPAL § 8b provenance, Software Architecture § 10
D31 The module configures roles, never users. LT_USER_ROLES + Routes.AllowedRoles are configuration; assigning users to roles (USER_ROLES) is the implementer's administration after deployment. Keeps CG-9 (no personal data) true. Stage Serdica § surface, Requirements Register C-7
D32 No third-party harness as the runtime; take the patterns. DeepSeek Harness is real (TS/Node, MIT, 13.08.2026) but has no C# client. Twenty patterns adopted with sources. Open (D32-a): build the native loop on Microsoft Agent Framework primitives (.NET GA 03.04.2026) or from scratch — proposal: on MAF, decided by the T1 spike. Agent Runtime § 9 (the harness survey and its patterns), Platform PG-2, Platform Details PG-2, Requirements Register P-2/P-13
D33 Handles, not redaction. Case-local pseudonymous handles are the mechanism at the connector boundary for structured identifiers and detected free-text PII; what detection misses is covered by the EU-resident, DPA-covered model; re-identification is an audited action. Redaction wording removed. Trust and Data § 4/§ 6/Challenges, Stage Classification
D34 Approval is a permission, not a second person. A gate is answered by whoever holds the role for it and its target; a holder approves their own case; a non-holder's gate becomes a task for holders. Applies to deployment, writes, reversal, publishing and taking over a session. No four-eyes rule is imposed by the platform; an organisation wanting it withholds the role. Supersedes the H5 approver≠requester property and the Prompt Governance carve-out. Trust and Data § 3, Gating § 1, Agent Framework § 6.3, Agent Runtime § 11.1, Requirements Register G-14/P-11
D35 The module root converses with the operator at intake and decides the stage set, environment and deployment set; v1 skills (/configure-product etc.) are seeds for prompts and memory, never runtime components. Stale C about the skill removed. Configuration Module § 4, Agents Memory § 3 (operator node on all three graphs)
D36 The wiki stays as it is — not self-contained (links into memory/, knowledge/, docs/); it lives in aisa-next/ inside aisa-poc. The presentation build snapshots what it needs.
D37 Nothing is linked from the unmerged health-AI branch; per project the verdict is name-only, copy-source, or nothing. Software Architecture § 9
D38 A generated Challenges Register (scripts/wiki_challenges.ps1 + challenges_triage.csv) lists every C with class A/B/C/D, owner and resolving event. 90 Reference/Challenges Register.md

Arithmetic corrected: 219→509 analyses between 02.07 and 31.08.2026 is ~7 per working day (~5 per calendar day).

10. Open on 02.09.2026 — see aisa-next/90 Reference/Open Decisions.md

Eight decisions (A-1…A-8), four requests to send (B-1…B-4), the P proposals applied on 02.09.2026 to confirm or overturn (section C), and three numbers only Vladimir can supply (D-1…D-3). A taken decision moves from that page into this register as D39 onward.

11. Taken 02.09.2026 (evening) — Vladimir's answers to Open Decisions A/B

# Decision Applied in
D39 Minimum dependencies. The provider abstraction (AI.Abstractions, AI.AzureOpenAI) is copied and owned; the loop is written from scratch; Microsoft Agent Framework is not a dependency and is reconsidered only where a piece of it demonstrably saves work. Agent Runtime § 9.3, Software Architecture § 9.1, Software Architecture § 3, Platform Details PG-2
D40 The whitelabel renderer is a skill (render-product, S1 domain, templates in the customer plug-in) — the architecture stays reusable for other customers. Erratum 07.09.2026 (D118): narrowed by D120 — the render-product reading is withdrawn for the deployment-artefact statement fallback path, which the stage agent assembles from the approved template; the renderer of the product document stands. Stage Normalization § 2, Agent Skills § 3
D41 The health-AI D-P2 wording is accepted as-is; a one-line rewording is queued for the next health-branch change. Architecture § 2
D42 Production simulation: five criteria, H5-SIM gate held by two named people (roles, not names, since D107) (Ablera support lead + Bulstrad owner) and no operator — four eyes by role configuration. To be countersigned by Bulstrad. Failure and Recovery § 5
D43 Bus factor is measured from the Jira Internal Tag, not guessed: 267 tagged tickets; one person carries 50–75 % of every shape. Erratum 04.09.2026 (D115): the lead share is ≥ 50 % on 25 of the 35 tag-bearing shapes and 38–47 % on the rest; the one person leads 33 of 35. Agent Skills § 2b, scripts/mine_tickets_holders.py
D44 No stable pseudonym for natural persons; saga entries may carry an HMAC of a business-object number. Trust and Data § 4, Agents Memory § 7.3
D45 Backup: the DBA process owns it; the platform exports the ledger seal + delta and the PL/SQL snapshots off-database every 15 minutes. QA backups must be restored first (they failed since 26.07.2024). Delivery § 4, Software Architecture § 10.5
D46 Reach is a platform capability: an SSH-tunnel connector (seed ssh-mcp) as tooling, reach declared as data per environment; no network request to Bulstrad IT except the LDAP groups; model calls through a tunnel to an Ablera-side gateway where egress is closed. Erratum 07.09.2026 (D118): superseded in part by D132 — there is no tunnel connector, no via host and no Ablera-side model gateway; every connection is direct (route.kind ∈ {direct, unreachable}) and model calls go straight to the provider's EU endpoint. Reach-as-data stands; the LDAP-groups request is withdrawn by D134. Software Architecture § 10.3, § 5
D47 One schema, one user SRD_SUPPORT — no separate runtime principal; the platform issues the DML, Ablera dev/DBA create the user and apply the DDL. Narrowed 04.09.2026 (D104): this covers the one-time creation of SRD_SUPPORT; estate DDL is applied by the write executor under HW-ddl. Software Architecture § 10.4, Software Architecture § 9.2, Software Architecture § 6
D48 The branch's RabbitMQ.Client, .Topology, .Integration, .Outbox are copied as library projects into the module; master's versions are not linked. Software Architecture § 9.1/§ 9.3, Software Architecture § 4
D49 Retention is configuration, default never expires; cases never expire; only the customer closes a case — the platform reaches resolved. Platform PG-13, Platform Details, Glossary, Delivery § 4, Agent Runtime § 11.1, Stage Application § 4, Stage Precipitation, Trust and Data § 4

| D50 | Whole profiles, no runtime inheritance; a module default is an authoring template copied into a self-contained draft; revisit past 40 published profiles or a change touching more than 10. | Agents § 0 Challenges |

A-6 answered from the data: Georgi Stoyanov leads 33 of 35 tagged shapes (Skills Catalogue § 2b). B-3 acknowledged.

| D51 | Whitelabel. Section C of Open Decisions confirmed; every contract-, customer- and estate-specific value (SLA times, calendar, severities, identifier patterns, channels, hosts, thresholds, schedules, role mappings) is configuration with a default in SRD_SUPPORT policy rows or the customer plug-in — never a constant, never an architecture rule. | Architecture CR-10, Platform PG-23, Whitelabel Catalogue (new), markers on Platform Details, Support, Stage Classification, Stage Investigation, Stage Precipitation, Stage Application, Agents § 0, Agent Runtime, Trust and Data, Agent Runtime § 11, Delivery, Glossary |

| D52 | Hours only. Human effort is measured in hours and never monetised; no hourly rate appears in the wiki; the model bill is the one currency line. Superseded 03.09.2026 by D79 and restated 04.09.2026 by D117: no currency figure anywhere, the provider bill included. | Value and ROI § 1, § 5, § 6; Agent Skills § 2 | | D53 | Switch cost = 20 % of the ticket's handling time (configuration default); the larger cost is the fogginess after the switch — risk of bugs and slower/worse execution on non-support work — tracked as a count of defects and reworks after interruptions. | Value and ROI § 1, Whitelabel Catalogue § 5 | | D54 | Archive figures adjusted: agent time −25 %, person's true time +25 %, each figure carrying the note that a colleague's experience puts the agent lower and the person higher; times vary by domain and by person; replaced by the ten-ticket stopwatch measurement. | Value and ROI § 2b, § 6; Agent Skills calibration; Whitelabel Catalogue § 5 |

| D55 | The proposals applied on 02.09.2026 are confirmed as written on their pages (goals PG-9…22, CG-10…13, SG-10…14, DG-7…9, N-9…11; the Configuration, Support and Source rules from the case studies; the platform rules from the evidence rounds). Values among them are configuration defaults under D51, not decisions. Resolved challenges leave the register; only items still needing information remain. | Open Decisions § C, Challenges Register |

12. Taken 02.09.2026 (night) — the review follow-up

Vladimir's directives on the 17-point review of the goals/architecture. Each is applied in aisa-next/.

# Decision Applied in
D56 Memory promotion protocol. Per-session (case-local) memories persist with the case and are never lost; an entry reaches the shared tree only after confirmation (human review, or two independent uncontradicted uses — the initial rule, measured on the migrated corpus). Only the domain's owning profile writes shared storage; every other profile files proposals. This resolves the single-writer rule against the multi-writer support/experience rows, and aligns the promotion rule's status between Memory Migration § 4b and the Configuration Catalogue. Agents Memory § 2 rule 7 / § 4 / § 5 / § 6, Agents § 0.1 + worked profiles, Agents conventions + § 3, Agents Memory § 7.4b, Whitelabel Catalogue § 5
D57 Personal data is removed at intake; the case is operator-agnostic. Stray identifiers in configuration intake are handle-substituted at the connector before storage; only material that is personal data (a real census) is rejected as wrong input. Replaces the stop-the-stage anomaly rule. Configuration CG-9, Configuration Details CG-9, Trust and Data § 4, Stage Normalization, Agents § 0.3, Platform Details PG-7
D58 The Source module is source-agnostic. A source (repositories, DB side, branch model + flows, seams, build/test gates, deploy mechanism) is plug-in configuration; the Bulstrad estate is the first plug-in's content. Development Module intro, Source Details DG-3/DG-6, Stage Planning § 1, Whitelabel Catalogue § 4 (sources)
D59 HDesk/mail stream corrections applied. The OTRS "Ablera" queue is Configuration intake (39 of 52); corrected counts in the Skills Catalogue (VIN 16→29, sync 32→42, ИП 31→35, getRates 21→27, configuration change 32→74); hours totals marked pre-correction pending the CH-12 recount. Erratum 07.09.2026 (D118): narrowed by D143 — every client case opens on support.root; “an Ablera item starts at the configuration root” becomes an S1 classification default (a configuration request handed over at Hd), not a channel route. The counts stand. Agent Skills § 1–2 + Challenges
D60 The DDL effect class and its protocol. DDL auto-commits; the class joins transactional/compensable/irreversible in CR-9; the loop is capture-before (signature snapshot) → preflight at apply (refuse on mismatch) → apply (one call) → verify (incl. cross-DB dependents) → compensate by re-applying the snapshot (H7). Failure and Recovery § 2, Architecture CR-9, Stage Planning § 3b
D61 The 80 % runtime rule. The platform fully owns the runtime, on-premise, unless a free SDK matches ≥ 80 % of the fourteen load-bearing requirements. Scored 02.09.2026: MAF ≈ 54 %, DeepSeek Harness ≈ 57 %, Claude Agent SDK ≈ 43 %, OpenAI Agents SDK ≈ 36 %, Temporal/Dapr ≈ 46 % — none qualifies; D39 (owned native loop) confirmed; component-level exception unchanged. Erratum 07.09.2026: the last two figures read ≈ 30 % and ≈ 25 % here until today and are corrected to the published scorecard (Agent Runtime § 9.4); the verdict is unchanged. Agent Runtime § 9.4
D62 The Reuse Inventory is the selection. The capabilities are needed regardless; each row is the judgment of where the capability comes from (copy and own / name-only re-implement / link from the estate / nothing); adding a library later means adding a row with evidence first. Software Architecture § 9
D63 The control plane and the start flows are configuration. platform.host names where the platform is deployed (Bulstrad default: the QA host); source.start_flows names per case type where a case starts — running-product: bulstrad-staging → master + bulstrad-qa; new-product (health, unreleased): bulstrad-qa → backport to master. Software Architecture § 10.1, Source Details DG-2, Source DG-2, Stage Planning § 3, Platform PG-17, Whitelabel Catalogue § 4/§ 6
D64 v1 is the baseline and the one-time migration source — nothing else. No coexistence machinery (the write register is removed); the transition window is kept short by taking work module by module. Delivery § 3, Whitelabel Catalogue § 4
D65 The write-identity path. Stage 1 (now): existing privileged identity or DBA request, human in the loop. Stage 2: dedicated least-privilege platform identity per environment under unified audit. Stage 3 (target): the platform holds the rights, gates auto-confirm accepted risk classes, the human is on the loop. Built so stage 3 needs no redesign. Trust and Data § 3, Software Architecture § 10.4, Stage Planning § 3b
D66 The T0 seam specifications. Message envelope + versioning; connector capability descriptions as fail-closed versioned rows; the eval-set format (fixtures, deterministic-first grading, isolated grader); the ledger sealer/exporter owned by a hosted job in the webservice with lag alerting; the minimum alert set; the Hd handover accept/reject + parking protocol; held-batch re-preflight by age; the park taxonomy with per-class retry. Agent Runtime § 4, Failure and Recovery § 4, Agent Framework § 6.5, Architecture § 3.2, Software Architecture § 10.5, Agents § 5, Stage Application § 1, Agent Runtime § 11.4
D67 The schema is product-agnostic; the working structures are configuration. The whitelabel schema defines shapes only — product- and family-specific vocabulary lives in the plug-in's field catalogue and family packs. Agent graphs, the memory domain tree and the SLA/escalation protocols are configuration instantiated as data; the architecture defines the components. Stage Normalization § 1 principle 5 + Challenges, Architecture CR-10, Whitelabel Catalogue § 4 (graphs.stage_sets, memory.domains, sla.protocols)
D68 Verifier economics: initial estimations, to be further analysed. Mandatory tier ≈ +100 % reasoning on verified cases; sampled at N = 5 ≈ +4–8 %; retraction base rate ≈ 0.6 % (3 of ~509); break-even rule stated; all figures replaced by the ledger after the first ten cases. Metrics § Cost envelope, Stage Investigation § Challenges
D69 The planning baseline is 30 minutes of human time per ticket, on average, for non-agent work. Hours only (D52 stands); the baseline is replaced per type by the stopwatch protocol, then by the ledger. Value and ROI § 1 + § 6, Whitelabel Catalogue § 5 (roi.human_minutes_per_ticket)
D70 The gate plan per module, with auto-confirm. Every gate defined per module/stage; auto-confirm is configuration per case type × gate × target class, firing only when the target is not customer-facing, nothing is irreversible, the packet is complete, evals are green, and the shape passed its first three cases with a human; never on H5 / H5-SIM / H7 / Hd / CG-11 / publish; one revert suspends the policy row (the shape, since D72). Gate-decision minutes per case is a metric from the first case. Gating § 1 and § 9, Whitelabel Catalogue § 1, Metrics
D71 Work streams, not owners. Six streams — software, knowledge, agents, testing, protocols, operations — each with its goal, done-state and defining pages; staffing and dates stay outside the wiki (N-6). The whitelabel invariant (PG-23) is a software-stream protocol: a CI lint step, not a person. Delivery § 5, Platform Details PG-23

13. Taken 03.09.2026 — write gating, the write auditor, the configuration write path and the phase order

Vladimir's directives after reading the three product-configurator documents. Each is applied in aisa-next/.

# Decision Applied in
D72 Gated write operations are allowed on every system, under a write-gating protocol. Every write is classified by effect class × target class into seven write classes. Only the two scoped-and-working classes (W1 transactional, W2 compensable) may ever auto-confirm, and only as an instance of a write shape a person approved at the new HW-approve gate. The always-human gate set is closed: shared-row writes (W3), irreversible steps (W4), schema changes (W5), customer-facing execution (W6, the existing H5) and customer-visible sends (W7), plus H5-SIM, H7, Hd, the customer's acceptance and publish. A write shape is a versioned row — operation, template with bound parameters, target and effect class, expected counts as a function of the plan, assertions, derived teardown, permitted case types — immutable once approved. One revert suspends the shape for every case type until a person re-approves. Resolves the reconciliation's C-1. Gating (new page) § 1, Trust and Data § 2, Delivery § 1.4 P-14/P-15, Whitelabel Catalogue § 5
D73 A dedicated isolated agent confirms that a write may proceed. platform.write_auditor receives the packet, the approved shape, the case's grants and read access to the target, and is denied the author's transcript, reasoning and provenance. Four checks: exactness (every value bound, every count a number, no open predicate, no wording that admits two readings), boundedness (the affected set re-derived from the target equals what the packet claims), reversibility (the teardown exists, is derived, and removes exactly what the write adds), scope (every statement inside the grant and inside the approved template). It refuses rather than repairs — a checker that fixes what it checks stops being a check — and it is mandatory for every write, not sampled, because its cost is queries and a template comparison rather than a re-derivation. Its verdict is part of the gate packet; a refusal blocks the instance whatever the gate would have said. Gating § 5, Agents § 1, Agents § 0.2, Components — Configuration § 3
D74 Configuration writes through each system's own endpoints, and is not limited to them. Two skills: abacus configure drives the rating engine's configuration endpoints — a version in a non-deployed stage, its covers, loading list, factors and rate files — and ipal configure the product side's configuration services. What an endpoint does not cover is written as guarded statements through the write executor under the same approved shapes. Each skill declares a coverage map per configuration object — endpoint path or statement path, and why — so the fallback is visible rather than silent. An endpoint is preferred where it exists because it applies the system's own validation and leaves its own trail; statements cannot be given up because they reach what no endpoint exposes. Neither path writes a shared row without a person. Erratum 04.09.2026 (D113): "a version in a non-deployed stage" — the version is deployed on the working environment only, because getRates prices only DEPLOYED versions. Agent Skills § 3, Components — Configuration § 4
D75 Configuration runs in two phases with a sign-out between them. Intake and normalization produce the specification (H1). Phase 1 — Abacus: tariffs become rating versions, deployed on the working environment only (wording corrected 04.09.2026 — D113). Phase 2, two branches in parallel — 2A Serdica: views, translations, endpoints, process, numbering, print; 2B IPAL: the policy product, its covers and factors, and the offer. Serdica moves beside the product rather than after it because everything it keys on — the product code and the cover codes — is fixed at H1, so nothing in 2A waits for a row 2B writes. Every phase ends with its own tests passing and a sign-out document — what was built with counts from the write log, what was tested with its assertions, the proof rung actually reached, what the next phase needs, what is open, and the phase's teardown — and the next phase reads that document and never the phase's transcript. A sign-out carries a revision; a consumer records which revision it read, so a re-issue makes dependent assertions re-run. Quoted and issued are the joint proof taken once both branches are green, because driving the wizard needs 2B's catalogue and 2A's visibility together; neither branch may claim those rungs alone. Configuration Module § 1, § 1b (the stage contract); Components — Configuration § 2, § 8

Still open after these four (Product Configurator § C): C-2 (whether a projection, not the agent, authors every statement — D74 narrows it to the statement fallback path), C-4 (the request map for products never priced from the incumbent side), C-5 (rate 0 versus an open version for an unpriced cover), C-6 (working versus target environment wording), C-7 (the three provenance classes in the schema), C-8 (whether the rating engine becomes the product and the policy administration system the option), C-9 (commercial residency for tariff documents). C-1 and C-3 are settled — C-1 by D72, C-3 by D74 and D75 making the tariff phase the first writer.

14. Taken 03.09.2026 (evening) — the target state, and what the platform is for

# Decision Applied in
D76 Autonomous production self-service is the target, not a non-goal — and it is reached one accepted risk class at a time. The always-human write set (shared row, irreversible, DDL, customer-facing execution, customer-visible send) is the set at the current stage, not a permanent exclusion. A class leaves it only when the organisation accepts that named risk class explicitly, per case type and per target, in a recorded decision; every other condition of the instance check still applies, and one revert still suspends the shape. The platform never moves a class itself and no configuration value can. The same re-scoping applies to customer-visible communication and to a customer self-service surface: both are targets of an operator-less desk, and what is excluded is building the self-service surface before the operator surface and the gate protocol exist. Non-goals N-2, N-3 and N-9 are re-scoped accordingly; N-7 stays as a module operating rule and is no longer presented as a product boundary. Non-Goals N-2, N-3, N-7, N-9; Gating § 1, § 2
D77 The platform is for complex products, not for one estate. It serves the configuration, support and repair of products that span many services, systems and procedures, whatever administers them. Bulstrad on Serdica and IPAL is the case study. A second customer replaces bricks and not the building: its channels, its systems and their connectors, its contract clauses and clocks, its environments and branch flows, its identifier patterns and its field catalogue are the plug-in; the platform, the three modules, the gate set, the write protocol and the ledger are untouched. Partially settles the reconciliation's C-8 — the widening is decided; whether the rating engine is sold as the anchor product is still open. Platform PG-23; Whitelabel Catalogue; Product Configurator Reconciliation § 2 C-8
D78 The estate map is corrected. BI Publisher and the client SOAP interfaces belong to the incumbent side, not to the Serdica suite (stated 03.09.2026). The Serdica suite holds IPAL, ABACUS and the process engine. The incumbent side is reached by the Support module; the Configuration and Development modules do not connect to it in the case study's normal flow. Infrastructure — the source repository and its pipeline, the log store, and the metrics sink — is a third group with a different role: the platform builds, delivers and observes through it rather than configuring it. Prometheus is the named metrics-sink candidate; the choice is an operations decision because the platform's own numbers are parsed from the ledger, never scraped. Software Architecture § 10.1; Glossary

15. Taken 03.09.2026 (night) — the unit of value, and the shape of the build

# Decision Applied in
D79 Money is not a metric of this platform. Restates and widens D52: no figure on any page or presentation is expressed in currency — not an hourly rate, not a cost per ticket, not a cost per saved day, and not the provider's bill. Provider spend stays a control (budget, cap, escalation) and never appears as evidence that the platform works. The valid measures are: Support — hours, bus factor, people involved, knowledge domains involved, and the desk's ability to absorb a temporary need for five to ten people at once through parallel cases rather than headcount; Configuration — hours and days from intake to a preview and to an accepted deployed product, people and domains involved; Development — time from brief to a verified deploy, and vendor dependency removed. Value and ROI § The unit rule, § 2, § 5, § 6; Metrics § Spend envelope and three new rows; Baseline § 3
D80 The build is two phases, and phase 2 parallelises by discipline, not by module. A module is a unit of behaviour, not a unit of work: it is assembled from components four different kinds of person build. Phase 1 designs the architecture and writes the contracts. Phase 2 implements: backend core, agent framework, administration UI and governance are small tracks of one or two people each; connectors (10–12 slots) and skills (8–12 at a time) are the widest seams and absorb every additional pair of hands; the agent tracks — five configuration stage authors, six support investigator authors, one per declared development source — need domain knowledge and no code. Only four orderings exist inside phase 2, and all are satisfied by phase-1 deliverables (five since D82 — the wave order). Delivery § 1, § 1.1; Delivery § 1.4.3

16. Taken 03.09.2026 (late) — the non-goals page, and the order of the build

# Decision Applied in
D81 The three re-scoped non-goals are withdrawn from the list, not softened on it. D76 re-scoped N-2, N-3 and N-9; keeping them as rows titled "autonomous production writes … reached by default" still read as exclusions of the thing the platform is built to reach. They are removed. What replaces all three is one boundary, N-12 — no autonomy the platform granted itself: a write class leaves the always-human set only on a recorded organisational acceptance of that named risk class, per case type and per target; no policy row, configuration value or agent may move it; the set never widens as a side effect of a successful run; one revert moves the class back and suspends the shape. The withdrawn ids are not reused and each carries a row saying what it became, so a reference written against the old numbering still lands on an answer. N-7 stays as a module operating rule. Non-Goals § 1–§ 3 (N-12 added, N-2/N-3/N-9 withdrawn); Failure and Recovery § 5; Requirements Register G-7; the product page's boundaries panel
D82 Phase 2 runs in two waves: Configuration first, then Development and Support together with the rest of the platform infrastructure. This is a second axis on top of D80, not a replacement: how the work divides is still by discipline, when each module reaches a real case is by module. Wave 1 builds the platform spine a case cannot run without, the connectors Configuration touches, the configuration skills, and the five configuration stage agents — Configuration first because it has the deepest specification, a sibling that already executed it end to end, skill-based tests, and no personal data, so it runs on any adapter while the Support data boundary is still being arranged. Wave 1 closes on the T2 slice. Wave 2 adds Development and Support at the same time — they share no connector, no skill and no agent — and the remaining platform infrastructure beside them. The knowledge migration runs beside both waves and gates neither. Delivery § 1, § 1.1, § 1.2, § 1.3; the product page's delivery section

17. Taken 03.09.2026 (late) — the two module flows, made to agree

# Decision Applied in
D83 Support investigation is entered from the take, not before it. S1 classification hands the case to S3 solution take, whose first question is whether a ready solution exists — an existing skill covers the operation, or memory and the experience index answer it. If one does, the case never enters S2. If none does, the case leaves S3 by the no ready solution edge, S2 investigation works the databases, the source, or both until the mechanism is established and the isolated verifier agrees, and the take is then made on evidence. The routing table already said this ("memory answer at S3; S2 only if unknown"); every diagram contradicted it. An unconditional investigation stage makes every known question pay for a re-derivation it does not need, which is the opposite of what precipitation exists to achieve. The stage numbers name the stage documents, not a running order — S2 and S3 keep their ids. Support Module § 1–§ 2, § 4; Stage Investigation § Purpose; Stage Solution Take § Purpose; Agents § 3; Support goals sample; the product page's support strip
D84 The three pictures of each module flow are one picture. The goals-page sample, the product page's strip and the module's own diagram had drifted into three different processes. They are reconciled, and two real gaps closed with them: the isolated verifier is not a stage — it sits inside S2 where it re-derives the mechanism the investigation claims — and S6 verification means the customer's symptom re-checked on the customer's surface, so the strip's "Re-check" label is gone. On the Development side the strip's "Brief" and "Review" labels are replaced by the module's own approval and corrections, S7 deploy approval and S9 reversal appear on every surface, and DG-7's merge request — which appeared in no diagram at all, including the module's — enters the flow as a gate on the exit of S5, before any deployment script may be approved. Support Module § 1; Development Module § 1–§ 2; Support and Source goals samples; the product page's two flow strips

18. Taken 03.09.2026 (night) — the incumbent side, the process, and one page per stage

# Decision Applied in
D85 The INSIS side of a dual-system product is not configuration work. It is one PL/SQL script, run once per product — the contract rows and the seam rows a transfer needs — and it carries no per-product quirks, so it earns no sub-stage, no oracle-insis connector catalogue, no separate grant scope, no environment pairing and no teardown checklist. S3b is removed. The stage records a named deliverable with an owner: the script, who runs it, on which environment, and the date; a change to the script is Development work at Hd. The specification loses its insis section. The configuration proof ladder ends at issued — arrival in the incumbent system is proved by the Support module, which owns transfer investigation, not by a configuration rung the module has no connector to check. Settles case-study gap L. Stage IPAL § The INSIS side; Configuration Module § 7.1 and § 7.4; Stage Normalization § WS-3; Components — Configuration; Agent Skills
D86 The BPMN process is IPAL configuration, not wiring. Registration against the product moves from S5 Serdica to S3 IPAL, because the process key, its task and role bindings belong to the policy product. Authoring or changing a BPMN stays Development work reached at gate Hd — the health path is the worked example, where the product id is a constant in the plug-in. S5 keeps routes, labels, endpoints, roles, numbering and print. Stage IPAL § The process; Stage Serdica; Configuration Module § 7.1; Components — Configuration
D87 A module is nothing more than its stages. Every cross-cutting document is folded into the stage that owns it, and every stage page now names what runs it — its agents, its isolated sub-agents, the memory domain it owns, the skills it runs, and its branch of the agent graph. Configuration: the whitelabel specification → S1, the configuration summary → S2, the pricing-factor model → S3, the stage contract → the module page, and the eight real cases split so that each stage carries what that case demanded of it. Development: five stage pages created — planning (with the whole placement model), implementation, test and corrections, deployment scripts, deploy and reversal — with the rules the eight real changes forced distributed onto the stage each one governs. Configuration Module; the five configuration stages; the five new Source stages; the five Support stages
D88 The architecture section is reorganised around what a reader looks for (19 pages → 13). Architecture is the section's home. Reuse Inventory and Hosting and Operations fold into Software Architecture, with solution placement and the reuse map moved there from Architecture because both are backend concerns. Prompt Governance folds into Agent Framework; Case Control into Agent Runtime; Agent Profile into Agents as § 0; Memory Migration into Memory. Renames: Agent Graph → Agents, Agents and Memory → Memory, Skills Catalogue → Agent Skills, Write Gating → Gating (which also takes the gate set from Architecture § 5.2, so the whole gate story is on one page), Administration UI → UI, Configuration Catalogue → Whitelabel Catalogue — renamed rather than moved under the Configuration module, because it catalogues platform configuration and the collision of the two senses of the word is what made it look misplaced. Erratum 07.09.2026 (D118): superseded in part by D151Agent Skills is retired in turn; the skills principles are Part II of Agents Memory and Skills. The other renames stand. the 13 architecture pages; Home; the product page; the documentation sidebar

19. Taken 03.09.2026 (late night) — the section home, the gate architecture, the second surface

# Decision Applied in
D89 The Architecture page is the section's home, and "Goals — top level" is retired into it. Two index pages for one subject is one too many: the goals section's top-level page duplicated what the sidebar and the documentation home already list. Its whole-system picture and its one-sentence-per-area table move to Architecture § 0, where they belong — the platform's five parts with the three modules on them, the channels above and the estate below, the channels and estate labelled as the Bulstrad case study. Clicking a module opens that module's agent graph as a schema below the diagram: the root, the stage agents, the isolations named as isolations, the write executor and the connector agents. The full profiles stay in Agents. Internal platform wiring is stated in prose and drawn in § 1, because a home picture that draws every edge stops being a picture. Architecture § 0; Goals — top level removed; Home; the product page; the documentation sidebar
D90 Gating states how gating is built, not only which writes are gated. Four sections. On the agent side: a stage agent cannot ask — it produces a closed-form packet (shape id, every parameter bound, expected counts as numbers, effect class per step, a derived teardown, the assertions and their replay, the grant, the artefact hash) and hands it up; it is denied the means to skip rather than instructed not to, because it holds no write connector. On the backend side: a gate is a row, not a call — GATES, GATE_DECISIONS (actor = a person or a policy id), GRANTS bound to the artefact hash and checked before contact, HELD_BATCHES aged as cases, WRITE_SHAPES where suspension lives; escalation is a timer per SLA class. How a shape earns auto-confirm: observed → shape-approved after three consecutive clean instances → policy-confirmed on a recorded acceptance of the risk class; a revert, an auditor refusal, a red eval set, a template change or a withdrawn risk class returns it to stage 1. Auto-confirm at runtime: nine conditions in a fixed order, the first failure named in the packet so the operator sees why they are being asked. Gating § 9.1–§ 9.4
D91 The UI is two surfaces, and both are wireframed before build. The operator surface is the seven administration screens. The client surface is four: my requests in the customer's vocabulary answering only "is anyone waiting on me", one request showing what was asked, what has been established and the single open question, acceptance — the one gate the customer owns (CG-11), recorded with the person's name and the artefact hash — and new request, the self-service intake, marked as the target state and deliberately not the first build (D81). Five things are absent from every client screen by design and the page says why: the transcript, table and environment and agent names, any gate an operator owns, anything that widens a role, and every figure about cost. Erratum 04.09.2026: "the seven administration screens" is superseded by D119 — the operator surface is eight workspaces (Inbox, Cases with the case chat, Decisions, Studio, Knowledge, Metrics, Control) on fourteen screens; the four client screens and the five absences stand. UI § 5b; ui/client_wireframes.html; ui/admin_wireframes.html; the product page's UI panel

20. Taken 03.09.2026 (late night) — how the modules reach each other, and where the agent pages live

# Decision Applied in
D92 There are exactly two ways one module reaches another, and they are not interchangeable. A consult asks for knowledge: the platform spawns the owning domain's profile as an isolated read-only sub-agent inside the asking case, booted from that domain's AGENTS.md node ("chain" withdrawn 04.09.2026 — D106) with the asking case's grants narrowed to reads — no case is opened in the other module, no queue is joined, no gate fires, and the answer returns as a paper in the asking case, labelled evidence and never authority. A handover (Hd) asks for a changed system: the receiving root opens a sub-case with its own stages, gates and writes, behind prior human confirmation. Five rules make the distinction hold: a consult is addressed to a domain and never to an agent; depth is one, so a question cannot tour the estate; a consult that needs a write cannot perform one (the consulted profile has no write connector) and therefore returns "this needs a change in my module", which the asking root raises as Hd; the trigger is the existing two-failed-attempts rule; and the consult catalogue is configuration (consults.catalogue), not architecture, because a second customer's estate has different domains. Eight catalogued questions and four handover directions are named. Agents § 5, § 5b; Configuration Module § 4b; Support Module § 3b; Source Module § 2b; Memory § 6b; Whitelabel Catalogue § 5b
D93 An arrival is routed by a platform profile, not by a module. A case must belong to a module before a root can classify it, and until then no root exists to decide — so platform.intake, owning platform/intake, does exactly four things with a normalised arrival: it names the owning module, the case type, the customer and the duplicate verdict, opens the case on that module's root, and stops. It always decides (a shape it does not recognise gets its channel's default, flagged low-confidence — the same discipline as SG-11), one operator action re-routes and the re-routing rate is a metric, routing is configuration (intake.routing per channel × shape × customer, in the customer plug-in), it is not a classifier of severity or clocks (that is the owning module's S1), and a mixed arrival is decomposed into one case per module with an explicit ordering rather than one case that changes owner twice. A root deliberately does not boot from its stage domains — a root that knows the catalogue's dependency order starts making catalogue decisions — and holds no write connector and no skill. Erratum 07.09.2026 (D118): narrowed by D143platform.intake opens every client case on support.root and does not name the working module; naming it is Support's S1 and the route at H2. Normalising, stamping the origin key, dedup, resolving the customer, the case type and the initiation right stand, and routing stays configuration. Agents § 5b, § 5c, § 1 (platform.intake row); Memory § 1; Whitelabel Catalogue § 5b
D94 The component inventory is a delivery artefact, not an architecture document, and moves into Delivery § 1.4 where phase 1's deliverable is defined. It described no behaviour: it listed what has to be built, by which track, with which done test — and its own opening sentence pointed at Delivery. Per-module component detail stays on the three module Components pages; the platform's libraries stay in Software Architecture. Delivery § 1.4; Component Inventory removed; Home; the product page
D95 Phase 1's deliverable is one thing: this technical documentation, approved by every stakeholder — the platform, the agent framework, the three modules as their stages, and the contracts between them. Approved means each stakeholder has read the part they will be held to and said so, not that it was circulated. The working artefacts (the component list, the contracts and their broken-fixture validation) sit underneath that signature rather than standing in for it. Delivery § 1; the product page's delivery section
D96 The agent pages are one page with sub-pages, and a module's agents are described on the module's own page. 10 Architecture/50 Agents/ holds Agents (the parent) with Agent Framework, Agent Runtime, Memory and Agent Skills under it, rendered as an indented group in the documentation sidebar. The Agents page keeps what is platform-wide — what a profile is, the platform profiles, how consults and handovers work, budgets — and its three per-module sections become links to the module that owns them. Each module's Components page now carries one table for its agents (what it owns and its hardest judgement, in → out, memory boots-from → writes, tools per environment scope, what it is denied, where it escalates, and the eval set that proves it) instead of two tables describing the same profiles from different angles, and the module's graph diagram moved with it. The Development implementers had two names in two places and are now one: source.implementer.<source>. Erratum 07.09.2026 (D118): superseded in part by D151Agent Skills.md is retired; the sub-pages are Agent Framework, Agent Runtime and Agents Memory and Skills (Parts I–II). 50 Agents/*; the three Components pages; the sidebar; Home; the product page

21. Taken 03.09.2026 (late night) — the client as initiator, and the pictures

# Decision Applied in
D97 Initiation is a grant, and it is about starting — not about what a case may become. The router resolves a sender to a person and a customer, names the module, and then checks intake.initiation for that customer × role × module. Three outcomes and no fourth: granted opens the case; may request opens an authorisation request that parks visibly — a grant request in the operator's gate inbox naming the person, the module and the description, and a notification to the customer's own approver where the plug-in names one; not granted refuses at intake with the contract clause and the commercial path, keeping the description so the commercial counterpart has it (N-7). The router never re-routes to a module the sender may start — a configuration request quietly opened as a support case produces work nobody asked for and hides the authorisation question. The grant governs starting only: a client who may start a support request still gets a code fix, because the operator holds the handover right at Hd. Bulstrad defaults: Customer representative may start support, request configuration, not start development — and every cell is a plug-in value, so a customer who wants no client-initiated work sets all three to may not start and the screen is not rendered for their people. Agents § 5c; Trust and Data § 3b; Whitelabel Catalogue § 5b (intake.initiation, intake.origins, intake.approver_notify); UI § 1b; the client wireframes
D98 A request carries its origin and the modules it involves, on every client screen. Origin — mail, the ticket system, the customer's help desk, or started in place on the client surface — because one case model with four doors is only visible if the door is a field. Modules involved — so a support case that grew a configuration sub-case says so instead of going quiet. Initiator — a client who starts work is a different fact from a client who was written to, and the acceptance gate already depends on knowing which. intake.origins is a plug-in value. Client wireframes screens 1, 2, 4; UI § 1b
D99 Every screen is drawn, and every part of the platform picture is clickable. Eleven schematic SVG wireframes — four client, seven operator — are generated into 10 Architecture/ui/ and shown as a gallery on the UI page; clicking one enlarges it. The platform goals page carries the detailed picture instead of the old backend-only diagram: the five platform parts are clickable and open that part's own goal section on the same page (no duplication — the sections already exist), and the modules, skills, write path and connectors link to the documents that specify them. A mermaid click X href "…md" is written as a wiki path and slugged by the builder like any other link, so the wiki stays self-consistent; src=/href= inside raw HTML in a wiki page now resolves and copies like a markdown link, which is what makes an SVG gallery possible at all. Erratum 07.09.2026 (D118): superseded in part by D150 — the goals chapter carries no diagrams; the detailed platform picture is Architecture § 0 alone. The eleven wireframes, the gallery and the clickable-link mechanics stand. Platform § diagram; UI § 1c; ui/*.svg (11 new); build_docs (CLICK_RE, ATTR_RE, revealPart, lightbox)

22. Taken 04.09.2026 — the consistency review of the presentation set

Vladimir's answers to the 03.09.2026 review of the product page and the 51 technical pages (87 findings; four verification agents ran read-only against PROD/TEST/QA/DEV IPAL, PROD INSIS, both submodules, the ticket archive and the contract — reports in the review folder). Each is applied in aisa-next/, the register and the product page.

# Decision Applied in
D100 The technical documentation is the source of truth; the product page is derived from it. The product page may compress (a strip, a count, a summary line) but never contradict; every figure on it cites the page it comes from, and a conflict is resolved by changing the product page. The same rule binds the Architecture and Platform pictures to the module pages they summarise. product page; Architecture § 0; Platform diagram; Home
D101 The third module's display name is "Development"; its technical identifier stays source. Page titles, sidebar, product page, goals and prose say Development module; profile ids (source.root, source.planner, source.implementer.<source>), the memory branch source/, the plug-in section sources, the folder 30 Source and the generated URLs are unchanged, because the module works declared sources (D58). Supersedes the 02.09.2026 rename "development → Source" for display text only. First mention on each page: "the Development module (id source)". every page naming the module; sidebar; Home; product page
D102 Stage numbering is kept as the stage pages define it — Configuration S1–S5, Support S1–S8, Development S1–S9 — and every picture states it. "5 stages" in the Architecture and Platform diagrams meant five stage pages; the nodes now read S1–S5, S1–S8, S1–S9, and the D83 sentence "stage ids name documents, not a running order" appears under every module picture. Support S4 confirmation is gate H3 on the solution packet — H2 presents it as the plan at S3, H3 confirms it at S4 (Gating § 1) — specified in Stage Solution Take § 3; the module page and the product strip say so instead of skipping S4. Architecture § 0; Platform § diagram; Support Module § 1; product page strips
D103 N-6 is reworded, not withdrawn: the documentation decides no dates, no named staff, no headcount commitments and no vendors; capacity statements — how many parallel tracks a seam can absorb, "one or two people per platform track" — are architecture (D80) and stay. Non-Goals N-6; product page Boundaries; Delivery § 1.1
D104 Estate DDL is applied by the platform's write executor, under the gating mechanism — on every environment. PL/SQL package changes (seam 3) are W5 writes: capture-before → preflight (signature) → apply in one connector call → verify incl. cross-database dependents → compensate by re-applying the snapshot (D60), behind the always-human HW-ddl gate at the current stage, with the identity of the current D65 stage (stage 1: the existing privileged identity; stage 2: the least-privilege platform identity). The DBA is the holder of rights and the reviewer of the identity path, not a step in the apply loop; "PROD applies are requests to the DBA" is withdrawn. D47's "Ablera dev/DBA apply the DDL" is narrowed to the one-time creation of SRD_SUPPORT itself. DG-8 keeps code deploys with Ablera DevOps (unchanged). Stage Planning § 3b; Stage Deploy and Reversal; Development goals DG-8; Components — Development; D47 erratum; Trust and Data § 3
D105 The master port follows PROD verification. S6 prepares the port (the rewritten commit on a worktree, or the recorded "no counterpart"); the port MR is opened as the closing step of S8 after the runtime check, unless the H2 brief records why it goes first (G18). The estate's own verb is cherry-pick (adapt if diverged); the module's layout-crossing procedure is port; both terms are defined once in Stage Deployment Scripts and used nowhere else interchangeably. Verified against .claude/rules/code-changes.md on master and bulstrad-staging. Development goals DG-2 + diagram; Development Module § 1; Stage Deployment Scripts; Stage Deploy and Reversal
D106 Boot is the own node — for consults too. A consulted profile boots from its domain's AGENTS.md node plus the question, with the asking case's grants narrowed to reads; the rest of the tree is readable on demand (D14). D92's "chain" wording is withdrawn. Agents § 5; Agents Memory § 2; D92 erratum
D107 H5-SIM is held by two roles, not two names: Approver(PROD, simulation) is granted to the role Ablera support lead and the role Bulstrad system owner (one per system); who holds a role is onboarding data in the customer plug-in (roles.group_mapping), never documentation. Open Decisions B-1 closes as "roles assigned; countersignature is the customer's onboarding act". Failure and Recovery § 5; Gating § 1; Whitelabel Catalogue roles.*; Open Decisions B-1
D108 A core-change proposition is addressed to a role: the estate development lead. The artefact is a GitLab issue on master carrying the brief (seam, rejected alternatives, blast radius, test plan); the Development case closes against the issue id; the issue's state changes (accepted → MR → merged, or closed with a reason) return as ledger events; no SLA is imposed on the estate's own process, but the age of an open proposition is a metric. Stage Planning § PL-1 seam 4; Development Module § 2; D19
D109 Retention is a controllable policy with manual actions. Retention is configuration per artefact class (retention.*: case papers, transcripts, evidence attachments, handle maps, special-category evidence, ledger) with a default per class — cases and the ledger never expire (D49); handle maps die at case close (existing); special-category evidence defaults to the contract term. The Administrator role changes a policy within bounds, and every change is a ledger event. Manual actions — erase, anonymise, extend, export — exist as gated writes (W7-class, always human) with the requester, the legal basis and the affected cases recorded. Platform PG-13 + Details; Trust and Data § 4; Whitelabel Catalogue retention.*; Delivery § 4
D110 Phase 1 is signed by roles. The stakeholder set of D95 is: Bulstrad business owner per module (three), Bulstrad IT and DBA, Ablera support lead, Ablera development lead, Ablera platform architect, and the data-protection role. Names are an annex outside the wiki (N-6). Delivery § 1; D95
D111 Every metric carries a numeric target with its basis (table in Metrics § Baseline → target, replacing "trend up / no regression / reported per period"): human turns per routine case median 3 → 0 non-gate turns once a shape is proven; gate minutes ≤ 5 per gate, ≤ 15 per routine case (today ≈ 38 min true time); Development interventions ~18 → ≤ 4 gate decisions + ≤ 2 questions per case at ≥ 2× acceleration; throughput ≥ 7 closed cases per working day at unchanged human hours; reuse recorded on ≥ 60 % of Support cases within two quarters (the catalogue already covers ≈ 2/3 of analysed tickets); retrieval top-5 hit-rate ≥ 50 % per domain before acceptance (baseline 10 %); placement ≥ 80 % of changes entirely in seams 1–3 (baseline 5 of 8 case studies) and 100 % of seam-4 landings with a recorded proposition; port MR opened ≤ 1 business day after PROD verification, port rework ≤ 10 %; reverts ≤ 1 per 20 deploys, executed ≤ 1 h after the decision; classification corrections ≤ 10 % after three months, ≤ 5 % steady; re-routing ≤ 5 %; SLA: warning at 50 % of the window, escalation at 75 %, 0 breaches without a prior warning, response breaches ≤ 2 % per quarter; Configuration: intake → preview ≤ 1 business day, intake → customer acceptance ≤ 5 business days median (baseline 9–11 days), unresolved[] ≤ 5 at H1 and 0 at close, ≤ 2 H1 correction rounds, QT rows 0, unreachable products 0; verifier + auditor ≤ 25 % of case reasoning at steady state; thin shapes 8 → 0 (D115) and 35 of 35 shapes closed by ≥ 2 operators within two quarters; held batches > 5 business days without a recorded reason = 0; precipitation decision on 100 % of closed cases, recurring shapes without a skill after the 3rd occurrence = 0; corrections or rollbacks on auto-confirmed gates ≤ 1 %; writes without a grant 0; non-EU model calls 0; parked cases resume ≤ 15 min after recovery. Every target is re-baselined by the ledger after the first ten cases of its kind (D68 pattern) and is a configuration default (D51). Metrics § Baseline → target; goals CG-13, DG-9, SG-11; Whitelabel Catalogue metrics.targets
D112 Gates are trained by humans; a shape exists before it is approved. The first instances of a new write operation carry a draft shape (versioned, unapproved) so the packet is closed-form; the gate is answered by a person; three consecutive clean, person-confirmed instances promote the draft to HW-approve. Gating § 9.1's "no shape → refuse" becomes "no draft shape → refuse"; § 9.3's observed stage is the training stage. Corrections a person makes at the gate are recorded against the draft and are the evidence the approval reads. Gating § 9.1, § 9.3; Stage Solution Take § 3; Components — Configuration § 4
D113 S2 deploys the rating version on the working environment; the deployment set to customer-facing targets stays H4 + H5. Verified 03.09.2026: getRates resolves only PPA_PRODUCT_VERSIONS.VERSION_STAGE = 'DEPLOYED' (SRD_INTEGR.ABC_PREM_2ABC body l. 279; riskmodel/table_interpreter.py l. 568), so an undeployed version cannot pass the S2 test skill — and an older deployed version that matches product, template and date is priced instead, silently. Therefore: the version is written OPEN, compiled, and deployed on the working environment only; the S2 test asserts the version_id it priced; "undeployed" in D74/D75 and on the product page is replaced by "deployed only on the working environment, in no deployment set". Nothing customer-facing changes until H5. Stage Abacus § I/O + apply; Rating Files; Quote Verification; Configuration Module § 1; Gating § Configuration row; product page; D74/D75 errata
D114 H5 fires on customer-facing environments; a deploy to a shared non-customer environment is H4 + the write auditor. environments.<env>.customer_facing is a plug-in flag (Bulstrad: STAGING/TEST and PROD true, QA false). A Development deploy to QA is gated by H4 (script set, teardown) and the auditor as a W2 write — and is therefore trainable and, once proven, policy-confirmable; STAGING/TEST/PROD deploys stay H4 + H5, always human. Source case walks and the deploy page are aligned to this. Gating § 1; Stage Deploy and Reversal; Development Module § 5 case walks; Whitelabel Catalogue environments
D115 Bus factor is measured, and the named list is judgement. Measured 03.09.2026 from the Internal Tag on 267 tickets: one person leads 33 of 35 tag-bearing shapes; lead share ≥ 50 % on 25 of them (38–47 % on the rest — not "50–75 % of every shape"); thin shapes (≤ 2 holders with ≥ 2 tickets each) = 8, none of them print, MYR, FX or Camunda (4 holders each). The KPI is thin shapes 8 → 0 and shapes closed by ≥ 2 operators with the skill: 35 of 35; (erratum 07.09.2026: eight → seven — the blank/GC/sticker (BSO) row carries four holders with ≥ 2 tickets, so the KPI reads thin shapes 7 → 0, and the lead-share range on the remaining ten is 37–47 %, sync compare being 37 % — Data and Information Module § 0.2); the sentence "seven knowledge domains sit with one or two people" stays only as the team's own judgement, labelled as such. Agent Skills § 2b; Metrics; Value and ROI § 2b; product page Proof table; D43 erratum
D116 Personal data and secrets in the Development module's inputs are scrubbed before a model sees them. Worktree files are passed through the secret scrubber (connection strings, passwords, tokens — the customer branches carry real DB passwords in appsettings.json); browser evidence from customer-facing environments (screenshots, DOM) is handle-substituted at the browser connector; a public reply or comment lists every re-identified datum with its audience in the send-gate packet and defaults to handles until approved. Stage Implementation; Stage Test and Corrections; Trust and Data § 4; Stage Application § send gate
D117 Hours only — restated for the pictures. No wireframe, tile or sample carries a currency figure; the Metrics screen shows human minutes per case, not cost per case; "cost" as a case field is renamed budget (tokens, turns, sessions). D52's "the model bill is the one currency line" is marked superseded by D79. admin wireframes (Metrics tile); Platform PG-16; Value and ROI; Metrics § Spend envelope
D118 Register hygiene. Superseded decisions carry an erratum line pointing forward (D26 → D57, D28 → § 8 with the environment split, D47 → D104, D52 → D79, D74/D75 → D113, D92 → D106); D1–D7 link to docs/aisa_next_remediation_plan.md § 2; § 6 drops the item D29 settled; the header's "71 challenge statements" is labelled the 01.09 snapshot (12 + 21 + 40 = 73) and defers to the generated Challenges Register for live counts (03.09: A 30 · B 32 · C 55 · D 21 · R 7 = 145); every "Applied in" cell names the page as it exists after D88/D94/D96 (mapping in § 23). this register

| D119 | The chat is the workspace — the UI is redesigned around one case thread, role front doors and a brief before every case. The operator surface is eight workspaces behind role-dependent front doors, not seven screens: Inbox (every arrival re-briefed from its source by platform.intake — source chip with the external id, what was said, identifiers resolved to where-chips, duplicate verdict, proposed classification with the two clocks, precedents; one operator action opens, corrects & routes, merges or dismisses = H1, SG-11), Cases (one list, role-filtered; former Sessions) with the case chat (former Session view: one thread of eleven card kinds — brief · agent · tool · question · plan · decision · verdict · write · handover/consult · status · human — a stage ladder with the gate each stage carries, a status line in minutes, a composer with slash commands whose second line states the typist's permission, and a Where rail), Decisions (former Gate inbox: every waiting gate with its packet, held batches, shape training, history), Studio (former Skills: prompts, skills and eval sets — draft → try on one case → eval → publish by the prompt-publisher role → rollback), Knowledge (former Memory: tree, proposals queue, articles with taught-by; promotion is the D56 confirmation), Metrics, and Control (former Connectors, plus Roles & policies — the roles → capabilities matrix, retention per artefact class with gated manual actions (D109), the trainable gate policy (D112), budgets in minutes (D117) — and Exceptions & kill switch — grants in force, parked cases by class, the switch, the audit tail). Every card says where: a locator chip ENV · SYSTEM · OBJECT plus mode (read · write · ddl · send) on every tool call, write, decision and brief; the Where rail is derived from the cards, never typed; objects are handles. Thirteen workflows are defined (intake and brief · follow · steer/answer/stop · decide a gate · train a shape · apply/verify/reply · hand over/consult/sub-case · park/recover/kill · author and publish · curate knowledge · administer · the customer's journey · observe) and every human action in them is a verdict or human card in a thread or a row of AUDIT_LEDGER. The client surface keeps its four screens and its five absences (D91), in customer words, without where-chips, estate or kill switch. The eighteen wireframes are generated from one script (ui/gen_wireframes.py) with one shell, palette and vocabulary; the sample case is generic (a premium that differs between the two systems, a vehicle model missing in pricing, a transfer failing for an annex) and is not what the screens are built around. The curator is an Operator duty per branch of the tree, not a seventh role; Control's policy tables are proposed whitelabel keys (retention.*, gates.*, budgets.*) until the T1 skeleton fixes their storage. Supersedes D91's "seven administration screens" and PG-5's "session list and live view" wording. Refined the same afternoon: the decision card and screen 07 follow the plan mode of the coding CLIs — header module › agent › case · to whom, the plan as steps with the gate each needs, the alternatives rejected, and four options (approve · approve and pre-approve a step where policy permits, shown disabled with the reason where it does not · reply with a different approach, on which the agent re-plans · refuse); the packet's fields become collapsed Details. Decisions names the proposing agent and the person it waits on. Knowledge renders the AGENTS.md tree of Agents Memory § 1 and the § 6 experience-entry shape. One request and Acceptance offer Open the case view (the operator thread, read-only) when the representative's role set includes Viewer — a door behind the role check, not a client screen. Sample people are named as illustrations, not role assignments. | UI (rewritten: § 0 principles, § 1 workspaces, § 2 chat vocabulary, § 3 intake, § 4 workflows, § 5 inventory, § 6 gallery, § 7 rules); ui/admin_wireframes.html; ui/client_wireframes.html; ui/wf-*.svg (18) + ui/gen_wireframes.py; Platform PG-5 + Details; Architecture § 2 and the UI row; Software Architecture; Delivery track 3 and P-11; Agents § 5c; Agent Runtime § 11; Agents Memory § 2; Whitelabel Catalogue intake.*; Glossary; Value and ROI; product page UI tile, panel and links; D91 erratum |

24. Taken 04.09.2026 — the Open Decisions page answered (A-1…A-7, B-1…B-5)

Vladimir's answers to Open Decisions § A and § B, given 04.09.2026 with the second wireframe round. A-8 (the tunnel via host) stays open. Each row names the page it is applied to; the Product Configurator § C rows C-2, C-4–C-9 point here.

# Decision Applied in
D120 The agent that emits a deployment artefact emits its revert (A-1 / C-2). The fallback statement path is assembled by the stage agent from the approved template (D72) — it may be SQL, a revert script, or a configuration-endpoint action (D74) — and the same agent produces the revert for every artefact it emits, in the same step, so a phase is revertable without reading its transcript. Diffability of two runs of one product holds at template + parameters, not at a deterministic projection; the render-product reading of D40 is withdrawn for the fallback path. Configuration Module § 3 (script sets with teardown); Gating § 4; Product Configurator C-2
D121 ABC_CFG_* belongs to a dedicated ABACUS↔INSIS capability (A-2 / C-4). The tariff request map (SRD_INTEGR.ABC_CFG_PRICING_FACTORS) and the ABACUS-side validations are the INSIS→ABACUS proxy; they are worked by a dedicated abacus–insis sub-agent of the Support module, consulted by Configuration S2 when the specification says the product is priced from the INSIS side. For an IPAL-only product S2 never configures the map and the acceptance script asserts it is empty. Configuration Module § 7.1 ownership row and § 8 part 6; Support Module (sub-agent list); Product Configurator C-4
D122 An unpriced cover stays unpriced, with a pre-emptive note (A-3 / C-5). S2 neither invents a rate 0 nor blocks the version for a cover the specification names but the tariff does not price; the cover is left without a rate and the tariff analyst adds a pre-emptive note — a specification line and a line in the customer preview — that the cover is unpriced, because customers sometimes intend the opposite. The note becomes an unresolved[] item only when the specification itself is ambiguous about the cover. The two-case proposal (rate 0 vs OPEN) is withdrawn; open_or_provisional[] keeps recording what stayed unpriced. Stage Abacus § I/O and rules; Quote Verification (proof level); Product Configurator C-5
D123 The environment path is knowledge per product line, not one global wording (A-4 / C-6). Working and target are decided per path: the existing policy-administration products develop locally, test locally as far as possible, then bulstrad-staging (TEST), then PROD, with the port to master and on to bulstrad-qa afterwards; the health line (product 8000, ДЗО) works on QA, ports to master, and will target the planned bulstrad-prod-2. "QA is the working environment of every configuration case" is not confirmed — it holds only where the product line says so. The paths are configuration in the customer plug-in (environments.paths, per product line — generalising source.start_flows of D63, which already carried the two Development flows) and knowledge for both the Configuration and the Development module. Whitelabel Catalogue environments; Configuration Module § 0; Development (Source) Module § 1; Configuration Details; Product Configurator C-6
D124 Three provenance classes (A-5 / C-7). Schema 1.1 adds provenance.kind ∈ {spec, system, decision} beside source on every specification line; decision lines are by construction unresolved[] items, system lines cite the estate prober's count. Additive, product-agnostic; the four consuming stage prompts declare the major they read. Components — Configuration § 3 (schema 1.1); Stage Normalization; Product Configurator C-7
D125 ABACUS is addressed as a system of its own (A-6 / C-8). Shape 1 — the rating engine alone behind a foreign policy-administration system, with a contract export instead of an IPAL catalogue — is a product shape to build for: its own plug-in, an export skill, its own connector and where-chip. That Bulstrad owns and operates ABACUS and IPAL as one does not merge them in the platform's model. PG-23's wording gains the sentence. Platform PG-23; Whitelabel Catalogue (customer shapes); Architecture § 0; Product Configurator C-8
D126 No commercial-residency key (A-7 / C-9). The platform's customers are bound to one region; data_boundary.commercial_residency is not added. Re-opened only if a multi-region customer appears; until then tariff documents follow the personal-data route rules that already apply. Product Configurator C-9; Whitelabel Catalogue § 3 (no new key)
D127 Customer-owned data is the customer's; both parties sign to administer it (B-1). The countersignature ask is replaced by a data-administration agreement signed by the operator (Ablera) and the client: customer-owned data stays the customer's and is administered per local legislation; the production-simulation criteria (D42) and the two-role gate (D107) are clauses of that agreement, not a separate countersignature. Failure and Recovery § 5; Trust and Data § 4; Architecture § trust; Open Decisions B-1
D128 Network reachability follows policy, and policy follows requirements (B-2). Reachability gaps are the customer's current policies, not a design constraint; they change as requirements arrive and each request is specific — never wildcard access. B-2 is therefore a rolling process: every new reach is a defendable request, and its answer changes CONNECTOR_SCOPES rows, never code (D46). Software Architecture § 10 (reach); Platform Details PG-22; Open Decisions B-2
D129 The platform's SSH account on the via host is the estate's deployment user (B-3). The same identity the estate deploys with; because the platform runs on the customer's premises, access to these services is assumed available, and a missing route is a specific, defendable request to the customer's network — treated as open in the design. Erratum 07.09.2026 (D118): narrowed by D132 — there is no via host; the estate's deployment identity applies to the Linux hosts the host connector reaches directly. Software Architecture § 10 (via host, SSH connector); Open Decisions B-3
D130 A deployment agent with per-environment rules (B-4). The Development module gets a deployment capability whose rules are knowledge per environment: locate the last build job of serdica-infrastructure, then in its deployment phase the job that includes the service to deploy (the .yml files name it); bulstrad-staging and bulstrad-prod originate from the v3.0.0 branch with their own compose files, master and every other environment from master. The deploy trigger is no longer "known only to DevOps": the deployment agent resolves the job by that rule and triggers it after the target gate (H4, + H5 where customer-facing) — DG-8 is narrowed the way D104 narrowed D47: the estate's mechanism (the pipeline job) still executes, DevOps holds the rights and the compose units, and "deploy requests are filed by hand" is withdrawn. Software Architecture § 10.2 (deploy); Source Module § 1 and S7–S8; Stage Deployment Scripts; Open Decisions B-4
D131 B-5 confirmed. SRD_SUPPORT enters the QA backup inventory at creation and the ledger RPO target of Delivery § 4 (≤ 15 min, with the platform's own off-database copies) stands; the duty stays with the DBA process (D45). Delivery § 4; Open Decisions B-5

25. Taken 04.09.2026 (afternoon) — the developer-readiness answers (A-8…A-10 and the contradictions)

Vladimir's answers to the developer-readiness assessment of the same day (memory): A-8, A-9 and A-10 decided, the budget dimension fixed, and the six contradictions the assessment found closed after reading the estate's source (serdica-backend master/bulstrad-qa), the IPAL schema and the memory. The artefacts the assessment called missing now exist: the SRD_SUPPORT DDL and the contract set (Data Model, Contracts).

# Decision Applied in
D132 There is no tunnel; every connection is direct (A-8). The tunnel connector, the via host and route.kind = ssh_tunnel are dropped; CONNECTOR_SCOPES.route.kind ∈ {direct, unreachable} is what the reach probe writes. A target the QA host cannot reach parks the case on a capability gap and becomes one specific network request (host, port, purpose) to the estate — never a hop through another host. Model calls go directly to the provider's EU endpoint; no Ablera-side model gateway. D46 (reach is data) and D128 (requests are specific) stand; D129's deployment user applies to the Linux hosts the host connector reaches, not to a via host. Challenge Rounds R2-9 is superseded in its tunnel parts. Software Architecture § 3 (Ssh row), § 10.3, § 10.5, § 10.7 row 4, Challenges; Whitelabel connectors.reach; Delivery § 1.1/§ 1.3; Architecture § 0 table; Open Decisions A-8; DDL CK_SCOPES_ROUTE + policy connectors.route_kinds; index.html c-eng/c-estate
D133 An approved write shape expires by default; the approver may extend once, by at most one day (A-9). Approval stamps expires_at = now + writes.shape_expiry_default (P90D); an expired shape behaves as suspended (instances fall back to instance confirmation, no auto-confirm). A holder of the Approver role for the target class may extend once, by at most writes.shape_extension_max (P1D), as a ledger record (SHAPE_STATE, action extended); longer is a re-approval as a new version. Gating § 4 + Challenges; Whitelabel § 5; DDL WRITE_SHAPES.EXPIRES_ON_UTC/EXTENDED_UNTIL_UTC, CK_SHAPES_EXTENSION, guard -20064/-20065; write-shape.schema.json; openapi.yaml POST /decisions/shapes/{id}/extend
D134 Roles are delivered by the platform, not by a directory (A-10). Read from the estate's source rather than asked: Authority issues one role claim per SRD_SYS.USER_ROLES row (UserAccountIdentityFacade.GetRolesClaimsAsync, Plugin.Standard); clients are SRD_SYS.OIDC_APPLICATIONS / oidc-settings.json rows (services via client_credentials); the directory checks the password only (LDAP may surface bstRole); endpoints are gated by SRD_SYS.Routes.AllowedRoles through the JWT-with-session middleware with Redis re-enrichment. The six platform roles are LT_USER_ROLES rows (AISA_VIEWER, AISA_OPERATOR, AISA_APPROVER, AISA_PROMPT_PUBLISHER, AISA_ADMIN, AISA_CUSTOMER_REP) Ablera adds; roles.group_mappingroles.estate_role_ids; ROLE_ASSIGNMENTS.source = platform_row. No Bulstrad IT directory request. What stays with the customer: the security owner's deliberate yes to the write and deploy roles. Trust and Data § 3; Software Architecture § 7, § 10.4, § 10.5, § 10.7 row 1; Whitelabel roles.estate_role_ids; Open Decisions A-10; DDL CK_ROLE_SOURCE (roles.estate_role_ids is a customer-plug-in value, seeded by the plug-in)
D135 The budget has one dimension: time, in minutes. A case's budget is its predicted delivery time — the case type's default at open, replaced at classification by the solution packet's / brief's prediction; where two sources differ the maximum stands. A task's budget is a share of the case's (BUDGET_SHARE_PCT) or a fixed slice (BUDGET_MINUTES_FIXED). Provider usage, expensive reads, DB sessions and sub-agent count are caps and ledger facts, never budget dimensions; the 80 %/100 % thresholds apply to minutes. Spend stays a control (D79, D117). Agents § 0.1, § 6; Agent Runtime § 2 rule 6, § 11.5; Platform Details PG-16; Metrics controls; Stage Solution Take § Out; Whitelabel budget.*; DDL *_MINUTES columns, COST_LEDGER.MINUTES_CHARGED
D136 "Write-path precedence" is a per-object coverage map, not a ranking. Three paths exist — the system's own configuration endpoint (D74), a guarded statement under an approved shape, the gateway publication sequence for rate files — and which one an object takes is declared per configuration object in configure.endpoint_coverage / the skill manifest's coverage_map; the executor refuses an object with no entry. Bulstrad: compile and cache reset → endpoint; rate-file publication → gateway sequence; every row object incl. LT_* and PR_ANNEX_TYPES → statement. WRITE_LOG.write_path ∈ {endpoint, statement, gateway, ui_action, send} records what ran. Write Envelopes § 1; Whitelabel configure.endpoint_coverage; skill-manifest draft; DDL WRITE_LOG.WRITE_PATH / CK_WLOG_PATH
D137 Translations are a responsibility, not a stage. One skill (route / label / endpoint check) holds the three assertions; the Serdica stage agent holds the responsibility by default (configure.responsibilities.translations) and completes the missing languages; the verifier re-runs the same skill read-only at H3 and blocks the sign-out while a maintained language is missing; a plug-in may reassign the responsibility without changing anything else. Translations § Challenges; Stage Serdica § table (Translations row); Whitelabel configure.responsibilities.translations (customer-plug-in value)
D138 "Visible to group X" is classified by asking who X is — the insured or the seller. The estate gates users by SRD_SYS.Routes.AllowedRoles + LT_USER_ROLES (product-gated roles UR_3607, UR_4800), classifies the insured object by offer segment, and hides a factor value by ATTR3. X = the insured → S4 offer segment; X = who sells/services → S5 Routes.AllowedRoles (+ a new role row if none fits); ATTR3 never for product visibility. S1 classifies the wish in requirements[]; only a wish naming both goes to the human. Stage Offer § Challenges; Stage Serdica § table (Roles row); Stage Normalization (classification)
D139 Inter-stage contracts are drafts; platform seams are closed. The five P-14 seams (message envelope, connector capability, eval set, ledger record, write shape) are additionalProperties: false and versioned as runtime; the eleven inter-stage papers (configuration summary, sign-out, stage contract, normalised arrival, solution packet, experience entry, brief, branch set, cross-repo shape, handover packet, skill manifest) carry x-status: draft, a small required core the platform validates and an open body a case may extend — the extension is recorded in the sign-out and lifted into the next draft version when it recurs. contracts.inter_stage.mode = draft. A draft graduates only after three modules' cases stop extending it. Contracts § 0–2; Delivery § 1.4.4; the three Components § 2; Whitelabel contracts.inter_stage.mode; contracts/ + contracts/drafts/ + validate_contracts.py
D140 The SRD_SUPPORT DDL baseline is written — 47 tables, 23 guard triggers, in the health-AI DbScripts pattern (install-clean, upgrade001…009, grant-runtime, acceptance-*, verify-*), twice-runnable, every table of Architecture § 3.1 (25) plus the 22 additions the Data Model page lists (25 + 22 = 47) (CASE_TYPES, CASE_KEYS, CASE_LINKS, PLAN_REVISIONS, PAPERS, BUILD_STATE, MISSING, COST_LEDGER, OUTBOX_MESSAGES, HELD_BATCHES/HELD_BATCH_ITEMS, RISK_ACCEPTANCES, WRITE_LEASES, TURN_CHECKPOINTS, MEMORY_USES…). Linted (lint_ddl.py), not executed — no SRD_SUPPORT user exists (D47) and the read-only rule forbids DDL from the assistant. First execution is the DBA's, on QA, after D47. Data Model; Architecture § 3.1; Software Architecture § 3 (Persistence row); db/SrdSupport/*
D141 The port is prepared in S6 and opened in S8. S6 makes the port commit on a worktree and records its merge-tree feasibility before H4; the port merge request is opened only after PROD runtime verification in S8, within DG-9's one business day, unless the brief records why it goes first (G18). The estate's order stands underneath: MR → bulstrad-staging → deploy/verify → cherry-pick bulstrad-prod → deploy/verify → master last. Cherry-pick and port keep their D105 meanings. Stage Deployment Scripts § Rules; Stage Deploy and Reversal § Rules
D142 The handover packet is one paper in three parts, for all four directions. Request (what, why the requester cannot do it, kind ∈ {configure, build_or_fix, process, plugin, ddl}, inherited paper references, grants narrowed to reads, the same handle map, what done means, sub-case dependencies — G-12) → response (accepted with sub-case id and predicted minutes, or rejected with reason ∈ {out_of_scope, missing_information, wrong_module}) → completion (result, proof level, what changed with WRITE_LOG ids, standing revert path, done-means checked). The requester owns customer-facing closure; the receiving root reads the packet, never the requester's transcript. Draft contract handover-packet.schema.json. Agents § 5; Stage Solution Take § 2; Source Module § 2b; Configuration Module § 4b; contracts/drafts/handover-packet.schema.json + fixture

PLSQL-SIG-1 — the content-signature recipe the branch set and PLSQL_SNAPSHOTS.SIGNATURE rely on — is defined in Stage Planning § 3c as a definition, not a decision: strip CR and trailing whitespace per line, keep everything else, join with LF, SHA-256; SOURCE_HASH beside it hashes the raw text so whitespace-only drift stays visible.

26. Taken 04.09.2026 (evening) — the root Support module, and where the trees live

Vladimir's directives on the presentation set of 04.09.2026: the head page's picture, the module structure, and the layering of the agent pages against the module pages.

# Decision Applied in
D143 Support is the root module. Every client request enters the Support module, is classified (S1) and identified, and leaves by one of four routes: waiting (a wish for the next release, a step only the customer can perform — clocks per contract, age visible in the held view), Configuration (Hd), Development (Hd), or Data and information. platform.intake normalises, dedups, resolves the customer and checks the initiation right, and opens every client case on support.root; naming the working module is Support's S1 and route, not intake's channel default — D93 ("intake names the owning module") and D59 ("a HelpDesk Ablera item starts at the configuration root") are narrowed accordingly. A case started in place by an operator on Configuration or Development is the exception. The case, its clocks and its closure stay with the root whichever module does the work. "The three modules" in older text reads as the three working modules under the Support root. Support Module (rewritten); Architecture § 0; Platform (the picture, the router paragraph); Agents § 3, § 5c; Glossary Module; Home; index.html — the modules band and its flows
D144 The former Support module's working stages are the Data and information module. S2 investigation, S3 the take and its packet, S4 confirmation, S5–S7 application, verification, reversal, S8 precipitation. It runs under the same root as the desk — support.root instantiates the working stage set the way the configuration root instantiates a stage subset (Configuration Module § 1) — so the two modules share the case, its clocks and its closure, and the profile and memory names stay support.* / support/; the identifiers fifty pages cite change nothing. A case that turns out to be configuration or code returns to the root, which raises Hd. Data and Information Module (new page); Support Module § 0; Components — Support (purpose); the five Support stage pages' graph rows
D145 The layering rule of the agent documentation. The platform pages — Agent Framework, Agent Runtime, Agents, Knowledge (Agents Memory, now § 7 of the framework page), Agent Skills — are module-agnostic: each states the rule and one example. A module page instantiates, at its head and in this order: its agent tree, its branch of the memory tree (domains, owners, contents, seeds), its skills and tools, then its stages. Nothing per-module on a platform page; no platform rule restated on a module page. Moved accordingly: the per-module branches, graphs and seed tables of Agents Memory § 1 / § 3 / § 4 and the three "— its agent graph" sections of Architecture § 0 → the module pages' § 0; the ticket catalogue, the knowledge holders and the build order of Agent Skills § 1–4 → Data and Information Module § 0.2 (the desk's conversation skill → Support Module § 0.2); the stage skills → Configuration Module § 0.2 and Development Module § 0.2. Erratum 07.09.2026 (D118): extended by D151 — the generic memory and skills principles are a page again, Agents Memory and Skills Parts I–II, and Agent Skills.md is retired. The module-specific content stays where D145 put it. Agent Framework § 4, § 7; Agents Memory (rewritten); Agent Skills (rewritten); Configuration Module § 0; Support Module § 0; Data and Information Module § 0; Development Module § 0; Architecture § 0; Home; build_docs.py (the fold)
D146 The product page shows the platform as one button, and every stage as a link. The five platform parts are no longer drawn on the head page: the spine carries one band naming the platform and a button that opens the platform picture in the documentation (Platform goals). The modules band shows the Support root above the three working modules with the waiting route; hovering a module shows its flow, and every module and every stage on the flow strip links into the module page's agent tree. The four platform panels of the head page (UI, backend, agent framework, agents) are removed with their tiles; their content is the documentation's. index.html § How it works; SOURCES.md; README.md

27. Taken 04.09.2026 (night) — the route, the diagram states, the desk's goal

The head page's reworked spine (D143–D146) stated three things the wiki carried only implicitly: where the desk's route is decided and what waiting is, how a stage diagram tells a gate from a signed result and from a step the workflow does not wait for, and what the desk itself promises. Recorded here; applied on the pages named.

# Decision Applied in
D147 The route is gate H2 on the solution packet, and waiting is one of its outcomes. At the desk, S3's first question — ready solution? configuration? code? can it wait? — is decided at H2 on the packet the take prepares; the outcomes are the Data and information stages under the same root, a handover (Hd) to Configuration or Development, or waiting. A waiting case names its trigger — a step only the customer can perform (the customer-question step type), a step only an external owner can perform (SG-13), or a deferred wish the customer agrees waits for a later release (recorded as a CR candidate or a Development extension, with the release it waits for) — its clock treatment (clocks.pause_states: the customer's turn is Pending and pauses both clocks; which pause state a deferred wish maps to is a contract question, kept open as a C) and its age, visible in the held view beside approved-but-unapplied writes (PG-20). It re-enters the route at H2 when the trigger fires. No new gate kind. There is no "chat" channel: the customer's message box is a door of the client surface (UI § 5b); the channel set is ticket system · mailboxes · help desk · in place on the client surface, per plug-in (D97, D98, D51). Support Module § 0–2; Stage Solution Take § Purpose, § 1; Gating § 1 (H2 row, gate plan, § 1b); Whitelabel Catalogue § 5b (routes.waiting_triggers, intake.routing); Metrics (one row); Support goals SG-1, SG-15; Glossary
D148 Diagram states — four, named once, drawn the same way on every module diagram. A person decides (amber, the existing human class; a diamond is a gate). A signed result (green, class signed): a step whose result is proven by its own test or verification and recorded as evidence — a sign-out's tests green, green gates per repository with the pipeline result, a runtime verification, the customer's symptom re-checked on the customer's surface. A person decides on a signed result (two-tone, class both): H3 on a sign-out; CG-11 on the joint proof. After the workflow, asynchronous (violet, dashed, class after, reached by a dotted edge labelled after the workflow): a step the workflow does not wait for — the deployment set executed on a target after the joint proof (D113; H4, and H5 where customer-facing, still apply), precipitation after the working stages end (Stage Precipitation: it does not wait for the customer's closure), the platform's learn step. The workflow ends before an after node. The classDefs are fixed text in Gating § 1b; the names root, mod, post, wait, gate are not used. Gating § 1b (the canonical legend); Home.md convention; Configuration Module § 1; Development Module § 1; Data and Information Module § 1 — where precipitation moves onto a dotted edge after S6 and closure follows S6 directly, a correction to match Stage Precipitation's stated input (D49); Support Module § 1; the sample diagrams of Support.md and Configuration.md
D149 The desk has its own goal, SG-15 — no operator on duty at the desk. Every client request is classified, identified and routed the moment it arrives, its clocks running from arrival; what can wait is held with its trigger, its clock treatment and its age; the case, its clocks and its closure stay with the desk whichever module works it. Judged by the classification correction and re-routing rates (SG-11), breach warnings ahead of the violation, waiting cases without a recorded trigger = 0, and human turns per case falling to gate decisions. The Support goals page is restated as two layers — the desk and its working stages — and the Data and information goal (SG-3, SG-10) is stated as "the work runs without any particular human". Support.md (intro, sample diagram, SG-15 row); Support Details.md (SG-15 section); Metrics.md (one row); Requirements Register (S-13); Delivery § 2.3 heading

28. Taken 05.09.2026 — one Goals page

Vladimir's directive on the goals chapter: the split into a Platform, a Support, a Configuration and a Development goals page scattered the reader's attention, and the sample diagrams on those pages said nothing the architecture does not say better.

# Decision Applied in
D150 The goals chapter is one page. 00 Goals/Goals.md opens with a brief for the platform — what it is for, the four commitments it holds for every module, how the goals are read — then a brief per module in the order of the picture (Support the root · Configuration · Development · Data and information), each naming its rename and its architecture page, then the goal tables in full with the reasoning of the Details pages folded into the rows and the Baseline folded in at the end. The Support goals are shown in three tables — the desk, the working stages, both layers — because the desk and the Data and information module are judged by different rows. The goals chapter carries no diagrams: the platform picture is Architecture § 0 alone (D99's placement is superseded), and each module's agent tree is its module page's § 0 (D145). The four goal-table pages are retired; every link to them resolves to the Goals page, and a link whose text names a goal id lands on that row. 00 Goals/Goals.md (new); Platform.md, Support.md, Configuration.md, Source.md retired; build_docs.py (GOALDETAIL, MERGE, the id anchors); Home.md; Architecture.md intro; index.html — the Goals · Proof links
D151 Memory and skills are one page, visible in the Agents chapter. Agents Memory.md is retitled Agents Memory and Skills: Part I the memory principles (the tree, the AGENTS.md protocol, what a domain holds, the dreaming pass, the past-case index, an inherited corpus's migration), Part II the skills principles (anatomy, when a skill exists, governance, failure, three samples, where the catalogues are); the framework page's § 7 points at it instead of folding it in, and Agent Skills.md is retired with its section references renumbered (+7). The generic principles were never removed by D145 — they had been folded into the framework page and left the sidebar; this makes them a page again. The module-specific content stays where D145 put it: the module pages' § 0. Agents Memory.md; Agent Framework.md § 7; Home.md; build_docs.py (no fold; the Agents group order); the 31 pages that linked Agent Skills.md

23. Appendix — page names used in "Applied in" cells before D88/D94/D96 → current page

Kept last, as an appendix: it is a lookup table for reading the "Applied in" cells above, not a decision.

Old name Current page
Skills Catalogue Agents Memory and Skills § Part II (renamed Agent Skills by D88, retired into the memory page by D151)
Agent Skills Agents Memory and Skills § Part II (D151)
Configuration Catalogue Whitelabel Catalogue
Hosting and Operations · Hosting Software Architecture § 10
Reuse Inventory Software Architecture § 9
Agent Graph · Agents and Memory Agents
Agent Profile Agents § 0
Case Control Agent Runtime § 11
Prompt Governance Agent Framework § 6
Write Gating Gating
Memory Migration · Memory Agents Memory (§ 7 for the migration)
Component Inventory Delivery § 1.4
Placement Stage Planning
Stage Contract Configuration Module § 1
Whitelabel Specification Stage Normalization
Pricing Factors Stage IPAL
Platform · Support · Configuration · Source (the four goal-table pages) 00 Goals/Goals.md (D150) — retired; a link whose text names a goal id lands on that row
Configuration / Platform / Support / Source Details 00 Goals/Goals.md, § granular — the four * Details.md files still exist in 00 Goals/ as source and are folded into Goals.md at build time (D150; build_docs.py GOALDETAIL/MERGE)
Baseline 00 Goals/Goals.md § baseline — Baseline.md still exists in 00 Goals/ as the evidence source file and is folded into Goals.md at build time (D150)
Triage Baseline Measurements 2026-09-02 § TB
Administration UI UI

29. Developer implementation and owner presentation — 07.09.2026

These implementation clarifications follow the owner's instruction to apply necessary review corrections, deepen the technical specification and keep the presentation focused on the operating philosophy. They do not record organisational acceptance of any live write risk. Existing customer/estate permissions are unchanged.

Decision Definition Canonical pages
D152 Audience and scope. Explain software that performs the recurring configuration, development and support work for a self-serving customer. The owners are the presentation audience; no purchase funnel, new optional client features or headcount-saving claim. State specification status and separate baselines from targets. Goals; Value and ROI § 6; presentation index and SOURCES
D153 The actual LLM seam. Use the inspected IInferenceClient one-shot structured-output interface, copied and owned. A validated model action document drives the C# loop. Native tools/chat history are not assumed in the copied adapter. Context, routing, failures, isolation and evaluation are explicit. The write auditor retains independent semantic review; the executor is deterministic. Model Execution; Agent Runtime; Agent Framework
D154 Durable execution before replay. Persist model/tool intent and result references, inbox deduplication, task leases/fences and impact claims. A checkpoint references restorable bytes. Mutations use semantic operation identities; unknown/partial effects are reconciled before retry. Form B admits only deterministic code while a transaction is open; external/DDL effects use form E. Agent Runtime §§ 2–7; Recovery; Data Model; upgrade 010; connector SDK
D155 Declarations and ownership. Business modules are versioned manifests over the existing registry/policy rows. Data and information stays an embedded Support graph; no new data.root or handover queue. Memory has one owner per node, with explicitly listed multiple nodes permitted per profile. Summarizers/curators propose to foreign owners; candidate trials make independent-use confirmation possible. Modules; Agents; Agents Memory; manifest contract
D156 Composed gates. Checkpoints and effect permissions are distinct dimensions using the existing ids. Apply every relevant requirement, not one exclusive write class. D76's accepted-risk path is representable for W1–W7, with no acceptance seeded; ordinary policy edits cannot grant it. Non-write classification/checkpoints use their own approved predicates. Proposals request grant scope; execution adds grant ids without changing the semantic proposal hash. Gating; Runtime § 5; Trust; contracts; upgrade 010
D157 Intake and completion. Authorised Support intake opens automatically; S1 classifies and destination entitlement is checked before destination work. Client-led Configuration may assign business H1/H3 to Customer representative using the existing confirmation card; no technical write authority is implied. Preview acceptance does not close requested target delivery. A script/referral is completion only when that was the agreed objective. Precipitation is durably queued from the verified working result and does not delay customer delivery. Agents § 5c; UI; Configuration Module § 3b; Support stages
D158 Executable software boundaries. One owned contracts/ports library removes the Runtime/Governance/Skills dependency cycle. DI scopes are not capability subtraction. Safety/data restrictions are checked at dispatch; current revocation is not frozen by case pinning. Protocol states/modes are closed software contracts; business vocabulary remains data. Software Architecture § 8; Model Execution; Runtime
D159 First build and proof. Durable core with replay adapters, then the model/action and authority loop, then one full Configuration slice. Minimum desk/client entry, restore/export and operational controls are prerequisites of real writes, not wave-2 additions. Offline schemas/lint/C# compilation are distinguished from future live installation and target acceptance. Implementation Guide; Delivery; Data Model

30. Case-driven architecture hardening — 07.09.2026

The owner requested all uncommitted typical cases be traced through wireframes, endpoint requests, saved data, agent initialization/prompts/knowledge, messages, gates, execution, reversal and subsequent learning. These are design clarifications, not live grants or proof of implementation.

Decision Definition Canonical pages
D160 Acceptance inventory. All 68 DC/DV/CF catalogue cases have a first-run path, ten screen/API/storage moments including reversal, initialized task/prompt and message examples, post-result processing, next-request behaviour and a falsifying variant. The examples are explicitly synthetic and checked against contracts. Case Journeys; Case Protocol; interactive walkthrough
D161 External work is an obligation. An assigned actor, exact request/step/revision, evidence requirement, age and resume trigger persist on the case. A scoped authenticated response queues verification. Prepared instructions and external reports are distinct from platform execution and from verified operational completion. Case Protocol §§ 1–2; UI; OpenAPI; execution-obligations contract
D162 Scope-wide proof and restoration. Enumerate family members/layers and required assertions before applying. Join all required proof across local transaction boundaries. Persist temporary restoration before relaxation; due work wakes H7, checks drift and survives session loss. Required restoration blocks resolution; campaign successors own durable scoped target references. Case Journeys §§ 3–4; Runtime; Application and Verification
D163 Configuration begins with the required delta. Full product and existing-product change share an input seam. Selected stage edges and baseline bindings make omitted work explicit. Template work items reference single-template leaf specs and rejoin on all-key selector/version/target proof. Existing INSIS/external authority boundaries remain. Modules; Configuration stages; configuration-change/input contracts
D164 Granularity follows responsibility. Case ids are eval cases, not new agents. Family skills remain under existing investigators; repository implementers own source-language work. Mixed releases join code, rows, packages, consumers and external results. Series, directional ports and ref rewrites retain evidence and invalidation rules. Case Journeys §§ 1,5–6; Source planning/review/release
D165 Learning and authority stay distinct. Queue learning with resolution, dedup by canonical request/result revision, retain actual outcome and separately track confirmed triggers. Corrections, publication, independent reuse and clean write-shape proof are separate decisions. The next case rechecks applicability and gets fresh scope/authority. Case Protocol §§ 3–7; Agents Memory; Precipitation; experience-entry contract
D166 Bounded exclusions and review. Reinsurance capability and cross-cutting currency programmes receive explicit scoped referrals under N-8; no programme-management feature is added. Generated contracts, lockfiles and tooling instructions remain reviewable. Historical same-person/direct-commit practice does not bypass current scoped decisions. Non-Goals; Source review; Typical Cases dispositions