diff --git a/Makefile b/Makefile index b1b40be..e9c87ff 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ build: check: python3 -m unittest discover -s tests -p 'test_*.py' - python3 -m py_compile tools/render.py tools/build_site.py tools/check_currency.py tools/verify_release.py tools/source_inventory.py tools/fetch_sources.py + python3 -m py_compile tools/render.py tools/build_site.py tools/check_currency.py tools/verify_release.py tools/source_inventory.py tools/fetch_sources.py tools/adr_review_ledger.py $(MAKE) source-audit git diff --check diff --git a/README.md b/README.md index 28232c8..f3f1868 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ Not a CMS, not a documentation site, not a policy author, and not a source of legal advice. - Intent: `INTENT.md` +- Owner publication contract: `docs/publication-contract.md` +- ADR review ledger (unpublished work artefact): `docs/adr-review/` - Workplans: `workplans/` Build and verify the publication locally with: diff --git a/build/adr/addressing-and-permanence/v1/index.html b/build/adr/addressing-and-permanence/v1/index.html new file mode 100644 index 0000000..57bbcce --- /dev/null +++ b/build/adr/addressing-and-permanence/v1/index.html @@ -0,0 +1,214 @@ + + + + +Policy addressing and permanence + +
policy-nexus-adr-0001 accepted · accepted-1 the-custodian reviewed 2026-08-18generated from canonical source — do not edit

Policy addressing and permanence

Source: policy-nexus · docs/adr/ADR-0001-addressing-and-permanence.md · 7a24e9107fd62772a82d8b2a69692a09ce88eea9+working-tree.a28668fb4b8b

Review due: 2027-02-18

  • Status: accepted
  • Date: 2026-08-18
  • Owner: the-custodian
+

Decision

+

A document has one stable current address and immutable revision addresses:

+
/<kind>/<document>/<version>/
+/<kind>/<document>/<version>/revisions/<revision>/
+

<kind> is one of standards, architecture, constitution, or adr. <document> is a kebab-case slug that is unique on the site. The owner-facing rules live in docs/publication-contract.md.

+

The publication manifest records both. Existing public paths become permanent redirect aliases; the first is /tenancy-posture.html. No URL is derived from a checkout path, branch name, build number or hosting implementation.

+

The current address advances only when the owning source publishes a new revision. A revision address is write-once: the builder records the exact git commit (or commit plus working-tree marker) and the full source-content digest. It refuses to replace that revision with different content. Committing the same bytes may update the current page's provenance but does not rewrite the already-published revision page. The generated publication manifest makes the source repository, path, revision and digest machine-readable.

+

Superseded and withdrawn documents are never deleted. The current page gains a status banner and link to its successor; every historical revision continues to resolve. “Withdrawn” means retained and visibly non-current. Deletion is not a lifecycle state.

+

Source Git history remains the authority for versions that predate this site. Once a revision is published, the built revision page is also retained by the hosting artifact/release. Rollback republishes a previous complete build; it does not rebuild old pages from a changed working tree.

+
+

Permanence promise

+

A published URL is expected to resolve indefinitely. Breaking that promise requires an explicit the-custodian decision plus a redirect/export plan. A DNS, hosting or repository migration does not qualify: those must preserve paths.

+

This repo owns addressing, rendering and currency. It does not decide whether a draft is accepted; ratification belongs to the canon owner/the-custodian.

+
+

Publication scope

+

Canon standards, architecture, and constitution are in scope. values, tpsc, and projects are out until their owner marks individual documents as governing. Per-repo ADRs are in scope through explicit manifest entries. Workplans, evidence, runbooks and general docs are not.

+
+

Consequences

+
  • Builds fail if a source disappears, an id differs, a path collides, or an immutable revision would change; stale output is not silently called fresh.
  • Pages show status, revision, owner, last review and exact source revision.
  • Availability remains restart recovery on the single-node rail. This contract promises stable addressing, not a high-availability SLA.
+
diff --git a/build/adr/addressing-and-permanence/v1/revisions/accepted-1/index.html b/build/adr/addressing-and-permanence/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..57bbcce --- /dev/null +++ b/build/adr/addressing-and-permanence/v1/revisions/accepted-1/index.html @@ -0,0 +1,214 @@ + + + + +Policy addressing and permanence + +
policy-nexus-adr-0001 accepted · accepted-1 the-custodian reviewed 2026-08-18generated from canonical source — do not edit

Policy addressing and permanence

Source: policy-nexus · docs/adr/ADR-0001-addressing-and-permanence.md · 7a24e9107fd62772a82d8b2a69692a09ce88eea9+working-tree.a28668fb4b8b

Review due: 2027-02-18

  • Status: accepted
  • Date: 2026-08-18
  • Owner: the-custodian
+

Decision

+

A document has one stable current address and immutable revision addresses:

+
/<kind>/<document>/<version>/
+/<kind>/<document>/<version>/revisions/<revision>/
+

<kind> is one of standards, architecture, constitution, or adr. <document> is a kebab-case slug that is unique on the site. The owner-facing rules live in docs/publication-contract.md.

+

The publication manifest records both. Existing public paths become permanent redirect aliases; the first is /tenancy-posture.html. No URL is derived from a checkout path, branch name, build number or hosting implementation.

+

The current address advances only when the owning source publishes a new revision. A revision address is write-once: the builder records the exact git commit (or commit plus working-tree marker) and the full source-content digest. It refuses to replace that revision with different content. Committing the same bytes may update the current page's provenance but does not rewrite the already-published revision page. The generated publication manifest makes the source repository, path, revision and digest machine-readable.

+

Superseded and withdrawn documents are never deleted. The current page gains a status banner and link to its successor; every historical revision continues to resolve. “Withdrawn” means retained and visibly non-current. Deletion is not a lifecycle state.

+

Source Git history remains the authority for versions that predate this site. Once a revision is published, the built revision page is also retained by the hosting artifact/release. Rollback republishes a previous complete build; it does not rebuild old pages from a changed working tree.

+
+

Permanence promise

+

A published URL is expected to resolve indefinitely. Breaking that promise requires an explicit the-custodian decision plus a redirect/export plan. A DNS, hosting or repository migration does not qualify: those must preserve paths.

+

This repo owns addressing, rendering and currency. It does not decide whether a draft is accepted; ratification belongs to the canon owner/the-custodian.

+
+

Publication scope

+

Canon standards, architecture, and constitution are in scope. values, tpsc, and projects are out until their owner marks individual documents as governing. Per-repo ADRs are in scope through explicit manifest entries. Workplans, evidence, runbooks and general docs are not.

+
+

Consequences

+
  • Builds fail if a source disappears, an id differs, a path collides, or an immutable revision would change; stale output is not silently called fresh.
  • Pages show status, revision, owner, last review and exact source revision.
  • Availability remains restart recovery on the single-node rail. This contract promises stable addressing, not a high-availability SLA.
+
diff --git a/build/adr/railiance-derived-rail-composition/v1/index.html b/build/adr/railiance-derived-rail-composition/v1/index.html new file mode 100644 index 0000000..20dbc34 --- /dev/null +++ b/build/adr/railiance-derived-rail-composition/v1/index.html @@ -0,0 +1,205 @@ + + + + +Derived Rail Composition + +
RMASTER-ADR-0005 accepted · accepted-1 railiance-master reviewed 2026-07-26generated from canonical source — do not edit

Derived Rail Composition

Source: railiance-master · docs/adr/ADR-0005-derived-rail-composition.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-26

Date: 2026-07-26 Status: Accepted

+

Context

+

Knative provides distinct workload activation and revision semantics but runs on Kubernetes. Treating it as an unrelated peer rail would duplicate generic workload lifecycle and substrate assumptions.

+
+

Decision

+

Railiance distinguishes base and derived rails.

+

rail-kubernetes is the default base rail for platform workloads. rail-knative is a derived rail that inherits a versioned rail-kubernetes common contract and overrides only Knative-specific activation, revision, autoscaling, traffic, cold-start, and rollback semantics.

+

The detailed contract is docs/rail-composition-contract.md.

+
+

Consequences

+
  • New platform workloads continue to use rail-kubernetes unless a specialized rail is justified.
  • Derived rails declare base-rail compatibility rather than copying lifecycle contracts.
  • Fabric and conformance tooling must understand rail dependency and readiness.
  • Knative installation stays with the S2 substrate owner.
+
diff --git a/build/adr/railiance-derived-rail-composition/v1/revisions/accepted-1/index.html b/build/adr/railiance-derived-rail-composition/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..20dbc34 --- /dev/null +++ b/build/adr/railiance-derived-rail-composition/v1/revisions/accepted-1/index.html @@ -0,0 +1,205 @@ + + + + +Derived Rail Composition + +
RMASTER-ADR-0005 accepted · accepted-1 railiance-master reviewed 2026-07-26generated from canonical source — do not edit

Derived Rail Composition

Source: railiance-master · docs/adr/ADR-0005-derived-rail-composition.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-26

Date: 2026-07-26 Status: Accepted

+

Context

+

Knative provides distinct workload activation and revision semantics but runs on Kubernetes. Treating it as an unrelated peer rail would duplicate generic workload lifecycle and substrate assumptions.

+
+

Decision

+

Railiance distinguishes base and derived rails.

+

rail-kubernetes is the default base rail for platform workloads. rail-knative is a derived rail that inherits a versioned rail-kubernetes common contract and overrides only Knative-specific activation, revision, autoscaling, traffic, cold-start, and rollback semantics.

+

The detailed contract is docs/rail-composition-contract.md.

+
+

Consequences

+
  • New platform workloads continue to use rail-kubernetes unless a specialized rail is justified.
  • Derived rails declare base-rail compatibility rather than copying lifecycle contracts.
  • Fabric and conformance tooling must understand rail dependency and readiness.
  • Knative installation stays with the S2 substrate owner.
+
diff --git a/build/adr/railiance-first-wave-reef-rollout/v1/index.html b/build/adr/railiance-first-wave-reef-rollout/v1/index.html new file mode 100644 index 0000000..b3a8426 --- /dev/null +++ b/build/adr/railiance-first-wave-reef-rollout/v1/index.html @@ -0,0 +1,217 @@ + + + + +First-Wave reef Rollout + +
RMASTER-ADR-0004 accepted · accepted-1 railiance-master reviewed 2026-07-26generated from canonical source — do not edit

First-Wave reef Rollout

Source: railiance-master · docs/adr/ADR-0004-first-wave-reef-rollout.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-26

Date: 2026-07-25 Status: Accepted

+

Context

+

Railiance now has a reef model, but it needs a concrete first rollout.

+

The current substrate reality is not uniform:

+
  • Railiance01 is the clearest new-workload home
  • CoulombCore is still active but transitional
  • the workstation role is operator edge compute rather than server substrate
+

At the same time, S1 ownership is ambiguous because railiance-hosts and railiance-infra duplicate each other.

+
+

Decision

+

The first-wave reef rollout is:

+
  1. reef-railiance
  2. reef-coulombcore
  3. reef-ops-workstations
+

railiance-infra is the canonical S1 ownership repo going forward.

+

railiance-hosts is treated as predecessor or duplicate state to be retired, frozen, or reduced later rather than as a second canonical S1 architecture home.

+
+

Consequences

+

Positive

+
  • Railiance gets a grouped home-reef seed whose name remains stable as more home servers are added.
  • Transitional CoulombCore reality is acknowledged without being treated as the long-term preferred production pattern.
  • Operator edge compute is modeled without defaulting to one repo per machine.
  • Reef planning now rests on one canonical S1 ownership line.
+

Required Follow-On Work

+
  • Create repo-local rollout work for the first reef repos.
  • Define how additional Railiance home servers join reef-railiance and what future split criteria would justify narrower reefs.
  • Plan the railiance-hosts cleanup direction relative to railiance-infra.
+

Constraints

+
  • Multi-rail reefs are acceptable early, especially on transitional substrates.
  • Production-grade separation should still prefer clearer purpose and primary rail boundaries as criticality rises.
  • Transitional substrate nicknames should remain provisional until the pattern is stable enough to canonize.
+
+

Notes

+

This ADR chooses the first rollout set. It does not require that every future substrate be modeled the same way.

+
diff --git a/build/adr/railiance-first-wave-reef-rollout/v1/revisions/accepted-1/index.html b/build/adr/railiance-first-wave-reef-rollout/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..b3a8426 --- /dev/null +++ b/build/adr/railiance-first-wave-reef-rollout/v1/revisions/accepted-1/index.html @@ -0,0 +1,217 @@ + + + + +First-Wave reef Rollout + +
RMASTER-ADR-0004 accepted · accepted-1 railiance-master reviewed 2026-07-26generated from canonical source — do not edit

First-Wave reef Rollout

Source: railiance-master · docs/adr/ADR-0004-first-wave-reef-rollout.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-26

Date: 2026-07-25 Status: Accepted

+

Context

+

Railiance now has a reef model, but it needs a concrete first rollout.

+

The current substrate reality is not uniform:

+
  • Railiance01 is the clearest new-workload home
  • CoulombCore is still active but transitional
  • the workstation role is operator edge compute rather than server substrate
+

At the same time, S1 ownership is ambiguous because railiance-hosts and railiance-infra duplicate each other.

+
+

Decision

+

The first-wave reef rollout is:

+
  1. reef-railiance
  2. reef-coulombcore
  3. reef-ops-workstations
+

railiance-infra is the canonical S1 ownership repo going forward.

+

railiance-hosts is treated as predecessor or duplicate state to be retired, frozen, or reduced later rather than as a second canonical S1 architecture home.

+
+

Consequences

+

Positive

+
  • Railiance gets a grouped home-reef seed whose name remains stable as more home servers are added.
  • Transitional CoulombCore reality is acknowledged without being treated as the long-term preferred production pattern.
  • Operator edge compute is modeled without defaulting to one repo per machine.
  • Reef planning now rests on one canonical S1 ownership line.
+

Required Follow-On Work

+
  • Create repo-local rollout work for the first reef repos.
  • Define how additional Railiance home servers join reef-railiance and what future split criteria would justify narrower reefs.
  • Plan the railiance-hosts cleanup direction relative to railiance-infra.
+

Constraints

+
  • Multi-rail reefs are acceptable early, especially on transitional substrates.
  • Production-grade separation should still prefer clearer purpose and primary rail boundaries as criticality rises.
  • Transitional substrate nicknames should remain provisional until the pattern is stable enough to canonize.
+
+

Notes

+

This ADR chooses the first rollout set. It does not require that every future substrate be modeled the same way.

+
diff --git a/build/adr/railiance-private-by-default-exposure/v1/index.html b/build/adr/railiance-private-by-default-exposure/v1/index.html new file mode 100644 index 0000000..4d38576 --- /dev/null +++ b/build/adr/railiance-private-by-default-exposure/v1/index.html @@ -0,0 +1,218 @@ + + + + +Private-by-default Exposure + +
RMASTER-ADR-0008 accepted · accepted-1 railiance-master reviewed 2026-08-15generated from canonical source — do not edit

Private-by-default Exposure

Source: railiance-master · docs/adr/ADR-0008-private-by-default-exposure.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-02-15

Date: 2026-08-15 Status: Accepted

+

Context

+

ADR-0006 says a topology binding is not permission to run a workload in production. It does not say who may reach a listener. A working deploy, a hosts_rail / binds_rapp line, or an Ingress object has been enough to put something on the public internet.

+

Family readiness vocabularies are deliberately not unified (schemas/README.md). Reef lifecycle_state has no production-approved. Rapp readiness_state has no production-approved either. Exposure cannot be derived from those enums.

+

Live public surfaces already exist on reef-railiance. They must be named as grants, not silently grandfathered and not taken down by this decision.

+

Ratified 2026-08-15 under RMASTER-WP-0023-T01.

+
+

Decision

+

New reefs, rails, and rapps are unreachable from the public internet until they are production-safe and explicitly granted. The field name is exposure. Missing field means private.

+
PostureMeaningWho may reach it
privateNo extra listener we controlin-cluster DNS, same-reef services
operatorSame listener as private, plus a named ops-bridge / SSH tunneloperator and approved agents
publicInternet listener we publishanyone the Ingress / DNS / UFW surface allows
+

operator is an access annotation, not a different packet posture. It does not open a host port or a public Ingress.

