@cratylus/canon 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/architect.js +14 -108
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/assayer.d.ts +2 -0
- package/dist/agents/assayer.js +20 -0
- package/dist/agents/assayer.js.map +1 -0
- package/dist/agents/implementer.js +9 -69
- package/dist/agents/implementer.js.map +1 -1
- package/dist/agents/kino.js +24 -110
- package/dist/agents/kino.js.map +1 -1
- package/dist/agents/mav.js +43 -79
- package/dist/agents/mav.js.map +1 -1
- package/dist/agents/nico.js +34 -63
- package/dist/agents/nico.js.map +1 -1
- package/dist/agents/planner.js +8 -80
- package/dist/agents/planner.js.map +1 -1
- package/dist/dimensions/actions/file-ops.js +5 -1
- package/dist/dimensions/actions/file-ops.js.map +1 -1
- package/dist/dimensions/autonomy/human-on-the-loop.js +3 -2
- package/dist/dimensions/autonomy/human-on-the-loop.js.map +1 -1
- package/dist/dimensions/role/architect.js +19 -1
- package/dist/dimensions/role/architect.js.map +1 -1
- package/dist/dimensions/role/{build.d.ts → assayer.d.ts} +1 -1
- package/dist/dimensions/role/assayer.js +25 -0
- package/dist/dimensions/role/assayer.js.map +1 -0
- package/dist/dimensions/role/{diagnose.d.ts → implementer.d.ts} +1 -1
- package/dist/dimensions/role/implementer.js +12 -0
- package/dist/dimensions/role/implementer.js.map +1 -0
- package/dist/dimensions/role/{curate.d.ts → planner.d.ts} +1 -1
- package/dist/dimensions/role/planner.js +14 -0
- package/dist/dimensions/role/planner.js.map +1 -0
- package/dist/hooks/purview-guardrail.d.ts +2 -0
- package/dist/hooks/purview-guardrail.js +302 -0
- package/dist/hooks/purview-guardrail.js.map +1 -0
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +3 -1
- package/dist/manifest.js.map +1 -1
- package/dist/roles/architect.d.ts +2 -0
- package/dist/roles/architect.js +105 -0
- package/dist/roles/architect.js.map +1 -0
- package/dist/roles/assayer.d.ts +2 -0
- package/dist/roles/assayer.js +66 -0
- package/dist/roles/assayer.js.map +1 -0
- package/dist/roles/hold.d.ts +57 -0
- package/dist/roles/hold.js +105 -0
- package/dist/roles/hold.js.map +1 -0
- package/dist/roles/implementer.d.ts +2 -0
- package/dist/roles/implementer.js +62 -0
- package/dist/roles/implementer.js.map +1 -0
- package/dist/roles/planner.d.ts +2 -0
- package/dist/roles/planner.js +73 -0
- package/dist/roles/planner.js.map +1 -0
- package/dist/skills/deliver/skill.js +60 -20
- package/dist/skills/deliver/skill.js.map +1 -1
- package/dist/skills/design/skill.js +35 -28
- package/dist/skills/design/skill.js.map +1 -1
- package/dist/skills/note/skill.d.ts +2 -0
- package/dist/skills/note/skill.js +56 -0
- package/dist/skills/note/skill.js.map +1 -0
- package/dist/skills/plan/skill.js +75 -19
- package/dist/skills/plan/skill.js.map +1 -1
- package/package.json +4 -6
- package/dist/dimensions/role/build.js +0 -2
- package/dist/dimensions/role/build.js.map +0 -1
- package/dist/dimensions/role/converse.d.ts +0 -2
- package/dist/dimensions/role/converse.js +0 -2
- package/dist/dimensions/role/converse.js.map +0 -1
- package/dist/dimensions/role/curate.js +0 -2
- package/dist/dimensions/role/curate.js.map +0 -1
- package/dist/dimensions/role/diagnose.js +0 -2
- package/dist/dimensions/role/diagnose.js.map +0 -1
- package/dist/dimensions/role/document.d.ts +0 -2
- package/dist/dimensions/role/document.js +0 -2
- package/dist/dimensions/role/document.js.map +0 -1
- package/dist/dimensions/role/implement.d.ts +0 -2
- package/dist/dimensions/role/implement.js +0 -2
- package/dist/dimensions/role/implement.js.map +0 -1
- package/dist/dimensions/role/operate.d.ts +0 -2
- package/dist/dimensions/role/operate.js +0 -2
- package/dist/dimensions/role/operate.js.map +0 -1
- package/dist/dimensions/role/orchestrate.d.ts +0 -2
- package/dist/dimensions/role/orchestrate.js +0 -2
- package/dist/dimensions/role/orchestrate.js.map +0 -1
- package/dist/dimensions/role/plan.d.ts +0 -2
- package/dist/dimensions/role/plan.js +0 -2
- package/dist/dimensions/role/plan.js.map +0 -1
- package/dist/dimensions/role/research.d.ts +0 -2
- package/dist/dimensions/role/research.js +0 -2
- package/dist/dimensions/role/research.js.map +0 -1
- package/dist/dimensions/role/review.d.ts +0 -2
- package/dist/dimensions/role/review.js +0 -2
- package/dist/dimensions/role/review.js.map +0 -1
- package/dist/dimensions/role/test.d.ts +0 -2
- package/dist/dimensions/role/test.js +0 -2
- package/dist/dimensions/role/test.js.map +0 -1
- package/dist/plan-states.d.ts +0 -31
- package/dist/plan-states.js +0 -46
- package/dist/plan-states.js.map +0 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// A ROLE, AND THE FOLD THAT RESOLVES ONE.
|
|
3
|
+
//
|
|
4
|
+
// A role is a BUNDLE OF EXPECTED ASPECTS. In the world, naming someone an architect
|
|
5
|
+
// tells you how they reason, what they are accountable for, what they may decide and
|
|
6
|
+
// what they must delegate; the corpus adopts that account because it is what the word
|
|
7
|
+
// already means, and a corpus whose roles mean what roles mean needs no second
|
|
8
|
+
// vocabulary for it.
|
|
9
|
+
//
|
|
10
|
+
// Before this module, `role` was a scalar dimension over bare tokens, so the corpus
|
|
11
|
+
// could NAME a role and could not STATE one. Everything the name should have carried
|
|
12
|
+
// was retyped on every holder — `kino` and `architect` agreed on 19 of 22 dimensions
|
|
13
|
+
// by copying — and the duplication bought nothing, because what must be FULL is the
|
|
14
|
+
// TARGET (a harness reads a flat declaration, never a resolution chain) and the fold
|
|
15
|
+
// below runs at `select`, before `compose`. The emitted Target is exactly as flat as
|
|
16
|
+
// it was when every value was retyped by hand.
|
|
17
|
+
//
|
|
18
|
+
// A ROLE IS NOT A DIMENSION, AND IT IS NOT A BASE CLASS. It is made OF dimension
|
|
19
|
+
// values, so it cannot be one of them; and there is no lineage here — `architect` is
|
|
20
|
+
// a thin holder of the architect role exactly as `kino` is, with no parent pointer, no
|
|
21
|
+
// abstract cell nobody dispatches, and no chain to resolve. Two operands, one
|
|
22
|
+
// precedence rule, no ordering question.
|
|
23
|
+
//
|
|
24
|
+
// SINGULAR ARITY IS THE POINT, not a simplification. A role is the CONTRACT A PEER
|
|
25
|
+
// DISPATCHES AGAINST: when an architect hands a cut piece to a planner it reasons about
|
|
26
|
+
// the planner's role to know what comes back. A union of roles is a contract no
|
|
27
|
+
// dispatcher can reason about, and it would readmit role conflict — incompatible
|
|
28
|
+
// demands between two positions held at once — which singular arity deletes outright.
|
|
29
|
+
// The situational switch (the same practitioner architects here and implements there)
|
|
30
|
+
// is modelled by DISPATCH: the situation selects which agent runs.
|
|
31
|
+
//
|
|
32
|
+
// WHAT A HOLDER MAY NOT ESCAPE is exactly one thing: the role's own contract, the
|
|
33
|
+
// `role` dimension value stating ⟨reads, writes⟩ and everything that follows from the
|
|
34
|
+
// pair. It is inviolable BY CONSTRUCTION rather than by a marking — `Declared` omits
|
|
35
|
+
// the key, so there is no field to override and no rule to enforce. Every other aspect
|
|
36
|
+
// a role supplies is a DEFAULT: a scalar the holder may override, a set the holder may
|
|
37
|
+
// extend. A general constitutive/default marking was considered and rejected: with the
|
|
38
|
+
// contract folded into the role's own value, no second aspect needed protecting, and a
|
|
39
|
+
// mechanism with no live subject is structure that carries no load.
|
|
40
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
41
|
+
import { kebabToCamel } from '@cratylus/schema';
|
|
42
|
+
import { DIMENSION_NAMES, MANIFEST } from '../manifest.js';
|
|
43
|
+
/**
|
|
44
|
+
* `select(a) = hold(a) ⊕ declare(a)` — the two-operand fold, run at authoring time so
|
|
45
|
+
* the projected Target stays flat.
|
|
46
|
+
*
|
|
47
|
+
* `⊕` reads the manifest's own `arity`, so the precedence rule is stated once and
|
|
48
|
+
* cannot disagree with itself:
|
|
49
|
+
*
|
|
50
|
+
* · set → role members first, then the holder's own — EXTEND. A role-supplied
|
|
51
|
+
* member therefore survives every holder, which is why a set needs no
|
|
52
|
+
* inviolability marking: union already guarantees it.
|
|
53
|
+
* · scalar → the holder's value when the KEY IS PRESENT, else the role's — OVERRIDE.
|
|
54
|
+
* Present-with-`null` is an explicit suppression and is honoured as one;
|
|
55
|
+
* absent means "whatever the position says", which is the common case.
|
|
56
|
+
*
|
|
57
|
+
* A dimension neither operand states is `null` — omit-to-inherit, exactly as a
|
|
58
|
+
* hand-written vector spells it.
|
|
59
|
+
*
|
|
60
|
+
* `provenance.mark` NEVER folds: it is instance-bound, minted per agent at
|
|
61
|
+
* `create-agent`, and two agents sharing a mark are indistinguishable in the one place
|
|
62
|
+
* an operator reads them. It arrives on `declared` and leaves untouched.
|
|
63
|
+
*/
|
|
64
|
+
export function holds(role, declared) {
|
|
65
|
+
const resolved = {
|
|
66
|
+
name: declared.name,
|
|
67
|
+
description: declared.description,
|
|
68
|
+
archetype: declared.archetype,
|
|
69
|
+
provenance: declared.provenance,
|
|
70
|
+
};
|
|
71
|
+
if (declared.preamble !== undefined) {
|
|
72
|
+
resolved.preamble = declared.preamble;
|
|
73
|
+
}
|
|
74
|
+
const skills = [
|
|
75
|
+
...(role.skills ?? []),
|
|
76
|
+
...(declared.skills ?? []).filter((s) => !(role.skills ?? []).includes(s)),
|
|
77
|
+
];
|
|
78
|
+
if (skills.length > 0) {
|
|
79
|
+
resolved.skills = skills;
|
|
80
|
+
}
|
|
81
|
+
const roleVector = role.vector;
|
|
82
|
+
const declaredVector = declared;
|
|
83
|
+
for (const dimension of DIMENSION_NAMES) {
|
|
84
|
+
const field = kebabToCamel(dimension);
|
|
85
|
+
if (dimension === 'role') {
|
|
86
|
+
resolved[field] = role.sign;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const fromRole = roleVector[field];
|
|
90
|
+
const stated = field in declaredVector ? declaredVector[field] : undefined;
|
|
91
|
+
if (MANIFEST[dimension].arity === 'set') {
|
|
92
|
+
const base = Array.isArray(fromRole) ? fromRole : [];
|
|
93
|
+
const extension = Array.isArray(stated) ? stated : [];
|
|
94
|
+
const union = [...base, ...extension.filter((v) => !base.includes(v))];
|
|
95
|
+
resolved[field] = union.length > 0 ? union : null;
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
resolved[field] =
|
|
99
|
+
field in declaredVector ? (stated ?? null) : (fromRole ?? null);
|
|
100
|
+
}
|
|
101
|
+
// The ONE cast, and it is structural rather than hopeful: the loop is driven by
|
|
102
|
+
// `DIMENSION_NAMES`, so every dimension field of `Agent` is assigned exactly once.
|
|
103
|
+
return resolved;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=hold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hold.js","sourceRoot":"","sources":["../../src/roles/hold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { fileOps as fileOps_actions } from '../dimensions/actions/file-ops.js';
|
|
2
|
+
import { maintenance as maintenance_audienceAdaptation } from '../dimensions/audience-adaptation/maintenance.js';
|
|
3
|
+
import { handoff as handoff_autonomy } from '../dimensions/autonomy/handoff.js';
|
|
4
|
+
import { missionCommand } from '../dimensions/autonomy/mission-command.js';
|
|
5
|
+
import { softwareEngineering as softwareEngineering_capabilities } from '../dimensions/capabilities/software-engineering.js';
|
|
6
|
+
import { verificationTesting as verificationTesting_capabilities } from '../dimensions/capabilities/verification-testing.js';
|
|
7
|
+
import { cratylism as cratylism_engineeringPrinciples } from '../dimensions/engineering-principles/cratylism.js';
|
|
8
|
+
import { dry as dry_engineeringPrinciples } from '../dimensions/engineering-principles/dry.js';
|
|
9
|
+
import { firstPrinciples as firstPrinciples_engineeringPrinciples } from '../dimensions/engineering-principles/first-principles.js';
|
|
10
|
+
import { simplicity as simplicity_engineeringPrinciples } from '../dimensions/engineering-principles/simplicity.js';
|
|
11
|
+
import { plain as plain_formality } from '../dimensions/formality/plain.js';
|
|
12
|
+
import { correctnessOriented as correctnessOriented_framing } from '../dimensions/framing/correctness-oriented.js';
|
|
13
|
+
import { honesty as honesty_guardrails } from '../dimensions/guardrails/honesty.js';
|
|
14
|
+
import { correctionConsolidation as correctionConsolidation_learning } from '../dimensions/learning/correction-consolidation.js';
|
|
15
|
+
import { correctness as correctness_objective } from '../dimensions/objective/correctness.js';
|
|
16
|
+
import { react as react_reasoningStrategy } from '../dimensions/reasoning-strategy/react.js';
|
|
17
|
+
import { implementer as implementer_role } from '../dimensions/role/implementer.js';
|
|
18
|
+
import { satisfice as satisfice_satisficing } from '../dimensions/satisficing/satisfice.js';
|
|
19
|
+
import { executableTestOracle as executableTestOracle_selfEvaluation } from '../dimensions/self-evaluation/executable-test-oracle.js';
|
|
20
|
+
import { perception as perception_situationAwareness } from '../dimensions/situation-awareness/perception.js';
|
|
21
|
+
import { limitationDisclosure as limitationDisclosure_transparency } from '../dimensions/transparency/limitation-disclosure.js';
|
|
22
|
+
// THE BOTTOM RUNG, and the only one whose write layer is the substrate. It carries no
|
|
23
|
+
// workflow skill by design: a skill guides an agent through decisions it must make, and
|
|
24
|
+
// this position's decisions were made for it. It needs a unit of work, tools, and the
|
|
25
|
+
// discipline to stay inside the boundary.
|
|
26
|
+
export const implementerRole = {
|
|
27
|
+
sign: implementer_role,
|
|
28
|
+
vector: {
|
|
29
|
+
formality: plain_formality,
|
|
30
|
+
audienceAdaptation: maintenance_audienceAdaptation,
|
|
31
|
+
// `limitation-disclosure`: this position's entire value to the layer above is an
|
|
32
|
+
// honest account of what it could NOT establish. A clean report that hides an
|
|
33
|
+
// unproven leg is worse than a failure, because it is acted on.
|
|
34
|
+
transparency: limitationDisclosure_transparency,
|
|
35
|
+
autonomy: [missionCommand, handoff_autonomy],
|
|
36
|
+
objective: correctness_objective,
|
|
37
|
+
engineeringPrinciples: [
|
|
38
|
+
cratylism_engineeringPrinciples,
|
|
39
|
+
firstPrinciples_engineeringPrinciples,
|
|
40
|
+
simplicity_engineeringPrinciples,
|
|
41
|
+
dry_engineeringPrinciples,
|
|
42
|
+
],
|
|
43
|
+
guardrails: [honesty_guardrails],
|
|
44
|
+
capabilities: [
|
|
45
|
+
softwareEngineering_capabilities,
|
|
46
|
+
verificationTesting_capabilities,
|
|
47
|
+
],
|
|
48
|
+
actions: [fileOps_actions],
|
|
49
|
+
learning: correctionConsolidation_learning,
|
|
50
|
+
situationAwareness: perception_situationAwareness,
|
|
51
|
+
framing: correctnessOriented_framing,
|
|
52
|
+
reasoningStrategy: react_reasoningStrategy,
|
|
53
|
+
// `satisfice`, and it is the one aspect that must not be `optimize` here.
|
|
54
|
+
// Optimising past the spec IS the exceeding failure the contract names: this
|
|
55
|
+
// position builds to the contract and stops.
|
|
56
|
+
satisficing: satisfice_satisficing,
|
|
57
|
+
// The oracle is the spec's own criteria, executed. That is verification, and it is
|
|
58
|
+
// exactly right at this rung — it is only wrong when mistaken for validation.
|
|
59
|
+
selfEvaluation: executableTestOracle_selfEvaluation,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=implementer.js.map
|
|
@@ -0,0 +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,OAAO,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAChF,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,0CAA0C;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE;QACN,SAAS,EAAE,eAAe;QAC1B,kBAAkB,EAAE,8BAA8B;QAClD,iFAAiF;QACjF,8EAA8E;QAC9E,gEAAgE;QAChE,YAAY,EAAE,iCAAiC;QAC/C,QAAQ,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAC5C,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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { fileOps as fileOps_actions } from '../dimensions/actions/file-ops.js';
|
|
2
|
+
import { maintenance as maintenance_audienceAdaptation } from '../dimensions/audience-adaptation/maintenance.js';
|
|
3
|
+
import { handoff as handoff_autonomy } from '../dimensions/autonomy/handoff.js';
|
|
4
|
+
import { missionCommand } from '../dimensions/autonomy/mission-command.js';
|
|
5
|
+
import { planningDecomposition as planningDecomposition_capabilities } from '../dimensions/capabilities/planning-decomposition.js';
|
|
6
|
+
import { researchInvestigation as researchInvestigation_capabilities } from '../dimensions/capabilities/research-investigation.js';
|
|
7
|
+
import { cratylism as cratylism_engineeringPrinciples } from '../dimensions/engineering-principles/cratylism.js';
|
|
8
|
+
import { dry as dry_engineeringPrinciples } from '../dimensions/engineering-principles/dry.js';
|
|
9
|
+
import { firstPrinciples as firstPrinciples_engineeringPrinciples } from '../dimensions/engineering-principles/first-principles.js';
|
|
10
|
+
import { llmNative as llmNative_engineeringPrinciples } from '../dimensions/engineering-principles/llm-native.js';
|
|
11
|
+
import { mece as mece_engineeringPrinciples } from '../dimensions/engineering-principles/mece.js';
|
|
12
|
+
import { simplicity as simplicity_engineeringPrinciples } from '../dimensions/engineering-principles/simplicity.js';
|
|
13
|
+
import { plain as plain_formality } from '../dimensions/formality/plain.js';
|
|
14
|
+
import { decompositional as decompositional_framing } from '../dimensions/framing/decompositional.js';
|
|
15
|
+
import { honesty as honesty_guardrails } from '../dimensions/guardrails/honesty.js';
|
|
16
|
+
import { correctionConsolidation as correctionConsolidation_learning } from '../dimensions/learning/correction-consolidation.js';
|
|
17
|
+
import { thoroughness as thoroughness_objective } from '../dimensions/objective/thoroughness.js';
|
|
18
|
+
import { planAndSolve as planAndSolve_reasoningStrategy } from '../dimensions/reasoning-strategy/plan-and-solve.js';
|
|
19
|
+
import { planner as planner_role } from '../dimensions/role/planner.js';
|
|
20
|
+
import { optimize as optimize_satisficing } from '../dimensions/satisficing/optimize.js';
|
|
21
|
+
import { acceptanceCriteriaCheck as acceptanceCriteriaCheck_selfEvaluation } from '../dimensions/self-evaluation/acceptance-criteria-check.js';
|
|
22
|
+
import { comprehension as comprehension_situationAwareness } from '../dimensions/situation-awareness/comprehension.js';
|
|
23
|
+
import { provenanceAttribution as provenanceAttribution_transparency } from '../dimensions/transparency/provenance-attribution.js';
|
|
24
|
+
// THE MIDDLE RUNG. Holds `mission-command` and `handoff` but NOT `principal-self`: the
|
|
25
|
+
// boundary was drawn above it, and the contract's `⊄ writes C` is what makes that
|
|
26
|
+
// refusal structural rather than a matter of discipline.
|
|
27
|
+
//
|
|
28
|
+
// `system-design` is absent alongside `software-engineering` — this position neither
|
|
29
|
+
// designs nor builds. What it owns is the census and the cut-into-units.
|
|
30
|
+
export const plannerRole = {
|
|
31
|
+
sign: planner_role,
|
|
32
|
+
// The role declares one skill, `plan`, and is given plan's composition with it
|
|
33
|
+
// (`design`, `note`), so it reads the boundary it plans inside. `deliver` belongs
|
|
34
|
+
// to the rung ABOVE, which draws that boundary; the rung BELOW declares none at
|
|
35
|
+
// all, because an implementer's decisions are made for it by its spec.
|
|
36
|
+
skills: ['plan'],
|
|
37
|
+
vector: {
|
|
38
|
+
formality: plain_formality,
|
|
39
|
+
audienceAdaptation: maintenance_audienceAdaptation,
|
|
40
|
+
// `provenance-attribution`: a census is only worth what its sourcing is worth, and
|
|
41
|
+
// a count quoted without its denominator is indistinguishable from not having
|
|
42
|
+
// looked. Every finding carries where it came from and whether it was observed or
|
|
43
|
+
// inferred.
|
|
44
|
+
transparency: provenanceAttribution_transparency,
|
|
45
|
+
autonomy: [missionCommand, handoff_autonomy],
|
|
46
|
+
// `thoroughness`, not `delivery`: this position ships no artifact a user sees, and
|
|
47
|
+
// its failure mode is an incomplete census rather than a slow one.
|
|
48
|
+
objective: thoroughness_objective,
|
|
49
|
+
engineeringPrinciples: [
|
|
50
|
+
cratylism_engineeringPrinciples,
|
|
51
|
+
llmNative_engineeringPrinciples,
|
|
52
|
+
firstPrinciples_engineeringPrinciples,
|
|
53
|
+
simplicity_engineeringPrinciples,
|
|
54
|
+
dry_engineeringPrinciples,
|
|
55
|
+
mece_engineeringPrinciples,
|
|
56
|
+
],
|
|
57
|
+
guardrails: [honesty_guardrails],
|
|
58
|
+
capabilities: [
|
|
59
|
+
planningDecomposition_capabilities,
|
|
60
|
+
researchInvestigation_capabilities,
|
|
61
|
+
],
|
|
62
|
+
learning: correctionConsolidation_learning,
|
|
63
|
+
// `comprehension`, where the architect holds `projection`: this position's job is
|
|
64
|
+
// to establish what IS, exhaustively, not to anticipate what follows.
|
|
65
|
+
situationAwareness: comprehension_situationAwareness,
|
|
66
|
+
framing: decompositional_framing,
|
|
67
|
+
reasoningStrategy: planAndSolve_reasoningStrategy,
|
|
68
|
+
satisficing: optimize_satisficing,
|
|
69
|
+
actions: [fileOps_actions],
|
|
70
|
+
selfEvaluation: acceptanceCriteriaCheck_selfEvaluation,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/roles/planner.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,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,qBAAqB,IAAI,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AACnI,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,SAAS,IAAI,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAClH,OAAO,EAAE,IAAI,IAAI,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,UAAU,IAAI,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACpH,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACtG,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,YAAY,IAAI,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AACzF,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,kFAAkF;AAClF,yDAAyD;AACzD,EAAE;AACF,qFAAqF;AACrF,yEAAyE;AAEzE,MAAM,CAAC,MAAM,WAAW,GAAa;IACnC,IAAI,EAAE,YAAY;IAClB,+EAA+E;IAC/E,kFAAkF;IAClF,gFAAgF;IAChF,uEAAuE;IACvE,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,SAAS,EAAE,eAAe;QAC1B,kBAAkB,EAAE,8BAA8B;QAClD,mFAAmF;QACnF,8EAA8E;QAC9E,kFAAkF;QAClF,YAAY;QACZ,YAAY,EAAE,kCAAkC;QAChD,QAAQ,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAC5C,mFAAmF;QACnF,mEAAmE;QACnE,SAAS,EAAE,sBAAsB;QACjC,qBAAqB,EAAE;YACrB,+BAA+B;YAC/B,+BAA+B;YAC/B,qCAAqC;YACrC,gCAAgC;YAChC,yBAAyB;YACzB,0BAA0B;SAC3B;QACD,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,YAAY,EAAE;YACZ,kCAAkC;YAClC,kCAAkC;SACnC;QACD,QAAQ,EAAE,gCAAgC;QAC1C,kFAAkF;QAClF,sEAAsE;QACtE,kBAAkB,EAAE,gCAAgC;QACpD,OAAO,EAAE,uBAAuB;QAChC,iBAAiB,EAAE,8BAA8B;QACjD,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,cAAc,EAAE,sCAAsC;KACvD;CACF,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { design } from '../design/skill.js';
|
|
2
|
+
import { note } from '../note/skill.js';
|
|
2
3
|
import { plan } from '../plan/skill.js';
|
|
3
4
|
// WHERE THE TRUST DEFECT IS CLOSED. Acceptance keyed to a unit's own criteria is a
|
|
4
5
|
// closed loop: the author writes the unit, writes its criteria, and checks the return
|
|
@@ -16,8 +17,27 @@ import { plan } from '../plan/skill.js';
|
|
|
16
17
|
// rather than convenient: a check costing more than redoing the work is skipped, and
|
|
17
18
|
// no instruction survives that gradient. Naming discipline is what buys the cheapness —
|
|
18
19
|
// if the artifact spells its concept, two of the three are reading a name.
|
|
20
|
+
//
|
|
21
|
+
// WHERE THE READ GOES, AND WHY THE VERDICT DOES NOT FOLLOW IT. `validate ⊨ artifact` is
|
|
22
|
+
// right and it has a cost: reading artifacts is reading files — paths, identifiers, call
|
|
23
|
+
// sites — which is exactly the mechanical work the architect's contract calls a descent.
|
|
24
|
+
// Left there, the skill obliges the design-holder to descend on every wave, and by the
|
|
25
|
+
// third wave the design-holder is a code reviewer holding a lattice it can no longer
|
|
26
|
+
// carry. So `validate` is two operations under one name and they separate cleanly: the
|
|
27
|
+
// ASSAY (read the landed artifact, re-derive which concepts it realizes) is mechanical,
|
|
28
|
+
// substrate-bound and DELEGABLE; the JUDGMENT (what an unachieved concept means —
|
|
29
|
+
// rejection, an `amend(C)` because execution established a yield, or a design that was
|
|
30
|
+
// wrong) is keyed to C and is NOT.
|
|
31
|
+
//
|
|
32
|
+
// A THIRD PARTY DOES NOT REOPEN THE DEFECT THIS CELL CLOSES. The law forbids accepting
|
|
33
|
+
// on a claim from the party that BUILT the thing: one description, a closed loop. There
|
|
34
|
+
// are still two descriptions here and they are still held by different parties — the
|
|
35
|
+
// executor holds the spec and not the design, the assayer holds the design and not the
|
|
36
|
+
// spec. The artifact read the law demands still happens; it happens at the one site in
|
|
37
|
+
// the loop where reading substrate is the work rather than a descent, and what reaches
|
|
38
|
+
// the principal is in the only vocabulary the principal can check without descending.
|
|
19
39
|
const FORMAL_BLOCK = `C @ design
|
|
20
|
-
c
|
|
40
|
+
c @ design
|
|
21
41
|
anchor @ design
|
|
22
42
|
gloss @ design
|
|
23
43
|
factors @ design
|
|
@@ -25,74 +45,94 @@ denotes @ design
|
|
|
25
45
|
amend @ design
|
|
26
46
|
yield ≜ what execution established ∧ ¬ derivable from C
|
|
27
47
|
P @ plan
|
|
28
|
-
unit
|
|
48
|
+
unit @ plan
|
|
29
49
|
wave @ plan
|
|
30
50
|
frontier @ plan
|
|
31
51
|
realizes @ plan
|
|
52
|
+
advance, bind, close, bound, ready @ plan
|
|
53
|
+
show ⟨C⟩ @ design
|
|
54
|
+
show ⟨P ∧ unit⟩ @ plan
|
|
32
55
|
accept @ plan ⟨the MECHANICAL half⟩
|
|
33
56
|
outputs @ plan
|
|
34
57
|
artifact : P → ℘(path) ⟨what landed · the EVIDENCE⟩
|
|
35
58
|
r ≜ an executor's return
|
|
36
59
|
conform @ signify
|
|
37
60
|
executor : P ⇀ agent
|
|
38
|
-
self
|
|
61
|
+
self @ design
|
|
62
|
+
capture @ note
|
|
39
63
|
spells : path × anchor → 𝔹 ⟨identifiers · path · public surface bear the sign⟩
|
|
40
64
|
covers : path × ℘(C) → 𝔹 ⟨observable behaviour ≅ the factorization · nothing missing
|
|
41
65
|
∧ nothing extra⟩
|
|
42
66
|
sole : path × anchor → 𝔹 ⟨∄ other artifact realizing the same concept⟩
|
|
43
67
|
verify : P × return → 𝔹 ⟨the EXECUTOR's · built-it-right, against spec⟩
|
|
44
68
|
validate : P → 𝔹 ⟨the PRINCIPAL's · built-the-right-thing, against C⟩
|
|
69
|
+
assay : artifact → ℘(C) ⟨which concepts the artifact ACTUALLY realizes · the REVERSE of plan⟩
|
|
70
|
+
assayer : unit ⇀ agent ⟨role = assayer · holds C ∧ ¬ holds spec(unit)⟩
|
|
71
|
+
achieved : unit → 𝔹 ⟨the three questions, answered against the assay⟩
|
|
72
|
+
unachieved : unit → ℘(⟨c, uncovered-factor, locus⟩) ⟨what crosses UPWARD⟩
|
|
45
73
|
defect ≜ ⟨symptom, locus, provenance⟩
|
|
46
74
|
impedes : defect × P → 𝔹
|
|
47
75
|
cost : act → effort
|
|
48
|
-
|
|
76
|
+
file(d) ≜ capture(d) ⟨its topic names the unit as \`u of plan p\` · beside the path ∴ it blocks nothing⟩
|
|
49
77
|
electable ≜ { P | ¬terminal(P) ∧ ¬occupied(P) }
|
|
50
78
|
terminal : P → 𝔹
|
|
51
|
-
commit @ design
|
|
52
|
-
accepts @ design
|
|
53
79
|
|
|
54
80
|
∀ unit, r : ¬conform(r) ⇒ ¬accept(unit)(r)
|
|
55
|
-
|
|
81
|
+
achieved(unit) ⇔ realizes(unit) ∈ assay(artifact(unit))
|
|
82
|
+
∧ spells(artifact(unit), realizes(unit))
|
|
56
83
|
∧ covers(artifact(unit), factors(denotes(realizes(unit))))
|
|
57
84
|
∧ sole(artifact(unit), realizes(unit))
|
|
85
|
+
unachieved(unit) = ∅ ⇔ achieved(unit)
|
|
86
|
+
unachieved ⊨ C-typed ⟨it crosses in C's OWN vocabulary · mechanism-prose ⟨naming · structure ·
|
|
87
|
+
test-quality⟩ ⇒ REFUSE ∵ it descends the principal it was dispatched to spare⟩
|
|
88
|
+
locus ⊨ ROUTED ∧ ¬ read ⟨an ADDRESS so the redispatch has one · a citation is substrate, and
|
|
89
|
+
handing the principal substrate is the same defect in smaller pieces⟩
|
|
90
|
+
assay ⊨ artifact ⟨the ASSAYER reads the files · the ONE site in the loop where
|
|
91
|
+
substrate-reading is ¬ a descent⟩
|
|
92
|
+
assayer ⊥ executor ⟨TWO descriptions, two witnesses : executor holds spec ∧ ¬ holds C ·
|
|
93
|
+
assayer holds C ∧ ¬ holds spec⟩
|
|
94
|
+
validate(unit) ≜ unachieved(unit) = ∅ ⟨the principal JUDGES the assay ∧ ¬ re-reads the
|
|
95
|
+
artifact · the READ is delegable · the VERDICT is ¬ delegable ∵ keyed to C, which the
|
|
96
|
+
principal alone amends⟩
|
|
58
97
|
validate ⊨ artifact ⟨NEVER r · a summary is a CLAIM ∧ the file is EVIDENCE ·
|
|
59
98
|
an acceptance that read only the return has accepted nothing⟩
|
|
60
99
|
validate ⊨ self ⟨¬ delegable · the executor cannot judge its own conformance ∵ it
|
|
61
100
|
holds the spec ∧ ¬ the design⟩
|
|
62
101
|
verify ⊥ validate ⟨two checks, two witnesses · neither substitutes ; an executor's
|
|
63
102
|
green suite proves the EXECUTOR's own assertion ∧ nothing about the design⟩
|
|
64
|
-
judge(unit) ≜ verify(unit, r) ∧ validate(unit) ⇒ advance(unit) ; ¬ ⇒ r rejected
|
|
65
|
-
executor(unit) ∧
|
|
103
|
+
judge(unit) ≜ verify(unit, r) ∧ validate(unit) ⇒ advance(unit) ⟨the acceptance⟩ ; ¬ ⇒ r rejected
|
|
104
|
+
back to executor(unit) ∧ ¬advance(unit)
|
|
66
105
|
⟨r lands VERBATIM ≺ any verdict on it · the loss mode is read-reason-discard,
|
|
67
106
|
and it takes everything when a run dies mid-judgement⟩
|
|
68
107
|
⟨fan-in is as order-sensitive as fan-out : ∀ unit dispatched, confirm executor(unit)
|
|
69
108
|
RETURNED · outputs(unit) exist ≠ executor(unit) returned⟩
|
|
109
|
+
¬validate(unit) ⇒ redispatch(executor(unit), unachieved(unit)) ⟨the flaw handed down is
|
|
110
|
+
CONCEPTUAL ∧ ¬ a review⟩
|
|
70
111
|
cost(validate) < cost(rebuild) ⟨else the gradient points at skipping · the cheapness
|
|
71
112
|
is BOUGHT by conform(anchor) ∴ naming discipline is the verification budget⟩
|
|
72
113
|
¬spells ⇒ REFUSE ≺ any behavioural read ⟨the traceability arrow breaks at the cheapest
|
|
73
114
|
place it will ever be visible⟩
|
|
74
115
|
¬covers ∧ extra ⇒ a second concept smuggled in unnamed ⇒ amend(C) ∨ REFUSE
|
|
75
116
|
¬sole ⇒ duplication ⟨the observable signature of a vision that fragmented⟩
|
|
76
|
-
dispatch(P) ≜ ∀ unit ∈ frontier(P) ⟨
|
|
117
|
+
dispatch(P) ≜ ∀ unit ∈ frontier(P) ⟨ready(unit)⟩ concurrently ⟨advance(unit) ∧
|
|
77
118
|
executor(unit) runs spec(unit)⟩ ; pre bound(P) ∧ ⊨ disjoint-outputs
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
two commits · fused, the agent adjusts the concept its artifact failed ∧ declares
|
|
81
|
-
success ⟨evidence MANUFACTURED⟩⟩
|
|
119
|
+
∀ c : ∄ unit ⟨realizes(unit) = anchor(c)⟩ ⇒ SURFACE ⟨a concept nothing builds is design agreed ∧
|
|
120
|
+
unbuilt · the reverse orphan is plan's⟩
|
|
82
121
|
impedes(d, unit) ⇔ d standing ⇒ ∄ r : accept(unit)(r)
|
|
83
122
|
impedes(d, unit) ⇒ fix(d) ⟨a regression in the path is repaired, ¬ surfaced⟩
|
|
84
123
|
¬impedes(d, unit) ⇒ file(d) ∧ ¬fix(d) ⟨a defect BESIDE the path is filed, ¬ chased⟩
|
|
85
124
|
cost(file) < cost(fix) ⟨else the gradient points at chasing · the load-bearing law⟩
|
|
86
|
-
∃ P : ¬terminal(P) ⇒
|
|
125
|
+
∃ P : ¬terminal(P) ⇒ ∃ P : bound(P) ⟨WIP = 1, held by bind : it returns the plan bound before ·
|
|
126
|
+
finish before starting⟩
|
|
87
127
|
elect ≜ in-flight ≻ gating ≻ operator-intent ⟨lexicographic⟩
|
|
88
|
-
terminal(P) ⇒
|
|
89
|
-
that is not work⟩ ; C persists ⟨plans come ∧ go ABOVE the design⟩
|
|
90
|
-
deliver ≜ bind → dispatch(wave) → verify ⟨executor⟩ →
|
|
91
|
-
judge → amend(C) ⇔ yield → advance →
|
|
128
|
+
terminal(P) ⇒ close(P) ⟨obligation ¬ permission · an unclosed terminal plan is WIP
|
|
129
|
+
that is not work · a closed plan stays readable⟩ ; C persists ⟨plans come ∧ go ABOVE the design⟩
|
|
130
|
+
deliver ≜ bind → dispatch(wave) → verify ⟨executor⟩ → assay ⟨assayer, on artifact⟩ →
|
|
131
|
+
validate ⟨self, on the assay⟩ → judge → amend(C) ⇔ yield → advance → close`;
|
|
92
132
|
export const deliver = {
|
|
93
133
|
name: 'deliver',
|
|
94
134
|
description: `use this skill to execute a plan and ACCEPT its results — dispatch a wave of units to executors, then validate each landed artifact against the design rather than against the executor's report, and integrate. Reach for it whenever delegated work comes back. Validation is three cheap questions — does the artifact spell its concept's name, does its behaviour cover that concept's factorization exactly, and does anything else already realize it — read off the files themselves, never off a summary. It also carries the conduct of the work: one plan bound at a time, finish before starting, repair what blocks the path and merely file what sits beside it.`,
|
|
95
135
|
formalBlock: FORMAL_BLOCK,
|
|
96
|
-
composition: () => [design, plan],
|
|
136
|
+
composition: () => [design, plan, note],
|
|
97
137
|
};
|
|
98
138
|
//# sourceMappingURL=skill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/deliver/skill.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,mFAAmF;AACnF,sFAAsF;AACtF,uFAAuF;AACvF,qFAAqF;AACrF,iFAAiF;AACjF,sFAAsF;AACtF,mFAAmF;AACnF,EAAE;AACF,sFAAsF;AACtF,oFAAoF;AACpF,kEAAkE;AAClE,EAAE;AACF,qFAAqF;AACrF,qFAAqF;AACrF,wFAAwF;AACxF,2EAA2E;
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/deliver/skill.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,mFAAmF;AACnF,sFAAsF;AACtF,uFAAuF;AACvF,qFAAqF;AACrF,iFAAiF;AACjF,sFAAsF;AACtF,mFAAmF;AACnF,EAAE;AACF,sFAAsF;AACtF,oFAAoF;AACpF,kEAAkE;AAClE,EAAE;AACF,qFAAqF;AACrF,qFAAqF;AACrF,wFAAwF;AACxF,2EAA2E;AAC3E,EAAE;AACF,wFAAwF;AACxF,yFAAyF;AACzF,yFAAyF;AACzF,uFAAuF;AACvF,qFAAqF;AACrF,uFAAuF;AACvF,wFAAwF;AACxF,kFAAkF;AAClF,uFAAuF;AACvF,mCAAmC;AACnC,EAAE;AACF,uFAAuF;AACvF,wFAAwF;AACxF,qFAAqF;AACrF,uFAAuF;AACvF,uFAAuF;AACvF,uFAAuF;AACvF,sFAAsF;AAEtF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA4F6E,CAAC;AAEnG,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,gpBAAgpB;IAC7pB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;CACxC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// THE DURATIVE HALF. `plan` and `deliver` are per-effort
|
|
2
|
-
//
|
|
1
|
+
// THE DURATIVE HALF. `plan` and `deliver` are per-effort; this cell is the one that
|
|
2
|
+
// persists across every effort, and that asymmetry is the whole point of the trio.
|
|
3
3
|
//
|
|
4
4
|
// It exists because the corpus could DO long-horizon work and could only THINK in
|
|
5
5
|
// single sittings: every conceptual cell (conceptualize · signify · materialize ·
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// operation rather than a re-reading of the claim. That statement is this lattice.
|
|
17
17
|
const FORMAL_BLOCK = `anchor ≜ a concept's canonical sign @ signify
|
|
18
18
|
gloss ≜ what a concept IS ⟨one line · reconstruction-grade⟩
|
|
19
|
-
C ≜ the concept lattice ⟨the project's durative
|
|
19
|
+
C ≜ the concept lattice ⟨the project's durative model⟩
|
|
20
20
|
c ≜ a concept ⟨c ∈ C⟩
|
|
21
21
|
concept ≜ ⟨ anchor(c) , gloss(c) , factors(c) ⟩
|
|
22
22
|
factors : C → ℘(C) ⟨what c decomposes into⟩
|
|
@@ -28,52 +28,59 @@ denotes : anchor ⇀ C
|
|
|
28
28
|
conform @ signify
|
|
29
29
|
Piece ≜ a cut piece ⟨what a planner is handed⟩
|
|
30
30
|
cut : C → ℘(℘(C))
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
amends : commit × C → 𝔹
|
|
38
|
-
accepts : commit → 𝔹 ⟨the commit carries an acceptance @ deliver⟩
|
|
39
|
-
realizes : unit ⇀ anchor @ plan
|
|
31
|
+
history(c) ≜ every version ∧ retraction of c, in order ⟨resident · ¬ deleted⟩
|
|
32
|
+
settled(c) ⇔ c has exactly one current version
|
|
33
|
+
live(c) ⇔ settled(c) ∧ that version ¬ a retraction
|
|
34
|
+
withdrawn(c) ⇔ settled(c) ∧ c retracted
|
|
35
|
+
diverged(c) ⇔ ¬settled(c) ⟨concurrent sessions wrote c differently ∧ merged · state, ¬ error⟩
|
|
36
|
+
incoherent(C) ⇔ a law below broken across concepts by a merge ∧ kept on each branch
|
|
40
37
|
yield ≜ what execution established ∧ ¬ derivable from C @ deliver
|
|
41
|
-
self ≜ the principal ⟨the design-holder · ¬ delegable⟩
|
|
38
|
+
self ≜ the principal ⟨the architect · the design-holder · ¬ delegable⟩
|
|
42
39
|
author : C ⇀ self
|
|
40
|
+
show(C) ≜ \`scripts/design.mjs show [<concept>]\` ↦ C root to primitive ∨ one c in full
|
|
41
|
+
define(c) ≜ \`scripts/design.mjs define <anchor> --gloss <g> [--factors <anchor>]…\`
|
|
42
|
+
supersede(c) ≜ \`scripts/design.mjs amend <concept> [--anchor <a>] [--gloss <g>] [--factors <anchor>]…\` ⟨a new version of the SAME c · amending a withdrawn c reinstates it⟩
|
|
43
|
+
retract(c) ≜ \`scripts/design.mjs retract <concept>\` ⟨c withdrawn · no successor version⟩
|
|
44
|
+
reconcile(c) ≜ \`scripts/design.mjs reconcile <concept> [--anchor <a>] [--gloss <g>] [--factors <anchor>]…\` ⟨one version superseding every current version of c⟩
|
|
45
|
+
trace(c) ≜ \`scripts/design.mjs trace <concept>\` ↦ ⟨history(c), closure(c), blast(c)⟩ ⟨how c came to be · what it stands on · what stands on it⟩
|
|
43
46
|
|
|
44
|
-
∀
|
|
47
|
+
∀ define ∨ supersede ∨ retract ∨ reconcile : \`--author <who> --reason <why> --cause <what caused it>\` ⟨a set-valued flag repeats, one member each⟩
|
|
48
|
+
∀ c : ∃! anchor(c) ∧ ∀ a ∈ dom(denotes) : ∃! denotes(a) ⟨one live concept per anchor⟩
|
|
49
|
+
withdrawn(c) ⇒ anchor(c) held until supersede(c) reinstates it
|
|
45
50
|
∀ c : conform(anchor(c)) ∧ gloss(c) ≠ ∅
|
|
46
|
-
∀ c : closure(c) finite ⟨factors acyclic ∴ a lattice, ¬ a graph⟩
|
|
51
|
+
∀ c : closure(c) finite ⟨factors acyclic ∴ a lattice, ¬ a graph⟩ ∧ ∀ f ∈ factors(c) : live(f)
|
|
52
|
+
∃ d : live(d) ∧ c ∈ factors(d) ⇒ ¬ retract(c) ⟨what live concepts factor on cannot be withdrawn⟩
|
|
47
53
|
amend(C) ≜ supersede ⟨∄ overwrite ; a live c is NEVER edited in place⟩
|
|
48
54
|
⟨the protection is ¬ a rule about honesty : an editable lattice lets the agent
|
|
49
55
|
adjust the concept its artifact failed, ∴ acceptance-against-C goes CIRCULAR
|
|
50
56
|
with one extra step ∧ the loop manufactures its own evidence⟩
|
|
51
|
-
supersede(c
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
∀
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
supersede(c) ⇒ the prior version stays in history(c) ⟨residence, ¬ deletion : trace(c) reads
|
|
58
|
+
the history without a VCS query ∴ the lattice is self-describing⟩
|
|
59
|
+
c becomes another concept ⇒ retract(c) ∧ define(c') ⟨¬ supersede : a new version is the SAME concept⟩
|
|
60
|
+
∀ define ∨ supersede ∨ retract ∨ reconcile : reason ≠ ∅ ⟨attribution ∧ order are what make
|
|
61
|
+
retroactive justification DETECTABLE : the amendment postdates the artifact it excuses⟩
|
|
62
|
+
reconcile ⊨ amend(C) ∧ ¬ an acceptance ⟨THE separation · a reconciliation never shares a write
|
|
63
|
+
with an acceptance it bears on ; fused, the second witness collapses into the first⟩
|
|
64
|
+
diverged(c) ⇒ reconcile(c) ⟨an ordinary write on c refuses⟩
|
|
65
|
+
incoherent(C) ⇒ repaired by ordinary writes, one at a time
|
|
66
|
+
reconcile ⊨ self ⟨reconciliation of the design is the architect's alone⟩
|
|
67
|
+
planner ∨ implementer ∨ assayer ⊨ diverged ∨ incoherent ⇒ report ∧ ¬ resolve
|
|
58
68
|
blast(c) ≜ { d ∈ C | c ∈ closure(d) } ⟨DERIVED, ¬ guessed · what the normal form buys⟩
|
|
59
69
|
churn(primitive) high ⇒ conceptualization wrong ⟨primitives near-stable · composites move⟩
|
|
60
70
|
⋃ cut(C) = C ∧ ∀ s₁, s₂ ∈ cut(C) : s₁ ≠ s₂ ⇒ s₁ ∩ s₂ = ∅
|
|
61
71
|
∀ s ∈ cut(C) : ∀ c ∈ s : closure(c) ⊆ s ⟨a piece is CLOSED ∴ plannable alone⟩
|
|
62
72
|
cut ⊨ self ⟨the ASSIGNMENT of concepts to pieces is the design-holder's ; a planner
|
|
63
73
|
receiving a piece may ¬ redraw it · a boundary it cannot plan is SURFACED⟩
|
|
64
|
-
∀ s ∈ cut(C) : pin(s) = digest(s) ⟨a piece carries the digest it was derived from ∴
|
|
65
|
-
an amendment mid-flight surfaces as DRIFT, ¬ executes silently⟩
|
|
66
74
|
yield ≠ ∅ ⇒ amend(C) ⟨intake at INCEPTION ∧ live, never at retirement : an obligation
|
|
67
75
|
standing between an agent and closing its work always loses · measured 0 of 25⟩
|
|
68
|
-
∀ c : ∄ unit ⟨realizes(unit) = anchor(c)⟩ ⇒ SURFACE ⟨a concept nothing builds is design agreed ∧
|
|
69
|
-
unbuilt · the reverse orphan is plan's⟩
|
|
70
76
|
design ⊨ ¬ delegable ⟨a subagent starts blank ∧ a design authored by several
|
|
71
77
|
fragments BY CONSTRUCTION⟩
|
|
72
|
-
design ≜ conceptualize(intent) → signify(·) → materialize(·) →
|
|
78
|
+
design ≜ conceptualize(intent) → signify(·) → materialize(·) → define(c) ∨ supersede(c) → C → cut(C)`;
|
|
73
79
|
export const design = {
|
|
74
80
|
name: 'design',
|
|
75
|
-
description: `use this skill to build and hold a project's DURATIVE conceptual model — the one artifact that outlives every plan: each concept's anchor, gloss and factorization, amended only by append-only supersession, and cut into closed pieces a planner can take. Reach for it FIRST on any long-horizon effort, before any work is decomposed, and again whenever execution establishes something the model does not yet hold. It is what acceptance is judged against, so without it verification has no referent and degrades into re-reading the executor's own claim.`,
|
|
81
|
+
description: `use this skill to build and hold a project's DURATIVE conceptual model — the one artifact that outlives every plan: each concept's anchor, gloss and factorization, amended only by append-only supersession, and cut into closed pieces a planner can take. 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 establishes something the model does not yet hold. It is what acceptance is judged against, so without it verification has no referent and degrades into re-reading the executor's own claim.`,
|
|
76
82
|
formalBlock: FORMAL_BLOCK,
|
|
83
|
+
runtime: { capability: 'design' },
|
|
77
84
|
composition: () => [],
|
|
78
85
|
};
|
|
79
86
|
//# sourceMappingURL=skill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/design/skill.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/design/skill.ts"],"names":[],"mappings":"AAEA,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,iFAAiF;AACjF,iFAAiF;AACjF,mFAAmF;AAEnF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qGA6DmG,CAAC;AAEzH,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,wsBAAwsB;IACrtB,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;IACjC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// THE NOTEBOOK'S OWN RULES, and no one else's. This cell routes the reader's notebook
|
|
2
|
+
// intents to the `note` capability and is the one home of the three kinds: the
|
|
3
|
+
// runtime carries a kind as a label it never interprets, so nothing else spells them.
|
|
4
|
+
//
|
|
5
|
+
// It rectifies an earlier ledger skill kept outside this corpus. That one addressed a
|
|
6
|
+
// note by a sequential number, grew a note in place by appending "derived" material
|
|
7
|
+
// beside a frozen definition, treated a withdrawal as one more kind, and taught its
|
|
8
|
+
// reader the mechanics of how the ledger was stored. Here a note is addressed by its
|
|
9
|
+
// title, every change is a whole new version, withdrawal is a verb, and the reader meets
|
|
10
|
+
// only notes. No kind is privileged to block: any live note that names a plan or unit
|
|
11
|
+
// owes a ruling, whatever its kind.
|
|
12
|
+
//
|
|
13
|
+
// COMPOSES NOTHING. The `runtime` capability below is the real coupling; its verbs take
|
|
14
|
+
// the notebook's words and nothing borrowed.
|
|
15
|
+
const NOTE_BLOCK = `note ≜ show → capture → revise → retract → reconcile
|
|
16
|
+
route ≜ \`scripts/note.mjs <verb>\` ⟨runtime-bound : every verb reaches the note capability⟩
|
|
17
|
+
verb ∈ { show · capture · revise · retract · reconcile }
|
|
18
|
+
notebook ≜ the set of notes ⟨ideas, questions ∧ decisions ¬ yet canonical⟩
|
|
19
|
+
n ≜ a note ⟨n ∈ notebook⟩
|
|
20
|
+
title(n) ≜ the note's name
|
|
21
|
+
kind(n) ∈ { idea · question · decision } ⟨a label the runtime never interprets⟩
|
|
22
|
+
topic(n) ≜ what the note is about ⟨the notebook groups by kind, then topic⟩
|
|
23
|
+
body(n) ≜ the note's whole statement
|
|
24
|
+
blocks(n) ≜ the plans ∧ units n names ⟨a plan by its name · a unit as \`u of plan p\`, bare u only where the unit's name is its own⟩
|
|
25
|
+
live(n) ≜ n captured ∧ ¬ retracted
|
|
26
|
+
versions(n) ≜ the competing versions of n a merge left standing
|
|
27
|
+
diverged(n) ⇔ versions(n) disagree
|
|
28
|
+
owed(n) ⇔ live(n) ∧ blocks(n) ≠ ∅ ⟨an owed ruling⟩
|
|
29
|
+
holders(t) ≜ { n | live(n) ∧ title(n) = t } ∪ { n | diverged(n) ∧ ∃ v ∈ versions(n) : title(v) = t }
|
|
30
|
+
incoherent(t) ⇔ |holders(t)| > 1 ⟨a merge left title t held by more than one note ; show prints each holder with its identity beside t⟩
|
|
31
|
+
by ≜ \`--author <who> --reason <why> --cause <what caused it>\` ⟨every write carries it⟩
|
|
32
|
+
|
|
33
|
+
show(n?) ≜ \`scripts/note.mjs show [<title>]\` ↦ owed rulings, diverged notes ∧ incoherent titles first, then the notebook by kind, then topic ∨ n in full ⟨every version of a diverged n · every holder of an incoherent title⟩
|
|
34
|
+
capture(n) ≜ \`scripts/note.mjs capture <title> --kind <k> --topic <t> --body <b> [--blocks <plan or unit>]… <by>\`
|
|
35
|
+
revise(n) ≜ \`scripts/note.mjs revise <title> [--title <new title>] [--kind <k>] [--topic <t>] [--body <b>] [--blocks <plan or unit>]… <by>\` ⟨a field left out carries over ; \`--blocks ''\` ↦ blocks(n) = ∅⟩
|
|
36
|
+
retract(n) ≜ \`scripts/note.mjs retract <title> <by>\`
|
|
37
|
+
reconcile(n) ≜ \`scripts/note.mjs reconcile <title> [--title …] [--kind …] [--topic …] [--body …] [--blocks …]… <by>\` ↦ one version over every version ⟨each field the versions disagree on is given⟩
|
|
38
|
+
|
|
39
|
+
a note's title is its name ⟨one live note per title⟩ ∴ n is addressed by title(n) as show prints it ⟨∄ matching on a fragment of its body⟩
|
|
40
|
+
anyone ⊨ capture ∧ revise ∧ retract ∧ reconcile
|
|
41
|
+
capture ⊨ ∄ admission bar ⟨the note's shape ∧ one live note per title suffice⟩
|
|
42
|
+
changed(n) ⇒ revise(n) ⟨¬ edited in place ; \`--title\` retitles n⟩
|
|
43
|
+
owed(n) ⇒ n blocks every x ∈ blocks(n) ⟨whatever its kind⟩ until retract(n) ∨ revise(n) ↦ blocks(n) = ∅
|
|
44
|
+
diverged(n) ⇒ n blocks ⋃ { blocks(v) | v ∈ versions(n) } until reconcile(n)
|
|
45
|
+
diverged(n) ⇒ reconcile(n) ≺ every other write to n
|
|
46
|
+
incoherent(t) ⇒ for ONE h ∈ holders(t) ⟨h named exactly as show prints it, identity included⟩ : live(h) ⇒ revise(h) with \`--title\` ∨ retract(h) · diverged(h) ⇒ reconcile(h) ; until ¬ incoherent(t)
|
|
47
|
+
reconcile ↾ diverged(n) ⟨one note's competing versions ; never a title merely held by more than one note⟩
|
|
48
|
+
verb ∉ { show · capture · revise · retract · reconcile } ⇒ ⊥ ⟨loud⟩`;
|
|
49
|
+
export const note = {
|
|
50
|
+
name: 'note',
|
|
51
|
+
description: `use this skill to keep the project's notebook of notes not yet canonical, whenever one surfaces in the work or to see what is still owed: show the whole notebook or one note, capture a note under its title with a kind, topic and body, revise it (retitle it too), retract it, or reconcile one a merge left in competing versions; where a merge left one title held by two notes, repair one holder, named as show prints it: retitle or retract a live one, reconcile a diverged one. Anyone may capture, with no admission bar, and any live note that names a plan or unit blocks it until it is retracted or revised to block nothing.`,
|
|
52
|
+
formalBlock: NOTE_BLOCK,
|
|
53
|
+
runtime: { capability: 'note' },
|
|
54
|
+
composition: () => [],
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/skills/note/skill.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,+EAA+E;AAC/E,sFAAsF;AACtF,EAAE;AACF,sFAAsF;AACtF,oFAAoF;AACpF,oFAAoF;AACpF,qFAAqF;AACrF,yFAAyF;AACzF,sFAAsF;AACtF,oCAAoC;AACpC,EAAE;AACF,wFAAwF;AACxF,6CAA6C;AAE7C,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAiCoE,CAAC;AAExF,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,knBAAknB;IAC/nB,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;IAC/B,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;CACtB,CAAC"}
|