1
0
Fork 0
portfolio-optimiser-commons/CONTRIBUTING.md
Kjell Tore Guttormsen ddaae5d637 chore(release): publiseringsklar for open/ — README for standalone rot + MIT + policy-filer
Commons konsumeres som `shared/`-subtree av to repo som allerede ligger i
`open/`. Innholdet var dermed offentlig fra før, men PEKEREN var det ikke:
`shared/README.md` i open/portfolio-optimiser lenker til `ktg/`-namespacet og
sier «All edits land in commons first (clone it, commit, push there)» — en URL
en fremmed får 404 på. Dette gjør repoet publiserbart under open/.

README: hodet var skrevet som om fila fortsatt lå i en konsuments `shared/`.
H1 var `# shared/ — framework-neutral core`, og innledningen sa «this
repository — the method built on MAF» — som beskriver et ANNET repo når fila
leses fra commons' rot. Siste linje lenket til
docs/plan/2026-06-26-maalbilde-agentic-loop.md, som ikke finnes her (den bor i
portfolio-optimiser). Alle tre rettet; de to konsumentene er nå utgående
lenker, ikke «dette repoet».

Lagt til for `shared-asset`-klassen (repo-standard): LICENSE (MIT, byte-likt
med soesknene) og `## Non-goals`. Klassen krever ikke `## Install` — repoet
vendorers, det installeres ikke.

CONTRIBUTING/SECURITY/CODE_OF_CONDUCT kreves av INGEN klasse; de er med for
konsistens med de to soesknene. CONTRIBUTING er SKREVET OM, ikke kopiert:
soesknenes versjon ber om Pull Requests, men org-ops slo PR-fanen av paa alle
19 repo fordi CONVENTIONS.md publiserer at PR-er ikke aksepteres. Aa kopiere
den ville importert en motsigelse.

SECURITY er omskrevet for et repo uten kjoerbar kode: angrepsflaten er spec-
tekst som binder konsumentene, ikke et avhengighetstre.

Gate: repo-standard v0.2.2, klasse shared-asset — 0 ERROR, 8 passerte. De 3
gjenstaaende WARN er falske positive mot nav-golden-fixturene (bundle-relative
lenker + tilsiktede escape-nyttelaster som IKKE skal resolve). Fixturene er
uroert: de konsumeres som ekte gate av portfolio-optimiser (0d50ab8).

Verifisert foer commit: ingen secrets i sporet innhold eller i historikkens 37
commits; ingen e-post utover org-kontakten; STATE.md og *.local.md fortsatt
usporet.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013XuKPjWwJZNUponVrhoyY1
2026-08-04 22:32:17 +02:00

2.8 KiB

Contributing to portfolio-optimiser-commons

Thank you for your interest. Please read this first — the workflow here is deliberately narrower than most repositories, and knowing that up front saves you wasted effort.

Code of Conduct

Please read and follow our Code of Conduct.

Pull requests are not accepted

The pull-request tab is switched off on this forge, across every repository in the organisation. That is a published position, not an oversight: this project is solo-maintained, and an enabled-but-permanently-empty PR queue would promise a review capacity that does not exist.

Use issues instead. A well-argued issue carries the same information as a patch and costs you less to write.

What belongs here, and what does not

This repository is the framework-neutral core. Before opening an issue, check which side of the boundary your point falls on:

Your point is about Raise it in
The normative specs, the example bundles, the golden fixtures here
Behaviour of the MAF implementation portfolio-optimiser
Behaviour of the Claude Agent SDK implementation portfolio-optimiser-claude

A change that is true of only one of the two stacks does not belong here, however correct it is — that is the whole point of the shared core. See the Non-goals in the README.

Reporting an issue

Useful issues on a specification repository look different from bug reports on code. The most valuable ones name a specific place in the text:

  • Quote the section and the sentence, not just a line number. Line numbers here go stale quickly; a section heading plus the wording you are reading survives an edit above it.
  • Say which of the two things you are claiming: that the specification is internally inconsistent, or that it is inconsistent with an implementation. They have different remedies, and conflating them is the most common way a report stalls.
  • For a fixture, state the input, the output you expected, and the output you got.

If you are maintaining a consuming repository

Sync is pull-only, and all edits land here first:

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

Never run git subtree push from a consuming repository. The reason, and what it cost the one time it happened, is documented in the README.

Conventions

Commits follow Conventional Commits (type(scope): description). Changes to normative text are ratified before they land; the reasoning behind each ruling is recorded in docs/plan/, including for the rulings that were later reversed.

Questions?

Open an issue.