+

Default for a new reef, rail, or rapp is private. Use operator only for a named admin or API surface that must be reachable before admission (k3s API, OpenBao UI). Do not prefer operator as the debug default.

+

public requires both an ADR-0006 binding of production-approved and an explicit grant. A deploy, a binding line, or an Ingress object is not a grant. Do not key public off rapp readiness_state and do not add production-approved to the rapp enum for this purpose.

+

A reef public surface (host port or public DNS we publish) is a substrate grant, not reef lifecycle_state. A rapp cannot be public on a reef that has not granted a public surface. Conflicting declarations fail closed.

+

The shared vocabulary is one enum. It is not one schema shape and not one admission check:

+
FamilyWhat the field meansWhat makes public legal
rapp-*intended consumer-facing listenerbinding production-approved + grant
rail-*which listener classes the rail may emitrail may emit public Ingress only when a bound grant exists
reef-*host ports and public DNS we publishsubstrate grant
+

A grant is accepted residual risk, not a self-serve wish. Required fields: hostname or port, reason, approved_on, residual-risk owner.

+

6443 / the k3s API is not a grantable public surface.

+

This contract covers listeners we control: host ports, Ingress, Service types, and public DNS we publish. Provider-native internet APIs (Scaleway S3 and other provider-delegated endpoints) are outside this enum.

+

Ops-bridge is the normal path to a shielded thing.

+

The detailed per-family reading lives in docs/exposure-posture-contract.md.

+
+

Consequences

+
  • ADR-0006 still answers "may this binding run in production?" This ADR answers "who may reach the listener?" Do not merge the axes.
  • The three readiness enums stay distinct on purpose.
  • Family schemas grow an additive exposure field. Rapp data_classification: public is a different field and must not be reused as the posture name.
  • Implementation stays in the owning repos. This ADR does not install NetworkPolicy, UFW, Ingress, or tunnels.
  • Existing public surfaces on reef-railiance remain up until named as grants. This ADR is not a shutdown plan.
  • CoulombCore host inventory and Q7 / Goss reaction stay outside this decision.
+
diff --git a/build/adr/railiance-private-by-default-exposure/v1/revisions/accepted-1/index.html b/build/adr/railiance-private-by-default-exposure/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..4d38576 --- /dev/null +++ b/build/adr/railiance-private-by-default-exposure/v1/revisions/accepted-1/index.html @@ -0,0 +1,218 @@ + + + + +Private-by-default Exposure + +
RMASTER-ADR-0008 accepted · accepted-1 railiance-master reviewed 2026-08-15generated from canonical source — do not edit

Private-by-default Exposure

Source: railiance-master · docs/adr/ADR-0008-private-by-default-exposure.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-02-15

Date: 2026-08-15 Status: Accepted

+

Context

+

ADR-0006 says a topology binding is not permission to run a workload in production. It does not say who may reach a listener. A working deploy, a hosts_rail / binds_rapp line, or an Ingress object has been enough to put something on the public internet.

+

Family readiness vocabularies are deliberately not unified (schemas/README.md). Reef lifecycle_state has no production-approved. Rapp readiness_state has no production-approved either. Exposure cannot be derived from those enums.

+

Live public surfaces already exist on reef-railiance. They must be named as grants, not silently grandfathered and not taken down by this decision.

+

Ratified 2026-08-15 under RMASTER-WP-0023-T01.

+
+

Decision

+

New reefs, rails, and rapps are unreachable from the public internet until they are production-safe and explicitly granted. The field name is exposure. Missing field means private.

+
PostureMeaningWho may reach it
privateNo extra listener we controlin-cluster DNS, same-reef services
operatorSame listener as private, plus a named ops-bridge / SSH tunneloperator and approved agents
publicInternet listener we publishanyone the Ingress / DNS / UFW surface allows
+

operator is an access annotation, not a different packet posture. It does not open a host port or a public Ingress.

+

Default for a new reef, rail, or rapp is private. Use operator only for a named admin or API surface that must be reachable before admission (k3s API, OpenBao UI). Do not prefer operator as the debug default.

+

public requires both an ADR-0006 binding of production-approved and an explicit grant. A deploy, a binding line, or an Ingress object is not a grant. Do not key public off rapp readiness_state and do not add production-approved to the rapp enum for this purpose.

+

A reef public surface (host port or public DNS we publish) is a substrate grant, not reef lifecycle_state. A rapp cannot be public on a reef that has not granted a public surface. Conflicting declarations fail closed.

+

The shared vocabulary is one enum. It is not one schema shape and not one admission check:

+
FamilyWhat the field meansWhat makes public legal
rapp-*intended consumer-facing listenerbinding production-approved + grant
rail-*which listener classes the rail may emitrail may emit public Ingress only when a bound grant exists
reef-*host ports and public DNS we publishsubstrate grant
+

A grant is accepted residual risk, not a self-serve wish. Required fields: hostname or port, reason, approved_on, residual-risk owner.

+

6443 / the k3s API is not a grantable public surface.

+

This contract covers listeners we control: host ports, Ingress, Service types, and public DNS we publish. Provider-native internet APIs (Scaleway S3 and other provider-delegated endpoints) are outside this enum.

+

Ops-bridge is the normal path to a shielded thing.

+

The detailed per-family reading lives in docs/exposure-posture-contract.md.

+
+

Consequences

+
  • ADR-0006 still answers "may this binding run in production?" This ADR answers "who may reach the listener?" Do not merge the axes.
  • The three readiness enums stay distinct on purpose.
  • Family schemas grow an additive exposure field. Rapp data_classification: public is a different field and must not be reused as the posture name.
  • Implementation stays in the owning repos. This ADR does not install NetworkPolicy, UFW, Ingress, or tunnels.
  • Existing public surfaces on reef-railiance remain up until named as grants. This ADR is not a shutdown plan.
  • CoulombCore host inventory and Q7 / Goss reaction stay outside this decision.
+
diff --git a/build/adr/railiance-rail-kubernetes-wave-1-boundary/v1/index.html b/build/adr/railiance-rail-kubernetes-wave-1-boundary/v1/index.html new file mode 100644 index 0000000..1556574 --- /dev/null +++ b/build/adr/railiance-rail-kubernetes-wave-1-boundary/v1/index.html @@ -0,0 +1,218 @@ + + + + +Wave 1 rail-kubernetes Boundary + +
RMASTER-ADR-0002 accepted · accepted-1 railiance-master reviewed 2026-07-25generated from canonical source — do not edit

Wave 1 rail-kubernetes Boundary

Source: railiance-master · docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-25

Date: 2026-07-25 Status: Accepted

+

Context

+

Railiance wants rail-* repos to represent workload execution contracts rather than abstract naming ideas.

+

Today, the concrete Kubernetes workload contract already exists, but it is embedded in railiance-cluster. That repo currently owns both:

+
  • the S2 Kubernetes substrate
  • and the generic workload lifecycle and tooling that run on top of it
+

That mixed ownership is the main blocker to introducing the first real rail.

+
+

Decision

+

Railiance will treat rail-kubernetes as the wave-1 base rail.

+

The boundary is:

+
  • railiance-cluster owns the Kubernetes substrate and its prerequisites
  • rail-kubernetes owns the generic workload-on-Kubernetes execution contract
+

Workload-specific helper flows currently living in railiance-cluster are temporary exceptions and must be rehomed rather than carried forward as part of the generic rail.

+
+

Consequences

+

Positive

+
  • The first real rail gains a concrete ownership boundary.
  • railiance-cluster can return to a clean S2 substrate identity.
  • Future rails such as rail-knative get a stable base boundary to extend from.
  • rapp-* repos gain a clearer execution-contract home for Kubernetes-managed workloads.
+

Required Follow-On Work

+
  • Create the detailed rail-kubernetes boundary contract and migration map.
  • Split generic lifecycle docs, schema, examples, and Stage 1-3 tooling out of railiance-cluster.
  • Leave a compatibility path so current users of the cluster repo are not broken during the migration.
  • Rehome workload-specific helpers that do not belong in either boundary.
+

Constraints

+
  • rail-kubernetes must not take ownership of cluster bootstrap, operators, or kubeconfig management.
  • railiance-cluster must not continue as the owner of generic workload promotion semantics after the split.
  • rail-knative should follow this cleanup, not bypass it.
+
+

Notes

+

This ADR does not require all current files to move immediately.

+

It requires the ownership line to be explicit now, so practical repo separation can proceed without ambiguity.

+
diff --git a/build/adr/railiance-rail-kubernetes-wave-1-boundary/v1/revisions/accepted-1/index.html b/build/adr/railiance-rail-kubernetes-wave-1-boundary/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..1556574 --- /dev/null +++ b/build/adr/railiance-rail-kubernetes-wave-1-boundary/v1/revisions/accepted-1/index.html @@ -0,0 +1,218 @@ + + + + +Wave 1 rail-kubernetes Boundary + +
RMASTER-ADR-0002 accepted · accepted-1 railiance-master reviewed 2026-07-25generated from canonical source — do not edit

Wave 1 rail-kubernetes Boundary

Source: railiance-master · docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-25

Date: 2026-07-25 Status: Accepted

+

Context

+

Railiance wants rail-* repos to represent workload execution contracts rather than abstract naming ideas.

+

Today, the concrete Kubernetes workload contract already exists, but it is embedded in railiance-cluster. That repo currently owns both:

+
  • the S2 Kubernetes substrate
  • and the generic workload lifecycle and tooling that run on top of it
+

That mixed ownership is the main blocker to introducing the first real rail.

+
+

Decision

+

Railiance will treat rail-kubernetes as the wave-1 base rail.

+

The boundary is:

+
  • railiance-cluster owns the Kubernetes substrate and its prerequisites
  • rail-kubernetes owns the generic workload-on-Kubernetes execution contract
+

Workload-specific helper flows currently living in railiance-cluster are temporary exceptions and must be rehomed rather than carried forward as part of the generic rail.

+
+

Consequences

+

Positive

+
  • The first real rail gains a concrete ownership boundary.
  • railiance-cluster can return to a clean S2 substrate identity.
  • Future rails such as rail-knative get a stable base boundary to extend from.
  • rapp-* repos gain a clearer execution-contract home for Kubernetes-managed workloads.
+

Required Follow-On Work

+
  • Create the detailed rail-kubernetes boundary contract and migration map.
  • Split generic lifecycle docs, schema, examples, and Stage 1-3 tooling out of railiance-cluster.
  • Leave a compatibility path so current users of the cluster repo are not broken during the migration.
  • Rehome workload-specific helpers that do not belong in either boundary.
+

Constraints

+
  • rail-kubernetes must not take ownership of cluster bootstrap, operators, or kubeconfig management.
  • railiance-cluster must not continue as the owner of generic workload promotion semantics after the split.
  • rail-knative should follow this cleanup, not bypass it.
+
+

Notes

+

This ADR does not require all current files to move immediately.

+

It requires the ownership line to be explicit now, so practical repo separation can proceed without ambiguity.

+
diff --git a/build/adr/railiance-rapp-declaration-contract/v1/index.html b/build/adr/railiance-rapp-declaration-contract/v1/index.html new file mode 100644 index 0000000..7782392 --- /dev/null +++ b/build/adr/railiance-rapp-declaration-contract/v1/index.html @@ -0,0 +1,210 @@ + + + + +Rapp Declaration Contract + +
RMASTER-ADR-0007 accepted · accepted-1 railiance-master reviewed 2026-08-13generated from canonical source — do not edit

Rapp Declaration Contract

Source: railiance-master · docs/adr/ADR-0007-rapp-declaration-contract.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-02-13

Date: 2026-08-13 Status: Accepted

+

Context

+

RMASTER-WP-0017 through RMASTER-WP-0019 established the four-axis model and materialized the first family repos. The model held up. Its enforcement did not.

+

A 2026-08-11 survey by railiance-platform found that the three live rapp.yaml files were mutually unreadable: rollout, smoke, and rollback contracts used different shapes; metadata that both rails carry consistently appeared in only one rapp; reef-railiance bound_rapps listed rapp-qonto only, while rapp-openbao and rapp-postgres were already live on the same reef. docs/repo-family-bootstrap-contract.md named fields in prose and could not catch any of this.

+

The same survey treated rapp grouping as something that might be derived from Forgejo organizations or from State Hub domains. Neither works. A repo lives in exactly one Forgejo org, so org:repo is one-to-many. A repo may legitimately contribute to more than one rapp, so rapp:repo is many-to-many. A many-to-many grouping cannot be derived from a one-to-many one. Domains fail in both directions. The three dimensions also change at different speeds.

+

Canon OAS P1 requires independent perspectives to be separate orthogonal dimensions. Decision d07ee5f9 already recorded this from the railiance-platform side; this ADR is the framework record.

+
+

Decision

+
  1. Bounded rapp context is its own dimension. It is derived neither from Forgejo organizations nor from State Hub domains. Grouping is a first-class declaration, not a projection of some other axis.
+
  1. Two cardinalities stay distinct. Repos to rapps is many-to-many: a repo may appear in the composition.member_repos of more than one rapp. Deployables to rapps is one-to-one: every running deployable has exactly one rapp that owns its rollout. The coverage question — does every live deployable belong to exactly one rapp? — is well-formed only if these stay distinct.
+
  1. Granularity is grouped-by-bounded-context. One rapp per cohesive group that deploys, versions, and rolls back together, not one rapp per deployable. Grouping is legitimate only where members share rollout and rollback fate. A single-repo rapp is the one-member case of the same composition block, not a second shape.
+
  1. The schema is normative. schemas/rapp.schema.json, schemas/rail.schema.json, and schemas/reef.schema.json define the shapes. Framework prose cites those files. It does not restate their fields. Reef bound_rapps is a derived projection of rapp.bound_reefs, not a hand-maintained registry.
+

The detailed shapes, including the single normative form of the rollout, smoke, and rollback contracts, live in the schema files and schemas/README.md.

+
+

Consequences

+
  • Drift across family declarations fails in tools/validate-family-declarations.py instead of accumulating in prose.
  • railiance-platform RAILIANCE-WP-0015-T02 can converge rapp-openbao and rapp-postgres onto one shape. Migration belongs to the owning repos; this ADR does not move any declaration.
  • reef-railiance must stop treating bound_rapps: [rapp-qonto] as source of truth. The list is already stale.
  • Three further rapp-* repos (rapp-secrets-engine, rapp-tenant-engine, rapp-user-engine) carry the family prefix and no declaration. They are visible to the validator as undeclared and must be declared, renamed, or retired by their owners.
  • Calling the validator from fix-consistency still waits on the-custodian admitting the family prefixes into the classification standard. That sequencing is not this repo's.
+
diff --git a/build/adr/railiance-rapp-declaration-contract/v1/revisions/accepted-1/index.html b/build/adr/railiance-rapp-declaration-contract/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..7782392 --- /dev/null +++ b/build/adr/railiance-rapp-declaration-contract/v1/revisions/accepted-1/index.html @@ -0,0 +1,210 @@ + + + + +Rapp Declaration Contract + +
RMASTER-ADR-0007 accepted · accepted-1 railiance-master reviewed 2026-08-13generated from canonical source — do not edit

Rapp Declaration Contract

Source: railiance-master · docs/adr/ADR-0007-rapp-declaration-contract.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-02-13

Date: 2026-08-13 Status: Accepted

+

Context

+

RMASTER-WP-0017 through RMASTER-WP-0019 established the four-axis model and materialized the first family repos. The model held up. Its enforcement did not.

+

A 2026-08-11 survey by railiance-platform found that the three live rapp.yaml files were mutually unreadable: rollout, smoke, and rollback contracts used different shapes; metadata that both rails carry consistently appeared in only one rapp; reef-railiance bound_rapps listed rapp-qonto only, while rapp-openbao and rapp-postgres were already live on the same reef. docs/repo-family-bootstrap-contract.md named fields in prose and could not catch any of this.

+

The same survey treated rapp grouping as something that might be derived from Forgejo organizations or from State Hub domains. Neither works. A repo lives in exactly one Forgejo org, so org:repo is one-to-many. A repo may legitimately contribute to more than one rapp, so rapp:repo is many-to-many. A many-to-many grouping cannot be derived from a one-to-many one. Domains fail in both directions. The three dimensions also change at different speeds.

+

Canon OAS P1 requires independent perspectives to be separate orthogonal dimensions. Decision d07ee5f9 already recorded this from the railiance-platform side; this ADR is the framework record.

+
+

Decision

+
  1. Bounded rapp context is its own dimension. It is derived neither from Forgejo organizations nor from State Hub domains. Grouping is a first-class declaration, not a projection of some other axis.
+
  1. Two cardinalities stay distinct. Repos to rapps is many-to-many: a repo may appear in the composition.member_repos of more than one rapp. Deployables to rapps is one-to-one: every running deployable has exactly one rapp that owns its rollout. The coverage question — does every live deployable belong to exactly one rapp? — is well-formed only if these stay distinct.
+
  1. Granularity is grouped-by-bounded-context. One rapp per cohesive group that deploys, versions, and rolls back together, not one rapp per deployable. Grouping is legitimate only where members share rollout and rollback fate. A single-repo rapp is the one-member case of the same composition block, not a second shape.
+
  1. The schema is normative. schemas/rapp.schema.json, schemas/rail.schema.json, and schemas/reef.schema.json define the shapes. Framework prose cites those files. It does not restate their fields. Reef bound_rapps is a derived projection of rapp.bound_reefs, not a hand-maintained registry.
+

The detailed shapes, including the single normative form of the rollout, smoke, and rollback contracts, live in the schema files and schemas/README.md.

+
+

Consequences

+
  • Drift across family declarations fails in tools/validate-family-declarations.py instead of accumulating in prose.
  • railiance-platform RAILIANCE-WP-0015-T02 can converge rapp-openbao and rapp-postgres onto one shape. Migration belongs to the owning repos; this ADR does not move any declaration.
  • reef-railiance must stop treating bound_rapps: [rapp-qonto] as source of truth. The list is already stale.
  • Three further rapp-* repos (rapp-secrets-engine, rapp-tenant-engine, rapp-user-engine) carry the family prefix and no declaration. They are visible to the validator as undeclared and must be declared, renamed, or retired by their owners.
  • Calling the validator from fix-consistency still waits on the-custodian admitting the family prefixes into the classification standard. That sequencing is not this repo's.
+
diff --git a/build/adr/railiance-rapp-first-wave-selection/v1/index.html b/build/adr/railiance-rapp-first-wave-selection/v1/index.html new file mode 100644 index 0000000..893a6e0 --- /dev/null +++ b/build/adr/railiance-rapp-first-wave-selection/v1/index.html @@ -0,0 +1,216 @@ + + + + +First-Wave rapp Selection + +
RMASTER-ADR-0003 accepted · accepted-1 railiance-master reviewed 2026-07-25generated from canonical source — do not edit

First-Wave rapp Selection

Source: railiance-master · docs/adr/ADR-0003-rapp-first-wave-selection.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-25

Date: 2026-07-25 Status: Accepted

+

Context

+

Railiance wants rapp-* repos to represent managed workload packages rather than new ownership layers.

+

The current workload surfaces already suggest several candidates:

+
  • OpenBao in railiance-platform
  • the forge workload in railiance-forge
  • multiple S5 workloads in railiance-apps
+

But they are not equally ready for first extraction.

+
+

Decision

+

The first-wave rapp-* order is:

+
  1. rapp-openbao
  2. rapp-vergabe-teilnahme
  3. later rapp-forgejo after the forge runtime target stabilizes
+

The forge workload is explicitly deferred from the first wave because current Gitea operation and future Forgejo direction are both active realities.

+
+

Consequences

+

Positive

+
  • The first rapp-* extraction proves the third-party platform-service wrapper model.
  • The second proves the user-facing self-built app wrapper model.
  • The deferred forge wrapper avoids immediate rename churn and packaging ambiguity.
+

Required Follow-On Work

+
  • Write repo-local extraction work for rapp-openbao.
  • Write repo-local extraction work for rapp-vergabe-teilnahme.
  • Reassess the forge wrapper when the production package target is no longer split between current Gitea and future Forgejo.
+

Constraints

+
  • rapp-* repos must stay packaging-focused and must not become shadow ownership repos.
  • Shared S3 policy stays in railiance-platform.
  • Shared S5 release patterns stay in railiance-apps.
+
+

Notes

+

This ADR chooses sequence, not a mandatory destination for every workload in the ecosystem.

+
diff --git a/build/adr/railiance-rapp-first-wave-selection/v1/revisions/accepted-1/index.html b/build/adr/railiance-rapp-first-wave-selection/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..893a6e0 --- /dev/null +++ b/build/adr/railiance-rapp-first-wave-selection/v1/revisions/accepted-1/index.html @@ -0,0 +1,216 @@ + + + + +First-Wave rapp Selection + +
RMASTER-ADR-0003 accepted · accepted-1 railiance-master reviewed 2026-07-25generated from canonical source — do not edit

First-Wave rapp Selection

Source: railiance-master · docs/adr/ADR-0003-rapp-first-wave-selection.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-25

Date: 2026-07-25 Status: Accepted

+

Context

+

Railiance wants rapp-* repos to represent managed workload packages rather than new ownership layers.

+

The current workload surfaces already suggest several candidates:

+
  • OpenBao in railiance-platform
  • the forge workload in railiance-forge
  • multiple S5 workloads in railiance-apps
+

But they are not equally ready for first extraction.

+
+

Decision

+

The first-wave rapp-* order is:

+
  1. rapp-openbao
  2. rapp-vergabe-teilnahme
  3. later rapp-forgejo after the forge runtime target stabilizes
+

The forge workload is explicitly deferred from the first wave because current Gitea operation and future Forgejo direction are both active realities.

+
+

Consequences

+

Positive

+
  • The first rapp-* extraction proves the third-party platform-service wrapper model.
  • The second proves the user-facing self-built app wrapper model.
  • The deferred forge wrapper avoids immediate rename churn and packaging ambiguity.
+

Required Follow-On Work

+
  • Write repo-local extraction work for rapp-openbao.
  • Write repo-local extraction work for rapp-vergabe-teilnahme.
  • Reassess the forge wrapper when the production package target is no longer split between current Gitea and future Forgejo.
+

Constraints

+
  • rapp-* repos must stay packaging-focused and must not become shadow ownership repos.
  • Shared S3 policy stays in railiance-platform.
  • Shared S5 release patterns stay in railiance-apps.
+
+

Notes

+

This ADR chooses sequence, not a mandatory destination for every workload in the ecosystem.

+
diff --git a/build/adr/railiance-reef-production-admission/v1/index.html b/build/adr/railiance-reef-production-admission/v1/index.html new file mode 100644 index 0000000..b749c2f --- /dev/null +++ b/build/adr/railiance-reef-production-admission/v1/index.html @@ -0,0 +1,206 @@ + + + + +Reef Production Admission + +
RMASTER-ADR-0006 accepted · accepted-1 railiance-master reviewed 2026-08-15generated from canonical source — do not edit

Reef Production Admission

Source: railiance-master · docs/adr/ADR-0006-reef-production-admission.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-02-15

Date: 2026-07-26 Status: Accepted

+

Context

+

Fabric topology can say that a reef hosts a rail or binds a workload, but that does not demonstrate capacity, isolation, recoverability, or approval for a critical internet-facing service.

+
+

Decision

+

Rail and rapp bindings use explicit readiness states: declared, installed, verified, production-approved, and deprecated.

+

Critical workloads require machine-readable conformance evidence plus explicit acceptance of residual risks that cannot be automated. Mixed-rail reefs use defined split triggers.

+

The detailed contract is docs/reef-production-readiness-contract.md.

+

Who may reach a listener is a different axis: ADR-0008. Production admission does not imply a public surface. A public surface requires this admission and an exposure grant.

+
+

Consequences

+
  • hosts_rail and binds_rapp no longer imply deployability.
  • reef-railiance may host Knative in wave 2, but Qonto cannot be called production-approved solely from that declaration.
  • Repeated evidence collection should become functional automation.
  • production-approved is not permission to publish a listener. See ADR-0008.
+
diff --git a/build/adr/railiance-reef-production-admission/v1/revisions/accepted-1/index.html b/build/adr/railiance-reef-production-admission/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..b749c2f --- /dev/null +++ b/build/adr/railiance-reef-production-admission/v1/revisions/accepted-1/index.html @@ -0,0 +1,206 @@ + + + + +Reef Production Admission + +
RMASTER-ADR-0006 accepted · accepted-1 railiance-master reviewed 2026-08-15generated from canonical source — do not edit

Reef Production Admission

Source: railiance-master · docs/adr/ADR-0006-reef-production-admission.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-02-15

Date: 2026-07-26 Status: Accepted

+

Context

+

Fabric topology can say that a reef hosts a rail or binds a workload, but that does not demonstrate capacity, isolation, recoverability, or approval for a critical internet-facing service.

+
+

Decision

+

Rail and rapp bindings use explicit readiness states: declared, installed, verified, production-approved, and deprecated.

+

Critical workloads require machine-readable conformance evidence plus explicit acceptance of residual risks that cannot be automated. Mixed-rail reefs use defined split triggers.

+

The detailed contract is docs/reef-production-readiness-contract.md.

+

Who may reach a listener is a different axis: ADR-0008. Production admission does not imply a public surface. A public surface requires this admission and an exposure grant.

+
+

Consequences

+
  • hosts_rail and binds_rapp no longer imply deployability.
  • reef-railiance may host Knative in wave 2, but Qonto cannot be called production-approved solely from that declaration.
  • Repeated evidence collection should become functional automation.
  • production-approved is not permission to publish a listener. See ADR-0008.
+
diff --git a/build/adr/railiance-repository-prefix/v1/index.html b/build/adr/railiance-repository-prefix/v1/index.html new file mode 100644 index 0000000..27f85e7 --- /dev/null +++ b/build/adr/railiance-repository-prefix/v1/index.html @@ -0,0 +1,235 @@ + + + + +Repository Prefix Architecture + +
RMASTER-ADR-0001 accepted · accepted-1 railiance-master reviewed 2026-07-25generated from canonical source — do not edit

Repository Prefix Architecture

Source: railiance-master · docs/adr/ADR-0001-repository-prefix-architecture.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-25

Date: 2026-07-25 Status: Accepted

+

Context

+

Railiance already has a meaningful set of ownership repos such as railiance-infra, railiance-cluster, railiance-platform, railiance-enablement, railiance-apps, railiance-forge, and railiance-fabric.

+

That structure is useful, but it does not by itself capture all of the dimensions Railiance now needs.

+

In particular, the architecture needs clear source-controlled homes for:

+
  • workload execution contracts across different operations architectures,
  • managed workload packages as first-class repos,
  • and concrete substrate boundaries such as named servers, workstations, or grouped environments.
+

Without that separation, Kubernetes-specific workload semantics remain mixed into railiance-cluster, workload wrappers remain mixed into ownership repos, and concrete substrates remain under-described.

+

Railiance also operates inside a wider ecosystem around Railiance, Net Kingdom, and the Helix Forge software factory. That wider context needs architecture that can support both exploratory operation and production-grade evolution without leaving key responsibilities ambiguous.

+
+

Decision

+

Railiance adopts four canonical repository families:

+
  1. railiance-* for ownership and responsibility areas
  2. rail-* for workload execution contracts
  3. rapp-* for Railiance-managed workload packages
  4. reef-* for durable substrate boundaries
+

The current implementation wave is explicitly centered on rail-kubernetes as the default base rail. Additional rails are introduced only when a concrete workload has a sound reason to run on a distinct execution architecture.

+

rail-knative is the first expected follow-on rail, motivated by the need to support qonto-assistent, but it should follow the rail-kubernetes boundary cleanup rather than bypass it.

+
+

Meaning Of Each Family

+

railiance-*

+

Owns major architectural responsibilities, shared policies, and durable layer boundaries.

+

rail-*

+

Owns how workloads run on a specific execution architecture such as Kubernetes, Knative, KEDA, Fission, or Nuclio.

+

In the current phase, rail-kubernetes is the default path for platform services and managed applications.

+

rapp-*

+

Owns the managed workload package for one service or application, whether it is an internal workload or a wrapped upstream product.

+

Its role is to provide the managed wrapper and scaffolding needed to run that workload in the Railiance and Net Kingdom context. It does not replace responsibility ownership.

+

reef-*

+

Owns the concrete substrate reality where rails and rapps are bound, such as a named server, cluster, workstation, or grouped substrate class.

+

A reef is about purpose-bound compute resources, not merely about individual machines.

+
+

Consequences

+

Positive

+
  • Ownership, execution, workload identity, and substrate identity become separate concerns.
  • Railiance can support multiple execution architectures without forcing all workload semantics into railiance-cluster.
  • Platform services and applications can both become first-class managed workload packages where appropriate.
  • Concrete substrates gain a clear architectural home without overloading the ownership repos.
  • The framework gains a disciplined default path for introducing new rails instead of proliferating them speculatively.
+

Required Follow-On Work

+
  • Define the initial rail-* contracts, starting with rail-kubernetes.
  • Evolve the current railiance/app.toml and overlay pattern into a rail-aware, eventually rail-neutral workload packaging contract.
  • Identify which current workloads should become rapp-* repos.
  • Extend railiance-fabric so rails, rapps, and reefs become graph-native.
  • Define when mixed-rail reefs are acceptable and when clearer substrate separation should be preferred.
+

Constraints

+
  • reef-* must not become a default one-repo-per-machine pattern.
  • Generic logic stays in the appropriate ownership repo.
  • A named machine gets its own reef only when that machine is itself a durable substrate boundary.
  • rapp-* repos must not become shadow ownership repos.
  • Transitional substrate labels should not be canonized before the pattern is operationally stable.
+
+

Current Interpretation For Existing Repos

+
  • railiance-* repos remain the primary ownership axis.
  • Current workload-execution logic in railiance-cluster is a candidate to migrate into rail-kubernetes.
  • Current workload wrappers inside railiance-apps, railiance-platform, or railiance-forge may evolve into rapp-* repos over time.
  • Current named substrates such as COULOMBCORE, RAILIANCE01, and WORKSTATION may justify reef-* repos when they represent real operational boundaries.
  • A reef may host more than one rail in early or mixed environments, but production-critical substrates should prefer clearer purpose and primary-rail boundaries unless a mixed design is justified.
+
+

Notes

+

This ADR defines the repository taxonomy. It does not yet mandate a full migration or rename of existing repos. Migration should happen when it produces clearer ownership and lower ambiguity, not merely for naming purity.

+
diff --git a/build/adr/railiance-repository-prefix/v1/revisions/accepted-1/index.html b/build/adr/railiance-repository-prefix/v1/revisions/accepted-1/index.html new file mode 100644 index 0000000..27f85e7 --- /dev/null +++ b/build/adr/railiance-repository-prefix/v1/revisions/accepted-1/index.html @@ -0,0 +1,235 @@ + + + + +Repository Prefix Architecture + +
RMASTER-ADR-0001 accepted · accepted-1 railiance-master reviewed 2026-07-25generated from canonical source — do not edit

Repository Prefix Architecture

Source: railiance-master · docs/adr/ADR-0001-repository-prefix-architecture.md · debbc13b4018f20db0997516b99afc1cc21084d7

Review due: 2027-01-25

Date: 2026-07-25 Status: Accepted

+

Context

+

Railiance already has a meaningful set of ownership repos such as railiance-infra, railiance-cluster, railiance-platform, railiance-enablement, railiance-apps, railiance-forge, and railiance-fabric.

+

That structure is useful, but it does not by itself capture all of the dimensions Railiance now needs.

+

In particular, the architecture needs clear source-controlled homes for:

+
  • workload execution contracts across different operations architectures,
  • managed workload packages as first-class repos,
  • and concrete substrate boundaries such as named servers, workstations, or grouped environments.
+

Without that separation, Kubernetes-specific workload semantics remain mixed into railiance-cluster, workload wrappers remain mixed into ownership repos, and concrete substrates remain under-described.

+

Railiance also operates inside a wider ecosystem around Railiance, Net Kingdom, and the Helix Forge software factory. That wider context needs architecture that can support both exploratory operation and production-grade evolution without leaving key responsibilities ambiguous.

+
+

Decision

+

Railiance adopts four canonical repository families:

