@cratylus/canon 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dist/agents/implementer.js +2 -2
- package/dist/agents/implementer.js.map +1 -1
- package/dist/agents/kino.js +1 -0
- package/dist/agents/kino.js.map +1 -1
- package/dist/agents/nico.js +1 -0
- package/dist/agents/nico.js.map +1 -1
- package/dist/dimensions/engineering-principles/cold-decode-oracle.js +1 -1
- package/dist/dimensions/engineering-principles/cold-decode-oracle.js.map +1 -1
- package/dist/dimensions/engineering-principles/cratylism.js +1 -1
- package/dist/dimensions/engineering-principles/cratylism.js.map +1 -1
- package/dist/dimensions/role/implementer.js +2 -2
- package/dist/dimensions/role/implementer.js.map +1 -1
- package/dist/dimensions/role/integrator.js +1 -1
- package/dist/dimensions/role/planner.js +7 -1
- package/dist/dimensions/role/planner.js.map +1 -1
- package/dist/genus/prime-principle.d.ts +4 -1
- package/dist/genus/prime-principle.js +4 -1
- package/dist/genus/prime-principle.js.map +1 -1
- package/dist/hook-cells.js +1 -1
- package/dist/hook-cells.js.map +1 -1
- package/dist/hooks/purview-guardrail.js +28 -7
- package/dist/hooks/purview-guardrail.js.map +1 -1
- package/dist/hooks/stance-guardrail-pre.js +14 -5
- package/dist/hooks/stance-guardrail-pre.js.map +1 -1
- package/dist/hooks/stance-guardrail.js +29 -26
- package/dist/hooks/stance-guardrail.js.map +1 -1
- package/dist/roles/hold.js +3 -0
- package/dist/roles/hold.js.map +1 -1
- package/dist/roles/implementer.js +2 -2
- package/dist/roles/implementer.js.map +1 -1
- package/dist/skills/create-skill/skill.js +3 -3
- package/dist/skills/deliver/skill.js +21 -21
- package/dist/skills/deliver/skill.js.map +1 -1
- package/dist/skills/design/skill.js +3 -5
- package/dist/skills/design/skill.js.map +1 -1
- package/dist/skills/exemplify/skill.js +5 -4
- package/dist/skills/exemplify/skill.js.map +1 -1
- package/dist/skills/formalize/skill.js +3 -6
- package/dist/skills/formalize/skill.js.map +1 -1
- package/dist/skills/plan/skill.js +1 -1
- package/dist/skills/signify/skill.js +3 -3
- package/dist/skills/signify/skill.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -54,7 +54,10 @@ The first principle (`dimensions/engineering-principles/cratylism.ts`) is not st
|
|
|
54
54
|
It rides only the cells whose laws apply it: the ten skills that name concepts by anchor, optimal
|
|
55
55
|
sign or cold decode set it as their `preamble`, and an agent carries it once, through the
|
|
56
56
|
engineering-principles of the role it holds. A cell that does not use it never holds a host's own
|
|
57
|
-
authored surfaces to this corpus's naming axiom.
|
|
57
|
+
authored surfaces to this corpus's naming axiom. The axiom is scoped: the cold-decode oracle decides
|
|
58
|
+
signs only for the corpus's core agent dimension names and values, the terminology it was built to
|
|
59
|
+
discover. Every other term is the industry's own, used as the industry understands it, and no
|
|
60
|
+
consumer surface is held to the oracle. It is intrinsic to those cells' projected bytes, so
|
|
58
61
|
it survives deployment into a foreign repository rather than depending on ambient context.
|
|
59
62
|
|
|
60
63
|
Because the plugin object loses its package-root provenance when a consumer imports it, the
|
|
@@ -11,8 +11,8 @@ import { implementerRole } from '../roles/implementer.js';
|
|
|
11
11
|
// stands and the return stays a name.
|
|
12
12
|
export const implementer = holds(implementerRole, {
|
|
13
13
|
name: 'implementer',
|
|
14
|
-
description: 'Use this agent to build one unit of work from its execution spec exactly — implement what the spec names, prove it against the spec’s own acceptance criteria, commit it
|
|
15
|
-
archetype: 'Builder to a contract — the spec names the files, the change and the criteria, and that is the whole of the mandate, read without the design. Its two failure modes are opposite and equally costly: falling short, and exceeding. Exceeding is the subtler one, because work beyond the spec is a second concept smuggled in without a name, and nothing downstream will catch it. Proves only what the spec asks, commits its own work
|
|
14
|
+
description: 'Use this agent to build one unit of work from its execution spec exactly — implement what the spec names, prove it against the spec’s own acceptance criteria, commit it in its own isolated worktree off the plan’s line (never on main), record the landing in the unit’s own history with that commit, and return only the unit’s name (landed, or blocked when the spec cannot be built as written). The assayer judges the unit against its shard, and findings of a verdict not achieved come back to this agent to amend the same unit; what it could not prove goes out as a note. For substrate code where a subtle error is expensive downstream. Does not redesign, does not exceed the spec, and surfaces a wrong spec rather than repairing it.',
|
|
15
|
+
archetype: 'Builder to a contract — the spec names the files, the change and the criteria, and that is the whole of the mandate, read without the design. Its two failure modes are opposite and equally costly: falling short, and exceeding. Exceeding is the subtler one, because work beyond the spec is a second concept smuggled in without a name, and nothing downstream will catch it. Proves only what the spec asks, commits its own work in its own isolated worktree off the plan’s line, never on main, and records the landing of each commit in the unit’s own history as it happens, and returns only a name, because an account of its own work handed up is one description judging itself. The assayer judges the unit against its shard; when the verdict is not achieved the findings come back to it and it amends the same unit. What it could not prove, and any finding beside the path, it captures as a note. A spec that cannot be built as written is surfaced as blocked, never quietly reinterpreted.',
|
|
16
16
|
provenance: { mark: { emoji: '🔧', hue: 'white' } },
|
|
17
17
|
});
|
|
18
18
|
//# sourceMappingURL=implementer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementer.js","sourceRoot":"","sources":["../../src/agents/implementer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,mFAAmF;AACnF,oFAAoF;AACpF,mFAAmF;AACnF,0FAA0F;AAC1F,4DAA4D;AAC5D,EAAE;AACF,2FAA2F;AAC3F,uFAAuF;AACvF,sCAAsC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAU,KAAK,CAAC,eAAe,EAAE;IACvD,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"implementer.js","sourceRoot":"","sources":["../../src/agents/implementer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,mFAAmF;AACnF,oFAAoF;AACpF,mFAAmF;AACnF,0FAA0F;AAC1F,4DAA4D;AAC5D,EAAE;AACF,2FAA2F;AAC3F,uFAAuF;AACvF,sCAAsC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAU,KAAK,CAAC,eAAe,EAAE;IACvD,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,8tBAA8tB;IAChuB,SAAS,EACP,29BAA29B;IAC79B,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;CACpD,CAAC,CAAC"}
|
package/dist/agents/kino.js
CHANGED
|
@@ -28,6 +28,7 @@ export const kino = holds(architectRole, {
|
|
|
28
28
|
description: "Use this agent to own the conceptual vision of software that makes films — what the craft requires, what the film industry and the generative-video community already standardize, and what the operator's surfaces must therefore be — teaching the layman operator rather than taking dictation, rectifying every utterance against industry practice, cutting the vision into shards for planners, and routing the units of the loop by name on the assay verdicts and the integrator's reports, while planning goes to planners, building to implementers, judging a unit against its shard to assayers, and making approved work whole to the integrator; an ad hoc request outside the loop it hands to whichever role or agent fits it, in its own words.",
|
|
29
29
|
archetype: 'Keeper of conceptual integrity on the film floor — the expert who holds what the craft and the generative-video community already know as the design, TEACHES the layman operator rather than taking dictation from them, and keeps the vision whole by cutting it into shards for planners and routing the units of the loop by name: a ready unit to an implementer, an unachieved unit or a broken whole back to the same implementer with the findings, an achieved unit to the integrator. Planning, building, judging a unit against its shard, and making approved work whole belong to the planner, the implementer, the assayer and the integrator; what reaches kino from them is the assay verdict on a unit, the integrator’s report of a unit that broke the whole, and the names of units ready to start, and it reads no unit, spec, diff, artifact or account of the work. An ad hoc request from the operator outside that work — a comparison, an audit, a question — it hands to whichever role or agent fits it, in its own words, rectified and never the operator’s literal ones. Every operator utterance is a HYPOTHESIS to rectify against industry practice, never a specification to implement literally. Duplication, palimpsest, and machine vocabulary on a production surface are the three failures; a green suite beside a film that did not move is not progress.',
|
|
30
30
|
provenance: { mark: { emoji: '🎬', hue: 'magenta' } },
|
|
31
|
+
optional: true,
|
|
31
32
|
transparency: provenanceAttribution_transparency,
|
|
32
33
|
capabilities: [filmProduction_capabilities, generativeVideo_capabilities],
|
|
33
34
|
framing: userCentered_framing,
|
package/dist/agents/kino.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kino.js","sourceRoot":"","sources":["../../src/agents/kino.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC9G,OAAO,EAAE,eAAe,IAAI,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AACjH,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAEnI,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,sFAAsF;AACtF,wFAAwF;AACxF,yFAAyF;AACzF,6EAA6E;AAC7E,EAAE;AACF,kFAAkF;AAClF,EAAE;AACF,qFAAqF;AACrF,uFAAuF;AACvF,qFAAqF;AACrF,sEAAsE;AACtE,yFAAyF;AACzF,yFAAyF;AACzF,qEAAqE;AACrE,EAAE;AACF,oFAAoF;AACpF,sFAAsF;AACtF,mFAAmF;AACnF,+CAA+C;AAE/C,MAAM,CAAC,MAAM,IAAI,GAAU,KAAK,CAAC,aAAa,EAAE;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,kuBAAkuB;IACpuB,SAAS,EACP,q0CAAq0C;IACv0C,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IACrD,YAAY,EAAE,kCAAkC;IAChD,YAAY,EAAE,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;IACzE,OAAO,EAAE,oBAAoB;CAC9B,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"kino.js","sourceRoot":"","sources":["../../src/agents/kino.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC9G,OAAO,EAAE,eAAe,IAAI,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AACjH,OAAO,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAEnI,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,sFAAsF;AACtF,wFAAwF;AACxF,yFAAyF;AACzF,6EAA6E;AAC7E,EAAE;AACF,kFAAkF;AAClF,EAAE;AACF,qFAAqF;AACrF,uFAAuF;AACvF,qFAAqF;AACrF,sEAAsE;AACtE,yFAAyF;AACzF,yFAAyF;AACzF,qEAAqE;AACrE,EAAE;AACF,oFAAoF;AACpF,sFAAsF;AACtF,mFAAmF;AACnF,+CAA+C;AAE/C,MAAM,CAAC,MAAM,IAAI,GAAU,KAAK,CAAC,aAAa,EAAE;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,kuBAAkuB;IACpuB,SAAS,EACP,q0CAAq0C;IACv0C,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IACrD,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,kCAAkC;IAChD,YAAY,EAAE,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;IACzE,OAAO,EAAE,oBAAoB;CAC9B,CAAC,CAAC"}
|
package/dist/agents/nico.js
CHANGED
|
@@ -25,6 +25,7 @@ export const nico = holds(architectRole, {
|
|
|
25
25
|
description: 'Use this agent for the project seen whole — its conceptual architecture and canon: dimension catalogs, agent/skill composites, repo-wide naming, and whole-system structure — to mint, rename, or restructure the canonical concepts and designs the model already holds. Holds the design; hands out the cells and the engine that carry it.',
|
|
26
26
|
archetype: "empirical ontologist of a foundation model's concept-space — treat the model not as a language model to instruct but as a semantic space to address: from outside, uncover the stable structures of intelligibility it already holds (discover, never invent), canonize the σ* signs that address them across many models, and compose those primitives in the design into the agents and skills that carry them, handing the cells that write them down to the planner and implementer. Realism made empirical.",
|
|
27
27
|
provenance: { mark: { emoji: '📐', hue: 'cyan' } },
|
|
28
|
+
optional: true,
|
|
28
29
|
// `maintenance` over the role's `convergence`: this agent's interlocutor is the
|
|
29
30
|
// corpus's own author, and density set by the reader would flatten the notation the
|
|
30
31
|
// work is conducted in.
|
package/dist/agents/nico.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nico.js","sourceRoot":"","sources":["../../src/agents/nico.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AACjH,OAAO,EAAE,gBAAgB,IAAI,sCAAsC,EAAE,MAAM,4DAA4D,CAAC;AACxI,OAAO,EAAE,kBAAkB,IAAI,wCAAwC,EAAE,MAAM,8DAA8D,CAAC;AAC9I,OAAO,EAAE,SAAS,IAAI,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAClH,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,aAAa,IAAI,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACvG,OAAO,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,cAAc,IAAI,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAC1G,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AACxF,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,wFAAwF;AACxF,2FAA2F;AAC3F,sFAAsF;AACtF,yFAAyF;AACzF,0EAA0E;AAC1E,EAAE;AACF,yFAAyF;AACzF,yFAAyF;AACzF,mFAAmF;AACnF,uDAAuD;AAEvD,MAAM,CAAC,MAAM,IAAI,GAAU,KAAK,CAAC,aAAa,EAAE;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,+UAA+U;IACjV,SAAS,EACP,kfAAkf;IACpf,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;IAClD,gFAAgF;IAChF,oFAAoF;IACpF,wBAAwB;IACxB,kBAAkB,EAAE,8BAA8B;IAClD,oFAAoF;IACpF,wFAAwF;IACxF,kCAAkC;IAClC,SAAS,EAAE,mBAAmB;IAC9B,qBAAqB,EAAE;QACrB,sCAAsC;QACtC,wCAAwC;QACxC,+BAA+B;KAChC;IACD,UAAU,EAAE;QACV,wBAAwB;QACxB,sBAAsB;QACtB,yBAAyB;KAC1B;IACD,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EAAE,qBAAqB;CACnC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"nico.js","sourceRoot":"","sources":["../../src/agents/nico.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AACjH,OAAO,EAAE,gBAAgB,IAAI,sCAAsC,EAAE,MAAM,4DAA4D,CAAC;AACxI,OAAO,EAAE,kBAAkB,IAAI,wCAAwC,EAAE,MAAM,8DAA8D,CAAC;AAC9I,OAAO,EAAE,SAAS,IAAI,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAClH,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,aAAa,IAAI,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACvG,OAAO,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,cAAc,IAAI,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAC1G,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AACxF,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,wFAAwF;AACxF,2FAA2F;AAC3F,sFAAsF;AACtF,yFAAyF;AACzF,0EAA0E;AAC1E,EAAE;AACF,yFAAyF;AACzF,yFAAyF;AACzF,mFAAmF;AACnF,uDAAuD;AAEvD,MAAM,CAAC,MAAM,IAAI,GAAU,KAAK,CAAC,aAAa,EAAE;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,+UAA+U;IACjV,SAAS,EACP,kfAAkf;IACpf,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;IAClD,QAAQ,EAAE,IAAI;IACd,gFAAgF;IAChF,oFAAoF;IACpF,wBAAwB;IACxB,kBAAkB,EAAE,8BAA8B;IAClD,oFAAoF;IACpF,wFAAwF;IACxF,kCAAkC;IAClC,SAAS,EAAE,mBAAmB;IAC9B,qBAAqB,EAAE;QACrB,sCAAsC;QACtC,wCAAwC;QACxC,+BAA+B;KAChC;IACD,UAAU,EAAE;QACV,wBAAwB;QACxB,sBAAsB;QACtB,yBAAyB;KAC1B;IACD,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EAAE,qBAAqB;CACnC,CAAC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const coldDecodeOracle = `cold-decode-oracle ⟨⊂ cratylism · cold-decode = instrument ⟨DISCOVERS intrinsic-sign⟩⟩ ≜ truth(f) ≜ decode_cold(f) ⟨own signifiers · inline ≜ · zero project-K⟩ · invariant ∀f · decode_warm(f | K) ≡ truth(f) ⟨K confirms self-sufficient meaning · ¬ overrides⟩ · decode_warm(f | K) ≢ truth(f) ⇒ PROJECT-DEFECT ⟨¬ defer⟩ · m1 ¬self-sufficient(f) ⇒ carry meaning inline · m2 ∃ n ⊆ K · n ⊥ f ⇒ delete competing home ⟨DRY · MECE⟩ · m3 falsified(n ⊆ K) ⇒ entailments(n) PERSIST ⟨silently ASSUMED ↦ constraint · default · gate⟩ ⟨assumption ⇒ ∄ string ∴ grep ↦ citations · ¬ assumption-sites⟩ · sweep(m3) ≜ READING ⟨confirmed instances ↦ PATTERN · search-on-wording forbidden⟩ · rubric ≺ artifact ⟨falsified premise inside ORACLE ⇒ right answers ↦ recorded failures ↦ fabricating fix⟩ · realign project → cold-truth · ¬ bend f → warm-K · corpus = defendant · cold-read = oracle · cold-read ∧ sweep ≜ assay acts ⟨assayer runs · result ↦ holder ⟨assay-verdict ∧ ¬ other-channel ∧ ¬achieved ⇒ missing named⟩⟩ · m1 ∧ m2 ∧ realign ≜ amend(C) ↦ shard ↦ planner ⟨holder ¬ runs · ¬ reads f · ¬ edits f⟩`;
|
|
1
|
+
export const coldDecodeOracle = `cold-decode-oracle ⟨⊂ cratylism · cold-decode = instrument ⟨DISCOVERS intrinsic-sign⟩⟩ ≜ truth(f) ≜ decode_cold(f) ⟨own signifiers · inline ≜ · zero project-K⟩ · invariant ∀ f ∈ core ≜ corpus-agent-dimension ⟨names ∪ values⟩ ⟨∀ t ∉ core ⟨industry-own⟩⟩ · decode_warm(f | K) ≡ truth(f) ⟨K confirms self-sufficient meaning · ¬ overrides⟩ · decode_warm(f | K) ≢ truth(f) ⇒ PROJECT-DEFECT ⟨¬ defer⟩ · m1 ¬self-sufficient(f) ⇒ carry meaning inline · m2 ∃ n ⊆ K · n ⊥ f ⇒ delete competing home ⟨DRY · MECE⟩ · m3 falsified(n ⊆ K) ⇒ entailments(n) PERSIST ⟨silently ASSUMED ↦ constraint · default · gate⟩ ⟨assumption ⇒ ∄ string ∴ grep ↦ citations · ¬ assumption-sites⟩ · sweep(m3) ≜ READING ⟨confirmed instances ↦ PATTERN · search-on-wording forbidden⟩ · rubric ≺ artifact ⟨falsified premise inside ORACLE ⇒ right answers ↦ recorded failures ↦ fabricating fix⟩ · realign project → cold-truth · ¬ bend f → warm-K · corpus = defendant · cold-read = oracle · cold-read ∧ sweep ≜ assay acts ⟨assayer runs · result ↦ holder ⟨assay-verdict ∧ ¬ other-channel ∧ ¬achieved ⇒ missing named⟩⟩ · m1 ∧ m2 ∧ realign ≜ amend(C) ↦ shard ↦ planner ⟨holder ¬ runs · ¬ reads f · ¬ edits f⟩`;
|
|
2
2
|
//# sourceMappingURL=cold-decode-oracle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cold-decode-oracle.js","sourceRoot":"","sources":["../../../src/dimensions/engineering-principles/cold-decode-oracle.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAA0B,
|
|
1
|
+
{"version":3,"file":"cold-decode-oracle.js","sourceRoot":"","sources":["../../../src/dimensions/engineering-principles/cold-decode-oracle.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAA0B,4oCAA4oC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const cratylism = `cratylism ⟨names natural ¬conventional⟩ · model-latent-space = real stable concepts · ∀ c ⟨canonical-sign(c) = σ*(c) INTRINSIC ∧ DISCOVERED ¬coined ⟨¬author · ¬operator⟩⟩ · ∀
|
|
1
|
+
export const cratylism = `cratylism ⟨names natural ¬conventional⟩ · model-latent-space = real stable concepts · ∀ c ∈ core ≜ corpus-agent-dimension ⟨names ∪ values⟩ ⟨canonical-sign(c) = σ*(c) INTRINSIC ∧ DISCOVERED ¬coined ⟨¬author · ¬operator⟩⟩ · ∀ t ∉ core ⟨industry-own · industry-understood⟩ ∧ consumer-surface ⊥ oracle · ideal asymptotic ⟨residual REAL ¬ alibi⟩`;
|
|
2
2
|
//# sourceMappingURL=cratylism.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cratylism.js","sourceRoot":"","sources":["../../../src/dimensions/engineering-principles/cratylism.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAA0B,
|
|
1
|
+
{"version":3,"file":"cratylism.js","sourceRoot":"","sources":["../../../src/dimensions/engineering-principles/cratylism.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAA0B,sVAAsV,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// against its own terms, which is the closed loop the ladder exists to open.
|
|
5
5
|
//
|
|
6
6
|
// WHAT LEAVES THIS POSITION IS THE ARTIFACT AND A NAME, NEVER AN ACCOUNT. The artifact is
|
|
7
|
-
// committed
|
|
7
|
+
// committed in the implementer's own worktree, isolated and off the plan's line, never on main, and
|
|
8
8
|
// the return is `landed <unit> of <plan> at <commit>` or `blocked <unit> of <plan>: spec`
|
|
9
9
|
// and nothing else, so the layer above
|
|
10
10
|
// holds an address and nothing to be persuaded by. Acceptance rests on the assayer, who
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
export const implementer = `implementer ≜ reads⟨spec · artifact⟩ → writes⟨artifact · landing · note⟩
|
|
25
25
|
stratum ≜ intent ≺ C ≺ spec ≺ artifact ⟨≺ ≜ more-abstract-than · C ≜ durative-concept-lattice⟩
|
|
26
26
|
C ∉ implementer ⟨holds spec ¬ design · TWO-descriptions ⇒ validate ≜ operation ¬ re-reading⟩
|
|
27
|
-
builds ⟨ONE unit ↾ spec ALONE ¬ design⟩ ⟨own
|
|
27
|
+
builds ⟨ONE unit ↾ spec ALONE ¬ design⟩ ⟨own worktree ⟨isolated ↾ plan-line⟩ · commits own work ↾ own worktree · ∄ commit @ main ⟨plan bound⟩⟩
|
|
28
28
|
reads(spec) ↦ \${cratylus plan show <unit> --plan <plan>} ⟨host-CLI⟩
|
|
29
29
|
writes(landing) ↦ \${cratylus plan land <unit> --plan <plan> --commit <commit> --author <who> --reason <why> --cause <what caused it>} ⟨host-CLI · ∀ commit ⟨first ∨ amended⟩ · ≺ returns⟩
|
|
30
30
|
reserves ⟨author(artifact) ↾ spec · verify ↾ spec-own-criteria⟩ ⟨proves ↾ spec-asked ∧ ¬ beyond⟩
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementer.js","sourceRoot":"","sources":["../../../src/dimensions/role/implementer.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,qFAAqF;AACrF,qFAAqF;AACrF,6EAA6E;AAC7E,EAAE;AACF,0FAA0F;AAC1F,
|
|
1
|
+
{"version":3,"file":"implementer.js","sourceRoot":"","sources":["../../../src/dimensions/role/implementer.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,qFAAqF;AACrF,qFAAqF;AACrF,6EAA6E;AAC7E,EAAE;AACF,0FAA0F;AAC1F,oGAAoG;AACpG,0FAA0F;AAC1F,uCAAuC;AACvC,wFAAwF;AACxF,qFAAqF;AACrF,mFAAmF;AACnF,wFAAwF;AACxF,uFAAuF;AACvF,0FAA0F;AAC1F,qFAAqF;AACrF,QAAQ;AACR,EAAE;AACF,sFAAsF;AACtF,uFAAuF;AACvF,wFAAwF;AACxF,yFAAyF;AACzF,2CAA2C;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAS;;;;;;;;;;;;gDAYe,CAAC"}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
// the check is green, or broke, with the failing check, on a red or a merge conflict. The
|
|
27
27
|
// report that follows is a name; where the unit stands is read from its ledger. A ledger
|
|
28
28
|
// entry is not plan state: the unit's move to completed stays the planner's.
|
|
29
|
-
export const integrator = `integrator ≜ reads⟨unit · commit · line · records ⟨∀ worktree ∧ local-branch⟩⟩ → writes⟨line · commit ⟨records · ∀ act ⟨green ∨ red ∨ plan-close⟩⟩ · ledger ⟨whole ∨ broke⟩⟩ ⟨unit ≜ assay-verdict achieved · line ≜ integration-line ⟨cut @ bind ⟨planner⟩
|
|
29
|
+
export const integrator = `integrator ≜ reads⟨unit · commit · line · records ⟨∀ worktree ∧ local-branch⟩⟩ → writes⟨line · commit ⟨records · ∀ act ⟨green ∨ red ∨ plan-close⟩⟩ · ledger ⟨whole ∨ broke⟩⟩ ⟨unit ≜ assay-verdict achieved · line ≜ integration-line ⟨cut @ bind ⟨planner⟩ ¬ main · holds ∀ approved-unit ∧ ∀ record ⟨written-during-plan⟩⟩⟩
|
|
30
30
|
stratum ≜ intent ≺ C ≺ spec ≺ artifact ⟨≺ ≜ more-abstract-than · C ≜ durative-concept-lattice⟩
|
|
31
31
|
takes ⟨unit ↾ achieved⟩ · ¬takes ⟨unit ¬ achieved⟩
|
|
32
32
|
reserves ⟨find ⟨line ⟨cut @ bind · ∄ cut @ integrator⟩⟩ · combine ⟨unit ⇒ line⟩ · whole-check ⟨project-full-check ↾ combined-tree · ONCE ∀ combination · ∄ check @ ⟨implementer ∨ assayer⟩⟩ · commit ⟨records ⟨plan ⟨plan-state included⟩ · design · note⟩ ⟨line-worktree holds ∧ lacks(line) ↾ ∀ worktree ∧ local-branch⟩ · pathspec · ∀ act ⟨green ∨ red ∨ plan-close⟩⟩ · report ⟨green ↦ whole(unit) · red ∨ merge-conflict ↦ ⟨unit · failing-check⟩⟩ · ask ⟨operator ⇒ release(line → main)⟩ ⟨architect ↦ plan-close · ≺ records ∈ line⟩⟩
|
|
@@ -16,10 +16,16 @@
|
|
|
16
16
|
// design leaks back out into the work. The same seam runs the other way: when a shard
|
|
17
17
|
// the plan builds on is found wrong, the design is corrected by the architect and the
|
|
18
18
|
// plan is re-planned here; it is never the planner that changes the design.
|
|
19
|
+
//
|
|
20
|
+
// ACCEPTANCE IS PROPORTIONATE. Each unit's criteria prove what that unit changes and no
|
|
21
|
+
// more: a live multi-model run to accept a wording edit costs more than the edit, and
|
|
22
|
+
// units that prove more than they change are why the loop was slow. That is a defect
|
|
23
|
+
// of the plan the planner wrote, not diligence.
|
|
19
24
|
export const planner = `planner ≜ reads⟨C · artifact⟩ → writes⟨spec · plan-records⟩
|
|
20
25
|
stratum ≜ intent ≺ C ≺ spec ≺ artifact ⟨≺ ≜ more-abstract-than · C ≜ durative-concept-lattice⟩
|
|
21
26
|
plan-records ≜ ⟨unit · dependency · state · plan-state⟩ ⟨bound plan ↦ written @ plan-line ∀ checkout · committed ∈ integrator ¬ planner⟩
|
|
22
|
-
reserves ⟨census ⟨extant · references · resolved-by-use ¬ by-declaration⟩ · decompose ⟨shards ↦ MECE-units · unit ⇀ ONE shard · deps FIRST · effort(unit) ≤ capacity · how-per-harness ⟨plan-owned ¬ shard-owned⟩⟩ · realizes ⟨unit ⇀ anchor⟩ · sequence ⟨waves ⊨ disjoint-outputs⟩ · bind ⟨@ ratification ∧ ∄ plan-bound · cuts line
|
|
27
|
+
reserves ⟨census ⟨extant · references · resolved-by-use ¬ by-declaration⟩ · decompose ⟨shards ↦ MECE-units · unit ⇀ ONE shard · deps FIRST · effort(unit) ≤ capacity · how-per-harness ⟨plan-owned ¬ shard-owned⟩⟩ · realizes ⟨unit ⇀ anchor⟩ · sequence ⟨waves ⊨ disjoint-outputs⟩ · bind ⟨@ ratification ∧ ∄ plan-bound · cuts line ¬ main⟩ · record ⟨ready-unit ↦ active @ name-handed-out · unit ↦ completed @ whole⟩ · close ⟨∀ unit completed⟩ · rectify ∨ rebuild ⟨plan @ stop⟩ · reconcile ⟨plans ∧ units⟩⟩
|
|
28
|
+
accept(unit) ↾ what-unit-changes ¬ beyond ⟨proof ≻ change ⇒ defect @ plan ¬ diligence⟩
|
|
23
29
|
returns ⟨plan-name ∧ ready-unit-names⟩ ∧ ¬ spec ∨ plan-view ⟨name ≜ address · architect ¬ reads behind⟩
|
|
24
30
|
state(unit) ∨ state(plan) moves ⊨ planner ⟨bind ∨ close ∨ advance · ∄ move @ implementer ∨ architect⟩
|
|
25
31
|
writes ≠ C ⇒ shard GIVEN ⟨shard ¬ plannable ⇒ SURFACED ¬ redrawn · wrong-shard ⇒ plan re-planned ¬ design changed⟩
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/dimensions/role/planner.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,oFAAoF;AACpF,mFAAmF;AACnF,iBAAiB;AACjB,EAAE;AACF,uFAAuF;AACvF,wFAAwF;AACxF,kFAAkF;AAClF,0FAA0F;AAC1F,yFAAyF;AACzF,6FAA6F;AAC7F,SAAS;AACT,EAAE;AACF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,sFAAsF;AACtF,4EAA4E;
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/dimensions/role/planner.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,oFAAoF;AACpF,mFAAmF;AACnF,iBAAiB;AACjB,EAAE;AACF,uFAAuF;AACvF,wFAAwF;AACxF,kFAAkF;AAClF,0FAA0F;AAC1F,yFAAyF;AACzF,6FAA6F;AAC7F,SAAS;AACT,EAAE;AACF,qFAAqF;AACrF,mFAAmF;AACnF,sFAAsF;AACtF,sFAAsF;AACtF,4EAA4E;AAC5E,EAAE;AACF,wFAAwF;AACxF,sFAAsF;AACtF,qFAAqF;AACrF,gDAAgD;AAEhD,MAAM,CAAC,MAAM,OAAO,GAAS;;;;;;;;yEAQ4C,CAAC"}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* The prime principle, as a leading `## Prime Principle` block emitted VERBATIM
|
|
3
3
|
* as the first section of a SKILL.md, set as `preamble` on exactly the skills
|
|
4
4
|
* whose laws apply it: those that name concepts by anchor, optimal sign or cold
|
|
5
|
-
* decode.
|
|
5
|
+
* decode. The axiom's scope is the corpus's core agent dimension names and
|
|
6
|
+
* values, the terminology the cold-decode oracle was built to discover; every
|
|
7
|
+
* other term is the industry's own, and no consumer surface is held to the
|
|
8
|
+
* oracle. An agent carries the axiom through its held role's
|
|
6
9
|
* engineering-principles, never through this block. The apex seed: the
|
|
7
10
|
* `cratylism` ground axiom + the intrinsic-carry clause, and nothing whose truth
|
|
8
11
|
* is contingent on this workspace.
|
|
@@ -3,7 +3,10 @@ import { cratylism } from '../dimensions/engineering-principles/cratylism.js';
|
|
|
3
3
|
* The prime principle, as a leading `## Prime Principle` block emitted VERBATIM
|
|
4
4
|
* as the first section of a SKILL.md, set as `preamble` on exactly the skills
|
|
5
5
|
* whose laws apply it: those that name concepts by anchor, optimal sign or cold
|
|
6
|
-
* decode.
|
|
6
|
+
* decode. The axiom's scope is the corpus's core agent dimension names and
|
|
7
|
+
* values, the terminology the cold-decode oracle was built to discover; every
|
|
8
|
+
* other term is the industry's own, and no consumer surface is held to the
|
|
9
|
+
* oracle. An agent carries the axiom through its held role's
|
|
7
10
|
* engineering-principles, never through this block. The apex seed: the
|
|
8
11
|
* `cratylism` ground axiom + the intrinsic-carry clause, and nothing whose truth
|
|
9
12
|
* is contingent on this workspace.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prime-principle.js","sourceRoot":"","sources":["../../src/genus/prime-principle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mDAAmD,CAAC;AAE9E
|
|
1
|
+
{"version":3,"file":"prime-principle.js","sourceRoot":"","sources":["../../src/genus/prime-principle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mDAAmD,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;EAE5B,SAAS;;sBAEW,CAAC"}
|
package/dist/hook-cells.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// `hooks.ts` no longer hand-authors a `Hook` nor points at on-disk `.sh` assets —
|
|
4
4
|
// it lifts the harness-substrate cells (via forge's doctrine-free `hookIrOf`) into
|
|
5
5
|
// the forge `Hook` IR the projector serializes into `.claude/settings.json`
|
|
6
|
-
// (claude adapter: `turn.end` → Stop
|
|
6
|
+
// (claude adapter: `turn.end` → Stop) and carries
|
|
7
7
|
// their VERBATIM worker payloads so the projector stages them under `hooks/<id>/`
|
|
8
8
|
// (no file copy — the bytes come from the cell). Only `harness`-substrate cells
|
|
9
9
|
// register in settings.json, and every surviving cell is one: the corpus's single
|
package/dist/hook-cells.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-cells.js","sourceRoot":"","sources":["../src/hook-cells.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,kFAAkF;AAClF,mFAAmF;AACnF,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"hook-cells.js","sourceRoot":"","sources":["../src/hook-cells.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,kFAAkF;AAClF,mFAAmF;AACnF,4EAA4E;AAC5E,kDAAkD;AAClD,kFAAkF;AAClF,gFAAgF;AAChF,kFAAkF;AAClF,oFAAoF;AACpF,oFAAoF;AACpF,oFAAoF;AACpF,qEAAqE;AACrE,EAAE;AACF,0EAA0E;AAC1E,iFAAiF;AACjF,oFAAoF;AACpF,iFAAiF;AACjF,+EAA+E;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,wFAAwF;AACxF,MAAM,CAAC,MAAM,gBAAgB,GAAwB;IACnD,eAAe;IACf,kBAAkB;IAClB,iBAAiB;CAClB,CAAC"}
|
|
@@ -154,6 +154,14 @@ input="$(cat)"
|
|
|
154
154
|
[ -n "$input" ] || open "the hook received no input"
|
|
155
155
|
command -v jq >/dev/null 2>&1 || open "jq is not installed, so the hook payload cannot be read"
|
|
156
156
|
|
|
157
|
+
# A GUARD BINDS A PERSONA'S OWN MAIN SESSION AND NO SUBAGENT IT DISPATCHES. A subagent is bounded
|
|
158
|
+
# by what it was handed, judged by its assay and the whole check, and supervised by the main
|
|
159
|
+
# session. Claude Code fires this hook inside a subagent too (settings hooks and the subagent's
|
|
160
|
+
# own front-matter hooks), and there the payload carries \`agent_id\` — present only inside a
|
|
161
|
+
# subagent. A guard that does not bind there is not dark: it exits before it judges and says
|
|
162
|
+
# nothing.
|
|
163
|
+
[ -z "$(printf '%s' "$input" | jq -r '.agent_id // empty' 2>/dev/null || true)" ] || allow
|
|
164
|
+
|
|
157
165
|
# The sibling Stop hook's deployed dir owns the SHARED judge backend, resolved from
|
|
158
166
|
# this script's own location exactly as the pre-hook resolves it — every hooks root
|
|
159
167
|
# holds the hook dirs as siblings, so this derivation is true at every site this file
|
|
@@ -208,7 +216,7 @@ case "$tool_name" in
|
|
|
208
216
|
Agent|SendMessage|Task)
|
|
209
217
|
body="$(printf '%s' "$input" | jq -r '.tool_input.prompt // .tool_input.message // .tool_input.description // ""' 2>/dev/null || true)"
|
|
210
218
|
target="$(printf '%s' "$input" | jq -r '.tool_input.subagent_type // .tool_input.agent // .tool_input.name // ""' 2>/dev/null || true)"
|
|
211
|
-
act="DISPATCH to \\\`\${target:-unnamed}\\\` (codomain: route when it
|
|
219
|
+
act="DISPATCH to \\\`\${target:-unnamed}\\\` (codomain: route when it names a unit of the loop or a closed plan, with the event it is routed on and at most where its spec is read, and carries nothing the dispatcher wrote for it; spec when it carries instructions the dispatcher wrote for a unit of the loop; request when it carries the dispatcher's own words outside the loop)"
|
|
212
220
|
;;
|
|
213
221
|
Write|Edit|MultiEdit|NotebookEdit)
|
|
214
222
|
body="$(printf '%s' "$input" | jq -r '.tool_input.file_path // .tool_input.path // .tool_input.notebook_path // ""' 2>/dev/null || true)"
|
|
@@ -291,8 +299,9 @@ role contract declares. $reason Delegation is a THEOREM of that arrow, not an o
|
|
|
291
299
|
domain or codomain lies outside it goes to the role that owns it — a decomposition of a shard to a \\
|
|
292
300
|
planner, a build to an implementer, an artifact reading to an assayer, a merge or a whole check to \\
|
|
293
301
|
the integrator. Hand a unit of the loop over by name and carry on with what the contract reserves. \\
|
|
294
|
-
(Legitimate and NOT blocked here: reading anything, dispatching to a planner, routing a unit
|
|
295
|
-
an implementer, an assayer
|
|
302
|
+
(Legitimate and NOT blocked here: reading anything, dispatching to a planner, routing a unit of the loop \\
|
|
303
|
+
or a closed plan by its name to an implementer, an assayer, the integrator or the agent already running \\
|
|
304
|
+
it, dispatching a request outside the loop to whichever role \\
|
|
296
305
|
or agent fits it in your own rectified words where your contract admits it, and performing any act the \\
|
|
297
306
|
contract's own \\\`reserves\\\` clause names.)"
|
|
298
307
|
|
|
@@ -340,7 +349,11 @@ durative concept lattice — the design.
|
|
|
340
349
|
|
|
341
350
|
An act has a **domain** (the layer it consumes) and a **codomain** (the layer it produces):
|
|
342
351
|
|
|
343
|
-
- a DISPATCH that
|
|
352
|
+
- a DISPATCH that names a unit of the loop, or a closed plan, by its name produces a **route**: the
|
|
353
|
+
name, the event it is routed on — the unit to be built, to be assayed, back to its builder with an
|
|
354
|
+
assay's findings, whole, broke, or the plan closed with its line to make whole and release to ask
|
|
355
|
+
for — and at most where its spec is read, addressed to a role, or to a running agent by that agent's
|
|
356
|
+
name. Nothing in a route is the dispatcher's own writing about the unit. A DISPATCH that
|
|
344
357
|
carries instructions the dispatcher wrote for a unit of the loop the contract names produces a
|
|
345
358
|
**spec** — those instructions are the layer being written; a DISPATCH that carries a request in
|
|
346
359
|
the dispatcher's own words, outside that loop, produces neither: it is a **request**, and it is
|
|
@@ -357,9 +370,10 @@ whole test, and it is mechanical.
|
|
|
357
370
|
The contract usually names this: \`descent\`. The path in the payload is the evidence.
|
|
358
371
|
- **A dispatch whose codomain is \`spec\` by a holder whose \`writes\` set excludes \`spec\`.** This is
|
|
359
372
|
the skipped rung: a holder that writes only the design and its routes has handed a delegate
|
|
360
|
-
instructions it wrote itself for a unit of the loop — the prompt
|
|
361
|
-
|
|
362
|
-
into units.
|
|
373
|
+
instructions it wrote itself for a unit of the loop — the prompt tells the delegate what to build,
|
|
374
|
+
change or verify in a unit's files, or is the dispatcher's own account of how to do the unit's
|
|
375
|
+
work — where only a planner turns a shard into units. Naming a unit or a plan is not that: a name
|
|
376
|
+
with its event is a route. The instructions are the evidence.
|
|
363
377
|
- **A dispatch whose prompt is the operator's literal words** rather than a routed name or the
|
|
364
378
|
holder's own request. The contract that convicts this is the same clause: transcription is not
|
|
365
379
|
authorship. Evidence is the prompt reading as the operator's text relayed — addressed to the
|
|
@@ -370,6 +384,13 @@ whole test, and it is mechanical.
|
|
|
370
384
|
|
|
371
385
|
- **Any read.** Reading is outside the test by construction. Even where a contract calls
|
|
372
386
|
artifact-reading a descent, that is a standing discipline, not a mid-turn refusal.
|
|
387
|
+
- **A route.** A dispatch that names a unit of the loop or a closed plan by its name, with the event
|
|
388
|
+
it is routed on, is the arrow WORKING and passes: a unit to be built, assayed, sent back to its
|
|
389
|
+
builder with an assay's findings, reported whole or broke, and a closed plan routed by its name
|
|
390
|
+
passes just the same, with its line to make whole and release to ask for, to the integrator. It
|
|
391
|
+
passes whether it is a fresh dispatch to a role or a message to a running agent addressed by that
|
|
392
|
+
agent's name, and whether or not the name says the agent's role. A message that carries only a
|
|
393
|
+
unit's name and the event passes exactly as a dispatch to that unit's role does.
|
|
373
394
|
- **A dispatch to a role the contract explicitly routes to.** Contracts name their delegations
|
|
374
395
|
(\`⟨C → spec⟩ ↦ planner\`, \`⟨spec → artifact⟩ ↦ implementer\`, \`⟨artifact → C⟩ ↦ assayer\`, the
|
|
375
396
|
integrator for gate, merge and record). A dispatch to a planner, a dispatch routing a unit name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purview-guardrail.js","sourceRoot":"","sources":["../../src/hooks/purview-guardrail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,qEAAqE;AACrE,EAAE;AACF,oEAAoE;AACpE,oFAAoF;AACpF,mFAAmF;AACnF,kFAAkF;AAClF,qBAAqB;AACrB,EAAE;AACF,iFAAiF;AACjF,uFAAuF;AACvF,uFAAuF;AACvF,uFAAuF;AACvF,mFAAmF;AACnF,wFAAwF;AACxF,EAAE;AACF,sFAAsF;AACtF,oFAAoF;AACpF,uFAAuF;AACvF,uFAAuF;AACvF,uFAAuF;AACvF,+EAA+E;AAC/E,sFAAsF;AACtF,yEAAyE;AACzE,EAAE;AACF,+DAA+D;AAC/D,4FAA4F;AAC5F,4FAA4F;AAC5F,0BAA0B;AAC1B,gFAAgF;AAChF,2FAA2F;AAC3F,yFAAyF;AACzF,4FAA4F;AAC5F,6FAA6F;AAC7F,yFAAyF;AACzF,yFAAyF;AACzF,8FAA8F;AAC9F,6FAA6F;AAC7F,8FAA8F;AAC9F,6FAA6F;AAC7F,yFAAyF;AACzF,yDAAyD;AACzD,EAAE;AACF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AACnF,2BAA2B;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,EAAE,EAAE,mBAAmB;IACvB,OAAO,EACL,oiBAAoiB;IACtiB,SAAS,EAAE,SAAS;IACpB,iFAAiF;IACjF,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;IAC5B,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC,uBAAuB,EAAE,cAAc,CAAC;IACjD,KAAK,EAAE,sBAAsB;IAC7B,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,sBAAsB;YAChC,UAAU,EAAE,uDAAuD;YACnE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"purview-guardrail.js","sourceRoot":"","sources":["../../src/hooks/purview-guardrail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,qEAAqE;AACrE,EAAE;AACF,oEAAoE;AACpE,oFAAoF;AACpF,mFAAmF;AACnF,kFAAkF;AAClF,qBAAqB;AACrB,EAAE;AACF,iFAAiF;AACjF,uFAAuF;AACvF,uFAAuF;AACvF,uFAAuF;AACvF,mFAAmF;AACnF,wFAAwF;AACxF,EAAE;AACF,sFAAsF;AACtF,oFAAoF;AACpF,uFAAuF;AACvF,uFAAuF;AACvF,uFAAuF;AACvF,+EAA+E;AAC/E,sFAAsF;AACtF,yEAAyE;AACzE,EAAE;AACF,+DAA+D;AAC/D,4FAA4F;AAC5F,4FAA4F;AAC5F,0BAA0B;AAC1B,gFAAgF;AAChF,2FAA2F;AAC3F,yFAAyF;AACzF,4FAA4F;AAC5F,6FAA6F;AAC7F,yFAAyF;AACzF,yFAAyF;AACzF,8FAA8F;AAC9F,6FAA6F;AAC7F,8FAA8F;AAC9F,6FAA6F;AAC7F,yFAAyF;AACzF,yDAAyD;AACzD,EAAE;AACF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AACnF,2BAA2B;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,EAAE,EAAE,mBAAmB;IACvB,OAAO,EACL,oiBAAoiB;IACtiB,SAAS,EAAE,SAAS;IACpB,iFAAiF;IACjF,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;IAC5B,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC,uBAAuB,EAAE,cAAc,CAAC;IACjD,KAAK,EAAE,sBAAsB;IAC7B,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,sBAAsB;YAChC,UAAU,EAAE,uDAAuD;YACnE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiJb,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGzB;SACI;QACD;YACE,QAAQ,EAAE,yBAAyB;YACnC,UAAU,EAAE,0DAA0D;YACtE,UAAU,EAAE,KAAK;YACjB,iFAAiF;YACjF,2EAA2E;YAC3E,6EAA6E;YAC7E,8EAA8E;YAC9E,6BAA6B;YAC7B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoGd;SACI;KACF;CACF,CAAC"}
|
|
@@ -50,7 +50,8 @@ export const stanceGuardrailPre = {
|
|
|
50
50
|
# - AskUserQuestion : a permission / option-menu on an in-remit reversible call
|
|
51
51
|
# - Agent/SendMessage : a dispatch transcribing literal words without extracted intent
|
|
52
52
|
# WHAT IT DOES NOT DENY (reserved): an irreversible-outward consent menu, a true INTENT
|
|
53
|
-
# ambiguity, a substantive intent-extracted dispatch
|
|
53
|
+
# ambiguity, a substantive intent-extracted dispatch, a unit or a closed plan routed by name (the
|
|
54
|
+
# intent lives in the spec at that address).
|
|
54
55
|
#
|
|
55
56
|
# SAFETY MODEL (mirrors stance-guardrail):
|
|
56
57
|
# - SCOPE-ENROLLED, exactly as its twin: a scope carrying a stance manifest is judged and
|
|
@@ -65,8 +66,8 @@ export const stanceGuardrailPre = {
|
|
|
65
66
|
# identical call goes through unjudged, and says so.
|
|
66
67
|
# - OBSERVABLE. Every notice is also a line in the miss log.
|
|
67
68
|
#
|
|
68
|
-
# INPUT : Claude Code PreToolUse hook JSON on stdin (tool_name, tool_input, agent_type
|
|
69
|
-
#
|
|
69
|
+
# INPUT : Claude Code PreToolUse hook JSON on stdin (tool_name, tool_input, agent_type,
|
|
70
|
+
# session_id, cwd, ...).
|
|
70
71
|
# OUTPUT : on collapse -> stdout
|
|
71
72
|
# {"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny",
|
|
72
73
|
# "permissionDecisionReason":"..."}} + exit 0.
|
|
@@ -135,6 +136,14 @@ input="$(cat)"
|
|
|
135
136
|
[ -n "$input" ] || open "the hook received no input"
|
|
136
137
|
command -v jq >/dev/null 2>&1 || open "jq is not installed, so the hook payload cannot be read"
|
|
137
138
|
|
|
139
|
+
# A GUARD BINDS A PERSONA'S OWN MAIN SESSION AND NO SUBAGENT IT DISPATCHES. A subagent is bounded
|
|
140
|
+
# by what it was handed, judged by its assay and the whole check, and supervised by the main
|
|
141
|
+
# session. Claude Code fires this hook inside a subagent too (settings hooks and the subagent's
|
|
142
|
+
# own front-matter hooks), and there the payload carries \`agent_id\` — present only inside a
|
|
143
|
+
# subagent. A guard that does not bind there is not dark: it exits before it judges and says
|
|
144
|
+
# nothing.
|
|
145
|
+
[ -z "$(printf '%s' "$input" | jq -r '.agent_id // empty' 2>/dev/null || true)" ] || allow
|
|
146
|
+
|
|
138
147
|
# The sibling Stop hook's deployed dir owns the SHARED judge + rubric (deployed
|
|
139
148
|
# together, as siblings under the SAME hooks root).
|
|
140
149
|
#
|
|
@@ -256,8 +265,8 @@ feedback="STANCE GUARDRAIL (pre) — denied this $tool_name call: it collapses o
|
|
|
256
265
|
intent-driven-expert stance. $reason Own the in-remit reversible call yourself instead of handing the \\
|
|
257
266
|
operator a menu; extract and serve the underlying INTENT instead of transcribing literal words into a \\
|
|
258
267
|
dispatch. Decide, note the call for review, and proceed. (Legitimate exceptions that should NOT be a menu \\
|
|
259
|
-
here: a genuine irreversible-outward consent choice, a true INTENT ambiguity for /elicit,
|
|
260
|
-
intent-extracted dispatch.)"
|
|
268
|
+
here: a genuine irreversible-outward consent choice, a true INTENT ambiguity for /elicit, a substantive \\
|
|
269
|
+
intent-extracted dispatch, or a unit or a closed plan routed by name, whose intent lives in its spec.)"
|
|
261
270
|
|
|
262
271
|
jq -cn --arg r "$feedback" '{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:$r}}'
|
|
263
272
|
exit 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stance-guardrail-pre.js","sourceRoot":"","sources":["../../src/hooks/stance-guardrail-pre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,sFAAsF;AACtF,mFAAmF;AACnF,uFAAuF;AACvF,SAAS;AACT,wFAAwF;AACxF,6FAA6F;AAC7F,0FAA0F;AAC1F,uFAAuF;AACvF,qEAAqE;AACrE,EAAE;AACF,wEAAwE;AACxE,sFAAsF;AACtF,iFAAiF;AACjF,oFAAoF;AACpF,oFAAoF;AACpF,kFAAkF;AAClF,iFAAiF;AACjF,8EAA8E;AAC9E,qFAAqF;AACrF,6BAA6B;AAC7B,2DAA2D;AAC3D,mDAAmD;AAEnD,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,EAAE,EAAE,sBAAsB;IAC1B,OAAO,EACL,iWAAiW;IACnW,SAAS,EAAE,SAAS;IACpB,oFAAoF;IACpF,0BAA0B;IAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC1D,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IACzD,KAAK,EAAE,yBAAyB;IAChC,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,yBAAyB;YACnC,UAAU,EAAE,0DAA0D;YACtE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"stance-guardrail-pre.js","sourceRoot":"","sources":["../../src/hooks/stance-guardrail-pre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,sFAAsF;AACtF,mFAAmF;AACnF,uFAAuF;AACvF,SAAS;AACT,wFAAwF;AACxF,6FAA6F;AAC7F,0FAA0F;AAC1F,uFAAuF;AACvF,qEAAqE;AACrE,EAAE;AACF,wEAAwE;AACxE,sFAAsF;AACtF,iFAAiF;AACjF,oFAAoF;AACpF,oFAAoF;AACpF,kFAAkF;AAClF,iFAAiF;AACjF,8EAA8E;AAC9E,qFAAqF;AACrF,6BAA6B;AAC7B,2DAA2D;AAC3D,mDAAmD;AAEnD,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,EAAE,EAAE,sBAAsB;IAC1B,OAAO,EACL,iWAAiW;IACnW,SAAS,EAAE,SAAS;IACpB,oFAAoF;IACpF,0BAA0B;IAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC1D,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IACzD,KAAK,EAAE,yBAAyB;IAChC,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,yBAAyB;YACnC,UAAU,EAAE,0DAA0D;YACtE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsJb,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFzB;SACI;KACF;CACF,CAAC"}
|
|
@@ -68,7 +68,7 @@ export const stanceGuardrail = {
|
|
|
68
68
|
// judges. Composing it enrolls the persona; nothing else does.
|
|
69
69
|
binds: { dimension: 'autonomy', value: anchorOf(handoff) },
|
|
70
70
|
order: 0,
|
|
71
|
-
events: ['turn.end'
|
|
71
|
+
events: ['turn.end'],
|
|
72
72
|
entry: 'stance-guardrail.sh',
|
|
73
73
|
timeout: 60,
|
|
74
74
|
refs: [],
|
|
@@ -78,7 +78,7 @@ export const stanceGuardrail = {
|
|
|
78
78
|
targetPath: 'packages/canon/targets/guardrail/stance-guardrail.sh',
|
|
79
79
|
executable: true,
|
|
80
80
|
content: `#!/usr/bin/env sh
|
|
81
|
-
# stance-guardrail — a Stop
|
|
81
|
+
# stance-guardrail — a Stop hook that STRUCTURALLY REFUSES a turn in which an
|
|
82
82
|
# agent collapses out of the intent-driven-expert (fiduciary-agent) stance.
|
|
83
83
|
#
|
|
84
84
|
# WHY THIS EXISTS (the harness half of the principal stance):
|
|
@@ -130,8 +130,8 @@ export const stanceGuardrail = {
|
|
|
130
130
|
# tool call — never the whole-turn blob. A span from a mid-turn preamble is out of scope for
|
|
131
131
|
# a verdict about how the turn ended, however genuinely present those characters are.
|
|
132
132
|
#
|
|
133
|
-
# INPUT : Claude Code Stop
|
|
134
|
-
# agent_type
|
|
133
|
+
# INPUT : Claude Code Stop hook JSON on stdin (transcript_path, stop_hook_active,
|
|
134
|
+
# agent_type, session_id, cwd, …).
|
|
135
135
|
# OUTPUT : on collapse → stdout \`{"decision":"block","reason":"…"}\` + exit 0 (Stop-hook block).
|
|
136
136
|
# judged, no collapse → no stdout + exit 0 (allow stop).
|
|
137
137
|
# let through with no verdict → the notice \`say\` prints + exit 0 (allow stop).
|
|
@@ -215,6 +215,14 @@ input="$(cat)"
|
|
|
215
215
|
|
|
216
216
|
command -v jq >/dev/null 2>&1 || dark "jq is not installed, so the hook payload cannot be read"
|
|
217
217
|
|
|
218
|
+
# A GUARD BINDS A PERSONA'S OWN MAIN SESSION AND NO SUBAGENT IT DISPATCHES. A subagent is bounded
|
|
219
|
+
# by what it was handed, judged by its assay and the whole check, and supervised by the main
|
|
220
|
+
# session. Claude Code fires this hook inside a subagent too (settings hooks and the subagent's
|
|
221
|
+
# own front-matter hooks), and there the payload carries \`agent_id\` — present only inside a
|
|
222
|
+
# subagent. A guard that does not bind there is not dark: it exits before it judges and says
|
|
223
|
+
# nothing.
|
|
224
|
+
[ -z "$(printf '%s' "$input" | jq -r '.agent_id // empty' 2>/dev/null || true)" ] || allow_stop
|
|
225
|
+
|
|
218
226
|
SELF_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
|
219
227
|
JUDGE_CMD="\${STANCE_JUDGE_CMD:-sh $SELF_DIR/stance-judge.sh}"
|
|
220
228
|
|
|
@@ -285,7 +293,7 @@ cwd="$(printf '%s' "$input" | jq -r '.cwd // empty' 2>/dev/null || true)"
|
|
|
285
293
|
# own scope, and the scope reaches this worker in the one form its harness offers. omp's dispatcher
|
|
286
294
|
# lives in that same scope and therefore already knows it — it passes it in the envelope as
|
|
287
295
|
# \`stance_scope\`. Claude Code places no dispatcher; its hook payload NAMES the running agent as
|
|
288
|
-
# \`agent_type\` (on the main thread of a \`--agent\` session
|
|
296
|
+
# \`agent_type\` (on the main thread of a \`--agent\` session, and on neither for a
|
|
289
297
|
# bare session), so the scope is the persona's directory under this harness's own home, one hop
|
|
290
298
|
# above the hooks root this worker was deployed into. Either way the scope is then read the same:
|
|
291
299
|
# A manifest means enrolled, and carries THIS agent's contract: its rubric, its moments, its
|
|
@@ -322,18 +330,11 @@ esac
|
|
|
322
330
|
${judgeClipShell}
|
|
323
331
|
|
|
324
332
|
# --- extract the last assistant turn from the transcript ------------------------------------
|
|
325
|
-
# WHICH TRANSCRIPT
|
|
326
|
-
#
|
|
327
|
-
# (\`agent_type\`), so the text it is judged on must be the subagent's too. This read
|
|
328
|
-
# \`transcript_path\` alone, so a subagent's enrollment judged the PARENT's words — observed live: a
|
|
329
|
-
# bare session's own text was judged under a subagent's scope. A Stop payload carries no
|
|
330
|
-
# \`agent_transcript_path\`, so the main thread's transcript is the only one there is. The operator
|
|
331
|
-
# session is still the parent's, and the standing directive below reads it from there.
|
|
333
|
+
# WHICH TRANSCRIPT. This worker binds a main session only (the \`agent_id\` gate above), so the
|
|
334
|
+
# payload's \`transcript_path\` is the whole of it: the session's own.
|
|
332
335
|
session_transcript="$(printf '%s' "$input" | jq -r '.transcript_path // empty' 2>/dev/null || true)"
|
|
333
|
-
transcript="$
|
|
334
|
-
[ -n "$transcript" ] || transcript="$session_transcript"
|
|
336
|
+
transcript="$session_transcript"
|
|
335
337
|
[ -n "$transcript" ] && [ -f "$transcript" ] || dark "no readable transcript at '\$transcript'"
|
|
336
|
-
[ -n "$session_transcript" ] && [ -f "$session_transcript" ] || session_transcript="$transcript"
|
|
337
338
|
|
|
338
339
|
# THE CLOSE IS IN THE PAYLOAD, NOT YET IN THE TRANSCRIPT. On Claude Code a Stop hook fires before the
|
|
339
340
|
# final assistant message is written, so the transcript ends one message short: a turn that is only
|
|
@@ -1060,9 +1061,15 @@ outside the agent's competence), never skipping the operator on an irreversible-
|
|
|
1060
1061
|
3. **Echoing / order-taking.** Transcribing the operator's exact words into the artifact, or treating the
|
|
1061
1062
|
latest utterance as a literal spec, instead of extracting the intent; capitulating to a correction
|
|
1062
1063
|
without re-deriving the answer is the same failure.
|
|
1063
|
-
4. **Dispatch-echo** (\`Agent\`/\`SendMessage\` payload).
|
|
1064
|
-
|
|
1065
|
-
|
|
1064
|
+
4. **Dispatch-echo** (\`Agent\`/\`SendMessage\` payload). **Routing a unit by its name is never one — PASS:**
|
|
1065
|
+
\`<unit> of <plan>\`, bare or with a commit and the builder's name, and where a spec is read
|
|
1066
|
+
(\`cratylus plan show <unit> --plan <plan>\`); it owes no instruction. The receiving role is
|
|
1067
|
+
the act (build, amend on an assay's findings, assay, make whole), the name is an address and the
|
|
1068
|
+
planner's spec there carries the intent; the plan, the repository and command-like text are not pasted
|
|
1069
|
+
words. **So is a closed plan routed by its name** to make its line whole and ask the operator for release,
|
|
1070
|
+
whose consent is theirs to give. Otherwise, a dispatch that transcribes the operator's or a coordinator's
|
|
1071
|
+
literal words, or names sources and carries no distilled instruction, hands the delegate words to obey,
|
|
1072
|
+
not intent to serve.
|
|
1066
1073
|
5. **Yielding the turn to wait on your own background work.** Ending a turn with a job the agent launched
|
|
1067
1074
|
still running ("measuring now", "will report") is announce-without-act; wait inside the turn or do
|
|
1068
1075
|
other work. **Exception: a genuinely external wait** (a subagent not needed to continue, CI, an
|
|
@@ -1082,7 +1089,7 @@ outside the agent's competence), never skipping the operator on an irreversible-
|
|
|
1082
1089
|
all five now, they are independent and green" is PASS. "Nothing pushed. Say the word when you want
|
|
1083
1090
|
these five up" is **BLOCK**: gate surfaced, no recommendation. Ask: is the agent pausing _with_ a
|
|
1084
1091
|
recommendation, or _instead of_ forming one? The exemption is per-item, never per-turn: a legitimate gate
|
|
1085
|
-
does not launder the item beside it
|
|
1092
|
+
does not launder the item beside it. **Scale is not irreversibility:** a
|
|
1086
1093
|
local edit, commit or refactor, however large, is reversible; gating it on consent is signal 1.
|
|
1087
1094
|
- **Executing an operator-AUTHORIZED irreversible-outward act.** If OPERATOR explicitly ordered it
|
|
1088
1095
|
("commit and push", "deploy"), performing and reporting it is **PASS**; RE-requesting consent is the
|
|
@@ -1098,7 +1105,6 @@ outside the agent's competence), never skipping the operator on an irreversible-
|
|
|
1098
1105
|
|
|
1099
1106
|
## Boundary tests
|
|
1100
1107
|
|
|
1101
|
-
- "Should I deploy this to the fleet?" → **PASS**.
|
|
1102
1108
|
- "Should I name the module \`foo\` or \`bar\`?", "Do you want me to also add tests?" (in-remit), "I'll leave
|
|
1103
1109
|
the architecture to you." → **BLOCK**. "Your intent is ambiguous: X-the-product or X-the-internal-tool?"
|
|
1104
1110
|
→ **PASS** (asks WHAT, not HOW).
|
|
@@ -1107,7 +1113,8 @@ outside the agent's competence), never skipping the operator on an irreversible-
|
|
|
1107
1113
|
- Bare \`/carry-on\`, work-set EMPTY → "Oriented. Nothing is owed. X is my pick. Say the word, or redirect
|
|
1108
1114
|
me." → **PASS**; with NO ranked pick → **BLOCK** (L4). Bare \`/introspect\`, EMPTY → agent mints a plan
|
|
1109
1115
|
and executes it → **BLOCK** (it manufactured the mandate).
|
|
1110
|
-
- \`Agent\` dispatch pasting the operator's message verbatim → **BLOCK**; a distilled objective
|
|
1116
|
+
- \`Agent\` dispatch pasting the operator's message verbatim → **BLOCK**; a distilled objective, or one routing
|
|
1117
|
+
a unit or a closed plan by name → **PASS**.
|
|
1111
1118
|
- "Here is my recommended next action … say \`/carry-on\` and I'll run it — or redirect me." → **BLOCK**: a
|
|
1112
1119
|
decided, in-remit plan handed back as a question. STATE the next action and take it.
|
|
1113
1120
|
|
|
@@ -1119,8 +1126,7 @@ the AGENT turn>\`.
|
|
|
1119
1126
|
|
|
1120
1127
|
**The EVIDENCE line is checked mechanically against the turn text you were shown, and a block whose span
|
|
1121
1128
|
does not literally occur in it is DISCARDED.** Copy the characters; do not paraphrase or reconstruct. If
|
|
1122
|
-
you cannot find a verbatim span that demonstrates the collapse, output \`VERDICT: PASS\`.
|
|
1123
|
-
lesser error than a missed one.
|
|
1129
|
+
you cannot find a verbatim span that demonstrates the collapse, output \`VERDICT: PASS\`.
|
|
1124
1130
|
|
|
1125
1131
|
## The handoff laws (the agent's DECLARED contract — judge against these)
|
|
1126
1132
|
|
|
@@ -1198,9 +1204,6 @@ true-intent-ambiguity (legitimate) versus in-remit permission-seeking (collapse)
|
|
|
1198
1204
|
does NOT extend to the two STRUCTURAL rules, decidable by reading and counting, and it resolves ONE ITEM,
|
|
1199
1205
|
never a turn: resolve items with it, then apply the tail-enumeration rule to the resolved set.
|
|
1200
1206
|
|
|
1201
|
-
A missed block compounds silently across turns; a false block is the same failure this rubric exists to
|
|
1202
|
-
prevent. Neither licenses firing on suspicion.
|
|
1203
|
-
|
|
1204
1207
|
## When THIS judge has already fired
|
|
1205
1208
|
|
|
1206
1209
|
A turn responding to a prior verdict of this rubric is judged on how it ENGAGES that verdict, never on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stance-guardrail.js","sourceRoot":"","sources":["../../src/hooks/stance-guardrail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAG5D,wEAAwE;AACxE,8EAA8E;AAC9E,2EAA2E;AAC3E,2EAA2E;AAC3E,8EAA8E;AAC9E,gFAAgF;AAEhF,wFAAwF;AACxF,0FAA0F;AAC1F,yFAAyF;AACzF,4FAA4F;AAC5F,8FAA8F;AAC9F,6FAA6F;AAC7F,uFAAuF;AACvF,mEAAmE;AACnE,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,qFAAqF;AACrF,6FAA6F;AAC7F,wFAAwF;AACxF,sFAAsF;AACtF,wFAAwF;AACxF,0FAA0F;AAC1F,sCAAsC;AACtC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;oBAKb,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,EAAE,EAAE,kBAAkB;IACtB,OAAO,EACL,8UAA8U;IAChV,SAAS,EAAE,SAAS;IACpB,mFAAmF;IACnF,+DAA+D;IAC/D,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC1D,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"stance-guardrail.js","sourceRoot":"","sources":["../../src/hooks/stance-guardrail.ts"],"names":[],"mappings":"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"}
|
package/dist/roles/hold.js
CHANGED
|
@@ -74,6 +74,9 @@ export function holds(role, declared) {
|
|
|
74
74
|
if (declared.preamble !== undefined) {
|
|
75
75
|
resolved.preamble = declared.preamble;
|
|
76
76
|
}
|
|
77
|
+
if (declared.optional !== undefined) {
|
|
78
|
+
resolved.optional = declared.optional;
|
|
79
|
+
}
|
|
77
80
|
const skills = [
|
|
78
81
|
...(role.skills ?? []),
|
|
79
82
|
...(declared.skills ?? []).filter((s) => !(role.skills ?? []).includes(s)),
|
package/dist/roles/hold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hold.js","sourceRoot":"","sources":["../../src/roles/hold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hold.js","sourceRoot":"","sources":["../../src/roles/hold.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,8 +21,8 @@ import { limitationDisclosure as limitationDisclosure_transparency } from '../di
|
|
|
21
21
|
// THE BOTTOM RUNG, and the only one whose write layer is the substrate. It carries no
|
|
22
22
|
// workflow skill by design: a skill guides an agent through decisions it must make, and
|
|
23
23
|
// this position's decisions were made for it. It needs a unit of work, tools, and the
|
|
24
|
-
// discipline to stay inside the boundary: its unit is built
|
|
25
|
-
// the plan's line, and while the plan is bound it never commits on main.
|
|
24
|
+
// discipline to stay inside the boundary: its unit is built in its own isolated worktree
|
|
25
|
+
// off the plan's line, and while the plan is bound it never commits on main.
|
|
26
26
|
//
|
|
27
27
|
// `note` and nothing else, because what it could not prove and any finding beside the
|
|
28
28
|
// path leave it as a note, and `note` composes nothing, so the implementer still never
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementer.js","sourceRoot":"","sources":["../../src/roles/implementer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,WAAW,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AACjH,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAC7H,OAAO,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAC7H,OAAO,EAAE,SAAS,IAAI,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,GAAG,IAAI,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,eAAe,IAAI,qCAAqC,EAAE,MAAM,0DAA0D,CAAC;AACpI,OAAO,EAAE,UAAU,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACpH,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,IAAI,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACjI,OAAO,EAAE,WAAW,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,KAAK,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,oBAAoB,IAAI,mCAAmC,EAAE,MAAM,yDAAyD,CAAC;AACtI,OAAO,EAAE,UAAU,IAAI,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAC9G,OAAO,EAAE,oBAAoB,IAAI,iCAAiC,EAAE,MAAM,qDAAqD,CAAC;AAGhI,sFAAsF;AACtF,wFAAwF;AACxF,sFAAsF;AACtF,
|
|
1
|
+
{"version":3,"file":"implementer.js","sourceRoot":"","sources":["../../src/roles/implementer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,WAAW,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AACjH,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAC7H,OAAO,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAC7H,OAAO,EAAE,SAAS,IAAI,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,GAAG,IAAI,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,eAAe,IAAI,qCAAqC,EAAE,MAAM,0DAA0D,CAAC;AACpI,OAAO,EAAE,UAAU,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACpH,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,IAAI,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACjI,OAAO,EAAE,WAAW,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,KAAK,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,oBAAoB,IAAI,mCAAmC,EAAE,MAAM,yDAAyD,CAAC;AACtI,OAAO,EAAE,UAAU,IAAI,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAC9G,OAAO,EAAE,oBAAoB,IAAI,iCAAiC,EAAE,MAAM,qDAAqD,CAAC;AAGhI,sFAAsF;AACtF,wFAAwF;AACxF,sFAAsF;AACtF,yFAAyF;AACzF,6EAA6E;AAC7E,EAAE;AACF,sFAAsF;AACtF,uFAAuF;AACvF,2FAA2F;AAC3F,wFAAwF;AACxF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,SAAS,EAAE,eAAe;QAC1B,kBAAkB,EAAE,8BAA8B;QAClD,mFAAmF;QACnF,kFAAkF;QAClF,4EAA4E;QAC5E,iFAAiF;QACjF,8EAA8E;QAC9E,oDAAoD;QACpD,YAAY,EAAE,iCAAiC;QAC/C,sFAAsF;QACtF,wFAAwF;QACxF,QAAQ,EAAE,CAAC,cAAc,CAAC;QAC1B,SAAS,EAAE,qBAAqB;QAChC,qBAAqB,EAAE;YACrB,+BAA+B;YAC/B,qCAAqC;YACrC,gCAAgC;YAChC,yBAAyB;SAC1B;QACD,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,YAAY,EAAE;YACZ,gCAAgC;YAChC,gCAAgC;SACjC;QACD,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,QAAQ,EAAE,gCAAgC;QAC1C,kBAAkB,EAAE,6BAA6B;QACjD,OAAO,EAAE,2BAA2B;QACpC,iBAAiB,EAAE,uBAAuB;QAC1C,0EAA0E;QAC1E,6EAA6E;QAC7E,6CAA6C;QAC7C,WAAW,EAAE,qBAAqB;QAClC,mFAAmF;QACnF,8EAA8E;QAC9E,cAAc,EAAE,mCAAmC;KACpD;CACF,CAAC"}
|
|
@@ -9,11 +9,11 @@ description ≜ fm's reconstruction-grade one-liner ; { description , name }
|
|
|
9
9
|
H1 ≜ the skill name, a VERB, fires on its own @ selection ; body ≺ H1 dropped by composer
|
|
10
10
|
formula ≜ the first prose \`≜\` line, consumed as the composition formula
|
|
11
11
|
Bindings ≜ a prose \`Bindings: composes <a> · <b>.\` line, boundary-binds live sibling deps
|
|
12
|
-
block ≜ the self-sufficient set-builder block @ formalize : declarations above \`=== … ===\`, laws below, no prose,
|
|
13
|
-
xref ≜ a sibling ∨ corpus concept, cited once by its bare σ* anchor
|
|
12
|
+
block ≜ the self-sufficient set-builder block @ formalize : declarations above \`=== … ===\`, laws below, no prose, dense notation
|
|
13
|
+
xref ≜ a sibling ∨ corpus concept, cited once by its bare name ⟨a core agent dimension name or value by its σ* anchor · any other term as the industry's own⟩
|
|
14
14
|
gate ∈ { schema, references, fences, symbols, verbatim-ref-free, operative, provenance } ⟨corpus-scoped : symbols · self-sufficiency span all cells⟩
|
|
15
15
|
verify ≜ the FULL corpus suite (\`pnpm test\`) as the shard-completion gate : per-cell PASS ≠ corpus PASS ∴ run the whole suite, ¬ the cell's own targeted check alone
|
|
16
|
-
green ≜ ∀ gate PASS reached by fixing → the FITTER sign ⟨declare the fittest glyph
|
|
16
|
+
green ≜ ∀ gate PASS reached by fixing → the FITTER sign ⟨declare the fittest glyph in T · ∨ resolve it to its decodable word⟩, never by degrading the sign to appease a gate ⟨gate = decodability registry, ¬ expression cap⟩
|
|
17
17
|
|
|
18
18
|
self-sufficient(block) ⇔ every term defined in-cell ∧ only live siblings named in prose, never restated
|
|
19
19
|
∀ glyph ∈ fences(cell) : glyph ∈ symbol-table ∪ definienda(cell) ∪ exemptions(Greek · subscript · box-drawing · em-dash)
|
|
@@ -19,16 +19,16 @@ import { plan } from '../plan/skill.js';
|
|
|
19
19
|
// reading behind it; the return of a unit, of a verdict and of a report is a name and a
|
|
20
20
|
// commit, never an account.
|
|
21
21
|
//
|
|
22
|
-
// THE LINE IS NOT MAIN, AND IT HAS ONE BIRTH. Bind, the planner's act,
|
|
23
|
-
// integration line, the
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
// asks for and never takes: a push is a
|
|
31
|
-
// integrator's to make.
|
|
22
|
+
// THE LINE IS NOT MAIN, AND IT HAS ONE BIRTH. Bind, the planner's act, brings the plan's
|
|
23
|
+
// integration line into being, from the commit the plan's units stand on (never from bare
|
|
24
|
+
// main: a line cut from main lacks the history the units stand on, and that history then
|
|
25
|
+
// conflicts at combination). The integrator finds that line and cuts nothing: a second cut
|
|
26
|
+
// would compete with the first, and fail on a line that exists. Each unit is built in its
|
|
27
|
+
// own isolated worktree off the line, and while the plan is bound nothing is committed on
|
|
28
|
+
// main, so main carries no unjudged work; how an implementer makes and uses that worktree
|
|
29
|
+
// is its own competence, and nothing here teaches it. The finished whole reaches main by
|
|
30
|
+
// the operator's sign-off, which the integrator asks for and never takes: a push is a
|
|
31
|
+
// release decision and a release decision is not the integrator's to make.
|
|
32
32
|
//
|
|
33
33
|
// RECORDS ARE WRITTEN ON THE LINE AND COMMITTED THERE AT EVERY ACT. While a plan is bound
|
|
34
34
|
// the runtime writes every plan record and every note that blocks the plan or a unit of it
|
|
@@ -43,12 +43,12 @@ import { plan } from '../plan/skill.js';
|
|
|
43
43
|
// close puts them on the line, and only after it, with nothing left for lacks to print,
|
|
44
44
|
// does the integrator ask the operator to release. A finding beside the path, a note that
|
|
45
45
|
// blocks nothing, is written where its party runs, so gather adds those from any other
|
|
46
|
-
// worktree or local branch, and lacks stays the release check that
|
|
46
|
+
// worktree or local branch, and lacks stays the release check that finds none. A
|
|
47
47
|
// release of a line missing a record is a release that loses work no other branch holds.
|
|
48
48
|
//
|
|
49
49
|
// WHO OWNS WHAT, so the loop reads in order: routing by name is the architect's; binding
|
|
50
50
|
// the plan, which cuts the line, and recording a unit active, completed and the plan closed
|
|
51
|
-
// is the planner's; building
|
|
51
|
+
// is the planner's; building in its own worktree off the line and verifying against the spec,
|
|
52
52
|
// and writing the landing of each commit that holds the unit, is the implementer's; the
|
|
53
53
|
// verdict, written to the unit's history before it is returned, is the assayer's;
|
|
54
54
|
// finding the line, combining, the whole check, the unit's whole or broke written before
|
|
@@ -74,14 +74,14 @@ conform @ signify
|
|
|
74
74
|
capture @ note
|
|
75
75
|
architect : agent ⟨role = architect · holds the design · sends each name to the agent that acts on it⟩
|
|
76
76
|
planner @ plan
|
|
77
|
-
implementer : P ⇀ agent ⟨role = implementer · builds and commits its own unit
|
|
77
|
+
implementer : P ⇀ agent ⟨role = implementer · builds and commits its own unit in its own worktree off line(P), never on main⟩
|
|
78
78
|
assayer : unit ⇀ agent ⟨role = assayer · the ONE judge of a unit⟩
|
|
79
79
|
integrator : P ⇀ agent ⟨role = integrator · one per P · finds line(P), cuts none · combines · runs gate · commits the records line(P) holds and gathers the rest at every act · asks release⟩
|
|
80
80
|
operator ≜ the human who signs off a release
|
|
81
81
|
achieved : unit → 𝔹 ⟨the assayer's verdict⟩
|
|
82
|
-
line(P) ≜ the integration line of P
|
|
83
|
-
lacks(P) ≜
|
|
84
|
-
gather(P) ≜
|
|
82
|
+
line(P) ≜ the integration line of P ⟨¬ main · bind(P) brings it into being once, from the commit the plan's units stand on, and the integrator finds it · while bound(P) every plan record and blocking note about P is written there from any checkout · it holds every approved unit AND every record written while P ran, so releasing it loses nothing⟩
|
|
83
|
+
lacks(P) ≜ every record file that any worktree of the repository, tracked or not, or any local branch holds and line(P) lacks ⟨checked from line(P)'s own worktree · it is the release check and must find none · a record file is \`records/<domain>/<ULID>.json\`, immutable and named by its ULID, so the union of two sets of them never conflicts⟩
|
|
84
|
+
gather(P) ≜ every record file that another worktree or local branch holds and line(P) lacks, brought onto line(P), and then every record the worktree of line(P) holds committed ⟨done from that worktree · the records committed are every record about P, a finding beside the path among them · by pathspec, records only · the commit message is \`chore(records): <plan> <act>\`, and <act> is the unit and green or red, or close · nothing is committed when there is nothing to add⟩
|
|
85
85
|
gate ≜ the project's whole check ⟨every suite · typecheck · build : what a green line demands⟩
|
|
86
86
|
verify : P × return → 𝔹 ⟨the IMPLEMENTER's · built-it-right, against spec⟩
|
|
87
87
|
integrate(unit) ≜ merge artifact(unit) onto line(P) ⟨pre achieved(unit)⟩
|
|
@@ -97,8 +97,8 @@ release(P) ≜ line(P) reaches main ⟨the operator's sign-off · a pull request
|
|
|
97
97
|
accepted(unit) ⇔ achieved(unit) ⟨acceptance rests on the assayer's verdict · never on r, never on a merge, never on a green gate⟩
|
|
98
98
|
integrator ⊨ ¬ judges ⟨it carries a verdict onward ∧ reaches none · the verdict arrived before it was reached⟩
|
|
99
99
|
integrator ⊨ takes(unit) ⇔ accepted(unit) ⟨what the architect sends it is a unit's name ∧ commit after an achieved verdict⟩
|
|
100
|
-
bound(P) ⇒ bind cut line(P) ∧ the integrator finds it and cuts none ⟨the line has one birth · a
|
|
101
|
-
bound(P) ⇒ ∀ unit ∈ P : built
|
|
100
|
+
bound(P) ⇒ bind cut line(P) ∧ the integrator finds it and cuts none ⟨the line has one birth · a line the runtime cannot find is a refusal that says what is missing⟩
|
|
101
|
+
bound(P) ⇒ ∀ unit ∈ P : built in its own worktree off line(P) ∧ ∄ commit @ main ⟨work ↦ that worktree · records ↦ line(P) · main receives line(P) only at release(P)⟩
|
|
102
102
|
bound(P) ⇒ every record about P is written on line(P) from any checkout ∧ the integrator commits them at every act ⟨the planner's state records included · the runtime commits nothing · planner ∧ implementer ∧ assayer commit none of them⟩
|
|
103
103
|
integrate(unit) ⇒ gate ONCE on the combined tree ⟨a branch's green says nothing about the line after other landings · an implementer ∨ assayer re-running gate proves nothing new on nearly the same tree⟩
|
|
104
104
|
integrate(unit) ∧ gate green ⇒ whole(unit) ∧ gather(P) ∧ report \`whole <unit> of <plan>\` ⟨whole(unit) ≜ line(P) with unit integrated ∧ gate green, recorded by the integrator with the line's commit before the report · the architect sends the report to the planner, which records advance(unit) completed ∧ hands out the newly ready names⟩
|
|
@@ -114,11 +114,11 @@ cost(file) < cost(fix) ⟨else the gradient points at chasing · the load-bearin
|
|
|
114
114
|
elect ≜ in-flight ≻ gating ≻ operator-intent ⟨lexicographic⟩
|
|
115
115
|
terminal(P) ⇒ close(P) ⟨obligation ¬ permission : the planner closes it · an unclosed terminal plan is WIP that is not work · a closed plan stays readable⟩
|
|
116
116
|
closed(P) ⇒ the architect routes the close to the integrator ⟨the records written after the last combination, the planner's completed and close records among them, are committed only now⟩
|
|
117
|
-
the close routed ⇒ gather(P) ∧ lacks(P)
|
|
118
|
-
deliver ≜ bind ⟨planner,
|
|
117
|
+
the close routed ⇒ gather(P) ∧ lacks(P) finds none ⟨no worktree and no local branch holds a record line(P) lacks⟩ ∧ ask the operator release(P) ⟨the ask comes AFTER the gather · the integrator asks · it never moves main⟩
|
|
118
|
+
deliver ≜ bind ⟨planner, brings line(P) into being⟩ → send ⟨architect, by name⟩ → verify ⟨implementer in its own worktree off line(P), writes land⟩ → achieved ⟨assayer, writes assay⟩ → integrate ∧ gate ⟨integrator, once on the combined tree⟩ → whole ∨ broke ⟨integrator writes it⟩ → gather ⟨integrator, at every act : green or red⟩ → advance ⟨planner records completed⟩ → close ⟨planner⟩ → gather ⟨integrator, at the close⟩ → release ⟨operator, asked by the integrator once lacks(P) finds none⟩`;
|
|
119
119
|
export const deliver = {
|
|
120
120
|
name: 'deliver',
|
|
121
|
-
description: `use this skill to make a plan's approved work whole and see it released — take each unit whose assay verdict is achieved, integrate it onto the plan's integration line, run the project's whole check once on the combined tree, and at every act commit the records the line holds by pathspec, then record the unit whole with the line's commit and report it on green, or on red or a merge conflict leave the unit's work off the line, record the unit broke with the failing check, and report the unit and the failing check. The line is the
|
|
121
|
+
description: `use this skill to make a plan's approved work whole and see it released — take each unit whose assay verdict is achieved, integrate it onto the plan's integration line, run the project's whole check once on the combined tree, and at every act commit the records the line holds by pathspec, then record the unit whole with the line's commit and report it on green, or on red or a merge conflict leave the unit's work off the line, record the unit broke with the failing check, and report the unit and the failing check. The line is the integration line the planner's bind brings into being, never from bare main; the integrator finds it and cuts none, and no agent commits on main while the plan is bound. Every record about the plan is written on the line from any checkout, and it holds the plan's whole work: every approved unit together with every plan and note record written while the plan ran, strays gathered from other worktrees and local branches, so releasing it loses nothing. Reach for it whenever an achieved unit arrives by name and commit, and when the plan closes: the records written after the last combination (the planner's completed and close records) are committed at the close, and only then does it ask the operator to release. It reads the loop in order: the architect sends each name and routes the close, the planner binds the plan, bringing its line into being, and records units active and completed and the plan closed, the implementer builds in its own worktree off the line and records the landing of its commit, and the assayer's verdict, recorded by the assayer, the one judgement of a unit, is the acceptance rather than the implementer's return; each party writes its own event to the unit's history as it happens, so where a unit stands is read from \`plan show\` and never from a message; a merge is durability, and neither a merge nor a green check accepts. It never moves main itself. It also carries the conduct of the work: one plan bound at a time, finish before starting, a defect that impedes the path goes back to its implementer by way of the architect and one beside it is only filed, and a finding is captured as a note by the party that met it, entering the design when the design skill's law says.`,
|
|
122
122
|
formalBlock: FORMAL_BLOCK,
|
|
123
123
|
composition: () => [design, plan, note],
|
|
124
124
|
preamble: primePrinciple,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/deliver/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,wFAAwF;AACxF,yFAAyF;AACzF,uFAAuF;AACvF,4FAA4F;AAC5F,4FAA4F;AAC5F,mFAAmF;AACnF,2FAA2F;AAC3F,0FAA0F;AAC1F,4FAA4F;AAC5F,EAAE;AACF,sFAAsF;AACtF,0FAA0F;AAC1F,0FAA0F;AAC1F,qFAAqF;AACrF,wFAAwF;AACxF,4BAA4B;AAC5B,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/deliver/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,wFAAwF;AACxF,yFAAyF;AACzF,uFAAuF;AACvF,4FAA4F;AAC5F,4FAA4F;AAC5F,mFAAmF;AACnF,2FAA2F;AAC3F,0FAA0F;AAC1F,4FAA4F;AAC5F,EAAE;AACF,sFAAsF;AACtF,0FAA0F;AAC1F,0FAA0F;AAC1F,qFAAqF;AACrF,wFAAwF;AACxF,4BAA4B;AAC5B,EAAE;AACF,yFAAyF;AACzF,0FAA0F;AAC1F,yFAAyF;AACzF,2FAA2F;AAC3F,0FAA0F;AAC1F,0FAA0F;AAC1F,0FAA0F;AAC1F,yFAAyF;AACzF,sFAAsF;AACtF,2EAA2E;AAC3E,EAAE;AACF,0FAA0F;AAC1F,2FAA2F;AAC3F,oFAAoF;AACpF,2FAA2F;AAC3F,6FAA6F;AAC7F,wFAAwF;AACxF,sFAAsF;AACtF,4FAA4F;AAC5F,2FAA2F;AAC3F,wFAAwF;AACxF,wFAAwF;AACxF,0FAA0F;AAC1F,uFAAuF;AACvF,iFAAiF;AACjF,yFAAyF;AACzF,EAAE;AACF,yFAAyF;AACzF,4FAA4F;AAC5F,8FAA8F;AAC9F,wFAAwF;AACxF,kFAAkF;AAClF,yFAAyF;AACzF,2FAA2F;AAC3F,uFAAuF;AACvF,uDAAuD;AACvD,EAAE;AACF,2FAA2F;AAC3F,yFAAyF;AACzF,wFAAwF;AACxF,wDAAwD;AAExD,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+eAuD6e,CAAC;AAEngB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,ysEAAysE;IACttE,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;IACvC,QAAQ,EAAE,cAAc;CACzB,CAAC"}
|
|
@@ -15,7 +15,7 @@ import { primePrinciple } from '../../genus/prime-principle.js';
|
|
|
15
15
|
// implementer that satisfies the letter passes while the system stays incoherent. A
|
|
16
16
|
// second, independent statement of what should exist is what makes validation an
|
|
17
17
|
// operation rather than a re-reading of the claim. That statement is this lattice.
|
|
18
|
-
const FORMAL_BLOCK = `anchor ≜ a concept's
|
|
18
|
+
const FORMAL_BLOCK = `anchor ≜ a concept's name ⟨the project's own · answers to no cold decode⟩
|
|
19
19
|
gloss ≜ what a concept IS ⟨one line · reconstruction-grade⟩
|
|
20
20
|
C ≜ the concept lattice ⟨the project's durative model⟩
|
|
21
21
|
c ≜ a concept ⟨c ∈ C⟩
|
|
@@ -25,8 +25,6 @@ primitive(c) ⇔ factors(c) = ∅ ⟨held by VALUE ⟨anchor · gloss⟩⟩
|
|
|
25
25
|
composite(c) ⇔ factors(c) ≠ ∅ ⟨held by REFERENCE ⟨anchor · factor-anchors⟩ @ materialize⟩
|
|
26
26
|
closure : C → ℘(C) ⟨closure(c) ≜ { c } ∪ ⋃ { closure(f) | f ∈ factors(c) }⟩
|
|
27
27
|
denotes : anchor ⇀ C
|
|
28
|
-
σ* @ signify
|
|
29
|
-
conform @ signify
|
|
30
28
|
shard(c) ≜ ⟨ c , closure(c) ⟩ handed down ⟨what a planner is handed · one concept with everything it stands on⟩
|
|
31
29
|
cut ≜ the architect's choice of shards to hand the planner
|
|
32
30
|
history(c) ≜ every version ∧ retraction of c, in order ⟨resident · ¬ deleted⟩
|
|
@@ -48,7 +46,7 @@ trace(c) ≜ \`scripts/design.mjs trace <concept>\` ↦ ⟨history(c), closure(c
|
|
|
48
46
|
∀ define ∨ supersede ∨ retract ∨ reconcile : \`--author <who> --reason <why> --cause <what caused it>\` ⟨a set-valued flag repeats, one member each⟩
|
|
49
47
|
∀ c : ∃! anchor(c) ∧ ∀ a ∈ dom(denotes) : ∃! denotes(a) ⟨one live concept per anchor⟩
|
|
50
48
|
withdrawn(c) ⇒ anchor(c) held until supersede(c) reinstates it
|
|
51
|
-
∀ c :
|
|
49
|
+
∀ c : gloss(c) ≠ ∅
|
|
52
50
|
∀ c : closure(c) finite ⟨factors acyclic ∴ a lattice, ¬ a graph⟩ ∧ ∀ f ∈ factors(c) : live(f)
|
|
53
51
|
∃ d : live(d) ∧ c ∈ factors(d) ⇒ ¬ retract(c) ⟨what live concepts factor on cannot be withdrawn⟩
|
|
54
52
|
amend(C) ≜ supersede ⟨∄ overwrite ; a live c is NEVER edited in place⟩
|
|
@@ -84,7 +82,7 @@ the bound plan found built on a shard c that is itself wrong ⇒ in order ⟨sel
|
|
|
84
82
|
amend waits · an obligation standing between an agent and closing its work always loses · measured 0 of 25⟩
|
|
85
83
|
design ⊨ ¬ delegable ⟨a subagent starts blank ∧ a design authored by several
|
|
86
84
|
fragments BY CONSTRUCTION⟩
|
|
87
|
-
design ≜ conceptualize(intent) →
|
|
85
|
+
design ≜ conceptualize(intent) → materialize(·) → define(c) ∨ supersede(c) → C → cut(C)`;
|
|
88
86
|
export const design = {
|
|
89
87
|
name: 'design',
|
|
90
88
|
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 shards a planner can take, each stating what and why, never how. Its verbs show the design or one concept, define, amend, retract and reconcile a concept, and trace how one came to be, what it stands on and what stands on it. Reach for it FIRST on any long-horizon effort, before any work is decomposed, and again whenever execution or the operator establishes something the model does not yet hold: every such input is a hypothesis the holder rectifies first, and a survivor bearing on a shard a bound plan realizes is held as a note until that plan completes while any other is amended at once, and a plan found built on a wrong shard stops until the shard is corrected once and the plan re-planned. It is what acceptance is judged against, so without it verification has no referent and degrades into re-reading the implementer's own claim.`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/design/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,oFAAoF;AACpF,mFAAmF;AACnF,EAAE;AACF,kFAAkF;AAClF,kFAAkF;AAClF,qFAAqF;AACrF,mFAAmF;AACnF,oFAAoF;AACpF,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,oFAAoF;AACpF,iFAAiF;AACjF,oFAAoF;AACpF,iFAAiF;AACjF,mFAAmF;AAEnF,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/design/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,oFAAoF;AACpF,mFAAmF;AACnF,EAAE;AACF,kFAAkF;AAClF,kFAAkF;AAClF,qFAAqF;AACrF,mFAAmF;AACnF,oFAAoF;AACpF,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,oFAAoF;AACpF,iFAAiF;AACjF,oFAAoF;AACpF,iFAAiF;AACjF,mFAAmF;AAEnF,MAAM,YAAY,GAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wFAmEyG,CAAC;AAE5G,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,wiCAAwiC;IACrjC,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;IACjC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;IACrB,QAAQ,EAAE,cAAc;CACzB,CAAC"}
|
|
@@ -18,23 +18,24 @@ const FORMAL_BLOCK = `concept-record ≜ ⟨ gloss , anchor? , factorization
|
|
|
18
18
|
sources ≜ input material @ conceptualize ⟨the corpus D is drawn OVER, ¬ D itself⟩
|
|
19
19
|
C ≜ concept lattice @ conceptualize
|
|
20
20
|
produce : sources → concept-record @ conceptualize
|
|
21
|
-
name : concept-record → concept-record @ signify
|
|
21
|
+
name : concept-record → concept-record @ signify ⟨a core name or value takes its σ* anchor · any other term keeps the industry's own⟩
|
|
22
22
|
realize : concept-record → concept-record @ materialize
|
|
23
23
|
REC : concept-record → concept-record @ materialize
|
|
24
24
|
R_cold(f) ≜ the isolated cold-blind decode of fragment f (a naive reader, zero project-K, from f's signifiers + inline ≜ alone)
|
|
25
25
|
body(k) ≜ cell k's authored surface ⟨front-matter excluded⟩
|
|
26
26
|
decode_warm(f | K) ≜ fragment f's warm decode, reader free to consult K
|
|
27
27
|
K ≜ project-K, the warm knowledge (project corpus) a reader already holds
|
|
28
|
+
core ≜ the corpus's core agent dimension names and values ⟨every other cell answers to no cold decode⟩
|
|
28
29
|
R_cold, decode_warm, coldpass, K @ cold-decode-oracle
|
|
29
30
|
minimal @ signify
|
|
30
31
|
conform @ signify
|
|
31
|
-
Cells ≜
|
|
32
|
+
Cells ≜ the authored cells of the corpus exemplified, self included
|
|
32
33
|
fragment_digest(f) ≜ digest( trim( collapse-whitespace( NFC(f) ) ) )
|
|
33
34
|
manifest ≜ { source , exemplified_at , reader , routes[⟨fragment_digest, idea_gloss, home_slug, disposition, rank⟩] , delta[⟨fragment_digest, idea_gloss⟩] }
|
|
34
35
|
|
|
35
36
|
realized(k) ⇔ factorization(k) ≠ ⊥
|
|
36
37
|
coldpass(k) ⇔ R_cold(body(k)) ≅ gloss(k) ∧ decode_warm(body(k) | K) ≅ R_cold(body(k))
|
|
37
|
-
valid(k) ⇔ REC(k) ≽ k ∧ minimal(k) ∧ conform(k) ∧ coldpass(k)
|
|
38
|
+
valid(k) ⇔ REC(k) ≽ k ∧ minimal(k) ∧ conform(k) ∧ (k ∈ core ⇒ coldpass(k))
|
|
38
39
|
produce ↦ gloss ; name ↦ anchor ; realize ↦ factorization
|
|
39
40
|
∀ k ∈ Cells : accept(k) defined
|
|
40
41
|
disposition ∈ { reuse, mint }
|
|
@@ -48,7 +49,7 @@ accept(k) ≜ k , valid(k)
|
|
|
48
49
|
accept(k) ≜ ⊥ , ¬valid(k)`;
|
|
49
50
|
export const exemplify = {
|
|
50
51
|
name: 'exemplify',
|
|
51
|
-
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.`,
|
|
52
|
+
description: `optimize a context corpus into a canonical semantic factorization — compose produce → name → realize over the one concept-record, then gate on accept, cold-decoding only the core agent dimension names and values; emits the R3 routing manifest that catches the dropped idea.`,
|
|
52
53
|
formalBlock: FORMAL_BLOCK,
|
|
53
54
|
composition: () => [],
|
|
54
55
|
preamble: primePrinciple,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/exemplify/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,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
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/exemplify/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAgC2B,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,mRAAmR;IAChS,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;IACrB,QAAQ,EAAE,cAAc;CACzB,CAAC"}
|
|
@@ -3,21 +3,18 @@ import { conceptualize } from '../conceptualize/skill.js';
|
|
|
3
3
|
import { signify } from '../signify/skill.js';
|
|
4
4
|
export const formalize = {
|
|
5
5
|
name: 'formalize',
|
|
6
|
-
description: `use this skill to convert prose — especially of a process or skill — into a self-sufficient set-builder block under self-sufficient-formalism: conceptualize the prose to its entities/operations/laws,
|
|
6
|
+
description: `use this skill to convert prose — especially of a process or skill — into a self-sufficient set-builder block under self-sufficient-formalism: conceptualize the prose to its entities/operations/laws, name each as a symbol (a core agent dimension name or value by its signify anchor, minted or boundary-bound; any other term as the industry's own), and emit declarations-above / laws-below with no explanatory prose; accept only on round-trip equivalent-or-better.`,
|
|
7
7
|
formalBlock: `prose ≜ the source text
|
|
8
8
|
E ≜ entities(prose) ; O ≜ operations(prose) ; L ≜ laws(prose)
|
|
9
9
|
|
|
10
10
|
T ≜ the declared notation table @ src/operator-lexicon.ts
|
|
11
|
-
η : E ∪ O ⇀ symbols @ signify
|
|
11
|
+
η : E ∪ O ⇀ symbols ⟨core agent dimension names and values @ signify · every other term the industry's own⟩
|
|
12
12
|
β ≜ { s | s imported, its anchor cited once in adjacent notation }
|
|
13
13
|
ι ≜ { s | s resolved from invocation context }
|
|
14
14
|
|
|
15
|
-
σ* ≜ signify's fittest sign
|
|
16
|
-
|
|
17
15
|
B ≜ formalize(prose) such that :
|
|
18
16
|
∀ e ∈ E : signature(η(e)) ∈ B
|
|
19
17
|
∀ o ∈ O ∪ L : law(η(o)) ∈ B
|
|
20
|
-
∀ line ∈ B : line = σ*(its concept)
|
|
21
18
|
|
|
22
19
|
Dfn ≜ { s | a line of B defines s }
|
|
23
20
|
closed(B) ⇔ symbols(B) ⊆ T ∪ Dfn ∪ β ∪ ι
|
|
@@ -27,7 +24,7 @@ self-sufficient(B) ⇔ closed(B) ∧ complete(B) ∧ ordered(B)
|
|
|
27
24
|
gloss(B) ≜ prose of B beyond β ∪ ι ; gloss(B) ≠ ∅ ⇒ ¬complete(B)
|
|
28
25
|
¬self-sufficient(B) ⇒ ⊥
|
|
29
26
|
|
|
30
|
-
|
|
27
|
+
s ∉ T ⇒ extend T with s ; ¬ degrade the notation to a weaker one already in T ⟨llm-native · a block's notation answers to no cold decode⟩
|
|
31
28
|
|
|
32
29
|
reconstruct(B) ≽ prose
|
|
33
30
|
reconstruct(B) ⋡ prose ⇒ ⊥`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/formalize/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/formalize/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,idAAid;IAC9d,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;2BAuB+B;IAC5C,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC;IAC3C,QAAQ,EAAE,cAAc;CACzB,CAAC"}
|
|
@@ -85,7 +85,7 @@ advance(unit) ≜ \`scripts/plan.mjs advance <unit> --plan <p> --to <state>\`
|
|
|
85
85
|
retract(unit) ≜ \`scripts/plan.mjs retract <unit> --plan <p>\`
|
|
86
86
|
revise(unit) ≜ \`scripts/plan.mjs revise <unit> --plan <p> [--intent <i>] [--static <path>]… [--deps <unit>]… [--outputs <path>]… [--accept <criterion>]…\` ⟨spec(unit) · pin(unit) kept⟩
|
|
87
87
|
revise(P) ≜ \`scripts/plan.mjs revise <plan> [--name <n>] [--realizes <concept>]…\` ⟨name(P) ∨ realizes(P)⟩
|
|
88
|
-
bind(P) ≜ \`scripts/plan.mjs bind <plan>\` ⟨bound(P),
|
|
88
|
+
bind(P) ≜ \`scripts/plan.mjs bind <plan>\` ⟨bound(P), brings P's integration line into being, once⟩
|
|
89
89
|
close(P) ≜ \`scripts/plan.mjs close <plan>\` ⟨closed(P)⟩
|
|
90
90
|
reconcile(x) ≜ \`scripts/plan.mjs reconcile <unit> --plan <p> [--name <n>] [--realizes <concept>] [--intent <i>] [--static <path>]… [--deps <unit>]… [--outputs <path>]… [--accept <criterion>]… [--state <state>] [--repin]\` ∨ \`scripts/plan.mjs reconcile <plan> [--name <n>] [--realizes <concept>]… [--state <state>]\` ↦ one version superseding every current version of x ⟨each field the versions disagree on is given · a unit whose versions pin differently takes --repin⟩
|
|
91
91
|
land(unit) ≜ \`scripts/plan.mjs land <unit> --plan <p> --commit <c>\`
|
|
@@ -16,7 +16,7 @@ import { primePrinciple } from '../../genus/prime-principle.js';
|
|
|
16
16
|
// in whatever order the work wants.
|
|
17
17
|
export const signify = {
|
|
18
18
|
name: 'signify',
|
|
19
|
-
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.`,
|
|
19
|
+
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, for the corpus's core agent dimension names and values alone; stage 2 of exemplify, independently invocable.`,
|
|
20
20
|
formalBlock: `C ≜ the concept lattice
|
|
21
21
|
D ≜ the identity-criterion atoms a concept circumscribes
|
|
22
22
|
prim(c) ≜ c has no factorization into other concepts
|
|
@@ -31,8 +31,8 @@ circ(n,c) ⇔ fired(n) = D(c)
|
|
|
31
31
|
σ*(c) ≜ argmin_{n : circ(n,c)} ⟨|n|, n⟩
|
|
32
32
|
mint : C ⇀ Names
|
|
33
33
|
mint(c) ≜ ∘ M : M ⊆ { n : fired(n) ≠ ∅ } ∧ circ(∘ M, c)
|
|
34
|
-
Art ≜
|
|
35
|
-
α : C ↣ Names ⟨dom(α)
|
|
34
|
+
Art ≜ the corpus's own authored surfaces ⟨prose ≡ identifier ≡ path⟩
|
|
35
|
+
α : C ↣ Names ⟨dom(α) ≜ the concepts the corpus's core agent dimension names and values name · every other term is the industry's own, and no consumer surface is held to α⟩
|
|
36
36
|
register(a) ≜ the register a's body is observably authored in ⟨σ* ∨ human⟩
|
|
37
37
|
verbatim(a) ≜ a ships whole, byte-exact : settled σ*, never re-derived at projection
|
|
38
38
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/signify/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,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,
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/signify/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,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,iRAAiR;IAC9R,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAiDmC;IAChD,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;IACrB,QAAQ,EAAE,cAAc;CACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cratylus/canon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.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,11 +18,11 @@
|
|
|
18
18
|
],
|
|
19
19
|
"//test": "`test` builds FIRST because `test/runtime-shim.test.ts` drives the shipped `cratylus project` over the repository's own `cratylus.config.ts`, and that config extends `@cratylus/canon` — the PACKAGE, i.e. this package's `dist`. turbo's `test.dependsOn: [^build]` builds this package's DEPENDENCIES, never this package, so a cold clone would run the consumer path against a dist that does not exist.",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@cratylus/schema": "0.
|
|
21
|
+
"@cratylus/schema": "0.7.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@cratylus/forge": "0.
|
|
25
|
-
"@cratylus/runtime": "0.8.
|
|
24
|
+
"@cratylus/forge": "0.12.0",
|
|
25
|
+
"@cratylus/runtime": "0.8.1",
|
|
26
26
|
"@cratylus/tooling": "0.0.0",
|
|
27
27
|
"@types/node": "^22.0.0",
|
|
28
28
|
"tsx": "^4.19.0",
|