Check import manifests by hash and name together (INFO-WP-0028 T01-T03)
import-review takes any partner manifest and returns, per concept, whether the name resolves in the ownership index and to which artifact, and per entry whether the pinned SHA-256 matches the blob at the declared source commit. Both run in one pass so neither can be recorded without the other, which is the failure this workplan exists to prevent. It exits non-zero on a finding, reads JSON or YAML, needs no partner checkout, and carries its own limit: resolution proves a name exists and names one owner, nothing more. Accepted manifests are registered under infospace/interfaces/manifests/ as provenance-preserving copies owned by the partner, with the partner revision and retrieval date recorded. Editing a copy to make a check pass is forbidden in the file itself. Validation re-resolves them and reports drift as federation_import_drift, a warning naming the partner rather than an error, because a stale partner pin is not this repository's file to fix. The review kit gains an extension-boundary-review template requiring hash count, resolution count and conflict count as three separate lines, and an operating rule saying one is never evidence of another. Both boundary files carry the standing-check result. Verified live: security-canon resolves 11 of 11, interface-canon 23 of 25 with the two known Interface and Endpoint pins. make check passes with 58 tests, clean validation and those two warnings. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 3588@bnt-lap001 Assistant-Session: 24b80f66-e5a7-4e61-99fe-2d422e6d17da
This commit is contained in:
parent
d1254aabe6
commit
e1a6314131
14 changed files with 513 additions and 7 deletions
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Make import-manifest name resolution a standing check"
|
||||
domain: infotech
|
||||
repo: info-tech-canon
|
||||
status: proposed
|
||||
status: active
|
||||
owner: claude
|
||||
topic_slug: canon-federation
|
||||
created: "2026-09-20"
|
||||
|
|
@ -58,7 +58,7 @@ partner decides.
|
|||
|
||||
```task
|
||||
id: INFO-WP-0028-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "7c4e8a21-51a9-5658-b56f-01204e4cba34"
|
||||
```
|
||||
|
|
@ -81,7 +81,7 @@ not require the partner repository to be checked out beside this one.
|
|||
|
||||
```task
|
||||
id: INFO-WP-0028-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "7491a8ac-1f96-5f2e-a9eb-f3995c528cae"
|
||||
```
|
||||
|
|
@ -105,7 +105,7 @@ answer determines who may edit it.
|
|||
|
||||
```task
|
||||
id: INFO-WP-0028-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "20eab825-8236-583e-b246-cbe86122cc7c"
|
||||
```
|
||||
|
|
@ -121,7 +121,7 @@ review starts from a template that asks both questions.
|
|||
|
||||
```task
|
||||
id: INFO-WP-0028-T04
|
||||
status: todo
|
||||
status: wait
|
||||
priority: medium
|
||||
state_hub_task_id: "cdf31f69-7a2e-5be0-a988-145dee48c063"
|
||||
```
|
||||
|
|
@ -143,3 +143,42 @@ together; accepted manifests are re-resolved on every `make check` with drift
|
|||
reported as a warning that names the partner; the review kit asks for both
|
||||
results; and no open resolution finding remains against either accepted
|
||||
boundary.
|
||||
|
||||
### Result — 2026-09-20 (T01, T02, T03)
|
||||
|
||||
`import-review` takes any manifest path and returns JSON: per concept, whether
|
||||
the name resolves in the ownership index and to which artifact; per entry,
|
||||
whether the pinned SHA-256 matches the blob at the declared source commit. Both
|
||||
checks run in one pass, so neither can be recorded without the other. It exits
|
||||
non-zero on a finding, reads JSON or YAML, and needs no partner checkout. It
|
||||
also carries its own limit in the payload: resolution proves a name exists and
|
||||
names one owner, and nothing more.
|
||||
|
||||
Manifests are registered under `infospace/interfaces/manifests/` with
|
||||
`manifests.yaml` recording the partner, the source path, the partner revision
|
||||
and the retrieval date. **They are provenance-preserving copies, owned by the
|
||||
partner** — the decision T02 asked for. Correcting a copy to make a check pass
|
||||
is explicitly forbidden in the file itself: fix it in the partner repository and
|
||||
retrieve it again. `validate` re-resolves them and reports drift as
|
||||
`federation_import_drift`, a warning naming the partner, never an error.
|
||||
|
||||
Both accepted boundaries carry a standing-check section with the current result.
|
||||
The review kit gains `extension-boundary-review.template.md`, which requires
|
||||
hash count, resolution count and conflict count as three separate lines, and an
|
||||
operating rule stating that one is never evidence of the other.
|
||||
|
||||
Verified against both live manifests: security-canon resolves 11 of 11 with six
|
||||
hashes matching; interface-canon resolves 23 of 25 with seven hashes matching,
|
||||
the two exceptions being the known `Interface` and `Endpoint` pins. The check
|
||||
finds exactly what the T04 audit found by hand, which is the point.
|
||||
|
||||
### T04 — waiting on interface-canon
|
||||
|
||||
The two open pins are InterfaceCanon's to correct; its accepted boundary already
|
||||
treats Landscape `Interface` and Network attachment-point `Interface` as
|
||||
contextual mappings rather than exact aliases, so this is a citation fix, not a
|
||||
semantic dispute. Raised by State Hub message
|
||||
`13d355f2-554b-4a3a-a0ef-3f69eeafeae9` on 2026-09-20, unread and unanswered at
|
||||
the time of writing. The task is set to `wait` rather than done: the standing
|
||||
warning is the follow-up mechanism, and it will clear itself when the pin is
|
||||
corrected.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue