@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.
Files changed (61) 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/{check-in.js → handoff.js} +16 -4
  19. package/dist/dimensions/autonomy/handoff.js.map +1 -0
  20. package/dist/dimensions/autonomy/human-on-the-loop.js +1 -1
  21. package/dist/dimensions/autonomy/human-on-the-loop.js.map +1 -1
  22. package/dist/dimensions/capabilities/film-production.d.ts +2 -0
  23. package/dist/dimensions/capabilities/film-production.js +8 -0
  24. package/dist/dimensions/capabilities/film-production.js.map +1 -0
  25. package/dist/dimensions/capabilities/generative-video.d.ts +2 -0
  26. package/dist/dimensions/capabilities/generative-video.js +8 -0
  27. package/dist/dimensions/capabilities/generative-video.js.map +1 -0
  28. package/dist/dimensions/formality/plain.js +1 -1
  29. package/dist/dimensions/formality/plain.js.map +1 -1
  30. package/dist/hook-cells.js +5 -2
  31. package/dist/hook-cells.js.map +1 -1
  32. package/dist/hooks/deploy-drift-notice.js +1 -1
  33. package/dist/hooks/deploy-drift-notice.js.map +1 -1
  34. package/dist/hooks/stance-guardrail-pre.js +56 -30
  35. package/dist/hooks/stance-guardrail-pre.js.map +1 -1
  36. package/dist/hooks/stance-guardrail.js +253 -38
  37. package/dist/hooks/stance-guardrail.js.map +1 -1
  38. package/dist/plan-states.d.ts +3 -3
  39. package/dist/plan-states.js +12 -8
  40. package/dist/plan-states.js.map +1 -1
  41. package/dist/skills/carry-on/skill.js +2 -2
  42. package/dist/skills/carry-on/skill.js.map +1 -1
  43. package/dist/skills/deliver/skill.d.ts +2 -0
  44. package/dist/skills/deliver/skill.js +98 -0
  45. package/dist/skills/deliver/skill.js.map +1 -0
  46. package/dist/skills/{praxis → design}/skill.d.ts +1 -1
  47. package/dist/skills/design/skill.js +79 -0
  48. package/dist/skills/design/skill.js.map +1 -0
  49. package/dist/skills/plan/skill.d.ts +2 -0
  50. package/dist/skills/plan/skill.js +89 -0
  51. package/dist/skills/plan/skill.js.map +1 -0
  52. package/package.json +4 -7
  53. package/dist/dimensions/autonomy/check-in.js.map +0 -1
  54. package/dist/dimensions/output-format/structured-decision.d.ts +0 -2
  55. package/dist/dimensions/output-format/structured-decision.js +0 -2
  56. package/dist/dimensions/output-format/structured-decision.js.map +0 -1
  57. package/dist/hooks/praxis-continuity.d.ts +0 -2
  58. package/dist/hooks/praxis-continuity.js +0 -132
  59. package/dist/hooks/praxis-continuity.js.map +0 -1
  60. package/dist/skills/praxis/skill.js +0 -193
  61. 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,oCAAoC,CAAC;AAG7D,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmdd;SACI;QACD;YACE,QAAQ,EAAE,iBAAiB;YAC3B,UAAU,EAAE,kDAAkD;YAC9D,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEd;SACI;QACD;YACE,QAAQ,EAAE,wBAAwB;YAClC,UAAU,EAAE,yDAAyD;YACrE,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0LX,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuLV;SACI;KACF;CACF,CAAC"}
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"}
@@ -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
- * (praxis: `{ t | state(t) ∈ { ready, active } }`, where the plan IS, not merely
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 `praxis.sh`
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 `praxis` cell distinguishes from a
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 —
@@ -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 `praxis` skill's formal
3
- // block (`../skills/praxis.ts`, whose `States ≜ {…}` set derives from here) and
4
- // the canon project template (`./project-template.ts`, whose `planStates` is
5
- // this). It lives here — not as a second export on the praxis skill module — because
6
- // a skill module carries exactly one export (its `Skill`); this is praxis's canon,
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
- * (praxis: `{ t | state(t) ∈ { ready, active } }`, where the plan IS, not merely
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 `praxis.sh`
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 `praxis` cell distinguishes from a
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 —
@@ -1 +1 @@
1
- {"version":3,"file":"plan-states.js","sourceRoot":"","sources":["../src/plan-states.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,6EAA6E;AAC7E,qFAAqF;AACrF,mFAAmF;AACnF,6CAA6C;AAE7C,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"}
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 praxis
12
- // execution" is carry-on ∘ praxis, and the pairing lives in what was said, not in
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,iFAAiF;AACjF,kFAAkF;AAClF,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"}
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,2 @@
1
+ import type { Skill } from '../../manifest.js';
2
+ export declare const deliver: Skill;
@@ -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 praxis: Skill;
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,2 @@
1
+ import type { Skill } from '../../manifest.js';
2
+ export declare const plan: Skill;
@@ -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.3",
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.1.2"
21
+ "@cratylus/schema": "0.2.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@cratylus/forge": "0.4.1",
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
- "praxis": "sh tooling/praxis/praxis.sh",
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,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,2 +0,0 @@
1
- import type { HookCell } from '../manifest.js';
2
- export declare const praxisContinuity: HookCell;
@@ -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"}