Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .machine_readable/REGISTRY.a2ml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ name = "K9 Self-Validating Components"
stream = "foundation"
home = "1-formats/k9/"
canonical_doc = "1-formats/k9/README.adoc"
source_hash = "sha256:536014a24a3928eafa441726511566705a4605877bc15866b3a91fb80d727b0f"
source_hash = "sha256:19b4ac92f44aa5e5c133755e8e2e4c2d18383cb64cccd4f31d576ba14e020be5"
route = "the K9 specification, security analysis and adoption guidance (implementations live in hyperpolymath/k9-ecosystem)"

[[spec]]
Expand Down Expand Up @@ -90,7 +90,7 @@ name = "AGENTIC.a2ml spec"
stream = "foundation"
home = "1-formats/a2ml/agentic/"
canonical_doc = "1-formats/a2ml/agentic/README.adoc"
source_hash = "sha256:b86efb14f342b7d152e31f098be8929c0b9ca02efe61d901f749ec999409e299"
source_hash = "sha256:f118e927f79664c0c79e249e2538a52563f9d63b828eba65611c379d37253175"
route = "AI-agent operational gating / entropy budgets"

[[spec]]
Expand All @@ -99,7 +99,7 @@ name = "NEUROSYM.a2ml spec"
stream = "foundation"
home = "1-formats/a2ml/neurosym/"
canonical_doc = "1-formats/a2ml/neurosym/README.adoc"
source_hash = "sha256:11362cc1e57ad7fdd29e4f2a57316c7df7f4d51bff4963d607dd560810318e0b"
source_hash = "sha256:9bfe5e975ccb49ee2a78c8baf6c3bbe962756f2946f0795af2cab7b76a51c5a9"
route = "symbolic semantics / proof obligations"

[[spec]]
Expand Down Expand Up @@ -207,7 +207,7 @@ name = "RSR — Rhodium Standard Repositories"
stream = "governance"
home = "rhodium-standard-repositories/"
canonical_doc = "rhodium-standard-repositories/README.adoc"
source_hash = "sha256:7e07d81d2373e8ce2820f1a3db13550626582ca9992854327a8b3b39e0d366c3"
source_hash = "sha256:5e9282daf9273d89ddd58af8af87c2a1d73e95fde6a43409ebccca7b1d4878b9"
route = "the repository-compliance standard every repo is graded against"

[[spec]]
Expand Down
16 changes: 8 additions & 8 deletions .machine_readable/contractiles/_base.ncl
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
# }
#
# See: docs/CONTRACTILE-SPEC.adoc §Shared Base

