docs(adr): reconcile freshness, authority, and current state - #12
Conversation
…, TESTING branch-install note
dirvine
left a comment
There was a problem hiding this comment.
ADR review — head 2a50105f
Verdict: changes recommended before merge. The direction is good: separating production, consumption and volatile-data freshness is the right model. The six-reviewer pass was 5–1 on merge readiness: five recommend revision now; one would merge ADR-0013 as Proposed, but agreed it must not be Accepted or implemented as written.
Required
-
Fix the consumer-update identity in ADR-0013.
ADR-0013:30,43,46,78,84treats frontmatterversionas what drivesnpx skills update. The current Vercel CLI does not use it that way. Atvercel-labs/skillsheadcf4a3ea6, updates are based on stored source/ref/path and skill-folder/content hashes, then re-installation (src/update.ts:300-374,443-476,487-638;src/skill-lock.ts:15-35;src/local-lock.ts:15-37). A frontmatter change happens to alter the hash, but there is no semantic-version comparison or published-version lookup.Define currency as authenticated source identity + release/ref + artifact digest. If frontmatter SemVer is to become the cross-channel key, describe that as a new self-check contract rather than as current
skills.shbehaviour. Also clarify that an immutable installed tag will remain pinned unless update discovery deliberately moves to a newer release. -
Specify mechanism 4 as a trust protocol, not merely an “integrity-pinned source”.
ADR-0013:48-58leaves the load-bearing properties open. A fixed content digest cannot update; a pinned publisher identity can, but then the ADR needs the minimum contract: signed/versioned envelope, bundled trust root, canonical encoding/schema, key rotation/revocation, monotonic ordering/expiry, replay/downgrade rejection, authorised rollback, and explicit handling for malformed, unverifiable or conflicting responses.Keep live material typed and data-only. Signing proves who published content; it does not make free-form “advice” safe to inject into an agent’s instructions. The structured values block proposed in
planning/node-resource-spec-brief.md:119-121is the sound boundary; judgement-derived prose should remain reviewed bundle content.Also resolve the policy contradiction:
ADR-0013:49says “reachable → prefer it”, while:54and:85say fetched values are never silently/automatically applied. Define materiality, approval, unavailable-human behaviour, and when stale bundled values may support existing operation but must not authorise consequential scaling. -
Reconcile ADR-0013 with the existing decision set.
ADR-0013:46,58makes the channel-independent self-check optional, while ADR-0008:35 already requires one and DESIGN:61-63 describes it. Either mandate it or explicitly amend the earlier decision; otherwise the claim of channel independence atADR-0013:65is not true.ADR-0013:42-43implies blanket regeneration/re-release ofSKILL.mdand references, while ADR-0006:32-35 says mechanical content may regenerate and judgement-derived content must be flagged for review. Preserve that split and add a reviewed release/promotion gate.planning/REBUILD-BRIEF.md:79explicitly says no runtime live-fetch. ADR-0013 can change that proposal, but should record the reversal rather than leave two current contracts.
-
Complete ADR-0010’s treatment of the new decisions.
The additions at
ADR-0010:35,39,48-50—no surfaced autonomy tiers, no internal/build vocabulary, and judgement-based rather than mechanical translation—are sensible. However, the drivers/options/consequences/validation at:15-27,53-73still cover mainly the older disclosure/register decision.Either retain the rebuild brief’s plan for separate Proposed ADRs, or expand ADR-0010 so each addition has rationale, alternatives, trade-offs and tests. Add a mode-free default-deny rule for missing/ambiguous remit: least authority, safe reversible action only, otherwise ask/escalate/defer. Validation should exercise all three personas without self-classification and check the shipped product-facing boundary for forbidden build/process language. Define that boundary explicitly.
-
Fix the living handoff in this PR.
planning/HANDOFF.mdstill says ADR-0001–0012 only (:14), calls freshness a candidate ADR (:51), and says the ADR-0010 tightening is not authored (:53). Those statements become false on merge and are the clearest immediate merge blocker.
Checks
- ADR governance: pass — 13 ADRs
git diff --check: pass- GitHub ADR CI: pass
- PR head revalidated at
2a50105f7203bc33dff54a5367c393dde3fb3714 - Scope is documentation only; no shipped skill/runtime behaviour changed
…dd ADR-0014 (autonomy/product surface), trim ADR-0010, fix HANDOFF
dirvine
left a comment
There was a problem hiding this comment.
ADR re-review — head 7f3b2e2
Verdict: much improved; two small semantic corrections remain before merge.
The six-reviewer pass split 3–3 between merge-ready and conditional/block. I independently checked the disputed points. The earlier major findings are now substantially resolved: the current skills.sh identity/hash behaviour is described accurately; mechanism 4 is typed/data-only with explicit trust and human-approval boundaries; the ADR-0006 regeneration split is preserved; the live-fetch reversal is recorded; ADR-0014 cleanly separates autonomy/remit/product-surface concerns; and HANDOFF is current.
Required
-
Separate the current channel updater from the channel-independent self-check in ADR-0013.
ADR-0013:48accurately describes the current Vercel CLI: stored source/ref/path plus a folder hash. I rechecked this againstvercel-labs/skillshead5527c09(src/skill-lock.ts:15-31,181-201;src/local-lock.ts:15-35;src/update.ts:300-407).The remaining jump is at
ADR-0013:50,65,71: askills.shlock entry is channel-specific and need not exist for a native/direct copied bundle, yet the text calls the resulting self-check channel-independent and defers whether its currency key is frontmatter version or install identity/hash. Please define the minimum cross-channel contract separately — e.g. the bundle carries a canonical publisher/source identity plus its release/artifact identity, and checks a defined authenticated publication pointer. Channel-native lock/hash updating can remain one implementation; it is not itself the cross-channel contract.Also update
planning/NEXT-PHASE.md:26-28, which still says the model is undecided and repeats the now-corrected claim thatskills.shupdates through the frontmatter version. ADR-0013 points readers there for implementation, so leaving it stale recreates the ambiguity the ADR fixes.docs/DESIGN.md:61-63andplanning/ROADMAP.md:77-87should either be aligned or explicitly marked as superseded planning. -
Tighten ADR-0014’s validation wording.
ADR-0014:66says safety/escalation behaviour is identical across all three personas. The authority gates should be identical, but the escalation path is deliberately not:ADR-0010:35/DESIGN:89-112distinguish a present human, a proxy escalating to its principal, and an autonomous agent escalating asynchronously or deferring when nobody is reachable. Validate identical authority/safety gates, with disclosure and escalation routing appropriate to the supplied context — never a self-declared tier.
Non-blocking / correctly deferred
- Mechanism 4's envelope schema, cryptographic primitive, rotation procedure and materiality schema should be fixed before implementation/Acceptance, but they do not block merging a Proposed ADR:
ADR-0013:71,85-93explicitly defers and gates that mechanism. - ADR-0014's product-surface boundary currently holds: an exact scan of
skills/autonomi/SKILL.mdplusreferences/*.mdfound 0 hits for the stated forbidden vocabulary. CI linting would make this durable, but absence of that future enforcement is not a current semantic blocker.
Checks
- ADR governance: pass — 14 ADRs
git diff --check: pass- GitHub ADR CI: pass
- Current shipped-surface forbidden-vocabulary scan: 0 hits
- PR head revalidated at
7f3b2e2690975184ab88aba3910cbbe05b597812 - Docs-only; no shipped skill/runtime behaviour changed
Once the two wording/reconciliation points above are fixed, I would be comfortable with merging these as Proposed. Acceptance of ADR-0013 should still wait for the cross-channel identity and mechanism-4 protocol details to be concrete enough to test.
dirvine
left a comment
There was a problem hiding this comment.
Addendum to the re-review — two further authority conflicts
The delayed independent ADR reviewers completed after my review was posted. I checked their substantive findings against ADR-0004/0009 and DESIGN §13; two are valid and raise the verdict from “two small corrections” to request changes before merge. Please read this together with the review above.
3. Default-deny must not permit mutation outside remit
ADR-0014:36,43,67 currently allows a “least-authority, safe, reversible action” when remit is missing, ambiguous or would be exceeded. Safety/reversibility does not grant authority. This conflicts with:
ADR-0009:19,30,58: mutate only within granted remit; escalate rather than mutate outside it.ADR-0008:33: upgrades/mutations only within granted remit.ADR-0004:23,57,71: least privilege and explicit remit envelopes.
Please distinguish observation from mutation:
- missing/ambiguous remit → only permitted non-mutating observation needed to establish state/authority;
- exceeded remit → do not perform the proposed action;
- consequential/state-changing action → affirmative remit, otherwise ask/escalate/defer;
- any emergency containment exception needs a separately defined authority source and narrow bounds.
Validation should cover concrete cases: install/upgrade, start/stop, delete/reset, external-volume selection, spend, and read-only status/balance checks.
4. “Always surfaced to the human” conflicts with pre-authorised autonomous operation
ADR-0010:33,42,69 says money/risk/recovery/consent decisions are always surfaced to a human/every time, and DESIGN:116 mirrors it. That conflicts with:
ADR-0004:57: spend is controlled by granted envelopes, not per-action human approval;DESIGN:90-94: an autonomous agent may have no human in the operational loop and may have no reporting channel;ADR-0010:35: absent a human, the agent defers only at a gate it cannot cross.
Please separate:
- authority/envelope decisions or changes — must be explicitly granted or escalated, never inferred;
- within-remit actions — may proceed without per-action human approval;
- reporting/disclosure — adapted to the available channel, with audit where required;
- an unreachable authority gate — halt/defer rather than cross it.
This also reinforces the earlier correction to ADR-0014:66: authority gates are invariant across personas; escalation route, timing and disclosure are not.
Updated verdict
Not merge-ready at head 7f3b2e2. Required before merge:
- separate channel-native lock/hash updating from the cross-channel self-check and reconcile the stale planning/docs;
- make ADR-0014 validation preserve identical authority gates, not identical escalation behaviour;
- prohibit state mutation where remit is missing/ambiguous/exceeded;
- reconcile “always surfaced” with pre-authorised within-envelope autonomous action.
The mechanism-4 wire protocol and durable vocabulary lint remain pre-Acceptance/implementation work, not blockers to merging the ADRs as Proposed.
…PHASE and release-endpoint refresh DESIGN.md keeps the operator-era design intact and opens with a note on where the shipped prototype runs ahead of it (scope, custody, spend) and what happens once it is proven. CURRENT.md is a fresh checkpoint. HANDOFF.md (the living version from PR #12) now describes the prototype and its open threads. NEXT-PHASE §4/§5 record that the developer skill was folded into the single skill and that the VERSION self-check implements ADR-0013's simplest mechanism. The release-endpoint note records what changed since June and points at ant-client #190. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PeaSzqQSpHXvK67B5FGtQB
Summary
Documentation-only decision and current-state update. This revision resolves David Irvine's four requested changes, replaces the proposed in-skill self-version check with channel-owned update delivery, and keeps every changed ADR Proposed for renewed human review.
No skill implementation, installation manifest, CI workflow, test harness, repository visibility, or Accepted ADR changes in this PR.
Decisions and corrections
PATHis updated. README and HANDOFF therefore mark these as known examples rather than an exhaustive Windows audit, while the active resource brief records the correct Unix/Windows distinction.planning/channel-update-research.mdrecords fixed revisions, per-collection counts and documentation paths, a reproducible method, and the distinct global/project skills.sh updater paths.Current implementation boundary
This PR deliberately retains the current 0.1.0 skill and its legacy
metadata.openclawblock. OpenClaw's current parser ignores the block's unsupportedshell/powershellinstaller entries andcommand/verifiesfields, so no working OpenClaw installer or public ClawHub listing is claimed. No Claude Code plugin or PR #13 implementation is claimed here, and checksum/signature verification through the current script route is not implemented. README therefore labels the skill an internal preview.The unchanged installed skill still contains older "smaller, reversible action" wording, over-broad “every command and figure” provenance wording, and the Windows guidance defects described above. Proposed ADR-0014 and the clarified ADR-0006 are reviewed target policy, not a claim that this docs-only PR has already implemented them. Implementation reconciliation belongs to PR #13 after this decision PR lands.
Verification at current head
Current head:
c8ecb644ac366d5a2b9965ad1e3b95405e75ea56.GITHUB_BASE_REF=main python3 scripts/adr-governance.pypasses (14 ADR file(s) checked).git diff --check origin/main...HEADpasses.WithAutonomi/brandlock was retired without deleting its evidence; a manual Hermes review replaces that route for this checkpoint.GitHub ADR Governance is the CI green of record, but it checks ADR structure and immutable Accepted status rather than semantic correctness.
Scope and provenance
Original documentation authored by Jim Collinson with agent assistance. The review remediation was authored through OpenCode using GPT-5.6 Sol under Jim's direction. The work packet is
planning/packets/2026-Sep-05-pr12-review-remediation.md.Exact-head automated checks and Jim's ADR/Fable dispositions are recorded. Manual Hermes and renewed approving human review remain pending, so this is not ready to merge. Do not merge, accept ADRs, publish, or change repository visibility without the remaining human decisions.