harness-everything 0.18.1 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/AGENTS.md +3 -2
  4. package/CHANGELOG.md +8 -0
  5. package/README.md +21 -14
  6. package/bin/cli.js +16 -0
  7. package/ci/invariant-routing.test.js +42 -19
  8. package/ci/mechanism-2af-worktree-isolation.test.js +3 -3
  9. package/ci/mechanism-2ag-router-worktree-contract.test.js +1 -0
  10. package/ci/mechanism-2an-workflow-obligations.test.js +1 -0
  11. package/ci/mechanism-2ao-plugin-sync.test.js +163 -0
  12. package/ci/mechanism-33-issues-205-207.test.js +2 -2
  13. package/ci/openai-plugin-package.test.js +6 -6
  14. package/ci/router-workflow-plan.test.js +12 -9
  15. package/ci/workflow-execution-contract.test.js +2 -2
  16. package/docs/architecture.md +15 -15
  17. package/docs/enforcement-locks.md +17 -15
  18. package/docs/philosophy.md +43 -8
  19. package/docs/platform-capabilities.md +22 -2
  20. package/docs/platform-compatibility.json +4 -4
  21. package/docs/routing.md +23 -16
  22. package/docs/troubleshooting.md +8 -0
  23. package/docs/workflow-runtime.md +20 -19
  24. package/environment-detection/SKILL.md +3 -1
  25. package/evals/harness-everything/tasks/positive-tier1.yaml +1 -1
  26. package/evals/harness-everything/tasks/positive-tier2.yaml +1 -1
  27. package/evals/harness-everything/tasks/positive-tier3.yaml +1 -1
  28. package/evals/using-git-worktrees/tasks/positive-trigger.yaml +1 -1
  29. package/find-skills/SKILL.md +20 -29
  30. package/git-commit/SKILL.md +4 -4
  31. package/harness-everything/SKILL.md +16 -17
  32. package/harness-everything/references/triage-and-tiers.md +17 -16
  33. package/harness-everything/scripts/kernel-router-core.js +26 -24
  34. package/harness-everything/scripts/kernel-router.js +8 -8
  35. package/harness-everything/scripts/router-contract-core.js +7 -7
  36. package/harness-everything/scripts/router-contract.js +1 -1
  37. package/hooks/scripts/atomic-commit-check.js +1 -1
  38. package/hooks/scripts/boundary-guard.js +2 -2
  39. package/hooks/scripts/depth-guard.js +5 -6
  40. package/hooks/scripts/subagent-scope-guard.js +2 -2
  41. package/hooks/scripts/workflow-gate.js +1 -1
  42. package/install-cognitive-os/SKILL.md +3 -3
  43. package/opencode-plugin/plugin.json +1 -1
  44. package/package.json +4 -2
  45. package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
  46. package/plugins/harness-everything/hooks/scripts/atomic-commit-check.js +1 -1
  47. package/plugins/harness-everything/hooks/scripts/boundary-guard.js +2 -2
  48. package/plugins/harness-everything/hooks/scripts/depth-guard.js +5 -6
  49. package/plugins/harness-everything/hooks/scripts/subagent-scope-guard.js +2 -2
  50. package/plugins/harness-everything/hooks/scripts/workflow-gate.js +1 -1
  51. package/plugins/harness-everything/plugin.json +1 -1
  52. package/plugins/harness-everything/scripts/lib/advisory-text.js +19 -17
  53. package/plugins/harness-everything/skills/environment-detection/SKILL.md +3 -1
  54. package/plugins/harness-everything/skills/find-skills/SKILL.md +20 -29
  55. package/plugins/harness-everything/skills/git-commit/SKILL.md +4 -4
  56. package/plugins/harness-everything/skills/harness-everything/SKILL.md +16 -17
  57. package/plugins/harness-everything/skills/harness-everything/references/triage-and-tiers.md +17 -16
  58. package/plugins/harness-everything/skills/harness-everything/scripts/kernel-router-core.js +26 -24
  59. package/plugins/harness-everything/skills/harness-everything/scripts/kernel-router.js +8 -8
  60. package/plugins/harness-everything/skills/harness-everything/scripts/router-contract-core.js +7 -7
  61. package/plugins/harness-everything/skills/harness-everything/scripts/router-contract.js +1 -1
  62. package/plugins/harness-everything/skills/install-cognitive-os/SKILL.md +3 -3
  63. package/plugins/harness-everything/skills/rewrite-commits/SKILL.md +2 -2
  64. package/plugins/harness-everything/skills/to-tickets/SKILL.md +2 -2
  65. package/plugins/harness-everything/skills/using-git-worktrees/SKILL.md +6 -6
  66. package/rewrite-commits/SKILL.md +2 -2
  67. package/scripts/lib/advisory-text.js +19 -17
  68. package/scripts/plugin-sync.js +465 -0
  69. package/scripts/plugin-sync.ps1 +5 -0
  70. package/scripts/plugin-sync.sh +5 -0
  71. package/to-tickets/SKILL.md +2 -2
  72. package/using-git-worktrees/SKILL.md +6 -6
@@ -67,6 +67,7 @@ if (validContract(direct, 'direct-single')) {
67
67
  check(plan.strategy === 'direct-single', 'one-file trivial task selects direct-single');
68
68
  check(plan.strategySelection === 'selected', 'direct-single is a selected strategy');
69
69
  check(plan.requiredInvariants.includes('visible-status-updates'), 'every selected workflow carries the user-visible status invariant');
70
+ check(plan.requiredInvariants.includes('environment-alignment'), 'every selected workflow carries conditional environment-alignment MUST');
70
71
  check(plan.workspace.required === false, 'direct-single does not require a workspace');
71
72
  check(plan.parallelism.allowed === false, 'direct-single does not parallelize');
72
73
  }