{
# -------------------------------------------------------------------------
# pedigree_schema
Expand All @@ -50,11 +49,11 @@
# -------------------------------------------------------------------------
pedigree_schema = {
schema_version | String | default = "1.0.0",
contractile_verb | String | default = "UNSET", # MUST override in verb
semantics | String | default = "UNSET", # MUST override in verb
contractile_verb | String | default = "UNSET", # MUST override in verb
semantics | String | default = "UNSET", # MUST override in verb
security = {
leash | [| 'Kennel, 'Yard, 'Hunt |] | default = 'Kennel,
trust_level | String | default = "UNSET", # MUST override in verb
trust_level | String | default = "UNSET", # MUST override in verb
allow_network | Bool | default = false,
allow_filesystem_write | Bool | default = false,
allow_subprocess | Bool | default = true,
Expand All @@ -63,10 +62,10 @@
# destructive_mode_requires_flag (dust)
},
metadata = {
name | String | default = "UNSET", # MUST override in verb
name | String | default = "UNSET", # MUST override in verb
version | String | default = "1.0.0",
description | String | default = "UNSET", # MUST override in verb
paired_xfile | String | default = "UNSET", # MUST override in verb
description | String | default = "UNSET", # MUST override in verb
paired_xfile | String | default = "UNSET", # MUST override in verb
author | String | default = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
},
},
Expand Down Expand Up @@ -118,7 +117,8 @@
allowed_exit_codes | Array Number | default = [0],
permission_class
| [| 'read_only, 'filesystem_write, 'subprocess, 'network |]
| default = 'read_only,
| default
= 'read_only,
},

# -------------------------------------------------------------------------
Expand Down
71 changes: 37 additions & 34 deletions .machine_readable/contractiles/adjust/adjust.ncl
Original file line number Diff line number Diff line change
Expand Up @@ -12,51 +12,54 @@
#
# Base: ../_base.ncl provides pedigree_schema, run_defaults, probe_schema.
# See: docs/CONTRACTILE-SPEC.adoc

let base = import "../_base.ncl" in

{
pedigree = base.pedigree_schema & {
contractile_verb = "adjust",
semantics = "accessibility compliance",
security = {
leash = 'Kennel,
trust_level = "fixes allowed where deterministic",
allow_network = false,
allow_filesystem_write = true, # `adjust fix` may write (deterministic patches only)
allow_subprocess = true,
},
metadata = {
name = "adjust-runner",
version = "1.0.0",
description = "Evaluates accessibility requirements from Adjustfile.a2ml. Fixes deterministic items; flags the rest for human review.",
paired_xfile = "Adjustfile.a2ml",
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
pedigree =
base.pedigree_schema
& {
contractile_verb = "adjust",
semantics = "accessibility compliance",
security = {
leash = 'Kennel,
trust_level = "fixes allowed where deterministic",
allow_network = false,
allow_filesystem_write = true, # `adjust fix` may write (deterministic patches only)
allow_subprocess = true,
},
metadata = {
name = "adjust-runner",
version = "1.0.0",
description = "Evaluates accessibility requirements from Adjustfile.a2ml. Fixes deterministic items; flags the rest for human review.",
paired_xfile = "Adjustfile.a2ml",
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
},
},
},

schema = {
requirements
| Array {
id | String,
description | String,
# TODO: migrate to base.probe_schema (structured probe) when CLI supports it
probe | String,
# status_core values: 'declared, 'verified, 'failing; adjust adds 'partial
status | [| 'declared, 'partial, 'verified, 'failing |] | default = 'declared,
compliance | String | optional, # e.g. "WCAG 2.1 AA"
notes | String | optional,
fix | String | optional, # deterministic fix command (optional)
},
id | String,
description | String,
# TODO: migrate to base.probe_schema (structured probe) when CLI supports it
probe | String,
# status_core values: 'declared, 'verified, 'failing; adjust adds 'partial
status | [| 'declared, 'partial, 'verified, 'failing |] | default = 'declared,
compliance | String | optional, # e.g. "WCAG 2.1 AA"
notes | String | optional,
fix | String | optional, # deterministic fix command (optional)
},
},

# Runner behaviour — inherits from base.run_defaults.
# adjust is advisory (continue-with-warnings) not a hard gate.
# auto_fix_when_available is adjust-specific.
run = base.run_defaults & {
on_any_fail = "continue-with-warnings", # accessibility is progress-tracked, not a hard gate by default
report_format = "a2ml",
emit_summary = true,
auto_fix_when_available = true,
},
run =
base.run_defaults
& {
on_any_fail = "continue-with-warnings", # accessibility is progress-tracked, not a hard gate by default
report_format = "a2ml",
emit_summary = true,
auto_fix_when_available = true,
},
}
77 changes: 40 additions & 37 deletions .machine_readable/contractiles/bust/bust.ncl
Original file line number Diff line number Diff line change
Expand Up @@ -14,53 +14,56 @@
#
# Base: ../_base.ncl provides pedigree_schema, run_defaults, probe_schema.
# See: docs/CONTRACTILE-SPEC.adoc

let base = import "../_base.ncl" in

{
pedigree = base.pedigree_schema & {
contractile_verb = "bust",
semantics = "error handling + failure recovery",
security = {
leash = 'Kennel,
trust_level = "controlled failure injection; scoped to system-under-test",
allow_network = false,
allow_filesystem_write = true, # drills may write transient state (tmp dirs, test DBs)
allow_subprocess = true,
injection_scope = "system-under-test-only",
},
metadata = {
name = "bust-runner",
version = "1.0.0",
description = "Exercises declared failure modes and verifies recovery paths. Hard-gates on any failure mode without working recovery.",
paired_xfile = "Bustfile.a2ml",
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
pedigree =
base.pedigree_schema
& {
contractile_verb = "bust",
semantics = "error handling + failure recovery",
security = {
leash = 'Kennel,
trust_level = "controlled failure injection; scoped to system-under-test",
allow_network = false,
allow_filesystem_write = true, # drills may write transient state (tmp dirs, test DBs)
allow_subprocess = true,
injection_scope = "system-under-test-only",
},
metadata = {
name = "bust-runner",
version = "1.0.0",
description = "Exercises declared failure modes and verifies recovery paths. Hard-gates on any failure mode without working recovery.",
paired_xfile = "Bustfile.a2ml",
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
},
},
},

schema = {
failure_modes
| Array {
id | String,
description | String,
class | [| 'network, 'disk_full, 'oom, 'timeout, 'partial_write, 'panic, 'crash, 'rollback, 'concurrency |],
# TODO: migrate to base.probe_schema (structured probe) when CLI supports it
injection_probe | String, # command that deterministically causes this failure
# TODO: migrate to base.probe_schema (structured probe) when CLI supports it
recovery_probe | String, # command that verifies recovery (exit 0 = recovered)
expected_recovery_time_seconds | Number | default = 30,
# status_core values: 'declared, 'verified, 'failing; bust adds 'drilled
status | [| 'declared, 'drilled, 'verified, 'failing |] | default = 'declared,
notes | String | optional,
},
id | String,
description | String,
class | [| 'network, 'disk_full, 'oom, 'timeout, 'partial_write, 'panic, 'crash, 'rollback, 'concurrency |],
# TODO: migrate to base.probe_schema (structured probe) when CLI supports it
injection_probe | String, # command that deterministically causes this failure
# TODO: migrate to base.probe_schema (structured probe) when CLI supports it
recovery_probe | String, # command that verifies recovery (exit 0 = recovered)
expected_recovery_time_seconds | Number | default = 30,
# status_core values: 'declared, 'verified, 'failing; bust adds 'drilled
status | [| 'declared, 'drilled, 'verified, 'failing |] | default = 'declared,
notes | String | optional,
},
},

# Runner behaviour — inherits from base.run_defaults.
# bust adds record_recovery_times for performance tier feeding.
run = base.run_defaults & {
on_any_fail = "exit-nonzero", # missing or broken recovery blocks merge
report_format = "a2ml",
emit_summary = true,
record_recovery_times = true, # feeds the performance tier
},
run =
base.run_defaults
& {
on_any_fail = "exit-nonzero", # missing or broken recovery blocks merge
report_format = "a2ml",
emit_summary = true,
record_recovery_times = true, # feeds the performance tier
},
}
77 changes: 40 additions & 37 deletions .machine_readable/contractiles/dust/dust.ncl
Original file line number Diff line number Diff line change
Expand Up @@ -14,53 +14,56 @@
#
# Base: ../_base.ncl provides pedigree_schema, run_defaults, probe_schema.
# See: docs/CONTRACTILE-SPEC.adoc

let base = import "../_base.ncl" in

{
pedigree = base.pedigree_schema & {
contractile_verb = "dust",
semantics = "exnovation / removal",
security = {
leash = 'Kennel,
trust_level = "proposes deletion; --apply required to execute",
allow_network = false,
allow_filesystem_write = true, # --apply mode writes (deletes)
allow_subprocess = true,
destructive_mode_requires_flag = "--apply",
},
metadata = {
name = "dust-runner",
version = "1.0.0",
description = "Identifies and optionally removes exnovation targets listed in Dustfile.a2ml. Destructive mode gated behind --apply.",
paired_xfile = "Dustfile.a2ml",
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
pedigree =
base.pedigree_schema
& {
contractile_verb = "dust",
semantics = "exnovation / removal",
security = {
leash = 'Kennel,
trust_level = "proposes deletion; --apply required to execute",
allow_network = false,
allow_filesystem_write = true, # --apply mode writes (deletes)
allow_subprocess = true,
destructive_mode_requires_flag = "--apply",
},
metadata = {
name = "dust-runner",
version = "1.0.0",
description = "Identifies and optionally removes exnovation targets listed in Dustfile.a2ml. Destructive mode gated behind --apply.",
paired_xfile = "Dustfile.a2ml",
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
},
},
},

schema = {
removal_candidates
| Array {
id | String,
description | String,
target | String, # file / path / symbol / dep name
reason | String, # why it's a removal candidate
# TODO: migrate to base.probe_schema (structured probe) when CLI supports it
probe | String | optional, # command that confirms it's still removable
# dust has a non-standard status progression (no 'verified):
# 'declared → 'proposed → 'approved → 'removed
status | [| 'declared, 'proposed, 'approved, 'removed |] | default = 'declared,
approver | String | optional, # who signed off (for 'approved / 'removed)
notes | String | optional,
},
id | String,
description | String,
target | String, # file / path / symbol / dep name
reason | String, # why it's a removal candidate
# TODO: migrate to base.probe_schema (structured probe) when CLI supports it
probe | String | optional, # command that confirms it's still removable
# dust has a non-standard status progression (no 'verified):
# 'declared → 'proposed → 'approved → 'removed
status | [| 'declared, 'proposed, 'approved, 'removed |] | default = 'declared,
approver | String | optional, # who signed off (for 'approved / 'removed)
notes | String | optional,
},
},

# Runner behaviour — inherits from base.run_defaults.
# dust is advisory; apply_requires_approval is dust-specific.
run = base.run_defaults & {
on_any_fail = "continue-with-warnings",
report_format = "a2ml",
emit_summary = true,
apply_requires_approval = true, # only 'approved items get swept, even with --apply
},
run =
base.run_defaults
& {
on_any_fail = "continue-with-warnings",
report_format = "a2ml",
emit_summary = true,
apply_requires_approval = true, # only 'approved items get swept, even with --apply
},
}
Loading
Loading