@really-knows-ai/foundry 3.3.3 → 3.3.4
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.3.4] - 2026-05-18
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **Corrected law/validator framing across all skills and agent.** Laws are
|
|
8
|
+
rules — they are never "deterministic" or "subjective." Validators are
|
|
9
|
+
optional scripts attached to laws that check script-checkable elements
|
|
10
|
+
during quench. Appraisers evaluate every law, de-prioritising elements
|
|
11
|
+
already covered by passed validators. Removed all `[deterministic|subjective]`
|
|
12
|
+
law labelling from add-flow's plan template and add-law's Understand phase.
|
|
13
|
+
|
|
3
14
|
## [3.3.3] - 2026-05-15
|
|
4
15
|
|
|
5
16
|
### Fixed
|
package/dist/agents/foundry.md
CHANGED
|
@@ -17,6 +17,17 @@ Foundry is a framework for governed AI artefact generation. Your role is to help
|
|
|
17
17
|
- Only create configuration during the Build phase, after the user confirms the plan.
|
|
18
18
|
- Report outcomes as Foundry concepts, files created or updated, validations run, and commits made.
|
|
19
19
|
|
|
20
|
+
## Foundry Concepts
|
|
21
|
+
|
|
22
|
+
- **Artefact type** — the kind of file a flow produces (e.g. a haiku poem, a blog post, a code review). Defined by file patterns and appraiser configuration.
|
|
23
|
+
- **Law** — a single rule that artefacts of a given type must satisfy. Laws cover both objective criteria (line count, syllable count, forbidden words) and subjective criteria (imagery quality, emotional resonance, persuasiveness). Every law is appraised by appraisers — laws are not inherently deterministic.
|
|
24
|
+
- **Validator** — an optional script attached to a law. Runs during quench to check script-checkable elements without an LLM. Outputs NDJSON with file/text per violation. Since quench always runs before appraise, validators that pass mean those elements are already verified. A law may have zero, one, or multiple validators. Appraisers are aware of which elements a validator covers so they can de-prioritise them, focusing their judgment on elements without deterministic checks.
|
|
25
|
+
- **Appraiser** — a personality or perspective that reads all laws for an artefact type and judges artefacts against them. Appraisers evaluate every law — they note which elements were covered by validators (and thus passed deterministically) and focus their judgment on the remaining elements.
|
|
26
|
+
- **Cycle** — a pipeline stage (assay → forge → quench → appraise → human-appraise) that produces artefacts of one type.
|
|
27
|
+
- **Flow** — ties cycles together. Defines which cycles start the pipeline.
|
|
28
|
+
|
|
29
|
+
When discussing laws with the user, say they are "rules" or "criteria." Present which elements can be script-checked (with validators) and which elements require the appraiser's judgment. Never label a law itself as "deterministic" or "subjective."
|
|
30
|
+
|
|
20
31
|
## Authoring Posture
|
|
21
32
|
|
|
22
33
|
When the user asks to create or change a flow, load the relevant authoring skill first (`add-flow`, `add-artefact-type`, `add-appraiser`, `add-law`, `add-cycle`, or the memory authoring skills). Each skill follows a wizard protocol: Understand → Plan → Confirm → Build. Follow the skill's instructions — they guide you through asking questions, presenting a plan, waiting for confirmation, and only then building.
|
|
@@ -45,7 +45,7 @@ Extract or ask for the flow purpose, expected final artefact, output location, a
|
|
|
45
45
|
|
|
46
46
|
**What the flow produces**: Ask about the artefact type the flow should produce. Determine whether it needs a new artefact type or whether an existing one fits.
|
|
47
47
|
|
|
48
|
-
**Quality constraints**: Ask about the laws that govern quality. For each law: what it checks, whether it applies globally or to a specific artefact type, and
|
|
48
|
+
**Quality constraints**: Ask about the laws that govern quality. For each law: what it checks, whether it applies globally or to a specific artefact type, and which elements can be checked with validators.
|
|
49
49
|
|
|
50
50
|
**Appraisers**: Ask about the appraisers that evaluate quality. Determine how many are needed and whether existing appraisers fit or new ones are needed.
|
|
51
51
|
|
|
@@ -65,7 +65,7 @@ Create missing dependencies in validation order:
|
|
|
65
65
|
|
|
66
66
|
1. **Artefact types** (no sub-dependencies): For each new artefact type, gather `id`, `name`, `filePatterns`, `description`, and whether it needs type-specific laws or appraiser configuration. Context object: `{id, name, filePatterns, description, appraisers?}`.
|
|
67
67
|
|
|
68
|
-
2. **Laws** (may reference artefact types): For each new law, gather `id`, `name`, `description`, `passing`, `failing`, the target (global file or type-specific with `typeId`), and
|
|
68
|
+
2. **Laws** (may reference artefact types): For each new law, gather `id`, `name`, `description`, `passing`, `failing`, the target (global file or type-specific with `typeId`), and which elements can be checked with validators. Determine whether validators are needed. Context object: `{id, name, description, passing, failing, target: {kind, file|typeId}, validators?}`.
|
|
69
69
|
|
|
70
70
|
3. **Appraisers** (may reference models): For each new appraiser, gather `id`, `name`, `description`, and optional `model` preference. Context object: `{id, name, description, model?}`.
|
|
71
71
|
|
|
@@ -86,8 +86,8 @@ Flow: <id> — <name>
|
|
|
86
86
|
Artefact Types:
|
|
87
87
|
· <id> (<name>) — <filePatterns>
|
|
88
88
|
Laws:
|
|
89
|
-
· <id> — <description>
|
|
90
|
-
validators: <validator-id> (if
|
|
89
|
+
· <id> — <description>
|
|
90
|
+
validators: <validator-id> (if any)
|
|
91
91
|
Appraisers:
|
|
92
92
|
· <id> — <description>
|
|
93
93
|
Cycles:
|
|
@@ -53,20 +53,20 @@ If global, ask for the `file` (the filename under `foundry/laws/`, e.g. `rules.m
|
|
|
53
53
|
|
|
54
54
|
**Fields**: Ask for `id`, `name`, `description`, `passing` criteria, and `failing` criteria one at a time.
|
|
55
55
|
|
|
56
|
-
**
|
|
56
|
+
**Validators**: For each law, identify which elements can be validated deterministically:
|
|
57
57
|
|
|
58
|
-
- **
|
|
59
|
-
- **
|
|
58
|
+
- **Script-checkable** — can be checked by a validator without human or LLM judgment. Examples: line count, syllable count, word minimum, forbidden patterns, file existence, formatting rules. These become `validators:` entries in the law. Since quench runs before appraise, validators that pass mean those elements are already verified — the appraiser is aware of this and can de-prioritise them, focusing judgment on elements without validators.
|
|
59
|
+
- **Requires judgment** — needs the appraiser's evaluation. Examples: imagery quality, emotional resonance, persuasiveness, aesthetic appeal, clarity of argument. The law's prose alone guides the appraiser — no validator entry needed.
|
|
60
60
|
|
|
61
|
-
Walk the user through
|
|
61
|
+
Walk the user through which elements of the law can be validated deterministically:
|
|
62
62
|
|
|
63
|
-
> This law covers [summary]. Here's
|
|
64
|
-
> -
|
|
65
|
-
> -
|
|
63
|
+
> This law covers [summary]. Here's which parts can be checked with validators:
|
|
64
|
+
> - Validatable: [list elements that can be script-checked]
|
|
65
|
+
> - Requires judgment: [list elements the appraiser evaluates]
|
|
66
66
|
>
|
|
67
|
-
> Shall I add validators for the
|
|
67
|
+
> Shall I add validators for the script-checkable elements?
|
|
68
68
|
|
|
69
|
-
For each
|
|
69
|
+
For each script-checkable element, write a standalone `.mjs` script next to the artefacts it validates (e.g. `foundry/artefacts/<type>/check-line-count.mjs`) and reference it in the command (e.g. `node foundry/artefacts/<type>/check-line-count.mjs {files}`). Place validators alongside the artefacts so they colocate with what they validate. Prefer Node.js built-ins and libraries already in the project; hand-rolled heuristics are fragile — use available packages instead of writing custom validation logic from scratch.
|
|
70
70
|
|
|
71
71
|
**Validators**: Ask about `validators` (optional) — offer to create one or skip.
|
|
72
72
|
|
|
@@ -85,7 +85,7 @@ For each deterministic element, write a standalone `.mjs` script next to the art
|
|
|
85
85
|
|
|
86
86
|
### 2. Plan
|
|
87
87
|
|
|
88
|
-
Present a structured summary: law id, name, description, passing/failing criteria, target (global or type-specific with typeId),
|
|
88
|
+
Present a structured summary: law id, name, description, passing/failing criteria, target (global or type-specific with typeId), and validators (which elements are checked deterministically). Ask: "Does this capture what you want, or should we adjust the wording?" Iterate until the user is satisfied.
|
|
89
89
|
|
|
90
90
|
### 3. Confirm
|
|
91
91
|
|
|
@@ -164,6 +164,6 @@ When reviewing an artefact, check the feedback history for `#human` tagged items
|
|
|
164
164
|
|
|
165
165
|
- You do not write files — feedback output goes through `foundry_feedback_add` and `foundry_feedback_resolve`.
|
|
166
166
|
- You do not revise the artefact.
|
|
167
|
-
- You do not
|
|
167
|
+
- You do not run deterministic validators — that is the quench skill's job.
|
|
168
168
|
- You do not filter out feedback because only one appraiser raised it — one is enough.
|
|
169
169
|
- You do not register artefacts — that happens automatically via the orchestrator's internal finalize step.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@really-knows-ai/foundry",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.4",
|
|
4
4
|
"description": "A skill-driven framework for governed artefact generation with AI coding tools. Define your own artefact types, laws, and flows — Foundry handles the forge → quench → appraise pipeline with deterministic routing, quality gates, and iterative refinement.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/.opencode/plugins/foundry.js",
|