@cratylus/canon 0.1.2 → 0.2.0

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 (50) hide show
  1. package/dist/agents/architect.d.ts +2 -0
  2. package/dist/agents/architect.js +113 -0
  3. package/dist/agents/architect.js.map +1 -0
  4. package/dist/agents/implementer.d.ts +2 -0
  5. package/dist/agents/implementer.js +74 -0
  6. package/dist/agents/implementer.js.map +1 -0
  7. package/dist/agents/kino.d.ts +2 -0
  8. package/dist/agents/kino.js +120 -0
  9. package/dist/agents/kino.js.map +1 -0
  10. package/dist/agents/mav.js +15 -4
  11. package/dist/agents/mav.js.map +1 -1
  12. package/dist/agents/nico.js +2 -2
  13. package/dist/agents/nico.js.map +1 -1
  14. package/dist/agents/planner.d.ts +2 -0
  15. package/dist/agents/planner.js +85 -0
  16. package/dist/agents/planner.js.map +1 -0
  17. package/dist/dimensions/autonomy/{check-in.d.ts → handoff.d.ts} +1 -1
  18. package/dist/dimensions/autonomy/handoff.js +40 -0
  19. package/dist/dimensions/autonomy/handoff.js.map +1 -0
  20. package/dist/dimensions/capabilities/film-production.d.ts +2 -0
  21. package/dist/dimensions/capabilities/film-production.js +8 -0
  22. package/dist/dimensions/capabilities/film-production.js.map +1 -0
  23. package/dist/dimensions/capabilities/generative-video.d.ts +2 -0
  24. package/dist/dimensions/capabilities/generative-video.js +8 -0
  25. package/dist/dimensions/capabilities/generative-video.js.map +1 -0
  26. package/dist/dimensions/formality/plain.js +23 -3
  27. package/dist/dimensions/formality/plain.js.map +1 -1
  28. package/dist/hooks/stance-guardrail-pre.js +39 -8
  29. package/dist/hooks/stance-guardrail-pre.js.map +1 -1
  30. package/dist/hooks/stance-guardrail.js +169 -11
  31. package/dist/hooks/stance-guardrail.js.map +1 -1
  32. package/dist/plan-states.js +9 -5
  33. package/dist/plan-states.js.map +1 -1
  34. package/dist/skills/deliver/skill.d.ts +2 -0
  35. package/dist/skills/deliver/skill.js +98 -0
  36. package/dist/skills/deliver/skill.js.map +1 -0
  37. package/dist/skills/{praxis → design}/skill.d.ts +1 -1
  38. package/dist/skills/design/skill.js +79 -0
  39. package/dist/skills/design/skill.js.map +1 -0
  40. package/dist/skills/plan/skill.d.ts +2 -0
  41. package/dist/skills/plan/skill.js +89 -0
  42. package/dist/skills/plan/skill.js.map +1 -0
  43. package/package.json +3 -3
  44. package/dist/dimensions/autonomy/check-in.js +0 -2
  45. package/dist/dimensions/autonomy/check-in.js.map +0 -1
  46. package/dist/dimensions/output-format/structured-decision.d.ts +0 -2
  47. package/dist/dimensions/output-format/structured-decision.js +0 -2
  48. package/dist/dimensions/output-format/structured-decision.js.map +0 -1
  49. package/dist/skills/praxis/skill.js +0 -193
  50. package/dist/skills/praxis/skill.js.map +0 -1
