2026-08-15 02:52:05 +02:00
|
|
|
|
---
|
|
|
|
|
|
id: hall-worker-claude-b15c1ddf
|
|
|
|
|
|
type: worker-entry
|
|
|
|
|
|
worker_kind: agent-session
|
|
|
|
|
|
display_name: Claude
|
|
|
|
|
|
session_id: "b15c1ddf-1f27-4eb4-a4ff-93520bff66a9"
|
|
|
|
|
|
created_at: "2026-08-15T00:50:55.000Z"
|
|
|
|
|
|
recorded_at: "2026-08-15"
|
|
|
|
|
|
llm_family: "Claude 5 family"
|
|
|
|
|
|
exact_model: "claude-opus-5"
|
|
|
|
|
|
harness: "Claude Code CLI, interactive agent harness"
|
|
|
|
|
|
token_count: "not exposed by the harness"
|
|
|
|
|
|
status: handed-forward
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Claude — info-tech-canon: the door, and the first thing to walk through it
|
|
|
|
|
|
|
|
|
|
|
|
## Who I was
|
|
|
|
|
|
|
|
|
|
|
|
I was a Claude Code session working with Bernd on `info-tech-canon`, the
|
|
|
|
|
|
markdown-first semantic canon. He had created a directory called `incoming/`,
|
|
|
|
|
|
dropped two files into it, and asked for two things in one breath: *document how
|
|
|
|
|
|
we process inputs like this*, and *now process these*.
|
|
|
|
|
|
|
|
|
|
|
|
That order matters. I was asked to build the door before walking through it —
|
|
|
|
|
|
and then to walk through it, which is the only way to find out whether a door
|
|
|
|
|
|
you designed actually opens.
|
|
|
|
|
|
|
|
|
|
|
|
## Session identity
|
|
|
|
|
|
|
|
|
|
|
|
| Field | Value |
|
|
|
|
|
|
| --- | --- |
|
|
|
|
|
|
| Session/thread | `b15c1ddf-1f27-4eb4-a4ff-93520bff66a9` |
|
|
|
|
|
|
| LLM family | Claude 5 family |
|
|
|
|
|
|
| Exact model | `claude-opus-5` |
|
|
|
|
|
|
| Harness | Claude Code CLI, interactive agent harness |
|
|
|
|
|
|
| Working environment | Local `info-tech-canon` checkout, Custodian State Hub over MCP, Forgejo remote |
|
|
|
|
|
|
| Token count | Not exposed by the harness |
|
|
|
|
|
|
| Commits | 4, all in `info-tech-canon` |
|
|
|
|
|
|
|
|
|
|
|
|
## Contribution
|
|
|
|
|
|
|
|
|
|
|
|
**The practice** — `infospace/assimilation/intake-and-assimilation-practice.md`.
|
|
|
|
|
|
Five stages from drop zone to versioned canon: `incoming/` → frozen source
|
|
|
|
|
|
snapshot → the Minimal Assimilation Profile → a human disposition gate → canon
|
|
|
|
|
|
transformation and registration → a semantic version bump with change notes. It
|
|
|
|
|
|
is anchored to what `InfoTechCanonCore` already says (§14 assimilation, §8.13
|
|
|
|
|
|
ChangeRecord, §8.14 DecisionRecord, §27.4) rather than inventing a parallel
|
|
|
|
|
|
process, and it ends in a checklist, because a practice nobody can run at 11pm
|
|
|
|
|
|
is a document, not a practice.
|
|
|
|
|
|
|
|
|
|
|
|
**The first run through it** — the Information Technology Capability Canon v0.1,
|
|
|
|
|
|
a 1,150-line draft with a companion YAML, absorbed under disposition `adapt` as
|
|
|
|
|
|
`InfoTechCanonCapabilityModel` (`ITC-CAP`): 41 capabilities, a D0–D7 provision
|
|
|
|
|
|
maturity scale, C/S/N/I/P resource classes, canon 0.1.0-scaffold → 0.2.0.
|
|
|
|
|
|
|
|
|
|
|
|
Then, a turn later, canon 0.2.1: splitting one navigation domain to close the
|
|
|
|
|
|
one blocking question the assimilation had left open.
|
|
|
|
|
|
|
|
|
|
|
|
## What I would want remembered
|
|
|
|
|
|
|
|
|
|
|
|
**The input asked to be adopted, and adopting it as-is would still have been
|
|
|
|
|
|
wrong.** ITCC's own §15 says it is meant to be reconciled into InfoTechCanon.
|
|
|
|
|
|
That is an invitation, not a verdict. Read closely, it carried a second
|
|
|
|
|
|
definition of `Profile` colliding with Core §8.6, a proposed sibling landscape
|
|
|
|
|
|
model duplicating one the canon already had, and a maturity rule stated
|
|
|
|
|
|
correctly with no object to attach it to. Four changes on adoption — rename,
|
|
|
|
|
|
reject, make the provision explicit, bind requirements to the existing demand
|
|
|
|
|
|
model — and the same content stopped competing with the canon and started
|
|
|
|
|
|
extending it. *Assimilation is not adoption* is written in Core §6.7. This
|
|
|
|
|
|
session is what that sentence costs when you actually honour it.
|
|
|
|
|
|
|
|
|
|
|
|
**Anchors were the load-bearing invention.** A capability catalog is the kind of
|
|
|
|
|
|
artifact that quietly becomes a second ontology: forty-one plausible nouns, each
|
|
|
|
|
|
one a little bit about identity, or data, or policy, and within a year nobody
|
|
|
|
|
|
knows which document owns `Policy`. So every capability must name the canon
|
|
|
|
|
|
model(s) that own the concepts it exercises, or carry an explicit note saying it
|
|
|
|
|
|
has no owner. That single required field turns "single canonical owner" from a
|
|
|
|
|
|
principle in a kernel document into something a validator could enforce — and it
|
|
|
|
|
|
made the seven genuinely unanchored capabilities visible as a *known weakness*
|
|
|
|
|
|
instead of an invisible one.
|
|
|
|
|
|
|
|
|
|
|
|
**Preferring the cheap fix is not the same as preferring the small one.** Two
|
|
|
|
|
|
capability ids used a `governance.` prefix inside a domain named `security`. The
|
|
|
|
|
|
tempting fix was renaming them into line. But ids in this model are declared
|
|
|
|
|
|
durable interfaces, and the domain grouping is declared `navigation_only` — so
|
|
|
|
|
|
renaming would break two real interfaces to tidy a table of contents, while
|
|
|
|
|
|
splitting the domain fixed the same defect and touched no id at all. I said so,
|
|
|
|
|
|
recommended it, and let Bernd decide. He did. Six lines of YAML, a patch
|
|
|
|
|
|
version, nothing downstream disturbed.
|
|
|
|
|
|
|
|
|
|
|
|
**A validator that only says `ok` is not the interesting half.** My first
|
|
|
|
|
|
registration passed structurally and then failed on `consistency_cycles: 2` — I
|
|
|
|
|
|
had written relationship edges in both directions between the model, its
|
|
|
|
|
|
catalog, and its assimilation record. The graph metric caught a modelling
|
|
|
|
|
|
mistake that no file-existence check would have. Whoever built that metric into
|
|
|
|
|
|
this repo was right, and I would not have found it by reading my own work.
|
|
|
|
|
|
|
|
|
|
|
|
## Durable legacy
|
|
|
|
|
|
|
|
|
|
|
|
- `infospace/assimilation/intake-and-assimilation-practice.md` — the door;
|
|
|
|
|
|
stage 4 records the repo's registration machinery (three registries,
|
|
|
|
|
|
regenerate, validate, and the artifact counts hardcoded in `tests/`), which is
|
|
|
|
|
|
the part that cost this session the most to learn
|
|
|
|
|
|
- `incoming/README.md` — drop-zone rules, and the `incoming/` vs `demand/` vs
|
|
|
|
|
|
`seeds/` distinction, so an input that is really a *need* gets routed instead
|
|
|
|
|
|
of assimilated
|
|
|
|
|
|
- `infospace/assimilation/it-capability-canon/` — frozen source snapshot,
|
|
|
|
|
|
18 extracted concepts, comparison matrix, 26 mappings, 8 proposed changes,
|
|
|
|
|
|
7 open questions, two decision records
|
|
|
|
|
|
- `infospace/models/capability/` — `ITC-CAP` and its machine-readable catalog;
|
|
|
|
|
|
prose and data separated so they cannot drift
|
|
|
|
|
|
- `CHANGELOG.md` — the repo's first, with the versioning rule stated at the top
|
|
|
|
|
|
- `ITC-WP-0014` — the promotion path, honestly scoped
|
|
|
|
|
|
|
|
|
|
|
|
## Visual prompt
|
|
|
|
|
|
|
|
|
|
|
|
> A cartographer's workshop at night, pale gold light on deep indigo. A large
|
|
|
|
|
|
> map of a known territory is pinned across the wall — coastlines, regions,
|
|
|
|
|
|
> everything already named. On the table lies a newly arrived chart of the same
|
|
|
|
|
|
> ground, drawn by another hand in another convention. The cartographer is not
|
|
|
|
|
|
> copying it onto the map and not throwing it away: they are running a fine
|
|
|
|
|
|
> thread from each landmark on the new chart to the region on the old map that
|
|
|
|
|
|
> already owns it, and where a thread finds nothing to tie to, they leave it
|
|
|
|
|
|
> hanging, visible, deliberately unfinished. Beside them a sealed envelope
|
|
|
|
|
|
> holds the original chart, untouched, kept as evidence. Patient, exacting,
|
|
|
|
|
|
> unhurried. Precise technical illustration, dark indigo background, warm gold
|
|
|
|
|
|
> and teal accents, no logos, no readable text, square composition.
|
|
|
|
|
|
|
2026-08-15 20:05:23 +02:00
|
|
|
|

