Repository navigation
Expand file tree
/
Copy pathTaskfile.yml
More file actions
2641 lines (2401 loc) · 109 KB
/
Copy pathTaskfile.yml
File metadata and controls
2641 lines (2401 loc) · 109 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
version: '3'
env:
GOFLAGS: -tags=duckdb_arrow
tasks:
nix:build:
desc: Build the sandboxed native Nix application and deployment CLI
cmds:
- nix build --no-update-lock-file .#leapview --out-link result-app
nix:image:
desc: Build the Nix container archive for Docker, Compose and Kamal
cmds:
- nix build --no-update-lock-file .#leapview-image --out-link result-image
nix:cli:
desc: Build CGO-disabled Linux deployment controller candidates for AMD64 and ARM64
cmds:
- nix build --no-update-lock-file .#leapviewctl-linux-amd64 --out-link result-cli-amd64
# Nix adds the selected output's -arm64 suffix to this prefix.
- nix build --no-update-lock-file .#leapviewctl-linux-arm64 --out-link result-cli
nix:compose:controllers:
desc: Build release-compatible controller candidates for Compose bundle assembly
cmds:
- nix build --no-update-lock-file .#leapviewctl-compose-linux-amd64 --out-link result-compose-cli-amd64
- nix build --no-update-lock-file .#leapviewctl-compose-linux-arm64 --out-link result-compose-cli
nix:qualify:
desc: Qualify the Nix image through the existing production deployment checks
cmds:
- task: nix:build
- task: nix:image
- nix develop --no-update-lock-file -c bash scripts/check_nix_image.sh result-image result-app
nix:check:
desc: Check the locked Nix toolchain and real browser integration
cmds:
- nix flake check --no-update-lock-file
- nix develop --no-update-lock-file -c task nix:smoke
nix:smoke:
desc: Exercise the Go toolchains and pinned Chromium inside nix develop
deps: [node:deps]
cmds:
- node scripts/check_nix_development.mjs
nix:ci:
desc: Run the existing PR contract inside the locked Nix development environment
cmds:
- nix develop --no-update-lock-file -c task ci
dev:
desc: Start the managed LeapView dev server with real local authentication
cmds:
- task: postgres:dev:up
- task: generate
- task: build
- task: bootstrap
- task: map-assets:install
- ./scripts/dev-server.sh start
playground:
desc: Start the standalone component and chart playground (no application services)
cmds:
- task: visualization-ir:generate
- task: layout-contract:generate
- task: lucide-icons:generate
- bun run playground
dev:reset-login:
desc: Explicitly restore the private local development login and restart the managed server
cmds:
- LEAPVIEW_DEV_RESET_LOGIN=1 LEAPVIEW_DEV_RESTART=1 task dev
dev:bypass:
desc: Start the managed dev server with explicit local authentication bypass
cmds:
- task: postgres:dev:up
- task: generate
- task: build
- task: bootstrap
- task: map-assets:install
- LEAPVIEW_DEV_AUTH_BYPASS=true LEAPVIEW_LOCAL_AUTH=false ./scripts/dev-server.sh start
dev:movielens:
desc: Seed and run the MovieLens 32M fixture with explicit auth bypass
cmds:
- task: postgres:dev:up
- task: generate
- task: build
- task: bootstrap:movielens
- LEAPVIEW_DEV_AUTH_BYPASS=true LEAPVIEW_LOCAL_AUTH=false LEAPVIEW_DEV_RESTART=1 LEAPVIEW_DEV_READY_ATTEMPTS=1800 LEAPVIEW_DEV_MCP_MODEL_QUERY=movie_ratings LEAPVIEW_DEV_MCP_METRIC=rating_count ./scripts/dev-server.sh start dashboards/experiments/movielens movielens .data/movielens
dev:cfo:
desc: Seed and run the CFO finance fixture with explicit auth bypass
cmds:
- task: postgres:dev:up
- task: generate
- task: build
- task: bootstrap:cfo
- task: map-assets:install
- LEAPVIEW_DEV_AUTH_BYPASS=true LEAPVIEW_LOCAL_AUTH=false LEAPVIEW_DEV_RESTART=1 LEAPVIEW_DEV_READY_ATTEMPTS=1800 LEAPVIEW_DEV_MCP_MODEL_QUERY=finance LEAPVIEW_DEV_MCP_METRIC=net_sales ./scripts/dev-server.sh start dashboards/experiments/cfo-demo finance_files .data/cfo-demo
dbt:warehouse:build:
desc: Build and verify the pinned dbt-duckdb warehouse-boundary Parquet publication
sources:
- examples/dbt-warehouse-boundary/dbt/**/*.sql
- examples/dbt-warehouse-boundary/dbt/**/*.yml
- examples/dbt-warehouse-boundary/dbt/**/*.csv
- examples/dbt-warehouse-boundary/dbt/requirements.txt
- scripts/dbt-warehouse-boundary.sh
generates:
- examples/dbt-warehouse-boundary/published/dim_customers.parquet
- examples/dbt-warehouse-boundary/published/fct_orders.parquet
cmds:
- ./scripts/dbt-warehouse-boundary.sh build
dbt:warehouse:proof:
desc: Prove independent physical producers and upstream dbt packages close into one Project
cmds:
- ./scripts/dbt-warehouse-boundary.sh proof
dbt:warehouse:qualify:
desc: Run the physical dbt Parquet publication through the ordinary headless LeapView candidate lifecycle
cmds:
- task: postgres:dev:up
- task: generate
- task: build
- task: map-assets:install
- task: dbt:warehouse:build
- ./scripts/dev-server.sh once examples/dbt-warehouse-boundary/leapview warehouse examples/dbt-warehouse-boundary/published
dbt:warehouse:
desc: Build the dbt-duckdb showcase and start LeapView through the managed development flow
cmds:
- task: postgres:dev:up
- task: generate
- task: build
- task: map-assets:install
- task: dbt:warehouse:build
- ./scripts/dev-server.sh start examples/dbt-warehouse-boundary/leapview warehouse examples/dbt-warehouse-boundary/published
bootstrap:
desc: Download/sync Olist CSVs if missing
cmds:
- go run ./internal/app/tools/bootstrapolist --shared-cache --out .data/olist
map-style:generate:
desc: Generate the pinned renderer-owned MapLibre style
deps:
- node:deps
sources:
- scripts/generate_map_style.ts
- package.json
- bun.lock
generates:
- static/map-assets/leapview-streets/style.json
cmds:
- bun scripts/generate_map_style.ts
map-assets:install:
desc: Install the pinned local PMTiles, glyph, and sprite assets used by development
cmds:
- go run ./internal/app/tools/mapassets --shared-cache --out .data/map-assets
map-assets:publish:
desc: Publish the verified content-addressed map package to managed S3 storage and optionally verify its public delivery
requires:
vars: [MAP_ASSET_S3_BUCKET]
cmds:
- >-
go run ./internal/app/tools/mapassets
--out .data/map-assets
--shared-cache
--publish-s3-bucket {{.MAP_ASSET_S3_BUCKET | quote}}
--publish-s3-prefix {{default "map-assets" .MAP_ASSET_S3_PREFIX | quote}}
{{if .MAP_ASSET_S3_REGION}}--publish-s3-region {{.MAP_ASSET_S3_REGION | quote}}{{end}}
{{if .MAP_ASSET_S3_ENDPOINT}}--publish-s3-endpoint {{.MAP_ASSET_S3_ENDPOINT | quote}}{{end}}
{{if .MAP_ASSET_S3_PATH_STYLE}}--publish-s3-path-style{{end}}
{{if .MAP_ASSET_BASE_URL}}--verify-base-url {{.MAP_ASSET_BASE_URL | quote}}{{end}}
map-assets:verify:
desc: Verify the complete map package through its same-origin production delivery path
requires:
vars: [MAP_ASSET_BASE_URL]
cmds:
- >-
go run ./internal/app/tools/mapassets
--out .data/map-assets
--shared-cache
--verify-base-url {{.MAP_ASSET_BASE_URL | quote}}
site:map-assets:smoke:
desc: Verify a running public site serves every basemap file its pages reference (SITE_BASE_URL defaults to production)
cmds:
- go run ./cmd/leapview-site/smoke --base-url {{default "https://leapview.dev" .SITE_BASE_URL | quote}}
bootstrap:movielens:
desc: Download/sync MovieLens 32M CSVs if missing
cmds:
- go run ./internal/app/tools/bootstrapmovielens --shared-cache --out .data/movielens
bootstrap:cfo:
desc: Download/sync the pinned Microsoft Financial Sample workbook if missing
cmds:
- go run ./internal/app/tools/bootstrapfinance --shared-cache --out .data/cfo-demo
dev:stop:
desc: Stop the managed LeapView dev server for this worktree
cmds:
- ./scripts/dev-server.sh stop
dev:status:
desc: Show managed LeapView dev server status
cmds:
- ./scripts/dev-server.sh status
dev:credentials:
desc: Show the private local development login after task dev has initialized it
cmds:
- ./scripts/dev-server.sh credentials
dev:auth-smoke:
desc: Verify real login, group role activation after release, and revocation
cmds:
- ./scripts/dev-server.sh auth-smoke
dev:publish:
desc: Publish the current development candidate with real scoped authority
cmds:
- LEAPVIEW_DEV_SKIP_DATA_SYNC=1 ./scripts/dev-server.sh publish
dev:logs:
desc: Tail managed LeapView dev server logs
cmds:
- ./scripts/dev-server.sh logs
postgres:dev:up:
desc: Provision the loopback-only PostgreSQL 18 development databases and roles
cmds:
- ./scripts/postgres-dev.sh up
postgres:dev:
desc: Provision the local PostgreSQL development databases and roles
cmds:
- task: postgres:dev:up
postgres:dev:down:
desc: Stop the local PostgreSQL development service (retains its volume)
cmds:
- ./scripts/postgres-dev.sh down
postgres:dev:status:
desc: Show the local PostgreSQL development service status
cmds:
- ./scripts/postgres-dev.sh status
postgres:dev:env:
desc: Print the path to the mode-0600 local PostgreSQL runtime environment file
cmds:
- ./scripts/postgres-dev.sh env
postgres:dev:check:
desc: Verify local PostgreSQL database and runtime-role isolation
cmds:
- ./scripts/postgres-dev.sh check
postgres:test:up:
desc: Provision an isolated PostgreSQL 18 test service on a worktree-scoped port
env:
LEAPVIEW_POSTGRES_PROJECT_SUFFIX: -test
LEAPVIEW_POSTGRES_TEST_MODE: "1"
LEAPVIEW_POSTGRES_DEV_ENV_FILE: "{{.ROOT_DIR}}/.tmp/postgres-test.env"
cmds:
- ./scripts/postgres-dev.sh up
postgres:test:
desc: Provision the isolated PostgreSQL test databases and roles
cmds:
- task: postgres:test:up
postgres:test:down:
desc: Stop the isolated PostgreSQL test service (retains its volume)
env:
LEAPVIEW_POSTGRES_PROJECT_SUFFIX: -test
LEAPVIEW_POSTGRES_TEST_MODE: "1"
LEAPVIEW_POSTGRES_DEV_ENV_FILE: "{{.ROOT_DIR}}/.tmp/postgres-test.env"
cmds:
- ./scripts/postgres-dev.sh down
postgres:test:check:
desc: Verify isolated PostgreSQL test database and runtime-role isolation
env:
LEAPVIEW_POSTGRES_PROJECT_SUFFIX: -test
LEAPVIEW_POSTGRES_TEST_MODE: "1"
LEAPVIEW_POSTGRES_DEV_ENV_FILE: "{{.ROOT_DIR}}/.tmp/postgres-test.env"
cmds:
- ./scripts/postgres-dev.sh check
test:qualification:native-postgres:
desc: Run native PostgreSQL topology, bundled retry, and cold restore regressions
env:
LEAPVIEW_TEST_CONTAINERS: "1"
LEAPVIEW_TEST_BUNDLED_POSTGRES_DOCKER: "1"
cmds:
- task: generate
- go test ./internal/app/cli/composectl -run '^TestQualificationNativePostgresTopologyContainerBackedContract$' -count=1 -v
- go test ./internal/app/cli/composectl -run '^TestBundledPostgresPrepareSeedsAppEnvBeforeCompose$' -count=1 -v
- go test ./internal/app/cli/composectl -run '^TestBundledPostgresDockerResumesProvisioningAndPreservesVolume$' -count=1 -v
- go test ./internal/app/cli/composectl -run '^TestBundledPostgresDockerStopsGracefully$' -count=1 -v
- go test ./internal/app/cli/composectl -run '^TestBundledPostgresColdSnapshotRestoreQualification$' -count=1 -v
test:qualification:managed-replacement:
desc: Qualify the restored application component in the managed-recovery Nix shell
env:
LEAPVIEW_POSTGRES_CONFORMANCE_REQUIRED: "true"
preconditions:
- test -x "$LEAPVIEW_TEST_MANAGED_RESTIC"
- test -x "$LEAPVIEW_TEST_MANAGED_POSTGRES_BIN/pg_ctl"
- test -x "$LEAPVIEW_TEST_MANAGED_PGBACKREST"
- test -x "$LEAPVIEW_TEST_MANAGED_BWRAP"
cmds:
- task: ci:prepare
- go test ./internal/app -run '^TestManagedRecoveryReplacementApplication$' -count=1 -timeout=10m -v
- python3 -B -m unittest discover -s deploy/managed/nixos/tests -p postgres_restore_test.py
test:qualification:demo-host-recovery:
desc: Run isolated host recovery and migration-boundary qualification with synthetic disposable fixtures
cmds:
- task generate
- go run ./internal/app/tools/securitypolicy -root .
- go test -race ./internal/app/cli/hostinstall -count=1
- PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s scripts/tests -p 'test_demo*.py'
- |
set -eu
migration_tests="$(go test -list '^Test(DemoUpgrade|HostUpgrade|UpgradeBoundary)' ./internal/platform/postgres/migrations)"
for test_name in \
TestDemoUpgradePostgreSQL18 \
TestDemoUpgradePartialMigrationPostgreSQL18RequiresRecovery \
TestHostUpgradeFutureRevisionUsesSameExecutor \
TestUpgradeBoundaryRejectsUnknownTransitionsBeforeMigration \
TestUpgradeBoundaryRequiresCompleteHistoricalPrefix \
TestUpgradeBoundaryRejectsPartialAndPrematureCandidate \
TestUpgradeBoundaryAllowsCompleteFutureAndPolicyOnlyTransitions; do
if ! printf '%s\n' "$migration_tests" | grep -Fx "$test_name" >/dev/null; then
printf 'required migration qualification test missing: %s\n' "$test_name" >&2
exit 1
fi
done
LEAPVIEW_POSTGRES_CONFORMANCE_REQUIRED=true \
go test ./internal/platform/postgres/migrations \
-run '^Test(DemoUpgrade|HostUpgrade|UpgradeBoundary)' -count=1 -timeout=5m -v
- |
set -eu
recovery_tests="$(go test -list '^Test(ColdPostgreSQLPairRecovery|InternalNetworkRecoveryRelay|VolumeTLSMountQualification|AgentProviderPrivateConfigContainer)$' ./internal/app/cli/hostinstall)"
for test_name in TestColdPostgreSQLPairRecovery TestInternalNetworkRecoveryRelay TestVolumeTLSMountQualification TestAgentProviderPrivateConfigContainer; do
if ! printf '%s\n' "$recovery_tests" | grep -Fx "$test_name" >/dev/null; then
printf 'required physical recovery test missing: %s\n' "$test_name" >&2
exit 1
fi
done
CGO_ENABLED=0 LEAPVIEW_HOST_UPGRADE_QUALIFICATION=1 \
go test ./internal/app/cli/hostinstall \
-run '^Test(ColdPostgreSQLPairRecovery|InternalNetworkRecoveryRelay|VolumeTLSMountQualification|AgentProviderPrivateConfigContainer)$' \
-count=1 -timeout=10m -v
test:qualification:historical-transition:
desc: Run the required schema-32 to typed-access transition against a pinned predecessor and exact candidate image
cmds:
- |
set -eu
test "${LEAPVIEW_HISTORICAL_TRANSITION_REQUIRED:-}" = 1 || {
printf 'LEAPVIEW_HISTORICAL_TRANSITION_REQUIRED=1 is required for the historical transition lane\n' >&2
exit 64
}
test -n "${LEAPVIEW_HISTORICAL_TRANSITION_CANDIDATE_IMAGE:-}" || {
printf 'candidate image identity is required\n' >&2
exit 64
}
test -n "${LEAPVIEW_HISTORICAL_TRANSITION_CANDIDATE_REVISION:-}" || {
printf 'candidate source revision is required\n' >&2
exit 64
}
test -n "${LEAPVIEW_HISTORICAL_TRANSITION_EVIDENCE:-}" || {
printf 'private transition receipt path is required\n' >&2
exit 64
}
if [ "${LEAPVIEW_HISTORICAL_TRANSITION_FINAL_ARTIFACT:-0}" = 1 ]; then
test -n "${LEAPVIEW_HISTORICAL_TRANSITION_ADMISSION:-}" || {
printf 'final-artifact qualification requires OCI admission evidence\n' >&2
exit 64
}
fi
task generate
go run ./internal/app/tools/securitypolicy -root .
go test ./internal/app/cli/composectl \
-run '^TestQualificationHistoricalTransitionInputsFailClosed$' \
-count=1
transition_tests="$(go test ./internal/app/cli/composectl -list '^TestQualificationHistoricalTransitionEndToEnd$' -count=1)"
printf '%s\n' "${transition_tests}" | grep -Fx 'TestQualificationHistoricalTransitionEndToEnd' >/dev/null || {
printf 'required historical transition end-to-end test is missing\n' >&2
exit 1
}
go test ./internal/app/cli/composectl \
-run '^TestQualificationHistoricalTransitionEndToEnd$' \
-count=1 -timeout=110m -v
test:qualification:historical-transition:local:
desc: Build a local candidate image and run the mandatory historical transition fixture
cmds:
- |
set -euo pipefail
if [ -n "$(git status --porcelain=v1 --untracked-files=all)" ]; then
printf 'local historical-transition image requires a clean Git source tree; commit or export an immutable snapshot first\n' >&2
exit 64
fi
task generate
revision="$(git rev-parse HEAD)"
[[ "${revision}" =~ ^[0-9a-f]{40}$ ]]
if [ -n "$(git status --porcelain=v1 --untracked-files=all)" ]; then
printf 'generation changed the source tree; refusing to label a mutable tree as the exact historical-transition candidate\n' >&2
exit 64
fi
build_time="$(git show -s --format=%cI "${revision}")"
tag="leapview:historical-transition-${revision:0:12}"
docker buildx build --load --platform linux/amd64 --file Dockerfile \
--tag "${tag}" \
--build-arg BUILD_VERSION=historical-transition \
--build-arg BUILD_REVISION="${revision}" \
--build-arg BUILD_TIME="${build_time}" \
--build-arg BUILD_DIRTY=false \
--build-arg BUILD_RELEASE=false .
image="$(docker image inspect "${tag}" --format '{{"{{"}}.Id{{"}}"}}')"
[[ "${image}" =~ ^sha256:[0-9a-f]{64}$ ]]
evidence_dir="$(mktemp -d "${TMPDIR:-/tmp}/leapview-historical-transition.XXXXXX")"
LEAPVIEW_HISTORICAL_TRANSITION_REQUIRED=1 \
LEAPVIEW_HISTORICAL_TRANSITION_CANDIDATE_IMAGE="${image}" \
LEAPVIEW_HISTORICAL_TRANSITION_CANDIDATE_REVISION="${revision}" \
LEAPVIEW_HISTORICAL_TRANSITION_EVIDENCE="${evidence_dir}/transition.json" \
LEAPVIEW_HISTORICAL_TRANSITION_FINAL_ARTIFACT=0 \
task test:qualification:historical-transition
test:qualification:authoring-package:
desc: Verify the released authoring archive qualification contract without Docker
cmds:
- go test ./deploy/local -run '^TestReleasedAuthoringQualification' -count=1
qa:authoring-package:
desc: Qualify an exact released authoring archive and retain bounded evidence
requires:
vars: [LEAPVIEW_AUTHORING_ARCHIVE]
cmds:
- >-
./deploy/local/qualification/qualify.sh
--archive "{{.LEAPVIEW_AUTHORING_ARCHIVE}}"
--evidence-dir "{{.LEAPVIEW_AUTHORING_EVIDENCE_DIR | default .ROOT_DIR}}/.tmp/qualification/authoring-package"
{{if .LEAPVIEW_AUTHORING_REQUIRED}}--required{{end}}
{{if .LEAPVIEW_AUTHORING_RUN_LIFECYCLE}}--run-lifecycle --docker-host "{{.LEAPVIEW_AUTHORING_DOCKER_HOST}}"{{end}}
test:qualification:postgres-ha:
desc: Run the bounded disposable same-host PostgreSQL 18 Patroni HA qualification
cmds:
- timeout --signal=TERM --kill-after=30s 10m ./deploy/postgres/ha/run.sh
node:deps:
desc: Install JavaScript dependencies with Bun
# Nested dependency paths must share one writer to this checkout's tree.
# Verify the frozen graph on every Task invocation; a binary's presence
# cannot establish that the complete installed dependency tree is sound.
run: once
cmds:
- bun install --frozen-lockfile
build:
desc: Build browser assets
deps:
- node:deps
- layout-contract:generate
cmds:
- bun run build
desktop:deps:
desc: Install the pinned LeapView Desktop dependencies
dir: desktop
cmds:
- bun install --frozen-lockfile
desktop:test:
desc: Run LeapView Desktop discovery, profile, UI, and shared security contracts
deps:
- desktop:deps
dir: desktop
cmds:
- bun run typecheck:tests
- bun run test
- bun run build
desktop:start:
desc: Start the unpackaged LeapView Desktop client
deps:
- desktop:deps
dir: desktop
cmds:
- bun run start
desktop:package:
desc: Build an unpackaged LeapView Desktop application for the current platform
deps:
- desktop:deps
dir: desktop
env:
LEAPVIEW_DESKTOP_DISTRIBUTION: preview
cmds:
- bun run package
desktop:make:
desc: Build and verify the native LeapView Desktop installer for the current platform
deps:
- desktop:deps
dir: desktop
env:
LEAPVIEW_DESKTOP_DISTRIBUTION: preview
cmds:
- bun run make
- bun run evidence
site:build:
desc: Build the LeapView public site assets from generated contracts
cmds:
- task: ui-signals:generate
- task: visualization-ir:generate
- task: layout-contract:generate
- task: node:deps
- bun run build:site
ci:prepare:frontend:
desc: Generate only the contracts and assets required by frontend CI
cmds:
- task: api:generate
- task: ui-signals:generate
- task: visualization-ir:generate
- task: build
ci:test:docs-site:
desc: Prepare and validate complete documentation and site coverage independently
cmds:
- task: ci:prepare
- task: ci:test:docs
- task: ci:test:frontend:site
ci:test:docs:
desc: Validate documentation generation, snapshots, observation and site Go contracts on prepared assets
cmds:
- |
bash scripts/check_generated_snapshots.sh \
.env.example \
docs/api/openapi.yaml \
docs/llms.txt \
docs/reference/agent-tools \
docs/articles/reference/data-resource-connectors.md \
internal/agent/contracts \
internal/project/contracts \
api/gen/data-resources-ir.json \
web/generated/data-resources \
schemas/config \
schemas/desktop \
schemas/json \
-- task --force docs:generate
- task: site:observation:test
- task: docs:check
- go test ./cmd/leapview-site ./docs ./site ./internal/app/site/...
audit:inventory:
desc: Inventory tracked files, feature declarations and frontend CI registration without running product tests
deps: [node:deps]
cmds:
- node scripts/audit_inventory.mjs {{.CLI_ARGS}}
audit:controller-catalogs:
desc: Inventory explicit controller commands for both shipped builds without executing them
deps:
- node:deps
- db:generate
- config:generate
- api:generate
- ui-signals:generate
cmds:
# Bind the source before compilation as well as during construction.
- node scripts/controller_catalogs.mjs {{.CLI_ARGS}}
audit:go-receipt:
desc: Capture bounded fresh named Go executions and bind their source, inputs, command and raw logs
deps: [node:deps]
cmds:
# Prepare generated sources before capturing; keep logs in ignored/external storage.
- node scripts/go_receipts.mjs {{.CLI_ARGS}}
ci:test:frontend:core:
desc: Run global browser contracts, typechecks, and core application tests
cmds:
- python3 -B -m unittest discover -s scripts -p reference_library_test.py
- PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s scripts/tests -p test_dashboard_design_trials.py
- bun test scripts/generated_snapshot_check.test.ts
- node --test scripts/ci_watchdog.test.mjs
- node --test scripts/browser_test_diagnostics.test.mjs
- node --test desktop/scripts/lifecycle-probe-policy.test.mjs desktop/scripts/lifecycle-probe-cdp.test.mjs
- node --test scripts/run_performance_comparison.test.mjs
- bun test scripts/performance_comparison_workflow.test.ts
- node --test deploy/compose/qualification/performance-resources.test.mjs
- node --test scripts/performance_baseline_review.test.mjs scripts/qualify_performance_reference.test.mjs
- node --test scripts/audit_inventory.test.mjs scripts/controller_catalogs.test.mjs scripts/go_receipt_index.test.mjs scripts/go_receipts.test.mjs scripts/performance_ci_events.test.mjs
- bun test scripts/ci_optimization_contract.test.ts
- bun test scripts/frontend_ci_contract.test.ts
- bun test scripts/release_cli_lifecycle_gate.test.ts
- bun test scripts/frontend_test_registration.test.ts && bun scripts/frontend_test_registration.mjs
- bun test scripts/nix_ci_contract.test.ts scripts/ci_dependency_acquisition_contract.test.ts
- bun test scripts/ci_docker_contract.test.ts
- bun test scripts/released_predecessor_gate.test.ts
- python3 -m unittest discover -s scripts/tests -p test_prepare_sqlc_modules.py
- python3 -m unittest discover -s scripts/tests -p test_prepare_ci_fixture_images.py
- bun test scripts/nix_desktop_candidate_contract.test.ts
- bun test scripts/nix_compose_candidate_contract.test.ts
- bun test scripts/managed_admission_contract.test.ts
- bun test scripts/managed_application_contract.test.ts
- python3 -m unittest discover -s scripts/tests -p test_managed_admission_handoff.py
- python3 -m unittest discover -s scripts/tests -p test_managed_application_inputs.py
- python3 -m unittest discover -s scripts/tests -p test_managed_recovery_inventory.py
- python3 -m unittest discover -s scripts/tests -p test_ci_docker_credentials.py
- python3 -m unittest discover -s deploy/managed/nixos/tests -p 'managed_application*_test.py'
- python3 -B -m unittest discover -s deploy/managed/nixos/tests -p 'postgres_*_test.py'
- python3 -m unittest discover -s scripts/tests -p test_qualification_release.py
- python3 -m unittest discover -s scripts/tests -p 'test_performance_*.py'
- node --test scripts/performance_build_inputs.test.mjs
- python3 -m unittest discover -s scripts/tests -p test_ci_sqlc_layer_screen.py
- python3 -m unittest discover -s scripts/tests -p 'test_ci_sqlc_hosted_*.py'
- bun test scripts/sqlc_hosted_contract.test.ts
- python3 -m unittest discover -s scripts/tests -p test_package_compose_bundle.py
- python3 -m unittest discover -s scripts/tests -p test_release_image_promotion.py
- python3 -m unittest discover -s scripts/tests -p test_nix_ci_environment.py
- python3 -m unittest discover -s scripts/tests -p test_nix_cli_compatibility.py
- python3 -m unittest discover -s scripts/tests -p test_nix_candidate_manifest.py
- python3 -m unittest discover -s scripts/tests -p test_nix_desktop_qualification.py
- python3 -m unittest discover -s scripts/tests -p test_nix_desktop_attestation.py
- python3 -m unittest discover -s scripts/tests -p 'test_nix_desktop_lifecycle*.py'
- python3 -m unittest discover -s scripts/tests -p test_nix_desktop_preview_inputs.py
- python3 -m unittest discover -s scripts/tests -p test_nix_native_inventory.py
- python3 -m unittest discover -s scripts/tests -p test_nix_oci_content.py
- python3 -m unittest discover -s scripts/tests -p test_nix_registry_content.py
- python3 -m unittest discover -s scripts/tests -p test_nix_signed_evidence.py
- python3 -m unittest discover -s scripts/tests -p test_nix_candidate_publication.py
- python3 -m unittest discover -s scripts/tests -p test_nix_candidate_artifacts.py
- python3 -m unittest discover -s scripts/tests -p test_nix_candidate_authorization.py
- python3 -m unittest discover -s scripts/tests -p test_nix_release_inputs.py
- python3 -m unittest discover -s scripts/tests -p test_nix_release_verification.py
- python3 -m unittest discover -s scripts/tests -p test_nix_admission_handoff.py
- python3 -m unittest discover -s scripts/tests -p test_nix_cli_publication.py
- python3 -m unittest discover -s scripts/tests -p test_nix_archive_go_evidence.py
- python3 -m unittest discover -s scripts/tests -p test_nix_cli_go_evidence.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_qualification.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_controller_evidence.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_helper_images.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_helper_image_probe.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_host_guest.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_docker_readiness.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_bundled_postgres.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_installer_diagnostics.py
- python3 -m unittest discover -s scripts/tests -p test_nix_compose_guest_launcher.py
- python3 -m unittest discover -s scripts/tests -p test_nix_runtime_security.py
- python3 -m unittest discover -s scripts/tests -p test_nix_site_image.py
- bun test scripts/node_deps_contract.test.ts
- bun test scripts/contract_projection_fixture.test.ts
- bun test scripts/agent_e2e_config.test.ts
- bun test scripts/ensure_playwright.test.ts
- bun run test:primer-primitives
- bun run test:primer-alignment
- bun run test:theme
- bun run test:datastar-lit
- bun test web/components/shared/clipboard.test.ts web/components/shared/code-theme-contrast.test.ts web/components/shared/datastar-runtime.test.ts web/components/shared/datastar-runtime-error.test.ts web/components/shared/lazy-import.test.ts web/components/shared/markdown-render.test.ts
- bun run test:ui-command-boundaries
- bun run test:command-failure
- bun test web/components/shared/command-failure-guard.test.ts web/components/shared/page-stream-recovery.test.ts
- node scripts/ensure_playwright.mjs && bun test web/components/shared/command.dom.test.ts
- node scripts/ensure_playwright.mjs && bun test web/components/shared/page-stream-recovery.dom.test.ts
- bun test web/components/shared/field-types.test.ts web/components/chat/agent-availability.test.ts web/components/admin/settings-surfaces.helpers.test.ts web/components/admin/settings-audit-view-model.test.ts web/components/dashboard/visualization/adapters/maplibre/lifecycle.test.ts
- bun test web/components/shared/drawer.focus.test.ts
- bun run test:app-shell
- bun run test:settings
- bun run typecheck:app
- bun run typecheck:playground
- bun run typecheck:contracts
- bun run typecheck:tests
- bun run test:production-assets
- bun run test:movielens-performance-harness
- bun test scripts/performance_browser_profile.test.ts
- bun run test:viewport-qualification-harness
- bun run test:public-site-smoke
ci:test:frontend:reports:
desc: Run dashboard, visualization, and report browser tests
cmds:
- task: ci:test:frontend:reports:viewer
- task: ci:test:frontend:reports:playground
- task: ci:test:frontend:reports:builder
ci:test:frontend:reports:viewer:
desc: Run dashboard viewer and table browser tests
cmds:
- bun run test:visualization-ir
- bun run test:table-selection
- bun run test:interaction-selection
- bun run test:record-table
- bun run test:visual-modal
- bun run test:catalog-page
- bun run test:dashboard-page
- bun run test:date-picker
- bun run test:windowed-table
- bun run test:filter-menu
ci:test:frontend:reports:playground:
desc: Run standalone visual preview and report browser tests
cmds:
- bun run test:playground
ci:test:frontend:reports:builder:
desc: Run dashboard builder browser tests
cmds:
- bun run test:dashboard-builder
ci:test:frontend:chat:
desc: Run chat and shared content browser tests
cmds:
- bun run test:chat-composer
- bun run test:chat-page
- bun run test:chat-thread
- bun run test:code-block
- bun run test:markdown-view
ci:test:frontend:data:
desc: Run administration and data browser tests
cmds:
- task: ci:test:frontend:data:explorer
- task: ci:test:frontend:data:pages
ci:test:frontend:data:explorer:
desc: Run governed Explorer browser tests
cmds:
- bun run test:data-explorer
ci:test:frontend:data:pages:
desc: Run administration and data page browser tests
cmds:
- bun run test:project-page
- bun run test:admin-page
- bun run test:code-editor
- bun run test:login-page
- bun run test:asset-lineage
- bun run test:semantic-model-graph
- bun run test:datastar-inspector
- bun run test:topology-background
ci:test:frontend:site:
desc: Run public documentation and site browser tests
cmds:
- bun run test:docs-diagrams
# ci:pr builds the embedded site tree before starting concurrent lanes.
# Rebuilding here would delete site/static while Go packages compile it.
- bun run test:site:prepared
# Each Playwright site file owns a browser and server, so it runs in its own process.
- bun test site/site-interactions.dom.test.ts
site:binary:
desc: Build the independently deployable public site from generated documentation
cmds:
- task: generate
- task: site:build
- go build -o bin/leapview-site ./cmd/leapview-site
site:image:
desc: Build the production LeapView public site OCI image
cmds:
- docker build --file Dockerfile.site --tag leapview-site:local .
site:dev:
desc: Start the public site from generated documentation on http://localhost:8081
cmds:
- task: generate
- task: site:build
- go run ./cmd/leapview-site
site:product-screenshot:
desc: Refresh light and dark homepage screenshots from the deployed Visual Showcase
deps:
- postgres:dev:up
cmds:
- task: generate
- task: build
- bun scripts/capture_site_product.ts
quality:budget:check:
desc: Enforce ratcheting maintainability and engineering-quality budgets
cmds:
- go run ./internal/app/tools/qualitybudget
quality:budget:update:
desc: Tighten quality-budget baselines after maintainability improvements
cmds:
- go run ./internal/app/tools/qualitybudget --write
quality:critical:coverage:
desc: Enforce coverage floors for critical packages
cmds:
- go run ./internal/app/tools/criticalquality --mode coverage
quality:critical:race:
desc: Race-qualify every critical package in the full merge lane
cmds:
- go run ./internal/app/tools/criticalquality --mode race
quality:exceptions:check:
desc: Validate owned and time-bounded engineering exceptions
cmds:
- go run ./internal/app/tools/exceptionquality
deadexports:check:
desc: Reject exported Go declarations without repository references
deps:
- generate
cmds:
- go run ./internal/app/tools/deadexports --root {{.ROOT_DIR | quote}} --allowlist {{.ROOT_DIR}}/.quality/dead-exports.json
quality:trends:report:
desc: Report structural complexity and ownership-change concentration
cmds:
- go run ./internal/app/tools/qualitytrends
bench:arrow:quick:
desc: Run the bounded Arrow evidence benchmark matrix for local iteration
cmds:
- go test ./pkg/arrowresult -run '^$' -bench '^BenchmarkArrow(CaptureCopy|IPCExistingDashboardString|IPCNativeReference)$/(narrow|wide|dictionary)/(rows_50|rows_1000)$' -benchmem -benchtime=100ms -count=3 -cpu=1
- go test ./internal/analytics/arrowdecode -run '^$' -bench '^BenchmarkArrowDecodeRows$/(narrow|wide|dictionary)/(rows_50|rows_1000)$' -benchmem -benchtime=100ms -count=3 -cpu=1
- go test ./internal/analytics/resultcache -run '^$' -bench '^BenchmarkWarmArrowCacheLookupLease$/(narrow|wide)/(rows_50|rows_1000)$' -benchmem -benchtime=100ms -count=3 -cpu=1
- go test ./internal/dashboard/arrowbench -run '^$' -bench '^BenchmarkDashboard(RowShaping|StringProjection)$/(narrow|wide)/(rows_50|rows_1000)$' -benchmem -benchtime=100ms -count=3 -cpu=1
- go test ./internal/dashboard/runtime -run '^$' -bench '^BenchmarkDashboardWarmShapingStages$/(kpi|wide_chart|table_window_narrow|table_window_wide)/(rows_1|rows_50|rows_1000)$' -benchmem -benchtime=100ms -count=3 -cpu=1
- go test ./internal/dashboard/http -run '^TestDashboard(Baseline|Warm)' -bench '^BenchmarkDashboardBaseline(EndToEnd|Stages)$/(detail_narrow|detail_wide|matrix|pivot)/(rows_50|rows_1000)$' -benchmem -benchtime=100ms -count=3 -cpu=1
- go test ./internal/dashboard/http -run '^TestDashboardWarm' -bench '^BenchmarkDashboardWarmCacheConcurrency$/(kpi|chart_bundle|wide_chart|table_window_arrow)/(users_1|users_20)$' -benchmem -benchtime=1x -count=3 -cpu=1
- go test ./internal/dashboard/http -run '^$' -bench '^BenchmarkDashboardWarmSerializationStages$' -benchmem -benchtime=100ms -count=3 -cpu=1
bench:arrow:full:
desc: Run all Arrow evidence workloads with comparison-grade sample counts
cmds:
- go test ./pkg/arrowresult -run '^$' -bench '^BenchmarkArrow(CaptureCopy|IPCExistingDashboardString|IPCNativeReference)$' -benchmem -benchtime=500ms -count=10 -cpu=1
- go test ./internal/analytics/arrowdecode -run '^$' -bench '^BenchmarkArrowDecodeRows$' -benchmem -benchtime=500ms -count=10 -cpu=1
- go test ./internal/analytics/resultcache -run '^$' -bench '^BenchmarkWarmArrowCacheLookupLease$' -benchmem -benchtime=500ms -count=10 -cpu=1
- go test ./internal/dashboard/arrowbench -run '^$' -bench '^BenchmarkDashboard(RowShaping|StringProjection)$' -benchmem -benchtime=500ms -count=10 -cpu=1
- go test ./internal/dashboard/runtime -run '^$' -bench '^BenchmarkDashboardWarmShapingStages$' -benchmem -benchtime=500ms -count=10 -cpu=1
- go test ./internal/dashboard/http -run '^TestDashboard(Baseline|Warm)' -bench '^BenchmarkDashboardBaseline' -benchmem -benchtime=500ms -count=10 -cpu=1
- go test ./internal/dashboard/http -run '^TestDashboardWarm' -bench '^BenchmarkDashboardWarmCacheConcurrency$' -benchmem -benchtime=250ms -count=10 -cpu=1
- go test ./internal/dashboard/http -run '^$' -bench '^BenchmarkDashboardWarmSerializationStages$' -benchmem -benchtime=500ms -count=10 -cpu=1
test:arrow:direct-streaming-experiment:
desc: Run the isolated FAI-543 governed native-v1 prototype contracts
cmds:
- go test -tags=fai543experiment ./internal/dashboard/http -run '^(TestDashboardNativeArrowContract|TestDashboardDirectArrowExperiment)' -count=1
- go test -tags=fai543experiment ./internal/dashboard/queryauthz -run '^(TestDashboardNativeArrowContract|TestDirectArrowExperiment)' -count=1
- go test ./internal/dashboard/semanticapi -run '^(TestSemanticArrowSink|TestWriteSemanticArrowResponse)' -count=1
bench:arrow:direct-streaming-experiment:
desc: Compare current api_direct with the isolated FAI-543 governed native-v1 prototype
cmds:
- go test -tags=fai543experiment ./internal/dashboard/http -run '^$' -bench '^BenchmarkDashboardDirectArrowExperiment$' -benchmem -benchtime=500ms -count=10 -cpu=1
test:arrow:direct-streaming-qualification:
desc: Run the isolated FAI-544 real-DuckDB and HTTP qualification contracts
cmds:
- go test -tags='fai543experiment duckdb_arrow' ./internal/dashboard/http -run '^TestDashboardDirectArrowQualification' -count=1
bench:arrow:direct-streaming-qualification:quick:
desc: Run a bounded local sample of the FAI-544 qualification workloads
cmds:
- go test -tags='fai543experiment duckdb_arrow' ./internal/dashboard/http -run '^$' -bench '^BenchmarkDashboardDirectArrowQualification$' -benchmem -benchtime=100ms -count=1 -cpu=1
- go test -tags='fai543experiment duckdb_arrow' ./internal/dashboard/http -run '^$' -bench '^BenchmarkDashboardDirectArrowQualificationConcurrency$' -benchmem -benchtime=100ms -count=1 -cpu=1
bench:arrow:direct-streaming-qualification:
desc: Run comparison-grade FAI-544 real-DuckDB and HTTP qualification workloads
cmds:
- go test -tags='fai543experiment duckdb_arrow' ./internal/dashboard/http -run '^$' -bench '^BenchmarkDashboardDirectArrowQualification$' -benchmem -benchtime=1s -count=10 -cpu=1,4
- go test -tags='fai543experiment duckdb_arrow' ./internal/dashboard/http -run '^$' -bench '^BenchmarkDashboardDirectArrowQualificationConcurrency$' -benchmem -benchtime=1s -count=10 -cpu=1,4
bench:cache:cutover:quick:
desc: Smoke-test cache cutover latency and retention benchmarks
cmds:
- go test -p 1 -tags=duckdb_arrow ./internal/analytics/resultcache ./internal/analytics/materialize -run '^$' -bench '^BenchmarkCacheCutover' -benchmem -benchtime=100ms -count=3 -cpu=1
bench:cache:cutover:full:
desc: Capture comparison-grade cache cutover benchmark evidence
cmds:
- go test -p 1 -tags=duckdb_arrow ./internal/analytics/resultcache ./internal/analytics/materialize -run '^$' -bench '^BenchmarkCacheCutover' -benchmem -benchtime=500ms -count=10 -cpu=1
bench:cache:admission:quick:
desc: Smoke-test the FAI-535 LRU and frequency-aware admission comparison
cmds:
- go test -p 1 ./internal/analytics/resultcache -run '^TestAdmissionWorkload' -bench '^BenchmarkCacheAdmissionWorkload$' -benchmem -benchtime=100ms -count=3 -cpu=1
bench:cache:admission:full:
desc: Capture comparison-grade FAI-535 cache admission evidence
cmds:
- go test -p 1 ./internal/analytics/resultcache -run '^TestAdmissionWorkload' -bench '^BenchmarkCacheAdmissionWorkload/lru$' -benchmem -benchtime=500ms -count=10 -cpu=1
- go test -p 1 ./internal/analytics/resultcache -run '^TestAdmissionWorkload' -bench '^BenchmarkCacheAdmissionWorkload/frequency_aware$' -benchmem -benchtime=500ms -count=10 -cpu=1
bench:datastar-bridge:
desc: Benchmark legacy, Ignition, and DatastarLit bridges in Chromium
deps:
- node:deps
cmds:
- bun run bench:datastar-bridge
qa:ui-framework:
desc: Run browser QA for the stream-first DatastarLit UI framework
deps:
- node:deps
cmds:
- bun test scripts/qa_ui_framework_config.test.ts
- bun scripts/qa_ui_framework.ts
qa:ui-framework:visual:update:
desc: Review and refresh the UI framework visual-regression baselines
deps:
- node:deps
cmds:
- bun test scripts/qa_ui_framework_config.test.ts
- LEAPVIEW_UI_QA_SCOPE=visual LEAPVIEW_UPDATE_VISUAL_BASELINES=1 bun scripts/qa_ui_framework.ts
qa:movielens-performance:
desc: Run the local/nightly dashboard performance runner with the MovieLens scenario (not part of CI)
deps:
- node:deps
cmds:
- bun run qa:movielens-performance
qa:dashboard-performance:
desc: Run a configured local/nightly performance scenario against a running dev server (not part of CI)
deps:
- node:deps
cmds:
- bun run qa:dashboard-performance
test:viewport-qualification-harness:
desc: Test fail-closed viewport qualification evidence contracts
deps:
- node:deps
cmds:
- bun run test:viewport-qualification-harness
qa:viewport-qualification:
desc: Capture paired local eager/deferred dashboard viewport evidence (not part of CI)
deps:
- node:deps
cmds:
- bun run qa:viewport-qualification
generate:
desc: Generate all checked-out derived code needed for local development
cmds:
- task: go:deps
- task: adr0016-conformance:generate
- task: duckdbsql:generate
- task: db:generate
- task: config:generate
- task: permission-contracts:generate
- task: api:generate
- task: agent-contracts:generate
- task: ui-signals:generate
- task: schema:generate
- task: data-resource-contracts:generate
- task: desktop-discovery:generate
- task: visualization-ir:generate
- task: exploration-contracts:generate
- task: dashboard-contracts:generate
- task: pipeline-contracts:generate
- task: layout-contract:generate
- task: map-style:generate
- task: lucide-icons:generate
- task: cli-docs:generate
- task: agent-tool-docs:generate
- task: permission-docs:generate
- task: node:deps
- task: docs:render
adr0016-conformance:generate:
desc: Generate the ADR-0016 standards conformance matrix from its reviewed profile registry
sources:
- adr/specifications/standards-conformance-profiles.json
- internal/app/tools/adr0016conformance/**/*.go
- internal/project/contractodcs/schema/odcs-json-schema-v3.1.0.json
- internal/refresh/openlineage/schema/OpenLineage.json
generates:
- adr/specifications/standards-conformance-matrix.md
cmds: