docs: llms.txt + sikkerhetskontakt til security@ (ORDRE 20260821T041218Z)

D2b: llms.txt i rota - H1, blockquote, EN startkommando byte-identisk med
README-ens forste kodeblokk (verifisert med diff), Docs- og Optional-seksjoner
med relative fillenker. Loser README-ens tre konkurrerende startverb ved a
velge den dokumenterte veien. Minimal med vilje: llms.txt er en konvensjon,
ikke en ratifisert standard. Begrunnes IKKE med crawlere - leseren er en
KI-agent som allerede star i repoet.

D6: SECURITY.md sin kontaktadresse hello@ -> security@fromaitochitta.com.
Kun sikkerhetskontakten; hello@ i CODE_OF_CONDUCT.md star urort (riktig for
alt annet). shared/SECURITY.md er urort - shared/ er pull-only subtree fra
commons og eies der.

I samme okt (operator-ja 21.08): docs/extending.md sa "no bundled example
ships a cost-baseline.json (checked)". Usant siden 09.08 - MALT: veglys-fv-soer
og tunnel-hauglia shipper begge fila. Setningen peker na pa den shippede fila
som formreferanse og gjengir ir.CostBaseline korrekt (project_id + items-map).

llms.txt ligger utenfor _LIVE_DOCS-gaten (den skanner README.md + docs/**/*.md),
verifisert i testfila - ingen ny doc-klassifisering kreves. Handover-gatens
_REQUIRED_MEMBERS er en tilstedevaerelses-sjekk, ikke en uttommende liste.
874 passed / 5 skipped, uendret.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DA6HAF8HFQxGYC2h6ypRQe
This commit is contained in:
Kjell Tore Guttormsen 2026-08-21 11:29:54 +02:00
commit 0bc8dae5c0
3 changed files with 38 additions and 4 deletions

View file

@ -8,7 +8,7 @@ We take security seriously. If you discover a security vulnerability, please rep
### How to Report ### How to Report
Email: hello@fromaitochitta.com Email: security@fromaitochitta.com
Include: Include:
- Description of the vulnerability - Description of the vulnerability

View file

@ -74,9 +74,10 @@ layer does **not** produce: ingest materializes *source documents*, while the IR
the *candidate measure*, and no connector can infer one from the other. A bundle may also ship an the *candidate measure*, and no connector can infer one from the other. A bundle may also ship an
optional `cost-baseline.json`; without it the validator still runs, but unanchored to the optional `cost-baseline.json`; without it the validator still runs, but unanchored to the
project's real cost lines. Both are hand-authored today. For the IR projection the shape reference project's real cost lines. Both are hand-authored today. For the IR projection the shape reference
is `shared/examples/bygg-energi-mikro/validator-input.json`; **no bundled example ships a is `shared/examples/bygg-energi-mikro/validator-input.json`; for the cost baseline it is
`cost-baseline.json`** (checked), so its shape — `{code: {quantity, unit_cost}}` — comes from `shared/examples/veglys-fv-soer/cost-baseline.json`**two bundled examples ship one** (that one
`ir.CostBaseline` and the README. Writing them from ingested content is and `tunnel-hauglia`, checked 2026-08-21), and its shape is `ir.CostBaseline`: a `project_id` plus
an `items` map of `{code: {quantity, unit_cost}}`. Writing them from ingested content is
unbuilt, and is not on the 90 %-principle side of the line: what candidate to propose is the unbuilt, and is not on the 90 %-principle side of the line: what candidate to propose is the
agents' job, not the connector's. agents' job, not the connector's.

33
llms.txt Normal file
View file

@ -0,0 +1,33 @@
# portfolio-optimiser
> A generic, open Python framework on Microsoft Agent Framework (MAF) that finds cost savings
> inside each project of a portfolio of independent projects. A swarm of agents proposes candidate
> measures; a mandatory deterministic validator (solver + Monte Carlo) decides the numbers; domain
> experts judge the outcomes; and the system learns from their verdicts across runs. Solo-maintained,
> fork-and-own, MIT. Python >=3.10, installed from source with `uv`.
One start command. The clone is the documented path — the walkthrough in the README points at
files in the tree:
```bash
git clone https://git.fromaitochitta.com/open/portfolio-optimiser.git
cd portfolio-optimiser
uv sync
```
## Docs
- [README.md](README.md): what the framework is, an offline walkthrough of the whole chain (no API key, no network), and the task API.
- [shared/method-spec.md](shared/method-spec.md): the framework-neutral method specification the implementation is measured against.
- [docs/extending.md](docs/extending.md): the extension points — domains, data sources, ingest connectors — and what is deliberately unbuilt.
- [docs/knowledge-base-recipe.md](docs/knowledge-base-recipe.md): how to build a knowledge-base bundle the run path can navigate.
- [docs/kunnskapsbase-for-en-kjoring.md](docs/kunnskapsbase-for-en-kjoring.md): what one concrete run's knowledge base must contain (Norwegian).
- [docs/bestille-en-kjoring.md](docs/bestille-en-kjoring.md): what a requester supplies to order a run (Norwegian).
- [DEPLOY.md](DEPLOY.md): running the hosted entry point (`python main.py`) and the environment it needs.
- [CLAUDE.md](CLAUDE.md): the invariant ledger — each design decision, the measurement that forced it, and the test that turns red when it is undone.
## Optional
- [CHANGELOG.md](CHANGELOG.md): release history.
- [SECURITY.md](SECURITY.md): how to report a vulnerability, and what is supported.
- [CONTRIBUTING.md](CONTRIBUTING.md): issues welcome as signals; pull requests are not accepted.