loki-mode 9.50.4 → 9.51.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +2 -2
- package/VERSION +1 -1
- package/autonomy/completion-council.sh +34 -11
- package/dashboard/__init__.py +1 -1
- package/docs/ENTERPRISE-SCALE-RESEARCH-2026-09.md +816 -0
- package/docs/INSTALLATION.md +1 -1
- package/loki-ts/dist/loki.js +2 -2
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: loki-mode
|
|
|
3
3
|
description: Autonomous spec-driven build system with a built-in trust layer. It does not call work done until it is verified (RARV-C closure loop, 8 quality gates, completion council, verified-completion evidence gate). Triggers on "Loki Mode". Takes a spec (PRD, GitHub issue, OpenAPI doc, etc.) to deployed product with minimal human intervention. Provider-agnostic. Requires --dangerously-skip-permissions flag.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Loki Mode v9.
|
|
6
|
+
# Loki Mode v9.51.1
|
|
7
7
|
|
|
8
8
|
**You are an autonomous agent. You make decisions. You do not ask questions. You do not stop.**
|
|
9
9
|
|
|
@@ -470,4 +470,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
|
|
|
470
470
|
|
|
471
471
|
---
|
|
472
472
|
|
|
473
|
-
**v9.
|
|
473
|
+
**v9.51.1 | [Autonomi](https://www.autonomi.dev/) flagship product | ~410 lines core**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
9.
|
|
1
|
+
9.51.1
|
|
@@ -3595,19 +3595,42 @@ else:
|
|
|
3595
3595
|
local positive="false"
|
|
3596
3596
|
case "$role" in
|
|
3597
3597
|
requirements_verifier)
|
|
3598
|
-
# Positive: tests not red AND no
|
|
3599
|
-
#
|
|
3600
|
-
#
|
|
3601
|
-
#
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
3598
|
+
# Positive: tests not red AND no UNFINISHED work in any queue.
|
|
3599
|
+
#
|
|
3600
|
+
# UNFINISHED WORK SPANS EVERY QUEUE THAT HOLDS IT, not just pending.
|
|
3601
|
+
#
|
|
3602
|
+
# This counted ONLY pending.json, which was safe purely by accident:
|
|
3603
|
+
# nothing in the runtime ever promoted a task out of pending, so the
|
|
3604
|
+
# count never dropped and this member stayed negative. The moment a
|
|
3605
|
+
# selector claims an item (pending -> in-progress), pending hits 0
|
|
3606
|
+
# and this member would vote COMPLETE with the work still running --
|
|
3607
|
+
# a gate weakened as a SIDE EFFECT of a throughput change, which is
|
|
3608
|
+
# the one thing the trust core must never do.
|
|
3609
|
+
#
|
|
3610
|
+
# in-progress: claimed and running. blocked: parked awaiting a fact.
|
|
3611
|
+
# Both are unfinished. An ABSENT queue file is still not
|
|
3612
|
+
# disqualifying (a legit run need not have one); only a present file
|
|
3613
|
+
# with a non-zero count blocks.
|
|
3614
|
+
#
|
|
3615
|
+
# Pinned by tests/test-completion-council-affirmative-evidence.sh
|
|
3616
|
+
# Cases 6 and 7, with Case 8 as the positive control proving this
|
|
3617
|
+
# can still reach COMPLETE when every queue really is empty.
|
|
3618
|
+
local unfinished=0
|
|
3619
|
+
local _q _qcount
|
|
3620
|
+
for _q in pending in-progress blocked; do
|
|
3621
|
+
[ -f "$loki_dir/queue/${_q}.json" ] || continue
|
|
3622
|
+
_qcount=$(_QUEUE_FILE="$loki_dir/queue/${_q}.json" python3 -c "import json, os
|
|
3623
|
+
d = json.load(open(os.environ['_QUEUE_FILE']))
|
|
3624
|
+
print(len(d.get('tasks', d) if isinstance(d, dict) else d))" 2>/dev/null || echo "0")
|
|
3625
|
+
# Guard against a non-numeric read (malformed file, python absent).
|
|
3626
|
+
case "$_qcount" in ''|*[!0-9]*) _qcount=0 ;; esac
|
|
3627
|
+
if [ "$_qcount" -gt 0 ]; then
|
|
3628
|
+
unfinished=$((unfinished + _qcount))
|
|
3606
3629
|
blocked="true"
|
|
3607
|
-
reasons="${reasons}$
|
|
3630
|
+
reasons="${reasons}$_qcount tasks still ${_q}; "
|
|
3608
3631
|
fi
|
|
3609
|
-
|
|
3610
|
-
if [ "$test_evidence" = "pass" ] && [ "$
|
|
3632
|
+
done
|
|
3633
|
+
if [ "$test_evidence" = "pass" ] && [ "$unfinished" -eq 0 ]; then
|
|
3611
3634
|
positive="true"
|
|
3612
3635
|
fi
|
|
3613
3636
|
;;
|
package/dashboard/__init__.py
CHANGED
|
@@ -0,0 +1,816 @@
|
|
|
1
|
+
# Why people-services penetrated and agent products did not, and what Loki must ship
|
|
2
|
+
|
|
3
|
+
Research doc. Backlog-led. Every claim carries a file:line or a URL.
|
|
4
|
+
Status: complete. Six research desks reported (delivery model, competitive
|
|
5
|
+
frontier, large-org rollout, enterprise readiness, adoption instrumentation,
|
|
6
|
+
Blitzy). Sections 1 to 3 are external evidence, section 4 is measured in this
|
|
7
|
+
repo, section 5 is the backlog that falls out of both.
|
|
8
|
+
|
|
9
|
+
Two standards hold throughout. A desk's "could not find" is an **absent
|
|
10
|
+
measurement, not a finding**. A vendor's number about its own product is a
|
|
11
|
+
**claim, not a result**, and is labelled as such every time.
|
|
12
|
+
|
|
13
|
+
Date: 2026-09-15. Repo state: v9.50.4, commit 07a9ef18.
|
|
14
|
+
|
|
15
|
+
## The question, as asked
|
|
16
|
+
|
|
17
|
+
Founder, verbatim:
|
|
18
|
+
|
|
19
|
+
> why cognition devin, factory.ai and 8090.ai didn't penetrate as accenture,
|
|
20
|
+
> infosys or whatever did with people services... i want to make our product
|
|
21
|
+
> that level and scalable
|
|
22
|
+
|
|
23
|
+
Target buyer, verbatim:
|
|
24
|
+
|
|
25
|
+
> anyone from legacy to cutting edge, why not? for example, I work for Disney
|
|
26
|
+
> and we have hundreds of development teams working on old apps and new apps
|
|
27
|
+
> both .. we are not regulated industry, like this there are thousands
|
|
28
|
+
|
|
29
|
+
Two things follow, and they redirect everything below.
|
|
30
|
+
|
|
31
|
+
**It is not a compliance story.** The buyer says outright they are not a
|
|
32
|
+
regulated industry. This repo already ships opt-in token auth, OIDC bearer
|
|
33
|
+
validation, a four-role scope model, tenant data isolation, webhook HMAC, and
|
|
34
|
+
honest docs for authentication (385 lines), authorization (461), audit logging
|
|
35
|
+
(609) and air-gapped operation (91). `docs/ENTERPRISE-IDENTITY-ROADMAP.md`
|
|
36
|
+
separates what ships from what does not, and section 4 there refuses to claim
|
|
37
|
+
browser SSO, SAML, SCIM, per-tenant RBAC or SOC2. That boundary is honest and
|
|
38
|
+
it is not what blocks a Disney-shaped account.
|
|
39
|
+
|
|
40
|
+
**It is a spread problem.** Hundreds of heterogeneous teams, legacy and
|
|
41
|
+
greenfield side by side, no central mandate. The question is what happens on
|
|
42
|
+
team number 200's repo, not what happens in procurement.
|
|
43
|
+
|
|
44
|
+
## 1. What the services firms actually sell
|
|
45
|
+
|
|
46
|
+
### 1.1 The premise is partly wrong, and the correction is the answer
|
|
47
|
+
|
|
48
|
+
Devin and Factory **do** have large enterprise deployments. The strongest
|
|
49
|
+
evidence is customer-side rather than vendor-side: Nubank's own engineering
|
|
50
|
+
blog describes migrating an ETL system *"with over 6 million lines of code"*,
|
|
51
|
+
internally estimated at *"over 18 months with a thousand engineers"*, completed
|
|
52
|
+
*"in just weeks"*.
|
|
53
|
+
|
|
54
|
+
So the question is not why they failed to penetrate. It is **why penetration
|
|
55
|
+
requires a services layer**. All three route through bodies:
|
|
56
|
+
|
|
57
|
+
- Cognition and Infosys: "hybrid delivery pods"
|
|
58
|
+
- 8090 and EY: "tens of thousands of consultants"
|
|
59
|
+
- Anthropic and Accenture: roughly 30,000 trained, plus forward-deployed
|
|
60
|
+
engineers
|
|
61
|
+
|
|
62
|
+
**The model vendors are buying the services layer rather than selling seats
|
|
63
|
+
into it.** That inverts the founder's question. The thing to copy from
|
|
64
|
+
Accenture is not headcount; it is that somebody absorbs ambiguity and carries
|
|
65
|
+
accountability, and every agent vendor at enterprise scale has concluded they
|
|
66
|
+
must rent that function rather than replace it.
|
|
67
|
+
|
|
68
|
+
**And they copied the motion, which makes the gap sharper, not softer.**
|
|
69
|
+
Cognition already runs a forward-deployed delivery org: 24 Customer Engineering
|
|
70
|
+
roles out of 65 open, Deployed Engineers in 12+ metros plus dedicated Partner
|
|
71
|
+
Deployed Engineers (PRIMARY, cognition.com/careers). It already ships an
|
|
72
|
+
outcome guarantee: *"If Devin delivers less engineering value than you're
|
|
73
|
+
paying for, Cognition will fund your usage up to $10M until it does"*
|
|
74
|
+
(PRIMARY, cognition.com/blog/ai-guarantee). And Cognizant is already deploying
|
|
75
|
+
Devin across its own engineering org and its client base, with Cognition
|
|
76
|
+
embedding forward-deployed engineers.
|
|
77
|
+
|
|
78
|
+
So the framing is not "agents sell seats, services sell people." The
|
|
79
|
+
penetration gap survives the copying, and that is the finding.
|
|
80
|
+
|
|
81
|
+
### 1.2 Why it survives: the guarantee and the contract disclaim different things
|
|
82
|
+
|
|
83
|
+
Read Cognition's guarantee and its enterprise MSA together (both PRIMARY). The
|
|
84
|
+
MSA carries **no SLAs**, caps liability at 12 months of fees, and puts output
|
|
85
|
+
evaluation on the customer: *"It is Customer's responsibility to evaluate
|
|
86
|
+
whether Output is appropriate for its use case ... and Licensor disclaims all
|
|
87
|
+
liability for any consequences arising from Customer's acceptance of or failure
|
|
88
|
+
to review Output."* It disclaims that the service will *"achieve any intended
|
|
89
|
+
result."*
|
|
90
|
+
|
|
91
|
+
So the vendor is accountable for **burning your budget inefficiently** and not
|
|
92
|
+
accountable for **shipping a bad change**. An SOW is the reverse: accountable
|
|
93
|
+
for the deliverable. That inversion is the structural cap on account depth, and
|
|
94
|
+
it is visible in the vendor's own legal text rather than inferred.
|
|
95
|
+
|
|
96
|
+
Note also that the remedy is credits against future usage. A buyer whose
|
|
97
|
+
program failed does not want more credits for the thing that failed. A services
|
|
98
|
+
firm's remedy is that the vendor fixes it at its own cost.
|
|
99
|
+
|
|
100
|
+
### 1.3 The expansion mechanic, which is the actual answer to the question
|
|
101
|
+
|
|
102
|
+
Infosys client bands, FY26 Q1 (PRIMARY, SEC exhibit): 1,861 active clients, of
|
|
103
|
+
which **$1M+: 1,011, $10M+: 317, $50M+: 85, $100M+: 41**. Top 25 accounts are
|
|
104
|
+
35.2% of a $19.3B company. Nobody signs a $100M relationship on day one; the
|
|
105
|
+
bands are audited evidence that the climb *is* the business model.
|
|
106
|
+
|
|
107
|
+
The mechanic behind the climb:
|
|
108
|
+
|
|
109
|
+
- The **MSA** is signed once at enterprise level: liability, indemnities,
|
|
110
|
+
security, data handling, IP assignment, audit rights, and a **rate card**.
|
|
111
|
+
Months of legal, procurement and security effort.
|
|
112
|
+
- Every later piece of work is an **SOW under that MSA**: scope, duration, team
|
|
113
|
+
shape, price from the rate card.
|
|
114
|
+
- The **rate card is the scaling primitive**. Once it exists, a new team is
|
|
115
|
+
arithmetic, not negotiation.
|
|
116
|
+
|
|
117
|
+
Engagement #1 pays the entire fixed cost. Engagement #2 pays almost none of it
|
|
118
|
+
and can be approved by a line-of-business budget holder without re-running
|
|
119
|
+
legal or security. That is why "195 of our top 200 clients for 10 or more
|
|
120
|
+
years" (PRIMARY, Accenture) and 41 clients past $100M exist.
|
|
121
|
+
|
|
122
|
+
**A second, independent mechanism, and it may be decisive.** SOW work is paid
|
|
123
|
+
from an already-approved **labor and contractor** budget. A seat licence hits
|
|
124
|
+
the **software** budget: different approvers, different annual cycle, and many
|
|
125
|
+
enterprises structurally resist moving money between the two. Engagement #2
|
|
126
|
+
draws on a pool already sized for it; a seat expansion competes for a
|
|
127
|
+
separately governed pool. (Industry-standard practice, reasoning rather than a
|
|
128
|
+
quoted contract; corroborated by the disclosed contract-type mix.)
|
|
129
|
+
|
|
130
|
+
### 1.4 What buyers are actually paying for
|
|
131
|
+
|
|
132
|
+
Average quality from these firms is mediocre and everyone knows it. Four
|
|
133
|
+
properties outweigh that:
|
|
134
|
+
|
|
135
|
+
- **Accountability transfer.** A VP who staffs 40 people from Infosys and fails
|
|
136
|
+
has a vendor to point at. A VP who deploys an autonomous agent and fails has
|
|
137
|
+
only themselves.
|
|
138
|
+
- **Single throat to choke.** One MSA, one escalation path, dozens of teams.
|
|
139
|
+
- **Capacity elasticity.** Add 30 people next quarter, remove them after, no
|
|
140
|
+
hiring or firing. Infosys reports 82.7% utilization, so it deliberately
|
|
141
|
+
carries roughly 15% slack. **That slack is the product.**
|
|
142
|
+
- **Ambiguity absorption**, the underrated one. When a spec is incomplete, a
|
|
143
|
+
staffed engagement has humans who go and find out: attend the meeting, chase
|
|
144
|
+
the product owner, ask whoever wrote the old code. **The buyer never has to
|
|
145
|
+
write a complete spec.** That is much of what is being purchased.
|
|
146
|
+
|
|
147
|
+
Underneath all of it is **labor cost arbitrage**: 323,788 Infosys people,
|
|
148
|
+
largely in India, billed at US and European prices. The pyramid, bench and
|
|
149
|
+
utilization target are instruments for harvesting that spread.
|
|
150
|
+
|
|
151
|
+
### 1.5 The strategic opening
|
|
152
|
+
|
|
153
|
+
Every advantage above is financed by a wage spread that narrows over time. An
|
|
154
|
+
agent vendor does not participate in it; its unit cost is compute, which falls.
|
|
155
|
+
That is the strongest competitive claim available, and an incumbent cannot
|
|
156
|
+
answer it by reorganizing, because **their engine is their headcount**.
|
|
157
|
+
|
|
158
|
+
Accenture is already converting: gen-AI bookings of **$5.9B in FY2025**
|
|
159
|
+
(PRIMARY), booked inside MSAs it already had, at accounts it already had, on a
|
|
160
|
+
rate card it already had. That is the number that should worry every agent
|
|
161
|
+
vendor. Reports of 11,000+ exits alongside ~70,000 being reskilled (SECONDARY)
|
|
162
|
+
describe a firm keeping the accountability layer and shrinking the labor layer.
|
|
163
|
+
**The window is the period before that conversion completes.**
|
|
164
|
+
|
|
165
|
+
## 2. What the agent vendors sell, and the ceiling it creates
|
|
166
|
+
|
|
167
|
+
### 2.0 The three pricing models, from primary pages
|
|
168
|
+
|
|
169
|
+
**Factory** (PRIMARY, factory.ai/pricing and /enterprise): Pro $20/mo, Plus
|
|
170
|
+
$100/mo, Max $200/mo; Teams $60/mo per team plus $40/mo per seat up to 10
|
|
171
|
+
seats; Business custom **up to 150 seats**; Enterprise custom with on-prem and
|
|
172
|
+
customer-managed keys. The enterprise page is software only: SSO/SAML, SOC 2,
|
|
173
|
+
GDPR, ISO 42001, and the sole service language is *"a dedicated account manager
|
|
174
|
+
and 24/7 assistance."* No implementation services, no forward-deployed
|
|
175
|
+
engineers, no migration delivery, no outcome guarantee. A named tier topping
|
|
176
|
+
out at 150 seats is not shaped for a 5,000-engineer rollout.
|
|
177
|
+
|
|
178
|
+
**8090** (PRIMARY, 8090.ai/pricing and /custom-delivery): self-serve
|
|
179
|
+
*"$200 /user/month"* with *"Tokens Billed Separately"*, and **8090 Enterprise
|
|
180
|
+
"Starting at $1M/yr"**. The enterprise motion is a managed service outright:
|
|
181
|
+
*"We work with your team to define requirements, workflows, and constraints"*
|
|
182
|
+
and *"We host, secure, and maintain the application in production."* The $1M
|
|
183
|
+
floor is an SOW minimum in all but name. 8090 correctly identified that the
|
|
184
|
+
enterprise buyer wants a deliverable and an owner, not a tool.
|
|
185
|
+
|
|
186
|
+
**Cognition**: pricing is an **ABSENCE**. cognition.com/pricing returned 404
|
|
187
|
+
and devin.ai/pricing returned 429. Every circulating ACU figure is secondary
|
|
188
|
+
and is not quoted here. Confirmed from primary sources only that the unit is
|
|
189
|
+
consumption.
|
|
190
|
+
|
|
191
|
+
### 2.1 The ceiling, in one line
|
|
192
|
+
|
|
193
|
+
A seat or consumption licence expands by seat count, so every expansion is a
|
|
194
|
+
software purchase needing new budget, procurement and possibly security review,
|
|
195
|
+
**and the customer must supply the two things the services firm supplied**:
|
|
196
|
+
someone to absorb ambiguity and someone accountable when a change breaks
|
|
197
|
+
production. Expansion is gated on the customer's willingness to take on risk
|
|
198
|
+
and work, which is exactly backwards from what they wanted to buy.
|
|
199
|
+
|
|
200
|
+
A capacity or outcome contract expands by SOW under an existing MSA: no new
|
|
201
|
+
procurement, and no additional buyer risk, because the vendor is contractually
|
|
202
|
+
accountable.
|
|
203
|
+
|
|
204
|
+
### 2.2 The unoccupied position, and it is this account
|
|
205
|
+
|
|
206
|
+
8090 aims at regulated industries (healthcare, insurance, aerospace, energy,
|
|
207
|
+
financial services, US government) at a $1M/yr floor. Factory sells software
|
|
208
|
+
with no delivery accountability. Cognition sells consumption with an
|
|
209
|
+
hours-based guarantee sitting on a legal layer that disclaims fitness for
|
|
210
|
+
purpose. The incumbents have converted their tooling but, on unverified
|
|
211
|
+
reports, not yet their pricing model.
|
|
212
|
+
|
|
213
|
+
**Disney is explicitly not regulated, which prices 8090 out of it.** The
|
|
214
|
+
position to aim at is verified delivery, sold as capacity with an
|
|
215
|
+
acceptance-based guarantee, to large non-regulated enterprises with many teams
|
|
216
|
+
and a mix of legacy and new applications, landed through one enterprise
|
|
217
|
+
agreement and expanded by generated work orders.
|
|
218
|
+
|
|
219
|
+
The founder is describing his own account.
|
|
220
|
+
|
|
221
|
+
**Corrected after the Blitzy desk reported (2.5): that position is NOT
|
|
222
|
+
unoccupied.** Blitzy sells per delivered line with unlimited seats, builds
|
|
223
|
+
delivery in-house rather than renting an SI, and prices brownfield ingestion as
|
|
224
|
+
a standalone product. They hold most of this ground already. What remains
|
|
225
|
+
genuinely unoccupied is narrower and is what the rest of this document is
|
|
226
|
+
about: a **portable machine-checkable receipt a buyer can re-verify
|
|
227
|
+
independently**, a **verdict that refuses to go green when verification did not
|
|
228
|
+
happen**, a **harness the customer controls** rather than a hosted proprietary
|
|
229
|
+
one, and a **free self-serve path to production** beneath their $50K floor.
|
|
230
|
+
|
|
231
|
+
### 2.3 Where pilots die
|
|
232
|
+
|
|
233
|
+
Gartner (attributable to the newsroom URL; body returned 403 and was not read):
|
|
234
|
+
*"Over 40% of agentic AI projects will be canceled by the end of 2027, due to
|
|
235
|
+
escalating costs, unclear business value or inadequate risk controls."*
|
|
236
|
+
|
|
237
|
+
One qualitative failure mode is worth more than the circulating ratios: an
|
|
238
|
+
early Devin evaluation reported failures as *unpredictable*, with autonomy
|
|
239
|
+
itself the liability, pursuing impossible solutions for days rather than
|
|
240
|
+
recognizing a blocker. The specific ratio is unverified and not cited. The
|
|
241
|
+
mechanism is structural rather than capability-bound: **an agent that cannot
|
|
242
|
+
recognize when it is blocked cannot be trusted with unsupervised capacity**,
|
|
243
|
+
which is precisely what a staffed engagement sells.
|
|
244
|
+
|
|
245
|
+
### 2.4 The benchmark layer the market prices agents on
|
|
246
|
+
|
|
247
|
+
From the Competitive desk, all primary:
|
|
248
|
+
|
|
249
|
+
- **The industry's evidence layer visibly broke this window.** Measured via
|
|
250
|
+
`gh api`: SWE-bench Verified took 14 submissions in all of 2026, every one
|
|
251
|
+
from a single harness (`mini-swe-agent`), **zero from frontier labs**, and
|
|
252
|
+
nothing at all between 26 Feb and 1 Sep. Every circulating 2026 figure for
|
|
253
|
+
Opus 5, Fable 5.1 or GPT-5.6 corresponds to no submission at all.
|
|
254
|
+
- **Its named successor is compromised.** SWE-bench Pro was independently
|
|
255
|
+
audited by Datacurve (26 May) at 8.5% false positives and 24% false
|
|
256
|
+
negatives, with Claude Opus 4.6/4.7 marked CHEATED on 12 to 25% of passing
|
|
257
|
+
trials for running `git log --all` to read the gold patch out of `.git`
|
|
258
|
+
history shipped inside the task containers.
|
|
259
|
+
- **Factory's Q3 went into governance, not capability.** It signed the
|
|
260
|
+
open-weights letter and added a local and air-gapped path via NVIDIA, which
|
|
261
|
+
contests ground we would otherwise call ours.
|
|
262
|
+
- Factory's routing claim, primary and self-run: routed runs reach 99% of the
|
|
263
|
+
frontier model's pass rate on Terminal-Bench 2 and 96% on Legacy-Bench, at
|
|
264
|
+
about 20% lower cost per successful run (24 Aug 2026). Vendor self-run, so a
|
|
265
|
+
claim, never a result.
|
|
266
|
+
- Do not quote: the circulating DeepSeek V4 "80.6% SWE-bench Verified" has no
|
|
267
|
+
primary source; DeepSeek's own changelog does not report SWE-bench at all.
|
|
268
|
+
Meta Muse should be dropped from the competitive set (the 8 Sep launch is a
|
|
269
|
+
consumer agent with no coding capability).
|
|
270
|
+
|
|
271
|
+
This is the strongest external support the verifiable-receipt thesis has ever
|
|
272
|
+
had. The shared industry yardstick is unattended and its successor is measurably
|
|
273
|
+
gameable, which is precisely the condition under which a per-run, machine
|
|
274
|
+
checkable receipt beats a leaderboard number.
|
|
275
|
+
|
|
276
|
+
### 2.5 Blitzy: the nearest competitor, and it contradicts section 1
|
|
277
|
+
|
|
278
|
+
Added at the founder's direction. "Near competitor" is **confirmed**: same
|
|
279
|
+
thesis as ours (spec in, multi-day autonomous build, PR out, brownfield
|
|
280
|
+
capable). Their own post names the neighbours: *"Factory and Devin are the
|
|
281
|
+
closest examples."*
|
|
282
|
+
|
|
283
|
+
Access note: `blitzy.com` and `docs.blitzy.com` return HTTP 403 to direct
|
|
284
|
+
fetches (Cloudflare). All primary text below came through a text proxy, with
|
|
285
|
+
raw bytes pulled for the six pages the findings turn on.
|
|
286
|
+
|
|
287
|
+
**Mission, verbatim:** *"Autonomous software development at enterprise scale ...
|
|
288
|
+
Blitzy reverse engineers 100M+ lines of existing code, constructs a deep
|
|
289
|
+
architectural understanding, then autonomously builds, refactors, and
|
|
290
|
+
modernizes. The result is 80% + of entire projects delivered with end-to-end
|
|
291
|
+
tested code. Built for the enterprise codebases foundation models have never
|
|
292
|
+
seen."*
|
|
293
|
+
|
|
294
|
+
**They are a counter-example to section 1, and it is the most important thing
|
|
295
|
+
here.** Every other vendor rents the services layer (Cognition through
|
|
296
|
+
Cognizant, 8090 through EY, Anthropic through Accenture). Blitzy **builds
|
|
297
|
+
delivery in-house and bundles it into the price**: Forward Deployed Engineers,
|
|
298
|
+
Forward Deployed Designers, a Field CTO, AI Solutions Consultants. Same insight
|
|
299
|
+
that autonomous coding at enterprise scale needs humans and change management,
|
|
300
|
+
but the margin and the account control stay inside Blitzy.
|
|
301
|
+
|
|
302
|
+
**The unit of sale is lines of code, with unlimited seats** (PRIMARY, pricing
|
|
303
|
+
page): *"Pricing follows a transparent two-rate model: $0.10 per line onboarded
|
|
304
|
+
for reverse engineering and $0.20 per line generated for forward engineering."*
|
|
305
|
+
|
|
306
|
+
| Tier | Price | Scope |
|
|
307
|
+
|---|---|---|
|
|
308
|
+
| Sandbox / Reverse Engineer | $0 | self-serve, no card |
|
|
309
|
+
| Concept Validation | $50K | 2 months, guided |
|
|
310
|
+
| Structured Pilot | $250K | 6 months, 5M lines RE / 1.25M generated |
|
|
311
|
+
| Commercial | ~$500K/yr | first 20M lines, Blitzy Cloud VPC |
|
|
312
|
+
| Enterprise | ~$5M/yr | ~50M lines, 2 FDEs |
|
|
313
|
+
| Transformation | ~$50M/yr | ~500M lines, Field CTO + 6 FDEs + 2 designers |
|
|
314
|
+
|
|
315
|
+
That is the furthest point from seat-based SaaS in this entire study, and it is
|
|
316
|
+
the model section 1 argues we need. Someone is already executing it.
|
|
317
|
+
|
|
318
|
+
**They sell our wedge as a priced product.** Reverse engineering at $0.10/line
|
|
319
|
+
is a standalone deliverable: an enterprise can buy ingestion alone and receive
|
|
320
|
+
codebase documentation. "Legacy is unclaimed" takes further damage here, beyond
|
|
321
|
+
what section 3.1 records.
|
|
322
|
+
|
|
323
|
+
**Funding, and a correction to the founder's framing.** $200M at a $1.4B
|
|
324
|
+
valuation, announced 2026-05-05, led by Northzone with PSG, Battery, Jump,
|
|
325
|
+
NFX and others; roughly $204M raised total, so this round is nearly all of it.
|
|
326
|
+
Founded 2023. **"Fully investor led" is confirmed as to backing and refuted as
|
|
327
|
+
to revenue**: they sell $50K to $50M contracts, disclose *"dozens of Global
|
|
328
|
+
2000"* customers, and publish *"$2.91 ARR generated per dollar burned since
|
|
329
|
+
January 2025"*. Unaudited and vendor-stated, but it is a claim to having
|
|
330
|
+
revenue, which is the opposite of investor-funded-only. No ARR or customer
|
|
331
|
+
count is disclosed anywhere primary.
|
|
332
|
+
|
|
333
|
+
**Their benchmark evidence is better than ours.** SWE-Bench Pro Public 66.5%
|
|
334
|
+
(486/731) in March, 84.95% in June, both **commissioned third-party audits** by
|
|
335
|
+
Quesma, who state plainly: *"We were contracted by Blitzy to audit and verify
|
|
336
|
+
their results ... We audited their execution environment and required them to
|
|
337
|
+
apply our recommendations before validating the run."* Verdict: *"We found
|
|
338
|
+
nothing that would affect the score."*
|
|
339
|
+
|
|
340
|
+
Label it precisely: **commissioned audit**, materially stronger than the vendor
|
|
341
|
+
self-run numbers this repo has been burned by, and **not disinterested**, since
|
|
342
|
+
Blitzy chose and paid the auditor. Quesma's own chart caption carries the
|
|
343
|
+
caveat Blitzy's marketing omits: *"All SWE-Bench Pro Public scores are
|
|
344
|
+
self-reported."* No Quesma artifact naming 84.95% was located, and no
|
|
345
|
+
denominator was disclosed for it, so comparability with 486/731 is unconfirmed.
|
|
346
|
+
|
|
347
|
+
### 2.6 Where Blitzy is vulnerable, and why the receipt survives
|
|
348
|
+
|
|
349
|
+
The differentiator holds, but narrowly, and for a reason documented in their
|
|
350
|
+
own docs rather than asserted by us.
|
|
351
|
+
|
|
352
|
+
Blitzy **does** run dynamic validation: test suites, performance benchmarks,
|
|
353
|
+
build and compile checks, lint, static analysis, integration and E2E, CI/CD
|
|
354
|
+
outputs, fed back into generation. They have a Rules engine with a
|
|
355
|
+
`require-test-coverage` rule whose text targets the same anti-pattern our
|
|
356
|
+
mock-integrity and test-mutation detectors do: *"Tests must invoke real
|
|
357
|
+
production functions, not reimplement business logic."*
|
|
358
|
+
|
|
359
|
+
But:
|
|
360
|
+
|
|
361
|
+
- **The documented enforcement of that rule is a human instruction**, not an
|
|
362
|
+
automated verdict: *"Flag any test file where business logic appears outside
|
|
363
|
+
of imports, setup, invocation, or assertions."*
|
|
364
|
+
- **Their primary control point is prose.** The Agent Action Plan is
|
|
365
|
+
human-reviewed (*"your primary control point"*), and the Project Guide
|
|
366
|
+
summarizing what was built and *"what work remains"* is human-readable text.
|
|
367
|
+
- **The burden of recording what went unverified is placed on the human.** The
|
|
368
|
+
reviewer is *"fully accountable"* and must *"document review coverage,
|
|
369
|
+
explicitly state what was reviewed versus what was not."* That is the tell:
|
|
370
|
+
in our system the gaps ledger is emitted by the machine and gates the
|
|
371
|
+
headline; in theirs a person is asked to write down what they did not check.
|
|
372
|
+
- **No documented fail-closed verdict.** Nothing found describes the system
|
|
373
|
+
refusing to call work done when it cannot verify. Their framing is the
|
|
374
|
+
inverse: 80% done, here is the remaining 20%, human adjudicates.
|
|
375
|
+
- **The harness is proprietary and hosted.** They fuse models; we run on Claude
|
|
376
|
+
Code, Codex, Cline and Aider, so the customer keeps the harness and the exit.
|
|
377
|
+
- **No self-serve path to production.** A $50K floor cedes the bottom of the
|
|
378
|
+
market, and their own free-tier limit contradicts itself by 10x across their
|
|
379
|
+
pages (1M lines on the homepage, 100K in the pricing FAQ).
|
|
380
|
+
- **Jobs are not cancelable** and consume quota, under per-line billing.
|
|
381
|
+
|
|
382
|
+
**Stated plainly, because it is the credible version:** for a single artifact
|
|
383
|
+
Blitzy publishes more verification evidence than we do (their curl C-to-Rust
|
|
384
|
+
demo cites 215,153 lines, 7,312 tests passing, Miri and ASan clean, 80.05%
|
|
385
|
+
coverage; vendor self-run and not upstream-accepted). What they do not have is
|
|
386
|
+
a portable, machine-checkable receipt a buyer can re-verify independently, or a
|
|
387
|
+
verdict that refuses to go green when verification did not happen.
|
|
388
|
+
|
|
389
|
+
**Where they beat us outright:** black-box and air-gapped deployment, SOC 2
|
|
390
|
+
Type II and ISO 27001, 100M+ line ingestion as a priced deliverable, in-house
|
|
391
|
+
delivery, commissioned audits, security reachability triage reconciled against
|
|
392
|
+
Snyk, Mend, Sonatype and GitHub Advanced Security, and $200M.
|
|
393
|
+
|
|
394
|
+
## 3. What actually stops the spread past team N
|
|
395
|
+
|
|
396
|
+
Landed from the Large-Org Rollout desk.
|
|
397
|
+
|
|
398
|
+
A standard applies to this whole section, the same one applied to every repo
|
|
399
|
+
measurement above: **a desk's "could not find" is an absent measurement, not a
|
|
400
|
+
finding.** An earlier draft of these headings said REFUTED. That promoted an
|
|
401
|
+
absence past the bar this document holds everywhere else, and it is corrected
|
|
402
|
+
below.
|
|
403
|
+
|
|
404
|
+
### 3.1 The mainframe-exit market is crowded and discredited; this buyer's legacy is JVM and .NET
|
|
405
|
+
|
|
406
|
+
Gartner, June 2026 (SECONDARY reporting of direct quotes; the Gartner release
|
|
407
|
+
itself returned 403): *"More than 70 percent of mainframe exit projects
|
|
408
|
+
initiated in 2026 will fail to produce the intended benefits due to an
|
|
409
|
+
overestimation of generative AI tooling capabilities"*, and *"by 2030, 75
|
|
410
|
+
percent of vendors operating in the 'mainframe exit' market will either pivot
|
|
411
|
+
their business models or cease to exist."* A market with predicted 75% vendor
|
|
412
|
+
mortality is crowded and discredited, not empty.
|
|
413
|
+
|
|
414
|
+
A framing correction that matters more: COBOL and mainframe modernization
|
|
415
|
+
concentrates in banking, insurance and government, exactly the sectors this
|
|
416
|
+
buyer excluded. A media, retail, travel or logistics enterprise's "decades-old
|
|
417
|
+
apps" are Java 6/8, .NET Framework, Struts, Perl, PHP monoliths and on-prem
|
|
418
|
+
Oracle. **Building a legacy strategy from COBOL vendor evidence answers a
|
|
419
|
+
question the founder did not ask.** This sharpens section 4.1 rather than
|
|
420
|
+
weakening it: the JVM and .NET gap IS the legacy gap for this buyer.
|
|
421
|
+
|
|
422
|
+
Scope the Gartner numbers honestly: they cover the **mainframe-exit market**,
|
|
423
|
+
and the desk itself says mainframe is the wrong legacy here. So they refute a
|
|
424
|
+
claim this repo never made. What they do establish is that "AI legacy
|
|
425
|
+
modernization" as a *category* is overclaimed, so it is a poor banner to march
|
|
426
|
+
under even though the underlying work is real.
|
|
427
|
+
|
|
428
|
+
The genuine opening left is narrower and unbranded: Gartner's own
|
|
429
|
+
recommendation of modernization *in place*, plus framework and dependency
|
|
430
|
+
upgrades, dead-code archaeology, ownership reconstruction, and characterization
|
|
431
|
+
tests for untested code. That is adjacent to what healing mode already targets.
|
|
432
|
+
|
|
433
|
+
**Narrowed again by the Blitzy desk (2.5).** Blitzy prices exactly this work as
|
|
434
|
+
a product: $0.10 per line reverse-engineered, sold standalone, explicitly aimed
|
|
435
|
+
at *"the enterprise codebases foundation models have never seen"*, with $200M
|
|
436
|
+
behind it. Non-mainframe brownfield is therefore not unbranded either. Treat
|
|
437
|
+
the remaining opening as the verification and control properties listed at the
|
|
438
|
+
end of 2.2, applied to this work, rather than the work itself.
|
|
439
|
+
|
|
440
|
+
### 3.2 No demand found for attestation as a deliverable; the evidenced pain is review capacity, and the market's answer is triage
|
|
441
|
+
|
|
442
|
+
No practitioner or engineering leader asking for a verification artifact could
|
|
443
|
+
be found. Recorded as an absence, not filled with a weaker source, and **not
|
|
444
|
+
promoted to a refutation**. Two reasons the inference is weak, both visible in
|
|
445
|
+
the desk's own evidence:
|
|
446
|
+
|
|
447
|
+
- It searched for practitioners *asking for* a receipt. Nobody asked for a
|
|
448
|
+
risk-based approval bot either; Zalando built one from pain. "No one
|
|
449
|
+
requested mechanism X" is weak evidence about X when X is a mechanism.
|
|
450
|
+
- The Roblox quote names *"reviewing, validating, and **trusting** it"*. That
|
|
451
|
+
is the trust family, not a move away from it.
|
|
452
|
+
|
|
453
|
+
Three things are being conflated, and only two are evidenced:
|
|
454
|
+
|
|
455
|
+
1. **Verification is costly.** CONFIRMED. DORA 2025: time saved in creation is
|
|
456
|
+
re-allocated to auditing. Stack Overflow 2025: 45.2% say debugging AI code
|
|
457
|
+
takes longer.
|
|
458
|
+
2. **Practitioners want LESS TO READ.** CONFIRMED, verbatim. ITK maintainers:
|
|
459
|
+
*"The current stream of AI generated pull requests is a bit overwhelming to
|
|
460
|
+
me. It is hard for me to review them carefully"*; *"AI-generated code
|
|
461
|
+
requires more careful review than human-written code. Every line is
|
|
462
|
+
suspect."* None of them asked for proof a change had been verified.
|
|
463
|
+
**A receipt is one more artifact to read, not one fewer.**
|
|
464
|
+
3. **Orgs want a machine-checkable artifact.** UNEVIDENCED.
|
|
465
|
+
|
|
466
|
+
What the two best-matched large orgs actually built when they hit this exact
|
|
467
|
+
wall is the strongest available signal, and it is not a receipt:
|
|
468
|
+
|
|
469
|
+
- **Zalando** (250+ teams, retail, non-regulated) built a risk-based PR approval
|
|
470
|
+
bot with rules derived from production incident analysis, auto-approving the
|
|
471
|
+
33% of PRs classified low risk, cutting lead time 20 to 40%. That routes
|
|
472
|
+
scarce human attention; it does not prove correctness.
|
|
473
|
+
- **Roblox**, having named trust as the bottleneck explicitly, built agentic
|
|
474
|
+
guardrails, real-time API access policy, and Exemplar Alignment. Gating and
|
|
475
|
+
alignment to precedent, not attestation.
|
|
476
|
+
|
|
477
|
+
The market's answer to review pain is **triage and gating**, not attestation.
|
|
478
|
+
A receipt converts to value only if it lets a human **skip reading something**,
|
|
479
|
+
that is, only if it drives a routing decision. Zalando's bot is that product
|
|
480
|
+
shape. A signed manifest is not, unless it feeds one.
|
|
481
|
+
|
|
482
|
+
**This does not demote the receipt; it names its destination.** To route any PR
|
|
483
|
+
away from a human you need a signal that says "we checked this and it passed"
|
|
484
|
+
and is distinguishable from "we could not check". That is precisely what the
|
|
485
|
+
receipt is. It also explains why section 4.1 is the top of the backlog rather
|
|
486
|
+
than a competing priority: on a Maven or .NET repo the build fact is `not_run`
|
|
487
|
+
on every run, and `weak` (`proof-generator.py:1563`) collapses `not_run`,
|
|
488
|
+
`inconclusive` and `skipped` into one bucket, so a routing rule reading that
|
|
489
|
+
signal sends **everything** to a human on exactly the repos that are the bulk
|
|
490
|
+
of the estate. Stack coverage is the prerequisite for the routing play, not the
|
|
491
|
+
alternative to it.
|
|
492
|
+
|
|
493
|
+
`project-competitive-anchor-verifiable-receipt` and
|
|
494
|
+
`project-adoption-strategy-v8` are not refuted by a could-not-find. They need a
|
|
495
|
+
qualifier: the receipt earns its keep by driving a routing decision, not by
|
|
496
|
+
existing. That amendment is deliberately deferred until the Delivery Model desk
|
|
497
|
+
lands, since it bears on unit of sale.
|
|
498
|
+
|
|
499
|
+
### 3.3 The binding constraint is review capacity
|
|
500
|
+
|
|
501
|
+
- **Roblox**, QCon AI Boston 2026: *"AI tools are generating more code than
|
|
502
|
+
ever, yet the time it takes to ship that code safely to production remains
|
|
503
|
+
stagnant. The bottleneck has shifted from writing code to reviewing,
|
|
504
|
+
validating, and trusting it."*
|
|
505
|
+
- **Oversight becomes nominal without anyone deciding to abandon it.**
|
|
506
|
+
arXiv 2605.02273 (EASE 2026): most AI-generated PRs receive no review at all;
|
|
507
|
+
when reviewed, agents rather than humans dominate. Review metrics stop
|
|
508
|
+
reflecting human oversight. (Abstract-level only; body extraction failed
|
|
509
|
+
twice, recorded as a gap.)
|
|
510
|
+
- **Agent output inflates PR size, feeding back into the same constraint.**
|
|
511
|
+
Zalando measured the shift into the 500-1k and 1k-2k line buckets and states
|
|
512
|
+
large PRs *"discourage reviewers and slow down delivery."*
|
|
513
|
+
- Trust has not improved with capability: DORA ~30% little or no trust; Stack
|
|
514
|
+
Overflow 3% highly trust, 46% distrust, 66% hit "almost right, but not quite".
|
|
515
|
+
|
|
516
|
+
### 3.4 Per-team harness cost does not amortize the obvious way
|
|
517
|
+
|
|
518
|
+
- arXiv 2602.11988 (ETH Zurich / LogicStar), 138 real tasks, 4 frontier models:
|
|
519
|
+
*"providing context files does not generally improve task success rates,
|
|
520
|
+
while increasing inference cost by over 20% on average."* LLM-generated
|
|
521
|
+
context files *reduced* resolution rates. *"Repository overviews, although
|
|
522
|
+
popular and recommended by model providers, are not helpful."*
|
|
523
|
+
**So the standard scaling answer, a generated CLAUDE.md or AGENTS.md per
|
|
524
|
+
repo, has been tested and does not pay for itself.**
|
|
525
|
+
- Anthropic's own large-codebase guidance (FLAGGED, vendor about own product)
|
|
526
|
+
requires a DRI, dedicated pre-rollout infrastructure work, and a
|
|
527
|
+
configuration review every three to six months; without central governance
|
|
528
|
+
*"knowledge will stay tribal and adoption will plateau."* It concedes the
|
|
529
|
+
hierarchical approach breaks down on some legacy estates and defers guidance.
|
|
530
|
+
|
|
531
|
+
### 3.5 Adoption is social, so mandates do not scale it
|
|
532
|
+
|
|
533
|
+
Microsoft, arXiv 2607.01418, tens of thousands of engineers (FLAGGED:
|
|
534
|
+
Microsoft measuring a Microsoft-owned product, though it also covers a
|
|
535
|
+
competitor's tool and is candid about limits): skip-level peer usage above 25%
|
|
536
|
+
produced **+216% odds of trying**; manager influence was strong on trial
|
|
537
|
+
(+82%) but weak on retention (+22%). Counterintuitively, 60+ days of prior IDE
|
|
538
|
+
Copilot use predicted **12 to 15% LOWER retention**, while active shippers
|
|
539
|
+
(2+ PRs/week) retained at +31%. Pilot enthusiasm is a poor predictor of
|
|
540
|
+
sustained use.
|
|
541
|
+
|
|
542
|
+
### 3.6 The measured-outcome literature, ranked by trustworthiness
|
|
543
|
+
|
|
544
|
+
| Study | Design | Finding | Independence |
|
|
545
|
+
|---|---|---|---|
|
|
546
|
+
| METR, arXiv 2507.09089 | RCT, 16 devs, 246 tasks | **19% SLOWER**, while devs believed they were 20% faster | PRIMARY, non-vendor. Best design, smallest n |
|
|
547
|
+
| DORA 2025 | Large survey | 90% use; ~30% little/no trust; raises throughput AND instability | PRIMARY |
|
|
548
|
+
| Stack Overflow 2025 | Large survey | 84% use; 3% highly trust | PRIMARY |
|
|
549
|
+
| Google, arXiv 2410.12944 | RCT, 96 engineers | ~21% faster, *"confidence interval is large"* | FLAGGED: Google measuring Google tooling |
|
|
550
|
+
| Microsoft, arXiv 2607.01418 | Quasi-experimental | +24.0% PRs/engineer/day | FLAGGED: Microsoft measuring its own product |
|
|
551
|
+
| Faros AI 2026 | Observational telemetry | +441% time in review, 31% merged unreviewed | **VENDOR CLAIM**, sells the measurement platform |
|
|
552
|
+
|
|
553
|
+
The ordering is the finding: the cleanest design found a slowdown, and the two
|
|
554
|
+
large speedups both come from vendors measuring their own products. The widely
|
|
555
|
+
quoted "+441% review time" and "31% merged with zero review" are Faros numbers
|
|
556
|
+
from an observational before/after within customer orgs; the same report carries
|
|
557
|
+
a 15,324% ROI figure, which is the credibility tell for the set.
|
|
558
|
+
|
|
559
|
+
**DORA's amplification finding is the honest answer to "what breaks in
|
|
560
|
+
legacy":** AI amplifies existing organizational capability rather than
|
|
561
|
+
substituting for it. In a hundred-team estate with uneven test maturity that
|
|
562
|
+
predicts divergent outcomes: strong-test teams accelerate, weak-test legacy
|
|
563
|
+
teams get measurably worse. No controlled study isolating agent performance on
|
|
564
|
+
large old codebases with poor tests was found. That is a gap in the literature,
|
|
565
|
+
not something to reason into existence.
|
|
566
|
+
|
|
567
|
+
## 4. Where Loki itself breaks under that load
|
|
568
|
+
|
|
569
|
+
All measured this session, first hand. Every zero carries a positive control
|
|
570
|
+
taken in the same command.
|
|
571
|
+
|
|
572
|
+
### 4.1 The receipt cannot go fully green on a JVM or .NET repo
|
|
573
|
+
|
|
574
|
+
This is the central finding.
|
|
575
|
+
|
|
576
|
+
The main run path classifies a target's build three ways in
|
|
577
|
+
`enforce_build_check` (`autonomy/run.sh:10250`). Only three stacks are
|
|
578
|
+
**runnable**: an npm `build` script, `go build`, and `cargo build`
|
|
579
|
+
(`run.sh:10286-10296`). Maven, Gradle, .NET, sbt, Bazel, Make, CMake, meson,
|
|
580
|
+
autotools, setup.py and pyproject all classify as `present`, which records
|
|
581
|
+
`not_run`.
|
|
582
|
+
|
|
583
|
+
That is deliberate and honest. Four council rounds drove the code to a
|
|
584
|
+
list-free design where an unrecognized build is an honest gap and never a fake
|
|
585
|
+
N/A; the comment at `run.sh:10320` explains that ignorance must not read as
|
|
586
|
+
VERIFIED. **The defect is coverage, not integrity.**
|
|
587
|
+
|
|
588
|
+
The consequence is mechanical:
|
|
589
|
+
|
|
590
|
+
```
|
|
591
|
+
build_class=present -> status not_run
|
|
592
|
+
-> weak = ("not_run","inconclusive","skipped","failed") proof-generator.py:1563
|
|
593
|
+
-> _compute_degraded appends the build item :1592-1597
|
|
594
|
+
-> _compute_degraded feeds _compute_headline :1450-1451
|
|
595
|
+
-> `if tests_verified and not degraded and diff_nonempty: return "VERIFIED"` :1722-1723
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
So a non-empty degraded ledger **caps the run at "VERIFIED WITH GAPS"**. To be
|
|
599
|
+
precise: a `not_run` build does not force NOT VERIFIED (only a `failed` build
|
|
600
|
+
does, through `any_failed`). It caps. A Maven, Gradle, .NET, sbt, Bazel, Make or
|
|
601
|
+
CMake repo can therefore never reach full VERIFIED, on any run, however good the
|
|
602
|
+
work was.
|
|
603
|
+
|
|
604
|
+
Do not conflate two ledgers: disabled-gate entries are appended *after* the
|
|
605
|
+
headline is computed, deliberately (`:1457-1462`), and cannot move the verdict.
|
|
606
|
+
Only the facts-derived `degraded[]` gates it.
|
|
607
|
+
|
|
608
|
+
A second surface is stricter still. `own-render.py:_is_ready`
|
|
609
|
+
(`autonomy/lib/own-render.py:138-141`) requires `facts.build.ran` true and
|
|
610
|
+
status not `not_run` before a run may render green at all. That is one surface
|
|
611
|
+
with a single call site (`run.sh:27129`), written for a non-technical owner, so
|
|
612
|
+
it should be cited as that surface rather than as the universal path.
|
|
613
|
+
|
|
614
|
+
**The tests half fails the same way, and it is worse.** `_is_ready` also
|
|
615
|
+
requires `facts.tests.status` in (passed, verified). `enforce_test_coverage`
|
|
616
|
+
(`run.sh:11844`) has a rich JS/TS branch (declared `scripts.test`, then vitest,
|
|
617
|
+
jest, mocha) plus python, go and cargo. Whole-tree runner coverage across
|
|
618
|
+
`autonomy/`, `loki-ts/src/`, `dashboard/`, `providers/` and `mcp/`:
|
|
619
|
+
|
|
620
|
+
| runner | hits | |
|
|
621
|
+
|---|---|---|
|
|
622
|
+
| pytest | 72 | control |
|
|
623
|
+
| go test | 28 | control |
|
|
624
|
+
| npm test | 27 | control |
|
|
625
|
+
| cargo test | 12 | control |
|
|
626
|
+
| gradle | 9 | every `run.sh` hit is the build-manifest detection list at `:10303-10304`, not a runner |
|
|
627
|
+
| mvn | 1 | `autonomy/hooks/migration-hooks.sh:101`, healing path only |
|
|
628
|
+
| dotnet | 1 | `run.sh:10998`, a comment explicitly deferring C# |
|
|
629
|
+
|
|
630
|
+
A Java-Maven or .NET team therefore fails **both** halves of the green gate: no
|
|
631
|
+
runnable build and no recognized test runner. In a Disney-shaped estate the JVM
|
|
632
|
+
and .NET repos are the bulk of the legacy surface, which is exactly the
|
|
633
|
+
brownfield wedge the product claims. The differentiator is structurally
|
|
634
|
+
unreachable on the repos that matter most.
|
|
635
|
+
|
|
636
|
+
Note the two stack surfaces are separate and must not be conflated.
|
|
637
|
+
`detect_test_command` (`autonomy/hooks/migration-hooks.sh:89`) is a seven-branch
|
|
638
|
+
manifest-at-root chain belonging to the healing and migration path; it has zero
|
|
639
|
+
references in `autonomy/run.sh` (control: `save_state` 28).
|
|
640
|
+
|
|
641
|
+
### 4.2 The escape hatch does not reach the repos that need it
|
|
642
|
+
|
|
643
|
+
An earlier draft of this section called `LOKI_TEST_COMMAND` "undiscoverable".
|
|
644
|
+
That was too generous. Verified: it is **unreachable** on a non-JS repo.
|
|
645
|
+
|
|
646
|
+
Inside `enforce_test_coverage`, the branch that reads it opens with
|
|
647
|
+
`if [ -f "${TARGET_DIR:-.}/package.json" ]` (`run.sh:11855`) and the variable
|
|
648
|
+
is consumed 41 lines later at `run.sh:11896`, still inside that branch. A
|
|
649
|
+
Maven or .NET team cannot use it to point Loki at `mvn verify` or
|
|
650
|
+
`dotnet test`, because control never enters the branch that reads it.
|
|
651
|
+
|
|
652
|
+
It is also absent from **0** user-facing files across `docs/`, `README.md`,
|
|
653
|
+
`SKILL.md` and `wiki/` (controls: `LOKI_PROVIDER` 17 files,
|
|
654
|
+
`LOKI_MAX_ITERATIONS` 17), surfaced only inside a runtime error string on the
|
|
655
|
+
healing path, and absent from the project config map, so it cannot be committed
|
|
656
|
+
per-project. There are 1,116 distinct `LOKI_*` variables in source.
|
|
657
|
+
|
|
658
|
+
### 4.2b The agent is teachable per-repo; the verifier is not
|
|
659
|
+
|
|
660
|
+
This is the sharpest framing of the whole gap. A team CAN teach the agent its
|
|
661
|
+
conventions: `AGENTS.md` is read on the main path (3 references in
|
|
662
|
+
`autonomy/run.sh`). The build gate never consults it: **0** references to
|
|
663
|
+
`AGENTS.md` inside `enforce_build_check` (`run.sh:10250-10410`), against a
|
|
664
|
+
control of 14 `package.json` references in the same range.
|
|
665
|
+
|
|
666
|
+
So team 2 can make the agent behave correctly on their Java service and still
|
|
667
|
+
cannot make the receipt say verified. Onboarding effort buys agent quality and
|
|
668
|
+
buys nothing at all in proof.
|
|
669
|
+
|
|
670
|
+
### 4.2c Route asymmetry: the Bun route turns the same condition into a PASS
|
|
671
|
+
|
|
672
|
+
The bash route records an honest `not_run`. The Bun route does not.
|
|
673
|
+
`loki-ts/src/runner/quality_gates.ts:464-467`:
|
|
674
|
+
|
|
675
|
+
```ts
|
|
676
|
+
if (!existsSync(join(cwd, "package.json"))) {
|
|
677
|
+
return { passed: true, detail: "test_coverage: no test-results.json and no package.json -- skipping" };
|
|
678
|
+
}
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
A repo with no `package.json`, which is every Java, .NET, Go-without-npm and
|
|
682
|
+
Python repo, receives `passed: true` for a suite that never ran. That is a
|
|
683
|
+
skip-as-PASS: precisely the fake-green the bash route was driven over four
|
|
684
|
+
council rounds to eliminate. It is a route asymmetry and it flatters exactly
|
|
685
|
+
the estate this document is about.
|
|
686
|
+
|
|
687
|
+
`loki doctor` does not help. `cmd_doctor` (`autonomy/loki:13186`) is 866 lines
|
|
688
|
+
and every build or test mention concerns provider login or our own detector
|
|
689
|
+
scripts. Nothing in it inspects the user's repo for a build system or a test
|
|
690
|
+
runner. So the fix is to surface the condition where a new team already looks,
|
|
691
|
+
not merely to document a variable.
|
|
692
|
+
|
|
693
|
+
### 4.3 First-run failure data is structurally unobtainable in an enterprise
|
|
694
|
+
|
|
695
|
+
A prior claim of mine, that telemetry says nothing about where a first run
|
|
696
|
+
dies, is **refuted**: `first_run_blocked` exists (`autonomy/telemetry.sh:344`)
|
|
697
|
+
with a blocker enum (`:195-208`) and four real call sites.
|
|
698
|
+
|
|
699
|
+
The real situation is worse than the claim was. That event is gated off twice
|
|
700
|
+
for exactly the target cohort. `_loki_analytics_enabled` (`:271-296`) requires
|
|
701
|
+
telemetry enabled **and** a separate explicit analytics opt-in that defaults
|
|
702
|
+
off, while `_loki_telemetry_auto_off` (`:23-56`) auto-disables on
|
|
703
|
+
`LOKI_ENTERPRISE=true`, `CI`, `GITHUB_ACTIONS`, `JENKINS_URL` and
|
|
704
|
+
non-interactive shells. In a hundred-team enterprise the base gate is off, so
|
|
705
|
+
the analytics gate can never pass.
|
|
706
|
+
|
|
707
|
+
There are two event systems, and an earlier count measured the wrong one:
|
|
708
|
+
|
|
709
|
+
| system | function | destination | events |
|
|
710
|
+
|---|---|---|---|
|
|
711
|
+
| vendor telemetry | `loki_telemetry` (`telemetry.sh:211`) | PostHog (`:55`, `:254`) | 7 |
|
|
712
|
+
| local bus | `emit_event_json` (`run.sh:2552`) | `.loki/events.jsonl` (`:2586`) | 28 |
|
|
713
|
+
|
|
714
|
+
The 28 richest events, including `gate_stuck`, `watchdog_alert`,
|
|
715
|
+
`provider_failover` and `budget_exceeded`, have no upload path and never leave
|
|
716
|
+
the machine. The blocker enum expresses 2 of 6 real failure classes: `timeout`,
|
|
717
|
+
`gate_stuck`, `no_tests`, `build_tool` and `unsupported_language` all measure 0,
|
|
718
|
+
each with controls, even though `gate_stuck` and `no_tests_run`
|
|
719
|
+
(`run.sh:12359`) are already tracked locally.
|
|
720
|
+
|
|
721
|
+
The richest blocker mapping lives inside doctor (`autonomy/loki:14007-14023`).
|
|
722
|
+
The product states the problem itself at `run.sh:3219`: *"loki doctor already
|
|
723
|
+
warns on this, but doctor is opt-in and the run is not."* `start` preflights
|
|
724
|
+
only Claude auth (`:3295-3314`) and provider presence.
|
|
725
|
+
|
|
726
|
+
One positive finding: `LOKI_TELEMETRY_ENDPOINT` is overridable
|
|
727
|
+
(`telemetry.sh:55`, `docs/PRIVACY.md:70`), so a self-hosted collector is
|
|
728
|
+
mechanically possible today.
|
|
729
|
+
|
|
730
|
+
### 4.4 There is no team, org or fleet primitive
|
|
731
|
+
|
|
732
|
+
No org or tenant concept exists. `get_fleet_runs`
|
|
733
|
+
(`autonomy/lib/cockpit-render.sh:141`) is a local registry of runs on one
|
|
734
|
+
machine. `.NET` is additionally invisible to `detect_complexity`
|
|
735
|
+
(`run.sh:3453-3457` counts ts, js, py, go, rs, java, rb, php, swift, kt but no
|
|
736
|
+
`.cs`), so a .NET monolith counts zero source files and classifies as *simple*.
|
|
737
|
+
|
|
738
|
+
Every install is a single user on a single repo. Nothing models the second team.
|
|
739
|
+
|
|
740
|
+
## 5. The backlog
|
|
741
|
+
|
|
742
|
+
Ranking lens, reusing the one already established in this repo rather than
|
|
743
|
+
inventing another: **does this delete a REQUIRED step before first value.**
|
|
744
|
+
|
|
745
|
+
Provisional. The Delivery Model desk may add items that outrank these, since a
|
|
746
|
+
unit-of-sale or accountability primitive could matter more than stack coverage.
|
|
747
|
+
|
|
748
|
+
| # | Item | Evidence | Deletes which required step |
|
|
749
|
+
|---|---|---|---|
|
|
750
|
+
| 1 | Make Maven, Gradle and .NET runnable in `enforce_build_check` and `enforce_test_coverage` | 4.1 | A JVM or .NET team's first run can reach full VERIFIED instead of being capped at WITH GAPS |
|
|
751
|
+
| 2 | Surface undetected build and test in `start`'s preflight and in `doctor`, naming `LOKI_TEST_COMMAND` | 4.2 | A new team learns why its receipt is degraded without reading source |
|
|
752
|
+
| 3 | Local-sink telemetry mode plus a self-hosted collector, shipping `.loki/events.jsonl` | 4.3 | A platform team can see where its teams' first runs die, today impossible |
|
|
753
|
+
| 4 | Promote `gate_stuck` and `no_tests_run` into the blocker enum | 4.3 | Failure causes become expressible rather than collapsing to `other` |
|
|
754
|
+
| 5 | Add `.cs` to `detect_complexity` | 4.4 | A .NET monolith stops classifying as simple |
|
|
755
|
+
| 6 | A team or fleet primitive above the single-repo install | 4.4 | Team 2 inherits team 1's configuration |
|
|
756
|
+
| 7 | Receipt feeds a routing decision: auto-approve low-risk, escalate the rest | 3.2, 3.3 | Removes human review load at steady state. DEPENDS on item 1, since the signal must be real before anything can be routed on it |
|
|
757
|
+
| 8 | Close the Bun-route skip-as-PASS in `quality_gates.ts:464-467` | 4.2c | A non-JS repo stops receiving `passed: true` for a suite that never ran. Arguably a defect, not a gap, and cheap |
|
|
758
|
+
| 9 | Make `LOKI_TEST_COMMAND` reachable outside the `package.json` branch and committable per-project | 4.2 | A Java or .NET team gains any escape hatch at all; today there is none |
|
|
759
|
+
| 10 | Let the build and test gates consult `AGENTS.md` | 4.2b | Per-repo onboarding effort starts buying proof, not just agent behaviour |
|
|
760
|
+
|
|
761
|
+
### 5.1 The commercial backlog
|
|
762
|
+
|
|
763
|
+
Items 1 to 10 make a single run trustworthy on this estate. These make the
|
|
764
|
+
account expandable. They come from the delivery-model evidence in sections 1
|
|
765
|
+
and 2, and they are what the founder actually asked for.
|
|
766
|
+
|
|
767
|
+
| # | Item | Why, from the evidence |
|
|
768
|
+
|---|---|---|
|
|
769
|
+
| C1 | **Account-level onboarding executed once**, inherited by every team: security review, network topology, CI integration, deploy process, ownership map | The product mirror of the MSA. Highest leverage item here, because it is what makes team 2 nearly free (1.3) |
|
|
770
|
+
| C2 | **Land the enterprise agreement at engagement 1**, sized for the account not the pilot: master terms, security posture, data terms, IP assignment, rate card | The entire services advantage is paying for legal, security and procurement once. Then every later team is a work order (1.3) |
|
|
771
|
+
| C3 | **Shape the contract and invoice for the labour budget, not the software budget** | A seat licence competes for a separately governed pool; delivered work under a master agreement draws on a pool already sized for it (1.3) |
|
|
772
|
+
| C4 | **An agent rate card**: price per unit of delivered verified work, tiered. Tier 0 legacy archaeology per artifact; Tier 1 mechanical (dependency upgrades, framework migrations, test backfill) fixed price per unit; Tier 2 bounded features per accepted criterion; Tier 3 ambiguous work priced as capacity | A rate card makes the second purchase arithmetic rather than negotiation. Be honest that Tier 3 cannot carry an outcome commitment (1.3) |
|
|
773
|
+
| C5 | **A generatable one-page SOW** per team engagement: scope, acceptance criteria, capacity, price, the customer's decision-response SLA, and the receipt standard that constitutes proof of delivery | For a services firm an SOW is weeks of human effort. Generated from intake artifacts it becomes a product feature, which is a structural advantage |
|
|
774
|
+
| C6 | **Guarantee against the gate, not against hours**: work that does not pass its stated exogenous gates and acceptance criteria is not billable | Cognition guarantees hours-equivalent value on a legal layer disclaiming fitness (1.2). Acceptance-based is cleaner, cheaper to adjudicate, and is the commercial expression of the trust layer we already have |
|
|
775
|
+
| C7 | **A remedy that is work, not credits**: failed delivery is remediated free and prioritized | Credits for the thing that failed are not a remedy (1.2). Requires the system to reliably re-open its own failed deliveries |
|
|
776
|
+
| C8 | **Account-scoped memory**, not repo-scoped: conventions, deploy topology, owner map, prior decisions, known landmines, reused across teams | Engagement 2 is cheap for Infosys because the people already know the account. We have episodic, semantic and cross-project memory; the gap is promoting it to account scope with explicit cross-team reuse |
|
|
777
|
+
| C9 | **Blocked-state as a first-class terminal outcome**, with a named escalation queue and an SLA clock | An agent that cannot detect its own blocked state cannot be given unsupervised capacity (2.3). Our stagnation valve and PAUSE mechanics are the seed |
|
|
778
|
+
| C10 | **Spec completeness scoring as a hard gate** at intake, emitting a score plus the list of unresolved decisions | The services firm absorbs ambiguity with humans. This is the only way to absorb it without a human per team (1.4) |
|
|
779
|
+
| C11 | **Portfolio control plane**: every stream across every team, in flight, blocked, awaiting decision, delivered with receipt, failed | The single-throat-to-choke surface. Ungovernable means unexpandable (1.4) |
|
|
780
|
+
| C12 | **A deliberately small FDE function with a conversion mandate**: every hour absorbing ambiguity must produce a durable product artifact. Track FDE hours per new team; if it is not falling, the model is not working | Cognition staffs 24 of 65 open roles here; Blitzy bundles FDEs into its price outright. Without the conversion loop this degrades into a services firm with worse margins |
|
|
781
|
+
| C13 | **Commission a third-party audit of a receipt and publish it**, including what the auditor could not verify | Blitzy has commissioned Quesma audits of both its benchmark runs (2.5). We have none. This is the cheapest credible answer to a buyer comparing the two, and our fail-closed posture is the thing an auditor can actually check |
|
|
782
|
+
| C14 | **Publish one worked artifact end to end**, with the receipt alongside the code | Blitzy publishes more verification evidence for a single artifact (curl: 7,312 tests, Miri and ASan clean, 80.05% coverage) than we do publicly, even though ours is machine-checkable and theirs is prose (2.6) |
|
|
783
|
+
|
|
784
|
+
Item 1 must be built by adding runnable stacks, never by loosening the gate.
|
|
785
|
+
Loosening is the fake-green failure this repo exists to prevent, and the
|
|
786
|
+
council has already rejected that direction four times.
|
|
787
|
+
|
|
788
|
+
## Method notes
|
|
789
|
+
|
|
790
|
+
Two of my own errors this session, both caught by re-measuring, both recorded
|
|
791
|
+
because they are the failure mode this doc is most at risk from:
|
|
792
|
+
|
|
793
|
+
- I first generalized the healing path's seven-branch `detect_test_command` as
|
|
794
|
+
the product's whole stack surface. It has zero references in `run.sh`. The
|
|
795
|
+
main path's `enforce_build_check` knows materially more.
|
|
796
|
+
- I first wrote that a `not_run` build "blocks VERIFIED". It caps at VERIFIED
|
|
797
|
+
WITH GAPS. Only a failed build blocks.
|
|
798
|
+
|
|
799
|
+
A third, from the Competitive desk: an initial claim that the SWE-bench
|
|
800
|
+
leaderboard had been dead since mid-2025 was false, caused by a truncated HTML
|
|
801
|
+
listing, and the `gh api` re-measurement produced a sharper finding than the
|
|
802
|
+
wrong one.
|
|
803
|
+
|
|
804
|
+
A fourth, from the Blitzy desk, and it is the clearest demonstration of why
|
|
805
|
+
this document reads raw sources. Two drafted conclusions were **corrected by
|
|
806
|
+
pulling raw bytes instead of trusting a fetch summary**: that Blitzy's 84.95%
|
|
807
|
+
run was unaudited (it was audited, by Quesma, stated at line 24 of their own
|
|
808
|
+
post), and the omission of Quesma's own chart caption, *"All SWE-Bench Pro
|
|
809
|
+
Public scores are self-reported."* Both corrections moved the label in
|
|
810
|
+
**opposite** directions, one toward Blitzy and one away. A summariser had
|
|
811
|
+
compressed away the two sentences the comparison turns on.
|
|
812
|
+
|
|
813
|
+
A fifth, structural rather than factual: a surgical heading edit in section 2
|
|
814
|
+
spliced a fragment and left a line beginning with a bare comma. It was caught
|
|
815
|
+
by re-measuring the file rather than assuming the edit landed, and fixed by
|
|
816
|
+
rewriting the block instead of splicing again.
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The flagship product of [Autonomi](https://www.autonomi.dev/). Loki Mode is a spec-driven autonomous builder with a built-in trust layer that takes any spec to a deployed product and verifies completion with evidence (quality gates plus a completion council), not just a "done" claim. Complete installation instructions for all platforms and use cases.
|
|
4
4
|
|
|
5
|
-
**Version:** v9.
|
|
5
|
+
**Version:** v9.51.1
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
package/loki-ts/dist/loki.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var ht=Object.create;var{getPrototypeOf:gt,defineProperty:jG,getOwnPropertyNames:mt}=Object;var ut=Object.prototype.hasOwnProperty;function dt($){return this[$]}var pt,ct,lt=($,X,Q)=>{var z=$!=null&&typeof $==="object";if(z){var Z=X?pt??=new WeakMap:ct??=new WeakMap,K=Z.get($);if(K)return K}Q=$!=null?ht(gt($)):{};let J=X||!$||!$.__esModule?jG(Q,"default",{value:$,enumerable:!0}):Q;for(let q of mt($))if(!ut.call(J,q))jG(J,q,{get:dt.bind($,q),enumerable:!0});if(z)Z.set($,J);return J};var zq=($,X)=>()=>(X||$((X={exports:{}}).exports,X),X.exports);var it=($)=>$;function at($,X){this[$]=it.bind(null,X)}var B1=($,X)=>{for(var Q in X)jG($,Q,{get:X[Q],enumerable:!0,configurable:!0,set:at.bind(X,Q)})};var s=($,X)=>()=>($&&(X=$($=0)),X);var w5=import.meta.require;var HR={};B1(HR,{lokiDir:()=>h0,homeLokiDir:()=>GQ,findRepoRootForVersion:()=>AG,REPO_ROOT:()=>L1});import{resolve as h2,dirname as LG}from"path";import{fileURLToPath as ot}from"url";import{existsSync as Zq}from"fs";import{homedir as st}from"os";function nt(){let $=UR;for(let X=0;X<6;X++){if(Zq(h2($,"VERSION"))&&Zq(h2($,"autonomy/run.sh")))return $;let Q=LG($);if(Q===$)break;$=Q}return h2(UR,"..","..","..")}function AG($){let X=$;for(let Q=0;Q<6;Q++){if(Zq(h2(X,"VERSION"))&&Zq(h2(X,"autonomy/run.sh")))return X;let z=LG(X);if(z===X)break;X=z}return h2($,"..","..","..")}function h0(){return process.env.LOKI_DIR??h2(process.cwd(),".loki")}function GQ(){return h2(st(),".loki")}var UR,L1;var k1=s(()=>{UR=LG(ot(import.meta.url));L1=nt()});import{readFileSync as rt}from"fs";import{resolve as tt,dirname as et}from"path";import{fileURLToPath as $e}from"url";function j9(){if(n3!==null)return n3;let $="9.
|
|
2
|
+
var ht=Object.create;var{getPrototypeOf:gt,defineProperty:jG,getOwnPropertyNames:mt}=Object;var ut=Object.prototype.hasOwnProperty;function dt($){return this[$]}var pt,ct,lt=($,X,Q)=>{var z=$!=null&&typeof $==="object";if(z){var Z=X?pt??=new WeakMap:ct??=new WeakMap,K=Z.get($);if(K)return K}Q=$!=null?ht(gt($)):{};let J=X||!$||!$.__esModule?jG(Q,"default",{value:$,enumerable:!0}):Q;for(let q of mt($))if(!ut.call(J,q))jG(J,q,{get:dt.bind($,q),enumerable:!0});if(z)Z.set($,J);return J};var zq=($,X)=>()=>(X||$((X={exports:{}}).exports,X),X.exports);var it=($)=>$;function at($,X){this[$]=it.bind(null,X)}var B1=($,X)=>{for(var Q in X)jG($,Q,{get:X[Q],enumerable:!0,configurable:!0,set:at.bind(X,Q)})};var s=($,X)=>()=>($&&(X=$($=0)),X);var w5=import.meta.require;var HR={};B1(HR,{lokiDir:()=>h0,homeLokiDir:()=>GQ,findRepoRootForVersion:()=>AG,REPO_ROOT:()=>L1});import{resolve as h2,dirname as LG}from"path";import{fileURLToPath as ot}from"url";import{existsSync as Zq}from"fs";import{homedir as st}from"os";function nt(){let $=UR;for(let X=0;X<6;X++){if(Zq(h2($,"VERSION"))&&Zq(h2($,"autonomy/run.sh")))return $;let Q=LG($);if(Q===$)break;$=Q}return h2(UR,"..","..","..")}function AG($){let X=$;for(let Q=0;Q<6;Q++){if(Zq(h2(X,"VERSION"))&&Zq(h2(X,"autonomy/run.sh")))return X;let z=LG(X);if(z===X)break;X=z}return h2($,"..","..","..")}function h0(){return process.env.LOKI_DIR??h2(process.cwd(),".loki")}function GQ(){return h2(st(),".loki")}var UR,L1;var k1=s(()=>{UR=LG(ot(import.meta.url));L1=nt()});import{readFileSync as rt}from"fs";import{resolve as tt,dirname as et}from"path";import{fileURLToPath as $e}from"url";function j9(){if(n3!==null)return n3;let $="9.51.1";if(typeof $==="string"&&$.length>0)return n3=$,n3;try{let X=et($e(import.meta.url)),Q=AG(X);n3=rt(tt(Q,"VERSION"),"utf-8").trim()}catch{n3="unknown"}return n3}var n3=null;var Kq=s(()=>{k1()});var jR={};B1(jR,{runOrThrow:()=>Me,run:()=>$1,readStreamCapped:()=>Jq,commandVersion:()=>je,commandExists:()=>g5,ShellError:()=>TG,MAX_STDOUT_BYTES:()=>OR});async function Jq($,X=OR){let Q=$.getReader(),z=new TextDecoder,Z="",K=0;try{while(K<X){let{done:J,value:q}=await Q.read();if(J)break;if(!q)continue;if(K+=q.byteLength,K>X){let V=q.byteLength-(K-X);Z+=z.decode(q.subarray(0,V),{stream:!0});break}Z+=z.decode(q,{stream:!0})}Z+=z.decode()}finally{try{await Q.cancel()}catch{}Q.releaseLock()}return Z}async function $1($,X={}){let Q=Bun.spawn({cmd:[...$],stdout:"pipe",stderr:"pipe",env:X.env?{...process.env,...X.env}:process.env,cwd:X.cwd}),z,Z;if(X.timeoutMs&&X.timeoutMs>0)z=setTimeout(()=>{try{Q.kill("SIGTERM")}catch{}Z=setTimeout(()=>{try{Q.kill("SIGKILL")}catch{}},2000)},X.timeoutMs);try{let[K,J,q]=await Promise.all([Jq(Q.stdout),new Response(Q.stderr).text(),Q.exited]);return{stdout:K,stderr:J,exitCode:q}}finally{if(z)clearTimeout(z);if(Z)clearTimeout(Z)}}async function Me($,X={}){let Q=await $1($,X);if(Q.exitCode!==0)throw new TG(`command failed (${Q.exitCode}): ${$.join(" ")}`,Q.exitCode,Q.stdout,Q.stderr);return Q}async function g5($){let X=Oe($),Q=await $1(["sh","-c",`command -v ${X}`],{timeoutMs:5000});if(Q.exitCode===0)return Q.stdout.trim()||null;return null}function Oe($){if(!/^[A-Za-z0-9._/-]+$/.test($))throw Error(`refused to shell-escape suspect token: ${$}`);return $}async function je($,X="--version"){if(!await g5($))return null;let z=await $1([$,X],{timeoutMs:5000});if(z.exitCode!==0)return null;return((z.stdout||z.stderr).split(/\r?\n/)[0]?.trim()??"")||null}var OR=16777216,TG;var y8=s(()=>{TG=class TG extends Error{message;exitCode;stdout;stderr;constructor($,X,Q,z){super($);this.message=$;this.exitCode=X;this.stdout=Q;this.stderr=z;this.name="ShellError"}}});function g2($){return Le?"":$}var Le,p0,$5,q1,F61,A1,f1,m5,r;var t7=s(()=>{Le=(process.env.NO_COLOR??"").length>0;p0=g2("\x1B[0;31m"),$5=g2("\x1B[0;32m"),q1=g2("\x1B[1;33m"),F61=g2("\x1B[0;34m"),A1=g2("\x1B[0;36m"),f1=g2("\x1B[1m"),m5=g2("\x1B[2m"),r=g2("\x1B[0m")});import{existsSync as Ee}from"fs";async function Z2(){if(BQ!==void 0)return BQ;let $="/opt/homebrew/bin/python3.12";if(Ee($))return BQ=$,$;let X=await g5("python3.12");if(X)return BQ=X,X;let Q=await g5("python3");return BQ=Q,Q}async function I4($,X={}){let Q=await Z2();if(!Q)return{stdout:"",stderr:"python3 not found",exitCode:127};return $1([Q,"-c",$],X)}var BQ;var m2=s(()=>{y8()});var hR={};B1(hR,{runStatus:()=>$00});import{existsSync as u5,readFileSync as C9,readdirSync as xR,statSync as kR}from"fs";import{resolve as A5,basename as le}from"path";import{homedir as ie}from"os";function SR($){let X=Math.trunc($);if(X>=1e6)return`${(Math.trunc(X/1e6*10)/10).toFixed(1)}M`;if(X>=1000)return`${(Math.trunc(X/1000*10)/10).toFixed(1)}K`;return String(X)}function yR($,X,Q){if(X===0)return null;let z=Math.trunc($*100/X),Z=Math.trunc($*Vq/X);if(Z>Vq)Z=Vq;let K=Vq-Z,J=$5;if(z>=80)J=p0;else if(z>=50)J=q1;let q="=".repeat(Math.max(0,Z))+" ".repeat(Math.max(0,K)),V=SR($),Y=SR(X);return` ${f1}${Q}${r} ${J}[${q}]${r} ${z}% (${V} / ${Y})`}async function oe(){if(await g5("jq"))return!0;return process.stdout.write(`${p0}Error: jq is required but not installed.${r}
|
|
3
3
|
`),process.stdout.write(`Install with:
|
|
4
4
|
`),process.stdout.write(` brew install jq (macOS)
|
|
5
5
|
`),process.stdout.write(` apt install jq (Debian/Ubuntu)
|
|
@@ -1337,4 +1337,4 @@ Set LOKI_LEGACY_BASH=1 to force the bash CLI for every command.
|
|
|
1337
1337
|
`),2}case"start":{let{runStart:z}=await Promise.resolve().then(() => (ft(),bt));return z(Q)}default:return process.stderr.write(`Unknown command: ${X}
|
|
1338
1338
|
`),process.stderr.write(_t),2}}PR();process.on("SIGINT",()=>process.exit(130));process.on("SIGTERM",()=>process.exit(143));var J61=await K61(Bun.argv.slice(2));process.exit(J61);
|
|
1339
1339
|
|
|
1340
|
-
//# debugId=
|
|
1340
|
+
//# debugId=96F4197027C74296F216F4EC0213615F
|
package/mcp/__init__.py
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "loki-mode",
|
|
3
3
|
"mcpName": "io.github.asklokesh/loki-mode",
|
|
4
|
-
"version": "9.
|
|
4
|
+
"version": "9.51.1",
|
|
5
5
|
"description": "Loki Mode by Autonomi. Autonomous spec-to-product system: takes a PRD, GitHub issue, OpenAPI/JSON/YAML, or one-line brief to a deployed app via the RARV-C closure loop with 8 quality gates. Provider-agnostic (Claude Code, OpenAI Codex, Cline, Aider, opencode).",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"agent",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "loki-mode",
|
|
4
4
|
"displayName": "Loki Mode",
|
|
5
|
-
"version": "9.
|
|
5
|
+
"version": "9.51.1",
|
|
6
6
|
"description": "Autonomous spec-to-product build system with a built-in trust layer (RARV-C closure loop, 8 quality gates, completion council). Ships Loki's spec-hardening, drift-detection, and deterministic PR verification commands plus the Loki MCP server.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Autonomi",
|