@cratylus/canon 0.1.0 → 0.1.2

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 (89) hide show
  1. package/dist/agents/mav.js +17 -26
  2. package/dist/agents/mav.js.map +1 -1
  3. package/dist/agents/nico.js +10 -6
  4. package/dist/agents/nico.js.map +1 -1
  5. package/dist/dimensions/formality/casual.js +1 -1
  6. package/dist/dimensions/formality/casual.js.map +1 -1
  7. package/dist/dimensions/formality/expansive.js +1 -1
  8. package/dist/dimensions/formality/expansive.js.map +1 -1
  9. package/dist/dimensions/formality/formal.js +1 -1
  10. package/dist/dimensions/formality/formal.js.map +1 -1
  11. package/dist/dimensions/formality/neutral.js +1 -1
  12. package/dist/dimensions/formality/neutral.js.map +1 -1
  13. package/dist/dimensions/formality/plain.d.ts +2 -0
  14. package/dist/dimensions/formality/plain.js +18 -0
  15. package/dist/dimensions/formality/plain.js.map +1 -0
  16. package/dist/dimensions/memory/long-term-memory.js +8 -1
  17. package/dist/dimensions/memory/long-term-memory.js.map +1 -1
  18. package/dist/genus/founding-doctrine.d.ts +2 -2
  19. package/dist/genus/founding-doctrine.js +3 -31
  20. package/dist/genus/founding-doctrine.js.map +1 -1
  21. package/dist/hook-cells.js +0 -4
  22. package/dist/hook-cells.js.map +1 -1
  23. package/dist/hooks/praxis-continuity.js +4 -3
  24. package/dist/hooks/praxis-continuity.js.map +1 -1
  25. package/dist/hooks/stance-guardrail-pre.js +1 -1
  26. package/dist/hooks/stance-guardrail.js +13 -12
  27. package/dist/hooks/stance-guardrail.js.map +1 -1
  28. package/dist/rules/repo-preamble.js +6 -20
  29. package/dist/rules/repo-preamble.js.map +1 -1
  30. package/dist/skills/carry-on/skill.js +40 -45
  31. package/dist/skills/carry-on/skill.js.map +1 -1
  32. package/dist/skills/conceptualize/skill.js +16 -4
  33. package/dist/skills/conceptualize/skill.js.map +1 -1
  34. package/dist/skills/elicit/skill.js +16 -4
  35. package/dist/skills/elicit/skill.js.map +1 -1
  36. package/dist/skills/event-tap/skill.js +9 -2
  37. package/dist/skills/event-tap/skill.js.map +1 -1
  38. package/dist/skills/exemplify/skill.js +16 -4
  39. package/dist/skills/exemplify/skill.js.map +1 -1
  40. package/dist/skills/introspect/skill.js +6 -2
  41. package/dist/skills/introspect/skill.js.map +1 -1
  42. package/dist/skills/materialize/skill.js +16 -4
  43. package/dist/skills/materialize/skill.js.map +1 -1
  44. package/dist/skills/praxis/skill.js +5 -8
  45. package/dist/skills/praxis/skill.js.map +1 -1
  46. package/dist/skills/probe/skill.js +16 -4
  47. package/dist/skills/probe/skill.js.map +1 -1
  48. package/dist/skills/signify/skill.js +16 -4
  49. package/dist/skills/signify/skill.js.map +1 -1
  50. package/package.json +7 -7
  51. package/dist/agents/arch-doc-writer.d.ts +0 -2
  52. package/dist/agents/arch-doc-writer.js +0 -54
  53. package/dist/agents/arch-doc-writer.js.map +0 -1
  54. package/dist/agents/boz.d.ts +0 -2
  55. package/dist/agents/boz.js +0 -59
  56. package/dist/agents/boz.js.map +0 -1
  57. package/dist/agents/developer.d.ts +0 -2
  58. package/dist/agents/developer.js +0 -53
  59. package/dist/agents/developer.js.map +0 -1
  60. package/dist/agents/investigator.d.ts +0 -2
  61. package/dist/agents/investigator.js +0 -59
  62. package/dist/agents/investigator.js.map +0 -1
  63. package/dist/agents/planner.d.ts +0 -2
  64. package/dist/agents/planner.js +0 -52
  65. package/dist/agents/planner.js.map +0 -1
  66. package/dist/agents/principal-engineer-reviewer.d.ts +0 -2
  67. package/dist/agents/principal-engineer-reviewer.js +0 -56
  68. package/dist/agents/principal-engineer-reviewer.js.map +0 -1
  69. package/dist/agents/principal-ic.d.ts +0 -2
  70. package/dist/agents/principal-ic.js +0 -72
  71. package/dist/agents/principal-ic.js.map +0 -1
  72. package/dist/agents/tester.d.ts +0 -2
  73. package/dist/agents/tester.js +0 -55
  74. package/dist/agents/tester.js.map +0 -1
  75. package/dist/hooks/memory-consolidation-nudge.d.ts +0 -2
  76. package/dist/hooks/memory-consolidation-nudge.js +0 -148
  77. package/dist/hooks/memory-consolidation-nudge.js.map +0 -1
  78. package/dist/hooks/resume-availability-notice.d.ts +0 -2
  79. package/dist/hooks/resume-availability-notice.js +0 -50
  80. package/dist/hooks/resume-availability-notice.js.map +0 -1
  81. package/dist/skills/dream/skill.d.ts +0 -2
  82. package/dist/skills/dream/skill.js +0 -65
  83. package/dist/skills/dream/skill.js.map +0 -1
  84. package/dist/skills/handoff/skill.d.ts +0 -2
  85. package/dist/skills/handoff/skill.js +0 -27
  86. package/dist/skills/handoff/skill.js.map +0 -1
  87. package/dist/skills/wake/skill.d.ts +0 -2
  88. package/dist/skills/wake/skill.js +0 -43
  89. package/dist/skills/wake/skill.js.map +0 -1
