@izagood/avcs 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/api/repo.d.ts +99 -0
- package/dist/api/repo.d.ts.map +1 -1
- package/dist/api/repo.js +371 -0
- package/dist/api/repo.js.map +1 -1
- package/dist/cli.js +44 -0
- package/dist/cli.js.map +1 -1
- package/dist/hub/hubClient.d.ts +18 -0
- package/dist/hub/hubClient.d.ts.map +1 -1
- package/dist/hub/hubClient.js +40 -0
- package/dist/hub/hubClient.js.map +1 -1
- package/dist/hub/hubServer.d.ts +5 -2
- package/dist/hub/hubServer.d.ts.map +1 -1
- package/dist/hub/hubServer.js +98 -3
- package/dist/hub/hubServer.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +39 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/objects/types.d.ts +54 -5
- package/dist/objects/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ Every meaningful thing is a content-addressed, append-only object. Code is a *pr
|
|
|
48
48
|
| `release` | A signed, provenance-bearing checkpoint — replaces a tag |
|
|
49
49
|
| `policy` | The deterministic merge rules the reducer is parameterized by |
|
|
50
50
|
|
|
51
|
-
…plus `blob` for raw content and the governance objects (`lease`, `membership`, `protection`, `promotion`, `redaction`, `override`, `approval`, `line`) used by the multi-machine and security phases.
|
|
51
|
+
…plus `blob` for raw content and the governance objects (`lease`, `membership`, `protection`, `promotion`, `redaction`, `override`, `approval`, `line`, `integration`) used by the multi-machine and security phases.
|
|
52
52
|
|
|
53
53
|
## Conflict resolution levels
|
|
54
54
|
|
|
@@ -84,7 +84,7 @@ The reducer and policy engine are the foundation; the higher phases build distri
|
|
|
84
84
|
- **Phase 11 — external contributions:** quarantine tier + `promote` + untrusted-CI gate
|
|
85
85
|
- **Phase 12 — security:** `redact` (byte-eviction of leaked secrets, oid preserved), break-glass `override`, forward-only rollback
|
|
86
86
|
|
|
87
|
-
Branches become **views**, commits become **checkpoints**, tags become **releases**. Agents drive AVCS through a first-class **MCP server** (
|
|
87
|
+
Branches become **views**, commits become **checkpoints**, tags become **releases**. Agents drive AVCS through a first-class **MCP server** (26 tools); humans use the **CLI**. Since Phase 14 the hub runs an **integration queue** (`avcs submit`, `POST /integrate`): a stale submission is never told "head moved — pull first" — the hub re-reduces the frontier union on the submitter's behalf, and the outcome is always a verdict (`advanced` | `conflict` repair packet | `needs_evidence` — one validation run, never a redo | `queued`). Next up (designed, not yet implemented): live convergence (long-poll events, sync daemon, contention early-warning) and an MCP-first agent surface (`avcs.sync.land`, ContextPack) — see [docs/17](docs/17-sync-convergence.md) and [docs/18](docs/18-mcp-first-class.md). The behavior is pinned by a 247-test contract suite (`test/*.test.ts`, all green) and `tsc` is clean.
|
|
88
88
|
|
|
89
89
|
## Install
|
|
90
90
|
|
|
@@ -224,7 +224,7 @@ AVCS_REPO=$(pwd) npm run mcp # = node --experimental-strip-types src/mcp/se
|
|
|
224
224
|
| `src/release/sbom.ts` | SBOM generation (Phase 6) |
|
|
225
225
|
| `src/hub/hubServer.ts`, `hubClient.ts` | Multi-machine sync hub (Phase 7) |
|
|
226
226
|
| `src/api/repo.ts` | High-level facade (shared by CLI, demo, MCP) |
|
|
227
|
-
| `src/mcp/server.ts` | Agent-facing MCP interface (
|
|
227
|
+
| `src/mcp/server.ts` | Agent-facing MCP interface (26 tools) |
|
|
228
228
|
| `src/cli.ts` | Human-facing inspection/release CLI |
|
|
229
229
|
| `src/demo.ts` | End-to-end scenario |
|
|
230
230
|
|
package/dist/api/repo.d.ts
CHANGED
|
@@ -7,6 +7,62 @@ import { type LeaseConflict } from "../concurrency/lease.ts";
|
|
|
7
7
|
import { Metrics } from "../observe/metrics.ts";
|
|
8
8
|
import { type Logger } from "../observe/logger.ts";
|
|
9
9
|
import type { Actor, AnyObject, EvidenceKind, EvidenceResult, Intent, IntentKind, Line, Membership, Operation, OperationBody, OperationTarget, Policy, Protection, RoleName, ScopeRef, View, ViewQuery, WorkLease } from "../objects/types.ts";
|
|
10
|
+
/**
|
|
11
|
+
* Phase 14 (docs/17 §14.2): the four-way contract of `submitIntegration`. There is no
|
|
12
|
+
* "pull and redo" outcome by design — ops are append-only, so no work is ever redone:
|
|
13
|
+
* - advanced — the head moved to an integrated checkpoint containing your work
|
|
14
|
+
* - conflict — a minimal repair packet (the ONLY human/agent decision point)
|
|
15
|
+
* - needs_evidence — run validation ONCE against the integrated tree, resubmit the ticket
|
|
16
|
+
* - queued — another ticket holds the needs_evidence reservation; retry later
|
|
17
|
+
* - rejected — a hard gate (role/approvals/causal-incompleteness) refused it
|
|
18
|
+
*/
|
|
19
|
+
export type IntegrationResult = {
|
|
20
|
+
verdict: "advanced";
|
|
21
|
+
head: string;
|
|
22
|
+
integration: string;
|
|
23
|
+
} | {
|
|
24
|
+
verdict: "conflict";
|
|
25
|
+
packet: ConflictPacket;
|
|
26
|
+
integration: string;
|
|
27
|
+
} | {
|
|
28
|
+
verdict: "needs_evidence";
|
|
29
|
+
integratedCheckpoint: string;
|
|
30
|
+
treeHash: string;
|
|
31
|
+
requiredChecks: EvidenceKind[];
|
|
32
|
+
missingLocally: string[];
|
|
33
|
+
ticketId: string;
|
|
34
|
+
integration: string;
|
|
35
|
+
} | {
|
|
36
|
+
verdict: "rejected";
|
|
37
|
+
reason: string;
|
|
38
|
+
} | {
|
|
39
|
+
verdict: "queued";
|
|
40
|
+
behindTicket: string;
|
|
41
|
+
retryAfterMs: number;
|
|
42
|
+
};
|
|
43
|
+
/** The minimal repair packet a `conflict` verdict carries (docs/17 §14.2 step 5):
|
|
44
|
+
* per-key counterpart ops + prior human rulings on the same key (decision memory), so
|
|
45
|
+
* an agent can prepare a precedent-based decision proposal without re-reading the repo. */
|
|
46
|
+
export interface ConflictPacket {
|
|
47
|
+
conflicts: {
|
|
48
|
+
key: string;
|
|
49
|
+
reason: string;
|
|
50
|
+
/** The contending ops on this key (oid + who/why), for a targeted repair. */
|
|
51
|
+
options: {
|
|
52
|
+
op: string;
|
|
53
|
+
actor: string;
|
|
54
|
+
purpose: string;
|
|
55
|
+
}[];
|
|
56
|
+
/** Overlapping line regions when this is a text-merge conflict (merge3 shape). */
|
|
57
|
+
regions?: import("../merge/merge3.ts").ConflictRegion[];
|
|
58
|
+
/** Prior rulings on the same key — reuse instead of re-litigating (docs/17 §14.2). */
|
|
59
|
+
priorDecisions: {
|
|
60
|
+
reason: string;
|
|
61
|
+
futurePolicy?: string;
|
|
62
|
+
decidedBy: string;
|
|
63
|
+
}[];
|
|
64
|
+
}[];
|
|
65
|
+
}
|
|
10
66
|
/**
|
|
11
67
|
* How AVCS history relates to a co-located git repo (docs/14). The git tree git tracks
|
|
12
68
|
* is always the materialized *projection* — a derived artifact AVCS can recompute. What
|
|
@@ -269,6 +325,27 @@ export declare class Repo {
|
|
|
269
325
|
finalized: false;
|
|
270
326
|
reason: string;
|
|
271
327
|
}>;
|
|
328
|
+
/**
|
|
329
|
+
* Submit a draft checkpoint to the integration queue (docs/17 §14.2). Runs under the
|
|
330
|
+
* same `finalize:<view>` lock as finalize — the existing mkdir lock IS the serializer
|
|
331
|
+
* (no separate queue structure in v1). The outcome is always one of the four verdicts;
|
|
332
|
+
* "pull and redo" does not exist on any path.
|
|
333
|
+
*
|
|
334
|
+
* Idempotency: an `advanced` ticket replays its recorded verdict forever. Non-terminal
|
|
335
|
+
* verdicts (conflict/needs_evidence/rejected/expired) re-evaluate on resubmission —
|
|
336
|
+
* the world legitimately changes under them (a decision lands, evidence arrives, a
|
|
337
|
+
* missing object syncs), and a frozen replay would wedge the ticket.
|
|
338
|
+
*/
|
|
339
|
+
submitIntegration(args: {
|
|
340
|
+
view: string;
|
|
341
|
+
checkpoint: string;
|
|
342
|
+
by: string;
|
|
343
|
+
ticketId?: string;
|
|
344
|
+
signWith?: {
|
|
345
|
+
keyId: string;
|
|
346
|
+
privateKey: string;
|
|
347
|
+
};
|
|
348
|
+
}): Promise<IntegrationResult>;
|
|
272
349
|
/**
|
|
273
350
|
* Redact (tombstone) a blob's bytes — for a leaked secret. Admin-only. The oid is
|
|
274
351
|
* preserved so all references and the treeHash stay valid; the plaintext is evicted
|
|
@@ -355,6 +432,28 @@ export declare class Repo {
|
|
|
355
432
|
removeRemote(name: string): Promise<boolean>;
|
|
356
433
|
/** All configured remotes, name → config. */
|
|
357
434
|
listRemotes(): Promise<Record<string, RemoteConfig>>;
|
|
435
|
+
/** Public remote-name → hub-URL resolution (a literal URL passes through). */
|
|
436
|
+
remoteUrl(nameOrUrl: string): Promise<string>;
|
|
437
|
+
/**
|
|
438
|
+
* Submit a draft checkpoint to a REMOTE hub's integration queue (Phase 14, docs/17
|
|
439
|
+
* §14.4), with capability detection: a hub advertising `integrate` on GET /version
|
|
440
|
+
* gets the queue path (one judgment, no redo); an older hub falls back to the legacy
|
|
441
|
+
* finalize + pull retry funnel (bounded) — the exact loop the queue exists to kill,
|
|
442
|
+
* kept only for backward compatibility.
|
|
443
|
+
*/
|
|
444
|
+
integrateHub(remoteOrUrl: string, args: {
|
|
445
|
+
view: string;
|
|
446
|
+
checkpoint: string;
|
|
447
|
+
by: string;
|
|
448
|
+
ticketId?: string;
|
|
449
|
+
signWith?: {
|
|
450
|
+
keyId: string;
|
|
451
|
+
privateKey: string;
|
|
452
|
+
};
|
|
453
|
+
}): Promise<{
|
|
454
|
+
verdict: IntegrationResult["verdict"];
|
|
455
|
+
legacy?: boolean;
|
|
456
|
+
} & Record<string, unknown>>;
|
|
358
457
|
/**
|
|
359
458
|
* Bidirectional convergence with a named remote (default "origin"): pull what the hub
|
|
360
459
|
* has that we lack, then push what we have that it lacks. Pure object gossip — union
|
package/dist/api/repo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/api/repo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/api/repo.ts"],"names":[],"mappings":"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"}
|
package/dist/api/repo.js
CHANGED
|
@@ -775,6 +775,336 @@ export class Repo {
|
|
|
775
775
|
}
|
|
776
776
|
return result;
|
|
777
777
|
}
|
|
778
|
+
// ── integration queue (Phase 14, docs/17) ──────────────────────────────────
|
|
779
|
+
// The end of "head moved — pull and re-reduce first": since ops are an append-only
|
|
780
|
+
// union and reduce is deterministic, a stale submission is never rejected for
|
|
781
|
+
// staleness — the queue re-reduces the frontier UNION on the submitter's behalf.
|
|
782
|
+
// This is a repo API (not hub-only): it also kills the local multi-process funnel.
|
|
783
|
+
/** Causal closure (op oids) of a frontier. Missing objects are skipped — callers gate
|
|
784
|
+
* completeness separately via #missingCausalDeps. */
|
|
785
|
+
async #closureOf(heads) {
|
|
786
|
+
const seen = new Set();
|
|
787
|
+
const stack = [...heads];
|
|
788
|
+
while (stack.length) {
|
|
789
|
+
const id = stack.pop();
|
|
790
|
+
if (seen.has(id))
|
|
791
|
+
continue;
|
|
792
|
+
seen.add(id);
|
|
793
|
+
if (!(await this.store.has(id)))
|
|
794
|
+
continue;
|
|
795
|
+
const op = await this.store.get(id);
|
|
796
|
+
for (const d of op.causalDeps)
|
|
797
|
+
if (!seen.has(d))
|
|
798
|
+
stack.push(d);
|
|
799
|
+
}
|
|
800
|
+
return seen;
|
|
801
|
+
}
|
|
802
|
+
#queueRel(view) {
|
|
803
|
+
return join("queue", `${view}.json`);
|
|
804
|
+
}
|
|
805
|
+
async #readReservation(view) {
|
|
806
|
+
const raw = await this.store.readAux(this.#queueRel(view));
|
|
807
|
+
if (!raw)
|
|
808
|
+
return null;
|
|
809
|
+
try {
|
|
810
|
+
const r = JSON.parse(raw.toString("utf8"));
|
|
811
|
+
return r && typeof r.ticketId === "string" ? r : null;
|
|
812
|
+
}
|
|
813
|
+
catch {
|
|
814
|
+
return null;
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
async #writeReservation(view, resv) {
|
|
818
|
+
await this.store.writeAux(this.#queueRel(view), JSON.stringify(resv) + "\n");
|
|
819
|
+
}
|
|
820
|
+
/** Record an Integration verdict (append-only audit) and point the idempotency ref at it. */
|
|
821
|
+
async #recordIntegration(fields) {
|
|
822
|
+
const integ = { type: "integration", ...fields, createdAt: new Date().toISOString() };
|
|
823
|
+
const oid = await this.store.put(integ);
|
|
824
|
+
await this.store.setRef(`integration:${fields.view}:${fields.ticketId}`, oid);
|
|
825
|
+
return oid;
|
|
826
|
+
}
|
|
827
|
+
/** Author a checkpoint AT an integrated frontier (never `materialize(view)` — §1-(A):
|
|
828
|
+
* a view materialize would sweep in un-submitted third-party ops). */
|
|
829
|
+
async #authorIntegratedCheckpoint(view, integrated, evidence, evidenceBinding, summary) {
|
|
830
|
+
const v = await this.getView(view);
|
|
831
|
+
const cp = {
|
|
832
|
+
type: "checkpoint",
|
|
833
|
+
viewOid: v.oid,
|
|
834
|
+
headOps: integrated.headOps,
|
|
835
|
+
treeHash: integrated.treeHash,
|
|
836
|
+
policyOid: (await this.store.getRef("policy")),
|
|
837
|
+
materializerVersion: MATERIALIZER_VERSION,
|
|
838
|
+
evidence,
|
|
839
|
+
...(evidenceBinding && Object.keys(evidenceBinding).length ? { evidenceBinding } : {}),
|
|
840
|
+
status: integrated.conflicts.length === 0 ? "verified" : "draft",
|
|
841
|
+
summary,
|
|
842
|
+
createdAt: new Date().toISOString(),
|
|
843
|
+
};
|
|
844
|
+
return this.store.put(cp);
|
|
845
|
+
}
|
|
846
|
+
/** Verified (non-agent, canonically ordered) evidence bound to exactly `treeHash`. */
|
|
847
|
+
async #boundEvidenceFor(treeHash) {
|
|
848
|
+
const out = {};
|
|
849
|
+
const all = this.#verifiedEvidence(await this.store.collect("evidence")).sort((a, b) => (a.createdAt < b.createdAt ? -1 : a.createdAt > b.createdAt ? 1 : 0) ||
|
|
850
|
+
((a.oid ?? "") < (b.oid ?? "") ? -1 : 1));
|
|
851
|
+
for (const ev of all) {
|
|
852
|
+
if (ev.producedBy.kind === "ai_agent")
|
|
853
|
+
continue;
|
|
854
|
+
if (ev.treeHash === treeHash)
|
|
855
|
+
out[ev.kind] = ev.result;
|
|
856
|
+
}
|
|
857
|
+
return out;
|
|
858
|
+
}
|
|
859
|
+
/** Keys touched by a set of op oids (contention surface of a delta). */
|
|
860
|
+
async #keysOfOps(oids) {
|
|
861
|
+
const keys = new Set();
|
|
862
|
+
for (const oid of oids) {
|
|
863
|
+
if (!(await this.store.has(oid)))
|
|
864
|
+
continue;
|
|
865
|
+
const op = await this.store.get(oid);
|
|
866
|
+
for (const k of keysOf(op))
|
|
867
|
+
keys.add(k);
|
|
868
|
+
}
|
|
869
|
+
return keys;
|
|
870
|
+
}
|
|
871
|
+
/**
|
|
872
|
+
* Submit a draft checkpoint to the integration queue (docs/17 §14.2). Runs under the
|
|
873
|
+
* same `finalize:<view>` lock as finalize — the existing mkdir lock IS the serializer
|
|
874
|
+
* (no separate queue structure in v1). The outcome is always one of the four verdicts;
|
|
875
|
+
* "pull and redo" does not exist on any path.
|
|
876
|
+
*
|
|
877
|
+
* Idempotency: an `advanced` ticket replays its recorded verdict forever. Non-terminal
|
|
878
|
+
* verdicts (conflict/needs_evidence/rejected/expired) re-evaluate on resubmission —
|
|
879
|
+
* the world legitimately changes under them (a decision lands, evidence arrives, a
|
|
880
|
+
* missing object syncs), and a frozen replay would wedge the ticket.
|
|
881
|
+
*/
|
|
882
|
+
async submitIntegration(args) {
|
|
883
|
+
const view = args.view;
|
|
884
|
+
const ticketId = args.ticketId ?? sha256hex(`${view}:${args.checkpoint}`);
|
|
885
|
+
const result = await this.store.withLock(`finalize:${view}`, async () => {
|
|
886
|
+
// 1. Idempotency — a terminal success replays as-is (safe resubmission).
|
|
887
|
+
const priorRef = await this.store.getRef(`integration:${view}:${ticketId}`);
|
|
888
|
+
if (priorRef && (await this.store.has(priorRef))) {
|
|
889
|
+
const prior = await this.store.get(priorRef);
|
|
890
|
+
if (prior.verdict === "advanced") {
|
|
891
|
+
return { verdict: "advanced", head: prior.resultCheckpoint, integration: priorRef };
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
// 2. Reservation — one in-flight needs_evidence ticket at a time (TTL-bounded).
|
|
895
|
+
let resv = await this.#readReservation(view);
|
|
896
|
+
if (resv && Date.parse(resv.expiresAt) <= Date.now()) {
|
|
897
|
+
// Expired: audit it and let the queue move on (docs/17 §14 contract test).
|
|
898
|
+
await this.#recordIntegration({
|
|
899
|
+
view, ticketId: resv.ticketId, submittedCheckpoint: resv.submittedCheckpoint,
|
|
900
|
+
baseHead: await this.protectedHead(view), resultCheckpoint: resv.integratedCheckpoint,
|
|
901
|
+
verdict: "expired", reason: `needs_evidence reservation expired at ${resv.expiresAt}`, by: resv.by,
|
|
902
|
+
});
|
|
903
|
+
await this.#writeReservation(view, null);
|
|
904
|
+
resv = null;
|
|
905
|
+
}
|
|
906
|
+
if (resv && resv.ticketId !== ticketId) {
|
|
907
|
+
return { verdict: "queued", behindTicket: resv.ticketId, retryAfterMs: 1000 + Math.floor(Math.random() * 500) };
|
|
908
|
+
}
|
|
909
|
+
// 3. Causal completeness — never judge (or advance to) a partially-synced tree.
|
|
910
|
+
const cp = await this.store.get(args.checkpoint);
|
|
911
|
+
const missing = await this.#missingCausalDeps(cp.headOps);
|
|
912
|
+
if (missing.length) {
|
|
913
|
+
await this.#recordIntegration({ view, ticketId, submittedCheckpoint: args.checkpoint, baseHead: await this.protectedHead(view), verdict: "rejected", reason: `incomplete causal history: ${missing.length} object(s) missing`, by: args.by });
|
|
914
|
+
return { verdict: "rejected", reason: `incomplete causal history: ${missing.length} object(s) missing — push them first (${missing.slice(0, 5).join(", ")}${missing.length > 5 ? ", …" : ""})` };
|
|
915
|
+
}
|
|
916
|
+
// Role gate (same as finalize).
|
|
917
|
+
const prot = await this.getProtection(view);
|
|
918
|
+
if (prot && !(await this.hasRole(args.by, prot.finalizeRole ?? "maintainer"))) {
|
|
919
|
+
const reason = `${args.by} lacks role ${prot.finalizeRole ?? "maintainer"} to integrate ${view}`;
|
|
920
|
+
await this.#recordIntegration({ view, ticketId, submittedCheckpoint: args.checkpoint, baseHead: await this.protectedHead(view), verdict: "rejected", reason, by: args.by });
|
|
921
|
+
return { verdict: "rejected", reason };
|
|
922
|
+
}
|
|
923
|
+
// 4. Integration reduce — the frontier UNION via the materializeAt path (NEVER
|
|
924
|
+
// materialize(view): §1-(A), un-submitted third-party ops must stay out).
|
|
925
|
+
const baseHead = await this.protectedHead(view);
|
|
926
|
+
const curHeads = baseHead ? (await this.store.get(baseHead)).headOps : [];
|
|
927
|
+
const unionHeads = [...new Set([...curHeads, ...cp.headOps])];
|
|
928
|
+
const integrated = await this.materializeAt(unionHeads);
|
|
929
|
+
const subClosure = await this.#closureOf(cp.headOps);
|
|
930
|
+
const fastForward = curHeads.every((h) => subClosure.has(h));
|
|
931
|
+
// 5. Conflicts — the ONLY outcome that needs a human/agent decision, and it
|
|
932
|
+
// arrives as a minimal repair packet with decision memory, not "pull and redo".
|
|
933
|
+
if (integrated.conflicts.length > 0) {
|
|
934
|
+
const packet = { conflicts: [] };
|
|
935
|
+
for (const c of integrated.conflicts) {
|
|
936
|
+
const fc = integrated.fileConflicts.find((f) => `file:${f.file}` === c.key);
|
|
937
|
+
packet.conflicts.push({
|
|
938
|
+
key: c.key,
|
|
939
|
+
reason: c.reason,
|
|
940
|
+
options: c.options.map((o) => ({ op: o.opOid, actor: o.actor, purpose: o.purpose })),
|
|
941
|
+
...(fc ? { regions: fc.regions } : {}),
|
|
942
|
+
priorDecisions: await this.recallDecisions(c.key),
|
|
943
|
+
});
|
|
944
|
+
}
|
|
945
|
+
const integration = await this.#recordIntegration({
|
|
946
|
+
view, ticketId, submittedCheckpoint: args.checkpoint, baseHead,
|
|
947
|
+
verdict: "conflict", conflictKeys: packet.conflicts.map((c) => c.key), by: args.by,
|
|
948
|
+
});
|
|
949
|
+
return { verdict: "conflict", packet, integration };
|
|
950
|
+
}
|
|
951
|
+
// 6. Gates: approvals carry from the SUBMITTED checkpoint to the integrated one
|
|
952
|
+
// (GitHub counts PR approvals independently of the merge commit — same isomorphism).
|
|
953
|
+
let carriedApprovals;
|
|
954
|
+
if (prot && (prot.requiredApprovals > 0 || prot.requireOwnerApproval)) {
|
|
955
|
+
const verdicts = await this.#approvalVerdicts(args.checkpoint);
|
|
956
|
+
if ([...verdicts.values()].includes("request_changes")) {
|
|
957
|
+
const reason = "changes requested by a reviewer";
|
|
958
|
+
await this.#recordIntegration({ view, ticketId, submittedCheckpoint: args.checkpoint, baseHead, verdict: "rejected", reason, by: args.by });
|
|
959
|
+
return { verdict: "rejected", reason };
|
|
960
|
+
}
|
|
961
|
+
const approvers = [...verdicts].filter(([, v]) => v === "approve").map(([id]) => id);
|
|
962
|
+
if (approvers.length < prot.requiredApprovals) {
|
|
963
|
+
const reason = `needs ${prot.requiredApprovals} approval(s), have ${approvers.length}`;
|
|
964
|
+
await this.#recordIntegration({ view, ticketId, submittedCheckpoint: args.checkpoint, baseHead, verdict: "rejected", reason, by: args.by });
|
|
965
|
+
return { verdict: "rejected", reason };
|
|
966
|
+
}
|
|
967
|
+
if (prot.requireOwnerApproval) {
|
|
968
|
+
let owner = false;
|
|
969
|
+
for (const id of approvers)
|
|
970
|
+
if (await this.hasRole(id, "maintainer")) {
|
|
971
|
+
owner = true;
|
|
972
|
+
break;
|
|
973
|
+
}
|
|
974
|
+
if (!owner) {
|
|
975
|
+
const reason = "requires an owner (maintainer+) approval";
|
|
976
|
+
await this.#recordIntegration({ view, ticketId, submittedCheckpoint: args.checkpoint, baseHead, verdict: "rejected", reason, by: args.by });
|
|
977
|
+
return { verdict: "rejected", reason };
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
if (prot.integration?.carryApprovals !== false) {
|
|
981
|
+
carriedApprovals = (await this.store.collect("approval"))
|
|
982
|
+
.filter((a) => a.checkpointOid === args.checkpoint)
|
|
983
|
+
.map((a) => a.oid);
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
const waived = await this.#activeWaivers(view);
|
|
987
|
+
const required = (prot?.requiredChecks ?? []).filter((k) => !waived.has(k));
|
|
988
|
+
const advance = async (headCp, evidenceBinding, resultIsSubmitted = false) => {
|
|
989
|
+
await this.store.setRef(`head:${view}`, headCp);
|
|
990
|
+
const integration = await this.#recordIntegration({
|
|
991
|
+
view, ticketId, submittedCheckpoint: args.checkpoint, baseHead,
|
|
992
|
+
resultCheckpoint: resultIsSubmitted ? undefined : headCp,
|
|
993
|
+
verdict: "advanced", evidenceBinding, ...(carriedApprovals ? { carriedApprovals } : {}), by: args.by,
|
|
994
|
+
});
|
|
995
|
+
if (resv?.ticketId === ticketId)
|
|
996
|
+
await this.#writeReservation(view, null);
|
|
997
|
+
this.logger.info("integrate.advanced", { view, ticketId, head: headCp, evidenceBinding });
|
|
998
|
+
return { verdict: "advanced", head: headCp, integration };
|
|
999
|
+
};
|
|
1000
|
+
// 7a. Fast-forward — the current head is inside the submission's causal closure:
|
|
1001
|
+
// classic finalize semantics, fresh binding, no re-authored checkpoint.
|
|
1002
|
+
if (fastForward) {
|
|
1003
|
+
for (const k of required) {
|
|
1004
|
+
if (cp.evidence[k] !== "pass") {
|
|
1005
|
+
const reason = `required check ${k} not pass`;
|
|
1006
|
+
await this.#recordIntegration({ view, ticketId, submittedCheckpoint: args.checkpoint, baseHead, verdict: "rejected", reason, by: args.by });
|
|
1007
|
+
return { verdict: "rejected", reason };
|
|
1008
|
+
}
|
|
1009
|
+
if (prot?.requireBoundEvidence && cp.evidenceBinding?.[k] !== "bound") {
|
|
1010
|
+
const reason = `required check ${k} passed but its evidence is not bound to this tree`;
|
|
1011
|
+
await this.#recordIntegration({ view, ticketId, submittedCheckpoint: args.checkpoint, baseHead, verdict: "rejected", reason, by: args.by });
|
|
1012
|
+
return { verdict: "rejected", reason };
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
return advance(args.checkpoint, "fresh", true);
|
|
1016
|
+
}
|
|
1017
|
+
// 7b. Head moved: the integrated tree differs from the submitted one, so the
|
|
1018
|
+
// submitted evidence does NOT prove it (docs/17 §14.5). Decide by evidence mode.
|
|
1019
|
+
const T = integrated.treeHash;
|
|
1020
|
+
const needsEvidence = async () => {
|
|
1021
|
+
const draft = resv?.ticketId === ticketId && resv.treeHash === T
|
|
1022
|
+
? resv.integratedCheckpoint
|
|
1023
|
+
: await this.#authorIntegratedCheckpoint(view, integrated, {}, undefined, `integration ${ticketId.slice(0, 12)} (awaiting evidence)`);
|
|
1024
|
+
const ttl = prot?.integration?.reserveTtlMs ?? 10 * 60_000;
|
|
1025
|
+
await this.#writeReservation(view, {
|
|
1026
|
+
ticketId, submittedCheckpoint: args.checkpoint, integratedCheckpoint: draft,
|
|
1027
|
+
treeHash: T, requiredChecks: required, by: args.by,
|
|
1028
|
+
expiresAt: new Date(Date.now() + ttl).toISOString(),
|
|
1029
|
+
});
|
|
1030
|
+
// What the submitter is missing locally to reproduce T: the head-side delta ops
|
|
1031
|
+
// plus the blobs they reference (determinism does the rest — docs/17 §14.5 fresh).
|
|
1032
|
+
const headClosure = await this.#closureOf(curHeads);
|
|
1033
|
+
const missingLocally = [];
|
|
1034
|
+
for (const oid of headClosure) {
|
|
1035
|
+
if (subClosure.has(oid))
|
|
1036
|
+
continue;
|
|
1037
|
+
missingLocally.push(oid);
|
|
1038
|
+
if (await this.store.has(oid)) {
|
|
1039
|
+
const op = await this.store.get(oid);
|
|
1040
|
+
for (const b of [op.body.blobOid, op.body.baseBlobOid])
|
|
1041
|
+
if (b)
|
|
1042
|
+
missingLocally.push(b);
|
|
1043
|
+
}
|
|
1044
|
+
}
|
|
1045
|
+
const integration = await this.#recordIntegration({
|
|
1046
|
+
view, ticketId, submittedCheckpoint: args.checkpoint, baseHead,
|
|
1047
|
+
resultCheckpoint: draft, verdict: "needs_evidence", by: args.by,
|
|
1048
|
+
});
|
|
1049
|
+
return { verdict: "needs_evidence", integratedCheckpoint: draft, treeHash: T, requiredChecks: required, missingLocally, ticketId, integration };
|
|
1050
|
+
};
|
|
1051
|
+
// Resubmission holding the reservation: accept iff fresh evidence bound to the
|
|
1052
|
+
// reserved tree now covers the required checks — exactly one validation run.
|
|
1053
|
+
if (resv && resv.ticketId === ticketId && resv.treeHash === T) {
|
|
1054
|
+
const bound = await this.#boundEvidenceFor(T);
|
|
1055
|
+
if (required.every((k) => bound[k] === "pass")) {
|
|
1056
|
+
const binding = {};
|
|
1057
|
+
for (const k of Object.keys(bound))
|
|
1058
|
+
binding[k] = "bound";
|
|
1059
|
+
const finalCp = await this.#authorIntegratedCheckpoint(view, integrated, bound, binding, `integration ${ticketId.slice(0, 12)}`);
|
|
1060
|
+
return advance(finalCp, "fresh");
|
|
1061
|
+
}
|
|
1062
|
+
return needsEvidence(); // reservation refreshed; still exactly one validation owed
|
|
1063
|
+
}
|
|
1064
|
+
if (required.length === 0) {
|
|
1065
|
+
// Nothing to prove — integrate directly (evidence-less views).
|
|
1066
|
+
const finalCp = await this.#authorIntegratedCheckpoint(view, integrated, {}, undefined, `integration ${ticketId.slice(0, 12)}`);
|
|
1067
|
+
return advance(finalCp, "fresh");
|
|
1068
|
+
}
|
|
1069
|
+
const mode = prot?.integration?.evidenceMode ?? "carry-disjoint";
|
|
1070
|
+
let carry = mode === "carry-always";
|
|
1071
|
+
if (mode === "carry-disjoint") {
|
|
1072
|
+
const headClosure = await this.#closureOf(curHeads);
|
|
1073
|
+
const oursOnly = [...subClosure].filter((o) => !headClosure.has(o));
|
|
1074
|
+
const theirsOnly = [...headClosure].filter((o) => !subClosure.has(o));
|
|
1075
|
+
const ourKeys = await this.#keysOfOps(oursOnly);
|
|
1076
|
+
const theirKeys = await this.#keysOfOps(theirsOnly);
|
|
1077
|
+
// Disjoint deltas + zero new conflicts (checked above) ⇒ the same risk a git
|
|
1078
|
+
// user already accepts when merging two independently-green branches — but
|
|
1079
|
+
// machine-checked, recorded, and opt-out-able (docs/17 §14.5).
|
|
1080
|
+
carry = [...ourKeys].every((k) => !theirKeys.has(k));
|
|
1081
|
+
}
|
|
1082
|
+
// Carried evidence is not tree-bound; a protection that demands bound evidence
|
|
1083
|
+
// therefore forces the fresh path whenever the head has moved.
|
|
1084
|
+
if (prot?.requireBoundEvidence)
|
|
1085
|
+
carry = false;
|
|
1086
|
+
if (carry) {
|
|
1087
|
+
for (const k of required) {
|
|
1088
|
+
if (cp.evidence[k] !== "pass") {
|
|
1089
|
+
const reason = `required check ${k} not pass`;
|
|
1090
|
+
await this.#recordIntegration({ view, ticketId, submittedCheckpoint: args.checkpoint, baseHead, verdict: "rejected", reason, by: args.by });
|
|
1091
|
+
return { verdict: "rejected", reason };
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
// The carry is never silent: recorded on BOTH the checkpoint and the Integration.
|
|
1095
|
+
const binding = {};
|
|
1096
|
+
for (const k of Object.keys(cp.evidence))
|
|
1097
|
+
binding[k] = "carried";
|
|
1098
|
+
const finalCp = await this.#authorIntegratedCheckpoint(view, integrated, cp.evidence, binding, `integration ${ticketId.slice(0, 12)} (carried evidence)`);
|
|
1099
|
+
return advance(finalCp, "carried");
|
|
1100
|
+
}
|
|
1101
|
+
return needsEvidence();
|
|
1102
|
+
});
|
|
1103
|
+
if (result.verdict !== "advanced") {
|
|
1104
|
+
this.logger.info("integrate.verdict", { view, ticketId, verdict: result.verdict });
|
|
1105
|
+
}
|
|
1106
|
+
return result;
|
|
1107
|
+
}
|
|
778
1108
|
// ── security (Phase 12) ────────────────────────────────────────────────────
|
|
779
1109
|
/**
|
|
780
1110
|
* Redact (tombstone) a blob's bytes — for a leaked secret. Admin-only. The oid is
|
|
@@ -1002,6 +1332,47 @@ export class Repo {
|
|
|
1002
1332
|
throw new Error(`unknown remote: ${nameOrUrl} (run \`avcs remote add ${nameOrUrl} <url>\`)`);
|
|
1003
1333
|
return r.url;
|
|
1004
1334
|
}
|
|
1335
|
+
/** Public remote-name → hub-URL resolution (a literal URL passes through). */
|
|
1336
|
+
async remoteUrl(nameOrUrl) {
|
|
1337
|
+
return this.#resolveRemote(nameOrUrl);
|
|
1338
|
+
}
|
|
1339
|
+
/**
|
|
1340
|
+
* Submit a draft checkpoint to a REMOTE hub's integration queue (Phase 14, docs/17
|
|
1341
|
+
* §14.4), with capability detection: a hub advertising `integrate` on GET /version
|
|
1342
|
+
* gets the queue path (one judgment, no redo); an older hub falls back to the legacy
|
|
1343
|
+
* finalize + pull retry funnel (bounded) — the exact loop the queue exists to kill,
|
|
1344
|
+
* kept only for backward compatibility.
|
|
1345
|
+
*/
|
|
1346
|
+
async integrateHub(remoteOrUrl, args) {
|
|
1347
|
+
const url = await this.#resolveRemote(remoteOrUrl);
|
|
1348
|
+
const signWith = args.signWith ?? (await this.#resolveHubSigner(args.by));
|
|
1349
|
+
let hasIntegrate = false;
|
|
1350
|
+
try {
|
|
1351
|
+
const v = (await (await fetch(`${url}/version`)).json());
|
|
1352
|
+
hasIntegrate = v.integrate === true;
|
|
1353
|
+
}
|
|
1354
|
+
catch { /* unreachable /version → treat as legacy */ }
|
|
1355
|
+
if (hasIntegrate) {
|
|
1356
|
+
const { integrateWithHub } = await import("../hub/hubClient.js");
|
|
1357
|
+
const r = await integrateWithHub(this.dir, url, { ...args, signWith });
|
|
1358
|
+
// needs_evidence pulled delta objects through a separate store — refresh caches.
|
|
1359
|
+
this.#blobCache.clear();
|
|
1360
|
+
return r;
|
|
1361
|
+
}
|
|
1362
|
+
// Legacy fallback (old hub): finalize CAS + pull, bounded retries. This CAN lose
|
|
1363
|
+
// races (that is exactly the funnel Phase 14 removes) — surfaced honestly.
|
|
1364
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
1365
|
+
await this.pullHub(url);
|
|
1366
|
+
const parentHead = await this.protectedHead(args.view);
|
|
1367
|
+
await this.pushHub(url, { as: args.by });
|
|
1368
|
+
const r = await this.finalizeHub(url, { view: args.view, newCheckpoint: args.checkpoint, parentHead, by: args.by, signWith });
|
|
1369
|
+
if (r.finalized)
|
|
1370
|
+
return { verdict: "advanced", head: r.head ?? args.checkpoint, legacy: true };
|
|
1371
|
+
if (!/head moved/.test(r.reason ?? ""))
|
|
1372
|
+
return { verdict: "rejected", reason: r.reason ?? `finalize failed (${r.status})`, legacy: true };
|
|
1373
|
+
}
|
|
1374
|
+
return { verdict: "rejected", reason: "legacy hub: lost the finalize CAS race 3 times — retry, or upgrade the hub for queue semantics", legacy: true };
|
|
1375
|
+
}
|
|
1005
1376
|
/**
|
|
1006
1377
|
* Bidirectional convergence with a named remote (default "origin"): pull what the hub
|
|
1007
1378
|
* has that we lack, then push what we have that it lacks. Pure object gossip — union
|