+
  1. railiance-* for ownership and responsibility areas
  2. rail-* for workload execution contracts
  3. rapp-* for Railiance-managed workload packages
  4. reef-* for durable substrate boundaries
+

The current implementation wave is explicitly centered on rail-kubernetes as the default base rail. Additional rails are introduced only when a concrete workload has a sound reason to run on a distinct execution architecture.

+

rail-knative is the first expected follow-on rail, motivated by the need to support qonto-assistent, but it should follow the rail-kubernetes boundary cleanup rather than bypass it.

+
+

Meaning Of Each Family

+

railiance-*

+

Owns major architectural responsibilities, shared policies, and durable layer boundaries.

+

rail-*

+

Owns how workloads run on a specific execution architecture such as Kubernetes, Knative, KEDA, Fission, or Nuclio.

+

In the current phase, rail-kubernetes is the default path for platform services and managed applications.

+

rapp-*

+

Owns the managed workload package for one service or application, whether it is an internal workload or a wrapped upstream product.

+

Its role is to provide the managed wrapper and scaffolding needed to run that workload in the Railiance and Net Kingdom context. It does not replace responsibility ownership.

+

reef-*

+

Owns the concrete substrate reality where rails and rapps are bound, such as a named server, cluster, workstation, or grouped substrate class.

+

A reef is about purpose-bound compute resources, not merely about individual machines.

+
+

Consequences

+

Positive

+
  • Ownership, execution, workload identity, and substrate identity become separate concerns.
  • Railiance can support multiple execution architectures without forcing all workload semantics into railiance-cluster.
  • Platform services and applications can both become first-class managed workload packages where appropriate.
  • Concrete substrates gain a clear architectural home without overloading the ownership repos.
  • The framework gains a disciplined default path for introducing new rails instead of proliferating them speculatively.
+

Required Follow-On Work

+
  • Define the initial rail-* contracts, starting with rail-kubernetes.
  • Evolve the current railiance/app.toml and overlay pattern into a rail-aware, eventually rail-neutral workload packaging contract.
  • Identify which current workloads should become rapp-* repos.
  • Extend railiance-fabric so rails, rapps, and reefs become graph-native.
  • Define when mixed-rail reefs are acceptable and when clearer substrate separation should be preferred.
+

Constraints

+
  • reef-* must not become a default one-repo-per-machine pattern.
  • Generic logic stays in the appropriate ownership repo.
  • A named machine gets its own reef only when that machine is itself a durable substrate boundary.
  • rapp-* repos must not become shadow ownership repos.
  • Transitional substrate labels should not be canonized before the pattern is operationally stable.
+
+

Current Interpretation For Existing Repos

+
  • railiance-* repos remain the primary ownership axis.
  • Current workload-execution logic in railiance-cluster is a candidate to migrate into rail-kubernetes.
  • Current workload wrappers inside railiance-apps, railiance-platform, or railiance-forge may evolve into rapp-* repos over time.
  • Current named substrates such as COULOMBCORE, RAILIANCE01, and WORKSTATION may justify reef-* repos when they represent real operational boundaries.
  • A reef may host more than one rail in early or mixed environments, but production-critical substrates should prefer clearer purpose and primary-rail boundaries unless a mixed design is justified.
+
+

Notes

+

This ADR defines the repository taxonomy. It does not yet mandate a full migration or rename of existing repos. Migration should happen when it produces clearer ownership and lower ambiguity, not merely for naming purity.

+
diff --git a/build/index.html b/build/index.html index 4c8bee8..da2f058 100644 --- a/build/index.html +++ b/build/index.html @@ -183,4 +183,4 @@ footer{border-top:2px solid var(--ink);margin-top:20px;padding-top:22px;font-fam .route .tag{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass);display:block;margin-bottom:8px} a:focus-visible,.rail a:focus-visible{outline:2px solid var(--brass);outline-offset:3px} @media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}} -
policy surfacegenerated from canonical sources — do not edit

Coulomb Policy Nexus

Canon and architecture decisions at stable addresses, with visible currency.

DocumentStatusLifecycleRevisionOwnerReviewedReview dueCurrency
NetKingdom Tenancy Posture v0.1proposedactivedraft-8net-kingdom2026-08-172027-02-17current
+
policy surfacegenerated from canonical sources — do not edit

Coulomb Policy Nexus

Canon and architecture decisions at stable addresses, with visible currency.

