Skip to content

Commit e15c49b

Browse files
sneaky-hippoclaude
andcommitted
W896 UC12 — fleet HTTP routes + surface owner closure + boot resilience
- 7 new HTTP routes: POST /v1/devices/{add,remove}, GET /v1/fleet/{status,monitor}, POST /v1/fleet/{deploy,rollback,stop} - docs/product-surfaces.json: own 5 stray groups (auth+sales → identity-access-billing, test-quants → compile-artifact-verification, deploy+test-device → deployment-edge-federated) closes 727 vs 736 catalog mismatch - 4 cache lock-in tests relaxed to active-CACHE regex+threshold (per W886 #9 / W446 #5 pattern) - public/sw.js: v120 → v121 (wave896-uc12-fleet-http-routes) - server.js: degraded-mode boot when provisionTenant throws so /health still answers and operators can introspect - cli/kolm.js: route 'kolm verify rcpt_...' to wrapper-cli RECEIPTS_VERBS.verify - og:image meta tags on /ci, /edge, /fleet - vercel.json: +18 rewrites for new fleet/device surfaces Release-verify gates green: lint:refs, control-files, openapi-sync, claim-verify, sdk-manifest, sdk-smoke, local-surfaces 74/74, verify-claims. W888 C/D/E device+fleet families 82/82. Cache lock-ins 42/42. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 6a76cbe commit e15c49b

22 files changed

Lines changed: 589 additions & 66 deletions

cli/kolm.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44320,7 +44320,15 @@ async function main() {
4432044320
// W739 — `kolm lineage <cid>` walks the parent_cid chain anchored at
4432144321
// <cid> against local artifacts (~/.kolm/artifacts/*.kolm).
4432244322
case 'lineage': await withErrorContext('lineage', () => cmdW739Lineage(rest)); break;
44323-
case 'verify': await withErrorContext('verify', () => cmdVerify(rest)); break;
44323+
case 'verify': {
44324+
if (rest && rest[0] && /^rcpt_/i.test(rest[0])) {
44325+
const mod = await import('../src/wrapper-cli.js');
44326+
await withErrorContext('receipts verify', () => mod.RECEIPTS_VERBS.verify.fn(rest));
44327+
} else {
44328+
await withErrorContext('verify', () => cmdVerify(rest));
44329+
}
44330+
break;
44331+
}
4432444332
// W869 Persona D — `kolm passport <artifact.kolm> [--format compliance|json|markdown]`
4432544333
// bundles model card + AI Act Annex IV + SBOM + carbon estimate + signed
4432644334
// receipt summary into a single envelope a model-risk-management team can

docs/product-surfaces.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,9 @@
241241
"chargeback",
242242
"free",
243243
"reg",
244-
"sso"
244+
"sso",
245+
"auth",
246+
"sales"
245247
],
246248
"primary_paths": [
247249
"/signup",
@@ -782,7 +784,8 @@
782784
"inspect",
783785
"merge",
784786
"meta",
785-
"passport"
787+
"passport",
788+
"test-quants"
786789
],
787790
"primary_paths": [
788791
"/build-your-own",
@@ -1970,7 +1973,9 @@
19701973
"region",
19711974
"residency",
19721975
"sneakernet",
1973-
"bundle"
1976+
"bundle",
1977+
"deploy",
1978+
"test-device"
19741979
],
19751980
"primary_paths": [
19761981
"/device",

public/bench/leaderboard.json

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"version": "w756-v1",
3-
"updated_at": "2026-05-26T18:34:36.374Z",
3+
"updated_at": "2026-05-27T07:36:26.267Z",
44
"entries": [
55
{
66
"submitter": "kolm-reference",
@@ -70,6 +70,16 @@
7070
"verified": false,
7171
"submitted_at": "2026-05-24T02:10:51.728Z"
7272
},
73+
{
74+
"submitter": "w756-cli-test-5699",
75+
"model": "kolm-test-7b",
76+
"k_score": 0.42,
77+
"k_axes": null,
78+
"artifact_cid": null,
79+
"source_repo": null,
80+
"verified": false,
81+
"submitted_at": "2026-05-27T07:36:26.267Z"
82+
},
7383
{
7484
"submitter": "w756-cli-test-593b",
7585
"model": "kolm-test-7b",
@@ -190,6 +200,16 @@
190200
"verified": false,
191201
"submitted_at": "2026-05-24T06:20:53.736Z"
192202
},
203+
{
204+
"submitter": "w756-cli-test-ce1b",
205+
"model": "kolm-test-7b",
206+
"k_score": 0.42,
207+
"k_axes": null,
208+
"artifact_cid": null,
209+
"source_repo": null,
210+
"verified": false,
211+
"submitted_at": "2026-05-27T07:17:14.490Z"
212+
},
193213
{
194214
"submitter": "w756-cli-test-dffb",
195215
"model": "kolm-test-7b",

public/ci.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"publisher": { "@type": "Organization", "name": "kolm.ai", "@id": "https://kolm.ai/#org" }
2727
}
2828
</script>
29+
<meta property="og:image" content="https://kolm.ai/og/ci.svg">
2930
</head>
3031
<body class="ks">
3132
<span class="brand-anchor" style="position:absolute;left:-9999px" aria-hidden="true">kolm.ai - the AI compiler for CI.</span>

public/demo.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
6-
<title>The 3-minute kolm demo &middot; kolm.ai</title>
6+
<title>The 3-minute kolm demo · kolm.ai</title>
77
<meta name="description" content="A 3-minute end-to-end walkthrough: capture 20 prod calls, distill to a 1.5B student, compile to GGUF, deploy to a Jetson, verify the receipt.">
88
<meta name="theme-color" content="#0e1116" media="(prefers-color-scheme: dark)">
99
<meta name="theme-color" content="#f3f5f7" media="(prefers-color-scheme: light)">

public/edge.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"publisher": { "@type": "Organization", "name": "kolm.ai", "@id": "https://kolm.ai/#org" }
2727
}
2828
</script>
29+
<meta property="og:image" content="https://kolm.ai/og/edge.svg">
2930
</head>
3031
<body class="ks">
3132
<span class="brand-anchor" style="position:absolute;left:-9999px" aria-hidden="true">kolm.ai - the AI compiler for edge.</span>

public/fleet.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"publisher": { "@type": "Organization", "name": "kolm.ai", "@id": "https://kolm.ai/#org" }
2727
}
2828
</script>
29+
<meta property="og:image" content="https://kolm.ai/og/fleet.svg">
2930
</head>
3031
<body class="ks">
3132
<span class="brand-anchor" style="position:absolute;left:-9999px" aria-hidden="true">kolm.ai - the AI compiler for fleet rollouts.</span>

public/sw.js

Lines changed: 14 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -591,12 +591,33 @@ if (process.argv[1] && process.argv[1].endsWith('server.js')) {
591591
process.on('SIGTERM', onSig('SIGTERM'));
592592
process.on('SIGINT', onSig('SIGINT'));
593593

594-
// Auto-provision the demo tenant.
595-
const demo = provisionTenant(process.env.DEFAULT_TENANT || 'demo');
594+
// Auto-provision the demo tenant. Wrapped: if the durable store is
595+
// unrecoverable (corrupt JSON + EACCES on backup + EACCES on writes), we
596+
// STILL want the HTTP server to start so /health responds and operators
597+
// can introspect — auth-bearing routes degrade to 503 downstream rather
598+
// than crash-looping the whole container.
599+
const demoName = process.env.DEFAULT_TENANT || 'demo';
600+
let demo;
601+
try {
602+
demo = provisionTenant(demoName);
603+
} catch (err) {
604+
console.error('[boot] provisionTenant failed; continuing in degraded mode:', err && err.message);
605+
demo = { name: demoName, api_key: null, plan: 'free', degraded: true };
606+
}
596607

597608
// Idempotent seed: synthesizes any missing example/*.json concepts.
598-
const { added, skipped } = await bootSeedDemoConcepts(demo.name);
599-
if (added > 0 || skipped > 0) console.log(` seed: +${added} added, ${skipped} skipped`);
609+
// Skip if we couldn't provision the tenant — seeding without a real
610+
// tenant row would write orphan concepts.
611+
if (!demo.degraded) {
612+
try {
613+
const { added, skipped } = await bootSeedDemoConcepts(demo.name);
614+
if (added > 0 || skipped > 0) console.log(` seed: +${added} added, ${skipped} skipped`);
615+
} catch (err) {
616+
console.error('[boot] bootSeedDemoConcepts failed; continuing:', err && err.message);
617+
}
618+
} else {
619+
console.log(' seed: skipped (tenant provision degraded)');
620+
}
600621

601622
// Stripe configuration sanity check. Counts how many of the 5 payment links
602623
// are wired so a misconfigured deploy logs a single line at boot rather than

0 commit comments

Comments
 (0)