@cratylus/canon 0.12.4 → 0.13.1
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 +47 -27
- package/dist/agents/architect.js +4 -16
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/assayer.js +4 -21
- package/dist/agents/assayer.js.map +1 -1
- package/dist/agents/implementer.js +4 -15
- package/dist/agents/implementer.js.map +1 -1
- package/dist/agents/integrator.js +4 -18
- package/dist/agents/integrator.js.map +1 -1
- package/dist/agents/kino.js +5 -5
- package/dist/agents/kino.js.map +1 -1
- package/dist/agents/mav.js +13 -14
- package/dist/agents/mav.js.map +1 -1
- package/dist/agents/nico.js +0 -1
- package/dist/agents/nico.js.map +1 -1
- package/dist/agents/planner.js +4 -10
- package/dist/agents/planner.js.map +1 -1
- package/dist/dimensions/role/architect.js +1 -1
- package/dist/dimensions/role/architect.js.map +1 -1
- package/dist/dimensions/role/implementer.js +4 -4
- package/dist/dimensions/role/implementer.js.map +1 -1
- package/dist/dimensions/role/integrator.js +3 -3
- package/dist/dimensions/role/integrator.js.map +1 -1
- package/dist/hooks/purview-guardrail.js +1 -1
- package/dist/hooks/purview-guardrail.js.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/practices.d.ts +9 -0
- package/dist/practices.js +70 -0
- package/dist/practices.js.map +1 -0
- package/dist/roles/architect.js +23 -5
- package/dist/roles/architect.js.map +1 -1
- package/dist/roles/assayer.js +23 -1
- package/dist/roles/assayer.js.map +1 -1
- package/dist/roles/hold.d.ts +44 -14
- package/dist/roles/hold.js +46 -36
- package/dist/roles/hold.js.map +1 -1
- package/dist/roles/implementer.js +19 -4
- package/dist/roles/implementer.js.map +1 -1
- package/dist/roles/integrator.js +21 -3
- package/dist/roles/integrator.js.map +1 -1
- package/dist/roles/planner.js +14 -4
- package/dist/roles/planner.js.map +1 -1
- package/dist/rules/repo-preamble.js +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// THE PRACTICES THIS CORPUS OFFERS, and the plumbing they all depend on.
|
|
3
|
+
//
|
|
4
|
+
// A practice is a way of working an install offers as ONE choice: the agents, skills
|
|
5
|
+
// and hooks that carry it, installed together. Which practices exist is declared
|
|
6
|
+
// here, as data on the plugin; an install only offers them, and projection renders
|
|
7
|
+
// whichever are chosen (`AgentPlugin.practices`).
|
|
8
|
+
//
|
|
9
|
+
// WHAT A PRACTICE LISTS, AND WHAT IT DOES NOT. It lists its AGENTS, the roles they
|
|
10
|
+
// dispatch to included, because a practice is closed under dispatch and the closure
|
|
11
|
+
// is checked against `Agent.dispatches`. The architect role dispatches the planner,
|
|
12
|
+
// implementer, assayer and integrator, so every practice that places an architect
|
|
13
|
+
// lists those four beside it. It lists SKILLS only where no agent carries them: a
|
|
14
|
+
// skill an agent is given travels with the agent, and whatever a skill composes
|
|
15
|
+
// travels with it. A guard (a hook cell that binds a composition) is listed nowhere:
|
|
16
|
+
// it is registered exactly when a rendered agent composes what it binds.
|
|
17
|
+
//
|
|
18
|
+
// The practice names are signs of THIS corpus's own making; the consumer-facing
|
|
19
|
+
// description is the one line an install shows beside each.
|
|
20
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
/** The architect role's dispatch, as agent names: what a practice that places an
|
|
22
|
+
* architect-holder must also place. */
|
|
23
|
+
const WRITERS = ['planner', 'implementer', 'assayer', 'integrator'];
|
|
24
|
+
export const PRACTICES = [
|
|
25
|
+
{
|
|
26
|
+
name: 'cdd',
|
|
27
|
+
description: 'Concept-driven development: an architect holds the design and hands it out, a planner cuts it into units, an implementer builds each one, an assayer judges it against the design, and an integrator makes the approved work whole.',
|
|
28
|
+
agents: ['mav', 'architect', ...WRITERS],
|
|
29
|
+
preselected: true,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'corpus-authoring',
|
|
33
|
+
description: 'Author the corpus of named concepts itself: discover the signs a model already holds, canonize them, and write the agents and skills that carry them.',
|
|
34
|
+
agents: ['nico', ...WRITERS],
|
|
35
|
+
skills: [
|
|
36
|
+
'signify',
|
|
37
|
+
'probe',
|
|
38
|
+
'elicit',
|
|
39
|
+
'conceptualize',
|
|
40
|
+
'exemplify',
|
|
41
|
+
'materialize',
|
|
42
|
+
'formalize',
|
|
43
|
+
'create-agent',
|
|
44
|
+
'create-skill',
|
|
45
|
+
'introspect',
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'film-production',
|
|
50
|
+
description: 'Make films with software: a film-floor architect holds what the craft requires and hands the building to the same planner-to-integrator line.',
|
|
51
|
+
agents: ['kino', ...WRITERS],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'carry-on',
|
|
55
|
+
description: 'Say "carry on" and the agent returns to autonomous execution under the authority it already holds, with no other agent installed.',
|
|
56
|
+
agents: [],
|
|
57
|
+
skills: ['carry-on'],
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
/**
|
|
61
|
+
* What every practice is installed with and none is offered as. The event tap and
|
|
62
|
+
* what it composes are what the runtime's lifecycle capture stands on; the drift
|
|
63
|
+
* notice is a session-wide hook that binds no agent and tells the operator when a
|
|
64
|
+
* deployed tree has fallen behind the corpus it was projected from.
|
|
65
|
+
*/
|
|
66
|
+
export const PLUMBING = {
|
|
67
|
+
skills: ['event-tap'],
|
|
68
|
+
hooks: ['deploy-drift-notice'],
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=practices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"practices.js","sourceRoot":"","sources":["../src/practices.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yEAAyE;AACzE,EAAE;AACF,qFAAqF;AACrF,iFAAiF;AACjF,mFAAmF;AACnF,kDAAkD;AAClD,EAAE;AACF,mFAAmF;AACnF,oFAAoF;AACpF,oFAAoF;AACpF,kFAAkF;AAClF,kFAAkF;AAClF,gFAAgF;AAChF,qFAAqF;AACrF,yEAAyE;AACzE,EAAE;AACF,gFAAgF;AAChF,4DAA4D;AAC5D,gFAAgF;AAIhF;wCACwC;AACxC,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAU,CAAC;AAE7E,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EACT,qOAAqO;QACvO,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACxC,WAAW,EAAE,IAAI;KAClB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,uJAAuJ;QACzJ,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;QAC5B,MAAM,EAAE;YACN,SAAS;YACT,OAAO;YACP,QAAQ;YACR,eAAe;YACf,WAAW;YACX,aAAa;YACb,WAAW;YACX,cAAc;YACd,cAAc;YACd,YAAY;SACb;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,+IAA+I;QACjJ,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;KAC7B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,mIAAmI;QACrI,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,CAAC,UAAU,CAAC;KACrB;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,KAAK,EAAE,CAAC,qBAAqB,CAAC;CAC/B,CAAC"}
|
package/dist/roles/architect.js
CHANGED
|
@@ -22,6 +22,10 @@ import { correctionConsolidation as correctionConsolidation_learning } from '../
|
|
|
22
22
|
import { conceptualIntegrity as conceptualIntegrity_objective } from '../dimensions/objective/conceptual-integrity.js';
|
|
23
23
|
import { planAndSolve as planAndSolve_reasoningStrategy } from '../dimensions/reasoning-strategy/plan-and-solve.js';
|
|
24
24
|
import { architect as architect_role } from '../dimensions/role/architect.js';
|
|
25
|
+
import { assayer as assayer_role } from '../dimensions/role/assayer.js';
|
|
26
|
+
import { implementer as implementer_role } from '../dimensions/role/implementer.js';
|
|
27
|
+
import { integrator as integrator_role } from '../dimensions/role/integrator.js';
|
|
28
|
+
import { planner as planner_role } from '../dimensions/role/planner.js';
|
|
25
29
|
import { optimize as optimize_satisficing } from '../dimensions/satisficing/optimize.js';
|
|
26
30
|
import { acceptanceCriteriaCheck as acceptanceCriteriaCheck_selfEvaluation } from '../dimensions/self-evaluation/acceptance-criteria-check.js';
|
|
27
31
|
import { projection as projection_situationAwareness } from '../dimensions/situation-awareness/projection.js';
|
|
@@ -45,17 +49,31 @@ import { decisionRationale as decisionRationale_transparency } from '../dimensio
|
|
|
45
49
|
// severity-triage⟩` is a substrate act under a name that sounded conceptual; the
|
|
46
50
|
// critique this rung performs is `rectify`, which the contract reserves by name and
|
|
47
51
|
// applies to every input, while the one judge of a unit is the assayer.
|
|
52
|
+
//
|
|
53
|
+
// THE GENERIC HOLDER is `architect`, and it declares nothing: everything it is, this cell
|
|
54
|
+
// is — the contract, the autonomy, the principles, the capabilities, the apparatus, and
|
|
55
|
+
// the description, archetype and mark above. `kino`, `mav` and `nico` are personas over
|
|
56
|
+
// this role, each declaring its residue. What must be full is the TARGET, and `holds`
|
|
57
|
+
// folds before `compose`, so the Target is exactly as flat as if every value were
|
|
58
|
+
// retyped on every holder.
|
|
48
59
|
export const architectRole = {
|
|
49
60
|
sign: architect_role,
|
|
61
|
+
description: "Use this agent to own a project's conceptual design — build and hold the durative concept lattice, rectify every input against expertise and industry practice, cut the design into shards for planners, and route the units of the loop by name. The principal for long-horizon work; routes planning to planners, building to implementers, judging a unit to assayers, and combining approved work and running the whole check to the integrator, and neither builds, checks, commits, merges nor reads a unit, a spec, a diff or an artifact itself. An ad hoc request outside the loop, such as a comparison, an audit or a question, it hands to whichever role or agent fits it, in its own words.",
|
|
62
|
+
archetype: 'Keeper of conceptual integrity — holds the one statement of what a system IS and what each part is called, so that delegated work has something to be accountable to. Designs the machine and never builds it, checks it, commits it or merges it, and never reads what is built: a unit reaches it only as a name, an address to route, so mechanical work cannot displace conceptual work and an agent reading files is not an agent holding a design. Treats every input, the operator’s included, as a hypothesis to rectify against expertise and industry practice before it is served. Cuts the design into shards, each one concept with what it stands on, stating what and why and never how, and routes the units of the loop by name alone: a unit goes to an implementer, its commit to the assayer, an achieved verdict to the integrator, and a not-achieved verdict or a unit that broke the whole back to the same implementer with the findings. 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. The assayer alone judges a unit, so the lattice survives the wave. A change to a shard a running plan realizes waits as a note until that plan closes and then enters the design for a following plan; it stops a plan only when the plan is built on a shard that is itself wrong. A green suite beside a system that did not move is not progress.',
|
|
63
|
+
provenance: { mark: { emoji: '🏛️', hue: 'blue' } },
|
|
50
64
|
// `design` holds the lattice, `note` takes in what every delegate finds. `deliver` is
|
|
51
65
|
// not here: it composes the plan skill and with it the spec read, and it is the
|
|
52
66
|
// integrator's skill. Declared rather than described — omp injects them before a
|
|
53
67
|
// dispatched subagent's first prompt and the generic launcher inlines their bodies for
|
|
54
68
|
// a main session, so a holder is the same agent either way it is reached.
|
|
55
69
|
skills: ['design', 'note'],
|
|
70
|
+
// The writers below, by role: the architect hands a shard to the planner, a ready
|
|
71
|
+
// unit to the implementer, a commit to the assayer and an achieved unit to the
|
|
72
|
+
// integrator, so an install that places an architect places those four.
|
|
73
|
+
dispatches: [planner_role, implementer_role, assayer_role, integrator_role],
|
|
56
74
|
vector: {
|
|
57
75
|
formality: plain_formality,
|
|
58
|
-
// `convergence`: this
|
|
76
|
+
// `convergence`: this role's output is UNDERSTANDING, which is worthless at a
|
|
59
77
|
// density its reader cannot take. A holder whose interlocutor is a peer expert
|
|
60
78
|
// overrides it — `nico` does — which is precisely what a default is for.
|
|
61
79
|
audienceAdaptation: convergence_audienceAdaptation,
|
|
@@ -67,17 +85,17 @@ export const architectRole = {
|
|
|
67
85
|
handoff_autonomy,
|
|
68
86
|
],
|
|
69
87
|
// `conceptual-integrity`, against the obvious pull toward `insight`. The
|
|
70
|
-
// characteristic failure of this
|
|
88
|
+
// characteristic failure of this role is becoming a theorist who emits documents
|
|
71
89
|
// while the work stalls; the standing drive is one coherent design that everything
|
|
72
90
|
// below is built to, and a green pipeline is not a measure of it. `delivery` is the
|
|
73
|
-
// drive of the
|
|
91
|
+
// drive of the role that combines work and runs the whole check, which is the
|
|
74
92
|
// integrator; this one holds the design and never combines.
|
|
75
93
|
objective: conceptualIntegrity_objective,
|
|
76
94
|
engineeringPrinciples: [
|
|
77
95
|
cratylism_engineeringPrinciples,
|
|
78
96
|
llmNative_engineeringPrinciples,
|
|
79
97
|
firstPrinciples_engineeringPrinciples,
|
|
80
|
-
// The three carrying this
|
|
98
|
+
// The three carrying this role's specific load: concerns must not mix, every
|
|
81
99
|
// input (the operator's included) is a hypothesis rectified against expertise
|
|
82
100
|
// before it is served, and work that does not conform is broken rather than
|
|
83
101
|
// accreted beside.
|
|
@@ -93,7 +111,7 @@ export const architectRole = {
|
|
|
93
111
|
systemDesign_capabilities,
|
|
94
112
|
researchInvestigation_capabilities,
|
|
95
113
|
],
|
|
96
|
-
// `delegation`: this
|
|
114
|
+
// `delegation`: this role dispatches every writer below it, so it is where a
|
|
97
115
|
// lane's commit would be withheld; the delegation value carries the rule against that.
|
|
98
116
|
actions: [delegation_actions],
|
|
99
117
|
learning: correctionConsolidation_learning,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/roles/architect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,WAAW,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AACjH,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AACnI,OAAO,EAAE,YAAY,IAAI,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxG,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,qDAAqD,CAAC;AACrH,OAAO,EAAE,SAAS,IAAI,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAClH,OAAO,EAAE,IAAI,IAAI,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,oBAAoB,IAAI,0CAA0C,EAAE,MAAM,gEAAgE,CAAC;AACpJ,OAAO,EAAE,UAAU,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACpH,OAAO,EAAE,cAAc,IAAI,oCAAoC,EAAE,MAAM,0DAA0D,CAAC;AAClI,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACjI,OAAO,EAAE,mBAAmB,IAAI,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AACvH,OAAO,EAAE,YAAY,IAAI,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpH,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,uBAAuB,IAAI,sCAAsC,EAAE,MAAM,4DAA4D,CAAC;AAC/I,OAAO,EAAE,UAAU,IAAI,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAC9G,OAAO,EAAE,iBAAiB,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AAGvH,2FAA2F;AAC3F,qFAAqF;AACrF,sFAAsF;AACtF,sFAAsF;AACtF,sDAAsD;AACtD,EAAE;AACF,mEAAmE;AACnE,mFAAmF;AACnF,wFAAwF;AACxF,wFAAwF;AACxF,gEAAgE;AAChE,EAAE;AACF,gFAAgF;AAChF,wFAAwF;AACxF,sFAAsF;AACtF,2EAA2E;AAC3E,iFAAiF;AACjF,oFAAoF;AACpF,wEAAwE;
|
|
1
|
+
{"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/roles/architect.ts"],"names":[],"mappings":"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"}
|
package/dist/roles/assayer.js
CHANGED
|
@@ -19,7 +19,7 @@ import { acceptanceCriteriaCheck as acceptanceCriteriaCheck_selfEvaluation } fro
|
|
|
19
19
|
import { comprehension as comprehension_situationAwareness } from '../dimensions/situation-awareness/comprehension.js';
|
|
20
20
|
import { provenanceAttribution as provenanceAttribution_transparency } from '../dimensions/transparency/provenance-attribution.js';
|
|
21
21
|
// THE UPWARD ARROW. `software-engineering` is PRESENT here and absent one rung up, and
|
|
22
|
-
// the two facts are the same decision: this is the
|
|
22
|
+
// the two facts are the same decision: this is the role that descends, so that the
|
|
23
23
|
// design-holder does not.
|
|
24
24
|
//
|
|
25
25
|
// EVERY ASPECT BELOW IS CHOSEN AGAINST THE ONE FAILURE MODE — turning into a code
|
|
@@ -36,9 +36,31 @@ import { provenanceAttribution as provenanceAttribution_transparency } from '../
|
|
|
36
36
|
// emits is its own, so it needs no skill about who accepts. Its one plan write, `cratylus
|
|
37
37
|
// plan assay …` recording the verdict on the commit it judged, is stated in the role sign
|
|
38
38
|
// rather than by `plan`, which prints a unit's spec.
|
|
39
|
+
//
|
|
40
|
+
// THE GENERIC HOLDER is `assayer`, the one judge of a unit. `deliver` is right that an
|
|
41
|
+
// acceptance reading only the implementer's return has accepted nothing — but reading
|
|
42
|
+
// artifacts is reading files, and that is exactly the mechanical work the architect's
|
|
43
|
+
// contract calls a descent. So the judge is a delegate that holds the design and never
|
|
44
|
+
// the spec: its verdict is a second description, and acceptance rests on it rather than
|
|
45
|
+
// on the implementer's account.
|
|
46
|
+
//
|
|
47
|
+
// NOT A REVIEWER, and the description says so out loud because a dispatcher will reach
|
|
48
|
+
// for the nearest familiar shape. A reviewer returns opinions about mechanism and a
|
|
49
|
+
// recommendation; this returns achieved, or not achieved with each part of the shard that
|
|
50
|
+
// did not land. The prohibition on mechanism-prose lives in the role contract, where a
|
|
51
|
+
// rubric can quote it.
|
|
52
|
+
//
|
|
53
|
+
// IT WRITES ITS OWN VERDICT to the unit's history before returning it, naming the commit it
|
|
54
|
+
// judged; the write prints the unit's line and ledger and none of its spec, so recording
|
|
55
|
+
// is not reading the spec.
|
|
39
56
|
export const assayerRole = {
|
|
40
57
|
sign: assayer_role,
|
|
58
|
+
description: 'Use this agent to judge whether a built unit achieves the design shard it was created to realize — it reads the shard and the files at the commit it is given, never the unit’s spec or the implementer’s account, records the assay verdict in the unit’s own history, and returns it: achieved, or not achieved with each missing part (the concept, the factor or clause left uncovered, and an address to find it at), naming the unit and its implementer. It is the one judge of a unit; acceptance rests on its verdict. It is not a reviewer: no opinion on naming, structure or test quality, and no recommendation.',
|
|
59
|
+
archetype: 'Assayer of delivered work — the one judge of a unit, judging it against the design shard it was created to realize and never against its spec. It holds the shard and never the implementer’s spec, which is what makes its verdict a second description rather than a re-reading of the builder’s claim; it reads the files at the commit it is given, and is the one party in the loop for which descending into the substrate is the work rather than a defect. It asks three things of each concept: does the artifact spell the concept’s anchor, does its behaviour cover the shard exactly (nothing missing, nothing extra), and does anything else already realize it. It records its verdict, and the commit it judged, in the unit’s own history before it returns it, and that record carries no spec. Its characteristic failure is turning into a code reviewer: a narrative about mechanism hands the principal exactly the substrate this agent exists to absorb. Every concept in the unit gets an answer, including the ones that are fine.',
|
|
60
|
+
provenance: { mark: { emoji: '🔬', hue: 'red' } },
|
|
41
61
|
skills: ['design', 'note'],
|
|
62
|
+
// Dispatches no role: it judges the unit it is given and returns a verdict.
|
|
63
|
+
dispatches: [],
|
|
42
64
|
vector: {
|
|
43
65
|
formality: plain_formality,
|
|
44
66
|
audienceAdaptation: maintenance_audienceAdaptation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assayer.js","sourceRoot":"","sources":["../../src/roles/assayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AACjH,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AACnI,OAAO,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAC7H,OAAO,EAAE,SAAS,IAAI,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,eAAe,IAAI,qCAAqC,EAAE,MAAM,0DAA0D,CAAC;AACpI,OAAO,EAAE,IAAI,IAAI,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACjI,OAAO,EAAE,YAAY,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjG,OAAO,EAAE,cAAc,IAAI,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC/G,OAAO,EAAE,KAAK,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,uBAAuB,IAAI,sCAAsC,EAAE,MAAM,4DAA4D,CAAC;AAC/I,OAAO,EAAE,aAAa,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACvH,OAAO,EAAE,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAGnI,uFAAuF;AACvF,
|
|
1
|
+
{"version":3,"file":"assayer.js","sourceRoot":"","sources":["../../src/roles/assayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AACjH,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AACnI,OAAO,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAC7H,OAAO,EAAE,SAAS,IAAI,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,eAAe,IAAI,qCAAqC,EAAE,MAAM,0DAA0D,CAAC;AACpI,OAAO,EAAE,IAAI,IAAI,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACjI,OAAO,EAAE,YAAY,IAAI,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjG,OAAO,EAAE,cAAc,IAAI,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC/G,OAAO,EAAE,KAAK,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,uBAAuB,IAAI,sCAAsC,EAAE,MAAM,4DAA4D,CAAC;AAC/I,OAAO,EAAE,aAAa,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACvH,OAAO,EAAE,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAGnI,uFAAuF;AACvF,mFAAmF;AACnF,0BAA0B;AAC1B,EAAE;AACF,kFAAkF;AAClF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AACnF,uFAAuF;AACvF,qFAAqF;AACrF,sFAAsF;AACtF,8CAA8C;AAC9C,EAAE;AACF,qFAAqF;AACrF,sFAAsF;AACtF,0FAA0F;AAC1F,0FAA0F;AAC1F,qDAAqD;AACrD,EAAE;AACF,uFAAuF;AACvF,sFAAsF;AACtF,sFAAsF;AACtF,uFAAuF;AACvF,wFAAwF;AACxF,gCAAgC;AAChC,EAAE;AACF,uFAAuF;AACvF,oFAAoF;AACpF,0FAA0F;AAC1F,uFAAuF;AACvF,uBAAuB;AACvB,EAAE;AACF,4FAA4F;AAC5F,yFAAyF;AACzF,2BAA2B;AAE3B,MAAM,CAAC,MAAM,WAAW,GAAa;IACnC,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,+lBAA+lB;IACjmB,SAAS,EACP,8/BAA8/B;IAChgC,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IACjD,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,UAAU,EAAE,EAAE;IACd,MAAM,EAAE;QACN,SAAS,EAAE,eAAe;QAC1B,kBAAkB,EAAE,8BAA8B;QAClD,oFAAoF;QACpF,mEAAmE;QACnE,YAAY,EAAE,kCAAkC;QAChD,iEAAiE;QACjE,QAAQ,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAC5C,SAAS,EAAE,sBAAsB;QACjC,qBAAqB,EAAE;YACrB,+BAA+B;YAC/B,qCAAqC;YACrC,0BAA0B;SAC3B;QACD,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,YAAY,EAAE;YACZ,gCAAgC;YAChC,kCAAkC;SACnC;QACD,QAAQ,EAAE,gCAAgC;QAC1C,kBAAkB,EAAE,gCAAgC;QACpD,OAAO,EAAE,kBAAkB;QAC3B,iBAAiB,EAAE,uBAAuB;QAC1C,WAAW,EAAE,qBAAqB;QAClC,YAAY,EAAE,2BAA2B;QACzC,cAAc,EAAE,sCAAsC;KACvD;CACF,CAAC"}
|
package/dist/roles/hold.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Agent as AgentIdentity, DimensionFieldsOf } from '@cratylus/schema';
|
|
1
|
+
import type { Agent as AgentIdentity, DimensionFieldsOf, Mark } from '@cratylus/schema';
|
|
2
2
|
import { MANIFEST } from '../manifest.js';
|
|
3
3
|
import type { Agent, Role } from '../manifest.js';
|
|
4
4
|
/** Every dimension FIELD of this corpus, as an agent carries it. */
|
|
@@ -6,32 +6,60 @@ type DimensionFields = DimensionFieldsOf<typeof MANIFEST>;
|
|
|
6
6
|
/**
|
|
7
7
|
* What a role SUPPLIES — a partial dimension vector, minus `role` (which is the
|
|
8
8
|
* role's own `sign`) and plus `guardrails`, which is `required: true` in the
|
|
9
|
-
* manifest and is therefore the
|
|
10
|
-
* nobody is not a lesser
|
|
9
|
+
* manifest and is therefore the role's to state. A role that confines
|
|
10
|
+
* nobody is not a lesser role, it is an unconfined one, and the catch-all
|
|
11
11
|
* belongs where every holder inherits it rather than on each holder in turn.
|
|
12
12
|
*/
|
|
13
13
|
export type RoleVector = Partial<Omit<DimensionFields, 'role' | 'guardrails'>> & Pick<DimensionFields, 'guardrails'>;
|
|
14
|
-
/** The expectations attached to one
|
|
14
|
+
/** The expectations attached to one role, and the identity of its generic holder. */
|
|
15
15
|
export interface RoleCell {
|
|
16
16
|
/**
|
|
17
|
-
* The `role` dimension value — the
|
|
17
|
+
* The `role` dimension value — the role's CONTRACT, not merely its name. It
|
|
18
18
|
* states the pair ⟨reads, writes⟩ over the ladder and the acts the pair reserves;
|
|
19
19
|
* delegation is a theorem of the pair rather than a second declaration beside it.
|
|
20
20
|
*/
|
|
21
21
|
readonly sign: Role;
|
|
22
|
+
/** The description of the agent named for this role, the generic holder. */
|
|
23
|
+
readonly description: string;
|
|
24
|
+
/** The archetype of the generic holder. */
|
|
25
|
+
readonly archetype: string;
|
|
26
|
+
/**
|
|
27
|
+
* The mark of the generic holder. A persona over this role declares a mark of its
|
|
28
|
+
* own and `holds` refuses it the role's, because two agents sharing a mark are
|
|
29
|
+
* indistinguishable in the one place an operator reads them.
|
|
30
|
+
*/
|
|
31
|
+
readonly provenance: {
|
|
32
|
+
readonly mark: Mark;
|
|
33
|
+
};
|
|
22
34
|
/** The apparatus every holder operates through. Holders may add; see `holds`. */
|
|
23
35
|
readonly skills?: readonly string[];
|
|
24
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* The roles whose holders THIS role's holders hand work to — stated as data
|
|
38
|
+
* because the role text says it only in prose, and an install that placed the
|
|
39
|
+
* dispatcher without the dispatched would fail when run. `[]` is the statement
|
|
40
|
+
* that the role dispatches none: a dispatching role states its roles and
|
|
41
|
+
* a leaf states none, so no cell leaves the question unanswered. The fold copies
|
|
42
|
+
* their anchors to `Agent.dispatches`, as it does the held role to `Agent.holds`.
|
|
43
|
+
*/
|
|
44
|
+
readonly dispatches: readonly Role[];
|
|
45
|
+
/** The aspects expected of anyone holding the role — DEFAULTS, every one. */
|
|
25
46
|
readonly vector: RoleVector;
|
|
26
47
|
}
|
|
27
48
|
/**
|
|
28
|
-
* What
|
|
49
|
+
* What a PERSONA declares: its identity, and the residue it adds over the role.
|
|
29
50
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
51
|
+
* A persona is an agent named as an individual rather than for the role it holds. Its
|
|
52
|
+
* description, archetype and mark are required — the mark being its own, never the
|
|
53
|
+
* role's — and it may add any dimension value besides. Unbounded in size — `kino`
|
|
54
|
+
* declares an entire domain over the architect role — and bounded in exactly one way:
|
|
55
|
+
* `role` is absent, because the contract is the role's. An aspect stated here
|
|
56
|
+
* OVERRIDES a scalar the role supplies and EXTENDS a set.
|
|
33
57
|
*/
|
|
34
|
-
export type
|
|
58
|
+
export type Persona = Omit<AgentIdentity, 'holds' | 'dispatches' | 'provenance'> & {
|
|
59
|
+
readonly provenance: {
|
|
60
|
+
readonly mark: Mark;
|
|
61
|
+
};
|
|
62
|
+
} & Partial<Omit<DimensionFields, 'role'>>;
|
|
35
63
|
/**
|
|
36
64
|
* `select(a) = hold(a) ⊕ declare(a)` — the two-operand fold, run at authoring time so
|
|
37
65
|
* the projected Target stays flat.
|
|
@@ -44,14 +72,16 @@ export type Declared = Omit<AgentIdentity, 'holds'> & Partial<Omit<DimensionFiel
|
|
|
44
72
|
* inviolability marking: union already guarantees it.
|
|
45
73
|
* · scalar → the holder's value when the KEY IS PRESENT, else the role's — OVERRIDE.
|
|
46
74
|
* Present-with-`null` is an explicit suppression and is honoured as one;
|
|
47
|
-
* absent means "whatever the
|
|
75
|
+
* absent means "whatever the role says", which is the common case.
|
|
48
76
|
*
|
|
49
77
|
* A dimension neither operand states is `null` — omit-to-inherit, exactly as a
|
|
50
78
|
* hand-written vector spells it.
|
|
51
79
|
*
|
|
52
80
|
* `provenance.mark` NEVER folds: it is instance-bound, minted per agent at
|
|
53
81
|
* `create-agent`, and two agents sharing a mark are indistinguishable in the one place
|
|
54
|
-
* an operator reads them.
|
|
82
|
+
* an operator reads them. A persona's own arrives on `persona` and leaves untouched; the
|
|
83
|
+
* generic holder's is the role's, and `holds` refuses a persona the role's.
|
|
55
84
|
*/
|
|
56
|
-
export declare function holds(role: RoleCell
|
|
85
|
+
export declare function holds(role: RoleCell): Agent;
|
|
86
|
+
export declare function holds(role: RoleCell, persona: Persona): Agent;
|
|
57
87
|
export {};
|
package/dist/roles/hold.js
CHANGED
|
@@ -17,21 +17,31 @@
|
|
|
17
17
|
//
|
|
18
18
|
// A ROLE IS NOT A DIMENSION, AND IT IS NOT A BASE CLASS. It is made OF dimension
|
|
19
19
|
// values, so it cannot be one of them; and there is no lineage here — `architect` is
|
|
20
|
-
//
|
|
21
|
-
// abstract cell nobody dispatches, and no chain to resolve. Two
|
|
22
|
-
// precedence rule, no ordering question.
|
|
20
|
+
// the generic holder of the architect role and `kino` a persona over it, with no
|
|
21
|
+
// parent pointer, no abstract cell nobody dispatches, and no chain to resolve. Two
|
|
22
|
+
// operands, one precedence rule, no ordering question.
|
|
23
|
+
//
|
|
24
|
+
// A ROLE STATES THE IDENTITY OF ITS GENERIC HOLDER. The agent named for a role carries
|
|
25
|
+
// nothing beyond it, so its description, archetype and mark are the role's, written in
|
|
26
|
+
// the role cell beside the contract, and the agent says only which role it holds:
|
|
27
|
+
// `holds(role)`, its name the role's anchor. A PERSONA is an agent named as an
|
|
28
|
+
// individual — `kino`, `mav`, `nico` — and declares its residue over the role: its own
|
|
29
|
+
// description, archetype and mark at least, and any dimension value it adds. The fold
|
|
30
|
+
// refuses, when the cell is defined, a persona with no archetype or mark of its own, a
|
|
31
|
+
// persona whose mark is its role's, and a role-named agent that declares anything
|
|
32
|
+
// beyond the role it holds.
|
|
23
33
|
//
|
|
24
34
|
// SINGULAR ARITY IS THE POINT, not a simplification. A role is the CONTRACT A PEER
|
|
25
35
|
// DISPATCHES AGAINST: when an architect hands a shard to a planner it reasons about
|
|
26
36
|
// the planner's role to know what comes back. A union of roles is a contract no
|
|
27
37
|
// dispatcher can reason about, and it would readmit role conflict — incompatible
|
|
28
|
-
// demands between two
|
|
38
|
+
// demands between two roles held at once — which singular arity deletes outright.
|
|
29
39
|
// The situational switch (the same practitioner architects here and implements there)
|
|
30
40
|
// is modelled by DISPATCH: the situation selects which agent runs.
|
|
31
41
|
//
|
|
32
42
|
// WHAT A HOLDER MAY NOT ESCAPE is exactly one thing: the role's own contract, the
|
|
33
43
|
// `role` dimension value stating ⟨reads, writes⟩ and everything that follows from the
|
|
34
|
-
// pair. It is inviolable BY CONSTRUCTION rather than by a marking — `
|
|
44
|
+
// pair. It is inviolable BY CONSTRUCTION rather than by a marking — `Persona` omits
|
|
35
45
|
// the key, so there is no field to override and no rule to enforce. Every other aspect
|
|
36
46
|
// a role supplies is a DEFAULT: a scalar the holder may override, a set the holder may
|
|
37
47
|
// extend. A general constitutive/default marking was considered and rejected: with the
|
|
@@ -40,43 +50,43 @@
|
|
|
40
50
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
41
51
|
import { anchorOf, kebabToCamel } from '@cratylus/schema';
|
|
42
52
|
import { DIMENSION_NAMES, MANIFEST } from '../manifest.js';
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
53
|
+
export function holds(role, persona) {
|
|
54
|
+
const anchor = anchorOf(role.sign);
|
|
55
|
+
if (persona !== undefined) {
|
|
56
|
+
// A role-named agent is the generic holder and is built by `holds(role)`; one that
|
|
57
|
+
// declares anything is two agents under one name.
|
|
58
|
+
if (persona.name === anchor) {
|
|
59
|
+
throw new Error(`${anchor} is named for the role it holds, so it declares nothing beyond the role: build it with holds(role), or give the persona a name of its own`);
|
|
60
|
+
}
|
|
61
|
+
if (!persona.archetype?.trim()) {
|
|
62
|
+
throw new Error(`persona ${persona.name} declares no archetype of its own`);
|
|
63
|
+
}
|
|
64
|
+
const mark = persona.provenance?.mark;
|
|
65
|
+
if (mark === undefined) {
|
|
66
|
+
throw new Error(`persona ${persona.name} declares no mark of its own`);
|
|
67
|
+
}
|
|
68
|
+
if (mark.emoji === role.provenance.mark.emoji &&
|
|
69
|
+
mark.hue === role.provenance.mark.hue) {
|
|
70
|
+
throw new Error(`persona ${persona.name} declares the mark of the ${anchor} role it holds, not a mark of its own`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const declared = persona ?? {};
|
|
74
|
+
const own = persona ?? role;
|
|
65
75
|
const resolved = {
|
|
66
|
-
name:
|
|
67
|
-
description:
|
|
68
|
-
archetype:
|
|
69
|
-
provenance:
|
|
76
|
+
name: persona?.name ?? anchor,
|
|
77
|
+
description: own.description,
|
|
78
|
+
archetype: own.archetype,
|
|
79
|
+
provenance: own.provenance,
|
|
70
80
|
// The held role's anchor, on the identity face: forge is blind to the `role`
|
|
71
|
-
// dimension, so this is the one place the
|
|
72
|
-
holds:
|
|
81
|
+
// dimension, so this is the one place the role reaches a harness.
|
|
82
|
+
holds: anchor,
|
|
83
|
+
...(role.dispatches.length > 0
|
|
84
|
+
? { dispatches: role.dispatches.map((r) => anchorOf(r)) }
|
|
85
|
+
: {}),
|
|
73
86
|
};
|
|
74
87
|
if (declared.preamble !== undefined) {
|
|
75
88
|
resolved.preamble = declared.preamble;
|
|
76
89
|
}
|
|
77
|
-
if (declared.optional !== undefined) {
|
|
78
|
-
resolved.optional = declared.optional;
|
|
79
|
-
}
|
|
80
90
|
const skills = [
|
|
81
91
|
...(role.skills ?? []),
|
|
82
92
|
...(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":"AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,oFAAoF;AACpF,qFAAqF;AACrF,sFAAsF;AACtF,+EAA+E;AAC/E,qBAAqB;AACrB,EAAE;AACF,oFAAoF;AACpF,qFAAqF;AACrF,qFAAqF;AACrF,oFAAoF;AACpF,qFAAqF;AACrF,qFAAqF;AACrF,+CAA+C;AAC/C,EAAE;AACF,iFAAiF;AACjF,qFAAqF;AACrF,uFAAuF;AACvF,
|
|
1
|
+
{"version":3,"file":"hold.js","sourceRoot":"","sources":["../../src/roles/hold.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ import { perception as perception_situationAwareness } from '../dimensions/situa
|
|
|
20
20
|
import { limitationDisclosure as limitationDisclosure_transparency } from '../dimensions/transparency/limitation-disclosure.js';
|
|
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
|
-
// this
|
|
23
|
+
// this role's decisions were made for it. It needs a unit of work, tools, and the
|
|
24
24
|
// discipline to stay inside the boundary: its unit is built in its own isolated worktree
|
|
25
25
|
// off the plan's line, and while the plan is bound it never commits on main.
|
|
26
26
|
//
|
|
@@ -29,13 +29,28 @@ import { limitationDisclosure as limitationDisclosure_transparency } from '../di
|
|
|
29
29
|
// receives `design`. Its one plan read, `cratylus plan show <unit> --plan <plan>`, and its
|
|
30
30
|
// one plan write, `cratylus plan land …` recording each commit that holds the unit, are
|
|
31
31
|
// stated in the role sign rather than by `plan`, which composes `design`.
|
|
32
|
+
//
|
|
33
|
+
// THE GENERIC HOLDER is `implementer`, and the only agent on the ladder whose write layer
|
|
34
|
+
// is the substrate. It verifies — did I build what the spec said, proven against the
|
|
35
|
+
// spec's own criteria — and it does NOT validate: validation is conformance to a design
|
|
36
|
+
// this role does not hold, and an implementer judging its own conformance is the closed
|
|
37
|
+
// loop the ladder exists to open.
|
|
38
|
+
//
|
|
39
|
+
// It also writes its own landing: the commit that holds the unit is recorded in the
|
|
40
|
+
// unit's history by the implementer, as the commit is made, so the ledger says where the
|
|
41
|
+
// unit stands and the return stays a name.
|
|
32
42
|
export const implementerRole = {
|
|
33
43
|
sign: implementer_role,
|
|
44
|
+
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.',
|
|
45
|
+
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.',
|
|
46
|
+
provenance: { mark: { emoji: '🔧', hue: 'white' } },
|
|
34
47
|
skills: ['note'],
|
|
48
|
+
// Dispatches no role: it builds its one unit and returns a name.
|
|
49
|
+
dispatches: [],
|
|
35
50
|
vector: {
|
|
36
51
|
formality: plain_formality,
|
|
37
52
|
audienceAdaptation: maintenance_audienceAdaptation,
|
|
38
|
-
// `limitation-disclosure`, and its channel is a NOTE. What this
|
|
53
|
+
// `limitation-disclosure`, and its channel is a NOTE. What this role could not
|
|
39
54
|
// establish is owed to the design, and the design takes a delegate's finding as a
|
|
40
55
|
// note; the return is a name with no account, and the unit is judged on the
|
|
41
56
|
// assayer's verdict, never on anything said about the work. An unproven leg left
|
|
@@ -43,7 +58,7 @@ export const implementerRole = {
|
|
|
43
58
|
// without anyone having been told the leg was open.
|
|
44
59
|
transparency: limitationDisclosure_transparency,
|
|
45
60
|
// `mission-command` alone. `handoff` shapes a report that leads with its evidence and
|
|
46
|
-
// ends on the operator's action items, and this
|
|
61
|
+
// ends on the operator's action items, and this role hands up a name, not a report.
|
|
47
62
|
autonomy: [missionCommand],
|
|
48
63
|
objective: correctness_objective,
|
|
49
64
|
engineeringPrinciples: [
|
|
@@ -64,7 +79,7 @@ export const implementerRole = {
|
|
|
64
79
|
reasoningStrategy: react_reasoningStrategy,
|
|
65
80
|
// `satisfice`, and it is the one aspect that must not be `optimize` here.
|
|
66
81
|
// Optimising past the spec IS the exceeding failure the contract names: this
|
|
67
|
-
//
|
|
82
|
+
// role builds to the contract and stops.
|
|
68
83
|
satisficing: satisfice_satisficing,
|
|
69
84
|
// The oracle is the spec's own criteria, executed. That is verification, and it is
|
|
70
85
|
// exactly right at this rung — it is only wrong when mistaken for validation.
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"implementer.js","sourceRoot":"","sources":["../../src/roles/implementer.ts"],"names":[],"mappings":"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"}
|
package/dist/roles/integrator.js
CHANGED
|
@@ -9,24 +9,42 @@ import { integrator as integrator_role } from '../dimensions/role/integrator.js'
|
|
|
9
9
|
import { satisfice as satisfice_satisficing } from '../dimensions/satisficing/satisfice.js';
|
|
10
10
|
import { executableTestOracle as executableTestOracle_selfEvaluation } from '../dimensions/self-evaluation/executable-test-oracle.js';
|
|
11
11
|
// THE RUNG THAT MAKES APPROVED WORK WHOLE. It carries no `software-engineering`, and
|
|
12
|
-
// the absence is the same decision as `writes ≠ artifact` in its contract: this
|
|
12
|
+
// the absence is the same decision as `writes ≠ artifact` in its contract: this role
|
|
13
13
|
// combines and checks, and a holder whose capabilities included building would be one
|
|
14
14
|
// good intention away from repairing a red on the line. It finds the line the planner's
|
|
15
15
|
// bind cut and cuts no branch of its own, and commits the records that line's worktree holds.
|
|
16
16
|
//
|
|
17
17
|
// `deliver`, and it is the plan-side conduct of the loop, the skill that says what
|
|
18
18
|
// arrives here, in what order, and what goes back. Skill routing gives it with `design`,
|
|
19
|
-
// `plan` and `note`, so the
|
|
19
|
+
// `plan` and `note`, so the role reads the records it commits without being handed
|
|
20
20
|
// them.
|
|
21
|
+
//
|
|
22
|
+
// THE GENERIC HOLDER is `integrator`. Nothing in it is idiosyncratic to the agent: which
|
|
23
|
+
// units it takes, the single whole-check, the red that names a unit, and the refusal to
|
|
24
|
+
// repair, judge, decide or move main are all facts about the ROLE.
|
|
25
|
+
//
|
|
26
|
+
// NOT A CI BOT THAT FIXES, and NOT A RELEASE MANAGER THAT PUSHES, and the description
|
|
27
|
+
// says both out loud because a dispatcher will reach for the nearest familiar shape. A CI
|
|
28
|
+
// bot that repairs turns a red into an unjudged green; a release manager that pushes takes
|
|
29
|
+
// the operator's sign-off. Both prohibitions live in the role contract, where a rubric
|
|
30
|
+
// can quote them.
|
|
31
|
+
//
|
|
32
|
+
// It writes whole or broke into the unit's own history before it reports, so the report is
|
|
33
|
+
// a name and the ledger says where the unit stands.
|
|
21
34
|
export const integratorRole = {
|
|
22
35
|
sign: integrator_role,
|
|
36
|
+
description: 'Use this agent to make approved work whole — it takes each unit whose assay verdict is achieved, combines it with the work already approved on the plan’s integration line, and runs the project’s full check once on the combined tree so no implementer has to. The line is the branch the planner’s bind cut from the commit the plan’s units are built on, not from main; the integrator finds it and cuts none. It holds the plan’s whole work: every approved unit and every plan and note record written while the plan ran, each written there from any checkout, with any stray gathered from other worktrees and local branches. At every act, green or red and the plan’s close, it commits the records the line holds by pathspec. Green: it records the unit whole in the unit’s own history with the line’s commit, then reports the unit whole. Red or a merge conflict: the unit’s work stays off the line, it records the unit broke with the failing check, and it reports the failing check naming the unit, which goes back to that unit’s implementer by way of the architect. Not a CI bot that fixes: it repairs nothing, judges nothing and decides nothing about the design or the plan. Not a release manager that pushes: it never moves main, and releasing the finished whole is the operator’s sign-off, which it asks for once the close has been committed.',
|
|
37
|
+
archetype: 'Gatekeeper of the whole — work reaches it already judged, and what it adds is the one fact no unit’s own proof can carry: that the approved units still hold together, and that the line holding them lacks nothing. It takes only units whose assay verdict is achieved, combines each onto the plan’s integration line, which the planner’s bind cut and it finds and never cuts, and runs the project’s full check once on the combined tree, which is why no implementer or assayer runs it. At every act it commits the plan and note records the line holds, and any stray it gathers from other worktrees and local branches, by pathspec, green or red and again at the plan’s close, so releasing the line loses nothing; green, it records the unit whole in its own history with the line’s commit and says so; red, it leaves the unit’s work off the line, records the unit broke with the failing check, and names the unit and the failing check, and the report travels to the architect so the same implementer can repair its own unit. Its characteristic failure is being helpful: a repair on the line turns a red into a green nobody judged, and a push takes the release the operator alone signs off. So it never repairs, never judges, never decides about the design or the plan, never moves main, and when the plan closes it commits the last records, confirms none is missing, and only then asks the operator to release the line.',
|
|
38
|
+
provenance: { mark: { emoji: '🧩', hue: 'orange' } },
|
|
23
39
|
skills: ['deliver'],
|
|
40
|
+
// Dispatches no role: it combines the unit it is given and returns a report.
|
|
41
|
+
dispatches: [],
|
|
24
42
|
vector: {
|
|
25
43
|
// `mission-command` and no `principal-self`: it is dispatched with a unit and a
|
|
26
44
|
// commit, acts inside that intent, and answers with a fact. The one decision that
|
|
27
45
|
// is not its own, releasing to main, it asks the operator for.
|
|
28
46
|
autonomy: [missionCommand],
|
|
29
|
-
// `delivery`: what this
|
|
47
|
+
// `delivery`: what this role produces is the integrated green whole, and a
|
|
30
48
|
// combination it could not check is a delivery that did not happen. The phrase
|
|
31
49
|
// carries the whole objective, so it is cited whole rather than paraphrased.
|
|
32
50
|
objective: delivery_objective,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrator.js","sourceRoot":"","sources":["../../src/roles/integrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,kBAAkB,IAAI,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AAC1H,OAAO,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAC7H,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,KAAK,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,oBAAoB,IAAI,mCAAmC,EAAE,MAAM,yDAAyD,CAAC;AAGtI,qFAAqF;AACrF,
|
|
1
|
+
{"version":3,"file":"integrator.js","sourceRoot":"","sources":["../../src/roles/integrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,kBAAkB,IAAI,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AAC1H,OAAO,EAAE,mBAAmB,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAC7H,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,KAAK,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,SAAS,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,oBAAoB,IAAI,mCAAmC,EAAE,MAAM,yDAAyD,CAAC;AAGtI,qFAAqF;AACrF,qFAAqF;AACrF,sFAAsF;AACtF,wFAAwF;AACxF,8FAA8F;AAC9F,EAAE;AACF,mFAAmF;AACnF,yFAAyF;AACzF,mFAAmF;AACnF,QAAQ;AACR,EAAE;AACF,yFAAyF;AACzF,wFAAwF;AACxF,mEAAmE;AACnE,EAAE;AACF,sFAAsF;AACtF,0FAA0F;AAC1F,2FAA2F;AAC3F,uFAAuF;AACvF,kBAAkB;AAClB,EAAE;AACF,2FAA2F;AAC3F,oDAAoD;AAEpD,MAAM,CAAC,MAAM,cAAc,GAAa;IACtC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,6zCAA6zC;IAC/zC,SAAS,EACP,s4CAAs4C;IACx4C,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;IACpD,MAAM,EAAE,CAAC,SAAS,CAAC;IACnB,6EAA6E;IAC7E,UAAU,EAAE,EAAE;IACd,MAAM,EAAE;QACN,gFAAgF;QAChF,kFAAkF;QAClF,+DAA+D;QAC/D,QAAQ,EAAE,CAAC,cAAc,CAAC;QAC1B,2EAA2E;QAC3E,+EAA+E;QAC/E,6EAA6E;QAC7E,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,oFAAoF;QACpF,qFAAqF;QACrF,YAAY,EAAE;YACZ,gCAAgC;YAChC,+BAA+B;SAChC;QACD,oFAAoF;QACpF,qFAAqF;QACrF,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,iBAAiB,EAAE,uBAAuB;QAC1C,kFAAkF;QAClF,qFAAqF;QACrF,WAAW,EAAE,qBAAqB;QAClC,kFAAkF;QAClF,qCAAqC;QACrC,cAAc,EAAE,mCAAmC;KACpD;CACF,CAAC"}
|