@@ -0,0 +1,89 @@
1
+ import { PLAN_STATES } from '../../plan-states.js';
2
+ import { design } from '../design/skill.js';
3
+ // SUPERSEDES `praxis`, which carried three activities with three different ends —
4
+ // capturing understanding, specifying work, and governing execution — and no seam
5
+ // between them. An agent asked to switch telos three times with nothing marking the
6
+ // switch settles into whichever posture its last tool call left it in, which in a
7
+ // tool-driven session is always the making. That is the drift, and it is structural
8
+ // rather than a lapse of attention.
9
+ //
10
+ // What remains here is the middle term only: decomposition, dependency, waves, and
11
+ // the plan's own lifecycle. Understanding moved to `design`; dispatch, judgement and
12
+ // triage moved to `deliver`.
13
+ //
14
+ // The laws carried forward are the ones that were PAID FOR. The output-array law and
15
+ // its measurement survive verbatim because the defect it names — a footprint read off
16
+ // where a sign is DEFINED while the work is bounded by where it is USED — recurred six
17
+ // times in one plan and voids every disjointness proof above it when it recurs.
18
+ const FORMAL_BLOCK = `s ≜ a cut piece ⟨closed · handed down · ¬ redrawable here⟩ @ design
19
+ anchor @ design
20
+ closure @ design
21
+ pin @ design
22
+ digest @ design
23
+ P ≜ a plan : the units cutting s into work
24
+ unit ≜ a unit of work ⟨unit ∈ P⟩
25
+ States ≜ { ${PLAN_STATES.join(', ')} }
26
+ state : P → States
27
+ R ⊆ P × P ⟨dependency⟩
28
+ deps(unit) ≜ { u | (unit, u) ∈ R }
29
+ realizes : P → anchor ⟨TOTAL⟩
30
+ static : P → ℘(path)
31
+ refs : P → ℘(path) ⟨what unit's outputs compile against⟩
32
+ outputs : P → ℘(path)
33
+ footprint : P → ℘(path) ⟨what landing unit actually changed⟩
34
+ occurs : anchor → ℘(path) ⟨every site SPELLING it · the site DEFINING it is ONE⟩
35
+ accept : P → (return → 𝔹) ⟨MECHANICAL only · the semantic half is @ deliver⟩
36
+ pre : P → return
37
+ spec(unit) ≜ ⟨ realizes(unit), intent(unit), static(unit), deps(unit), outputs(unit), accept(unit) ⟩
38
+ census : intent → ⟨scope, static, deps, occurs⟩ ⟨delegable-to agent⟩
39
+ slices : P → ℘(℘(P))
40
+ cross(S) ≜ |R ∩ ⋃ { sᵢ × sⱼ | sᵢ, sⱼ ∈ S ∧ i ≠ j }|
41
+ wave(0) ≜ { unit | ∄ u : (unit, u) ∈ R }
42
+ wave(n+1) ≜ { unit | unit ∉ W(n) ∧ ∀ u : (unit, u) ∈ R ⇒ u ∈ W(n) }
43
+ W(n) ≜ ⋃ { wave(i) | i ≤ n }
44
+ frontier(P) ≜ { unit | state(unit) ∈ { ready, active } } ⟨where the plan IS · ¬ only
45
+ what is dispatchable⟩
46
+ blocked(unit) ⇔ ∃ u : (unit, u) ∈ R ∧ state(u) ≠ completed
47
+ ruling-owed(unit) ⇔ a decision nobody has taken stands between unit and acceptance
48
+ mirror : (state, R, spec) → document
49
+ planner ≜ the planner ⟨bounded to s⟩
50
+ conform @ signify
51
+
52
+ ∀ unit : realizes(unit) ∈ { anchor(c) | c ∈ s } ⟨TOTALITY is the gate · a unit citing no
53
+ concept is work whose purpose cannot be stated ∴ REFUSED at authoring, ¬ warned⟩
54
+ ∀ unit : closure(denotes(realizes(unit))) ⊆ s ⟨a unit reaching outside its piece is a
55
+ BOUNDARY finding · SURFACE it ; the planner may ¬ redraw the cut⟩
56
+ pin(s) ≠ digest(s) ⇒ REFUSE ⟨the design moved under the plan · drift, ¬ staleness⟩
57
+ slices(P) cut on s ⟨¬ file-adjacency · files are a LAGGING proxy for modularity ∴
58
+ file-cut ⇒ ∀ unit ⊇ fragments of several c ⇒ executor finishes ∧ system incoherent⟩
59
+ ⋃ slices(P) = P ∧ ∀ s₁, s₂ ∈ slices(P) : s₁ ≠ s₂ ⇒ s₁ ∩ s₂ = ∅
60
+ ∄ swap improving cross(slices(P)) ⟨argmin ↾ LOCAL · exhaustive ∧ deterministic ;
61
+ a global argmin over every assignment is ¬ decidable⟩
62
+ ∀ n < m : |wave(n)| = 1 ⇒ slices mis-cut ⟨a singleton non-terminal wave is a CHAIN⟩
63
+ ∀ unit, u ∈ wave(n) : unit ≠ u ⇒ outputs(unit) ∩ outputs(u) = ∅ ⟨the concurrency precondition⟩
64
+ ∀ unit, u ∈ wave(n) : unit ≠ u ⇒ outputs(unit) ∩ refs(u) = ∅ ⟨disjoint outputs is NECESSARY
65
+ ¬ sufficient : a deletion in unit dangles a reference in u⟩
66
+ ⊨ disjoint-outputs ⇒ dispatch(wave(n)) needs-no-isolation
67
+ ∀ unit : footprint(unit) ⊆ outputs(unit) ⟨outputs IS the contention set ∴ an under-declared
68
+ array silently voids every disjointness proof above⟩
69
+ ∀ unit : occurs(realizes(unit)) ⊆ outputs(unit) ⟨a unit's footprint is its REFERENCE set, ¬ its
70
+ definition site · resolve occurs BEFORE declaring outputs⟩
71
+ ⟨measured 6 under-declared arrays in one plan, ONE cause · declared 1 glob and
72
+ wrote 15 paths · 1 and 12 · 8 and 20⟩
73
+ ∀ unit : ∃ r : ¬accept(unit)(r) ∧ ¬accept(unit)(pre(unit)) ⟨criteria that cannot FAIL, ∧ that
74
+ already pass before the work, test nothing⟩
75
+ ∀ unit : measurement ∈ spec(unit) ⇒ measurement = claim⟨timestamp⟩ ∴ re-derive ≺ cite
76
+ ⟨a count in a unit is CENSUS OUTPUT, ¬ a datum · the tree moves ∧ nothing reds⟩
77
+ ∀ unit : reach-leg(unit) ⊨ print(denominator) ⟨∄ denominator ⇒ found-nothing ≡ could-not-look⟩
78
+ state(unit) = ready ⇒ ¬blocked(unit) ∧ ¬ruling-owed(unit) ⟨ready PROMISES an executor can
79
+ FINISH · conflating a dep with a ruling stalls a fan-out on one unanswered question⟩
80
+ ∀ unit : conform(spec(unit))
81
+ advance ⊨ mirror ⟨state moves ∴ the document moves · drift is ¬ a later chore⟩
82
+ plan ≜ take(s) → census ⟨delegable⟩ → slice(s) → author spec(∀ unit) → mirror → ratify @ planner`;
83
+ export const plan = {
84
+ name: 'plan',
85
+ description: `use this skill to decompose ONE cut piece of a design into MECE units of work — each citing the single concept it realizes, with its inputs, dependencies, declared outputs and mechanical acceptance criteria — sliced on the design's seams rather than on file adjacency, and ordered into waves whose outputs are disjoint so they dispatch concurrently without contending. Reach for it after a design exists and before any work is dispatched. A unit that cites no concept is refused; a piece that cannot be planned as handed down is surfaced, never silently redrawn.`,
86
+ formalBlock: FORMAL_BLOCK,
87
+ composition: () => [design],
88
+ };
89
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/plan/skill.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,kFAAkF;AAClF,kFAAkF;AAClF,oFAAoF;AACpF,kFAAkF;AAClF,oFAAoF;AACpF,oCAAoC;AACpC,EAAE;AACF,mFAAmF;AACnF,qFAAqF;AACrF,6BAA6B;AAC7B,EAAE;AACF,qFAAqF;AACrF,sFAAsF;AACtF,uFAAuF;AACvF,gFAAgF;AAEhF,MAAM,YAAY,GAChB;;;;;;;aAOW,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iGAyDiF,CAAC;AAErH,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,ojBAAojB;IACjkB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;CAC5B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratylus/canon",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "The canonical corpus of discovered optimal-signifiers — agents, skills, dimensions and rules as typed TS source. Markdown is a projection of these modules.",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -18,10 +18,10 @@
18
18
  ],
