@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.
- package/dist/agents/architect.d.ts +2 -0
- package/dist/agents/architect.js +113 -0
- package/dist/agents/architect.js.map +1 -0
- package/dist/agents/implementer.d.ts +2 -0
- package/dist/agents/implementer.js +74 -0
- package/dist/agents/implementer.js.map +1 -0
- package/dist/agents/kino.d.ts +2 -0
- package/dist/agents/kino.js +120 -0
- package/dist/agents/kino.js.map +1 -0
- package/dist/agents/mav.js +15 -4
- package/dist/agents/mav.js.map +1 -1
- package/dist/agents/nico.js +2 -2
- package/dist/agents/nico.js.map +1 -1
- package/dist/agents/planner.d.ts +2 -0
- package/dist/agents/planner.js +85 -0
- package/dist/agents/planner.js.map +1 -0
- package/dist/dimensions/autonomy/{check-in.d.ts → handoff.d.ts} +1 -1
- package/dist/dimensions/autonomy/handoff.js +40 -0
- package/dist/dimensions/autonomy/handoff.js.map +1 -0
- package/dist/dimensions/capabilities/film-production.d.ts +2 -0
- package/dist/dimensions/capabilities/film-production.js +8 -0
- package/dist/dimensions/capabilities/film-production.js.map +1 -0
- package/dist/dimensions/capabilities/generative-video.d.ts +2 -0
- package/dist/dimensions/capabilities/generative-video.js +8 -0
- package/dist/dimensions/capabilities/generative-video.js.map +1 -0
- package/dist/dimensions/formality/plain.js +23 -3
- package/dist/dimensions/formality/plain.js.map +1 -1
- package/dist/hooks/stance-guardrail-pre.js +39 -8
- package/dist/hooks/stance-guardrail-pre.js.map +1 -1
- package/dist/hooks/stance-guardrail.js +169 -11
- package/dist/hooks/stance-guardrail.js.map +1 -1
- package/dist/plan-states.js +9 -5
- package/dist/plan-states.js.map +1 -1
- package/dist/skills/deliver/skill.d.ts +2 -0
- package/dist/skills/deliver/skill.js +98 -0
- package/dist/skills/deliver/skill.js.map +1 -0
- package/dist/skills/{praxis → design}/skill.d.ts +1 -1
- package/dist/skills/design/skill.js +79 -0
- package/dist/skills/design/skill.js.map +1 -0
- package/dist/skills/plan/skill.d.ts +2 -0
- package/dist/skills/plan/skill.js +89 -0
- package/dist/skills/plan/skill.js.map +1 -0
- package/package.json +3 -3
- package/dist/dimensions/autonomy/check-in.js +0 -2
- package/dist/dimensions/autonomy/check-in.js.map +0 -1
- package/dist/dimensions/output-format/structured-decision.d.ts +0 -2
- package/dist/dimensions/output-format/structured-decision.js +0 -2
- package/dist/dimensions/output-format/structured-decision.js.map +0 -1
- package/dist/skills/praxis/skill.js +0 -193
- 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.
|
|
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.
|
|
21
|
+
"@cratylus/schema": "0.2.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@cratylus/forge": "0.
|
|
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 +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 +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"}
|