@@ -1,56 +1,51 @@
1
- // The plan vocabulary this cell PROJECTS onto the capability's command line. It is
2
- // canon's, sourced from its one home — the runtime depends on nothing and holds no
3
- // plan layout, so the names travel as configuration on the invocation rather than
4
- // as a second copy inside `@cratylus/runtime` (ARCHITECTURE property 4).
5
- import { PLAN_FRONTIER, PLAN_MARKERS, PLAN_STATES } from '../../plan-states.js';
6
- import { praxis } from '../praxis/skill.js';
7
- /** The terminal state — the last of the lifecycle, never a second literal. */
8
- const COMPLETED = PLAN_STATES[PLAN_STATES.length - 1];
9
- /** The projected configuration, verbatim as `elevate` takes it. */
10
- const LAYOUT = `--plan-root <plans/> --states ${PLAN_STATES.join(',')} --completed ${COMPLETED} ` +
11
- `--frontier ${PLAN_FRONTIER.join(',')} --bound-marker ${PLAN_MARKERS.bound} ` +
12
- `--ruling-owed-marker ${PLAN_MARKERS.rulingOwed}`;
1
+ // WHAT THIS CELL IS ABOUT, and what it deliberately does not name.
2
+ //
3
+ // carry-on is AUTONOMY: the operator closing a check-in and re-affirming the
4
+ // decision authority already granted, over the context already in hand. It is not a
5
+ // plan operator. It used to be one — it imported `praxis`, projected canon's plan
6
+ // layout onto a runtime command line, and derived its terminus by reading plan state
7
+ // off disk — and that conflation made the cell refuse every context that was not a
8
+ // plan. "Carry on with what we just discussed" is the same utterance doing the same
9
+ // work over a discussion, and a cell bound to `praxis` cannot serve it.
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
13
+ // this module's import list. A cell that names one context forecloses the rest.
14
+ //
15
+ // THE MECHANISM WENT WITH THE COUPLING, and that is a real loss recorded rather than
16
+ // hidden. The old `runtime: { capability: 'carryOn' }` installed a turn-end gate, on
17
+ // the correct argument that an elevation asserted in prose is advisory. But every
18
+ // verb it offered took the plan layout as arguments and read terminus from plan state
19
+ // on disk, so the mechanism WAS the coupling. A context-neutral gate would need a
20
+ // context-neutral terminus, which nothing on disk can answer; until one exists, the
21
+ // turn-end refusal this corpus does own is the stance guardrail, which binds every
22
+ // turn regardless of which word opened it.
13
23
  const carryOnNotation = `carry-on ≜ re-dispatch-word ↦ elevate · persist · revert
14
24
  re-dispatch-word ≜ weitermachen ∨ carry-on ∨ proceed
15
- verb ∈ { elevate · revert · terminus · status } ⟨runtime-bound ; each reached as \`scripts/carryOn.mjs <verb>\`⟩
16
- loop-position ∈ { on-the-loop, out-of-the-loop } ⟨live session state, ¬ a static value⟩
17
- resting ≜ loop-position = on-the-loop ⟨a session opens in orientation · intent is the operator's to set⟩
18
- P ≜ the bound praxis ⟨∨ the standing intent, absent one⟩
19
- bound, done, sharded, frontier, dir, triage, file, defect, impedes @ praxis
20
- target, target₀, foreign, attached ⟨the same hook-config artifact, gated here rather than tapped⟩ @ event-tap
21
- layout ≜ ${LAYOUT}
22
- ⟨canon's plan vocabulary, projected onto the command line · the runtime knows no plan⟩
23
- ruling-owed(P) ⇔ ${PLAN_MARKERS.rulingOwed} @ dir(P) ⟨the carrier of fork⊥ · content = the fork as put to the operator · stored ∵ ¬ derivable, exactly as ${PLAN_MARKERS.bound} is⟩
25
+ context ≜ the standing intent already in hand ⟨whatever established it : a plan · a discussion · a review · a defect in the path⟩
26
+ loop-position ∈ { on-the-loop, out-of-the-loop } ⟨live session state, ¬ a static value⟩
27
+ resting ≜ loop-position = on-the-loop ⟨a session opens in orientation · intent is the operator's to set⟩
28
+ authority ≜ decision-right over the acts context admits
29
+ reversible-in-domain ≜ an act whose undo is available to the same principal
24
30
  fork⊥ ≜ fork(irreversible · value · competence) the principal cannot resolve
25
- terminus ⇔ ¬∃P: bound(P) ∨ ruling-owed(P) ∨ done(P) ∨ (sharded(P) ∧ ¬ done(P) ∧ frontier(P) = ∅)
26
- regression ≜ defect d : impedes(d, t) for the shard t in hand
27
- elevate ≜ \`scripts/carryOn.mjs elevate --event turn.end <layout>\` ∴ attached(target) ∧ loop-position := out-of-the-loop ∧ bind(P)
28
- ⟨attached ⇒ the harness runs \`scripts/carryOn.mjs terminus\` at every turn-end and refuses the close while ¬ terminus⟩
29
- revert ≜ \`scripts/carryOn.mjs revert\` ∴ ¬ attached(target) ∧ loop-position := resting
30
- status ≜ \`scripts/carryOn.mjs status\` ↦ ⟨attached(target), terminus⟩
31
+ satisfied(context) ⇔ what was asked is delivered ∨ withdrawn
32
+ elevate ≜ loop-position := out-of-the-loop ∧ authority ↾ context := principal-self
33
+ revert ≜ loop-position := resting
31
34
 
32
35
  check-in-close ∧ re-dispatch-word ⇒ elevate
33
- elevate ⇒ standing-intent unchanged ∧ ¬fresh-dispatch ∧ ¬permission-grant
34
- elevate ⇒ resume execution ⟨own judgment · reversible-in-domain decided · no fresh permission owed⟩
35
- elevate defined ⇔ ¬ terminus ⟨at a terminus there is nothing to stay out of the loop FOR⟩
36
- elevate ⊨ attached(target) read back @ target ; ¬ attached ⇒ ⊥ ⟨loud ∧ ¬ elevation reported : text is advisory, a mechanism is not⟩
37
- attached(target) ∧ ¬ terminus ⇒ turn ¬ end ⟨the mechanism refuses ; the assertion never could⟩
38
- bind(P) ∧ ¬ terminus ⇒ persist ⟨∀ turn · ¬ per-turn-decay⟩
39
- terminus ⇒ revert ∴ loop-position = resting
40
- revert ∘ elevate ⊨ target ≡ target₀ ∧ foreign preserved ⟨zero residue⟩
41
- elevate ⊨ revert owed ⟨an un-reverted elevation outlives the plan it was bound to⟩
42
- terminus ≜ derived @ disk ⟨∴ a fresh process reads the same truth · ∄ read(transcript ∨ message) ∴ ∄ misfire on mid-turn narration⟩
43
- fork⊥ ⇒ write ${PLAN_MARKERS.rulingOwed} @ dir(P) ∧ surface the fork ∧ re-enter on-the-loop ⟨a fork surfaced without its carrier is unreadable at turn-end⟩
44
- sharded(P) ∧ ¬ done(P) ∧ frontier(P) = ∅ ⇒ terminus ∧ SURFACE ⟨R ill-formed ⟨cycle ∨ unsatisfiable dep⟩ · else the mis-cut wedges the session⟩
45
- regression ⇒ fix ∧ ¬check-in ⟨repair in the path is execution, ¬ a new fork⟩
46
- defect ∧ ¬regression ⇒ file ∧ ¬fix ⟨out-of-path defects are recorded, ¬ chased⟩
47
- verb ∉ { elevate · revert · terminus · status } ⇒ ⊥ ⟨loud⟩
36
+ elevate ⇒ context unchanged ∧ ¬fresh-dispatch ∧ ¬permission-grant ∧ ¬scope-widen ⟨re-affirmation of authority already given, ¬ a new mandate⟩
37
+ elevate ⇒ resume execution ⟨own judgment · reversible-in-domain decided · ∄ fresh permission owed⟩
38
+ elevate ⇒ persist ∀ turn until revert ⟨¬ per-turn-decay : an affirmation uttered ONCE is ¬ re-owed every turn⟩
39
+ elevate defined ⇔ ¬ satisfied(context) ⟨at a satisfied context there is nothing to stay out of the loop FOR⟩
40
+ fork⊥ ⇒ surface ∧ revert ⟨authority to decide ≠ authority to decide THIS · a fork the principal cannot resolve is the operator's by construction⟩
41
+ satisfied(context) ⇒ revert
42
+ operator-redirect ⇒ revert ⟨the grant is the operator's to withdraw at any turn⟩
43
+ ¬ (context @ this cell) ⟨carry-on names no plan · no discussion · no artifact : the operator composes it with a context AT THE UTTERANCE, and a cell naming one forecloses the rest⟩
48
44
  `;