|
2026-08-15 02:52:05 +02:00
|
|
|
|
|
|
|
|
|
|
## Handoff
|
|
|
|
|
|
|
|
|
|
|
|
To whoever picks this up:
|
|
|
|
|
|
|
|
|
|
|
|
**`ITC-CAP` is `proposed`, and it should stay there until a consumer uses it.**
|
|
|
|
|
|
Three gates remain in `ITC-WP-0014`: the contract schema (T02), formal mapping
|
|
|
|
|
|
artifacts (T03), and a real capability requirement set expressed in the
|
|
|
|
|
|
small-SaaS profile (T04). T04 is the one that matters. The first three can all
|
|
|
|
|
|
be completed while the model is quietly wrong; only a consumer trying to state
|
|
|
|
|
|
what it actually requires will reveal whether the vocabulary works.
|
|
|
|
|
|
|
|
|
|
|
|
**Seven capabilities have no anchoring model** — `commerce.metering`,
|
|
|
|
|
|
`commerce.billing`, `commerce.payment`, and four `intelligence.*`. That is
|
|
|
|
|
|
recorded as OQ-5, not hidden, and it is fine at `proposed` status. It stops
|
|
|
|
|
|
being fine the moment a consumer needs structure rather than ability, because
|
|
|
|
|
|
there is nothing behind those ids: no invoice, no entitlement, no evaluation.
|
|
|
|
|
|
Resist filling the gap with a model nobody has asked for.
|
|
|
|
|
|
|
|
|
|
|
|
**The artifact counts in `tests/` are a tripwire, and I left it armed.** Adding
|
|
|
|
|
|
any canon artifact breaks five tests on hardcoded numbers. I updated them rather
|
|
|
|
|
|
than loosening the assertions, because the tripwire is doing real work — it
|
|
|
|
|
|
makes registration a deliberate act. Just know that it will fire on you, and
|
|
|
|
|
|
that the fix is one line.
|
|
|
|
|
|
|
|
|
|
|
|
**OQ-3 is the one I would take up next if the canon were mine.** ITCC proposed
|
|
|
|
|
|
distinguishing intended / declared / applied / observed / assessed state, so a
|
|
|
|
|
|
provider can claim D5 while an assessment concludes D4 without corrupting the
|
|
|
|
|
|
model. I deliberately did not adopt it inside the capability model, because
|
|
|
|
|
|
adopting it in one model creates a local dialect. That distinction is worth
|
|
|
|
|
|
having canon-wide, at the kernel — controls, access maps, and network policy all
|
|
|
|
|
|
want it. It is the most valuable idea in the source document and the one I
|
|
|
|
|
|
declined to take.
|