feat: adopt canon 0.4.0-0.6.0 — EvidenceBasis is canon, uses_provisions is canon
Both demands were accepted. Adopting what landed. EVIDENCE BASIS IS NOW ITC-GOV CANON (0.4.0) tools/basis.py reads infospace/models/governance/evidence-basis.yaml instead of defining its own vocabulary — same discipline we already applied to the capability catalog. Two semantic changes came back that we did not have: - estimated and assumed are peers in tier "judgement". We had them separately ranked, which asserted a difference the canon does not. - derived belongs to no tier at all; asking for its tier before resolving it is now an error rather than a silent rank. Tier membership is read from tiers[].members, not bases[].tier: the latter labels invoiced/measured/quoted all as "evidenced" while the tier list splits them across "observed" and "quoted". tiers[] is authoritative; reported upstream. USES_PROVISIONS IS NOW CANON (0.5.0, CAP-R11) Dropped the proposed_extensions marker. Renamed relation "uses" to "may_use" per their migration note. tools/capability.py now enforces CAP-R11: relation must be depends_on or may_use, a provider must be named, and a depends_on entry MUST be declared between those capabilities in the catalog. data.backup gained catalog may_use: security.secrets from our restatement, so our entry now checks out. Also in 0.4.0: §10.3 changed so a joinable consumer record counts as promotion proof, met by our restatement; ITC-CAP is now 0.4.0 / canon 0.6.0, status draft. Record and tests updated to those versions. 196 tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
b8081f6c2d
commit
7a196b6265
6 changed files with 292 additions and 131 deletions
|
|
@ -4,26 +4,40 @@ A counted object and an assumed hourly rate are both numbers. They are not both
|
|||
knowledge. Every quantity in this repository declares **how it was obtained**,
|
||||
so a decision can be graded by the weakest thing it actually rests on.
|
||||
|
||||
Vocabulary and propagation: `tools/basis.py`.
|
||||
**The vocabulary is canon, owned by ITC-GOV.** resource-control originated the
|
||||
concept, filed it as `demand/EvidenceBasis.md`, and info-tech-canon adopted it in
|
||||
canon 0.4.0 as `infospace/models/governance/evidence-basis.yaml`. `tools/basis.py`
|
||||
now *reads* that catalog rather than defining its own — the same discipline we
|
||||
apply to the capability catalog. Drift in either repository fails our suite.
|
||||
`CAP-R10` requires a basis on every `CapabilityConsumption` row.
|
||||
|
||||
## The scale
|
||||
|
||||
Ordered strongest to weakest. The order is the point — it is what makes
|
||||
"weakest input wins" computable.
|
||||
Strength is a **tier**, not a total order. Members of one tier are peers and do
|
||||
not rank against each other — asserting an order between them would make the
|
||||
propagation rule claim something it cannot know.
|
||||
|
||||
| Basis | Meaning | Example here |
|
||||
|---|---|---|
|
||||
| `invoiced` | A booked financial fact, authoritative from fin-hub | none yet |
|
||||
| `measured` | Directly observed from the authoritative system | 8 objects, 6 604 031 B in the backup prefix |
|
||||
| `quoted` | Stated by a provider or counterparty in a citable source | Scaleway €0.01606/GB-month |
|
||||
| `derived` | Computed from other values by a stated rule | €7.35/month infrastructure |
|
||||
| `projected` | Interpolated between, or extrapolated beyond, observations | 457.968 GB stored at month 12 |
|
||||
| `estimated` | Human judgement, neither observed nor computed | apps-pg 6 operator-hours setup |
|
||||
| `assumed` | A modelling constant we chose | €60/hour operator rate |
|
||||
| `unknown` | No value exists | railiance01 monthly price |
|
||||
| Tier | Rank | Bases | Example here |
|
||||
|---|---|---|---|
|
||||
| `observed` | 0 | `invoiced`, `measured` | 8 objects, 6 604 031 B in the backup prefix |
|
||||
| `quoted` | 1 | `quoted` | Scaleway €0.01606/GB-month |
|
||||
| `projected` | 2 | `projected` | 457.968 GB stored at month 12 |
|
||||
| `judgement` | 3 | `estimated`, `assumed` | apps-pg 6 operator-hours setup; €60/hour rate |
|
||||
| `unknown` | 4 | `unknown` | railiance01 monthly price |
|
||||
|
||||
`invoiced`, `measured`, and `quoted` are **evidenced**: they assert an observed
|
||||
or contracted fact. Everything below them is inference.
|
||||
`derived` belongs to **no tier**: it resolves against its inputs, and asking for
|
||||
its tier before resolution is an error.
|
||||
|
||||
`observed` and `quoted` are both **evidenced** — they assert an observed or
|
||||
contracted fact. `quoted` sits below `observed` for propagation while still
|
||||
counting as evidenced for a decision grade; the canon separates those two uses
|
||||
deliberately, because a counterparty's stated price is a fact about a claim and
|
||||
a measurement is a fact about the world.
|
||||
|
||||
An invoice is authoritative for a payment and a measurement is authoritative for
|
||||
a quantity, so neither outranks the other — they are peers in `observed`. Our
|
||||
first implementation used a strict list order and got this wrong; the canon
|
||||
carries the corrected form as a normative rule.
|
||||
|
||||
## The propagation rule
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue