concord-engine 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/cli.js +15 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,10 +20,12 @@ parallel run:
|
|
|
20
20
|
Concord Engine answers it by comparison, never by a model, and refuses the
|
|
21
21
|
second answer at the moment it is written.
|
|
22
22
|
|
|
23
|
-
[](https://github.com/harsh-chandak/concord-engine/blob/main/assets/brag.gif)
|
|
24
24
|
|
|
25
25
|
<sub>Recorded, not drawn. `brag/record.mjs` runs the real CLI and captures its
|
|
26
|
-
output verbatim; `brag/video.html` only renders what was captured
|
|
26
|
+
output verbatim; `brag/video.html` only renders what was captured. The loop
|
|
27
|
+
shows the refusal arc — the full run also writes the contract, binds it and
|
|
28
|
+
briefs four workers first.</sub>
|
|
27
29
|
|
|
28
30
|
## What a decision is
|
|
29
31
|
|
package/dist/cli.js
CHANGED
|
@@ -158,7 +158,21 @@ async function main() {
|
|
|
158
158
|
// decision from the first release while `decide` recorded it silently, so
|
|
159
159
|
// which interface you used decided whether the product's central promise
|
|
160
160
|
// held. --force records anyway, for the deliberate case.
|
|
161
|
-
|
|
161
|
+
// A deliberate override is the other way through, and it has to be a real
|
|
162
|
+
// one: the id must already be in the log. That also stops a decision
|
|
163
|
+
// naming the id it is about to be given, which superseded it out of force
|
|
164
|
+
// the moment it was written — "recorded", exit 0, and not in force.
|
|
165
|
+
if (values.supersedes && !all.some((d) => d.id === values.supersedes)) {
|
|
166
|
+
console.error(`${red("refused")} --supersedes ${values.supersedes}: no decision has that id.`);
|
|
167
|
+
console.error(` \`concord-engine check --json\` lists the ids in force.`);
|
|
168
|
+
return 1;
|
|
169
|
+
}
|
|
170
|
+
// An override replaces what it names, so that decision is no longer in
|
|
171
|
+
// force to be contradicted. This is the same reading detect() takes
|
|
172
|
+
// through activeDecisions(), which is why record_decision on the MCP side
|
|
173
|
+
// never had this bug and `decide` did.
|
|
174
|
+
const inForce = activeDecisions(all).filter((d) => d.id !== values.supersedes);
|
|
175
|
+
const clash = findContradiction(inForce, values.kind, values.subject, parseValue(values.value));
|
|
162
176
|
if (clash && !values.force) {
|
|
163
177
|
const spec = kindSpec(values.kind);
|
|
164
178
|
console.error(`${red("refused")} this contradicts a decision already in force.`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "concord-engine",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Scale parallelism. Preserve alignment. A fleet of coding agents builds one task in parallel against a spec contract, and a decision that contradicts one already in force is refused \u2014 deterministically, with no model in the decision path.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-agents",
|