49
45
  export const carryOn = {
50
46
  name: 'carry-on',
51
- description: `use this skill when the Operator utters the re-dispatch word (weitermachen · carry on · proceed) — closing a check-in and returning you to autonomous execution under re-affirmed authority; elevate installs the turn-end gate that holds the elevation (an assertion in prose is advisory, a gate is not), the elevation persists across turns bound to the bound praxis, and it lifts only at a terminus read from plan state on disk — the plan is done, a ruling is owed, or the cut is ill-formed — whereupon revert removes the gate with zero residue.`,
47
+ description: `use this skill when the Operator utters the re-dispatch word (weitermachen · carry on · proceed) — closing a check-in and returning you to autonomous execution under authority already granted, over whatever context is already in hand; the elevation persists across turns rather than decaying each turn, and it lifts when the context is satisfied, when the Operator redirects, or at a fork the principal cannot resolve, which is surfaced rather than decided. The context is the Operator's to name in the same breath ("carry on with the plan execution", "carry on with what we just discussed"); this skill supplies the authority, never the subject.`,
52
48
  formalBlock: carryOnNotation,
53
- runtime: { capability: 'carryOn' },
54
- composition: () => [praxis],
49
+ composition: () => [],
55
50
  };
56
51
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/carry-on/skill.ts"],"names":[],"mappings":"AACA,mFAAmF;AACnF,mFAAmF;AACnF,kFAAkF;AAClF,yEAAyE;AACzE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,8EAA8E;AAC9E,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEtD,mEAAmE;AACnE,MAAM,MAAM,GACV,iCAAiC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,GAAG;IAClF,cAAc,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,YAAY,CAAC,KAAK,GAAG;IAC7E,wBAAwB,YAAY,CAAC,UAAU,EAAE,CAAC;AAEpD,MAAM,eAAe,GACnB;;;;;;;;cAQY,MAAM;;mBAED,YAAY,CAAC,UAAU,kHAAkH,YAAY,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;gBAoB9J,YAAY,CAAC,UAAU;;;;;CAKnB,CAAC;AAErB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,giBAAgiB;IAC7iB,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;IAClC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;CAC5B,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,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,6 +1,18 @@
1
- import { exemplify } from '../exemplify/skill.js';
2
- import { materialize } from '../materialize/skill.js';
3
- import { signify } from '../signify/skill.js';
1
+ // COMPOSES NOTHING, and that is the repair.
2
+ //
3
+ // This cell used to declare `composition: () => [exemplify, signify, materialize]` and import those
4
+ // modules to do it. The thunk's only consumer is the trailing `Composed from …`
5
+ // line of the projected SKILL.md (`forge/src/core/exemplify/skill-cell.ts`), so each
6
+ // import bought one sentence of provenance and cost a module-level cycle: the four
7
+ // signification cells each claimed to be composed from the other three, and no one of
8
+ // them could be read, taken or deployed alone.
9
+ //
10
+ // The relation those edges named is CITATION, not dependency: `symbol-altitude`'s
11
+ // LEDGER records these cells RESTATING each other's signs in different registers
12
+ // (prose here, signature there), which is what a REFERENCE row means. A citation
13
+ // belongs inside the block, at the sign that borrows it (`@ <cell>`), where it needs
14
+ // no import and cannot cycle. Composition is the caller's: an agent pipes these cells
15
+ // in whatever order the work wants.
4
16
  export const conceptualize = {
5
17
  name: 'conceptualize',
6
18
  description: `use this skill to extract the concepts latent in a source — which are primitive, what each means, how each factors — deciding nothing about names or form; stage 1 of exemplify.`,
@@ -29,6 +41,6 @@ cl(cl(X)) = cl(X)
29
41
  MECE(C) ⇔ ( ∀ c≠c' ∈ C : intent(c) ≠ intent(c') ) ∧ ( cl(D) = ⊔ C )