19
19
  "//test": "`test` builds FIRST because `test/runtime-shim.test.ts` drives the shipped `cratylus project` over the repository's own `cratylus.config.ts`, and that config extends `@cratylus/canon` — the PACKAGE, i.e. this package's `dist`. turbo's `test.dependsOn: [^build]` builds this package's DEPENDENCIES, never this package, so a cold clone would run the consumer path against a dist that does not exist.",
20
20
  "dependencies": {
21
- "@cratylus/schema": "0.1.2"
21
+ "@cratylus/schema": "0.2.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@cratylus/forge": "0.4.1",
24
+ "@cratylus/forge": "0.5.0",
25
25
  "@cratylus/runtime": "0.2.0",
26
26
  "@cratylus/tooling": "0.0.0",
27
27
  "@types/node": "^22.0.0",
@@ -1,2 +0,0 @@
1
- export const checkIn = `check-in ⟨conclusion-first · owed ↦ recommendation-bearing-tail⟩`;
2
- //# sourceMappingURL=check-in.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-in.js","sourceRoot":"","sources":["../../../src/dimensions/autonomy/check-in.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAa,kEAAkE,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { OutputFormat } from '../../manifest.js';
2
- export declare const structuredDecision: OutputFormat;
@@ -1,2 +0,0 @@
1
- export const structuredDecision = `structured-decision`;
2
- //# sourceMappingURL=structured-decision.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"structured-decision.js","sourceRoot":"","sources":["../../../src/dimensions/output-format/structured-decision.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAiB,qBAAqB,CAAC"}
@@ -1,193 +0,0 @@
1
- // The plan-layout state canon (one home) — the `States` set below derives from it;
2
- // a project template sources its `planStates` from the same home (DRY). Lives in a
3
- // sibling module, not exported here: a skill module has exactly ONE export (its Skill).
4
- import { PLAN_STATES } from '../../plan-states.js';
5
- const FORMAL_BLOCK = `intent ≜ the stated goal
6
- States ≜ { ${PLAN_STATES.join(', ')} }
7
- P ≜ a plan : a set of task-files
8
- content : P → text
9
- static : P → ℘(path)
10
- constraints : P → ℘(invariant)
11
- outputs : P → ℘(artifact)
12
- inputs(t) ≜ static(t) ∪ { content(u) | (t, u) ∈ R }
13
- deps(t) ≜ { u | (t, u) ∈ R }
14
- accept : P → (return → 𝔹)
15
- pre : P → return
16
- spec(t) ≜ ⟨ intent(t), inputs(t), constraints(t), deps(t), outputs(t), accept(t) ⟩
17
- census : intent → ⟨scope, static, deps⟩
18
- executor : P ⇀ agent
19
- self ≜ session⟨the harness's own session identity⟩
20
- owner : P ⇀ session
21
- bound : P → 𝔹 ⟨plan-level commitment · persists across sessions · ¬ shard-state⟩
22
- gates : P × P → 𝔹
23
- electable ≜ { P ∈ Plans | ¬ terminal(P) ∧ ¬ occupied(P) }
24
- act ≜ a thing the executor does
25
- serves : act × P → 𝔹
26
- cost : act → effort
27
- defect ≜ ⟨symptom, locus, provenance⟩
28
- owns : defect ⇀ P
29
- impedes : defect × P → 𝔹
30
- refs : P → ℘(path) ⟨what a shard's outputs compile against⟩
31
- sign ≜ a name the corpus bears
32
- rewrites : P → ℘(sign) ⟨the signs t re-signifies⟩
33
- occurs : sign → ℘(path) ⟨every site SPELLING it · the site DEFINING it is ONE of them⟩
34
- footprint : P → ℘(path) ⟨the paths landing t changed⟩
35
- origin : P ⇀ P ⟨the shard t was CUT OUT of · borne by no plan datum⟩
36
- cross(S) ≜ |R ∩ ⋃ { sᵢ × sⱼ | sᵢ, sⱼ ∈ S ∧ i ≠ j }|
37
- admissible(S) ⇔ ∀ s ∈ S : 3 ≤ |s| ≤ 1.5 · |P| / |S| ⟨a slice under 3 is a label ¬ a lane · a slice far above the mean cannot be fanned out against its siblings · both bounds are COMPUTED from |P| ∵ a fixed pair encodes |P| at the moment someone wrote it down⟩
38
- swap(S,t,u) ≜ S with t and u exchanging slices
39
- dir : P → path
40
- state : P → States
41
- truth : P → States
42
- R ⊆ P × P
43
- slices : P → ℘(℘(P))
44
- mirror : (state, R, content) → document
45
- PLAN.md ≜ mirror(state, R, content)
46
- depalimpsest(c) ≜ c ↾ live-strata
47
- conform @ signify
48
- Phase ≜ { proposed, in-flight, landed, superseded, retired }
49
- Plans ≜ { P | P a plan on disk }
50
- commit ≜ a VCS commit
51
- commits : P → ℘(commit)
52
- lands : commit × P → 𝔹
53
- landing : P ⇀ commit
54
- retires : commit × P → 𝔹
55
- retirement : P ⇀ commit
56
- stored : P → ℘(commit)
57
- retired : P → 𝔹
58
- superseded : P → 𝔹
59
- terminal : P → 𝔹
60
- phase : P → Phase
61
-
62
- blocked(t) ⇔ ∃ u : (t, u) ∈ R ∧ state(u) ≠ completed
63
- ruling-owed(t) ⇔ a decision nobody has taken stands between t and its acceptance ⟨¬ a dep ∵ a dep is mechanical sequencing an executor can wait out⟩
64
- occupied(P) ⇔ owner(P) defined ∧ owner(P) ≠ self ⟨liveness is ¬ DECIDABLE here ∵ the owner is another session and no harness lets this one interrogate it · ∴ occupancy is read off the RECORD, ¬ off a registry⟩
65
- retires(c, P) ⇔ c deletes dir(P) ⟨the twin of lands · retirement is VCS-carried, ¬ residence-carried⟩
66
- retired(P) ⇔ retirement(P) defined
67
- superseded(P) ⇔ .superseded-by @ dir(P)
68
- frontier(P) ≜ { t | t ∈ P ∧ state(t) ∈ { ready, active } } ⟨where the plan IS · ¬ only what is dispatchable⟩
69
- sharded(P) ⇔ P ≠ ∅
70
- promote(u) ≜ { t | (t, u) ∈ R ∧ state(t) = pending ∧ ¬blocked(t) ∧ ¬ruling-owed(t) }
71
- next ≜ { pending ↦ ready, ready ↦ active, active ↦ completed, completed ↦ completed }
72
- W(n) ≜ ⋃ { wave(i) | i <= n }
73
- wave(0) ≜ { t | ∄ u : (t, u) ∈ R }
74
- wave(n+1) ≜ { t | t ∉ W(n) ∧ ∀ u : (t, u) ∈ R ⇒ u ∈ W(n) }
75
- waves ≜ (wave(0), wave(1), …)
76
- dispatched(P) ⇔ ∃ t ∈ P : state(t) ∈ { active, completed }
77
- done(P) ⇔ ∀ t ∈ P : state(t) = completed
78
- landed(P) ⇔ landing(P) defined ∧ frontier(P) = ∅ ∧ pending(P) = ∅ ∧ ¬ retired(P) ⟨landing is HISTORICAL ∧ monotone ; done is NOT absorbing ∴ landing alone reports a REOPENED plan as terminal, and terminal ⇒ retire is an OBLIGATION ∴ the readout demands retiring open work⟩
79
- terminal(P) ⇔ landed(P) ∨ superseded(P)
80
- nextPhase ≜ { proposed ↦ in-flight, in-flight ↦ landed, landed ↦ retired, superseded ↦ retired, retired ↦ retired }
81
-
82
- ∀ t ∈ P : t @ dir(P)/state(t)
83
- owner(P) @ dir(P)/.owner
84
- owner(P) released @ unbind ∨ land ∨ retire ⟨an abandoned .owner reads as occupied until then · the cost is paid ONCE ∧ VISIBLY by an operator deleting a file they can see ≺ every session ∧ INVISIBLY by a registry swearing a dead pid was live⟩
85
- ∀ t : content(t) ⊨ spec(t)
86
- ∀ t : ∀ p ∈ static(t) : p exists at authoring
87
- ∀ t : ∀ p ∈ outputs(t) : p exists ∨ the directory holding p exists ⟨a shard MAY create a file ∴ a non-resolving output is ¬ automatically a typo · the PARENT discriminates a creation target from a misspelling⟩
88
- ∀ t : ∃ r : ¬accept(t)(r)
89
- ∀ t : ¬accept(t)(pre(t))
90
- ∀ t : accept(t)(pre(t)) ⇒ ¬(content(t) ⊨ spec(t))
91
- ∀ t : content(t) grounded-by census(intent(t))
92
- ∀ t : ¬(content(t) grounded-by census(intent(t))) ⇒ ¬(content(t) ⊨ spec(t))
93
- ∀ t : census(intent(t)) delegable-to agent
94
- ∀ t : measurement ∈ content(t) ⇒ measurement = claim⟨timestamp⟩ ∴ re-derive ≺ cite-as-evidence
95
- ⟨a count in a shard is CENSUS OUTPUT, ¬ a datum · the tree moves under it ∧ nothing reds⟩
96
- ⟨measured : one plan carried 413 ids ⟨irreproducible under 12 definitions⟩ · 192/413 ⟨ratio EXACT ∧ both absolutes wrong⟩ · 26 sites ⟨14 at HEAD⟩ · 53.5% reach ⟨36.7%⟩⟩
97
- ⟨an exact RATIO over wrong ABSOLUTES = computed once ∧ remembered ∴ the tell⟩
98
- ⟨∴ a shard reaching a NEGATIVE conclusion ⟨"unbuildable" · "nothing gates X"⟩ on quoted counts is unfalsified, ¬ established⟩
99
- ∀ t : reach-leg(t) ⊨ print(denominator) ⟨∄ denominator ⇒ found-nothing ≡ could-not-look⟩
100
- state(t) = ready ⇒ ¬ blocked(t) ∧ ¬ ruling-owed(t) ⟨ready PROMISES an executor can pick t up and FINISH · conflating a dep with a ruling stalls a fan-out with every agent blocked on the same unanswered question⟩
101
- ⋃ slices(P) = P
102
- ∀ s₁, s₂ ∈ slices(P) : s₁ ≠ s₂ ⇒ s₁ ∩ s₂ = ∅
103
- admissible(slices(P)) ∧ ∄ t, u ∈ P : admissible(swap(slices(P),t,u)) ∧ cross(swap(slices(P),t,u)) < cross(slices(P))
104
- argmin over an UNNAMED admissible ⇒ unfalsifiable ∧ global argmin over every assignment ¬ decidable ∴ argmin ↾ LOCAL ⟨no admissible swap improves the cut · exhaustive ∧ deterministic⟩
105
- waves = (wave(0), …, wave(m))
106
- ∀ n < m : |wave(n)| = 1 ⇒ slices mis-cut ⟨a singleton non-terminal wave is a chain, ¬ a cut⟩
107
- ∀ t, u ∈ wave(n) : t ≠ u ⇒ outputs(t) ∩ outputs(u) = ∅ ⟨the concurrency precondition⟩
108
- ∃ t, u ∈ wave(n) : t ≠ u ∧ outputs(t) ∩ outputs(u) ≠ ∅ ⇒ slices mis-cut
109
- ∀ t, u ∈ wave(n) : t ≠ u ⇒ outputs(t) ∩ refs(u) = ∅ ⟨disjoint outputs is NECESSARY ¬ sufficient : a deletion in t dangles a reference in u⟩
110
- ⊨ disjoint-outputs ⇒ dispatch(wave(n)) needs-no-isolation ⟨a correctly cut wave never contends⟩
111
- ∀ t : footprint(t) ⊆ outputs(t) ⟨outputs IS the contention set ∴ an under-declared array silently voids every disjointness proof above · a shorter array is still an array of resolving globs⟩
112
- ∀ t : ⋃ { occurs(s) | s ∈ rewrites(t) } ⊆ outputs(t) ⟨a shard's footprint is its REFERENCE set, ¬ its definition site · a rename touches every speller · giving a name its first home makes every existing spelling interpolate it · resolve occurs BEFORE declaring outputs⟩
113
- ⟨measured 6 under-declared arrays across one plan, ONE cause ⟨footprint read off where a sign is DEFINED while the work was bounded by where it is USED⟩ · declared 1 glob and wrote 15 paths · 1 and 12 · 8 and 20⟩
114
- origin(t) defined ⇒ outputs(t) re-derived from rewrites(t) ⟨SPLITTING A SHARD DOES NOT SPLIT ITS BLAST RADIUS · the child's array is its own, ¬ the topical part of outputs(origin(t)) · so a split understates BY CONSTRUCTION, ¬ by oversight⟩
115
- ∄ origin borne by any plan datum ⇒ ¬ gateable ∴ this law rides the CELL ⟨the seam nearest the defect is the only one left when the datum a check would need was never captured⟩
116
- (state, R, content) ≽ PLAN.md
117
- mirror(state, R, content) emits R ∧ waves
118
- depalimpsest(depalimpsest(c)) = depalimpsest(c)
119
- retired(P) ⇒ phase(P) = retired
120
- superseded(P) ∧ ¬ retired(P) ⇒ phase(P) = superseded
121
- landed(P) ∧ ¬ superseded(P) ⇒ phase(P) = landed
122
- dispatched(P) ∧ ¬ landed(P) ∧ ¬ superseded(P) ∧ ¬ retired(P) ⇒ phase(P) = in-flight
123
- ¬ dispatched(P) ∧ ¬ superseded(P) ∧ ¬ retired(P) ⇒ phase(P) = proposed
124
- landing(P) = c ⇔ lands(c, P)
125
- retirement(P) = c ⇔ retires(c, P)
126
- ∀ c, c' : lands(c, P) ∧ lands(c', P) ⇒ c = c'
127
- ∀ c, c' : retires(c, P) ∧ retires(c', P) ⇒ c = c'
128
- retired(P) ⇒ P ∉ Plans ⟨retire removes the member · Plans is disk, ∴ phase reads the commit, ¬ a residence⟩
129
- ∀ P : stored(P) = ∅ ⟨landing ∧ retirement alike : recomputed from VCS every call, written nowhere⟩
130
- list = Plans
131
- yield(P) ≜ what EXECUTING P established ∧ ¬ derivable from intent(P) @ ENGINE ⟨enters as Intent, ¬ as a Sign : execution establishes what needs naming, ¬ the name⟩
132
- drained(y) ⇔ ∀ i ∈ y : i authored into its strongest seam ⟨gate ≻ cell ≻ governing-doc @ retire⟩ ∨ i filed as a canon-candidate ⟨¬ agent-private store : a private home is where the NEXT agent re-derives it⟩
133
- retire(P) defined ⇔ terminal(P) ∧ drained(yield(P))
134
- supersede(P, Q) ⇒ superseded(P)
135
- ∀ t : conform(content(t))
136
- ⊨ conform(PLAN.md)
137
- ∀ t, r : ¬conform(r) ⇒ ¬accept(t)(r)
138
-
139
- bound(P) @ dir(P)/.bound ⟨persistent · survives session-end · ¬ derived from shard-state⟩
140
- ∃ P ∈ Plans : ¬ terminal(P) ⇒ ∃! P : bound(P) ⟨always-bind ∧ WIP=1 · one law⟩
141
- bound(P) ⇒ ¬ occupied(P)
142
- bound(P) ∧ ¬ sharded(P) ⇒ start(P) ≺ dispatch(P) ⟨binding an unsharded plan obliges the cut⟩
143
- bound(P) ∧ sharded(P) ∧ ¬ done(P) ⇒ frontier(P) ≠ ∅ ⟨the ¬ done antecedent is LOAD-BEARING · dropped, the law reds a plan for FINISHING ∧ the cheapest green is filing work nobody needs⟩
144
- done(P) ⇒ frontier(P) = ∅ ⟨TAUTOLOGY ∵ frontier(P) ⊆ the open states · carries no content and is the first thing anyone writes here⟩
145
- done(P) ⇒ ∀ t ∈ P : t @ dir(P)/completed ⟨done is witnessed by RESIDENCE · a task-file that VANISHED empties frontier(P) exactly as finishing does, ∧ only residence tells the two apart⟩
146
- sharded(P) ∧ ¬ done(P) ∧ frontier(P) = ∅ ⇒ R ill-formed ⟨cycle ∨ unsatisfiable dep ∨ AN EDGELESS NODE⟩ · SURFACE
147
- ⟨read the third disjunct FIRST : \`file\` writes its stub with ¬ census ∧ ¬ re-slice ∴ the filed t has NO edge in R, ∴ ∄ u : t ∈ promote(u), ∴ t is unreachable BY CONSTRUCTION ∧ it still counts against done(P)⟩
148
- ⟨∴ any bound plan carrying a filed defect and no live shard reds this law, and the cause is the FILING, ¬ a cycle · only \`upsert\` gets it out · measured twice, in two plans, two weeks apart⟩
149
- gates(P, Q) ⇔ ∃ t ∈ Q : landing(P) ∈ deps(t)
150
- elect ≜ in-flight ≻ gating ≻ operator-intent ⟨lexicographic · finish before starting⟩
151
- terminal(P) ⇒ retire(P) ⟨obligation ¬ permission · an unretired terminal plan is WIP that is not work⟩
152
- yield(P) ≠ ∅ ∧ ¬ drained(yield(P)) ⇒ ¬ retire(P) ⟨ENGINE intake, realized HERE : deletion is where a law dies⟩
153
- ⟨measured : 16 retired plans, 25 laws, 0 in the canon ∴ every anchor re-derived privately, per agent, forever⟩
154
- impedes(d, t) ⇔ d standing ⇒ ∄ r : accept(t)(r)
155
- impedes(d, t) ⇒ fix(d) ∧ ¬ check-in-owed ⟨a regression in the path is repaired, ¬ surfaced⟩
156
- ¬ impedes(d, t) ⇒ file(owns(d), d) ∧ ¬ fix(d) ⟨a defect beside the path is filed, ¬ chased⟩
157
- cost(file) < cost(fix) ⟨else the gradient points at chasing · the load-bearing law⟩
158
- dispatch(P) ∧ ¬ serves(a, P) ⇒ a ∈ { file, triage } ⟨scope-bound⟩
159
- advance ⊨ mirror ⟨state moves ∴ PLAN.md moves · drift is ¬ a later chore⟩
160
-
161
- start : intent ↦ (P, slices(P), waves)
162
- upsert : (P, intent) ↦ P' ≜ author census-grounded t(s) ∧ P' = P ∪ {t} ∧ re-slice ∧ re-mirror
163
- list : ↦ ℘(P)
164
- elect : ↦ P ≜ the ≻-greatest of electable ; pre electable ≠ ∅
165
- bind : P ↦ P ≜ write .bound @ dir(P) ; pre ∀ Q ≠ P : ¬ bound(Q) ; post ∃! bound
166
- unbind : P ↦ P ≜ remove .bound @ dir(P) ∧ remove .owner @ dir(P) ; pre done(P) ∨ terminal(P) ∨ operator-redirect
167
- file : (P, d) ↦ P' ≜ stub t @ dir(P)/pending : ⟨symptom(d), locus(d), provenance(d)⟩ ;
168
- ¬ census ∧ ¬ re-slice ∧ ¬ re-mirror ; post P' = P ∪ { t }
169
- triage : d ↦ impedes(d, t) ⇒ fix(d) ; ¬ impedes(d, t) ⇒ file(owns(d), d)
170
- dispatch ≜ ∀ t ∈ frontier(P) : state(t) = ready ⇒ concurrently ⟨ state(t) := active ∧ owner(P) := self ∧ executor(t) runs content(t) ⟩
171
- dispatch(P) ⇒ ¬occupied(P) ∧ bound(P)
172
- judge(t, r) ≜ accept(t)(r) ⇒ advance(t) ; ¬accept(t)(r) ⇒ r rejected back to executor(t), state(t) stays active
173
- ⟨r lands VERBATIM ≺ any verdict on it : the loss mode is read-reason-discard, and it takes everything exactly when a run dies mid-judgement⟩
174
- ⟨fan-in is as order-sensitive as fan-out : ∀ t dispatched in the wave, confirm executor(t) RETURNED ; outputs(t) exist ≠ executor(t) returned⟩
175
- advance(t) ≜ state(t) := next(state(t)) ; state(t) = completed ⇒ ∀ d ∈ promote(t) : state(d) := ready ;
176
- PLAN.md := mirror(state, R, content)
177
- update(t) ≜ content(t) := depalimpsest(content(t)) ; PLAN.md := mirror(state, R, content)
178
- merge : { P₁, P₂, … } ↦ ⋃ Pᵢ
179
- sync ≜ ∀ t ∈ P : state(t) ≠ truth(t) ⇒ state(t) := truth(t) ;
180
- ∀ u ∈ P : ∀ d ∈ promote(u) : state(d) := ready ;
181
- PLAN.md ≠ mirror(state, R, content) ⇒ PLAN.md := mirror(state, R, content)
182
- post : state = truth ∧ PLAN.md = mirror(state, R, content)
183
- supersede : (P, Q) ↦ P ≜ write .superseded-by @ dir(P) := Q ⟨staged⟩ ; pre Q ∈ Plans ∧ Q ≠ P ; post superseded(P)
184
- retire : P ↦ ⊥ ≜ delete dir(P) ; pre terminal(P) ∧ drained(yield(P)) ; post P ∉ Plans
185
- landingOf : P ↦ landing(P)
186
- retirementOf : P ↦ retirement(P)`;
187
- export const praxis = {
188
- name: 'praxis',
189
- description: `use this skill to create a plan decomposed into MECE execution shards, where each shard is a self-contained task execution specification with objective, inputs, constraints, dependencies, outputs, and completion criteria.`,
190
- formalBlock: FORMAL_BLOCK,
191
- composition: () => [],
192
- };
193
- //# sourceMappingURL=skill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/praxis/skill.ts"],"names":[],"mappings":"AACA,mFAAmF;AACnF,mFAAmF;AACnF,wFAAwF;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,YAAY,GAAG;sBACC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAoLQ,CAAC;AAErD,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,+NAA+N;IAC5O,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}