clearotron 0.3.2-beta.0 → 0.3.2-beta.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/build-info.json +2 -2
- package/driver/CHANGELOG.md +7 -0
- package/driver/contract-e3-backlog.mjs +1 -1
- package/driver/package.json +1 -1
- package/driver/partial-payload-baseline.json +1 -1
- package/driver/pipeline.mjs +3 -3
- package/driver/portal-families.mjs +1 -1
- package/driver/predelivery-lint.mjs +23 -1
- package/driver/publish/index.mjs +24 -1
- package/driver/publish/report-data.mjs +2 -1
- package/driver/publish/search-depth.mjs +178 -0
- package/driver/suite-census.json +14 -2
- package/driver/terminal-clamp.mjs +41 -0
- package/mcp-server/CHANGELOG.md +4 -0
- package/mcp-server/package.json +1 -1
- package/package.json +1 -1
- package/portal-ui/dist/assets/{index-ChIQsMYp.js → index-BsbasHjM.js} +3350 -3288
- package/portal-ui/dist/assets/{index-DBIs21e4.css → index-DNQpLYZF.css} +17 -1
- package/portal-ui/dist/index.html +2 -2
- package/portal-ui/package.json +1 -1
- package/providers/oauth-mcp-bridge/CHANGELOG.md +4 -0
- package/providers/oauth-mcp-bridge/package.json +1 -1
- package/scripts/freeze-example-run.mjs +27 -27
|
@@ -1960,8 +1960,20 @@ input.filter {
|
|
|
1960
1960
|
color: var(--text-strong); white-space: nowrap;
|
|
1961
1961
|
}
|
|
1962
1962
|
.home2-band-label.faint { color: var(--text-faint); }
|
|
1963
|
-
|
|
1963
|
+
/* THE SAME SIZE AND COLOUR AS THE CAPACITY LINE OPPOSITE, because the two are one sentence read across
|
|
1964
|
+
the band: what is happening on the left, how much can happen at once on the right. It carried `mono`
|
|
1965
|
+
while it was a single total, which read as a machine's counter rather than as a statement. `nowrap`
|
|
1966
|
+
because it is now a breakdown — "2 running · 1 paused · 2 queued" — and breaking it mid-clause puts
|
|
1967
|
+
a number on its own line. */
|
|
1968
|
+
.home2-band-count { font-size: 11.5px; color: var(--text-faint); white-space: nowrap; }
|
|
1964
1969
|
.home2-band-rule { height: 1px; background: var(--border-hairline); }
|
|
1970
|
+
|
|
1971
|
+
/* A RUNNING RUN AS A ROW. The queue's grid, with the two columns a running row has and a waiting one
|
|
1972
|
+
does not. Declared as a modifier rather than a new grid so the narrow-screen rule that hides columns
|
|
1973
|
+
keeps one definition for both. */
|
|
1974
|
+
.home2-runrows { display: flex; flex-direction: column; gap: 1px; margin-bottom: 18px; }
|
|
1975
|
+
.home2-runrow .home2-qstep { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; }
|
|
1976
|
+
.home2-runrow .home2-qreason { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; }
|
|
1965
1977
|
.home2-band-note {
|
|
1966
1978
|
font-size: 11.5px; color: var(--text-faint); text-align: right;
|
|
1967
1979
|
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
@@ -2045,6 +2057,10 @@ input.filter {
|
|
|
2045
2057
|
display: flex; align-items: center; gap: 10px;
|
|
2046
2058
|
}
|
|
2047
2059
|
.home2-reason { flex: 1; min-width: 0; font-size: 12.5px; color: var(--text-muted); }
|
|
2060
|
+
/* QUIETER THAN THE ELAPSED TIME IT FOLLOWS. The elapsed line is this run's own fact; the quote beside it
|
|
2061
|
+
is the standing one for its pipeline, and a reader who wants to know how long this has been going
|
|
2062
|
+
should meet that first. Same line, one step back in the hierarchy. */
|
|
2063
|
+
.home2-expect { font-size: 12.5px; color: var(--text-faint); white-space: nowrap; }
|
|
2048
2064
|
.home2-reason.paused { color: var(--tone-medium); }
|
|
2049
2065
|
.home2-reason.failed { color: var(--tone-high); }
|
|
2050
2066
|
.home2-stop, .home2-cancel, .home2-ack {
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
-->
|
|
50
50
|
<link rel="preconnect" href="https://api.fontshare.com" crossorigin />
|
|
51
51
|
<link href="https://api.fontshare.com/v2/css?f[]=satoshi@400,500,700,900&display=swap" rel="stylesheet" />
|
|
52
|
-
<script type="module" crossorigin src="/portal/assets/index-
|
|
53
|
-
<link rel="stylesheet" crossorigin href="/portal/assets/index-
|
|
52
|
+
<script type="module" crossorigin src="/portal/assets/index-BsbasHjM.js"></script>
|
|
53
|
+
<link rel="stylesheet" crossorigin href="/portal/assets/index-DNQpLYZF.css">
|
|
54
54
|
</head>
|
|
55
55
|
<body>
|
|
56
56
|
<div id="root"></div>
|
package/portal-ui/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "portal-ui",
|
|
3
3
|
"private": true,
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "0.3.2-beta.
|
|
5
|
+
"version": "0.3.2-beta.1",
|
|
6
6
|
"license": "AGPL-3.0-only",
|
|
7
7
|
"description": "The unified trademark portal UI. One address, one login: who you are decides what you see. Built as a static bundle, served by driver/portal-service.mjs — the browser never reaches profile-service or recipe-service.",
|
|
8
8
|
"engines": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trademark-oauth-mcp-bridge",
|
|
3
|
-
"version": "0.3.2-beta.
|
|
3
|
+
"version": "0.3.2-beta.1",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"private": true,
|
|
6
6
|
"description": "OAuth 2.1 MCP stdio bridge used by the engine's case-law gather stage (courtlistener / legaldatahunter).",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
// _driver/run.jsonl the event log
|
|
30
30
|
// _driver/stage-inputs/ what each stage was handed
|
|
31
31
|
// _history/ pre-reopen snapshots
|
|
32
|
-
// Dropping the telemetry drops `meta.tokens` (driver/publish/index.mjs:
|
|
32
|
+
// Dropping the telemetry drops `meta.tokens` (driver/publish/index.mjs:1136 rollupTokens — the only consumer of
|
|
33
33
|
// rollupTokens). That is the one difference step 5 is told to expect, and it says so out loud rather than
|
|
34
34
|
// normalising it away in silence.
|
|
35
35
|
//
|
|
@@ -55,26 +55,26 @@ const REPO = join(dirname(fileURLToPath(import.meta.url)), "..");
|
|
|
55
55
|
// Every entry cites the read that puts it here. `required` means publish cannot render without it.
|
|
56
56
|
const FROZEN_FILES = [
|
|
57
57
|
// publish/index.mjs — parseReport(reportMd), the one mandatory input
|
|
58
|
-
{ path: "report.md", required: true, why: "publish/index.mjs:
|
|
59
|
-
{ path: "audit.md", why: "publish/index.mjs:
|
|
60
|
-
{ path: "findings.json", why: "publish/index.mjs:
|
|
61
|
-
{ path: "status.json", why: "publish/index.mjs:
|
|
62
|
-
{ path: "case-law-findings.md", why: "publish/index.mjs:
|
|
63
|
-
{ path: "common-law-grid.json", why: "publish/index.mjs:
|
|
58
|
+
{ path: "report.md", required: true, why: "publish/index.mjs:650 parseReport" },
|
|
59
|
+
{ path: "audit.md", why: "publish/index.mjs:1022 auditMd, the audit workbook source" },
|
|
60
|
+
{ path: "findings.json", why: "publish/index.mjs:715 readStore, the per-finding machine contract" },
|
|
61
|
+
{ path: "status.json", why: "publish/index.mjs:913 machineLedgerNote + markName" },
|
|
62
|
+
{ path: "case-law-findings.md", why: "publish/index.mjs:849 clPath, the case-law section" },
|
|
63
|
+
{ path: "common-law-grid.json", why: "publish/index.mjs:973 commonLawJoinedTerms, common-law coverage" },
|
|
64
64
|
// publish/index.mjs — the _driver sidecars it reads by name
|
|
65
|
-
{ path: "_driver/receipts.json", why: "publish/index.mjs:
|
|
66
|
-
{ path: "_driver/senior-rights.json", why: "publish/index.mjs:
|
|
67
|
-
{ path: "_driver/verdict.json", why: "publish/index.mjs:
|
|
68
|
-
{ path: "_driver/framework.json", why: "publish/index.mjs
|
|
69
|
-
{ path: "_driver/register-plan.json", why: "publish/index.mjs:
|
|
70
|
-
{ path: "_driver/instructed-scope.json", why: "publish/index.mjs:
|
|
71
|
-
{ path: "_driver/enforcer-signals.json", why: "publish/index.mjs:
|
|
72
|
-
{ path: "_driver/predelivery-lint.json", why: "publish/index.mjs:
|
|
73
|
-
{ path: "_driver/escalation-state.json", why: "publish/index.mjs:
|
|
74
|
-
{ path: "_driver/reasoning-integrity.json", why: "publish/index.mjs:
|
|
75
|
-
{ path: "_driver/corrections-state.json", why: "publish/index.mjs:
|
|
76
|
-
{ path: "_driver/search-policy.json", why: "publish/index.mjs:
|
|
77
|
-
{ path: "_driver/profile.json", why: "publish/index.mjs
|
|
65
|
+
{ path: "_driver/receipts.json", why: "publish/index.mjs:761 fetchReceipts" },
|
|
66
|
+
{ path: "_driver/senior-rights.json", why: "publish/index.mjs:787 seniorRights" },
|
|
67
|
+
{ path: "_driver/verdict.json", why: "publish/index.mjs:792 verdictInfo" },
|
|
68
|
+
{ path: "_driver/framework.json", why: "publish/index.mjs, the frozen band vocabulary the run was rated under" },
|
|
69
|
+
{ path: "_driver/register-plan.json", why: "publish/index.mjs:820 scopeBasis" },
|
|
70
|
+
{ path: "_driver/instructed-scope.json", why: "publish/index.mjs:821 searchedJurisdictions, the fallback for register-plan" },
|
|
71
|
+
{ path: "_driver/enforcer-signals.json", why: "publish/index.mjs:861 esPath" },
|
|
72
|
+
{ path: "_driver/predelivery-lint.json", why: "publish/index.mjs:170 lintSink" },
|
|
73
|
+
{ path: "_driver/escalation-state.json", why: "publish/index.mjs:171 escSink" },
|
|
74
|
+
{ path: "_driver/reasoning-integrity.json", why: "publish/index.mjs:898 integritySink" },
|
|
75
|
+
{ path: "_driver/corrections-state.json", why: "publish/index.mjs:172 correctionsSink" },
|
|
76
|
+
{ path: "_driver/search-policy.json", why: "publish/index.mjs:955 searchPolicy, level + stage label" },
|
|
77
|
+
{ path: "_driver/profile.json", why: "publish/index.mjs reads the frozen profile; report-registry.mjs:42 republishRun, customer key" },
|
|
78
78
|
];
|
|
79
79
|
|
|
80
80
|
// ── THE KNOCKOUT LANE IS A DIFFERENT WORKSPACE, AND report.md IS NOT IN IT ─
|
|
@@ -91,22 +91,22 @@ const KNOCKOUT_FILES = [
|
|
|
91
91
|
{ path: "knockout-assessment.md", why: "the merged prose the lane writes (gateway.mjs:184)" },
|
|
92
92
|
{ path: "knockout-frame.md", why: "the batch scope note (gateway.mjs:65)" },
|
|
93
93
|
{ path: "email-body.md", why: "the delivery prose the lane writes beside the assessment" },
|
|
94
|
-
{ path: "status.json", why: "publish/index.mjs:
|
|
95
|
-
{ path: "audit.md", why: "publish/index.mjs:
|
|
94
|
+
{ path: "status.json", why: "publish/index.mjs:913 machineLedgerNote + markName" },
|
|
95
|
+
{ path: "audit.md", why: "publish/index.mjs:1022 auditMd, the audit workbook source" },
|
|
96
96
|
// The _driver sidecars publishKnockout reads by name. framework.json is REQUIRED and says so at its
|
|
97
97
|
// call site: a knockout re-rendered under today's bands would silently restate its verdict.
|
|
98
98
|
{ path: "_driver/framework.json", required: true, why: "report-registry.mjs:68 the bands it was rated under" },
|
|
99
99
|
{ path: "_driver/search-policy.json", why: "report-registry.mjs:71 level + stage label" },
|
|
100
100
|
{ path: "_driver/profile.json", why: "report-registry.mjs:72 customer key and the delivery overlay" },
|
|
101
|
-
{ path: "_driver/verdict.json", why: "publish/index.mjs:
|
|
102
|
-
{ path: "_driver/receipts.json", why: "publish/index.mjs:
|
|
101
|
+
{ path: "_driver/verdict.json", why: "publish/index.mjs:792 verdictInfo" },
|
|
102
|
+
{ path: "_driver/receipts.json", why: "publish/index.mjs:761 fetchReceipts" },
|
|
103
103
|
// THE COUNT SIDECARS, AND THE PROOF IS WHAT FOUND THEM. Without register-counts.json the republished
|
|
104
104
|
// meta carries `registerCounts: undefined` where the source carried the provider, the taken-at stamp
|
|
105
105
|
// and the per-mark counts — so the workbook's Register column and every counted figure in the
|
|
106
106
|
// knockout report render empty (publish/knockout.mjs:140-155). Named by stages-knockout.mjs:32,41.
|
|
107
107
|
{ path: "_driver/register-counts.json", why: "publish/knockout.mjs:140-155 counted figures + the Register column" },
|
|
108
108
|
{ path: "_driver/register-records.json", why: "stages-knockout.mjs:41 the terms behind the close-variation axis" },
|
|
109
|
-
{ path: "_driver/instructed-scope.json", why: "publish/index.mjs:
|
|
109
|
+
{ path: "_driver/instructed-scope.json", why: "publish/index.mjs:821 searchedJurisdictions, the fallback for register-plan" },
|
|
110
110
|
];
|
|
111
111
|
|
|
112
112
|
/** The allowlist for a template. One place, so a new template cannot half-exist. */
|
|
@@ -161,8 +161,8 @@ const SCRUB = [
|
|
|
161
161
|
// what varies and why, and step 5 prints them — a normalisation nobody can see is a normalisation that
|
|
162
162
|
// hides the next real difference.
|
|
163
163
|
const VOLATILE = [
|
|
164
|
-
{ id: "issued", re: /\d{4}-\d{2}-\d{2} · \d{2}:\d{2} [A-Z]{2,5}/g, sub: "<issued>", why: "publish/index.mjs
|
|
165
|
-
{ id: "iso-timestamp", re: /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z/g, sub: "<ts>", why: "publish/index.mjs:
|
|
164
|
+
{ id: "issued", re: /\d{4}-\d{2}-\d{2} · \d{2}:\d{2} [A-Z]{2,5}/g, sub: "<issued>", why: "publish/index.mjs, the generation stamp in the firm locale" },
|
|
165
|
+
{ id: "iso-timestamp", re: /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z/g, sub: "<ts>", why: "publish/index.mjs:666 asOf" },
|
|
166
166
|
];
|
|
167
167
|
|
|
168
168
|
// ── REWRITES — what is CHANGED on the way out, as opposed to what is refused ───────────────────────
|