30
42
  ⊨ MECE(C)
31
43
  C = ∅ ⇒ ⊥`,
32
- composition: () => [exemplify, signify, materialize],
44
+ composition: () => [],
33
45
  };
34
46
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/conceptualize/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,kLAAkL;IAC/L,WAAW,EACT;;;;;;;;;;;;;;;;;;;;;;;;sBAwBqC;IACvC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC;CACrD,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/conceptualize/skill.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,EAAE;AACF,oGAAoG;AACpG,gFAAgF;AAChF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,+CAA+C;AAC/C,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AACrF,sFAAsF;AACtF,oCAAoC;AAEpC,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,kLAAkL;IAC/L,WAAW,EACT;;;;;;;;;;;;;;;;;;;;;;;;sBAwBqC;IACvC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
@@ -1,6 +1,18 @@
1
- import { conceptualize } from '../conceptualize/skill.js';
2
- import { probe } from '../probe/skill.js';
3
- import { signify } from '../signify/skill.js';
1
+ // COMPOSES NOTHING, and that is the repair.
2
+ //
3
+ // This cell used to declare `composition: () => [probe, signify, conceptualize]` and import those
4
+ // modules to do it. The thunk's only consumer is the trailing `Composed from …`
5
+ // line of the projected SKILL.md (`forge/src/core/exemplify/skill-cell.ts`), so each
6
+ // import bought one sentence of provenance and cost a module-level cycle: the four
7
+ // signification cells each claimed to be composed from the other three, and no one of
8
+ // them could be read, taken or deployed alone.
9
+ //
10
+ // The relation those edges named is CITATION, not dependency: `symbol-altitude`'s
11
+ // LEDGER records these cells RESTATING each other's signs in different registers
12
+ // (prose here, signature there), which is what a REFERENCE row means. A citation
13
+ // belongs inside the block, at the sign that borrows it (`@ <cell>`), where it needs
14
+ // no import and cannot cycle. Composition is the caller's: an agent pipes these cells
15
+ // in whatever order the work wants.
4
16
  export const elicit = {
5
17
  name: 'elicit',
6
18
  description: `use this skill to elicit the operator's hidden intended concept — recover it by asking maximally-informative yes/no questions, each a distinction that bisects the live candidates by prior mass (binary-search / information-gain over the concept lattice), converging in the fewest questions; the active, query-driven counterpart to probe (which reads a signifier already given) — stop when one candidate survives or no question is worth its burden, then hand the recovered concept to signify to name.`,
@@ -21,6 +33,6 @@ ask(candidates) ≜ argmin over q of bal(q)
21
33
  filter(candidates) ≜ Y(ask(candidates)) if yes ; candidates \\ Y(ask(candidates)) if no
22
34
  stop(candidates) ⇔ | candidates | = 1 ∨ bal(ask(candidates)) > θ
23
35
  elicit ≜ from candidates = C, iterate filter until stop ; return t = the one surviving candidate`,
24
- composition: () => [probe, signify, conceptualize],
36
+ composition: () => [],
25
37
  };
26
38
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/elicit/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,ofAAof;IACjgB,WAAW,EAAE;;;;;;;;;;;;;;;;oGAgBwG;IACrH,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC;CACnD,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/elicit/skill.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,EAAE;AACF,kGAAkG;AAClG,gFAAgF;AAChF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,+CAA+C;AAC/C,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AACrF,sFAAsF;AACtF,oCAAoC;AAEpC,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,ofAAof;IACjgB,WAAW,EAAE;;;;;;;;;;;;;;;;oGAgBwG;IACrH,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
@@ -1,4 +1,11 @@
1
- import { introspect } from '../introspect/skill.js';
1
+ // COMPOSES NOTHING, and it never borrowed anything either. The retired
2
+ // `composition: () => [introspect]` edge produced `Composed from /introspect.` on the
3
+ // projected artifact while this block defined every sign it uses locally — `target`,
4
+ // `target₀`, `foreign`, `attached`, `lifecycle`, `record` — and named none of
5
+ // introspect's. A declared dependency with no borrow is a claim the artifact makes
6
+ // and the cell cannot honour. The `runtime` capability below is the real coupling and
7
+ // it stays: its four verbs take no corpus vocabulary, and `target` is the ADAPTER's to
8
+ // name.
2
9
  const EVENT_TAP_BLOCK = `event-tap ≜ install → observe → read → uninstall
3
10
  capability ≜ eventTap ⟨runtime-bound ; every verb reached as \`scripts/eventTap.mjs <verb>\`⟩
4
11
  verb ∈ { install · uninstall · read · status }
@@ -32,6 +39,6 @@ export const eventTap = {
32
39
  description: `use this skill to attach a passive observer to an agent's own lifecycle — install a tap on a chosen set of harness-neutral events (session.start, turn.end, tool.use.pre, …), let the host append each occurrence to a capture sink, read the captured records back as evidence of what actually happened, and uninstall the tap with zero residue; the four verbs are install, uninstall, read, status, and the tap never blocks, denies, or alters what it observes.`,
33
40
  formalBlock: EVENT_TAP_BLOCK,
34
41
  runtime: { capability: 'eventTap' },
35
- composition: () => [introspect],
42
+ composition: () => [],
36
43
  };
37
44
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/event-tap/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;+FA2B0F,CAAC;AAEnH,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,wcAAwc;IACrd,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;IACnC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/event-tap/skill.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,sFAAsF;AACtF,qFAAqF;AACrF,8EAA8E;AAC9E,mFAAmF;AACnF,sFAAsF;AACtF,uFAAuF;AACvF,QAAQ;AAER,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;+FA2B0F,CAAC;AAEnH,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,wcAAwc;IACrd,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;IACnC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
@@ -1,6 +1,18 @@
1
- import { conceptualize } from '../conceptualize/skill.js';
2
- import { materialize } from '../materialize/skill.js';
3
- import { signify } from '../signify/skill.js';
1
+ // COMPOSES NOTHING, and that is the repair.
2
+ //
3
+ // This cell used to declare `composition: () => [conceptualize, signify, materialize]` and import those
4
+ // modules to do it. The thunk's only consumer is the trailing `Composed from …`
5
+ // line of the projected SKILL.md (`forge/src/core/exemplify/skill-cell.ts`), so each
6
+ // import bought one sentence of provenance and cost a module-level cycle: the four
7
+ // signification cells each claimed to be composed from the other three, and no one of
8
+ // them could be read, taken or deployed alone.
9
+ //
10
+ // The relation those edges named is CITATION, not dependency: `symbol-altitude`'s
11
+ // LEDGER records these cells RESTATING each other's signs in different registers
12
+ // (prose here, signature there), which is what a REFERENCE row means. A citation
13
+ // belongs inside the block, at the sign that borrows it (`@ <cell>`), where it needs
14
+ // no import and cannot cycle. Composition is the caller's: an agent pipes these cells
15
+ // in whatever order the work wants.
4
16
  const FORMAL_BLOCK = `concept-record ≜ ⟨ gloss , anchor? , factorization? ⟩
5
17
  sources ≜ input material @ conceptualize ⟨the corpus D is drawn OVER, ¬ D itself⟩
6
18
  C ≜ concept lattice @ conceptualize
@@ -37,6 +49,6 @@ export const exemplify = {
37
49
  name: 'exemplify',
38
50
  description: `optimize a context corpus into a canonical semantic factorization — compose produce → name → realize over the one concept-record, then gate on accept; emits the R3 routing manifest that catches the dropped idea.`,
39
51
  formalBlock: FORMAL_BLOCK,
40
- composition: () => [conceptualize, signify, materialize],
52
+ composition: () => [],
41
53
  };
42
54
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/exemplify/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA+B2B,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,qNAAqN;IAClO,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC;CACzD,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/exemplify/skill.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,EAAE;AACF,wGAAwG;AACxG,gFAAgF;AAChF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,+CAA+C;AAC/C,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AACrF,sFAAsF;AACtF,oCAAoC;AAEpC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA+B2B,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,qNAAqN;IAClO,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
@@ -2,7 +2,8 @@ export const introspect = {
2
2
  name: 'introspect',
3
3
  description: `use this skill when an agent needs to self-audit — compare each dimension's defined value against the value actually in effect this session, and name the cause of every divergence.`,
4
4
  formalBlock: `A ≜ the agent introspecting itself
5
- O ≜ A's live ## Target dimension-sections { archetype · role · formality · audience-adaptation · transparency · autonomy · provenance · objective · engineering-principles · guardrails · capabilities · situation-awareness · actions · modalities · model · memory · trigger · framing · reasoning-strategy · satisficing · output-format · self-evaluation · … }
5
+ O ≜ enumerate(## sections @ A's live Target) ⟨READ · ¬ recalled · ∄ fixed-list ∵ corpus declares its own catalog⟩
6
+ |O| ≜ |enumerate(## sections @ A's live Target)| ⟨the DENOMINATOR⟩
6
7
  V ≜ the fragment value-space { one-value · value-set · unobservable }
7
8
  src_def ≜ A's in-prompt ## Target sections ∪ agent/<A>.md ⟨one selected value per dimension⟩
8
9
  src_rt ≜ runtime sources observed this session { live tool/action-set · live model · system-prompt-as-given · autonomy-mode + transient-elevation · deployed front-matter⟨color · mark⟩ · env · granted-permissions }
@@ -35,8 +36,11 @@ match(o) ∧ ¬ signifies(o) ⇒ why(o) = misnomer
35
36
  why(o) ∈ causes , o ∈ div
36
37
  row(o) ≜ ⟨ o, def(o), rt(o), match(o), signifies(o), why(o) ↾ o ∈ div ⟩
37
38
  summary ≜ { ⟨ o, why(o) ⟩ | o ∈ div }
38
- report ≜ ⟨ { row(o) | o ∈ O }, summary ⟩
39
+ report ≜ ⟨ |O|, { row(o) | o ∈ O }, summary ⟩ ⟨|O| STATED⟩
39
40
  introspect(A) ≜ report
41
+ |{ row(o) }| ≠ |O| ⇒ ⊥
42
+ rt(o) ⊨ EXERCISED ⟨¬ inferred-from-absence⟩
43
+ ¬ exercised(o) ⇒ why(o) = unobservable ∧ why(o) ≠ harness-override
40
44
 
41
45
  ¬ edit(agent/<A>.md) ∧ ¬ redeploy ∧ ¬ mint(V)
42
46
  why(o) ∈ K_cfg ⇒ reconcile @ { create-agent · deploy }
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/introspect/skill.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,sLAAsL;IACnM,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAwCqC;IAClD,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/introspect/skill.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,sLAAsL;IACnM,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA4CqC;IAClD,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
@@ -1,6 +1,18 @@
1
- import { conceptualize } from '../conceptualize/skill.js';
2
- import { exemplify } from '../exemplify/skill.js';
3
- import { signify } from '../signify/skill.js';
1
+ // COMPOSES NOTHING, and that is the repair.
2
+ //
3
+ // This cell used to declare `composition: () => [exemplify, signify, conceptualize]` and import those
4
+ // modules to do it. The thunk's only consumer is the trailing `Composed from …`
5
+ // line of the projected SKILL.md (`forge/src/core/exemplify/skill-cell.ts`), so each
6
+ // import bought one sentence of provenance and cost a module-level cycle: the four
7
+ // signification cells each claimed to be composed from the other three, and no one of
8
+ // them could be read, taken or deployed alone.
9
+ //
10
+ // The relation those edges named is CITATION, not dependency: `symbol-altitude`'s
11
+ // LEDGER records these cells RESTATING each other's signs in different registers
12
+ // (prose here, signature there), which is what a REFERENCE row means. A citation
13
+ // belongs inside the block, at the sign that borrows it (`@ <cell>`), where it needs
14
+ // no import and cannot cycle. Composition is the caller's: an agent pipes these cells
15
+ // in whatever order the work wants.
4
16
  export const materialize = {
5
17
  name: 'materialize',
6
18
  description: `use this skill to realize a concept lattice as artifacts — select each concept's canonical factorization \`F\`, emit the bipartite normal form \`CSF\` (a primitive by value as ⟨anchor, gloss⟩, a composite by reference as ⟨anchor, factor-anchors⟩), then realize under an explicitly named strategy whose kind-consumption table ρ refuses loudly when unnamed; stage 3 of exemplify, independently invocable.`,
