portfolio-optimiser-claude/shared
2026-07-03 22:33:47 +02:00
..
examples/bygg-energi-mikro Merge commit '97a9172311' as 'shared' 2026-07-03 06:00:11 +02:00
skills/expert-reviewer Merge commit '97a9172311' as 'shared' 2026-07-03 06:00:11 +02:00
CONCEPT.md Merge commit '97a9172311' as 'shared' 2026-07-03 06:00:11 +02:00
ingest-spec.md Merge commit '6c73d1f7c1' 2026-07-03 22:33:47 +02:00
method-spec.md Merge commit '97a9172311' as 'shared' 2026-07-03 06:00:11 +02:00
README.md Merge commit '6c73d1f7c1' 2026-07-03 22:33:47 +02:00

shared/ — framework-neutral core

This directory holds the parts of the project that are independent of any AI agent framework and are meant to be shared, unchanged, between both reference implementations:

  • this repository — the method built on Microsoft Agent Framework (MAF);
  • a sibling repository (built later, in sequence) — the same method on the Claude Agents SDK.

Sharing one identical core is what makes the two implementations a fair comparison: both consume the same concept, the same example data, and the same expected outcomes, so the only thing that differs is the agent framework itself.

Contents (growing)

  • CONCEPT.md — the business concept, written for a non-specialist (e.g. a business developer at another company).
  • examples/bygg-energi-mikro/ — the first example knowledge bundle (OKF / LLM-wiki): one office building, one LED-retrofit measure, with a seed expert verdict encoding the realization gap and a golden-suite of expected validator outcomes. A small dev fixture for exercising the agentic loop; a realistic full-scale example comes later.
  • skills/expert-reviewer/ — the expert-reviewer persona as a framework-neutral Agent Skill: a SKILL.md persona prompt (energy-advisor / M&V role + the realization-gap methodology the validator cannot compute) and a canonical references/example-verdict.json. Both reference implementations instantiate the reviewer from this one artifact; shared/ stays pure data (each stack reads the JSON with its own loader).
  • method-spec.md — the normative method specification, framework-neutral (the prose never names a concrete agent toolkit — enforced by a guard test): the 8-step loop, the verdict JSON contract, the inbox/outbox folder contract, the promotion-gate semantics, the IR projection + golden suite as the only ground truth, and the budget/provenance requirements. The sibling implementation is built from this spec alone, without reverse-engineering the reference code.
  • ingest-spec.md — the normative ingest specification, framework-neutral (same guard rule as the method spec): the deterministic ingest step that materializes real data sources as OKF bundles BEFORE the loop — the polymorphic manifest schema (file/CSV, SQL, HTTP as extension point), the credential-reference rule, the verdict-layer reservation, the ingest provenance frontmatter with an explicit timestamp, the index-generation requirement, and the golden-extraction format.

Rules

  • Nothing in here may import or depend on a specific agent framework. If it does, it does not belong in shared/.
  • Repo layout (decision R1, realized 2026-07-03): the shared core lives in its own repository, portfolio-optimiser-commons — the source of truth. Each implementation repo consumes it as a git subtree at this unchanged shared/ path (so tests and the PORTFOLIO_SHARED_ROOT default resolver are unaffected). Do not edit commons content anywhere else without syncing.

Subtree sync (pull-only — run from the consuming repo's root)

The remote is registered as commons (ssh://git@git.fromaitochitta.com/ktg/portfolio-optimiser-commons.git).

All edits land in commons first (clone it, commit, push there), then each consuming repo pulls them in:

git subtree pull --prefix=shared commons main --squash

Never run git subtree push from a consuming repo. Observed 2026-07-03: because this repo's history contains commits that create/delete the shared/ prefix, the push re-split leaked the consumer's entire history into commons (cleaned up by force-push the same day). Pull-only keeps commons the clean source of truth.

See the target picture for the full architecture: docs/plan/2026-06-26-maalbilde-agentic-loop.md.