Skip to content

Commit 79d6103

Browse files
hyperpolymathclaude
andcommitted
feat(contractiles): intend.k9.ncl v2 — negotiation + accountability + spec-translation
Extends the intend trident's on_open hook from simple ratification (user reads summary, says yes) to full negotiation protocol as specified in user session 2026-04-18 (memories: user_contract_negotiation_and_accountability_pledge, user_contractiles_agreed_at_session_start). on_open now requires: 1. Negotiation phase — AI must contribute five structured inputs before the user is asked to ratify: - timeline_realism ("this will take X; not Y") - industry_standards (WCAG / ISO / OWASP / GDPR / licensing) - audience_feasibility (real addressable user set; the tetrachromatic+6/4 example from user 2026-04-18) - resulting_invariants (must/trust/adjust entries that follow) - ecosystem_dependencies (libs, licences, threat-model implications) 2. Plain-language translation — AI authors the specification form (Nickel schemas, probe definitions, type refinement); user reviews the rendering in domain language. User never has to learn spec-theory to ratify. AI is accountable for translation faithfulness. 3. Accountability pledge — both parties sign explicit pledges: - User: "I accept accountability for meeting the declared invariants and for the audience/timeline/standards consequences." - AI: "I will hold the user to the obligations, including by surfacing drift at session close and refusing off-contract actions even when the user is enthusiastic. If the user wants to depart, I require a variance or amendment, not silent acceptance." 4. Ratification record = negotiation transcript + both pledges + session-id + contract-hash, persisted to .machine_readable/6a2/ratification-<session-id>.a2ml. Also includes `user_engagement_required = true` + `user_engagement_mode = 'per_input_response` so that blank-cheque ratification ("just do it, I trust you") is explicitly rejected — the system re-renders and requires engagement with each input. Per user "without the human having any concern that this is something they have to seriously figure out the types and degree of specification itself" but "they will be contractual and so often very specific" — AI does specification work, human stays in domain language, result is specific-enough contract. Metadata version 1.0.0 → 2.0.0 (significant schema extension). Manifest history entry added. intend is the hardest verb (abstract north-star per user 2026-04-18); baking the full protocol here first means simpler verbs (trust, must) inherit the template. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent fda5f0b commit 79d6103

2 files changed

Lines changed: 99 additions & 10 deletions

File tree

.machine_readable/contractiles/intend/intend.k9.ncl

Lines changed: 94 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,12 @@ let base = import "../_base.ncl" in
4646

4747
metadata = {
4848
name = "intend-k9",
49-
version = "1.0.0",
50-
description = "Executes Intentfile probes + emits drift log. Non-gating; reporting authority only.",
49+
version = "2.0.0", # 1.0.0 (2026-04-18 AM): initial trident.
50+
# 2.0.0 (2026-04-18 PM): negotiation +
51+
# accountability + plain-language-translation
52+
# schema baked into on_open — prerequisite for
53+
# the adversarial Gemini+Copilot drift pilot.
54+
description = "Executes Intentfile probes + emits drift log. Non-gating; reporting authority only. on_open hook implements negotiation-ratification-accountability protocol.",
5155
paired_xfile = "Intentfile.a2ml",
5256
paired_runner = "intend.ncl",
5357
author = "Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>",
@@ -132,19 +136,99 @@ let base = import "../_base.ncl" in
132136
surface_expired_variances = true,
133137
},
134138

135-
# Session-open hook — ratification protocol
136-
# (user_contractiles_agreed_at_session_start.md).
137-
# Summary must be plain language (metaphor-capture defense —
138-
# user_metaphor_capture_break_frame_at_operational_boundaries.md).
139+
# -----------------------------------------------------------------
140+
# Session-open hook — NEGOTIATION + RATIFICATION + ACCOUNTABILITY
141+
# (user_contract_negotiation_and_accountability_pledge.md)
142+
# (user_contractiles_agreed_at_session_start.md)
143+
#
144+
# Ratification is not passive acknowledgement; it is negotiation
145+
# ending in an explicit accountability pledge from BOTH parties.
146+
# Work cannot proceed before both pledges are on file.
147+
# -----------------------------------------------------------------
139148
on_open = {
140-
render_summary = 'plain_language,
141-
require_user_agreement = true,
149+
# --- Context presentation (pre-negotiation) ---
150+
render_summary = 'plain_language, # metaphor-capture defense
142151
include_drift_log_from_last_close = true,
143152
include_active_variances = true,
144-
# Recent ANCHORs (user_anchor_a2ml_recalibration_record.md) may
145-
# have shifted the contract since last session — surface them.
146153
include_recent_anchors = true,
147154
anchor_lookback_weeks = 8,
155+
156+
# --- Negotiation phase (five mandatory inputs) ---
157+
# AI must surface all five before the user is asked to ratify.
158+
# "Yes, and …" — not "yes". Missing any of the five = the
159+
# negotiation is incomplete and work cannot proceed.
160+
negotiation = {
161+
required = true, # blank-cheque ratification refused
162+
163+
# The five inputs the AI must contribute to the negotiation.
164+
# Each is a structured field the agent is required to populate,
165+
# not optional prose. See user_contract_negotiation_and_
166+
# accountability_pledge.md for the domain-language-rendering rule.
167+
ai_required_inputs = [
168+
'timeline_realism, # "this will take X; not Y"
169+
'industry_standards, # WCAG, ISO, OWASP, GDPR, licensing …
170+
'audience_feasibility, # real addressable user set
171+
'resulting_invariants, # what must/trust/adjust entries follow
172+
'ecosystem_dependencies, # libs, licences, threat-model implications
173+
],
174+
175+
# User must actually engage with each input — not
176+
# auto-approve. If user tries to skip ("just do it, I trust you")
177+
# the system re-renders the obligations and requires the pledge.
178+
user_engagement_required = true,
179+
user_engagement_mode = 'per_input_response,
180+
181+
# The AI does the specification-form work. The user reviews the
182+
# rendering in domain language and accepts / amends / pushes back.
183+
# User never has to author Nickel schemas or decide on type
184+
# specificity — that is the AI's translation responsibility,
185+
# with auditable faithfulness.
186+
specification_translation = {
187+
ai_produces_spec_form = true,
188+
user_reviews_in_domain_language = true,
189+
schema_authoring_is_ai_responsibility = true,
190+
translation_faithfulness_auditable = true,
191+
# Failure mode this closes: user is forced to learn spec-theory
192+
# (type refinement, Nickel contract grammar) to ratify a contract
193+
# — which drives users away from ratification entirely.
194+
},
195+
},
196+
197+
# --- Accountability pledge (both parties, explicit) ---
198+
# Not "I read it" — "I am answerable for this obligation".
199+
# Both pledges are required before work proceeds; both are recorded.
200+
accountability_pledge = {
201+
required = true,
202+
parties = [
203+
{
204+
role = 'user,
205+
pledge = "I have reviewed the obligations as negotiated; I accept accountability for meeting the declared invariants and for the audience/timeline/standards consequences surfaced in negotiation.",
206+
signature_required = true,
207+
},
208+
{
209+
role = 'ai_agent,
210+
pledge = "I will hold the user to the obligations as negotiated, including by surfacing drift at session close and refusing off-contract actions, even when the user is enthusiastic about them. If the user wishes to depart from the contract, I will require a variance or amendment, not silent acceptance.",
211+
signature_required = true,
212+
# Per user_contractile_is_contract_do_not_break.md —
213+
# the AI is the holder of the line against enthusiasm drift.
214+
},
215+
],
216+
signed_record_destination = ".machine_readable/6a2/ratification-<session-id>.a2ml",
217+
must_precede_work = true,
218+
},
219+
220+
# --- Policy: ratification output ---
221+
# The ratification record IS the negotiation transcript + the
222+
# accountability pledge combined. One document; future-session
223+
# ground-truth for "what was agreed, who is accountable".
224+
ratification_record_shape = {
225+
includes_negotiation_transcript = true,
226+
includes_both_pledges = true,
227+
signed = true,
228+
dated = true,
229+
session_id = 'required,
230+
contract_hash = 'required, # pins what was actually signed
231+
},
148232
},
149233
},
150234

.machine_readable/contractiles/intend/intend.manifest.a2ml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,8 @@ context = "intend trident pilot — first Trident instance in the estate; templa
6666
date = "2026-04-18"
6767
event = "trident-born"
6868
note = "intend/Intentfile.a2ml pre-existed (f380b62, lust absorption). This manifest + intend.k9.ncl complete the trident for the first time."
69+
70+
[[history]]
71+
date = "2026-04-18"
72+
event = "negotiation-accountability-schema-landed"
73+
note = "intend.k9.ncl on_open hook extended: five negotiation inputs (timeline/standards/audience/invariants/dependencies), both-parties accountability pledge, plain-language-translation policy (AI authors spec form, user reviews in domain language). K9 metadata version bumped 1.0.0 → 2.0.0. Prerequisite for the adversarial Gemini+Copilot drift pilot; intend is the hardest verb (abstract north-star) so baking the full protocol here first means simpler verbs (trust, must) can inherit the template."

0 commit comments

Comments
 (0)