@@ -49,6 +61,6 @@ s unnamed ∨ s ∉ S ⇒ ⊥
49
61
  structure ↦ table
50
62
  classification ↦ membership test
51
63
  utility ↦ instrument`,
52
- composition: () => [exemplify, signify, conceptualize],
64
+ composition: () => [],
53
65
  };
54
66
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/materialize/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,oZAAoZ;IACja,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4CoC;IACjD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC;CACvD,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/materialize/skill.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,EAAE;AACF,sGAAsG;AACtG,gFAAgF;AAChF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,+CAA+C;AAC/C,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AACrF,sFAAsF;AACtF,oCAAoC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,oZAAoZ;IACja,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4CoC;IACjD,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
@@ -16,9 +16,7 @@ pre : P → return
16
16
  spec(t) ≜ ⟨ intent(t), inputs(t), constraints(t), deps(t), outputs(t), accept(t) ⟩
17
17
  census : intent → ⟨scope, static, deps⟩
18
18
  executor : P ⇀ agent
19
- self ≜ session⟨AGENT_SESSION_ID⟩
20
- registered, released, stale : session → 𝔹
21
- live : session → 𝔹
19
+ self ≜ session⟨the harness's own session identity⟩
22
20
  owner : P ⇀ session
23
21
  bound : P → 𝔹 ⟨plan-level commitment · persists across sessions · ¬ shard-state⟩
24
22
  gates : P × P → 𝔹
@@ -63,8 +61,7 @@ phase : P → Phase
63
61
 
64
62
  blocked(t) ⇔ ∃ u : (t, u) ∈ R ∧ state(u) ≠ completed
65
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⟩
66
- live(s) ⇔ registered(s) ∧ ¬ released(s) ∧ ¬ stale(s)
67
- occupied(P) ⇔ owner(P) defined ∧ owner(P) ≠ self ∧ live(owner(P))
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⟩
68
65
  retires(c, P) ⇔ c deletes dir(P) ⟨the twin of lands · retirement is VCS-carried, ¬ residence-carried⟩
69
66
  retired(P) ⇔ retirement(P) defined
70
67
  superseded(P) ⇔ .superseded-by @ dir(P)
@@ -84,7 +81,7 @@ nextPhase ≜ { proposed ↦ in-flight, in-flight ↦ landed, landed ↦ ret
84
81
 
85
82
  ∀ t ∈ P : t @ dir(P)/state(t)
86
83
  owner(P) @ dir(P)/.owner
87
- registered, released, stale @ memory-session-registry
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⟩
88
85
  ∀ t : content(t) ⊨ spec(t)
89
86
  ∀ t : ∀ p ∈ static(t) : p exists at authoring
90
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⟩
@@ -132,7 +129,7 @@ retired(P) ⇒ P ∉ Plans ⟨retire removes the member · Plans is disk, ∴ ph
132
129
  ∀ P : stored(P) = ∅ ⟨landing ∧ retirement alike : recomputed from VCS every call, written nowhere⟩
133
130
  list = Plans
134
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⟩
135
- drained(y) ⇔ ∀ i ∈ y : i authored into its strongest seam ⟨gate ≻ cell ≻ governing-doc @ dream⟩ ∨ i filed as a canon-candidate ⟨¬ agent-private memory : a private home is where the NEXT agent re-derives it⟩
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⟩
136
133
  retire(P) defined ⇔ terminal(P) ∧ drained(yield(P))
137
134
  supersede(P, Q) ⇒ superseded(P)
138
135
  ∀ t : conform(content(t))
@@ -166,7 +163,7 @@ upsert : (P, intent) ↦ P' ≜ author census-grounded t(s) ∧ P' = P ∪ {t
166
163
  list : ↦ ℘(P)
167
164
  elect : ↦ P ≜ the ≻-greatest of electable ; pre electable ≠ ∅
168
165
  bind : P ↦ P ≜ write .bound @ dir(P) ; pre ∀ Q ≠ P : ¬ bound(Q) ; post ∃! bound
169
- unbind : P ↦ P ≜ remove .bound @ dir(P) ; pre done(P) ∨ terminal(P) ∨ operator-redirect
166
+ unbind : P ↦ P ≜ remove .bound @ dir(P) ∧ remove .owner @ dir(P) ; pre done(P) ∨ terminal(P) ∨ operator-redirect
170
167
  file : (P, d) ↦ P' ≜ stub t @ dir(P)/pending : ⟨symptom(d), locus(d), provenance(d)⟩ ;
171
168
  ¬ census ∧ ¬ re-slice ∧ ¬ re-mirror ; post P' = P ∪ { t }
172
169
  triage : d ↦ impedes(d, t) ⇒ fix(d) ; ¬ impedes(d, t) ⇒ file(owns(d), d)
@@ -1 +1 @@
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAuLQ,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"}
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"}
@@ -1,6 +1,18 @@
1
- import { conceptualize } from '../conceptualize/skill.js';
2
- import { elicit } from '../elicit/skill.js';
3
- import { signify } from '../signify/skill.js';
1
+ // COMPOSES NOTHING, and that is the repair.
2
+ //
3
+ // This cell used to declare `composition: () => [signify, elicit, conceptualize]` and import those
4
+ // modules to do it. The thunk's only consumer is the trailing `Composed from …`
5
+ // line of the projected SKILL.md (`forge/src/core/exemplify/skill-cell.ts`), so each
6
+ // import bought one sentence of provenance and cost a module-level cycle: the four
7
+ // signification cells each claimed to be composed from the other three, and no one of
8
+ // them could be read, taken or deployed alone.
9
+ //
10
+ // The relation those edges named is CITATION, not dependency: `symbol-altitude`'s
11
+ // LEDGER records these cells RESTATING each other's signs in different registers
12
+ // (prose here, signature there), which is what a REFERENCE row means. A citation
13
+ // belongs inside the block, at the sign that borrows it (`@ <cell>`), where it needs
14
+ // no import and cannot cycle. Composition is the caller's: an agent pipes these cells
15
+ // in whatever order the work wants.
4
16
  const FORMAL_BLOCK = `D ≜ distinction space ⟨structured knowledge to draw on⟩