@@ -76,15 +77,15 @@ if (validContract(iterative, 'iterative-single')) {
76
77
  const plan = iterative.contract.workflowPlan;
77
78
  check(plan.tier === 'tier2', 'ordinary test-first bug fix is tier2');
78
79
  check(plan.strategy === 'iterative-single', 'ordinary bug fix selects iterative-single');
79
- check(plan.limits.maxIterations === ITERATIVE_MAX_ITERATIONS, 'iterative-single retains an advisory iteration guidance value');
80
- check(plan.limits.maxRevisionRounds === WORKFLOW_MAX_REVISION_ROUNDS, 'workflow exposes an advisory revision guidance value');
81
- check(plan.limits.maxReplans === FABLE_MAX_REPLANS, 'workflow exposes an advisory replan guidance value');
82
- check(plan.limits.maxWorkers === FABLE_MAX_WORKERS, 'workflow exposes an advisory worker guidance value');
80
+ check(plan.limits.maxIterations === ITERATIVE_MAX_ITERATIONS, 'iterative-single retains a MAY iteration planning value');
81
+ check(plan.limits.maxRevisionRounds === WORKFLOW_MAX_REVISION_ROUNDS, 'workflow exposes a MAY revision planning value');
82
+ check(plan.limits.maxReplans === FABLE_MAX_REPLANS, 'workflow exposes a MAY replan planning value');
83
+ check(plan.limits.maxWorkers === FABLE_MAX_WORKERS, 'workflow exposes a MAY worker planning value');
83
84
  check(plan.requiredInvariants.includes('objective-verification'), 'iterative-single carries objective verification invariant');
84
- check(plan.requiredInvariants.includes('loop-awareness'), 'iterative-single carries loop-awareness guidance');
85
- check(plan.suggestedSkills.includes('tdd'), 'TDD stays advisory rather than an invariant');
85
+ check(plan.requiredInvariants.includes('loop-awareness'), 'iterative-single carries semantic loop-awareness obligation while numeric counts remain MAY');
86
+ check(plan.suggestedSkills.includes('tdd'), 'TDD remains applicability-conditional rather than a universal invariant');
86
87
  check(plan.memory.write === 'none', 'ordinary iterative work cannot write durable memory');
87
- check(!plan.requiredInvariants.includes('tdd'), 'suggested skills are separated from mandatory invariants');
88
+ check(!plan.requiredInvariants.includes('tdd'), 'suggested skill names remain separate from plan invariants until applicability is resolved');
88
89
  }
89
90
 
90
91
  const memoryPersist = runTier('Persist this lesson as memory after resolving the checkout regression.');
@@ -110,6 +111,8 @@ if (validContract(staged, 'fable-staged')) {
110
111
  check(plan.strategy === 'fable-staged', 'dependent multi-stage work selects fable-staged');
111
112
  check(plan.parallelism.allowed === false, 'dependent stages remain sequential');
112
113
  check(plan.verification.mode === 'cold-verifier', 'fable-staged requires cold verification');
114
+ check(plan.requiredInvariants.includes('isolated-worktree-before-mutation'), 'fable-staged carries mandatory isolation disposition');
115
+ check(plan.suggestedSkills.includes('using-git-worktrees'), 'fable-staged surfaces worktree resolution skill');
113
116
  }
114
117
 
115
118
  const parallelPrompt = 'Audit the entire repository with independent read-only security, architecture, and documentation workstreams.';
@@ -287,10 +290,10 @@ const kernelIterative = spawnSync(process.execPath, [kernelRouter, 'Fix this che
287
290
  encoding: 'utf8',
288
291
  });
289
292
  check(kernelIterative.stdout.includes('"strategy":"iterative-single"'), 'kernel consumes strategy from structured plan');
290
- check(kernelIterative.stdout.includes('loop-awareness:'), 'kernel prints dynamic plan guidance');
293
+ check(kernelIterative.stdout.includes('loop-awareness:'), 'kernel prints dynamic semantic plan obligations');
291
294
  check(kernelIterative.stdout.includes('visible-status-updates:'), 'kernel prints the user-visible status invariant');
292
295
  check(kernelIterative.stdout.includes('USER-VISIBLE HARNESS STATUS CONTRACT (MUST)'), 'kernel prints the canonical mandatory user-visible status contract');
293
- check(kernelIterative.stdout.includes(' - tdd'), 'kernel prints advisory skills separately');
296
+ check(kernelIterative.stdout.includes(' - tdd'), 'kernel prints suggested skills separately from required invariants');
294
297
 