DocumentStatusLifecycleRevisionOwnerReviewedReview dueCurrency
NetKingdom Tenancy Posture v0.1proposedactivedraft-8net-kingdom2026-08-172027-02-17current
Policy addressing and permanenceacceptedactiveaccepted-1the-custodian2026-08-182027-02-18current
Repository Prefix Architectureacceptedactiveaccepted-1railiance-master2026-07-252027-01-25current
Wave 1 rail-kubernetes Boundaryacceptedactiveaccepted-1railiance-master2026-07-252027-01-25current
First-Wave rapp Selectionacceptedactiveaccepted-1railiance-master2026-07-252027-01-25current
First-Wave reef Rolloutacceptedactiveaccepted-1railiance-master2026-07-262027-01-26current
Derived Rail Compositionacceptedactiveaccepted-1railiance-master2026-07-262027-01-26current
Reef Production Admissionacceptedactiveaccepted-1railiance-master2026-08-152027-02-15current
Rapp Declaration Contractacceptedactiveaccepted-1railiance-master2026-08-132027-02-13current
Private-by-default Exposureacceptedactiveaccepted-1railiance-master2026-08-152027-02-15current
diff --git a/build/publication-manifest.json b/build/publication-manifest.json index 8891b65..c83a96b 100644 --- a/build/publication-manifest.json +++ b/build/publication-manifest.json @@ -16,6 +16,159 @@ "source_revision": "f4f885289e196b6770fea5d509959e3031fd9295", "status": "proposed", "title": "NetKingdom Tenancy Posture v0.1" + }, + { + "canonical_path": "adr/addressing-and-permanence/v1/index.html", + "currency": "current", + "id": "policy-nexus-adr-0001", + "last_reviewed": "2026-08-18", + "lifecycle": "active", + "owner": "the-custodian", + "review_due": "2027-02-18", + "revision": "accepted-1", + "revision_path": "adr/addressing-and-permanence/v1/revisions/accepted-1/index.html", + "source_digest": "a28668fb4b8b6c5ec8c94baac000061276d85ef1849ec7ab8d132b913dbfe3be", + "source_path": "docs/adr/ADR-0001-addressing-and-permanence.md", + "source_repo": "policy-nexus", + "source_revision": "7a24e9107fd62772a82d8b2a69692a09ce88eea9+working-tree.a28668fb4b8b", + "status": "accepted", + "title": "Policy addressing and permanence" + }, + { + "canonical_path": "adr/railiance-repository-prefix/v1/index.html", + "currency": "current", + "id": "RMASTER-ADR-0001", + "last_reviewed": "2026-07-25", + "lifecycle": "active", + "owner": "railiance-master", + "review_due": "2027-01-25", + "revision": "accepted-1", + "revision_path": "adr/railiance-repository-prefix/v1/revisions/accepted-1/index.html", + "source_digest": "b9c993ded8d79d6f871dba9cf08a320b2d619609a448ad3d02b632f5b6f76497", + "source_path": "docs/adr/ADR-0001-repository-prefix-architecture.md", + "source_repo": "railiance-master", + "source_revision": "debbc13b4018f20db0997516b99afc1cc21084d7", + "status": "accepted", + "title": "Repository Prefix Architecture" + }, + { + "canonical_path": "adr/railiance-rail-kubernetes-wave-1-boundary/v1/index.html", + "currency": "current", + "id": "RMASTER-ADR-0002", + "last_reviewed": "2026-07-25", + "lifecycle": "active", + "owner": "railiance-master", + "review_due": "2027-01-25", + "revision": "accepted-1", + "revision_path": "adr/railiance-rail-kubernetes-wave-1-boundary/v1/revisions/accepted-1/index.html", + "source_digest": "7e1fc5aedd7294192d8702a22b9f205e5bae20793836fdc48c0c071d10d7ab9d", + "source_path": "docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "source_repo": "railiance-master", + "source_revision": "debbc13b4018f20db0997516b99afc1cc21084d7", + "status": "accepted", + "title": "Wave 1 rail-kubernetes Boundary" + }, + { + "canonical_path": "adr/railiance-rapp-first-wave-selection/v1/index.html", + "currency": "current", + "id": "RMASTER-ADR-0003", + "last_reviewed": "2026-07-25", + "lifecycle": "active", + "owner": "railiance-master", + "review_due": "2027-01-25", + "revision": "accepted-1", + "revision_path": "adr/railiance-rapp-first-wave-selection/v1/revisions/accepted-1/index.html", + "source_digest": "28135e94758b6935518d2e83458c1e607deeabb341879b605eef6529b3168cbc", + "source_path": "docs/adr/ADR-0003-rapp-first-wave-selection.md", + "source_repo": "railiance-master", + "source_revision": "debbc13b4018f20db0997516b99afc1cc21084d7", + "status": "accepted", + "title": "First-Wave rapp Selection" + }, + { + "canonical_path": "adr/railiance-first-wave-reef-rollout/v1/index.html", + "currency": "current", + "id": "RMASTER-ADR-0004", + "last_reviewed": "2026-07-26", + "lifecycle": "active", + "owner": "railiance-master", + "review_due": "2027-01-26", + "revision": "accepted-1", + "revision_path": "adr/railiance-first-wave-reef-rollout/v1/revisions/accepted-1/index.html", + "source_digest": "36ec3aad5082ceff685d66e091c0a24b52abfc65b36595d00dce2b52a7250f4e", + "source_path": "docs/adr/ADR-0004-first-wave-reef-rollout.md", + "source_repo": "railiance-master", + "source_revision": "debbc13b4018f20db0997516b99afc1cc21084d7", + "status": "accepted", + "title": "First-Wave reef Rollout" + }, + { + "canonical_path": "adr/railiance-derived-rail-composition/v1/index.html", + "currency": "current", + "id": "RMASTER-ADR-0005", + "last_reviewed": "2026-07-26", + "lifecycle": "active", + "owner": "railiance-master", + "review_due": "2027-01-26", + "revision": "accepted-1", + "revision_path": "adr/railiance-derived-rail-composition/v1/revisions/accepted-1/index.html", + "source_digest": "e02982ce54691cf1589ac3d04012b9b9282f9eb54ed4b8f2f0544371f9b87f3e", + "source_path": "docs/adr/ADR-0005-derived-rail-composition.md", + "source_repo": "railiance-master", + "source_revision": "debbc13b4018f20db0997516b99afc1cc21084d7", + "status": "accepted", + "title": "Derived Rail Composition" + }, + { + "canonical_path": "adr/railiance-reef-production-admission/v1/index.html", + "currency": "current", + "id": "RMASTER-ADR-0006", + "last_reviewed": "2026-08-15", + "lifecycle": "active", + "owner": "railiance-master", + "review_due": "2027-02-15", + "revision": "accepted-1", + "revision_path": "adr/railiance-reef-production-admission/v1/revisions/accepted-1/index.html", + "source_digest": "d9fbd9d21d86e461334abc24060c39127f2158ba25317b3d3dc326c4f7eaf08c", + "source_path": "docs/adr/ADR-0006-reef-production-admission.md", + "source_repo": "railiance-master", + "source_revision": "debbc13b4018f20db0997516b99afc1cc21084d7", + "status": "accepted", + "title": "Reef Production Admission" + }, + { + "canonical_path": "adr/railiance-rapp-declaration-contract/v1/index.html", + "currency": "current", + "id": "RMASTER-ADR-0007", + "last_reviewed": "2026-08-13", + "lifecycle": "active", + "owner": "railiance-master", + "review_due": "2027-02-13", + "revision": "accepted-1", + "revision_path": "adr/railiance-rapp-declaration-contract/v1/revisions/accepted-1/index.html", + "source_digest": "263431f88ba04d6ab9ab3b6c0d6a2bb08634bfe83dc0719350f0855d399c18b2", + "source_path": "docs/adr/ADR-0007-rapp-declaration-contract.md", + "source_repo": "railiance-master", + "source_revision": "debbc13b4018f20db0997516b99afc1cc21084d7", + "status": "accepted", + "title": "Rapp Declaration Contract" + }, + { + "canonical_path": "adr/railiance-private-by-default-exposure/v1/index.html", + "currency": "current", + "id": "RMASTER-ADR-0008", + "last_reviewed": "2026-08-15", + "lifecycle": "active", + "owner": "railiance-master", + "review_due": "2027-02-15", + "revision": "accepted-1", + "revision_path": "adr/railiance-private-by-default-exposure/v1/revisions/accepted-1/index.html", + "source_digest": "276ea38233413f1e23670bbf57c486abc361b0a275ca67efea7d677103713b32", + "source_path": "docs/adr/ADR-0008-private-by-default-exposure.md", + "source_repo": "railiance-master", + "source_revision": "debbc13b4018f20db0997516b99afc1cc21084d7", + "status": "accepted", + "title": "Private-by-default Exposure" } ], "generated_as_of": "2026-08-18", diff --git a/docs/adr-review/SUMMARY.md b/docs/adr-review/SUMMARY.md new file mode 100644 index 0000000..ecd759b --- /dev/null +++ b/docs/adr-review/SUMMARY.md @@ -0,0 +1,42 @@ +# ADR review ledger summary + +Rows: 125 + +## Inventory dispositions + +- `excluded`: 2 +- `metadata-pending`: 105 +- `published`: 10 +- `unsupported-format`: 8 + +## Proposed dispositions + +- `publish`: 9 +- `unreviewed`: 116 + +## Front-matter `id` collisions + +- `ADR-001`: coulomb-loop/docs/adr/ADR-001-workplan-prefix.md, kaizen-agentic/docs/adr/ADR-001-workplan-convention.md, rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md, the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md +- `ADR-002`: coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md, kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md, the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md +- `ADR-003`: coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md, kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md, the-custodian/canon/architecture/adr-003-materialized-derived-state.md +- `ADR-004`: coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md, kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md, the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md +- `ADR-0001`: coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md, key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md, target-revenue/docs/adr/ADR-0001-stage0-library-stack.md +- `ADR-005`: kaizen-agentic/docs/adr/ADR-005-scheduled-agent-execution.md, the-custodian/canon/architecture/adr-005-cross-repo-workplans-project-repos.md +- `netkingdom-iam-profile`: net-kingdom/canon/standards/iam-profile_v0.2.md, net-kingdom/canon/standards/iam-profile_v0.3.md + +## Bare ADR-NNNN collisions + +- `ADR-0001`: activity-core/docs/adr/adr-001-event-bridge-architecture.md, coulomb-loop/docs/adr/ADR-001-workplan-prefix.md, coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md, evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md, glas-harness/docs/adr/ADR-001-rein-harness-family.md, kaizen-agentic/docs/adr/ADR-001-workplan-convention.md, key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md, markitect-main/docs/adr/ADR-001-client-side-debug-storage.md, policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md, railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md, railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md, rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md, rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md, target-revenue/docs/adr/ADR-0001-stage0-library-stack.md, the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md +- `ADR-0002`: activity-core/docs/adr/adr-002-definition-format.md, coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md, coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md, glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md, kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md, markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md, railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md, railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md, railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md, railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md, rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md, target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md, the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md +- `ADR-0003`: activity-core/docs/adr/adr-003-rule-instruction-model.md, coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md, coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md, glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md, kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md, railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md, railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md, railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md, railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md, rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md, the-custodian/canon/architecture/adr-003-materialized-derived-state.md +- `ADR-0004`: activity-core/docs/adr/adr-004-producer-trust-boundary.md, coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md, coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md, glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md, kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md, railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md, railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md, railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md, rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md, the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md +- `ADR-0005`: activity-core/docs/adr/adr-005-ops-runs-vs-dev-work-records.md, kaizen-agentic/docs/adr/ADR-005-scheduled-agent-execution.md, railiance-infra/docs/adr/ADR-005-k3s-api-tunnel-only.md, railiance-master/docs/adr/ADR-0005-derived-rail-composition.md, the-custodian/canon/architecture/adr-005-cross-repo-workplans-project-repos.md +- `ADR-0006`: kaizen-agentic/docs/adr/ADR-006-customer-engagement-convention.md, net-kingdom/docs/adr/ADR-0006-recursive-multi-tenant-identity-authorization.md, railiance-master/docs/adr/ADR-0006-reef-production-admission.md, the-custodian/canon/architecture/adr-006-canon-federation-concept-ownership.md +- `ADR-0007`: kaizen-agentic/docs/adr/ADR-007-forward-deployed-engagement-convention.md, net-kingdom/docs/adr/ADR-0007-security-orchestration-boundary.md, railiance-master/docs/adr/ADR-0007-rapp-declaration-contract.md, the-custodian/canon/architecture/adr-007-workplan-identity-and-repo-worker-topology.md +- `ADR-0008`: net-kingdom/docs/adr/ADR-0008-object-storage-sts-credential-vending.md, railiance-master/docs/adr/ADR-0008-private-by-default-exposure.md, the-custodian/canon/architecture/adr-008-multi-tenancy-model.md +- `ADR-0010`: net-kingdom/docs/adr/ADR-0010-orchestration-vs-dependency-self-coherent-intent.md, the-custodian/canon/architecture/adr-010-hub-authority-and-local-cache-model.md +- `ADR-0011`: net-kingdom/docs/adr/ADR-0011-iam-profile-ownership-and-version-governance.md, the-custodian/canon/architecture/adr-011-federated-namespaces-and-reconciliation-limits.md + +## Missing files + +None. diff --git a/docs/adr-review/ledger.json b/docs/adr-review/ledger.json new file mode 100644 index 0000000..2f0be8a --- /dev/null +++ b/docs/adr-review/ledger.json @@ -0,0 +1,4742 @@ +{ + "protocol": "docs/adr-review/protocol.md", + "rows": [ + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ACT-ADR-001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Activity-Core as Coulomb Org Event Bridge", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/adr-001-event-bridge-architecture.md", + "source_repo": "activity-core", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ACT-ADR-002", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Markdown-as-Definition Format for Event Types and ActivityDefinitions", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/adr-002-definition-format.md", + "source_repo": "activity-core", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ACT-ADR-003", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Rule vs. Instruction Model and Expression DSL", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/adr-003-rule-instruction-model.md", + "source_repo": "activity-core", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ACT-ADR-004", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "The Producer Trust Boundary \u2014 Guardrails and Error-Correction for Untrusted Output", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/adr-004-producer-trust-boundary.md", + "source_repo": "activity-core", + "successor": "" + }, + { + "bare_adr": "ADR-0005", + "bare_adr_collisions": [ + "kaizen-agentic/docs/adr/ADR-005-scheduled-agent-execution.md", + "railiance-infra/docs/adr/ADR-005-k3s-api-tunnel-only.md", + "railiance-master/docs/adr/ADR-0005-derived-rail-composition.md", + "the-custodian/canon/architecture/adr-005-cross-repo-workplans-project-repos.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ACT-ADR-005", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Ops runs vs development work records \u2014 claim queue and plane split", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/adr-005-ops-runs-vs-dev-work-records.md", + "source_repo": "activity-core", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0001-content-addressed-storage.md", + "source_repo": "artifact-store", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0002-event-log-source-of-truth.md", + "source_repo": "artifact-store", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0003-manifest-canonical-cbor.md", + "source_repo": "artifact-store", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0004-control-plane-data-plane-contract.md", + "source_repo": "artifact-store", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0005-v1-tech-stack.md", + "source_repo": "artifact-store", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0006-oci-compatibility-reachable.md", + "source_repo": "artifact-store", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "excluded", + "inventory_reason": "Directory index, not an architecture decision record.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/README.md", + "source_repo": "artifact-store", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/001-no-listall-method.md", + "source_repo": "binect-js", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Workplan ID Prefix Convention", + "updated": "", + "version": "" + }, + "id_collisions": [ + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-001-workplan-prefix.md", + "source_repo": "coulomb-loop", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-002", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Customer\u2013Supplier Engagement Boundary", + "updated": "", + "version": "" + }, + "id_collisions": [ + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-002-customer-supplier-boundary.md", + "source_repo": "coulomb-loop", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-003", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Loop Cadence Ramp Policy", + "updated": "", + "version": "" + }, + "id_collisions": [ + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-003-cadence-ramp-policy.md", + "source_repo": "coulomb-loop", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-004", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Repo Rotation on Diminishing Returns", + "updated": "", + "version": "" + }, + "id_collisions": [ + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "source_repo": "coulomb-loop", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-0001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "NetKingdom identity for coulomb.social", + "updated": "", + "version": "" + }, + "id_collisions": [ + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0001-netkingdom-identity.md", + "source_repo": "coulomb-social", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "source_repo": "coulomb-social", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-0003", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Page-centric markdown SoR, authoring, and live derived content", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0003-page-centric-markdown-sor.md", + "source_repo": "coulomb-social", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-0004", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Thin git content plane, PageOps, and supported upgrades", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "source_repo": "coulomb-social", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0001-reference-ui-surface.md", + "source_repo": "evidence-binder", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0001-implementation-language-and-skeleton.md", + "source_repo": "flex-auth", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0002-rego-in-markdown-policy-format.md", + "source_repo": "flex-auth", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0003-topaz-aligned-mvp.md", + "source_repo": "flex-auth", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/0004-inbound-caller-authentication.md", + "source_repo": "flex-auth", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-001-rein-harness-family.md", + "source_repo": "glas-harness", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "source_repo": "glas-harness", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "source_repo": "glas-harness", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-004-composable-reins-stay-deferred.md", + "source_repo": "glas-harness", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Workplan Convention", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-001-workplan-convention.md", + "source_repo": "kaizen-agentic", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-002", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Project Memory Convention", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-002-project-memory-convention.md", + "source_repo": "kaizen-agentic", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-003", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Protocols Artifact Convention", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-003-protocols-artifact-convention.md", + "source_repo": "kaizen-agentic", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-004", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Project Metrics Convention", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-004-project-metrics-convention.md", + "source_repo": "kaizen-agentic", + "successor": "" + }, + { + "bare_adr": "ADR-0005", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-005-ops-runs-vs-dev-work-records.md", + "railiance-infra/docs/adr/ADR-005-k3s-api-tunnel-only.md", + "railiance-master/docs/adr/ADR-0005-derived-rail-composition.md", + "the-custodian/canon/architecture/adr-005-cross-repo-workplans-project-repos.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-005", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Scheduled Agent Execution Convention", + "updated": "", + "version": "" + }, + "id_collisions": [ + "the-custodian/canon/architecture/adr-005-cross-repo-workplans-project-repos.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-005-scheduled-agent-execution.md", + "source_repo": "kaizen-agentic", + "successor": "" + }, + { + "bare_adr": "ADR-0006", + "bare_adr_collisions": [ + "net-kingdom/docs/adr/ADR-0006-recursive-multi-tenant-identity-authorization.md", + "railiance-master/docs/adr/ADR-0006-reef-production-admission.md", + "the-custodian/canon/architecture/adr-006-canon-federation-concept-ownership.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-006-customer-engagement-convention.md", + "source_repo": "kaizen-agentic", + "successor": "" + }, + { + "bare_adr": "ADR-0007", + "bare_adr_collisions": [ + "net-kingdom/docs/adr/ADR-0007-security-orchestration-boundary.md", + "railiance-master/docs/adr/ADR-0007-rapp-declaration-contract.md", + "the-custodian/canon/architecture/adr-007-workplan-identity-and-repo-worker-topology.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-007-forward-deployed-engagement-convention.md", + "source_repo": "kaizen-agentic", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-0001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Implementation language for KeyCape: Go", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0001-choose-go-for-keycape.md", + "source_repo": "key-cape", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-001-client-side-debug-storage.md", + "source_repo": "markitect-main", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-002-robustness-principle-for-production-use.md", + "source_repo": "markitect-main", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/credential-management_v0.2.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "netkingdom-iam-profile", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "NetKingdom IAM Profile v0.2", + "updated": "2026-05-22", + "version": "0.2" + }, + "id_collisions": [ + "net-kingdom/canon/standards/iam-profile_v0.3.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/iam-profile_v0.2.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "netkingdom-iam-profile", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "NetKingdom IAM Profile v0.3", + "updated": "2026-07-23", + "version": "0.3" + }, + "id_collisions": [ + "net-kingdom/canon/standards/iam-profile_v0.2.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/iam-profile_v0.3.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "netkingdom-playbook-capability-contract", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "NetKingdom Playbook Capability Contract v0.1", + "updated": "2026-05-22", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/playbook-capability-contract_v0.1.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "netkingdom-tenancy-posture", + "last_reviewed": "2026-08-17", + "owner": "net-kingdom", + "review_interval": "6m", + "revision": "draft-8", + "status": "proposed", + "title": "NetKingdom Tenancy Posture v0.1", + "updated": "2026-08-17", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/tenancy-posture_v0.1.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "netkingdom-tenant-engine-boundary-contract", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "NetKingdom Tenant Engine Boundary Contract v0.1", + "updated": "2026-07-23", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/tenant-engine-boundary-contract_v0.1.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "netkingdom-user-engine-boundary-contract", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "NetKingdom User Engine Boundary Contract v0.1", + "updated": "2026-05-22", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/user-engine-boundary-contract_v0.1.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0006", + "bare_adr_collisions": [ + "kaizen-agentic/docs/adr/ADR-006-customer-engagement-convention.md", + "railiance-master/docs/adr/ADR-0006-reef-production-admission.md", + "the-custodian/canon/architecture/adr-006-canon-federation-concept-ownership.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0006-recursive-multi-tenant-identity-authorization.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0007", + "bare_adr_collisions": [ + "kaizen-agentic/docs/adr/ADR-007-forward-deployed-engagement-convention.md", + "railiance-master/docs/adr/ADR-0007-rapp-declaration-contract.md", + "the-custodian/canon/architecture/adr-007-workplan-identity-and-repo-worker-topology.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0007-security-orchestration-boundary.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0008", + "bare_adr_collisions": [ + "railiance-master/docs/adr/ADR-0008-private-by-default-exposure.md", + "the-custodian/canon/architecture/adr-008-multi-tenancy-model.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0008-object-storage-sts-credential-vending.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0010", + "bare_adr_collisions": [ + "the-custodian/canon/architecture/adr-010-hub-authority-and-local-cache-model.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0010-orchestration-vs-dependency-self-coherent-intent.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0011", + "bare_adr_collisions": [ + "the-custodian/canon/architecture/adr-011-federated-namespaces-and-reconciliation-limits.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0011-iam-profile-ownership-and-version-governance.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0012", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0012-playbook-capability-contract-ownership.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0013", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0013-tenant-onboarding-grouping-taxonomy.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0014", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0014-tenant-capability-roles-and-tenant-engine-ownership.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0015", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0015-netkingdom-railiance-workload-packaging-and-relational-platform.md", + "source_repo": "net-kingdom", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "policy-nexus-adr-0001", + "last_reviewed": "2026-08-18", + "owner": "the-custodian", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "Policy addressing and permanence", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. This repo's addressing contract.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0001-addressing-and-permanence.md", + "source_repo": "policy-nexus", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "source_repo": "railiance-hosts", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "source_repo": "railiance-hosts", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "source_repo": "railiance-hosts", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "source_repo": "railiance-infra", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "source_repo": "railiance-infra", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "source_repo": "railiance-infra", + "successor": "" + }, + { + "bare_adr": "ADR-0005", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-005-ops-runs-vs-dev-work-records.md", + "kaizen-agentic/docs/adr/ADR-005-scheduled-agent-execution.md", + "railiance-master/docs/adr/ADR-0005-derived-rail-composition.md", + "the-custodian/canon/architecture/adr-005-cross-repo-workplans-project-repos.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-005-k3s-api-tunnel-only.md", + "source_repo": "railiance-infra", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "RMASTER-ADR-0001", + "last_reviewed": "2026-07-25", + "owner": "railiance-master", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "Repository Prefix Architecture", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. Publication-ready front-matter.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0001-repository-prefix-architecture.md", + "source_repo": "railiance-master", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "RMASTER-ADR-0002", + "last_reviewed": "2026-07-25", + "owner": "railiance-master", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "Wave 1 rail-kubernetes Boundary", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. Publication-ready front-matter.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "source_repo": "railiance-master", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "RMASTER-ADR-0003", + "last_reviewed": "2026-07-25", + "owner": "railiance-master", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "First-Wave rapp Selection", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. Publication-ready front-matter.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0003-rapp-first-wave-selection.md", + "source_repo": "railiance-master", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "RMASTER-ADR-0004", + "last_reviewed": "2026-07-26", + "owner": "railiance-master", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "First-Wave reef Rollout", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. Publication-ready front-matter.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0004-first-wave-reef-rollout.md", + "source_repo": "railiance-master", + "successor": "" + }, + { + "bare_adr": "ADR-0005", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-005-ops-runs-vs-dev-work-records.md", + "kaizen-agentic/docs/adr/ADR-005-scheduled-agent-execution.md", + "railiance-infra/docs/adr/ADR-005-k3s-api-tunnel-only.md", + "the-custodian/canon/architecture/adr-005-cross-repo-workplans-project-repos.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "RMASTER-ADR-0005", + "last_reviewed": "2026-07-26", + "owner": "railiance-master", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "Derived Rail Composition", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. Publication-ready front-matter.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0005-derived-rail-composition.md", + "source_repo": "railiance-master", + "successor": "" + }, + { + "bare_adr": "ADR-0006", + "bare_adr_collisions": [ + "kaizen-agentic/docs/adr/ADR-006-customer-engagement-convention.md", + "net-kingdom/docs/adr/ADR-0006-recursive-multi-tenant-identity-authorization.md", + "the-custodian/canon/architecture/adr-006-canon-federation-concept-ownership.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "RMASTER-ADR-0006", + "last_reviewed": "2026-08-15", + "owner": "railiance-master", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "Reef Production Admission", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. Publication-ready front-matter.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0006-reef-production-admission.md", + "source_repo": "railiance-master", + "successor": "" + }, + { + "bare_adr": "ADR-0007", + "bare_adr_collisions": [ + "kaizen-agentic/docs/adr/ADR-007-forward-deployed-engagement-convention.md", + "net-kingdom/docs/adr/ADR-0007-security-orchestration-boundary.md", + "the-custodian/canon/architecture/adr-007-workplan-identity-and-repo-worker-topology.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "RMASTER-ADR-0007", + "last_reviewed": "2026-08-13", + "owner": "railiance-master", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "Rapp Declaration Contract", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. Publication-ready front-matter.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0007-rapp-declaration-contract.md", + "source_repo": "railiance-master", + "successor": "" + }, + { + "bare_adr": "ADR-0008", + "bare_adr_collisions": [ + "net-kingdom/docs/adr/ADR-0008-object-storage-sts-credential-vending.md", + "the-custodian/canon/architecture/adr-008-multi-tenancy-model.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "RMASTER-ADR-0008", + "last_reviewed": "2026-08-15", + "owner": "railiance-master", + "review_interval": "6m", + "revision": "accepted-1", + "status": "accepted", + "title": "Private-by-default Exposure", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "published", + "inventory_reason": "Published through an explicit publication.json document entry.", + "missing_fields": [], + "notes": "First publish set. Publication-ready front-matter.", + "proposed_disposition": "publish", + "review_notes": "", + "source_path": "docs/adr/ADR-0008-private-by-default-exposure.md", + "source_repo": "railiance-master", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "2026-08-17", + "owner": "railiance-platform", + "review_interval": "12m", + "revision": "1.0", + "status": "accepted", + "title": "ADR-0001 \u2014 S3 owns platform services, not the substrate beneath them", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0001-s3-platform-service-boundary.md", + "source_repo": "railiance-platform", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "2026-08-17", + "owner": "railiance-platform", + "review_interval": "6m", + "revision": "1.0", + "status": "proposed", + "title": "ADR-0002 \u2014 S3 owns the placement rule; the package repo owns the number", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0002-placement-policy-ownership.md", + "source_repo": "railiance-platform", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "2026-08-17", + "owner": "railiance-platform", + "review_interval": "12m", + "revision": "1.0", + "status": "accepted", + "title": "ADR-0003 \u2014 Decisions that bind others live in docs/adr, not only in the State Hub", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "source_repo": "railiance-platform", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "2026-08-17", + "owner": "railiance-platform", + "review_interval": "12m", + "revision": "1.0", + "status": "accepted", + "title": "ADR convention for railiance-platform", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "excluded", + "inventory_reason": "Directory index, not an architecture decision record.", + "missing_fields": [ + "id" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/README.md", + "source_repo": "railiance-platform", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "source_repo": "rapp-postgres", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0002-data-retention-and-erasure.md", + "source_repo": "rapp-postgres", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "the-custodian/canon/architecture/adr-003-materialized-derived-state.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0003-e3-row-level-security-contract.md", + "source_repo": "rapp-postgres", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "the-custodian/canon/architecture/adr-004-connectivity-first-network-posture.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0004-platform-pg-cell-ceiling.md", + "source_repo": "rapp-postgres", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Single shared agent harness; instances are declarative state in consuming repos", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-001-agent-harness-architecture.md", + "source_repo": "rein-aharness", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "the-custodian/canon/architecture/adr-001-workplans-as-repo-artefacts.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-0001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Stage 0 library stack: schemas, pure fold, and validators", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0001-stage0-library-stack.md", + "source_repo": "target-revenue", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "the-custodian/canon/architecture/adr-002-custodian-agent-runtime-design.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-0002", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Hosted Trust Service stack: storage, auth, and deployment target", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "docs/adr/ADR-0002-hosted-trust-service-stack.md", + "source_repo": "target-revenue", + "successor": "" + }, + { + "bare_adr": "ADR-0001", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-001-event-bridge-architecture.md", + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "coulomb-social/docs/adr/ADR-0001-netkingdom-identity.md", + "evidence-binder/docs/adr/ADR-0001-reference-ui-surface.md", + "glas-harness/docs/adr/ADR-001-rein-harness-family.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "key-cape/docs/adr/ADR-0001-choose-go-for-keycape.md", + "markitect-main/docs/adr/ADR-001-client-side-debug-storage.md", + "policy-nexus/docs/adr/ADR-0001-addressing-and-permanence.md", + "railiance-master/docs/adr/ADR-0001-repository-prefix-architecture.md", + "railiance-platform/docs/adr/ADR-0001-s3-platform-service-boundary.md", + "rapp-postgres/docs/adr/ADR-0001-consumer-boundary-and-tenant-isolation.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md", + "target-revenue/docs/adr/ADR-0001-stage0-library-stack.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Workplans and Work Items Are Repository Artefacts", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-001-workplan-prefix.md", + "kaizen-agentic/docs/adr/ADR-001-workplan-convention.md", + "rein-aharness/docs/adr/ADR-001-agent-harness-architecture.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-001-workplans-as-repo-artefacts.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "ADR-0002", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-002-definition-format.md", + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "coulomb-social/docs/adr/ADR-0002-space-content-forgejo-markdown.md", + "glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md", + "markitect-main/docs/adr/ADR-002-robustness-principle-for-production-use.md", + "railiance-hosts/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-infra/docs/adr/ADR-002-repo-boundary-hosts-vs-bootstrap.md", + "railiance-master/docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "railiance-platform/docs/adr/ADR-0002-placement-policy-ownership.md", + "rapp-postgres/docs/adr/ADR-0002-data-retention-and-erasure.md", + "target-revenue/docs/adr/ADR-0002-hosted-trust-service-stack.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-002", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Custodian Agent Runtime \u2014 v0.1 Bootstrap Design", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-002-customer-supplier-boundary.md", + "kaizen-agentic/docs/adr/ADR-002-project-memory-convention.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-002-custodian-agent-runtime-design.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "ADR-0003", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-003-rule-instruction-model.md", + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "coulomb-social/docs/adr/ADR-0003-page-centric-markdown-sor.md", + "glas-harness/docs/adr/ADR-003-scheduling-and-blueprint-sourcing-stay-rein-local.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md", + "railiance-hosts/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-infra/docs/adr/ADR-003-railiance-5repo-stack-architecture.md", + "railiance-master/docs/adr/ADR-0003-rapp-first-wave-selection.md", + "railiance-platform/docs/adr/ADR-0003-decisions-live-in-the-repo.md", + "rapp-postgres/docs/adr/ADR-0003-e3-row-level-security-contract.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-003", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Materialized Derived State with Fingerprint Invalidation for Repo-Sourced Data", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-003-cadence-ramp-policy.md", + "kaizen-agentic/docs/adr/ADR-003-protocols-artifact-convention.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-003-materialized-derived-state.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "ADR-0004", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-004-producer-trust-boundary.md", + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "coulomb-social/docs/adr/ADR-0004-content-plane-thin-git-upgrades.md", + "glas-harness/docs/adr/ADR-004-composable-reins-stay-deferred.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md", + "railiance-hosts/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-infra/docs/adr/ADR-004-forgejo-in-cluster-actions-runner.md", + "railiance-master/docs/adr/ADR-0004-first-wave-reef-rollout.md", + "rapp-postgres/docs/adr/ADR-0004-platform-pg-cell-ceiling.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-004", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Connectivity-First Network Posture for Custodian Infrastructure", + "updated": "", + "version": "" + }, + "id_collisions": [ + "coulomb-loop/docs/adr/ADR-004-repo-rotation-on-diminishing-returns.md", + "kaizen-agentic/docs/adr/ADR-004-project-metrics-convention.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-004-connectivity-first-network-posture.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "ADR-0005", + "bare_adr_collisions": [ + "activity-core/docs/adr/adr-005-ops-runs-vs-dev-work-records.md", + "kaizen-agentic/docs/adr/ADR-005-scheduled-agent-execution.md", + "railiance-infra/docs/adr/ADR-005-k3s-api-tunnel-only.md", + "railiance-master/docs/adr/ADR-0005-derived-rail-composition.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-005", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Cross-Repo Workplans Live in Dedicated Project Repos", + "updated": "", + "version": "" + }, + "id_collisions": [ + "kaizen-agentic/docs/adr/ADR-005-scheduled-agent-execution.md" + ], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-005-cross-repo-workplans-project-repos.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "ADR-0006", + "bare_adr_collisions": [ + "kaizen-agentic/docs/adr/ADR-006-customer-engagement-convention.md", + "net-kingdom/docs/adr/ADR-0006-recursive-multi-tenant-identity-authorization.md", + "railiance-master/docs/adr/ADR-0006-reef-production-admission.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-006", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Canon Federation and Concept Ownership Across InfoTech and Commerce", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-006-canon-federation-concept-ownership.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "ADR-0007", + "bare_adr_collisions": [ + "kaizen-agentic/docs/adr/ADR-007-forward-deployed-engagement-convention.md", + "net-kingdom/docs/adr/ADR-0007-security-orchestration-boundary.md", + "railiance-master/docs/adr/ADR-0007-rapp-declaration-contract.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-007", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Workplan Identity Uniqueness, Single Registrar, and Repo Worker Topology", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-007-workplan-identity-and-repo-worker-topology.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "ADR-0008", + "bare_adr_collisions": [ + "net-kingdom/docs/adr/ADR-0008-object-storage-sts-credential-vending.md", + "railiance-master/docs/adr/ADR-0008-private-by-default-exposure.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-008", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "superseded", + "title": "Multi-Tenancy Framework \u2014 relocated to NetKingdom", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "Relocated to net-kingdom Tenancy Posture. Duplicate-claim candidate (kind 6).", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-008-multi-tenancy-model.md", + "source_repo": "the-custodian", + "successor": "netkingdom-tenancy-posture" + }, + { + "bare_adr": "ADR-0010", + "bare_adr_collisions": [ + "net-kingdom/docs/adr/ADR-0010-orchestration-vs-dependency-self-coherent-intent.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-010", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "proposed", + "title": "Hub Authority, Local Cache, and the Two Kinds of Hub Data", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-010-hub-authority-and-local-cache-model.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "ADR-0011", + "bare_adr_collisions": [ + "net-kingdom/docs/adr/ADR-0011-iam-profile-ownership-and-version-governance.md" + ], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "ADR-011", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "draft-2", + "status": "proposed", + "title": "Federated Namespaces: Four Planes, Declared Posture, and the Limits of Reconciliation", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/architecture/adr-011-federated-namespaces-and-reconciliation-limits.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "CUST-BSP-2026-000001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "draft", + "title": "Bootstrap Protocol v0.1", + "updated": "2026-07-08", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/constitution/bootstrap-protocol_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "CUST-CONST-2026-000001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "Custodian Constitution v0.1", + "updated": "2026-02-24", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/constitution/custodian_constitution_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "canon-autonomy-lanes", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "Autonomy Lanes (Fleet) v0.1", + "updated": "2026-07-20", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/autonomy-lanes_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "accepted", + "title": "Business-App Service Contract", + "updated": "", + "version": "v0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/business-app-service-contract_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "br-YYYY-MM-DD--org--repo--slug", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "draft", + "title": "Short description of the bug", + "updated": "YYYY-MM-DD", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/contrib-templates/br-template.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "EP-DOMAIN-NNN", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "draft", + "title": "Short description of the extension point", + "updated": "YYYY-MM-DD", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/contrib-templates/ep-template.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "fr-YYYY-MM-DD--org--repo--slug", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "draft", + "title": "Short description of the requested feature", + "updated": "YYYY-MM-DD", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/contrib-templates/fr-template.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "upr-YYYY-MM-DD--org--repo--slug", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "draft", + "title": "Short description of the upstream PR", + "updated": "YYYY-MM-DD", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/contrib-templates/upr-template.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "canon-contrib-convention", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "Contribution Convention v0.1", + "updated": "", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/contribution-convention_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "canon-coulombcore-production-freeze", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "CoulombCore Production Freeze v0.1", + "updated": "", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/coulombcore-production-freeze_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "Draft Standard", + "title": "Credential Management Standard", + "updated": "", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/credential-management_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/federated-organization-standard_v1.0.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "canon-iam-profile", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "superseded", + "title": "IAM Profile v0.1", + "updated": "2026-05-22", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/iam-profile_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/orthogonal-architecture-schema_v1.0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/orthogonal-architecture_v1.0.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/privileged-execution-control-schema-cicd_v0.2.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/privileged-execution-control-schema-kubernetes-rbac_v0.2.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/privileged-execution-control-schema-os-sudo_v0.2.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/privileged-execution-control-schema_v0.2.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "unsupported-format", + "inventory_reason": "Inventoried governing source is not Markdown and has no renderer yet.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/privileged-execution-control_v0.2", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "canon-project-repository-flavor", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "Project Repository Flavor (prj-) v0.1", + "updated": "2026-08-09", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/project-repository-flavor_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "canon-repo-classification", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "Repo Classification Standard", + "updated": "", + "version": "1.0" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/repo-classification-standard_v1.0.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "unsupported-format", + "inventory_reason": "Inventoried governing source is not Markdown and has no renderer yet.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/repo-classification.allowed.yaml", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "unsupported-format", + "inventory_reason": "Inventoried governing source is not Markdown and has no renderer yet.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/repo-classification.exclusions.yaml", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "SBOM-CONV-001", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "SBOM Convention v0.1 \u2014 Dependency Tracking & Licence Governance", + "updated": "2026-03-12", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/sbom-convention_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "unsupported-format", + "inventory_reason": "Inventoried governing source is not Markdown and has no renderer yet.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/schemas/work-records/decision.schema.json", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "unsupported-format", + "inventory_reason": "Inventoried governing source is not Markdown and has no renderer yet.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/schemas/work-records/engagement.schema.json", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "unsupported-format", + "inventory_reason": "Inventoried governing source is not Markdown and has no renderer yet.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/schemas/work-records/intake.schema.json", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "unsupported-format", + "inventory_reason": "Inventoried governing source is not Markdown and has no renderer yet.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/schemas/work-records/spine.schema.json", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "", + "title": "", + "updated": "", + "version": "" + }, + "id_collisions": [], + "inventory_disposition": "unsupported-format", + "inventory_reason": "Inventoried governing source is not Markdown and has no renderer yet.", + "missing_fields": [ + "id", + "title", + "status", + "owner", + "revision|version", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/work-record-types.yaml", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "canon-work-record-types", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "Work Record Types & Identity (Fleet) v0.1", + "updated": "2026-07-22", + "version": "0.1" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/work-record-types_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + }, + { + "bare_adr": "", + "bare_adr_collisions": [], + "conflict_kinds": [], + "file_present": true, + "frontmatter": { + "id": "canon-workplan-terminology-fleet", + "last_reviewed": "", + "owner": "", + "review_interval": "", + "revision": "", + "status": "active", + "title": "Workplan Terminology (Fleet) v0.1", + "updated": "2026-07-20", + "version": "0.2" + }, + "id_collisions": [], + "inventory_disposition": "metadata-pending", + "inventory_reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "missing_fields": [ + "owner", + "review" + ], + "notes": "", + "proposed_disposition": "unreviewed", + "review_notes": "", + "source_path": "canon/standards/workplan-terminology-fleet_v0.1.md", + "source_repo": "the-custodian", + "successor": "" + } + ], + "schema_version": 1, + "source_inventory": "source-inventory.json" +} diff --git a/docs/adr-review/protocol.md b/docs/adr-review/protocol.md new file mode 100644 index 0000000..93b0a84 --- /dev/null +++ b/docs/adr-review/protocol.md @@ -0,0 +1,83 @@ +# ADR review protocol + +Working protocol for POLICY-NEXUS-WP-0003. The ledger in this directory +is a work artefact. It is not published on `policy.coulomb.social`. + +Input is `source-inventory.json` only. Do not rediscover by glob. + +Refresh the ledger with: + +```sh +python3 tools/adr_review_ledger.py +``` + +## Authority + +- The **owning repo** decides whether an ADR still governs and writes + the cleanup. +- **the-custodian** decides estate-level canon. +- **This repo** records the review and publishes. It does not edit + another repo's ADR body. + +## Review dispositions + +Every inventoried source that is not already `published` gets exactly +one proposed disposition. `unreviewed` means T02 has mapped the file +and T03/T04 have not yet ruled. + +| Disposition | Meaning | Publication | +| --- | --- | --- | +| `unreviewed` | Facts recorded; relevance not ruled. | no | +| `publish` | Still governs. Front-matter complete. | `publication.json` entry | +| `superseded` | Replaced. Point at the successor. | only if a public URL exists or the successor needs the pointer live | +| `withdrawn` | No longer governs, no successor. | same as superseded | +| `local` | Useful in its repo, not governing for anyone else. | inventory `excluded` | +| `conflict` | Contradicts another ADR or the estate arc42; owner has not ruled. | no | + +## Conflict kinds + +1. **Identifier collision** — same publication `id`, or the same bare + `ADR-NNNN` in two repos. Publication ids must be globally unique. +2. **Status lie** — body says superseded/relocated, front-matter still + `accepted` (or the reverse). +3. **Missing successor** — status `superseded` with no target. +4. **Contradicting decisions** — two accepted ADRs that cannot both be + true. +5. **Architecture miss** — an accepted ADR that the matching first-wave + arc42 does not mention in chapter 9. Waits on WP-0002-T04/T05. +6. **Duplicate claim** — two documents claiming to be the current + decision on the same question. + +## Ledger row + +`ledger.json` holds one object per inventory source. + +| Field | Set by | Meaning | +| --- | --- | --- | +| `source_repo`, `source_path` | inventory | Identity | +| `inventory_disposition`, `inventory_reason` | inventory | Current source-inventory state | +| `file_present` | T02 | Source file readable in the sibling checkout | +| `frontmatter` | T02 | Parsed fields used by the builder | +| `missing_fields` | T02 | Publication-contract gaps | +| `bare_adr` | T02 | `ADR-NNNN` extracted from id or filename, if any | +| `id_collisions` | T02 | Other sources sharing the same front-matter `id` | +| `bare_adr_collisions` | T02 | Other sources sharing the same bare `ADR-NNNN` | +| `notes` | T02 | Known specials | +| `proposed_disposition` | T03/T04 | Review ruling; `unreviewed` until then | +| `conflict_kinds` | T03 | List of kind numbers, or empty | +| `successor` | T03/T04 | Target when superseded | +| `review_notes` | T03/T04 | One-sentence contradiction or rationale | + +T02 fills facts and leaves `proposed_disposition` as `unreviewed` +except for the first publish set named in WP-0003 (this repo's +ADR-0001 and the eight railiance-master ADRs), which start as +`publish` because they are already relevance-obvious. + +## First publish set + +- `policy-nexus` `docs/adr/ADR-0001-addressing-and-permanence.md` +- `railiance-master` `docs/adr/ADR-0001` through `ADR-0008` + +Known duplicate-claim candidate: custodian +`canon/architecture/adr-008-multi-tenancy-model.md` vs published +Tenancy Posture. diff --git a/docs/adr/ADR-0001-addressing-and-permanence.md b/docs/adr/ADR-0001-addressing-and-permanence.md index bae45d2..db5bf41 100644 --- a/docs/adr/ADR-0001-addressing-and-permanence.md +++ b/docs/adr/ADR-0001-addressing-and-permanence.md @@ -1,3 +1,13 @@ +--- +id: policy-nexus-adr-0001 +title: "Policy addressing and permanence" +status: accepted +owner: the-custodian +revision: "accepted-1" +last_reviewed: "2026-08-18" +review_interval: 6m +--- + # ADR-0001 — policy addressing and permanence - Status: accepted @@ -13,6 +23,10 @@ A document has one stable current address and immutable revision addresses: ////revisions// ``` +`` is one of `standards`, `architecture`, `constitution`, or `adr`. +`` is a kebab-case slug that is unique on the site. The owner-facing +rules live in `docs/publication-contract.md`. + The publication manifest records both. Existing public paths become permanent redirect aliases; the first is `/tenancy-posture.html`. No URL is derived from a checkout path, branch name, build number or hosting implementation. diff --git a/docs/architecture/policy-nexus_v0.1.md b/docs/architecture/policy-nexus_v0.1.md new file mode 100644 index 0000000..beb8b8c --- /dev/null +++ b/docs/architecture/policy-nexus_v0.1.md @@ -0,0 +1,161 @@ +--- +id: policy-nexus-architecture +title: "Policy Nexus architecture" +status: proposed +owner: the-custodian +revision: "draft-1" +version: "0.1" +last_reviewed: "2026-08-18" +review_interval: 6m +--- + +# Policy Nexus — Software Architecture Documentation (arc42) + +## About this document + +This document follows the **arc42** template for the publication surface +at `policy.coulomb.social`. It is the first-wave architecture document +this repository is allowed to author. Other first-wave systems are +written in their owning repos. + +--- + +## 1. Introduction and Goals + +Policy Nexus exists so estate canon and architecture decisions have a +permanent, current, addressable public home. Before this system, +governing documents were served from disposable artifact URLs. + +### 1.1 Requirements Overview + +- Publish canon (`standards`, `architecture`, `constitution`) and + per-repo ADRs from the repositories that own them. +- Keep one stable current URL and one immutable revision URL per + document (ADR-0001). +- Fail closed when a source disappears or an immutable revision would + change. +- Show status, owner, revision, and review currency on every page. + +### 1.2 Quality Goals + +1. Permanence of published addresses. +2. Honesty about staleness. +3. Source-of-truth stays upstream — this system never writes back. +4. Builds are deterministic and stdlib-only. + +### 1.3 Stakeholders + +| Role | Concern | +| --- | --- | +| the-custodian | What counts as canon; ratification. | +| Source-repo owners | Their document is published accurately. | +| railiance-platform / rapp-policy-nexus | Substrate, Helm, promotion. | +| Readers inside and outside the estate | A URL that still resolves. | + +--- + +## 2. Architecture Constraints + +N/A for this stub — first-wave complete will record stdlib-only +rendering, single-node rail availability, and the no-CMS rule. + +--- + +## 3. System Scope and Context + +**In:** addressing, rendering, currency, the public static site. +**Out:** ratification, legal advice, regulatory intake (`risk-nexus`), +editing surfaces, search. + +### 3.1 Business Context + +Source owners publish governing documents. This system makes those +documents findable and durable. It does not decide what is current +canon. + +### 3.2 Technical Context + +- Inputs: `publication.json`, sibling or fetched git checkouts, + `source-inventory.json`. +- Outputs: static HTML, `publication-manifest.json`, an OCI image. +- Neighbours: owning source repos, Forgejo Actions, `rapp-policy-nexus`, + `railiance-apps`, the reef Traefik/cert-manager substrate. + +--- + +## 4. Solution Strategy + +N/A for this stub — pull-on-schedule ingestion, explicit manifest +entries, stdlib renderer. To be written as first-wave complete. + +--- + +## 5. Building Block View + +### 5.1 Level 1 – System/Top-Level + +N/A for this stub — builder, inventory auditor, currency checker, +OCI artifact, Helm package in `rapp-policy-nexus`. + +### 5.2 Level 2 – Key Components + +N/A for this stub. + +### 5.3 Level 3 – Internal Structure (as needed) + +N/A for this stub. + +--- + +## 6. Runtime View + +N/A — the published site is static files. Daily source-pull and +promotion are operational scenarios for a later revision. + +--- + +## 7. Deployment View + +N/A for this stub — see WP-0001-T04. Single-node restart recovery, not +a high-availability SLA. + +--- + +## 8. Cross-Cutting Concepts + +N/A for this stub. + +--- + +## 9. Architecture Decisions + +| Id | Status | Decision | Source | +| --- | --- | --- | --- | +| `policy-nexus-adr-0001` | accepted | Stable current address + immutable revision address; no deletion | `docs/adr/ADR-0001-addressing-and-permanence.md` | + +Later `publish` ADRs from WP-0003 land here. `local` and unresolved +`conflict` rows do not. + +--- + +## 10. Quality Requirements + +N/A for this stub — currency failure is already a build/CI failure. + +--- + +## 11. Risks and Technical Debt + +N/A for this stub. Known residual: Markitect `arc42-v1` schema is not +registered yet (WP-0002-T02). + +--- + +## 12. Glossary + +| Term | Meaning | +| --- | --- | +| Current address | The stable URL for the document as it now stands. | +| Revision address | Write-once URL for one source digest. | +| Publication entry | One object in `publication.json`. Discovery is not publication. | +| First-wave complete | Chapters 1, 3, 4, 5.1, 9 and 12 are real; others real or N/A. | diff --git a/docs/publication-contract.md b/docs/publication-contract.md new file mode 100644 index 0000000..ed9dcbd --- /dev/null +++ b/docs/publication-contract.md @@ -0,0 +1,130 @@ +# Publication contract for source owners + +How a governing document gets a permanent address on +`https://policy.coulomb.social`. This note is the owner-facing contract +from POLICY-NEXUS-WP-0002-T01. It is not itself a published policy +document. + +`policy-nexus` publishes. It does not author your document and it does +not write back. + +## What can be published + +| Kind | What it is | Typical source path | +| --- | --- | --- | +| `standards` | Governing standard | `canon/standards/_vN.md` | +| `architecture` | One arc42 document per system | `docs/architecture/_v0.1.md` or `canon/architecture/_v0.1.md` | +| `constitution` | Estate constitution | `canon/constitution/` | +| `adr` | Architecture decision record | `docs/adr/.md` | + +Workplans, evidence, runbooks, review ledgers, and general docs are out. + +An ADR is published only after an explicit `publication.json` entry. +Architecture documents follow the same rule. Discovery +(`source-inventory.config.json`) is not publication. + +## Front-matter the builder requires + +```yaml +--- +id: +title: "Human title" +status: proposed | accepted | superseded | withdrawn +owner: +revision: "accepted-1" +last_reviewed: "YYYY-MM-DD" +review_interval: 6m +--- +``` + +| Field | Rule | +| --- | --- | +| `id` | Must equal the `publication.json` `id`. Globally unique. Repo-prefix ADRs (`RMASTER-ADR-0001`, `policy-nexus-adr-0001`). Bare `ADR-001` will collide. | +| `title` | Shown on the page and the site index. | +| `status` | Honesty with the body. If the prose says relocated, the status is `superseded`. | +| `owner` | Who answers for the content. | +| `revision` or `version` | Becomes the immutable revision slug. | +| `last_reviewed` or `updated` | ISO date. Currency starts here. | +| `review_interval` | `Nd`, `Nm`, or `Ny`. Default `6m` if you do not declare one; the publication entry may also set it. | + +A document missing any of those fields fails the build. Do not ask this +repo to invent them. + +## Addresses + +From ADR-0001: + +```text +//// +////revisions// +``` + +- `` is one of the four kinds above. +- `` is a kebab-case slug, unique on the site. If two systems + would share a short name, prefix with the system slug + (`railiance-repository-prefix`, not `repository-prefix`). +- `` is the document series (`v0.1`, `v1`). A new major version + is a new current address; the old one stays and is marked superseded. +- `` is the front-matter `revision` (for example `draft-8`, + `accepted-1`). That URL is write-once. + +Examples: + +```text +/standards/tenancy-posture/v0.1/ +/architecture/policy-nexus/v0.1/ +/adr/addressing-and-permanence/v1/ +/adr/railiance-repository-prefix/v1/ +``` + +No URL is derived from a checkout path, branch, or build number. + +## Architecture documents (arc42) + +One markdown file per system, following +`markitect-main/examples/templates/TEMPLATE-ARC42.md`. + +- Chapter 9 **lists** that system's ADRs (id, status, pointer). It does + not paste them. +- First-wave complete means chapters **1, 3, 4, 5.1, 9 and 12** are + real. Every other chapter is real or explicitly `N/A` with a reason. +- A stub that can be published early has real chapters **1, 3 and 9** + plus this front-matter. + +Validate once Markitect registers `arc42-v1`: + +```sh +markitect validate docs/architecture/_v0.1.md --schema arc42-v1 +``` + +Until that schema exists, author against the template. This repo will +not publish an architecture document that cannot be validated after the +schema lands. + +## Infospace index + +The collection index lives at +`the-custodian/canon/architecture/infospace/`. It **references** the +owning-repo documents. It does not copy them. InfoTechCanon owns the +information-space model, not this estate's building-block view. + +## How to request publication + +1. Put the front-matter on the source document in the owning repo. +2. For an architecture document, meet the stub or first-wave bar above. +3. Open a PR against `policy-nexus` that adds one `publication.json` + entry (and a `repositories` path if the repo is new here). +4. `make check` and `make build` must pass. + +Do not glob a tree into `publication.json`. Inventory records every +matching source; publication stays one explicit entry per document. + +## First-wave architecture collection + +| Publication id | System slug | Owning repo | Source path | +| --- | --- | --- | --- | +| `coulomb-estate-architecture` | `coulomb-estate` | `the-custodian` | `canon/architecture/coulomb-estate_v0.1.md` | +| `railiance-architecture` | `railiance` | `railiance-master` | `docs/architecture/railiance_v0.1.md` | +| `net-kingdom-architecture` | `net-kingdom` | `net-kingdom` | `docs/architecture/net-kingdom_v0.1.md` | +| `state-hub-architecture` | `state-hub` | `state-hub` | `docs/architecture/state-hub_v0.1.md` | +| `policy-nexus-architecture` | `policy-nexus` | `policy-nexus` | `docs/architecture/policy-nexus_v0.1.md` | diff --git a/publication.json b/publication.json index 0bb177e..6a231e4 100644 --- a/publication.json +++ b/publication.json @@ -13,7 +13,9 @@ "projects": false }, "repositories": { - "net-kingdom": {"path": "../net-kingdom"} + "net-kingdom": {"path": "../net-kingdom"}, + "policy-nexus": {"path": "."}, + "railiance-master": {"path": "../railiance-master"} }, "documents": [ { @@ -25,6 +27,78 @@ "legacy_paths": ["tenancy-posture.html"], "subtitle": "A framework for describing, holding and improving multi-tenancy — including where we are not there yet.", "review_interval": "6m" + }, + { + "id": "policy-nexus-adr-0001", + "source_repo": "policy-nexus", + "source_path": "docs/adr/ADR-0001-addressing-and-permanence.md", + "canonical_path": "adr/addressing-and-permanence/v1/index.html", + "revision_path": "adr/addressing-and-permanence/v1/revisions/{revision}/index.html", + "review_interval": "6m" + }, + { + "id": "RMASTER-ADR-0001", + "source_repo": "railiance-master", + "source_path": "docs/adr/ADR-0001-repository-prefix-architecture.md", + "canonical_path": "adr/railiance-repository-prefix/v1/index.html", + "revision_path": "adr/railiance-repository-prefix/v1/revisions/{revision}/index.html", + "review_interval": "6m" + }, + { + "id": "RMASTER-ADR-0002", + "source_repo": "railiance-master", + "source_path": "docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", + "canonical_path": "adr/railiance-rail-kubernetes-wave-1-boundary/v1/index.html", + "revision_path": "adr/railiance-rail-kubernetes-wave-1-boundary/v1/revisions/{revision}/index.html", + "review_interval": "6m" + }, + { + "id": "RMASTER-ADR-0003", + "source_repo": "railiance-master", + "source_path": "docs/adr/ADR-0003-rapp-first-wave-selection.md", + "canonical_path": "adr/railiance-rapp-first-wave-selection/v1/index.html", + "revision_path": "adr/railiance-rapp-first-wave-selection/v1/revisions/{revision}/index.html", + "review_interval": "6m" + }, + { + "id": "RMASTER-ADR-0004", + "source_repo": "railiance-master", + "source_path": "docs/adr/ADR-0004-first-wave-reef-rollout.md", + "canonical_path": "adr/railiance-first-wave-reef-rollout/v1/index.html", + "revision_path": "adr/railiance-first-wave-reef-rollout/v1/revisions/{revision}/index.html", + "review_interval": "6m" + }, + { + "id": "RMASTER-ADR-0005", + "source_repo": "railiance-master", + "source_path": "docs/adr/ADR-0005-derived-rail-composition.md", + "canonical_path": "adr/railiance-derived-rail-composition/v1/index.html", + "revision_path": "adr/railiance-derived-rail-composition/v1/revisions/{revision}/index.html", + "review_interval": "6m" + }, + { + "id": "RMASTER-ADR-0006", + "source_repo": "railiance-master", + "source_path": "docs/adr/ADR-0006-reef-production-admission.md", + "canonical_path": "adr/railiance-reef-production-admission/v1/index.html", + "revision_path": "adr/railiance-reef-production-admission/v1/revisions/{revision}/index.html", + "review_interval": "6m" + }, + { + "id": "RMASTER-ADR-0007", + "source_repo": "railiance-master", + "source_path": "docs/adr/ADR-0007-rapp-declaration-contract.md", + "canonical_path": "adr/railiance-rapp-declaration-contract/v1/index.html", + "revision_path": "adr/railiance-rapp-declaration-contract/v1/revisions/{revision}/index.html", + "review_interval": "6m" + }, + { + "id": "RMASTER-ADR-0008", + "source_repo": "railiance-master", + "source_path": "docs/adr/ADR-0008-private-by-default-exposure.md", + "canonical_path": "adr/railiance-private-by-default-exposure/v1/index.html", + "revision_path": "adr/railiance-private-by-default-exposure/v1/revisions/{revision}/index.html", + "review_interval": "6m" } ] } diff --git a/source-inventory.json b/source-inventory.json index 65e40a2..5c85393 100644 --- a/source-inventory.json +++ b/source-inventory.json @@ -151,6 +151,12 @@ "source_path": "docs/adr/0003-topaz-aligned-mvp.md", "source_repo": "flex-auth" }, + { + "disposition": "metadata-pending", + "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "source_path": "docs/adr/0004-inbound-caller-authentication.md", + "source_repo": "flex-auth" + }, { "disposition": "metadata-pending", "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", @@ -332,8 +338,8 @@ "source_repo": "net-kingdom" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0001-addressing-and-permanence.md", "source_repo": "policy-nexus" }, @@ -380,50 +386,50 @@ "source_repo": "railiance-infra" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0001-repository-prefix-architecture.md", "source_repo": "railiance-master" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0002-rail-kubernetes-wave-1-boundary.md", "source_repo": "railiance-master" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0003-rapp-first-wave-selection.md", "source_repo": "railiance-master" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0004-first-wave-reef-rollout.md", "source_repo": "railiance-master" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0005-derived-rail-composition.md", "source_repo": "railiance-master" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0006-reef-production-admission.md", "source_repo": "railiance-master" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0007-rapp-declaration-contract.md", "source_repo": "railiance-master" }, { - "disposition": "metadata-pending", - "reason": "In scope; awaits explicit publication addressing and owner/revision/review metadata.", + "disposition": "published", + "reason": "Published through an explicit publication.json document entry.", "source_path": "docs/adr/ADR-0008-private-by-default-exposure.md", "source_repo": "railiance-master" }, diff --git a/tests/test_adr_review_ledger.py b/tests/test_adr_review_ledger.py new file mode 100644 index 0000000..6fdd28c --- /dev/null +++ b/tests/test_adr_review_ledger.py @@ -0,0 +1,78 @@ +from __future__ import annotations + +import json +from pathlib import Path +import sys +import tempfile +import unittest + + +ROOT = Path(__file__).parents[1] +sys.path.insert(0, str(ROOT / "tools")) +from adr_review_ledger import build_ledger + + +class AdrReviewLedgerTest(unittest.TestCase): + def test_maps_inventory_and_flags_bare_adr_collisions(self) -> None: + with tempfile.TemporaryDirectory() as directory: + root = Path(directory) + left = root / "alpha" + right = root / "beta" + (left / "docs/adr").mkdir(parents=True) + (right / "docs/adr").mkdir(parents=True) + (left / "docs/adr/ADR-0001-one.md").write_text( + "---\nid: ALPHA-ADR-0001\ntitle: One\nstatus: accepted\n" + "owner: alpha\nrevision: accepted-1\n" + "last_reviewed: \"2026-08-18\"\nreview_interval: 6m\n---\n# One\n", + encoding="utf-8", + ) + (right / "docs/adr/ADR-0001-two.md").write_text("# Two\n", encoding="utf-8") + config = root / "source-inventory.config.json" + config.write_text( + json.dumps( + { + "schema_version": 1, + "repositories": { + "alpha": {"branch": "main", "remote": "https://example.invalid/a.git", "selectors": ["docs/adr/*.md"]}, + "beta": {"branch": "main", "remote": "https://example.invalid/b.git", "selectors": ["docs/adr/*.md"]}, + }, + } + ), + encoding="utf-8", + ) + inventory = root / "source-inventory.json" + inventory.write_text( + json.dumps( + { + "schema_version": 1, + "sources": [ + { + "source_repo": "alpha", + "source_path": "docs/adr/ADR-0001-one.md", + "disposition": "metadata-pending", + "reason": "pending", + }, + { + "source_repo": "beta", + "source_path": "docs/adr/ADR-0001-two.md", + "disposition": "metadata-pending", + "reason": "pending", + }, + ], + } + ), + encoding="utf-8", + ) + ledger = build_ledger( + inventory, config, policy_root=root, source_root=root + ) + rows = {f"{row['source_repo']}/{row['source_path']}": row for row in ledger["rows"]} + self.assertEqual(2, len(rows)) + self.assertEqual([], rows["alpha/docs/adr/ADR-0001-one.md"]["missing_fields"]) + self.assertIn("id", rows["beta/docs/adr/ADR-0001-two.md"]["missing_fields"]) + self.assertEqual("ADR-0001", rows["alpha/docs/adr/ADR-0001-one.md"]["bare_adr"]) + self.assertEqual( + ["beta/docs/adr/ADR-0001-two.md"], + rows["alpha/docs/adr/ADR-0001-one.md"]["bare_adr_collisions"], + ) + self.assertEqual("unreviewed", rows["alpha/docs/adr/ADR-0001-one.md"]["proposed_disposition"]) diff --git a/tools/adr_review_ledger.py b/tools/adr_review_ledger.py new file mode 100644 index 0000000..ac5a602 --- /dev/null +++ b/tools/adr_review_ledger.py @@ -0,0 +1,255 @@ +#!/usr/bin/env python3 +"""Build the ADR review ledger from source-inventory.json and source files.""" + +from __future__ import annotations + +import argparse +import json +import re +from pathlib import Path +import sys +from typing import Any + +from render import split_frontmatter +from source_inventory import _repo_paths, _read_json + + +BARE_ADR = re.compile(r"(?i)\bADR-0*(\d+)\b") +REQUIRED = ("id", "title", "status", "owner") +FIRST_PUBLISH = { + ("policy-nexus", "docs/adr/ADR-0001-addressing-and-permanence.md"), + *( + ( + "railiance-master", + f"docs/adr/ADR-000{n}-{slug}.md", + ) + for n, slug in ( + (1, "repository-prefix-architecture"), + (2, "rail-kubernetes-wave-1-boundary"), + (3, "rapp-first-wave-selection"), + (4, "first-wave-reef-rollout"), + (5, "derived-rail-composition"), + (6, "reef-production-admission"), + (7, "rapp-declaration-contract"), + (8, "private-by-default-exposure"), + ) + ), +} +SPECIALS = { + ("policy-nexus", "docs/adr/ADR-0001-addressing-and-permanence.md"): ( + "First publish set. This repo's addressing contract." + ), + ("the-custodian", "canon/architecture/adr-008-multi-tenancy-model.md"): ( + "Relocated to net-kingdom Tenancy Posture. Duplicate-claim candidate (kind 6)." + ), +} +for n, slug in ( + (1, "repository-prefix-architecture"), + (2, "rail-kubernetes-wave-1-boundary"), + (3, "rapp-first-wave-selection"), + (4, "first-wave-reef-rollout"), + (5, "derived-rail-composition"), + (6, "reef-production-admission"), + (7, "rapp-declaration-contract"), + (8, "private-by-default-exposure"), +): + SPECIALS[("railiance-master", f"docs/adr/ADR-000{n}-{slug}.md")] = ( + "First publish set. Publication-ready front-matter." + ) + + +def _bare_adr(source_path: str, meta_id: str) -> str: + for text in (meta_id, Path(source_path).name): + match = BARE_ADR.search(text) + if match: + return f"ADR-{int(match.group(1)):04d}" + return "" + + +def _missing(meta: dict[str, str]) -> list[str]: + missing = [field for field in REQUIRED if not meta.get(field)] + if not (meta.get("revision") or meta.get("version")): + missing.append("revision|version") + if not ((meta.get("last_reviewed") or meta.get("updated")) and meta.get("review_interval")): + missing.append("review") + return missing + + +def _frontmatter(path: Path) -> dict[str, str]: + if not path.is_file(): + return {} + meta, _body = split_frontmatter(path.read_text(encoding="utf-8", errors="replace")) + return {key: value for key, value in meta.items() if value} + + +def build_ledger( + inventory_path: Path, config_path: Path, *, policy_root: Path, source_root: Path +) -> dict[str, Any]: + inventory = _read_json(inventory_path) + config = _read_json(config_path) + paths = _repo_paths(config, policy_root=policy_root, source_root=source_root) + rows: list[dict[str, Any]] = [] + for source in inventory.get("sources", []): + key = (source["source_repo"], source["source_path"]) + repo = paths.get(source["source_repo"]) + file_path = (repo / source["source_path"]) if repo is not None else None + present = bool(file_path and file_path.is_file()) + meta = _frontmatter(file_path) if present and file_path is not None else {} + rows.append( + { + "source_repo": source["source_repo"], + "source_path": source["source_path"], + "inventory_disposition": source.get("disposition", ""), + "inventory_reason": source.get("reason", ""), + "file_present": present, + "frontmatter": { + field: meta.get(field, "") + for field in ( + "id", + "title", + "status", + "owner", + "revision", + "version", + "last_reviewed", + "updated", + "review_interval", + ) + }, + "missing_fields": _missing(meta) if present else ["file-missing"], + "bare_adr": _bare_adr(source["source_path"], meta.get("id", "")), + "id_collisions": [], + "bare_adr_collisions": [], + "notes": SPECIALS.get(key, ""), + "proposed_disposition": "publish" if key in FIRST_PUBLISH else "unreviewed", + "conflict_kinds": [], + "successor": ( + "netkingdom-tenancy-posture" + if key == ("the-custodian", "canon/architecture/adr-008-multi-tenancy-model.md") + else "" + ), + "review_notes": "", + } + ) + + by_id: dict[str, list[str]] = {} + by_bare: dict[str, list[str]] = {} + for row in rows: + label = f"{row['source_repo']}/{row['source_path']}" + meta_id = row["frontmatter"]["id"] + if meta_id: + by_id.setdefault(meta_id, []).append(label) + if row["bare_adr"]: + by_bare.setdefault(row["bare_adr"], []).append(label) + for row in rows: + label = f"{row['source_repo']}/{row['source_path']}" + meta_id = row["frontmatter"]["id"] + if meta_id: + row["id_collisions"] = [other for other in by_id.get(meta_id, []) if other != label] + if row["bare_adr"]: + row["bare_adr_collisions"] = [ + other for other in by_bare.get(row["bare_adr"], []) if other != label + ] + + return { + "schema_version": 1, + "protocol": "docs/adr-review/protocol.md", + "source_inventory": "source-inventory.json", + "rows": rows, + } + + +def _summary(ledger: dict[str, Any]) -> str: + rows = ledger["rows"] + dispositions = {} + inventory = {} + for row in rows: + dispositions[row["proposed_disposition"]] = ( + dispositions.get(row["proposed_disposition"], 0) + 1 + ) + inventory[row["inventory_disposition"]] = inventory.get(row["inventory_disposition"], 0) + 1 + missing_files = [row for row in rows if not row["file_present"]] + id_hits = [row for row in rows if row["id_collisions"]] + bare_hits = [row for row in rows if row["bare_adr_collisions"]] + lines = [ + "# ADR review ledger summary", + "", + f"Rows: {len(rows)}", + "", + "## Inventory dispositions", + "", + ] + for name, count in sorted(inventory.items()): + lines.append(f"- `{name}`: {count}") + lines.extend(["", "## Proposed dispositions", ""]) + for name, count in sorted(dispositions.items()): + lines.append(f"- `{name}`: {count}") + lines.extend(["", "## Front-matter `id` collisions", ""]) + if not id_hits: + lines.append("None.") + else: + seen = set() + for row in id_hits: + key = row["frontmatter"]["id"] + if key in seen: + continue + seen.add(key) + others = ", ".join([f"{row['source_repo']}/{row['source_path']}", *row["id_collisions"]]) + lines.append(f"- `{key}`: {others}") + lines.extend(["", "## Bare ADR-NNNN collisions", ""]) + if not bare_hits: + lines.append("None.") + else: + seen = set() + for row in bare_hits: + key = row["bare_adr"] + if key in seen: + continue + seen.add(key) + others = ", ".join( + [f"{row['source_repo']}/{row['source_path']}", *row["bare_adr_collisions"]] + ) + lines.append(f"- `{key}`: {others}") + lines.extend(["", "## Missing files", ""]) + if not missing_files: + lines.append("None.") + else: + for row in missing_files: + lines.append(f"- `{row['source_repo']}/{row['source_path']}`") + lines.append("") + return "\n".join(lines) + + +def main(argv: list[str] | None = None) -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--config", type=Path, default=Path("source-inventory.config.json")) + parser.add_argument("--inventory", type=Path, default=Path("source-inventory.json")) + parser.add_argument("--output", type=Path, default=Path("docs/adr-review/ledger.json")) + parser.add_argument("--summary", type=Path, default=Path("docs/adr-review/SUMMARY.md")) + parser.add_argument("--policy-root", type=Path) + parser.add_argument("--source-root", type=Path) + args = parser.parse_args(argv) + config_path = args.config.resolve() + policy_root = (args.policy_root or config_path.parent).resolve() + source_root = (args.source_root or policy_root.parent).resolve() + try: + ledger = build_ledger( + args.inventory.resolve(), + config_path, + policy_root=policy_root, + source_root=source_root, + ) + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text( + json.dumps(ledger, indent=2, sort_keys=True) + "\n", encoding="utf-8" + ) + args.summary.write_text(_summary(ledger), encoding="utf-8") + print(f"{args.output}: {len(ledger['rows'])} row(s)") + return 0 + except (OSError, ValueError) as exc: + print(f"adr review ledger failed: {exc}", file=sys.stderr) + return 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/workplans/POLICY-NEXUS-WP-0002-arc42-architecture-collection.md b/workplans/POLICY-NEXUS-WP-0002-arc42-architecture-collection.md index 8ab5dbe..85e695a 100644 --- a/workplans/POLICY-NEXUS-WP-0002-arc42-architecture-collection.md +++ b/workplans/POLICY-NEXUS-WP-0002-arc42-architecture-collection.md @@ -4,7 +4,7 @@ type: workplan title: "Publish an arc42 architecture collection from owning repos" domain: infotech repo: policy-nexus -status: proposed +status: active owner: the-custodian topic_slug: policy-nexus created: "2026-08-18" @@ -120,7 +120,7 @@ Required publication front-matter is the same contract as for ADRs: `id`, ```task id: POLICY-NEXUS-WP-0002-T01 -status: todo +status: done priority: high ``` @@ -141,6 +141,11 @@ not a second architecture). Fold the addressing into ADR-0001 only if the **Why first:** WP-0003's relevance and conflict checks need to know what an architecture document is. +Completed 2026-08-18 in `docs/publication-contract.md`. ADR-0001 now names +the four kinds (`standards`, `architecture`, `constitution`, `adr`). The +policy-nexus first-wave stub is at `docs/architecture/policy-nexus_v0.1.md` +and is not published until the architecture selector and inventory catch up. + ### T02 — Markitect arc42 schema handoff ```task @@ -210,7 +215,7 @@ is "this decision does not fit the estate". ```task id: POLICY-NEXUS-WP-0002-T05 -status: todo +status: progress priority: medium ``` @@ -223,6 +228,11 @@ publish. Deeper chapters are the owning repo's follow-on, not a gate here. This repo authors only `docs/architecture/policy-nexus_v0.1.md`. +2026-08-18: policy-nexus stub exists with real chapters 1, 3 and 9. It is +not in `publication.json` yet — inventory selectors do not include +`docs/architecture/` until this file is on `HEAD` and T06 reviews it. +The other four documents remain owning-repo work. + ### T06 — Register and publish ```task diff --git a/workplans/POLICY-NEXUS-WP-0003-adr-review-cleanup-publish.md b/workplans/POLICY-NEXUS-WP-0003-adr-review-cleanup-publish.md index 87d214f..deb8e43 100644 --- a/workplans/POLICY-NEXUS-WP-0003-adr-review-cleanup-publish.md +++ b/workplans/POLICY-NEXUS-WP-0003-adr-review-cleanup-publish.md @@ -4,7 +4,7 @@ type: workplan title: "Review ADRs for conflict, keep what governs, publish the rest properly" domain: infotech repo: policy-nexus -status: proposed +status: active owner: the-custodian topic_slug: policy-nexus created: "2026-08-18" @@ -127,7 +127,7 @@ Everything else waits on the review row. ```task id: POLICY-NEXUS-WP-0003-T01 -status: todo +status: done priority: high ``` @@ -139,11 +139,14 @@ Use `source-inventory.json` as the input set. Do not rediscover by glob. **Output:** `docs/adr-review/` (ledger + protocol). Not published. +Completed 2026-08-18. Protocol, regenerable `ledger.json`, and +`tools/adr_review_ledger.py` are in place. + ### T02 — Corpus map ```task id: POLICY-NEXUS-WP-0003-T02 -status: todo +status: done priority: high ``` @@ -159,6 +162,11 @@ relevance. Depends on T01. Does not depend on WP-0002. +Completed 2026-08-18. `docs/adr-review/ledger.json` records front-matter, +gaps, identifier collisions, and the known ADR-008 / Tenancy Posture +special. First-publish-set rows start as `publish`; everything else is +`unreviewed`. + ### T03 — Conflict and inconsistency pass ```task @@ -220,7 +228,7 @@ not as an edit of the ADR bodies. This repo applies the packet only for ```task id: POLICY-NEXUS-WP-0003-T06 -status: todo +status: progress priority: high ``` @@ -237,6 +245,11 @@ priority: high Further registrations happen as packets return, still under this task until the ledger has no `publish` row left unpublished. +2026-08-18: first publish set is in `publication.json` — this repo's +ADR-0001 (with publication front-matter) and railiance-master +ADR-0001–0008. Inventory dispositions match. Remaining `publish` rows +wait on later packets. + ### T07 — Point the architecture documents at what remains ```task