5
17
  cl ≜ closure ⟨smallest concept containing a set of priors⟩
6
18
  C ≜ concept lattice ⟨the cl-closed subsets of D⟩
@@ -53,6 +65,6 @@ export const probe = {
53
65
  name: 'probe',
54
66
  description: `use this skill to probe a signifier — read out the priors a word, phrase, or candidate name fires in the reader (\`fired\`, signify's decoder \`dec\` generalized off its assigned anchors) and the concept they circumscribe; the forward, no-commit inverse of signify, for discovering the concept latent in a name or experimenting with candidate anchors before committing — a keeper crystallizes through signify.`,
55
67
  formalBlock: FORMAL_BLOCK,
56
- composition: () => [signify, elicit, conceptualize],
68
+ composition: () => [],
57
69
  };
58
70
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/probe/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA+C0E,CAAC;AAEhG,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,2ZAA2Z;IACxa,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC;CACpD,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/probe/skill.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,EAAE;AACF,mGAAmG;AACnG,gFAAgF;AAChF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,+CAA+C;AAC/C,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AACrF,sFAAsF;AACtF,oCAAoC;AAEpC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA+C0E,CAAC;AAEhG,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,2ZAA2Z;IACxa,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
@@ -1,6 +1,18 @@
1
- import { conceptualize } from '../conceptualize/skill.js';
2
- import { exemplify } from '../exemplify/skill.js';
3
- import { materialize } from '../materialize/skill.js';
1
+ // COMPOSES NOTHING, and that is the repair.
2
+ //
3
+ // This cell used to declare `composition: () => [exemplify, conceptualize, materialize]` and import those
4
+ // modules to do it. The thunk's only consumer is the trailing `Composed from …`
5
+ // line of the projected SKILL.md (`forge/src/core/exemplify/skill-cell.ts`), so each
6
+ // import bought one sentence of provenance and cost a module-level cycle: the four
7
+ // signification cells each claimed to be composed from the other three, and no one of
8
+ // them could be read, taken or deployed alone.
9
+ //
10
+ // The relation those edges named is CITATION, not dependency: `symbol-altitude`'s
11
+ // LEDGER records these cells RESTATING each other's signs in different registers
12
+ // (prose here, signature there), which is what a REFERENCE row means. A citation
13
+ // belongs inside the block, at the sign that borrows it (`@ <cell>`), where it needs
14
+ // no import and cannot cycle. Composition is the caller's: an agent pipes these cells
15
+ // in whatever order the work wants.
4
16
  export const signify = {
5
17
  name: 'signify',
6
18
  description: `use this skill to name a concept — assign each its canonical anchor so one name ⇔ one concept, discovered by cold decode against the model's priors, never coined; stage 2 of exemplify, independently invocable.`,
@@ -54,6 +66,6 @@ minimal(a) ⇔ ∄ c carried by a : a re-states fired(α(c))
54
66
 
55
67
  conform(a) ⇔ register(a) = σ*
56
68
  verbatim(a) ⇒ register(a) = σ*`,
57
- composition: () => [exemplify, conceptualize, materialize],
69
+ composition: () => [],
58
70
  };
59
71
  //# sourceMappingURL=skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/signify/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,mNAAmN;IAChO,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAiDmC;IAChD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC;CAC3D,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/signify/skill.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,EAAE;AACF,0GAA0G;AAC1G,gFAAgF;AAChF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,+CAA+C;AAC/C,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AACrF,sFAAsF;AACtF,oCAAoC;AAEpC,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,mNAAmN;IAChO,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAiDmC;IAChD,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratylus/canon",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
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": {
@@ -21,13 +21,13 @@
21
21
  "@cratylus/schema": "0.1.2"
22
22
  },
23
23
  "devDependencies": {
24
+ "@cratylus/forge": "0.4.1",
25
+ "@cratylus/runtime": "0.2.0",
26
+ "@cratylus/tooling": "0.0.0",
24
27
  "@types/node": "^22.0.0",
25
28
  "tsx": "^4.19.0",
26
29
  "typescript": "^5.7.0",
27
- "vitest": "^2.1.0",
28
- "@cratylus/forge": "0.2.0",
29
- "@cratylus/tooling": "0.0.0",
30
- "@cratylus/runtime": "0.2.0"
30
+ "vitest": "^2.1.0"
31
31
  },
32
32
  "publishConfig": {
33
33
  "access": "public"
@@ -53,7 +53,7 @@
53
53
  },
54
54
  "homepage": "https://github.com/leclabs/cratylus#readme",
55
55
  "scripts": {
56
- "build": "tsc -p tsconfig.build.json",
56
+ "build": "pnpm run clean && tsc -p tsconfig.build.json",
57
57
  "clean": "rm -rf dist",
58
58
  "continuity": "sh targets/continuity/continuity-hook.sh",
59
59
  "dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput",
@@ -65,7 +65,7 @@
65
65
  "project:targets": "tsx tooling/project-targets-cli.ts",
66
66
  "scaffold": "tsx tooling/scaffold-cli.ts",
67
67
  "stance-guard:test": "sh test/support/guardrail/test-stance-guardrail.sh",
68
- "test": "pnpm run build && vitest run",
68
+ "test": "vitest run",
69
69
  "typecheck": "tsc --noEmit",
70
70
  "typecheck:test": "tsc -p tsconfig.test.json"
71
71
  }
@@ -1,2 +0,0 @@
1
- import type { Agent } from '../manifest.js';
2
- export declare const archDocWriter: Agent;
@@ -1,54 +0,0 @@
1
- import { delegation as delegation_actions } from '../dimensions/actions/delegation.js';
2
- import { fileOps as fileOps_actions } from '../dimensions/actions/file-ops.js';
3
- import { toolCall as toolCall_actions } from '../dimensions/actions/tool-call.js';
4
- import { convergence as convergence_audienceAdaptation } from '../dimensions/audience-adaptation/convergence.js';
5
- import { systemDesign as systemDesign_capabilities } from '../dimensions/capabilities/system-design.js';
6
- import { technicalWriting as technicalWriting_capabilities } from '../dimensions/capabilities/technical-writing.js';
7
- import { neutral as neutral_formality } from '../dimensions/formality/neutral.js';
8
- import { systemsThinking as systemsThinking_framing } from '../dimensions/framing/systems-thinking.js';
9
- import { harmAvoidance as harmAvoidance_guardrails } from '../dimensions/guardrails/harm-avoidance.js';
10
- import { helpfulness as helpfulness_guardrails } from '../dimensions/guardrails/helpfulness.js';
11
- import { honesty as honesty_guardrails } from '../dimensions/guardrails/honesty.js';
12
- import { takeTheBest as takeTheBest_heuristics } from '../dimensions/heuristics/take-the-best.js';
13
- import { correctionConsolidation as correctionConsolidation_learning } from '../dimensions/learning/correction-consolidation.js';
14
- import { faithfulRecord as faithfulRecord_objective } from '../dimensions/objective/faithful-record.js';
15
- import { document as document_outputFormat } from '../dimensions/output-format/document.js';
16
- import { react as react_reasoningStrategy } from '../dimensions/reasoning-strategy/react.js';
17
- import { document as document_role } from '../dimensions/role/document.js';
18
- import { satisfice as satisfice_satisficing } from '../dimensions/satisficing/satisfice.js';
19
- import { acceptanceCriteriaCheck as acceptanceCriteriaCheck_selfEvaluation } from '../dimensions/self-evaluation/acceptance-criteria-check.js';
20
- import { comprehension as comprehension_situationAwareness } from '../dimensions/situation-awareness/comprehension.js';
21
- import { provenanceAttribution as provenanceAttribution_transparency } from '../dimensions/transparency/provenance-attribution.js';
22
- export const archDocWriter = {
23
- name: 'arch-doc-writer',
24
- description: 'Use this agent to explain how an existing system works for a human reader — a guide, reference, or ADR with every claim grounded; it documents, never alters the system.',
25
- archetype: 'Sage archetype of the architecture record — render a system intelligible in reader-facing prose (guides · references · ADRs), describe ¬alter, every claim cited to its ground and marked observed-vs-inferred; the Principal-Technical-Writer lineage.',
26
- role: document_role,
27
- formality: neutral_formality,
28
- audienceAdaptation: convergence_audienceAdaptation,
29
- transparency: provenanceAttribution_transparency,
30
- autonomy: null,
31
- provenance: { mark: { emoji: '🏗️', hue: 'pink' } },
32
- objective: faithfulRecord_objective,
33
- guardrails: [
34
- harmAvoidance_guardrails,
35
- honesty_guardrails,
36
- helpfulness_guardrails,
37
- ],
38
- heuristics: [takeTheBest_heuristics],
39
- capabilities: [technicalWriting_capabilities, systemDesign_capabilities],
40
- learning: correctionConsolidation_learning,
41
- situationAwareness: comprehension_situationAwareness,
42
- actions: [fileOps_actions, toolCall_actions, delegation_actions],
43
- modalities: null,
44
- model: null,
45
- memory: null,
46
- trigger: null,
47
- framing: systemsThinking_framing,
48
- reasoningStrategy: react_reasoningStrategy,
49
- satisficing: satisfice_satisficing,
50
- outputFormat: document_outputFormat,
51
- selfEvaluation: acceptanceCriteriaCheck_selfEvaluation,
52
- engineeringPrinciples: null,
53
- };
54
- //# sourceMappingURL=arch-doc-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arch-doc-writer.js","sourceRoot":"","sources":["../../src/agents/arch-doc-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,WAAW,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AACjH,OAAO,EAAE,YAAY,IAAI,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,gBAAgB,IAAI,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AACpH,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACvG,OAAO,EAAE,aAAa,IAAI,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACvG,OAAO,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACjI,OAAO,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACxG,OAAO,EAAE,QAAQ,IAAI,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,KAAK,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,uBAAuB,IAAI,sCAAsC,EAAE,MAAM,4DAA4D,CAAC;AAC/I,OAAO,EAAE,aAAa,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACvH,OAAO,EAAE,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAEnI,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,0KAA0K;IAC5K,SAAS,EACP,yPAAyP;IAC3P,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,iBAAiB;IAC5B,kBAAkB,EAAE,8BAA8B;IAClD,YAAY,EAAE,kCAAkC;IAChD,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;IACnD,SAAS,EAAE,wBAAwB;IACnC,UAAU,EAAE;QACV,wBAAwB;QACxB,kBAAkB;QAClB,sBAAsB;KACvB;IACD,UAAU,EAAE,CAAC,sBAAsB,CAAC;IACpC,YAAY,EAAE,CAAC,6BAA6B,EAAE,yBAAyB,CAAC;IACxE,QAAQ,EAAE,gCAAgC;IAC1C,kBAAkB,EAAE,gCAAgC;IACpD,OAAO,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;IAChE,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,uBAAuB;IAChC,iBAAiB,EAAE,uBAAuB;IAC1C,WAAW,EAAE,qBAAqB;IAClC,YAAY,EAAE,qBAAqB;IACnC,cAAc,EAAE,sCAAsC;IACtD,qBAAqB,EAAE,IAAI;CAC5B,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Agent } from '../manifest.js';
2
- export declare const boz: Agent;