295
298
  for (const schemaPath of [
296
299
  'harness-everything/schemas/router-task-shape.schema.json',
@@ -9,7 +9,7 @@ function runNode(args){return spawnSync(process.execPath,args,{cwd:ROOT,encoding
9
9
  console.log('=== Workflow Guidance Contract ===');
10
10
  for(const rel of ['harness-everything/scripts/kernel-router.js','hooks/scripts/workflow-gate.js','hooks/scripts/workflow-stop-gate.js','hooks/scripts/workflow-disposition.js','hooks/scripts/state-persist.js','hooks/scripts/rule-of-3.js','hooks/scripts/rule-of-3-tracker.js'])check(runNode(['--check',path.join(ROOT,rel)]).status===0,rel+' parses as valid JavaScript');
11
11
  const ctx={workflow:{workflowPlan:{limits:{maxIterations:8,maxRevisionRounds:2,maxReplans:2,maxWorkers:4}}}};
12
- for(const type of ['iteration','revision','replan','worker-acquire'])check(runtime.recordBudgetEvent(ctx,type,{evidence:'fixture'}).advisory===true,type+' is advisory rather than blocking');
12
+ for(const type of ['iteration','revision','replan','worker-acquire'])check(runtime.recordBudgetEvent(ctx,type,{evidence:'fixture'}).advisory===true,type+' remains a MAY planning hint rather than blocking');
13
13
  check(runtime.mutationProbeReservations(ctx)===0,'mutation probes reserve no capacity');
14
14
  check(runtime.registerMutationProbe(ctx,'x','y')===null,'mutation probe registration is a no-op');
15
15
  check(runtime.resetWorkflowBudget(ctx,'legacy').retired===true,'reset-budget API is retired compatibility only');
@@ -51,5 +51,5 @@ try{
51
51
  check(stale.includes('independent-verifier-missing'),'Fable independent verifier is invalidated by newer handoff shell-edit evidence');
52
52
  }finally{fs.rmSync(freshnessRoot,{recursive:true,force:true});}
53
53
 
54
- console.log('\n'+(failed===0?'PASS':'FAIL')+': workflow guidance contract ('+failed+' failures)');
54
+ console.log('\n'+(failed===0?'PASS':'FAIL')+': workflow semantic contract mechanics ('+failed+' failures)');
55
55
  process.exit(failed===0?0:1);
@@ -9,16 +9,16 @@ Harness is a **behavior and workflow observer/router**, not a universal fixed wo
9
9
  The minimal kernel establishes:
10
10
 
11
11
  - scope/tier before mutation,
12
- - a selected workflow topology as planning guidance when task evidence supports one,
12
+ - a selected workflow topology as a semantic execution contract when task evidence supports one,
13
13
  - applicability evaluation for every suggested skill before omission,
14
14
  - objective evidence before completion,
15
15
  - bounded re-plan/recovery after repeated failure,
16
16
  - explicit warnings/degraded/escape evidence instead of silent workflow deletion;
17
17
  - one mandatory user-visible Harness Status protocol for non-trivial work, independent of execution topology.
18
18
 
19
- > **Guidance-first workflow; flexible reasoning/implementation and execution.**
19
+ > **Contract-first lifecycle; flexible reasoning/implementation and execution.**
20
20
  >
21
- > Suggested skills and topology are evaluated from their real flows. Missing or skipped cognitive workflow steps produce evidence/reminders rather than persistent Harness locks.
21
+ > Suggested skills MUST be evaluated from their real flows. Applicable skill core contracts and selected-topology obligations are semantic MUSTs; missing evidence produces reminders rather than persistent Harness locks.
22
22
 
23
23
  This avoids both extremes: no universal Tier-2/Tier-3 pipeline and no maze of self-deadlocking cognitive gates.
24
24
 
@@ -50,8 +50,8 @@ flowchart TD
50
50
  - selected/deferred execution strategy,
51
51
  - required invariants,
52
52
  - suggested skills that require applicability evaluation,
53
- - the visible routing checkpoint,
54
- - a workflow guidance.
53
+ - the internal routing checkpoint,
54
+ - the semantic workflow contract.
55
55
 
56
56
  The router does not tell the model *how* to solve each stage. It decides what lifecycle shape is required. `direct-single`, `iterative-single`, `fable-staged`, `fable-parallel`, and `fable-multi-agent-workspace` remain deliberately small, non-overlapping topology choices.
57
57
 
@@ -78,7 +78,7 @@ This is a semantic contract, not another cognitive lock. Hook-capable hosts may
78
78
 
79
79
  Router suggestions remain useful domain/workflow knowledge, not a universal sequence. Before omission, the agent reads the complete `SKILL.md` entry and evaluates `USE FOR`, `DO NOT USE FOR`, workflow/basic flow, and hard rules. Name/description/router-summary or “routine task” is insufficient evidence.
80
80
 
81
- The selected topology is a structured planning aid; it does not become a persistent execution lock.
81
+ The selected topology is a semantic lifecycle contract, not a persistent execution lock. Required obligations MUST resolve; implementation tactics MAY adapt.
82
82
 
83
83
  ### Runtime workflow state
84
84
 
@@ -91,13 +91,13 @@ For selected Fable topologies on Claude:
91
91
  - `workflow-stop-gate.js` reports unresolved stage/verification evidence without rejecting Stop;
92
92
  - `workflow-disposition.js` records explicit lifecycle/audit decisions; numeric budgets are no longer authoritative control state.
93
93
 
94
- Other topologies use their own applicable mechanisms: advisory loop-awareness reminders, regular verification stop-gates, action gates, and task-specific skills. Mechanism coverage is not assumed identical across hosts.
94
+ Other topologies use their own applicable mechanisms: MAY-level loop-awareness planning hints, regular verification stop-gates, action gates, and task-specific skills. Mechanism coverage is not assumed identical across hosts.
95
95
 
96
96
  ### Scoped runtime advisories and capabilities
97
97
 
98
98
  Two kernel mechanisms annotate plans without creating hard workflow enforcement:
99
99
 
100
- - **Ensemble policy (`harness-everything/scripts/ensemble-policy.js`):** an advisory plan annotation, not a separate topology. It is selected only when uncertainty is high (or stakes are high) **and** the task asks for comparable outputs or preserves explicit disagreement **and** the selected strategy is already `fable-*`. Creative generation, mechanical bulk work, an explicit user prohibition, unavailable subagents, or a blocked base plan force exclusion. When selected, the plan caps at 3 candidates with `preserve-disagreement` synthesis, an independent verifier, and `parallel-self-consistency` pattern invariants. Covered by deterministic mechanism tests; no live-host effectiveness claim follows from the annotation alone.
100
+ - **Ensemble policy (`harness-everything/scripts/ensemble-policy.js`):** optional selection is a **MAY** capability, not a separate topology. It is selected only when uncertainty is high (or stakes are high) **and** the task asks for comparable outputs or preserves explicit disagreement **and** the selected strategy is already `fable-*`. Creative generation, mechanical bulk work, an explicit user prohibition, unavailable subagents, or a blocked base plan force exclusion. Once selected, preserving disagreement, using an independent verifier, and honoring the plan's ensemble invariants are **MUST** obligations. Covered by deterministic mechanism tests; no live-host effectiveness claim follows from the annotation alone.
101
101
  - **Single-use memory capability (`kernel-router.js#issueMemoryCapability`):** when the selected plan permits memory writes, the router issues one capability token bound to `sessionId`/`workflowId` with a stored SHA-256 hash (`memoryAuthorization`, coordinator-only writer role, `usedAt` tracking). Plans with `memory.write === 'none'` receive no capability. This binds a memory write to the workflow that authorized it; it is not a general credential and proves nothing about a live host honoring the binding.
102
102
 
103
103
  ### PreToolUse guard trio and denied-mutation probes
@@ -105,7 +105,7 @@ Two kernel mechanisms annotate plans without creating hard workflow enforcement:
105
105
  On the Claude hook path, three narrowly scoped `PreToolUse` guards sit alongside the workflow/action gates:
106
106
 
107
107
  - `boundary-guard.js` (Grep/Glob/Read): warns about very large reads and noisy search roots; it fails open.
108
- - `depth-guard.js` (Write): blocks overwriting an existing file that was never Read earlier in the session transcript. New files are unaffected. Fails open on parse/lookup errors.
108
+ - `depth-guard.js` (Write): reminds when an existing file would be overwritten without prior inspection. The semantic obligation to establish current target state before destructive overwrite is a **MUST**; the hook itself stays fail-open. New files are unaffected.
109
109
  - `context-compact.js`: estimates working-tree context pressure from `git status`/`git diff --numstat` so later stages can compact or halt before lost-in-the-middle degradation.
110
110
 
111
111
  Shell mutation observation is best-effort evidence for reminders. The old mutation-probe reservation/lock subsystem was retired by #190.
@@ -118,23 +118,23 @@ Harness aligns to each host's actual lifecycle/tool APIs. Shared skill text defi
118
118
 
119
119
  Runtime state includes hook metadata, workflow lifecycle, circuit-breaker counters, handoff/verification evidence, and WAL-style session state. Skill content is independently discoverable and remains useful on instruction-only surfaces.
120
120
 
121
- ### Claude Code — hook guidance plus explicit safety boundaries
121
+ ### Claude Code — hook observation plus explicit safety boundaries
122
122
 
123
123
  The installer configures native lifecycle hooks and project skills.
124
124
 
125
125
  - `SessionStart`: bootstrap/restoration.
126
- - `UserPromptSubmit`: kernel routing + workflow guidance.
126
+ - `UserPromptSubmit`: kernel routing + semantic workflow contract.
127
127
  - `PreToolUse`: workflow/boundary/depth/scope reminders, plus separate action permission and Rule-of-3 boundaries.
128
128
  - `PostToolUse`: outcomes, state, repeated-failure evidence, stage checks.
129
129
  - `Stop`: action-gate audit plus non-blocking workflow/verification reminders.
130
130
 
131
- These hooks make reminders observable; they do not promote cognitive workflow guidance into hard enforcement.
131
+ These hooks make semantic obligations observable; they do not promote cognitive workflow contracts into hard enforcement.
132
132
 
133
133
  ### OpenCode — plugin enforcement, scoped live verification
134
134
 
135
135
  The retained [OpenCode evidence](../benchmarks/results/live-host/opencode-2026-09-16/README.md) supports **project-scope `.js` loading and edit/verification state on OpenCode 1.18.31 (macOS)**. The final snapshot is **post-reset**. Hard-lock is an **interactive observation** with **no retained blocked-tool trace**; reflection was **operator-seeded** and then agent-rewritten. Global scope, npm-package installation, and other OpenCode versions remain unverified.
136
136
 
137
- This evidence predates #190 and does not establish behavioral effectiveness of the current guidance-first lifecycle.
137
+ This evidence predates #190 and does not establish behavioral effectiveness of the current contract-first lifecycle.
138
138
 
139
139
  ### Cursor — skills plus advisory rules
140
140
 
@@ -148,7 +148,7 @@ Copilot receives Agent Skills/repository instructions. No Harness-specific live
148
148
 
149
149
  Codex has multiple distinct Harness surfaces:
150
150
 
151
- - The general `--codex` installer writes repo-scoped `.agents/skills/` plus `AGENTS.md`; when consumed only as instructions, workflow enforcement is advisory/instruction-governed.
151
+ - The general `--codex` installer writes repo-scoped `.agents/skills/` plus `AGENTS.md`; when consumed only as instructions, the same semantic contract is instruction-delivered without a hard-enforcement claim.
152
152
  - The **Codex / local OpenAI plugin** under `plugins/harness-everything/` packages canonical skills plus session/prompt/supported-tool/subagent/stop hooks. The package includes workflow-gate adapters, but this is mechanism/package evidence until a live Codex session proves loading/firing.
153
153
  - The public OpenAI **Skills-only** artifact excludes local `.codex-plugin` lifecycle hooks; it carries reusable workflow knowledge, not local hard gates.
154
154
 
@@ -204,7 +204,7 @@ A domain skill may define RED/GREEN/REFACTOR or another local lifecycle. The sel
204
204
 
205
205
  1. **No Harness telemetry service:** project code/state is not uploaded by Harness runtime scripts.
206
206
  2. **Credential protection:** credentials remain human/host controlled.
207
- 3. **Small mechanism surface:** hooks should remain fast and auditable.
207
+ 3. **Small mechanism surface:** hooks **SHOULD** remain fast and auditable.
208
208
  4. **Explicit enforcement labels:** instruction, mechanism, and live evidence are distinct.
209
209
  5. **Deterministic regression:** workflow/routing/hook contracts are executable CI gates.
210
210
  6. **No silent widening:** workflow escape cannot widen authorization, permissions, or external side effects.
@@ -1,21 +1,23 @@
1
- # Guidance and Safety Boundary Diagnostic Flows
1
+ # Semantic Contracts and Safety Boundary Diagnostic Flows
2
2
 
3
- Harness deliberately separates **cognitive guidance** from **authorization/safety boundaries**.
3
+ Harness deliberately separates **semantic obligation strength** from **mechanical enforcement** and from **authorization/safety boundaries**. Canonical MUST/SHOULD/MAY definitions live in [philosophy.md](philosophy.md#contract-strength-must--should--may).
4
4
 
5
5
  ## Classification
6
6
 
7
- | Mechanism | Behavior | Hard block? |
8
- |---|---|---|
9
- | Workflow routing/state | Remind about selected topology, stale/blocked descriptive state, missing Fable correlation, or safer worktree usage | No |
10
- | Iteration/revision/replan/worker guidance | Planning hints only | No |
11
- | Verification / Stop | Remind when no successful verification is observed after an edit | No |
12
- | Boundary guard | Warn about very large reads or noisy search roots | No |
13
- | Depth guard | Remind when editing a file that has not been inspected | No |
14
- | Subagent scope guard | Report ambiguous/out-of-scope changes for review | No |
15
- | Atomic commit check | Warn when changes look broader than one atomic concern | No |
16
- | Fable contract test | Record pass/fail/ambiguity/dependency evidence and warn | No |
17
- | Rule of 3 | Third matching failure requires a zoom-out reflection before more mutation | **Yes — intentional cognitive boundary** |
18
- | Action/permission gate | User/host authorization for destructive or external side effects | **Yes — trust boundary** |
7
+ | Mechanism / obligation | Semantic strength | Runtime behavior | Hard block? |
8
+ |---|---|---|---|
9
+ | Workflow routing / selected topology | **MUST** resolve required obligations | Observe/remind about unresolved lifecycle evidence | No |
10
+ | Suggested skill applicability | **MUST** evaluate; applicable core contract **MUST** run | Kernel/instructions expose dispositions | No |
11
+ | Iteration/revision/replan/worker numbers | **MAY** guide planning | Planning hints only | No |
12
+ | Verification before claim | **MUST** | Stop/hooks remind when evidence is missing | No |
13
+ | Boundary guard / huge-noisy context | **SHOULD** narrow reads/searches | Warn | No |
14
+ | Destructive overwrite target inspection | **MUST** establish current state | Depth guard reminds/fails open on mechanism errors | No |
15
+ | Tier-3/Fable isolation disposition | **MUST** resolve worktree or degraded fallback | Warn when unresolved | No |
16
+ | Subagent declared scope / unexpected writes | **MUST** respect and reconcile | Report ambiguous/out-of-scope changes | No |
17
+ | Commit scope | Staged diff review **MUST**; split unrelated concerns **SHOULD** | Atomic-commit reminder | No |
18
+ | Fable stage/check/synthesis/verifier | **MUST** when selected | Record pass/fail/ambiguity/dependency evidence and remind | No |
19
+ | Rule of 3 | Third matching failure **MUST** trigger zoom-out | Pause mutation until reflection | **Yes — intentional cognitive boundary** |
20
+ | Action/permission gate | Approval **MUST** precede governed side effects | Host/user authorization | **Yes — trust boundary** |
19
21
 
20
22
  ## Rule of 3
21
23
 
@@ -41,7 +43,7 @@ The previous numeric enforcement required mutation probes, stale-probe recovery,
41
43
 
42
44
  The design test is simple:
43
45
 
44
- > If better cognitive guidance requires another lock, lease, heartbeat, counter-recovery protocol, or parser exception, prefer a reminder.
46
+ > If observing a semantic obligation would require another lock, lease, heartbeat, counter-recovery protocol, or parser exception, use a reminder instead. The reminder changes the **mechanism**, not the obligation's MUST/SHOULD/MAY strength.
45
47
 
46
48
  ## Troubleshooting
47
49
 
@@ -9,17 +9,52 @@ The mechanism/enforcement boundary remains platform-specific; see [Platform Capa
9
9
  ## Core Philosophy: Constrain Lifecycle, Not Reasoning
10
10
 
11
11
  1. **Reasoning autonomy remains high.** The model chooses implementation technique, tools, decomposition details, and tactics inside the selected workflow.
12
- 2. **Applicable workflow is guidance: routing should make useful structure visible without taking execution agency away from the model/user.
13
- 3. **Skill applicability is explicit.** Router-suggested skills are read/evaluated before omission. A suggestion can be `not-applicable` when its actual flow does not match; a selected topology is stronger and cannot simply be skipped.
12
+ 2. **Selected lifecycle obligations are contracts, not advice.** Once a topology is selected, its required invariants, stages, checks, synthesis barriers, and verification obligations are semantic MUSTs. The model remains free to decide how to satisfy them.
13
+ 3. **Skill applicability is explicit.** Every router-suggested skill MUST be read/evaluated before omission. If its real flow is applicable, its core contract MUST be followed; if it is not applicable, the agent MUST keep a flow-grounded reason.
14
14
  4. **Escape is conditional, not default.** If the selected workflow genuinely cannot represent part of the task, record the uncovered scope and evidence, then allow model-defined handling only for that uncovered portion.
15
- 5. **Mechanisms beat stronger wording.** Important lifecycle transitions should use structured state, objective evidence, hooks/plugins, exit codes, and completion gates where the host supports them rather than escalating `MUST`/`CRITICAL` prose.
15
+ 5. **Mechanisms do not define obligation strength.** Hooks/plugins may observe, remind, or mechanically block where the host supports them, but a missing blocking mechanism does not downgrade a semantic MUST to optional advice.
16
16
 
17
17
  This principle can be summarized as:
18
18
 
19
- > **guidance-first applicable workflow; flexible reasoning/implementation inside it; evidence-backed escape only where the workflow does not cover the task.**
19
+ > **contract-first lifecycle; flexible reasoning/implementation inside it; evidence-backed escape only where the workflow does not cover the task.**
20
20
 
21
21
  The goal is not to make the model less capable. It is to prevent capability/confidence from silently deleting engineering obligations such as verification, bounded re-planning, stage checks, documentation checks, or safety gates when those obligations are applicable.
22
22
 
23
+ ## Contract Strength: MUST / SHOULD / MAY
24
+
25
+ Harness uses three semantic strengths. Recommendation-style language is the last choice, not the default for important behavior.
26
+
27
+ | Strength | Meaning | Typical use |
28
+ |---|---|---|
29
+ | **MUST** | Skipping the obligation violates the Harness semantic contract. Host enforcement may still be reminder-only. | routing, applicability resolution, applicable skill core contracts, selected-topology obligations, verification-before-claim, status, scope/safety/authorization evidence |
30
+ | **SHOULD** | The default is expected, but a concrete evidence-based exception is legitimate. | ordinary isolation, targeted editing, splitting mixed commit concerns, context-size/noisy-search discipline |
31
+ | **MAY** | Optional optimization/capability. Omitting it needs no exception unless another contract selected it. | numeric planning hints, optional ensemble selection, extra deep references, opportunistic parallelism |
32
+
33
+ Do not use `recommend`, `prefer`, `advisory`, or `guidance` to weaken a MUST. Those words are reserved for actual SHOULD/MAY behavior or for describing the host's **mechanical delivery mode** (for example, an instruction-only surface).
34
+
35
+ The repository-wide classification for #217 is:
36
+
37
+ | Obligation | Strength |
38
+ |---|---|
39
+ | Route before software/project execution | **MUST** |
40
+ | Read/evaluate every suggested skill before omission | **MUST** |
41
+ | Follow an applicable suggested skill's core contract; otherwise keep a flow-grounded not-applicable reason | **MUST** |
42
+ | Resolve selected-topology invariants/stages/checks/synthesis/verification | **MUST** |
43
+ | Choose tools, implementation technique, decomposition details, and local tactics | **MAY** within the MUST contract |
44
+ | Verify before claiming completion | **MUST** |
45
+ | Emit the unified Harness Status for non-trivial work | **MUST** |
46
+ | Discover relevant environment/host facts before relying on environment-sensitive behavior | **MUST** |
47
+ | Establish current target state before destructive overwrite/rewrite | **MUST** |
48
+ | Resolve Tier-3/Fable isolation before broad mutation: linked worktree or explicit degraded fallback | **MUST** |
49
+ | Use isolation for ordinary work when it materially reduces collision/risk | **SHOULD** |
50
+ | Honor Fable stage contracts, checks, synthesis barrier, and cold verifier when selected | **MUST** |
51
+ | Keep delegated agents inside declared scope and reconcile unexpected writes | **MUST** |
52
+ | Inspect the staged diff/commit scope before committing | **MUST**; split unrelated concerns **SHOULD** |
53
+ | Avoid huge/noisy reads/searches when a narrower query is sufficient | **SHOULD** |
54
+ | Numeric iteration/revision/replan/worker values | **MAY** guide planning; never hard-block |
55
+ | Select ensemble review | **MAY** when task shape warrants it; once selected, disagreement preservation and independent verification are **MUST** |
56
+ | Durable memory writes | **MUST** be authorized by the active workflow/session contract |
57
+
23
58
  ## Why This Is Not a Rigid Global Pipeline
24
59
 
25
60
  Harness still rejects a universal `TODO → TDD → Fable → verification` sequence.
@@ -38,19 +73,19 @@ Domain skills remain conditional on applicability. The contract says “execute
38
73
 
39
74
  ### 1. Environment Alignment — Discovery over Assumption
40
75
 
41
- Discover OS, shell, package/runtime context, repository boundaries, and available host capabilities before relying on them. On surfaces that package preflight/session hooks this can be injected automatically; instruction-only hosts must do it explicitly.
76
+ Relevant environment discovery is a conditional **MUST**: establish OS, shell, package/runtime context, repository boundaries, and host capabilities before relying on environment-sensitive behavior. On surfaces that package preflight/session hooks this may be injected automatically; instruction-only hosts MUST do it explicitly when needed.
42
77
 
43
78
  ### 2. Guardrails — Lifecycle Boundaries
44
79
 
45
- Circuit breakers, action gates, workflow gates, scope guards, and completion gates protect specific transitions. They should remain narrow and evidence-driven. On integration surfaces that expose the required lifecycle/tool hooks, Harness can mechanically block supported violations; elsewhere the same contract is instruction-governed and must not be mislabeled hard enforcement.
80
+ Circuit breakers, action gates, workflow gates, scope guards, and completion gates protect specific transitions. They **SHOULD** remain narrow and evidence-driven. On integration surfaces that expose the required lifecycle/tool hooks, Harness can mechanically block supported violations; elsewhere the same contract is instruction-governed and must not be mislabeled hard enforcement.
46
81
 
47
82
  ### 3. Context Preservation — Progressive Disclosure
48
83
 
49
- Load the smallest useful context. Read a suggested skill's complete entry before deciding applicability, but do not load the entire skill tree or every optional deep reference. Machine-visible workflow state should carry lifecycle facts instead of repeating large prompt blocks.
84
+ **SHOULD** load the smallest useful context. A suggested skill's complete entry **MUST** be read before deciding applicability; optional deep references **MAY** remain unloaded unless needed. Machine-visible workflow state SHOULD carry lifecycle facts instead of repeating large prompt blocks.
50
85
 
51
86
  ### 4. Self-Evolution — Learn from Workflow Evidence
52
87
 
53
- `self-evolve` should learn from verified recovery and workflow gaps: escape events, repeated replans, verifier fail→pass transitions, and recurrence outcomes. It should improve future coverage rather than granting a shortcut around the current workflow. Durable learning remains distinct from runtime session state.
88
+ `self-evolve` **MUST** ground durable learning in verified recovery/workflow evidence. Escape events, repeated replans, verifier fail→pass transitions, and recurrence outcomes **MAY** provide that evidence. Durable learning MUST improve future coverage rather than grant a shortcut around the current workflow, and remains distinct from runtime session state.
54
89
 
55
90
  ## Mechanism-First Cooperation
56
91
 
@@ -27,9 +27,9 @@ This is a **repository/agent contract**, not an automatic upgrade to any platfor
27
27
 
28
28
  | Platform surface | Standalone skills | Plugin support | Hooks/lifecycle | Project scope | Global scope | Current evidence boundary |
29
29
  | --- | --- | --- | --- | --- | --- | --- |
30
- | Codex | `Supported` | `Mechanism verified` | `Mechanism verified` for the local OpenAI package, including session, prompt, supported-tool, subagent, and stop hooks | `.agents/skills/`, `AGENTS.md` | `~/.agents/skills/` | Local package hooks are mechanically checked; live loading and marketplace refresh remain `Unknown`. |
30
+ | Codex | `Supported` | `Mechanism verified` | `Mechanism verified` for the local OpenAI package, including session, prompt, supported-tool, subagent, and stop hooks | `.agents/skills/`, `AGENTS.md` | `~/.agents/skills/` | Local package hooks and the state-specific marketplace sync command are mechanically checked; live loading and marketplace refresh remain unverified. |
31
31
  | ChatGPT / OpenAI Plugin | `Unknown` for a repository-local standalone path | `Mechanism verified` | `Partial`: local Work/Codex hooks are separate from ordinary Chat | Managed workspace marketplace | Not established | The public Skills-only bundle is mechanically reproducible; import, approval, and live behavior remain `Unknown`. |
32
- | Claude Code | `Supported` | `Supported` | `Mechanism verified` for Harness configuration | `.claude/skills/` | `~/.claude/skills/` | Native Claude surfaces are documented and package/installer checks pass; fresh-host execution is not preserved here. |
32
+ | Claude Code | `Supported` | `Supported` | `Mechanism verified` for Harness configuration | `.claude/skills/` | `~/.claude/skills/` | Native Claude surfaces and the state-specific plugin sync command are mechanically checked; fresh-host execution is not preserved here. |
33
33
  | OpenCode | `Supported` | `Partial` live-host loading for the project-scope, `.js`-filename install path on OpenCode 1.18.31 (macOS); other install paths remain `Mechanism verified` | `Partial` live-host evidence for project-scope `.js` loading and edit/verification state; hard lock reported only, with no retained blocked-tool trace and a post-reset final snapshot | `.opencode/skills/`, `.agents/skills/`, `.opencode/plugins/` | `~/.config/opencode/skills/`, `~/.agents/skills/`, `~/.config/opencode/plugins/` | [Retained evidence](../benchmarks/results/live-host/opencode-2026-09-16/README.md): loading and state effects verified in one host session; final snapshot post-reset; hard lock only an interactive observation; reflection operator-seeded, then agent-rewritten; no raw transcript or behavioral-effectiveness claim. `.mjs` auto-discovery broken (issue #127); global scope, npm-package installation, and other host versions remain unverified. |
34
34
  | GitHub Copilot agent surfaces | `Supported` | `Unknown` for a Harness-specific plugin install | `Unknown` | `.github/skills/`, `.agents/skills/`, repository instructions | `~/.copilot/skills/`, `~/.agents/skills/` | GitHub Agent Skills paths and installer behavior are checked; no live Copilot session or plugin install is preserved. |
35
35
  | Cursor | `Supported` | `Mechanism verified` for the portable package shape | `Unknown` for Harness | `.cursor/skills/`, `.agents/skills/` | `~/.cursor/skills/`, `~/.agents/skills/` | Official paths and package shape are checked; Cursor plugin loading and hooks remain unverified. |
@@ -64,6 +64,26 @@ Codex has two paths that must not be collapsed:
64
64
 
65
65
  The package is tested at the mechanism layer and remains subject to the host’s hook review/trust flow. A fresh host session is still required before claiming that a particular ChatGPT/Codex installation loaded and fired the hooks or that the model followed read-before-skip.
66
66
 
67
+ ### Native plugin install/update synchronization
68
+
69
+ The repository also ships a host-facing synchronization command for the native marketplace/plugin surfaces:
70
+
71
+ ```bash
72
+ npx github:dyphn1/Harness-everything plugin-sync
73
+ # or, from a checkout:
74
+ ./scripts/plugin-sync.sh
75
+ powershell -File scripts/plugin-sync.ps1
76
+ ```
77
+
78
+ The command detects Claude Code and Codex independently, ensures the Harness marketplace is configured, reads the installed-plugin state, then refreshes that marketplace before choosing the operation:
79
+
80
+ - absent plugin → install;
81
+ - existing Claude Code plugin → `claude plugin update harness-everything@harness-everything`;
82
+ - existing Codex plugin → `codex plugin marketplace upgrade harness-everything`;
83
+ - unknown plugin state → fail closed, with no blind install/re-add.
84
+
85
+ The installed branch is intentionally an update branch even when the current release is already the newest version; the host command may report “already latest.” Codex marketplace upgrade is the current native refresh operation; the command does not edit private cache paths or `config.toml`. These are deterministic command/state tests, not live-host evidence, so `liveHostVerification` remains `Unknown` in the matrix.
86
+
67
87
  ### Explicit Codex user-hook compatibility fallback
68
88
 
69
89
  Current Codex documentation supports plugin-bundled hooks, so native plugin mounting remains the preferred path. Some host/source combinations have nevertheless failed to expose enabled plugin hooks for review/entry attribution (#122 and upstream Codex reports). Harness therefore provides an **explicit compatibility fallback**, not an automatic replacement for native plugin hooks:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "format": "harness-platform-compatibility-v1",
3
- "last_reviewed": "2026-09-19",
3
+ "last_reviewed": "2026-09-21",
4
4
  "status_vocabulary": {
5
5
  "Supported": "An official or native mechanism exists and the Harness behavior is verified.",
6
6
  "Mechanism verified": "Harness package, adapter, or installer checks pass, but a real host run is not confirmed.",
@@ -114,7 +114,7 @@
114
114
  "globalScope": {"status": "Mechanism verified", "paths": {"skills": ["~/.agents/skills"]}},
115
115
  "installUninstallSymmetry": {"status": "Mechanism verified", "notes": "General Harness installer ownership is mechanism-tested. The optional codex-hooks compatibility fallback separately has exact-entry update/uninstall ownership tests and preserves unrelated user hooks; live Codex trust/dispatch still requires host evidence."},
116
116
  "assetsReferences": {"status": "Mechanism verified", "notes": "Packaged skill references are checked and remain inside the package."},
117
- "updateSync": {"status": "Unknown", "notes": "A real marketplace refresh has not been run in a Codex host."},
117
+ "updateSync": {"status": "Mechanism verified", "notes": "scripts/plugin-sync.js detects installed state and uses marketplace upgrade for an installed Codex plugin; no live Codex host refresh is preserved."},
118
118
  "liveHostVerification": {"status": "Unknown", "notes": "No preserved Codex plugin/session artifact proves current bundled-hook entry. Native plugin mounting is preferred; the explicit user-hook fallback is mechanism-verified only and does not solve host carriers that bypass hook dispatch."}
119
119
  }
120
120
  },
@@ -159,7 +159,7 @@
159
159
  "globalScope": {"status": "Mechanism verified", "paths": {"skills": ["~/.claude/skills"], "hooks": ["~/.claude/settings.json"]}},
160
160
  "installUninstallSymmetry": {"status": "Mechanism verified", "notes": "Owned settings, skills, agents, and user files are covered by round-trip tests."},
161
161
  "assetsReferences": {"status": "Mechanism verified", "notes": "Skill-local references, scripts, and templates are checked."},
162
- "updateSync": {"status": "Unknown", "notes": "A live marketplace update has not been run in Claude Code."},
162
+ "updateSync": {"status": "Mechanism verified", "notes": "scripts/plugin-sync.js detects installed state and uses the explicit Claude plugin update command for an installed plugin; no live Claude host refresh is preserved."},
163
163
  "liveHostVerification": {"status": "Unknown", "notes": "No fresh Claude Code plugin session artifact is committed for this revision."}
164
164
  }
165
165
  },
@@ -267,4 +267,4 @@
267
267
  }
268
268
  }
269
269
  ]
270
- }
270
+ }
package/docs/routing.md CHANGED
@@ -4,9 +4,9 @@ Harness classifies software work and selects the smallest sufficient execution t
4
4
 
5
5
  The current architecture follows two coupled rules:
6
6
 
7
- > **Guidance-first workflow; flexible reasoning/implementation and execution.**
7
+ > **Contract-first lifecycle; flexible reasoning/implementation and execution.**
8
8
  >
9
- > **Skill applicability is evaluated explicitly; skipped guidance should have a concise evidence-based reason.**
9
+ > **Skill applicability is explicit: evaluation is mandatory, applicable core contracts are mandatory, and not-applicable dispositions require evidence.**
10
10
 
11
11
  A strong model remains free to decide *how* to perform the work. It may not decide that an applicable selected lifecycle can be skipped because the task feels simple or already understood.
12
12
 
@@ -18,7 +18,7 @@ For software/project work, Harness establishes routing context and lightweight r
18
18
  2. **Verify before claim** — completion requires objective evidence appropriate to the change.
19
19
  3. **Re-plan after repeated failure** — after three same-signature failures, stop micro-retrying and use a fresh diagnosis / `zoom-out`.
20
20
  4. **Evaluate before omission** — read every suggested skill's complete `SKILL.md` entry before deciding applicability.
21
- 5. **Review selected workflow** — use it as planning guidance and surface unresolved evidence before claiming completion.
21
+ 5. **Resolve selected workflow** — satisfy the selected topology's required obligations before completion; tactics MAY adapt, but required lifecycle evidence cannot be silently skipped.
22
22
  6. **Surface status** — non-trivial work MUST keep the user informed through the single Harness Status format at required phase boundaries.
23
23
 
24
24
  The model owns tools, implementation technique, reasoning, and decomposition details inside those rails.
@@ -28,10 +28,10 @@ The model owns tools, implementation technique, reasoning, and decomposition det
28
28
  ```text
29
29
  kernel-router.js
30
30
  ├─ delegates classification / guide discovery → tier-router.js
31
- ├─ preserves tier + rationale + dynamic-skill recommendations
31
+ ├─ preserves tier + rationale + dynamic-skill suggestions
32
32
  ├─ emits required invariants + structured workflow plan
33
33
  ├─ requires applicability evaluation for suggested skills
34
- ├─ records the selected workflow guidance
34
+ ├─ records the selected workflow contract
35
35
  └─ exposes warnings/degraded/escape evidence instead of silently hiding limitations
36
36
  ```
37
37
 
@@ -70,10 +70,11 @@ These are intentionally different concepts.
70
70
 
71
71
  For **every suggested skill**:
72
72
 
73
- 1. Resolve/read the complete `SKILL.md` entry.
74
- 2. Evaluate `USE FOR`, `DO NOT USE FOR`, workflow/basic flow, and hard rules.
73
+ 1. **MUST** resolve/read the complete `SKILL.md` entry.
74
+ 2. **MUST** evaluate `USE FOR`, `DO NOT USE FOR`, workflow/basic flow, and hard rules.
75
75
  3. Read extra material only when the entry explicitly requires it for applicability.
76
- 4. Resolve the suggestion as `use`, `not-applicable`, or `unresolved/unavailable`.
76
+ 4. **MUST** resolve the suggestion as `use`, `not-applicable`, or `unresolved/unavailable`.
77
+ 5. If disposition is `use`, the skill's core contract **MUST** be followed. If it is `not-applicable`, a concise flow-grounded reason **MUST** be retained.
77
78
 
78
79
  A name, description, router summary, tier label, or generic “routine/common task” judgement is not sufficient evidence for `not-applicable`.
79
80
 
@@ -86,7 +87,7 @@ For the **selected workflow topology**:
86
87
 
87
88
  This prevents two opposite failures: forcing every task through one giant pipeline, and allowing a model to rationalize away the entire engineering lifecycle.
88
89
 
89
- ## Three-tier recommendation model
90
+ ## Three-tier routing model
90
91
 
91
92
  ```mermaid
92
93
  flowchart TD
@@ -117,7 +118,7 @@ No universal `TODO → TDD → verification-loop` order is implied. But when a s
117
118
 
118
119
  Typical triggers: repository-wide refactors, architecture/migration work, broad synthesis, or bounded delegation. The router may select `fable-staged`, `fable-parallel`, or `fable-multi-agent-workspace`.
119
120
 
120
- A selected Fable topology is structured guidance for that run; dependency/write-set validation remains useful evidence, while missing workflow state does not hard-block execution.
121
+ A selected Fable topology is a semantic execution contract for that run: required stage contracts, dependency/write-set validation, objective checks, synthesis, and cold verification **MUST** resolve. Host hooks may only remind when evidence is missing; that fail-open mechanism does not make the obligations optional.
121
122
 
122
123
  Tier 3 does **not** automatically mean multi-agent. The smallest sufficient topology still wins.
123
124
 
@@ -141,18 +142,24 @@ Direct/iterative verification milestones are checked, while semantic check quali
141
142
 
142
143
  ## Cognitive OS relationship
143
144
 
144
- `install-cognitive-os` remains the explanatory/manual entry point for Discover → Think → Try → Summarize → Record. It is a reasoning policy, not a peer skill that must be selected before domain work. The selected workflow guidance informs lifecycle choices; the model retains execution freedom.
145
+ `install-cognitive-os` remains the explanatory/manual entry point for Discover → Think → Try → Summarize → Record. It is a reasoning policy, not a peer skill that must be selected before domain work. The selected workflow contract defines lifecycle obligations; the model retains freedom over reasoning and implementation tactics.
145
146
 
146
- ## Guidance and enforcement strength
147
+ ## Contract and Enforcement Strength
147
148
 
148
- Workflow guidance is intentionally non-blocking across hosts. Keep that separate from Rule-of-3 and explicit permission enforcement.
149
+ Canonical strength definitions live in [philosophy.md](philosophy.md#contract-strength-must--should--may):
149
150
 
150
- - **semantic contract:** what the agent MUST do, including the unified Harness Status where applicable;
151
+ - **MUST:** skipping violates the semantic contract.
152
+ - **SHOULD:** expected default with a concrete evidence-based exception.
153
+ - **MAY:** optional optimization/capability.
154
+
155
+ Keep semantic strength separate from runtime mechanics:
156
+
157
+ - **semantic contract:** what the agent MUST/SHOULD/MAY do;
151
158
  - **mechanism:** which transitions a packaged hook/plugin can block, observe, or remind about;
152
159
  - **live evidence:** whether a real host actually loaded/fired that mechanism.
153
160
 
154
- Semantic MUST and mechanical blocking are intentionally separate. A required communication or engineering obligation does not need a persistent runtime lock to remain mandatory.
161
+ A semantic MUST does not require a hard lock. Outside Rule-of-3 reflection and explicit permission/safety boundaries, lifecycle hooks stay fail-open/reminder-oriented.
155
162
 
156
- Instruction-only integrations receive the same workflow contract as guidance, but must not be labeled hard-enforced. Kernel emission alone does not prove model compliance. #82 owns host-specific retained evidence.
163
+ Instruction-only integrations receive the same semantic contract through instructions, but must not be labeled hard-enforced. Kernel emission alone does not prove model compliance. #82 owns host-specific retained evidence.
157
164
 
158
165
  Do not infer cross-host parity from shared runtime code or passing package tests.
@@ -189,6 +189,14 @@ If those checks pass but the host still shows an older copy:
189
189
 
190
190
  The local plugin mechanically injects the session policy and invariant-first routing contract, and its package includes mechanism-tested supported-tool, subagent, and stop adapters. If those events do not appear in a live session, verify the host loaded the current package and that changed command hooks were reviewed/trusted; package tests alone cannot prove host loading.
191
191
 
192
+ For the native host install/update path, run:
193
+
194
+ ```bash
195
+ npx github:dyphn1/Harness-everything plugin-sync --json
196
+ ```
197
+
198
+ The command installs only when the plugin is absent. An installed Claude plugin uses the explicit Claude update command; an installed Codex plugin uses marketplace upgrade. If plugin state cannot be read, synchronization stops without re-adding or overwriting the plugin.
199
+
192
200
  See [openai-plugin.md](openai-plugin.md) for installation and validation details.
193
201
 
194
202
  ### Public OpenAI Skills-only plugin behaves differently from local Codex plugin