@cratylus/canon 0.1.3 → 0.3.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/{check-in.js → handoff.js} +16 -4
- package/dist/dimensions/autonomy/handoff.js.map +1 -0
- package/dist/dimensions/autonomy/human-on-the-loop.js +1 -1
- package/dist/dimensions/autonomy/human-on-the-loop.js.map +1 -1
- 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 +1 -1
- package/dist/dimensions/formality/plain.js.map +1 -1
- package/dist/hook-cells.js +5 -2
- package/dist/hook-cells.js.map +1 -1
- package/dist/hooks/deploy-drift-notice.js +1 -1
- package/dist/hooks/deploy-drift-notice.js.map +1 -1
- package/dist/hooks/stance-guardrail-pre.js +56 -30
- package/dist/hooks/stance-guardrail-pre.js.map +1 -1
- package/dist/hooks/stance-guardrail.js +253 -38
- package/dist/hooks/stance-guardrail.js.map +1 -1
- package/dist/plan-states.d.ts +3 -3
- package/dist/plan-states.js +12 -8
- package/dist/plan-states.js.map +1 -1
- package/dist/skills/carry-on/skill.js +2 -2
- package/dist/skills/carry-on/skill.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 +4 -7
- 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/hooks/praxis-continuity.d.ts +0 -2
- package/dist/hooks/praxis-continuity.js +0 -132
- package/dist/hooks/praxis-continuity.js.map +0 -1
- package/dist/skills/praxis/skill.js +0 -193
- package/dist/skills/praxis/skill.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stance-guardrail.js","sourceRoot":"","sources":["../../src/hooks/stance-guardrail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"stance-guardrail.js","sourceRoot":"","sources":["../../src/hooks/stance-guardrail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAG5D,wEAAwE;AACxE,8EAA8E;AAC9E,2EAA2E;AAC3E,2EAA2E;AAC3E,8EAA8E;AAC9E,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,EAAE,EAAE,kBAAkB;IACtB,OAAO,EACL,8UAA8U;IAChV,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,KAAK,EAAE,qBAAqB;IAC5B,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,qBAAqB;YAC/B,UAAU,EAAE,sDAAsD;YAClE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwnBd;SACI;QACD;YACE,QAAQ,EAAE,iBAAiB;YAC3B,UAAU,EAAE,kDAAkD;YAC9D,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFd;SACI;QACD;YACE,QAAQ,EAAE,wBAAwB;YAClC,UAAU,EAAE,yDAAyD;YACrE,UAAU,EAAE,KAAK;YACjB,yEAAyE;YACzE,sEAAsE;YACtE,0EAA0E;YAC1E,2EAA2E;YAC3E,yEAAyE;YACzE,yEAAyE;YACzE,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsNX,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyLV;SACI;KACF;CACF,CAAC"}
|
package/dist/plan-states.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/** The plan-layout state folders, in task-file lifecycle order. */
|
|
2
2
|
export declare const PLAN_STATES: readonly ["pending", "ready", "active", "completed"];
|
|
3
3
|
/** `frontier(P)` — the states a shard sits in when the plan is workable AT it
|
|
4
|
-
* (
|
|
4
|
+
* (`{ t | state(t) ∈ { ready, active } }`, where the plan IS, not merely
|
|
5
5
|
* what is dispatchable). A subset of {@link PLAN_STATES} and not derivable from
|
|
6
6
|
* their ORDER: `pending` is open too, and is not frontier. */
|
|
7
7
|
export declare const PLAN_FRONTIER: readonly ["ready", "active"];
|
|
8
8
|
/**
|
|
9
9
|
* The plan-tier dotfile MARKERS whose only home is here.
|
|
10
10
|
*
|
|
11
|
-
* A relation with no on-disk carrier is not readable — the reading `
|
|
11
|
+
* A relation with no on-disk carrier is not readable — the reading `plan-set.sh`
|
|
12
12
|
* states in its own words when it explains why `.landed` exists ("exactly parallel
|
|
13
13
|
* to `.superseded-by`"). These are the two markers a reader of the plan set needs
|
|
14
14
|
* that have no other TypeScript home: `.superseded-by` already has one
|
|
@@ -16,7 +16,7 @@ export declare const PLAN_FRONTIER: readonly ["ready", "active"];
|
|
|
16
16
|
*
|
|
17
17
|
* `.ruling-owed` is the third carrier this corpus has minted on that reading, and
|
|
18
18
|
* it carries the concept the corpus ALREADY signifies as a ruling owed — "a
|
|
19
|
-
* decision nobody has taken", which the
|
|
19
|
+
* decision nobody has taken", which the retired praxis cell distinguished from a
|
|
20
20
|
* dependency ("a dep waits itself out, a ruling needs a human"). At the SHARD tier
|
|
21
21
|
* that concept is `ruling-owed(t)`, and it gates `ready`; at the
|
|
22
22
|
* PLAN tier it had no carrier at all, so a fork the principal cannot resolve —
|
package/dist/plan-states.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
// plan-states.ts — the CANON home of the sharded-plan-layout state folders, in
|
|
2
|
-
// lifecycle order. ONE home, two consumers (DRY): the `
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
2
|
+
// lifecycle order. ONE home, two consumers (DRY): the `plan` skill's formal block
|
|
3
|
+
// (`../skills/plan/skill.ts`, whose `States ≜ {…}` set derives from here) and the
|
|
4
|
+
// canon project template (`./project-template.ts`, whose `planStates` is this). It
|
|
5
|
+
// lives here — not as a second export on the plan skill module — because a skill
|
|
6
|
+
// module carries exactly one export (its `Skill`); this is the plan cell's canon,
|
|
7
7
|
// factored out to a sibling both can source.
|
|
8
|
+
//
|
|
9
|
+
// The consumer was `praxis` until that cell was superseded by the design/plan/deliver
|
|
10
|
+
// trio: praxis carried understanding, specification and governance in one place, and
|
|
11
|
+
// the state set belongs to the middle term alone.
|
|
8
12
|
/** The plan-layout state folders, in task-file lifecycle order. */
|
|
9
13
|
export const PLAN_STATES = ['pending', 'ready', 'active', 'completed'];
|
|
10
14
|
/** `frontier(P)` — the states a shard sits in when the plan is workable AT it
|
|
11
|
-
* (
|
|
15
|
+
* (`{ t | state(t) ∈ { ready, active } }`, where the plan IS, not merely
|
|
12
16
|
* what is dispatchable). A subset of {@link PLAN_STATES} and not derivable from
|
|
13
17
|
* their ORDER: `pending` is open too, and is not frontier. */
|
|
14
18
|
export const PLAN_FRONTIER = [
|
|
@@ -18,7 +22,7 @@ export const PLAN_FRONTIER = [
|
|
|
18
22
|
/**
|
|
19
23
|
* The plan-tier dotfile MARKERS whose only home is here.
|
|
20
24
|
*
|
|
21
|
-
* A relation with no on-disk carrier is not readable — the reading `
|
|
25
|
+
* A relation with no on-disk carrier is not readable — the reading `plan-set.sh`
|
|
22
26
|
* states in its own words when it explains why `.landed` exists ("exactly parallel
|
|
23
27
|
* to `.superseded-by`"). These are the two markers a reader of the plan set needs
|
|
24
28
|
* that have no other TypeScript home: `.superseded-by` already has one
|
|
@@ -26,7 +30,7 @@ export const PLAN_FRONTIER = [
|
|
|
26
30
|
*
|
|
27
31
|
* `.ruling-owed` is the third carrier this corpus has minted on that reading, and
|
|
28
32
|
* it carries the concept the corpus ALREADY signifies as a ruling owed — "a
|
|
29
|
-
* decision nobody has taken", which the
|
|
33
|
+
* decision nobody has taken", which the retired praxis cell distinguished from a
|
|
30
34
|
* dependency ("a dep waits itself out, a ruling needs a human"). At the SHARD tier
|
|
31
35
|
* that concept is `ruling-owed(t)`, and it gates `ready`; at the
|
|
32
36
|
* PLAN tier it had no carrier at all, so a fork the principal cannot resolve —
|
package/dist/plan-states.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-states.js","sourceRoot":"","sources":["../src/plan-states.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"plan-states.js","sourceRoot":"","sources":["../src/plan-states.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kFAAkF;AAClF,kFAAkF;AAClF,mFAAmF;AACnF,iFAAiF;AACjF,kFAAkF;AAClF,6CAA6C;AAC7C,EAAE;AACF,sFAAsF;AACtF,qFAAqF;AACrF,kDAAkD;AAElD,mEAAmE;AACnE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AAEhF;;;+DAG+D;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO;IACP,QAAQ;CACkD,CAAC;AAE7D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,mFAAmF;IACnF,KAAK,EAAE,QAAQ;IACf,mFAAmF;IACnF,UAAU,EAAE,cAAc;CAClB,CAAC"}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
// plan. "Carry on with what we just discussed" is the same utterance doing the same
|
|
9
9
|
// work over a discussion, and a cell bound to `praxis` cannot serve it.
|
|
10
10
|
//
|
|
11
|
-
// The COMPOSITION is the operator's, at the utterance: "carry on with the
|
|
12
|
-
// execution" is carry-on ∘
|
|
11
|
+
// The COMPOSITION is the operator's, at the utterance: "carry on with the plan
|
|
12
|
+
// execution" is carry-on ∘ plan, and the pairing lives in what was said, not in
|
|
13
13
|
// this module's import list. A cell that names one context forecloses the rest.
|
|
14
14
|
//
|
|
15
15
|
// THE MECHANISM WENT WITH THE COUPLING, and that is a real loss recorded rather than
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/carry-on/skill.ts"],"names":[],"mappings":"AAEA,mEAAmE;AACnE,EAAE;AACF,6EAA6E;AAC7E,oFAAoF;AACpF,kFAAkF;AAClF,qFAAqF;AACrF,mFAAmF;AACnF,oFAAoF;AACpF,wEAAwE;AACxE,EAAE;AACF
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/carry-on/skill.ts"],"names":[],"mappings":"AAEA,mEAAmE;AACnE,EAAE;AACF,6EAA6E;AAC7E,oFAAoF;AACpF,kFAAkF;AAClF,qFAAqF;AACrF,mFAAmF;AACnF,oFAAoF;AACpF,wEAAwE;AACxE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,EAAE;AACF,qFAAqF;AACrF,qFAAqF;AACrF,kFAAkF;AAClF,sFAAsF;AACtF,kFAAkF;AAClF,oFAAoF;AACpF,mFAAmF;AACnF,2CAA2C;AAE3C,MAAM,eAAe,GACnB;;;;;;;;;;;;;;;;;;;;;CAqBkB,CAAC;AAErB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,woBAAwoB;IACrpB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { design } from '../design/skill.js';
|
|
2
|
+
import { plan } from '../plan/skill.js';
|
|
3
|
+
// WHERE THE TRUST DEFECT IS CLOSED. Acceptance keyed to a unit's own criteria is a
|
|
4
|
+
// closed loop: the author writes the unit, writes its criteria, and checks the return
|
|
5
|
+
// against them. Every term comes from one source, so an executor satisfying the letter
|
|
6
|
+
// passes while the design goes unmet. Instructing the principal to "actually verify"
|
|
7
|
+
// cannot repair this — verification is a TWO-DESCRIPTION operation, and with one
|
|
8
|
+
// description there is no operation to perform, so it degenerates into re-reading the
|
|
9
|
+
// claim. The second description is the design, which is why this cell composes it.
|
|
10
|
+
//
|
|
11
|
+
// The split that matters: the EXECUTOR verifies ⟨did I build it per the spec⟩ and the
|
|
12
|
+
// PRINCIPAL validates ⟨is this what the design called for⟩. Both are legitimate and
|
|
13
|
+
// neither substitutes. Today only the first exists in most loops.
|
|
14
|
+
//
|
|
15
|
+
// The three validation questions are cheap BY CONSTRUCTION, and that is load-bearing
|
|
16
|
+
// rather than convenient: a check costing more than redoing the work is skipped, and
|
|
17
|
+
// no instruction survives that gradient. Naming discipline is what buys the cheapness —
|
|
18
|
+
// if the artifact spells its concept, two of the three are reading a name.
|
|
19
|
+
const FORMAL_BLOCK = `C @ design
|
|
20
|
+
c ≜ a concept ⟨c ∈ C⟩
|
|
21
|
+
anchor @ design
|
|
22
|
+
gloss @ design
|
|
23
|
+
factors @ design
|
|
24
|
+
denotes @ design
|
|
25
|
+
amend @ design
|
|
26
|
+
yield ≜ what execution established ∧ ¬ derivable from C
|
|
27
|
+
P @ plan
|
|
28
|
+
unit ≜ a unit of work
|
|
29
|
+
wave @ plan
|
|
30
|
+
frontier @ plan
|
|
31
|
+
realizes @ plan
|
|
32
|
+
accept @ plan ⟨the MECHANICAL half⟩
|
|
33
|
+
outputs @ plan
|
|
34
|
+
artifact : P → ℘(path) ⟨what landed · the EVIDENCE⟩
|
|
35
|
+
r ≜ an executor's return
|
|
36
|
+
conform @ signify
|
|
37
|
+
executor : P ⇀ agent
|
|
38
|
+
self ≜ the principal ⟨the design-holder⟩
|
|
39
|
+
spells : path × anchor → 𝔹 ⟨identifiers · path · public surface bear the sign⟩
|
|
40
|
+
covers : path × ℘(C) → 𝔹 ⟨observable behaviour ≅ the factorization · nothing missing
|
|
41
|
+
∧ nothing extra⟩
|
|
42
|
+
sole : path × anchor → 𝔹 ⟨∄ other artifact realizing the same concept⟩
|
|
43
|
+
verify : P × return → 𝔹 ⟨the EXECUTOR's · built-it-right, against spec⟩
|
|
44
|
+
validate : P → 𝔹 ⟨the PRINCIPAL's · built-the-right-thing, against C⟩
|
|
45
|
+
defect ≜ ⟨symptom, locus, provenance⟩
|
|
46
|
+
impedes : defect × P → 𝔹
|
|
47
|
+
cost : act → effort
|
|
48
|
+
bound : P → 𝔹 ⟨plan-level commitment · persists across sessions⟩
|
|
49
|
+
electable ≜ { P | ¬terminal(P) ∧ ¬occupied(P) }
|
|
50
|
+
terminal : P → 𝔹
|
|
51
|
+
commit @ design
|
|
52
|
+
accepts @ design
|
|
53
|
+
|
|
54
|
+
∀ unit, r : ¬conform(r) ⇒ ¬accept(unit)(r)
|
|
55
|
+
validate(unit) ⇔ spells(artifact(unit), realizes(unit))
|
|
56
|
+
∧ covers(artifact(unit), factors(denotes(realizes(unit))))
|
|
57
|
+
∧ sole(artifact(unit), realizes(unit))
|
|
58
|
+
validate ⊨ artifact ⟨NEVER r · a summary is a CLAIM ∧ the file is EVIDENCE ·
|
|
59
|
+
an acceptance that read only the return has accepted nothing⟩
|
|
60
|
+
validate ⊨ self ⟨¬ delegable · the executor cannot judge its own conformance ∵ it
|
|
61
|
+
holds the spec ∧ ¬ the design⟩
|
|
62
|
+
verify ⊥ validate ⟨two checks, two witnesses · neither substitutes ; an executor's
|
|
63
|
+
green suite proves the EXECUTOR's own assertion ∧ nothing about the design⟩
|
|
64
|
+
judge(unit) ≜ verify(unit, r) ∧ validate(unit) ⇒ advance(unit) ; ¬ ⇒ r rejected back to
|
|
65
|
+
executor(unit) ∧ state(unit) stays active
|
|
66
|
+
⟨r lands VERBATIM ≺ any verdict on it · the loss mode is read-reason-discard,
|
|
67
|
+
and it takes everything when a run dies mid-judgement⟩
|
|
68
|
+
⟨fan-in is as order-sensitive as fan-out : ∀ unit dispatched, confirm executor(unit)
|
|
69
|
+
RETURNED · outputs(unit) exist ≠ executor(unit) returned⟩
|
|
70
|
+
cost(validate) < cost(rebuild) ⟨else the gradient points at skipping · the cheapness
|
|
71
|
+
is BOUGHT by conform(anchor) ∴ naming discipline is the verification budget⟩
|
|
72
|
+
¬spells ⇒ REFUSE ≺ any behavioural read ⟨the traceability arrow breaks at the cheapest
|
|
73
|
+
place it will ever be visible⟩
|
|
74
|
+
¬covers ∧ extra ⇒ a second concept smuggled in unnamed ⇒ amend(C) ∨ REFUSE
|
|
75
|
+
¬sole ⇒ duplication ⟨the observable signature of a vision that fragmented⟩
|
|
76
|
+
dispatch(P) ≜ ∀ unit ∈ frontier(P) ⟨state(unit) = ready⟩ concurrently ⟨state(unit) := active ∧
|
|
77
|
+
executor(unit) runs spec(unit)⟩ ; pre bound(P) ∧ ⊨ disjoint-outputs
|
|
78
|
+
yield ≠ ∅ ⇒ amend(C) @ design ⟨LIVE, ¬ at retirement⟩
|
|
79
|
+
∀ k : amends(k, c) ⇒ ¬accepts(k) ⟨the amendment and the acceptance motivating it are
|
|
80
|
+
two commits · fused, the agent adjusts the concept its artifact failed ∧ declares
|
|
81
|
+
success ⟨evidence MANUFACTURED⟩⟩
|
|
82
|
+
impedes(d, unit) ⇔ d standing ⇒ ∄ r : accept(unit)(r)
|
|
83
|
+
impedes(d, unit) ⇒ fix(d) ⟨a regression in the path is repaired, ¬ surfaced⟩
|
|
84
|
+
¬impedes(d, unit) ⇒ file(d) ∧ ¬fix(d) ⟨a defect BESIDE the path is filed, ¬ chased⟩
|
|
85
|
+
cost(file) < cost(fix) ⟨else the gradient points at chasing · the load-bearing law⟩
|
|
86
|
+
∃ P : ¬terminal(P) ⇒ ∃! P : bound(P) ⟨WIP = 1 · finish before starting⟩
|
|
87
|
+
elect ≜ in-flight ≻ gating ≻ operator-intent ⟨lexicographic⟩
|
|
88
|
+
terminal(P) ⇒ retire(P) ⟨obligation ¬ permission · an unretired terminal plan is WIP
|
|
89
|
+
that is not work⟩ ; C persists ⟨plans come ∧ go ABOVE the design⟩
|
|
90
|
+
deliver ≜ bind → dispatch(wave) → verify ⟨executor⟩ → validate ⟨self, on artifact⟩ →
|
|
91
|
+
judge → amend(C) ⇔ yield → advance → retire`;
|
|
92
|
+
export const deliver = {
|
|
93
|
+
name: 'deliver',
|
|
94
|
+
description: `use this skill to execute a plan and ACCEPT its results — dispatch a wave of units to executors, then validate each landed artifact against the design rather than against the executor's report, and integrate. Reach for it whenever delegated work comes back. Validation is three cheap questions — does the artifact spell its concept's name, does its behaviour cover that concept's factorization exactly, and does anything else already realize it — read off the files themselves, never off a summary. It also carries the conduct of the work: one plan bound at a time, finish before starting, repair what blocks the path and merely file what sits beside it.`,
|
|
95
|
+
formalBlock: FORMAL_BLOCK,
|
|
96
|
+
composition: () => [design, plan],
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/deliver/skill.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,mFAAmF;AACnF,sFAAsF;AACtF,uFAAuF;AACvF,qFAAqF;AACrF,iFAAiF;AACjF,sFAAsF;AACtF,mFAAmF;AACnF,EAAE;AACF,sFAAsF;AACtF,oFAAoF;AACpF,kEAAkE;AAClE,EAAE;AACF,qFAAqF;AACrF,qFAAqF;AACrF,wFAAwF;AACxF,2EAA2E;AAE3E,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAwE8C,CAAC;AAEpE,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,gpBAAgpB;IAC7pB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC;CAClC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { Skill } from '../../manifest.js';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const design: Skill;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// THE DURATIVE HALF. `plan` and `deliver` are per-effort and disposable; this cell
|
|
2
|
+
// is the one that persists, and that asymmetry is the whole point of the trio.
|
|
3
|
+
//
|
|
4
|
+
// It exists because the corpus could DO long-horizon work and could only THINK in
|
|
5
|
+
// single sittings: every conceptual cell (conceptualize · signify · materialize ·
|
|
6
|
+
// exemplify) is episodic — invoked on a source, emits a result, finishes — while the
|
|
7
|
+
// planning cell alone bound, elected and persisted across sessions. So a project's
|
|
8
|
+
// concepts were re-derived per session, per agent, forever. The superseded `praxis`
|
|
9
|
+
// measured exactly that against itself: sixteen retired plans, twenty-five laws
|
|
10
|
+
// established, zero surviving into any corpus.
|
|
11
|
+
//
|
|
12
|
+
// The second reason is verification. Acceptance keyed to a work-unit's own criteria
|
|
13
|
+
// is a CLOSED loop — the unit is graded against its own account of itself, so an
|
|
14
|
+
// executor that satisfies the letter passes while the system stays incoherent. A
|
|
15
|
+
// second, independent statement of what should exist is what makes validation an
|
|
16
|
+
// operation rather than a re-reading of the claim. That statement is this lattice.
|
|
17
|
+
const FORMAL_BLOCK = `anchor ≜ a concept's canonical sign @ signify
|
|
18
|
+
gloss ≜ what a concept IS ⟨one line · reconstruction-grade⟩
|
|
19
|
+
C ≜ the concept lattice ⟨the project's durative record⟩
|
|
20
|
+
c ≜ a concept ⟨c ∈ C⟩
|
|
21
|
+
concept ≜ ⟨ anchor(c) , gloss(c) , factors(c) ⟩
|
|
22
|
+
factors : C → ℘(C) ⟨what c decomposes into⟩
|
|
23
|
+
primitive(c) ⇔ factors(c) = ∅ ⟨held by VALUE ⟨anchor · gloss⟩⟩
|
|
24
|
+
composite(c) ⇔ factors(c) ≠ ∅ ⟨held by REFERENCE ⟨anchor · factor-anchors⟩ @ materialize⟩
|
|
25
|
+
closure : C → ℘(C) ⟨closure(c) ≜ { c } ∪ ⋃ { closure(f) | f ∈ factors(c) }⟩
|
|
26
|
+
denotes : anchor ⇀ C
|
|
27
|
+
σ* @ signify
|
|
28
|
+
conform @ signify
|
|
29
|
+
Piece ≜ a cut piece ⟨what a planner is handed⟩
|
|
30
|
+
cut : C → ℘(℘(C))
|
|
31
|
+
digest : ℘(C) → hash ⟨content address of a piece⟩
|
|
32
|
+
pin : Piece ⇀ hash ⟨the digest a piece was DERIVED from · carried with it⟩
|
|
33
|
+
Phase ≜ { live, superseded }
|
|
34
|
+
phase : C → Phase
|
|
35
|
+
supersededBy : C ⇀ C
|
|
36
|
+
commit ≜ a VCS commit ⟨the append-only carrier · attribution ∧ order⟩
|
|
37
|
+
amends : commit × C → 𝔹
|
|
38
|
+
accepts : commit → 𝔹 ⟨the commit carries an acceptance @ deliver⟩
|
|
39
|
+
realizes : unit ⇀ anchor @ plan
|
|
40
|
+
yield ≜ what execution established ∧ ¬ derivable from C @ deliver
|
|
41
|
+
self ≜ the principal ⟨the design-holder · ¬ delegable⟩
|
|
42
|
+
author : C ⇀ self
|
|
43
|
+
|
|
44
|
+
∀ c : ∃! anchor(c) ∧ ∀ a ∈ dom(denotes) : ∃! denotes(a) ⟨one name ⇔ one concept⟩
|
|
45
|
+
∀ c : conform(anchor(c)) ∧ gloss(c) ≠ ∅
|
|
46
|
+
∀ c : closure(c) finite ⟨factors acyclic ∴ a lattice, ¬ a graph⟩
|
|
47
|
+
amend(C) ≜ supersede ⟨∄ overwrite ; a live c is NEVER edited in place⟩
|
|
48
|
+
⟨the protection is ¬ a rule about honesty : an editable lattice lets the agent
|
|
49
|
+
adjust the concept its artifact failed, ∴ acceptance-against-C goes CIRCULAR
|
|
50
|
+
with one extra step ∧ the loop manufactures its own evidence⟩
|
|
51
|
+
supersede(c, c') ⇒ phase(c) := superseded ∧ supersededBy(c) = c' ∧ c ∈ C
|
|
52
|
+
⟨residence, ¬ deletion : a reader of the CURRENT state sees the history without
|
|
53
|
+
a VCS query ∴ the lattice is self-describing⟩
|
|
54
|
+
∀ k : amends(k, c) ⇒ ¬ accepts(k) ⟨THE separation · an amendment and an acceptance
|
|
55
|
+
it bears on are two acts ; fused, the second witness collapses into the first⟩
|
|
56
|
+
∀ k : amends(k, c) ⇒ reason(k) ≠ ∅ ⟨attribution ∧ order are what make retroactive
|
|
57
|
+
justification DETECTABLE : the amendment postdates the artifact it excuses⟩
|
|
58
|
+
blast(c) ≜ { d ∈ C | c ∈ closure(d) } ⟨DERIVED, ¬ guessed · what the normal form buys⟩
|
|
59
|
+
churn(primitive) high ⇒ conceptualization wrong ⟨primitives near-stable · composites move⟩
|
|
60
|
+
⋃ cut(C) = C ∧ ∀ s₁, s₂ ∈ cut(C) : s₁ ≠ s₂ ⇒ s₁ ∩ s₂ = ∅
|
|
61
|
+
∀ s ∈ cut(C) : ∀ c ∈ s : closure(c) ⊆ s ⟨a piece is CLOSED ∴ plannable alone⟩
|
|
62
|
+
cut ⊨ self ⟨the ASSIGNMENT of concepts to pieces is the design-holder's ; a planner
|
|
63
|
+
receiving a piece may ¬ redraw it · a boundary it cannot plan is SURFACED⟩
|
|
64
|
+
∀ s ∈ cut(C) : pin(s) = digest(s) ⟨a piece carries the digest it was derived from ∴
|
|
65
|
+
an amendment mid-flight surfaces as DRIFT, ¬ executes silently⟩
|
|
66
|
+
yield ≠ ∅ ⇒ amend(C) ⟨intake at INCEPTION ∧ live, never at retirement : an obligation
|
|
67
|
+
standing between an agent and closing its work always loses · measured 0 of 25⟩
|
|
68
|
+
∀ c : ∄ unit ⟨realizes(unit) = anchor(c)⟩ ⇒ SURFACE ⟨a concept nothing builds is design agreed ∧
|
|
69
|
+
unbuilt · the reverse orphan is plan's⟩
|
|
70
|
+
design ⊨ ¬ delegable ⟨a subagent starts blank ∧ a design authored by several
|
|
71
|
+
fragments BY CONSTRUCTION⟩
|
|
72
|
+
design ≜ conceptualize(intent) → signify(·) → materialize(·) → C ⟨bind⟩ → cut(C)`;
|
|
73
|
+
export const design = {
|
|
74
|
+
name: 'design',
|
|
75
|
+
description: `use this skill to build and hold a project's DURATIVE conceptual model — the one artifact that outlives every plan: each concept's anchor, gloss and factorization, amended only by append-only supersession, and cut into closed pieces a planner can take. Reach for it FIRST on any long-horizon effort, before any work is decomposed, and again whenever execution establishes something the model does not yet hold. It is what acceptance is judged against, so without it verification has no referent and degrades into re-reading the executor's own claim.`,
|
|
76
|
+
formalBlock: FORMAL_BLOCK,
|
|
77
|
+
composition: () => [],
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/design/skill.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,+EAA+E;AAC/E,EAAE;AACF,kFAAkF;AAClF,kFAAkF;AAClF,qFAAqF;AACrF,mFAAmF;AACnF,oFAAoF;AACpF,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,oFAAoF;AACpF,iFAAiF;AACjF,iFAAiF;AACjF,iFAAiF;AACjF,mFAAmF;AAEnF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iFAuD+E,CAAC;AAErG,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,uiBAAuiB;IACpjB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
|
|
@@ -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.3.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.6.0",
|
|
25
25
|
"@cratylus/runtime": "0.2.0",
|
|
26
26
|
"@cratylus/tooling": "0.0.0",
|
|
27
27
|
"@types/node": "^22.0.0",
|
|
@@ -55,13 +55,10 @@
|
|
|
55
55
|
"scripts": {
|
|
56
56
|
"build": "pnpm run clean && tsc -p tsconfig.build.json",
|
|
57
57
|
"clean": "rm -rf dist",
|
|
58
|
-
"continuity": "sh targets/continuity/continuity-hook.sh",
|
|
59
58
|
"dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput",
|
|
60
|
-
"oracle": "sh tooling/render-oracle/render-oracle.sh check",
|
|
61
|
-
"oracle:update": "sh tooling/render-oracle/render-oracle.sh update",
|
|
62
59
|
"pack:smoke": "tsx tooling/pack-smoke/pack-smoke-cli.ts",
|
|
63
60
|
"plan-set": "tsx tooling/plan-set-cli.ts",
|
|
64
|
-
"
|
|
61
|
+
"plan": "sh tooling/plan-set/plan-set.sh",
|
|
65
62
|
"project:targets": "tsx tooling/project-targets-cli.ts",
|
|
66
63
|
"scaffold": "tsx tooling/scaffold-cli.ts",
|
|
67
64
|
"stance-guard:test": "sh test/support/guardrail/test-stance-guardrail.sh",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-in.js","sourceRoot":"","sources":["../../../src/dimensions/autonomy/check-in.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,6EAA6E;AAC7E,0CAA0C;AAC1C,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,2DAA2D;AAC3D,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,6BAA6B;AAC7B,EAAE;AACF,iFAAiF;AACjF,2EAA2E;AAC3E,iFAAiF;AACjF,uEAAuE;AACvE,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAa,oMAAoM,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,132 +0,0 @@
|
|
|
1
|
-
// praxis-continuity — the repo-level post-commit reminder. A scope-activated source
|
|
2
|
-
// cell on the GIT substrate: `vcs.commit.post` is an ordinary member of this
|
|
3
|
-
// corpus's `CANONICAL_EVENTS` carrying `substrate: 'git'`, so it is routed rather
|
|
4
|
-
// than refused — the `.husky/post-commit` dispatcher runs the committed worker
|
|
5
|
-
// directly and nothing reaches `settings.json`. Its `workers[].content` are the
|
|
6
|
-
// byte-anchors the committed `targets/continuity/` workers regenerate from
|
|
7
|
-
// (byte-locked).
|
|
8
|
-
//
|
|
9
|
-
// THE REVIEW THIS CELL WAS FLAGGED FOR IS CLOSED. The note read "not in FORGE's
|
|
10
|
-
// `CanonicalEvent` taxonomy" — stale by one package before it was stale by two, and
|
|
11
|
-
// it asked for either an addition to the taxonomy or a named exception. Neither was
|
|
12
|
-
// owed: the event was never exceptional, only unliterable, because the taxonomy was
|
|
13
|
-
// a closed union in `schema` that a git moment had no member to be. The vocabulary
|
|
14
|
-
// now lives where signification lives, `EventName` is open, and this cell names its
|
|
15
|
-
// moment exactly as a harness cell names its own.
|
|
16
|
-
export const praxisContinuity = {
|
|
17
|
-
id: 'praxis-continuity',
|
|
18
|
-
residue: 'post-commit detector ⟨task-file crosses state-folder ⇒ plan-mirror stale⟩ · nudge re-mirror · ¬edit · opt-in ↾ clone · exit-0 ⟨reminder ¬fail-commit⟩',
|
|
19
|
-
substrate: 'git',
|
|
20
|
-
events: ['vcs.commit.post'],
|
|
21
|
-
// git substrate: the entry is still named, never spelled as a path. Which
|
|
22
|
-
// directory git invokes it from is git's projection to make, not this cell's.
|
|
23
|
-
entry: 'praxis-advance-nudge.sh',
|
|
24
|
-
refs: [],
|
|
25
|
-
workers: [
|
|
26
|
-
{
|
|
27
|
-
filename: 'continuity-hook.sh',
|
|
28
|
-
targetPath: 'packages/canon/targets/continuity/continuity-hook.sh',
|
|
29
|
-
executable: true,
|
|
30
|
-
content: `#!/usr/bin/env sh
|
|
31
|
-
# continuity-hook — opt this repo in/out of the post-commit continuity ritual.
|
|
32
|
-
#
|
|
33
|
-
# The opt-in flag is a per-repo git config (agentfactory.continuity) living in .git/config,
|
|
34
|
-
# which is NOT checked in — so opting in is local to your clone and a fresh clone is
|
|
35
|
-
# opted out by default. The .husky/post-commit dispatcher reads this flag.
|
|
36
|
-
#
|
|
37
|
-
# pnpm run continuity:install → set agentfactory.continuity true
|
|
38
|
-
# pnpm run continuity:uninstall → unset (back to default off)
|
|
39
|
-
# pnpm run continuity:status → show current state
|
|
40
|
-
#
|
|
41
|
-
# Usage: continuity-hook.sh {install|uninstall|status}
|
|
42
|
-
|
|
43
|
-
set -e
|
|
44
|
-
|
|
45
|
-
cmd="\${1:-status}"
|
|
46
|
-
|
|
47
|
-
case "$cmd" in
|
|
48
|
-
install | on | true)
|
|
49
|
-
git config --bool agentfactory.continuity true
|
|
50
|
-
printf 'continuity: ENABLED for this repo (agentfactory.continuity=true).\\n'
|
|
51
|
-
printf ' Commits touching plans/**/{pending,ready,active,completed}/ now print a /praxis re-mirror reminder.\\n'
|
|
52
|
-
;;
|
|
53
|
-
uninstall | off | false)
|
|
54
|
-
git config --unset agentfactory.continuity 2>/dev/null || true
|
|
55
|
-
printf 'continuity: DISABLED for this repo (agentfactory.continuity unset → default off).\\n'
|
|
56
|
-
;;
|
|
57
|
-
status)
|
|
58
|
-
state=$(git config --bool agentfactory.continuity 2>/dev/null || echo "false")
|
|
59
|
-
printf 'continuity: %s (agentfactory.continuity=%s)\\n' \\
|
|
60
|
-
"$([ "$state" = "true" ] && echo ENABLED || echo "disabled (default)")" "$state"
|
|
61
|
-
;;
|
|
62
|
-
*)
|
|
63
|
-
printf 'usage: continuity-hook.sh {install|uninstall|status}\\n' >&2
|
|
64
|
-
exit 2
|
|
65
|
-
;;
|
|
66
|
-
esac
|
|
67
|
-
`,
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
filename: 'praxis-advance-nudge.sh',
|
|
71
|
-
targetPath: 'packages/canon/targets/continuity/praxis-advance-nudge.sh',
|
|
72
|
-
executable: true,
|
|
73
|
-
content: `#!/usr/bin/env sh
|
|
74
|
-
# praxis-advance-nudge — the repo-level continuity ritual, as a post-commit reminder.
|
|
75
|
-
#
|
|
76
|
-
# WHAT IT DOES (and deliberately does NOT do):
|
|
77
|
-
# When a commit moves plan task-files between their state folders
|
|
78
|
-
# (plans/**/{pending,ready,active,completed}/), PLAN.md — the hand-authored
|
|
79
|
-
# mirror of that folder-state — may now be stale. This script DETECTS that and
|
|
80
|
-
# PRINTS A REMINDER to re-mirror via /praxis. It never edits PLAN.md: the mirror
|
|
81
|
-
# is hand-authored prose; auto-rewriting it is out of scope (a future "mechanized
|
|
82
|
-
# PLAN.md generation" task). Detect → remind, never edit. (doc-mirrors-runtime-truth:
|
|
83
|
-
# the folders are the truth; this only flags that the mirror lagged.)
|
|
84
|
-
#
|
|
85
|
-
# SCOPE: praxis-advance is the ONE repo-level continuity ritual. Per-agent memory
|
|
86
|
-
# operations (the \`memory\` runtime capability's sidecar state under
|
|
87
|
-
# ~/.claude/agents/<name>/*) are not repo state — a git hook can't meaningfully
|
|
88
|
-
# fire them — so they are out of this hook's scope.
|
|
89
|
-
#
|
|
90
|
-
# OPT-IN: this runs only when \`git config --bool agentfactory.continuity\` is true. A fresh
|
|
91
|
-
# clone is opted out, so default commit behavior is unchanged. See continuity-hook.sh.
|
|
92
|
-
#
|
|
93
|
-
# POSIX sh; no deps beyond git. Exits 0 always — a reminder must never fail a commit.
|
|
94
|
-
|
|
95
|
-
set -e
|
|
96
|
-
|
|
97
|
-
# The commit just made (post-commit runs after HEAD has advanced).
|
|
98
|
-
git rev-parse HEAD >/dev/null 2>&1 || exit 0
|
|
99
|
-
|
|
100
|
-
# Files changed by HEAD. For a root commit (no parent) diff against the root.
|
|
101
|
-
if git rev-parse --verify --quiet HEAD^ >/dev/null 2>&1; then
|
|
102
|
-
changed=$(git diff-tree --no-commit-id --name-only -r HEAD 2>/dev/null) || exit 0
|
|
103
|
-
else
|
|
104
|
-
changed=$(git diff-tree --no-commit-id --name-only -r --root HEAD 2>/dev/null) || exit 0
|
|
105
|
-
fi
|
|
106
|
-
|
|
107
|
-
# Did this commit touch any plan state-folder? Match the four canonical states under
|
|
108
|
-
# any plans/ subtree (works whether or not a tasks/ or {concern} wrapper is present).
|
|
109
|
-
touched=$(printf '%s\\n' "$changed" \\
|
|
110
|
-
| grep -E '^plans/.*/(pending|ready|active|completed)/' || true)
|
|
111
|
-
|
|
112
|
-
[ -z "$touched" ] && exit 0
|
|
113
|
-
|
|
114
|
-
# Which plan dirs were touched (dedup to the plan root: plans/<plan>/).
|
|
115
|
-
plans=$(printf '%s\\n' "$touched" \\
|
|
116
|
-
| sed -E 's#^(plans/[^/]+)/.*#\\1#' | sort -u)
|
|
117
|
-
|
|
118
|
-
printf '\\n'
|
|
119
|
-
printf 'continuity · praxis-advance — plan state changed in this commit:\\n'
|
|
120
|
-
printf '%s\\n' "$plans" | sed 's/^/ /'
|
|
121
|
-
printf '\\n'
|
|
122
|
-
printf ' PLAN.md mirrors the task-folder state; it may now be stale.\\n'
|
|
123
|
-
printf ' Re-mirror with /praxis (advance the task, re-sync PLAN.md), then amend or follow-up commit.\\n'
|
|
124
|
-
printf ' (This is a reminder only — nothing was edited. Disable: pnpm run continuity:uninstall)\\n'
|
|
125
|
-
printf '\\n'
|
|
126
|
-
|
|
127
|
-
exit 0
|
|
128
|
-
`,
|
|
129
|
-
},
|
|
130
|
-
],
|
|
131
|
-
};
|
|
132
|
-
//# sourceMappingURL=praxis-continuity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"praxis-continuity.js","sourceRoot":"","sources":["../../src/hooks/praxis-continuity.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,6EAA6E;AAC7E,kFAAkF;AAClF,+EAA+E;AAC/E,gFAAgF;AAChF,2EAA2E;AAC3E,iBAAiB;AACjB,EAAE;AACF,gFAAgF;AAChF,oFAAoF;AACpF,oFAAoF;AACpF,oFAAoF;AACpF,mFAAmF;AACnF,oFAAoF;AACpF,kDAAkD;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,EAAE,EAAE,mBAAmB;IACvB,OAAO,EACL,uJAAuJ;IACzJ,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,CAAC,iBAAiB,CAAC;IAC3B,0EAA0E;IAC1E,8EAA8E;IAC9E,KAAK,EAAE,yBAAyB;IAChC,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,oBAAoB;YAC9B,UAAU,EAAE,sDAAsD;YAClE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCd;SACI;QACD;YACE,QAAQ,EAAE,yBAAyB;YACnC,UAAU,EAAE,2DAA2D;YACvE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDd;SACI;KACF;CACF,CAAC"}
|